@aexol/opencode-wizard 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/graphql-operations.d.ts +1 -1
- package/dist/graphql-operations.js +9 -7
- package/dist/graphql-operations.js.map +1 -1
- package/dist/plugin-tools.d.ts +1 -0
- package/dist/plugin-tools.js +5 -4
- package/dist/plugin-tools.js.map +1 -1
- package/dist/server/runtime.js +8 -8
- package/dist/server/runtime.js.map +1 -1
- package/dist/server/types.d.ts +9 -7
- package/dist/server/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,4 +8,4 @@ export declare const SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION = "\n mutation Set
|
|
|
8
8
|
export declare const CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION = "\n mutation CreateOrUpdateSkillFromMarkdown($markdownContent: String!) {\n admin {\n createOrUpdateSkillFromMarkdown(markdownContent: $markdownContent) {\n success\n skillSlug\n skillVersionId\n artifactSlug\n artifactVersionId\n errors\n }\n }\n }\n";
|
|
9
9
|
export declare const EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY = "\n query EditorSkillWorkspaceAssignmentLookup($skillSlug: String!, $workspaceSlug: String!) {\n admin {\n skill(slug: $skillSlug) {\n id\n slug\n }\n workspace(slug: $workspaceSlug) {\n id\n slug\n }\n }\n }\n";
|
|
10
10
|
export declare const BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION = "\n mutation BulkCreateSkillAssignments($input: BulkCreateSkillAssignmentsInput!) {\n admin {\n bulkCreateSkillAssignments(input: $input) {\n scopePathAssignments {\n id\n }\n skippedScopePathAssignments {\n id\n }\n conflicts {\n target\n inputIndex\n reason\n message\n }\n }\n }\n }\n";
|
|
11
|
-
export declare const IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION = "\n mutation ImportWizardArtifactSnapshot($input: ImportWizardArtifactSnapshotInput!) {\n importWizardArtifactSnapshot(input: $input) {\n
|
|
11
|
+
export declare const IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION = "\n mutation ImportWizardArtifactSnapshot($input: ImportWizardArtifactSnapshotInput!) {\n admin {\n importWizardArtifactSnapshot(input: $input) {\n success\n skillSlug\n skillVersionId\n artifactSlug\n artifactVersionId\n errors\n }\n }\n }\n";
|
|
@@ -296,13 +296,15 @@ export const BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION = `
|
|
|
296
296
|
`;
|
|
297
297
|
export const IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION = `
|
|
298
298
|
mutation ImportWizardArtifactSnapshot($input: ImportWizardArtifactSnapshotInput!) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
299
|
+
admin {
|
|
300
|
+
importWizardArtifactSnapshot(input: $input) {
|
|
301
|
+
success
|
|
302
|
+
skillSlug
|
|
303
|
+
skillVersionId
|
|
304
|
+
artifactSlug
|
|
305
|
+
artifactVersionId
|
|
306
|
+
errors
|
|
307
|
+
}
|
|
306
308
|
}
|
|
307
309
|
}
|
|
308
310
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PUBLISHED_SKILL_CORE_FIELDS","PUBLISHED_SKILL_ASSIGNMENT_FIELDS","PUBLISHED_SKILL_INSTALLABLE_FIELDS","PUBLISHED_SKILLS_CATALOG_QUERY","SET_PUBLISHED_SKILL_PREFERENCE_MUTATION","PUBLISHED_SKILL_DETAIL_QUERY","WIZARD_ARTIFACT_CORE_FIELDS","WIZARD_ARTIFACT_ASSIGNMENT_FIELDS","WIZARD_ARTIFACT_INSTALLABLE_FIELDS","WIZARD_ARTIFACTS_CATALOG_QUERY","WIZARD_ARTIFACT_DETAIL_QUERY","CURRENT_USER_ROLE_QUERY","SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION","CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION","EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY","BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION","IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION"],"sources":["../src/graphql-operations.ts"],"sourcesContent":["const PUBLISHED_SKILL_CORE_FIELDS = `\n skill {\n id\n slug\n name\n summary\n whenToUse\n status\n installPolicy\n tags {\n id\n slug\n label\n description\n facet {\n id\n slug\n label\n description\n }\n }\n }\n skillVersion {\n id\n version\n title\n summary\n status\n }\n publishedArtifact {\n id\n frontmatterName\n frontmatterDescription\n checksum\n publishedAt\n fileCount\n }\n`;\n\nconst PUBLISHED_SKILL_ASSIGNMENT_FIELDS = `\n assignmentSource\n assignmentType\n scopePath\n includeChildren\n relevance\n recommendationReason\n ${PUBLISHED_SKILL_CORE_FIELDS}\n`;\n\nconst PUBLISHED_SKILL_INSTALLABLE_FIELDS = `\n relevance\n recommendationReason\n ${PUBLISHED_SKILL_CORE_FIELDS}\n`;\n\nexport const PUBLISHED_SKILLS_CATALOG_QUERY = `\n query PluginPublishedSkills($input: PublishedSkillsDeliveryInput!) {\n pluginPublishedSkills(input: $input) {\n workspace {\n id\n slug\n name\n repositoryUrl\n defaultBranch\n status\n }\n directoryPath\n skills {\n ${PUBLISHED_SKILL_ASSIGNMENT_FIELDS}\n }\n catalogSkills {\n ${PUBLISHED_SKILL_INSTALLABLE_FIELDS}\n }\n userPreferences {\n scopeKey\n userKey\n ignoredSkills {\n ${PUBLISHED_SKILL_ASSIGNMENT_FIELDS}\n }\n }\n }\n }\n`;\n\nexport const SET_PUBLISHED_SKILL_PREFERENCE_MUTATION = `\n mutation SetPublishedSkillPreference($input: SetPublishedSkillPreferenceInput!) {\n setPublishedSkillPreference(input: $input) {\n scopeKey\n userKey\n ignoredSkills {\n ${PUBLISHED_SKILL_ASSIGNMENT_FIELDS}\n }\n }\n }\n`;\n\nexport const PUBLISHED_SKILL_DETAIL_QUERY = `\n query PluginPublishedSkillVersionArtifact($input: PublishedSkillArtifactDetailInput!) {\n pluginPublishedSkillVersionArtifact(input: $input) {\n id\n frontmatterName\n frontmatterDescription\n markdownBody\n renderedContent\n checksum\n publishedAt\n fileCount\n files {\n id\n relativePath\n contentType\n content\n checksum\n size\n sortOrder\n }\n }\n }\n`;\n\nconst WIZARD_ARTIFACT_CORE_FIELDS = `\n artifact {\n id\n kind\n slug\n name\n summary\n whenToUse\n status\n installPolicy\n }\n artifactVersion {\n id\n version\n title\n summary\n status\n frontmatterName\n frontmatterDescription\n checksum\n revision\n updatedAtCursor\n canonicalFilePath\n publishedAt\n fileCount\n }\n`;\n\nconst WIZARD_ARTIFACT_ASSIGNMENT_FIELDS = `\n assignmentSource\n assignmentType\n scopePath\n includeChildren\n relevance\n recommendationReason\n ${WIZARD_ARTIFACT_CORE_FIELDS}\n`;\n\nconst WIZARD_ARTIFACT_INSTALLABLE_FIELDS = `\n relevance\n recommendationReason\n ${WIZARD_ARTIFACT_CORE_FIELDS}\n`;\n\nexport const WIZARD_ARTIFACTS_CATALOG_QUERY = `\n query PluginWizardArtifacts($input: WizardArtifactsDeliveryInput!) {\n pluginWizardArtifacts(input: $input) {\n artifactKind\n workspace {\n id\n slug\n name\n repositoryUrl\n defaultBranch\n status\n }\n directoryPath\n artifacts {\n ${WIZARD_ARTIFACT_ASSIGNMENT_FIELDS}\n }\n catalogArtifacts {\n ${WIZARD_ARTIFACT_INSTALLABLE_FIELDS}\n }\n artifactPreferences {\n scopeKey\n userKey\n ignoredArtifacts {\n ${WIZARD_ARTIFACT_ASSIGNMENT_FIELDS}\n }\n }\n unsupportedReason\n message\n }\n }\n`;\n\nexport const WIZARD_ARTIFACT_DETAIL_QUERY = `\n query PluginWizardArtifactVersion($input: WizardArtifactDetailInput!) {\n pluginWizardArtifactVersion(input: $input) {\n id\n artifact {\n id\n kind\n slug\n name\n summary\n whenToUse\n status\n installPolicy\n }\n version\n title\n summary\n status\n frontmatterName\n frontmatterDescription\n markdownBody\n renderedContent\n checksum\n revision\n updatedAtCursor\n canonicalFilePath\n publishedAt\n fileCount\n files {\n id\n relativePath\n contentType\n content\n checksum\n size\n sortOrder\n }\n }\n }\n`;\n\nexport const CURRENT_USER_ROLE_QUERY = `\n query PluginCurrentUserRole {\n user {\n me {\n _id\n email\n role\n }\n }\n }\n`;\n\nexport const SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION = `\n mutation SetWizardArtifactPreference($input: SetWizardArtifactPreferenceInput!) {\n setWizardArtifactPreference(input: $input) {\n scopeKey\n userKey\n ignoredArtifacts {\n ${WIZARD_ARTIFACT_ASSIGNMENT_FIELDS}\n }\n }\n }\n`;\n\nexport const CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION = `\n mutation CreateOrUpdateSkillFromMarkdown($markdownContent: String!) {\n admin {\n createOrUpdateSkillFromMarkdown(markdownContent: $markdownContent) {\n success\n skillSlug\n skillVersionId\n artifactSlug\n artifactVersionId\n errors\n }\n }\n }\n`;\n\nexport const EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY = `\n query EditorSkillWorkspaceAssignmentLookup($skillSlug: String!, $workspaceSlug: String!) {\n admin {\n skill(slug: $skillSlug) {\n id\n slug\n }\n workspace(slug: $workspaceSlug) {\n id\n slug\n }\n }\n }\n`;\n\nexport const BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION = `\n mutation BulkCreateSkillAssignments($input: BulkCreateSkillAssignmentsInput!) {\n admin {\n bulkCreateSkillAssignments(input: $input) {\n scopePathAssignments {\n id\n }\n skippedScopePathAssignments {\n id\n }\n conflicts {\n target\n inputIndex\n reason\n message\n }\n }\n }\n }\n`;\n\nexport const IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION = `\n mutation ImportWizardArtifactSnapshot($input: ImportWizardArtifactSnapshotInput!) {\n importWizardArtifactSnapshot(input: $input) {\n
|
|
1
|
+
{"version":3,"names":["PUBLISHED_SKILL_CORE_FIELDS","PUBLISHED_SKILL_ASSIGNMENT_FIELDS","PUBLISHED_SKILL_INSTALLABLE_FIELDS","PUBLISHED_SKILLS_CATALOG_QUERY","SET_PUBLISHED_SKILL_PREFERENCE_MUTATION","PUBLISHED_SKILL_DETAIL_QUERY","WIZARD_ARTIFACT_CORE_FIELDS","WIZARD_ARTIFACT_ASSIGNMENT_FIELDS","WIZARD_ARTIFACT_INSTALLABLE_FIELDS","WIZARD_ARTIFACTS_CATALOG_QUERY","WIZARD_ARTIFACT_DETAIL_QUERY","CURRENT_USER_ROLE_QUERY","SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION","CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION","EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY","BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION","IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION"],"sources":["../src/graphql-operations.ts"],"sourcesContent":["const PUBLISHED_SKILL_CORE_FIELDS = `\n skill {\n id\n slug\n name\n summary\n whenToUse\n status\n installPolicy\n tags {\n id\n slug\n label\n description\n facet {\n id\n slug\n label\n description\n }\n }\n }\n skillVersion {\n id\n version\n title\n summary\n status\n }\n publishedArtifact {\n id\n frontmatterName\n frontmatterDescription\n checksum\n publishedAt\n fileCount\n }\n`;\n\nconst PUBLISHED_SKILL_ASSIGNMENT_FIELDS = `\n assignmentSource\n assignmentType\n scopePath\n includeChildren\n relevance\n recommendationReason\n ${PUBLISHED_SKILL_CORE_FIELDS}\n`;\n\nconst PUBLISHED_SKILL_INSTALLABLE_FIELDS = `\n relevance\n recommendationReason\n ${PUBLISHED_SKILL_CORE_FIELDS}\n`;\n\nexport const PUBLISHED_SKILLS_CATALOG_QUERY = `\n query PluginPublishedSkills($input: PublishedSkillsDeliveryInput!) {\n pluginPublishedSkills(input: $input) {\n workspace {\n id\n slug\n name\n repositoryUrl\n defaultBranch\n status\n }\n directoryPath\n skills {\n ${PUBLISHED_SKILL_ASSIGNMENT_FIELDS}\n }\n catalogSkills {\n ${PUBLISHED_SKILL_INSTALLABLE_FIELDS}\n }\n userPreferences {\n scopeKey\n userKey\n ignoredSkills {\n ${PUBLISHED_SKILL_ASSIGNMENT_FIELDS}\n }\n }\n }\n }\n`;\n\nexport const SET_PUBLISHED_SKILL_PREFERENCE_MUTATION = `\n mutation SetPublishedSkillPreference($input: SetPublishedSkillPreferenceInput!) {\n setPublishedSkillPreference(input: $input) {\n scopeKey\n userKey\n ignoredSkills {\n ${PUBLISHED_SKILL_ASSIGNMENT_FIELDS}\n }\n }\n }\n`;\n\nexport const PUBLISHED_SKILL_DETAIL_QUERY = `\n query PluginPublishedSkillVersionArtifact($input: PublishedSkillArtifactDetailInput!) {\n pluginPublishedSkillVersionArtifact(input: $input) {\n id\n frontmatterName\n frontmatterDescription\n markdownBody\n renderedContent\n checksum\n publishedAt\n fileCount\n files {\n id\n relativePath\n contentType\n content\n checksum\n size\n sortOrder\n }\n }\n }\n`;\n\nconst WIZARD_ARTIFACT_CORE_FIELDS = `\n artifact {\n id\n kind\n slug\n name\n summary\n whenToUse\n status\n installPolicy\n }\n artifactVersion {\n id\n version\n title\n summary\n status\n frontmatterName\n frontmatterDescription\n checksum\n revision\n updatedAtCursor\n canonicalFilePath\n publishedAt\n fileCount\n }\n`;\n\nconst WIZARD_ARTIFACT_ASSIGNMENT_FIELDS = `\n assignmentSource\n assignmentType\n scopePath\n includeChildren\n relevance\n recommendationReason\n ${WIZARD_ARTIFACT_CORE_FIELDS}\n`;\n\nconst WIZARD_ARTIFACT_INSTALLABLE_FIELDS = `\n relevance\n recommendationReason\n ${WIZARD_ARTIFACT_CORE_FIELDS}\n`;\n\nexport const WIZARD_ARTIFACTS_CATALOG_QUERY = `\n query PluginWizardArtifacts($input: WizardArtifactsDeliveryInput!) {\n pluginWizardArtifacts(input: $input) {\n artifactKind\n workspace {\n id\n slug\n name\n repositoryUrl\n defaultBranch\n status\n }\n directoryPath\n artifacts {\n ${WIZARD_ARTIFACT_ASSIGNMENT_FIELDS}\n }\n catalogArtifacts {\n ${WIZARD_ARTIFACT_INSTALLABLE_FIELDS}\n }\n artifactPreferences {\n scopeKey\n userKey\n ignoredArtifacts {\n ${WIZARD_ARTIFACT_ASSIGNMENT_FIELDS}\n }\n }\n unsupportedReason\n message\n }\n }\n`;\n\nexport const WIZARD_ARTIFACT_DETAIL_QUERY = `\n query PluginWizardArtifactVersion($input: WizardArtifactDetailInput!) {\n pluginWizardArtifactVersion(input: $input) {\n id\n artifact {\n id\n kind\n slug\n name\n summary\n whenToUse\n status\n installPolicy\n }\n version\n title\n summary\n status\n frontmatterName\n frontmatterDescription\n markdownBody\n renderedContent\n checksum\n revision\n updatedAtCursor\n canonicalFilePath\n publishedAt\n fileCount\n files {\n id\n relativePath\n contentType\n content\n checksum\n size\n sortOrder\n }\n }\n }\n`;\n\nexport const CURRENT_USER_ROLE_QUERY = `\n query PluginCurrentUserRole {\n user {\n me {\n _id\n email\n role\n }\n }\n }\n`;\n\nexport const SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION = `\n mutation SetWizardArtifactPreference($input: SetWizardArtifactPreferenceInput!) {\n setWizardArtifactPreference(input: $input) {\n scopeKey\n userKey\n ignoredArtifacts {\n ${WIZARD_ARTIFACT_ASSIGNMENT_FIELDS}\n }\n }\n }\n`;\n\nexport const CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION = `\n mutation CreateOrUpdateSkillFromMarkdown($markdownContent: String!) {\n admin {\n createOrUpdateSkillFromMarkdown(markdownContent: $markdownContent) {\n success\n skillSlug\n skillVersionId\n artifactSlug\n artifactVersionId\n errors\n }\n }\n }\n`;\n\nexport const EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY = `\n query EditorSkillWorkspaceAssignmentLookup($skillSlug: String!, $workspaceSlug: String!) {\n admin {\n skill(slug: $skillSlug) {\n id\n slug\n }\n workspace(slug: $workspaceSlug) {\n id\n slug\n }\n }\n }\n`;\n\nexport const BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION = `\n mutation BulkCreateSkillAssignments($input: BulkCreateSkillAssignmentsInput!) {\n admin {\n bulkCreateSkillAssignments(input: $input) {\n scopePathAssignments {\n id\n }\n skippedScopePathAssignments {\n id\n }\n conflicts {\n target\n inputIndex\n reason\n message\n }\n }\n }\n }\n`;\n\nexport const IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION = `\n mutation ImportWizardArtifactSnapshot($input: ImportWizardArtifactSnapshotInput!) {\n admin {\n importWizardArtifactSnapshot(input: $input) {\n success\n skillSlug\n skillVersionId\n artifactSlug\n artifactVersionId\n errors\n }\n }\n }\n`;\n"],"mappings":"AAAA,MAAMA,2BAA2B,GAAG;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMC,iCAAiC,GAAG;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,IAAID,2BAA2B;AAC/B,CAAC;AAED,MAAME,kCAAkC,GAAG;AAC3C;AACA;AACA,IAAIF,2BAA2B;AAC/B,CAAC;AAED,OAAO,MAAMG,8BAA8B,GAAG;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUF,iCAAiC;AAC3C;AACA;AACA,UAAUC,kCAAkC;AAC5C;AACA;AACA;AACA;AACA;AACA,YAAYD,iCAAiC;AAC7C;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMG,uCAAuC,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA,UAAUH,iCAAiC;AAC3C;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMI,4BAA4B,GAAG;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMC,2BAA2B,GAAG;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMC,iCAAiC,GAAG;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,IAAID,2BAA2B;AAC/B,CAAC;AAED,MAAME,kCAAkC,GAAG;AAC3C;AACA;AACA,IAAIF,2BAA2B;AAC/B,CAAC;AAED,OAAO,MAAMG,8BAA8B,GAAG;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUF,iCAAiC;AAC3C;AACA;AACA,UAAUC,kCAAkC;AAC5C;AACA;AACA;AACA;AACA;AACA,YAAYD,iCAAiC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMG,4BAA4B,GAAG;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,uBAAuB,GAAG;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,uCAAuC,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA,UAAUL,iCAAiC;AAC3C;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMM,6CAA6C,GAAG;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,8CAA8C,GAAG;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,sCAAsC,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,wCAAwC,GAAG;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
package/dist/plugin-tools.d.ts
CHANGED
|
@@ -91,6 +91,7 @@ type PublishedSkillToolHandlers = {
|
|
|
91
91
|
importWizardArtifact: (args: WizardArtifactImportArgs, context: ToolExecuteContext) => Promise<unknown>;
|
|
92
92
|
};
|
|
93
93
|
export declare const AVAILABLE_PUBLISHED_SKILL_TOOLS: string[];
|
|
94
|
+
export declare const hasPrivilegedWizardToolRole: (role: string | null | undefined) => boolean;
|
|
94
95
|
export declare const resolveAvailableTools: (role: string | null | undefined) => string[];
|
|
95
96
|
export declare const createPublishedSkillToolDefinitions: (tool: ToolFactory, handlers: PublishedSkillToolHandlers) => {
|
|
96
97
|
sharedTools: {
|
package/dist/plugin-tools.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export const AVAILABLE_PUBLISHED_SKILL_TOOLS = ['opencode_wizard_catalog_fetch', 'opencode_wizard_artifact_fetch', 'opencode_wizard_artifact_preference_set', 'opencode_wizard_published_skills_fetch', 'opencode_wizard_published_skill_preference_set', 'opencode_wizard_status', 'opencode_wizard_editor_create_or_update_skill', 'opencode_wizard_editor_publish_skill', 'opencode_wizard_artifact_import'];
|
|
2
2
|
const SHARED_PUBLISHED_SKILL_TOOLS = AVAILABLE_PUBLISHED_SKILL_TOOLS.slice(0, 6);
|
|
3
|
+
export const hasPrivilegedWizardToolRole = role => role === 'ADMIN' || role === 'EDITOR';
|
|
3
4
|
export const resolveAvailableTools = role => {
|
|
4
|
-
if (role
|
|
5
|
+
if (hasPrivilegedWizardToolRole(role)) return [...AVAILABLE_PUBLISHED_SKILL_TOOLS];
|
|
5
6
|
return [...SHARED_PUBLISHED_SKILL_TOOLS];
|
|
6
7
|
};
|
|
7
8
|
export const createPublishedSkillToolDefinitions = (tool, handlers) => ({
|
|
@@ -82,7 +83,7 @@ export const createPublishedSkillToolDefinitions = (tool, handlers) => ({
|
|
|
82
83
|
},
|
|
83
84
|
editorOnlyTools: {
|
|
84
85
|
opencode_wizard_editor_create_or_update_skill: tool({
|
|
85
|
-
description: 'Canonical
|
|
86
|
+
description: 'Canonical privileged skill creation/update tool for ADMIN or EDITOR sessions. Sends direct SKILL.md markdown content to the backend createOrUpdateSkillFromMarkdown mutation and creates a workspace assignment when the directory resolves to a backend workspace.',
|
|
86
87
|
args: {
|
|
87
88
|
markdownContent: tool.schema.string().describe('Complete SKILL.md markdown content, including frontmatter when the backend skill contract requires it'),
|
|
88
89
|
directory: tool.schema.string().optional().describe('Optional absolute or relative directory override')
|
|
@@ -92,7 +93,7 @@ export const createPublishedSkillToolDefinitions = (tool, handlers) => ({
|
|
|
92
93
|
}
|
|
93
94
|
}),
|
|
94
95
|
opencode_wizard_editor_publish_skill: tool({
|
|
95
|
-
description: 'Read skill markdown files from .opencode/skills/ and publish them to the backend via the createOrUpdateSkillFromMarkdown mutation, then assign them to the resolved workspace when available. Requires EDITOR role.',
|
|
96
|
+
description: 'Read skill markdown files from .opencode/skills/ and publish them to the backend via the createOrUpdateSkillFromMarkdown mutation, then assign them to the resolved workspace when available. Requires ADMIN or EDITOR role.',
|
|
96
97
|
args: {
|
|
97
98
|
skillSlug: tool.schema.string().describe('Skill slug matching a directory under .opencode/skills/'),
|
|
98
99
|
directory: tool.schema.string().optional().describe('Optional absolute or relative directory override')
|
|
@@ -102,7 +103,7 @@ export const createPublishedSkillToolDefinitions = (tool, handlers) => ({
|
|
|
102
103
|
}
|
|
103
104
|
}),
|
|
104
105
|
opencode_wizard_artifact_import: tool({
|
|
105
|
-
description: '
|
|
106
|
+
description: 'Privileged ADMIN/EDITOR import tool for external wizard artifacts. Supports SKILL from GitHub/raw SKILL.md sources and DESIGN_DOC from direct URLs or command-like inputs such as `npx getdesign@latest add bmw-m`. Imported backend artifacts become the plugin runtime authority; no project files are written.',
|
|
106
107
|
args: {
|
|
107
108
|
artifactKind: tool.schema.string().optional().describe('Wizard artifact kind to import: SKILL or DESIGN_DOC; inferred from source when omitted'),
|
|
108
109
|
source: tool.schema.string().describe('Direct URL or command-like input, e.g. `https://github.com/vercel-labs/skills --skill find-skills` or `npx getdesign@latest add bmw-m`'),
|
package/dist/plugin-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AVAILABLE_PUBLISHED_SKILL_TOOLS","SHARED_PUBLISHED_SKILL_TOOLS","slice","resolveAvailableTools","role","createPublishedSkillToolDefinitions","tool","handlers","sharedTools","opencode_wizard_catalog_fetch","description","args","artifactKind","schema","string","optional","describe","directory","refresh","boolean","recommendationContext","execute","context","fetchWizardArtifactCatalog","opencode_wizard_artifact_fetch","artifact","artifacts","fetchWizardArtifacts","opencode_wizard_artifact_preference_set","action","preferenceScope","updateWizardArtifactPreference","opencode_wizard_published_skills_fetch","skill","skills","fetchPublishedSkills","opencode_wizard_published_skill_preference_set","updatePublishedSkillPreference","opencode_wizard_status","getStatus","editorOnlyTools","opencode_wizard_editor_create_or_update_skill","markdownContent","createOrUpdateEditorSkill","opencode_wizard_editor_publish_skill","skillSlug","publishEditorSkill","opencode_wizard_artifact_import","source","slug","name","summary","importWizardArtifact"],"sources":["../src/plugin-tools.ts"],"sourcesContent":["export type PublishedSkillFetchArgs = {\n skill?: string;\n skills?: string;\n directory?: string;\n refresh?: boolean;\n recommendationContext?: string;\n};\n\nexport type WizardArtifactKind = 'SKILL' | 'DESIGN_DOC';\n\nexport type WizardArtifactCatalogFetchArgs = {\n artifactKind?: string;\n directory?: string;\n refresh?: boolean;\n recommendationContext?: string;\n};\n\nexport type WizardArtifactFetchArgs = {\n artifactKind?: string;\n artifact?: string;\n artifacts?: string;\n directory?: string;\n refresh?: boolean;\n recommendationContext?: string;\n};\n\nexport type PluginStatusArgs = {\n directory?: string;\n};\n\nexport type PublishedSkillPreferenceArgs = {\n skill: string;\n action: string;\n preferenceScope?: string;\n directory?: string;\n};\n\nexport type WizardArtifactPreferenceArgs = {\n artifactKind?: string;\n artifact: string;\n action: string;\n preferenceScope?: string;\n directory?: string;\n};\n\nexport type EditorPublishSkillArgs = {\n skillSlug: string;\n directory?: string;\n};\n\nexport type EditorCreateOrUpdateSkillArgs = {\n markdownContent: string;\n directory?: string;\n};\n\nexport type WizardArtifactImportArgs = {\n artifactKind?: string;\n source: string;\n slug?: string;\n skill?: string;\n name?: string;\n summary?: string;\n directory?: string;\n};\n\ntype ToolSchemaValue<TSelf> = {\n optional: () => TSelf;\n describe: (description: string) => TSelf;\n};\n\ntype ToolSchema = {\n string: () => ToolSchemaValue<ToolSchemaValue<unknown>>;\n boolean: () => ToolSchemaValue<ToolSchemaValue<unknown>>;\n};\n\nexport type ToolExecuteContext = {\n directory: string;\n abort: AbortSignal;\n metadata: (payload: { title: string; metadata: Record<string, string> }) => void;\n};\n\ntype ToolDefinition<TArgs extends object> = {\n description: string;\n args: { [K in keyof TArgs]-?: unknown };\n execute: (args: TArgs, context: ToolExecuteContext) => Promise<unknown>;\n};\n\nexport type ToolFactory = (<TArgs extends object>(definition: ToolDefinition<TArgs>) => unknown) & {\n schema: ToolSchema;\n};\n\ntype PublishedSkillToolHandlers = {\n fetchPublishedSkills: (args: PublishedSkillFetchArgs, context: ToolExecuteContext) => Promise<unknown>;\n fetchWizardArtifactCatalog: (args: WizardArtifactCatalogFetchArgs, context: ToolExecuteContext) => Promise<unknown>;\n fetchWizardArtifacts: (args: WizardArtifactFetchArgs, context: ToolExecuteContext) => Promise<unknown>;\n updatePublishedSkillPreference: (args: PublishedSkillPreferenceArgs, context: ToolExecuteContext) => Promise<unknown>;\n updateWizardArtifactPreference: (args: WizardArtifactPreferenceArgs, context: ToolExecuteContext) => Promise<unknown>;\n getStatus: (args: PluginStatusArgs, context: ToolExecuteContext) => Promise<unknown>;\n createOrUpdateEditorSkill: (args: EditorCreateOrUpdateSkillArgs, context: ToolExecuteContext) => Promise<unknown>;\n publishEditorSkill: (args: EditorPublishSkillArgs, context: ToolExecuteContext) => Promise<unknown>;\n importWizardArtifact: (args: WizardArtifactImportArgs, context: ToolExecuteContext) => Promise<unknown>;\n};\n\nexport const AVAILABLE_PUBLISHED_SKILL_TOOLS = [\n 'opencode_wizard_catalog_fetch',\n 'opencode_wizard_artifact_fetch',\n 'opencode_wizard_artifact_preference_set',\n 'opencode_wizard_published_skills_fetch',\n 'opencode_wizard_published_skill_preference_set',\n 'opencode_wizard_status',\n 'opencode_wizard_editor_create_or_update_skill',\n 'opencode_wizard_editor_publish_skill',\n 'opencode_wizard_artifact_import',\n];\n\nconst SHARED_PUBLISHED_SKILL_TOOLS = AVAILABLE_PUBLISHED_SKILL_TOOLS.slice(0, 6);\n\nexport const resolveAvailableTools = (role: string | null | undefined): string[] => {\n if (role === 'EDITOR') return [...AVAILABLE_PUBLISHED_SKILL_TOOLS];\n return [...SHARED_PUBLISHED_SKILL_TOOLS];\n};\n\nexport const createPublishedSkillToolDefinitions = (\n tool: ToolFactory,\n handlers: PublishedSkillToolHandlers,\n) => ({\n sharedTools: {\n opencode_wizard_catalog_fetch: tool<WizardArtifactCatalogFetchArgs>({\n description:\n 'Always-available canonical wizard artifact catalog tool. Supports artifactKind SKILL and DESIGN_DOC; catalog metadata is candidate discovery only, and bodies/files should be fetched before using a matching wizard artifact as guidance.',\n args: {\n artifactKind: tool.schema\n .string()\n .optional()\n .describe('Wizard artifact kind to catalog: SKILL or DESIGN_DOC; defaults to SKILL'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n refresh: tool.schema.boolean().optional().describe('Bypass the local plugin cache for this request'),\n recommendationContext: tool.schema\n .string()\n .optional()\n .describe(\n 'Optional metadata-only relevance/ranking context for catalog recommendations; fetched artifact bodies/files remain the authority.',\n ),\n },\n async execute(args, context) {\n return handlers.fetchWizardArtifactCatalog(args, context);\n },\n }),\n opencode_wizard_artifact_fetch: tool<WizardArtifactFetchArgs>({\n description:\n 'Always-available canonical wizard artifact detail tool. Supports artifactKind SKILL and DESIGN_DOC; fetched backend-authorized bodies/files are the reference content when a matching effective artifact is used.',\n args: {\n artifactKind: tool.schema\n .string()\n .optional()\n .describe('Wizard artifact kind to fetch: SKILL or DESIGN_DOC; defaults to SKILL'),\n artifact: tool.schema\n .string()\n .optional()\n .describe('Single artifact identifier; for SKILL this is a skill slug, artifact name, or skill name'),\n artifacts: tool.schema\n .string()\n .optional()\n .describe('One or more comma-separated or newline-separated artifact identifiers'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n refresh: tool.schema.boolean().optional().describe('Bypass the local plugin cache for this request'),\n recommendationContext: tool.schema\n .string()\n .optional()\n .describe(\n 'Optional metadata-only relevance/ranking context for artifact discovery and suggestions; fetched bodies/files remain the authority.',\n ),\n },\n async execute(args, context) {\n return handlers.fetchWizardArtifacts(args, context);\n },\n }),\n opencode_wizard_artifact_preference_set: tool<WizardArtifactPreferenceArgs>({\n description:\n 'Always-available canonical wizard artifact preference tool. Supports SKILL and DESIGN_DOC install/uninstall/ignore/unignore through server-backed artifact preference APIs. To disable a per-user global starter/global skill, call artifactKind=SKILL action=ignore preferenceScope=global; use action=unignore preferenceScope=global to enable it again.',\n args: {\n artifactKind: tool.schema\n .string()\n .optional()\n .describe('Wizard artifact kind to update: SKILL or DESIGN_DOC; defaults to SKILL'),\n artifact: tool.schema.string().describe('Artifact identifier; for SKILL this is the published skill slug'),\n action: tool.schema\n .string()\n .describe('Preference action: install, uninstall, ignore, or unignore'),\n preferenceScope: tool.schema\n .string()\n .optional()\n .describe('Preference scope for the action: project/workspace or global; defaults to project. Use global with ignore/unignore to disable or enable starter/global skills for the current user.'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.updateWizardArtifactPreference(args, context);\n },\n }),\n opencode_wizard_published_skills_fetch: tool<PublishedSkillFetchArgs>({\n description:\n 'Always-available tool to fetch one or multiple wizard-published SKILL.md bodies/details for the current scope. When a backend-published wizard-listed skill matches the task, use the fetched body as reference guidance; catalog/status metadata only identifies candidates. Use this for wizard-listed/private/scoped/backend-published skill slugs instead of the native OpenCode skill tool; auth/catalog failures are returned in tool output. Prefer `skills` for multiple identifiers, call with no args to discover/bootstrap auth, and pass `refresh: true` before clearing plugin/OpenCode caches',\n args: {\n skill: tool.schema\n .string()\n .optional()\n .describe(\n 'Single skill slug, artifact name, or skill name; backward-compatible with comma/newline-delimited lists',\n ),\n skills: tool.schema\n .string()\n .optional()\n .describe('One or more comma-separated or newline-separated skill slugs, artifact names, or skill names'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n refresh: tool.schema.boolean().optional().describe('Bypass the local plugin cache for this request'),\n recommendationContext: tool.schema\n .string()\n .optional()\n .describe(\n 'Optional metadata-only relevance/ranking context for skill recommendations; fetched SKILL.md bodies remain the authority.',\n ),\n },\n async execute(args, context) {\n return handlers.fetchPublishedSkills(args, context);\n },\n }),\n opencode_wizard_published_skill_preference_set: tool<PublishedSkillPreferenceArgs>({\n description:\n 'Always-available tool to install, uninstall, ignore, or unignore a backend-published wizard skill for non-TUI workflows using the shared server-backed preference API; auth/catalog failures are returned in tool output. Disable a per-user global starter/global skill with skill=<slug> action=ignore preferenceScope=global; enable it again with action=unignore preferenceScope=global.',\n args: {\n skill: tool.schema.string().describe('Published skill slug, artifact name, or skill name to update'),\n action: tool.schema\n .string()\n .describe('Preference action: install, uninstall, ignore, or unignore'),\n preferenceScope: tool.schema\n .string()\n .optional()\n .describe('Preference scope for the action: project/workspace or global; defaults to project. Use global with ignore/unignore to turn starter/global skills off or on for the current user.'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.updatePublishedSkillPreference(args, context);\n },\n }),\n opencode_wizard_status: tool<PluginStatusArgs>({\n description:\n 'Always-available tool to report opencode-wizard plugin status, bootstrap auth when missing, and return safe auth/catalog/source/cache/workspace metadata without exposing tokens; fetch matching wizard skill bodies before using them as guidance',\n args: {\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.getStatus(args, context);\n },\n }),\n },\n editorOnlyTools: {\n opencode_wizard_editor_create_or_update_skill: tool<EditorCreateOrUpdateSkillArgs>({\n description:\n 'Canonical EDITOR-only skill creation/update tool. Sends direct SKILL.md markdown content to the backend createOrUpdateSkillFromMarkdown mutation and creates a workspace assignment when the directory resolves to a backend workspace.',\n args: {\n markdownContent: tool.schema\n .string()\n .describe('Complete SKILL.md markdown content, including frontmatter when the backend skill contract requires it'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.createOrUpdateEditorSkill(args, context);\n },\n }),\n opencode_wizard_editor_publish_skill: tool<EditorPublishSkillArgs>({\n description:\n 'Read skill markdown files from .opencode/skills/ and publish them to the backend via the createOrUpdateSkillFromMarkdown mutation, then assign them to the resolved workspace when available. Requires EDITOR role.',\n args: {\n skillSlug: tool.schema\n .string()\n .describe('Skill slug matching a directory under .opencode/skills/'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.publishEditorSkill(args, context);\n },\n }),\n opencode_wizard_artifact_import: tool<WizardArtifactImportArgs>({\n description:\n 'Editor-only import tool for external wizard artifacts. Supports SKILL from GitHub/raw SKILL.md sources and DESIGN_DOC from direct URLs or command-like inputs such as `npx getdesign@latest add bmw-m`. Imported backend artifacts become the plugin runtime authority; no project files are written.',\n args: {\n artifactKind: tool.schema\n .string()\n .optional()\n .describe('Wizard artifact kind to import: SKILL or DESIGN_DOC; inferred from source when omitted'),\n source: tool.schema\n .string()\n .describe('Direct URL or command-like input, e.g. `https://github.com/vercel-labs/skills --skill find-skills` or `npx getdesign@latest add bmw-m`'),\n slug: tool.schema.string().optional().describe('Artifact slug; required for DESIGN_DOC unless inferable'),\n skill: tool.schema.string().optional().describe('Skill directory/name for SKILL repo imports'),\n name: tool.schema.string().optional().describe('Optional display name override'),\n summary: tool.schema.string().optional().describe('Optional summary/description override'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.importWizardArtifact(args, context);\n },\n }),\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["AVAILABLE_PUBLISHED_SKILL_TOOLS","SHARED_PUBLISHED_SKILL_TOOLS","slice","hasPrivilegedWizardToolRole","role","resolveAvailableTools","createPublishedSkillToolDefinitions","tool","handlers","sharedTools","opencode_wizard_catalog_fetch","description","args","artifactKind","schema","string","optional","describe","directory","refresh","boolean","recommendationContext","execute","context","fetchWizardArtifactCatalog","opencode_wizard_artifact_fetch","artifact","artifacts","fetchWizardArtifacts","opencode_wizard_artifact_preference_set","action","preferenceScope","updateWizardArtifactPreference","opencode_wizard_published_skills_fetch","skill","skills","fetchPublishedSkills","opencode_wizard_published_skill_preference_set","updatePublishedSkillPreference","opencode_wizard_status","getStatus","editorOnlyTools","opencode_wizard_editor_create_or_update_skill","markdownContent","createOrUpdateEditorSkill","opencode_wizard_editor_publish_skill","skillSlug","publishEditorSkill","opencode_wizard_artifact_import","source","slug","name","summary","importWizardArtifact"],"sources":["../src/plugin-tools.ts"],"sourcesContent":["export type PublishedSkillFetchArgs = {\n skill?: string;\n skills?: string;\n directory?: string;\n refresh?: boolean;\n recommendationContext?: string;\n};\n\nexport type WizardArtifactKind = 'SKILL' | 'DESIGN_DOC';\n\nexport type WizardArtifactCatalogFetchArgs = {\n artifactKind?: string;\n directory?: string;\n refresh?: boolean;\n recommendationContext?: string;\n};\n\nexport type WizardArtifactFetchArgs = {\n artifactKind?: string;\n artifact?: string;\n artifacts?: string;\n directory?: string;\n refresh?: boolean;\n recommendationContext?: string;\n};\n\nexport type PluginStatusArgs = {\n directory?: string;\n};\n\nexport type PublishedSkillPreferenceArgs = {\n skill: string;\n action: string;\n preferenceScope?: string;\n directory?: string;\n};\n\nexport type WizardArtifactPreferenceArgs = {\n artifactKind?: string;\n artifact: string;\n action: string;\n preferenceScope?: string;\n directory?: string;\n};\n\nexport type EditorPublishSkillArgs = {\n skillSlug: string;\n directory?: string;\n};\n\nexport type EditorCreateOrUpdateSkillArgs = {\n markdownContent: string;\n directory?: string;\n};\n\nexport type WizardArtifactImportArgs = {\n artifactKind?: string;\n source: string;\n slug?: string;\n skill?: string;\n name?: string;\n summary?: string;\n directory?: string;\n};\n\ntype ToolSchemaValue<TSelf> = {\n optional: () => TSelf;\n describe: (description: string) => TSelf;\n};\n\ntype ToolSchema = {\n string: () => ToolSchemaValue<ToolSchemaValue<unknown>>;\n boolean: () => ToolSchemaValue<ToolSchemaValue<unknown>>;\n};\n\nexport type ToolExecuteContext = {\n directory: string;\n abort: AbortSignal;\n metadata: (payload: { title: string; metadata: Record<string, string> }) => void;\n};\n\ntype ToolDefinition<TArgs extends object> = {\n description: string;\n args: { [K in keyof TArgs]-?: unknown };\n execute: (args: TArgs, context: ToolExecuteContext) => Promise<unknown>;\n};\n\nexport type ToolFactory = (<TArgs extends object>(definition: ToolDefinition<TArgs>) => unknown) & {\n schema: ToolSchema;\n};\n\ntype PublishedSkillToolHandlers = {\n fetchPublishedSkills: (args: PublishedSkillFetchArgs, context: ToolExecuteContext) => Promise<unknown>;\n fetchWizardArtifactCatalog: (args: WizardArtifactCatalogFetchArgs, context: ToolExecuteContext) => Promise<unknown>;\n fetchWizardArtifacts: (args: WizardArtifactFetchArgs, context: ToolExecuteContext) => Promise<unknown>;\n updatePublishedSkillPreference: (args: PublishedSkillPreferenceArgs, context: ToolExecuteContext) => Promise<unknown>;\n updateWizardArtifactPreference: (args: WizardArtifactPreferenceArgs, context: ToolExecuteContext) => Promise<unknown>;\n getStatus: (args: PluginStatusArgs, context: ToolExecuteContext) => Promise<unknown>;\n createOrUpdateEditorSkill: (args: EditorCreateOrUpdateSkillArgs, context: ToolExecuteContext) => Promise<unknown>;\n publishEditorSkill: (args: EditorPublishSkillArgs, context: ToolExecuteContext) => Promise<unknown>;\n importWizardArtifact: (args: WizardArtifactImportArgs, context: ToolExecuteContext) => Promise<unknown>;\n};\n\nexport const AVAILABLE_PUBLISHED_SKILL_TOOLS = [\n 'opencode_wizard_catalog_fetch',\n 'opencode_wizard_artifact_fetch',\n 'opencode_wizard_artifact_preference_set',\n 'opencode_wizard_published_skills_fetch',\n 'opencode_wizard_published_skill_preference_set',\n 'opencode_wizard_status',\n 'opencode_wizard_editor_create_or_update_skill',\n 'opencode_wizard_editor_publish_skill',\n 'opencode_wizard_artifact_import',\n];\n\nconst SHARED_PUBLISHED_SKILL_TOOLS = AVAILABLE_PUBLISHED_SKILL_TOOLS.slice(0, 6);\n\nexport const hasPrivilegedWizardToolRole = (role: string | null | undefined): boolean =>\n role === 'ADMIN' || role === 'EDITOR';\n\nexport const resolveAvailableTools = (role: string | null | undefined): string[] => {\n if (hasPrivilegedWizardToolRole(role)) return [...AVAILABLE_PUBLISHED_SKILL_TOOLS];\n return [...SHARED_PUBLISHED_SKILL_TOOLS];\n};\n\nexport const createPublishedSkillToolDefinitions = (\n tool: ToolFactory,\n handlers: PublishedSkillToolHandlers,\n) => ({\n sharedTools: {\n opencode_wizard_catalog_fetch: tool<WizardArtifactCatalogFetchArgs>({\n description:\n 'Always-available canonical wizard artifact catalog tool. Supports artifactKind SKILL and DESIGN_DOC; catalog metadata is candidate discovery only, and bodies/files should be fetched before using a matching wizard artifact as guidance.',\n args: {\n artifactKind: tool.schema\n .string()\n .optional()\n .describe('Wizard artifact kind to catalog: SKILL or DESIGN_DOC; defaults to SKILL'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n refresh: tool.schema.boolean().optional().describe('Bypass the local plugin cache for this request'),\n recommendationContext: tool.schema\n .string()\n .optional()\n .describe(\n 'Optional metadata-only relevance/ranking context for catalog recommendations; fetched artifact bodies/files remain the authority.',\n ),\n },\n async execute(args, context) {\n return handlers.fetchWizardArtifactCatalog(args, context);\n },\n }),\n opencode_wizard_artifact_fetch: tool<WizardArtifactFetchArgs>({\n description:\n 'Always-available canonical wizard artifact detail tool. Supports artifactKind SKILL and DESIGN_DOC; fetched backend-authorized bodies/files are the reference content when a matching effective artifact is used.',\n args: {\n artifactKind: tool.schema\n .string()\n .optional()\n .describe('Wizard artifact kind to fetch: SKILL or DESIGN_DOC; defaults to SKILL'),\n artifact: tool.schema\n .string()\n .optional()\n .describe('Single artifact identifier; for SKILL this is a skill slug, artifact name, or skill name'),\n artifacts: tool.schema\n .string()\n .optional()\n .describe('One or more comma-separated or newline-separated artifact identifiers'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n refresh: tool.schema.boolean().optional().describe('Bypass the local plugin cache for this request'),\n recommendationContext: tool.schema\n .string()\n .optional()\n .describe(\n 'Optional metadata-only relevance/ranking context for artifact discovery and suggestions; fetched bodies/files remain the authority.',\n ),\n },\n async execute(args, context) {\n return handlers.fetchWizardArtifacts(args, context);\n },\n }),\n opencode_wizard_artifact_preference_set: tool<WizardArtifactPreferenceArgs>({\n description:\n 'Always-available canonical wizard artifact preference tool. Supports SKILL and DESIGN_DOC install/uninstall/ignore/unignore through server-backed artifact preference APIs. To disable a per-user global starter/global skill, call artifactKind=SKILL action=ignore preferenceScope=global; use action=unignore preferenceScope=global to enable it again.',\n args: {\n artifactKind: tool.schema\n .string()\n .optional()\n .describe('Wizard artifact kind to update: SKILL or DESIGN_DOC; defaults to SKILL'),\n artifact: tool.schema.string().describe('Artifact identifier; for SKILL this is the published skill slug'),\n action: tool.schema\n .string()\n .describe('Preference action: install, uninstall, ignore, or unignore'),\n preferenceScope: tool.schema\n .string()\n .optional()\n .describe('Preference scope for the action: project/workspace or global; defaults to project. Use global with ignore/unignore to disable or enable starter/global skills for the current user.'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.updateWizardArtifactPreference(args, context);\n },\n }),\n opencode_wizard_published_skills_fetch: tool<PublishedSkillFetchArgs>({\n description:\n 'Always-available tool to fetch one or multiple wizard-published SKILL.md bodies/details for the current scope. When a backend-published wizard-listed skill matches the task, use the fetched body as reference guidance; catalog/status metadata only identifies candidates. Use this for wizard-listed/private/scoped/backend-published skill slugs instead of the native OpenCode skill tool; auth/catalog failures are returned in tool output. Prefer `skills` for multiple identifiers, call with no args to discover/bootstrap auth, and pass `refresh: true` before clearing plugin/OpenCode caches',\n args: {\n skill: tool.schema\n .string()\n .optional()\n .describe(\n 'Single skill slug, artifact name, or skill name; backward-compatible with comma/newline-delimited lists',\n ),\n skills: tool.schema\n .string()\n .optional()\n .describe('One or more comma-separated or newline-separated skill slugs, artifact names, or skill names'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n refresh: tool.schema.boolean().optional().describe('Bypass the local plugin cache for this request'),\n recommendationContext: tool.schema\n .string()\n .optional()\n .describe(\n 'Optional metadata-only relevance/ranking context for skill recommendations; fetched SKILL.md bodies remain the authority.',\n ),\n },\n async execute(args, context) {\n return handlers.fetchPublishedSkills(args, context);\n },\n }),\n opencode_wizard_published_skill_preference_set: tool<PublishedSkillPreferenceArgs>({\n description:\n 'Always-available tool to install, uninstall, ignore, or unignore a backend-published wizard skill for non-TUI workflows using the shared server-backed preference API; auth/catalog failures are returned in tool output. Disable a per-user global starter/global skill with skill=<slug> action=ignore preferenceScope=global; enable it again with action=unignore preferenceScope=global.',\n args: {\n skill: tool.schema.string().describe('Published skill slug, artifact name, or skill name to update'),\n action: tool.schema\n .string()\n .describe('Preference action: install, uninstall, ignore, or unignore'),\n preferenceScope: tool.schema\n .string()\n .optional()\n .describe('Preference scope for the action: project/workspace or global; defaults to project. Use global with ignore/unignore to turn starter/global skills off or on for the current user.'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.updatePublishedSkillPreference(args, context);\n },\n }),\n opencode_wizard_status: tool<PluginStatusArgs>({\n description:\n 'Always-available tool to report opencode-wizard plugin status, bootstrap auth when missing, and return safe auth/catalog/source/cache/workspace metadata without exposing tokens; fetch matching wizard skill bodies before using them as guidance',\n args: {\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.getStatus(args, context);\n },\n }),\n },\n editorOnlyTools: {\n opencode_wizard_editor_create_or_update_skill: tool<EditorCreateOrUpdateSkillArgs>({\n description:\n 'Canonical privileged skill creation/update tool for ADMIN or EDITOR sessions. Sends direct SKILL.md markdown content to the backend createOrUpdateSkillFromMarkdown mutation and creates a workspace assignment when the directory resolves to a backend workspace.',\n args: {\n markdownContent: tool.schema\n .string()\n .describe('Complete SKILL.md markdown content, including frontmatter when the backend skill contract requires it'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.createOrUpdateEditorSkill(args, context);\n },\n }),\n opencode_wizard_editor_publish_skill: tool<EditorPublishSkillArgs>({\n description:\n 'Read skill markdown files from .opencode/skills/ and publish them to the backend via the createOrUpdateSkillFromMarkdown mutation, then assign them to the resolved workspace when available. Requires ADMIN or EDITOR role.',\n args: {\n skillSlug: tool.schema\n .string()\n .describe('Skill slug matching a directory under .opencode/skills/'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.publishEditorSkill(args, context);\n },\n }),\n opencode_wizard_artifact_import: tool<WizardArtifactImportArgs>({\n description:\n 'Privileged ADMIN/EDITOR import tool for external wizard artifacts. Supports SKILL from GitHub/raw SKILL.md sources and DESIGN_DOC from direct URLs or command-like inputs such as `npx getdesign@latest add bmw-m`. Imported backend artifacts become the plugin runtime authority; no project files are written.',\n args: {\n artifactKind: tool.schema\n .string()\n .optional()\n .describe('Wizard artifact kind to import: SKILL or DESIGN_DOC; inferred from source when omitted'),\n source: tool.schema\n .string()\n .describe('Direct URL or command-like input, e.g. `https://github.com/vercel-labs/skills --skill find-skills` or `npx getdesign@latest add bmw-m`'),\n slug: tool.schema.string().optional().describe('Artifact slug; required for DESIGN_DOC unless inferable'),\n skill: tool.schema.string().optional().describe('Skill directory/name for SKILL repo imports'),\n name: tool.schema.string().optional().describe('Optional display name override'),\n summary: tool.schema.string().optional().describe('Optional summary/description override'),\n directory: tool.schema.string().optional().describe('Optional absolute or relative directory override'),\n },\n async execute(args, context) {\n return handlers.importWizardArtifact(args, context);\n },\n }),\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
package/dist/server/runtime.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION, CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION, EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY, IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION, SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION } from '../graphql-operations.js';
|
|
4
|
-
import { createPublishedSkillToolDefinitions, resolveAvailableTools } from '../plugin-tools.js';
|
|
4
|
+
import { createPublishedSkillToolDefinitions, hasPrivilegedWizardToolRole, resolveAvailableTools } from '../plugin-tools.js';
|
|
5
5
|
import { resolveStoredAuthState, toAuthState, writeAuthState } from './auth-store.js';
|
|
6
6
|
import { resolveConfig } from './config.js';
|
|
7
7
|
export { resolveConfig } from './config.js';
|
|
@@ -1517,14 +1517,14 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
1517
1517
|
requestedSkillSlug
|
|
1518
1518
|
}) => {
|
|
1519
1519
|
const authState = await resolveStoredAuthState(input.worktree, config);
|
|
1520
|
-
if (!authState || authState.role
|
|
1520
|
+
if (!authState || !hasPrivilegedWizardToolRole(authState.role)) {
|
|
1521
1521
|
return {
|
|
1522
1522
|
output: JSON.stringify({
|
|
1523
1523
|
pluginId: PLUGIN_ID,
|
|
1524
1524
|
status: 'forbidden',
|
|
1525
1525
|
skillSlug: requestedSkillSlug ?? null,
|
|
1526
1526
|
source,
|
|
1527
|
-
message: 'This tool requires EDITOR role. Your current session does not have the required
|
|
1527
|
+
message: 'This tool requires ADMIN or EDITOR role. Your current session does not have the required privileged permission.'
|
|
1528
1528
|
}, null, 2),
|
|
1529
1529
|
metadata: {
|
|
1530
1530
|
status: 'forbidden',
|
|
@@ -1629,14 +1629,14 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
1629
1629
|
throw new Error('Editor publish requires a non-empty skill slug.');
|
|
1630
1630
|
}
|
|
1631
1631
|
const authState = await resolveStoredAuthState(input.worktree, config);
|
|
1632
|
-
if (!authState || authState.role
|
|
1632
|
+
if (!authState || !hasPrivilegedWizardToolRole(authState.role)) {
|
|
1633
1633
|
return {
|
|
1634
1634
|
output: JSON.stringify({
|
|
1635
1635
|
pluginId: PLUGIN_ID,
|
|
1636
1636
|
status: 'forbidden',
|
|
1637
1637
|
skillSlug: requestedSkillSlug,
|
|
1638
1638
|
source: 'seed_file',
|
|
1639
|
-
message: 'This tool requires EDITOR role. Your current session does not have the required
|
|
1639
|
+
message: 'This tool requires ADMIN or EDITOR role. Your current session does not have the required privileged permission.'
|
|
1640
1640
|
}, null, 2),
|
|
1641
1641
|
metadata: {
|
|
1642
1642
|
status: 'forbidden',
|
|
@@ -1694,14 +1694,14 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
1694
1694
|
slug: args.slug,
|
|
1695
1695
|
skill: args.skill
|
|
1696
1696
|
});
|
|
1697
|
-
if (!authState || authState.role
|
|
1697
|
+
if (!authState || !hasPrivilegedWizardToolRole(authState.role)) {
|
|
1698
1698
|
return {
|
|
1699
1699
|
output: JSON.stringify({
|
|
1700
1700
|
pluginId: PLUGIN_ID,
|
|
1701
1701
|
status: 'forbidden',
|
|
1702
1702
|
artifactKind: importPlan.artifactKind,
|
|
1703
1703
|
source: importPlan.source,
|
|
1704
|
-
message: 'This tool requires EDITOR role. Your current session does not have the required
|
|
1704
|
+
message: 'This tool requires ADMIN or EDITOR role. Your current session does not have the required privileged permission.'
|
|
1705
1705
|
}, null, 2),
|
|
1706
1706
|
metadata: {
|
|
1707
1707
|
status: 'forbidden',
|
|
@@ -1772,7 +1772,7 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
1772
1772
|
}
|
|
1773
1773
|
};
|
|
1774
1774
|
}
|
|
1775
|
-
const payload = response.data.importWizardArtifactSnapshot;
|
|
1775
|
+
const payload = response.data.admin.importWizardArtifactSnapshot;
|
|
1776
1776
|
await scheduleInteractivePresenceStart();
|
|
1777
1777
|
return {
|
|
1778
1778
|
output: JSON.stringify({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","path","BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION","CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION","EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY","IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION","SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION","createPublishedSkillToolDefinitions","resolveAvailableTools","resolveStoredAuthState","toAuthState","writeAuthState","resolveConfig","createPluginSession","openBrowser","startLoginFlow","fetchPublishedSkillDetail","fetchPublishedSkillsCatalog","fetchPublishedSkillsGraphQl","fetchWizardArtifactDetail","fetchWizardArtifactsCatalog","hydrateStoredAuthStateRole","maybePersistWorkspaceSlugFromCatalog","normalizeAbsolutePath","emitPluginActionEvent","emitPresenceEvent","normalizeDirectoryArg","normalizeRepositoryPath","resolveWorkspace","toWorkspaceResolutionMetadata","toWorkspaceResolutionOutput","parseRequestedSkillArgs","selectPublishedSkills","toInstallableSkillSummary","toPublishedSkillDetail","toPublishedSkillSummary","toWizardArtifactCatalog","toWizardArtifactDetail","toWizardArtifactSummary","CACHE_TTL_MS","LOGIN_TIMEOUT_MS","OIDC_CALLBACK_URL","PLUGIN_ID","PRESENCE_SHUTDOWN_SIGNALS","PRESENCE_SIGNAL_EXIT_CODES","NATIVE_SKILLS_URL_COMPATIBILITY","buildSystemNote","filterIgnoredPublishedSkills","resolvePluginStatusSnapshot","toAiFacingPluginStatusSnapshot","toFetchFailureOutput","toPluginStatusMetadata","toPublishedSkillCatalog","createIdleLoginBootstrapSnapshot","fetchWizardArtifactImportSource","planWizardArtifactImport","getCatalogCacheKey","resolvePublishedSkillPreferenceCacheContext","setPublishedSkillIgnored","setPublishedSkillInstalled","toPublishedSkillPreferenceAction","toPublishedSkillPreferenceScope","toPluginAuthStateSummary","importOpencodePluginModule","Function","resolvePluginStatusSnapshotWithAuthBootstrap","getDetailCacheKey","catalogCacheKey","skillVersionId","revision","JSON","stringify","getPublishedSkillRevision","item","publishedArtifact","checksum","updatedAtCursor","publishedAt","getCatalogCursor","items","catalogItems","map","assignmentSource","assignmentType","scopePath","includeChildren","sort","join","getWizardArtifactRevision","artifactVersion","getWizardArtifactCatalogCursor","toWizardArtifactCatalogCursorItems","getDetailInflightKey","purpose","SUPPORTED_WIZARD_ARTIFACT_KINDS","DESIGN_DOC_UNSUPPORTED_MESSAGE","toWizardArtifactKind","value","normalized","trim","toUpperCase","replace","buildUnsupportedWizardArtifactOutput","artifactKind","directoryPath","output","pluginId","runtimeMode","status","supportedArtifactKinds","requestedDirectoryPath","message","metadata","withWizardArtifactEnvelope","result","outputResult","parse","compatibilityAliases","matchesWizardArtifactIdentifier","identifier","normalizedIdentifier","toLowerCase","artifact","slug","name","frontmatterName","id","selectWizardArtifacts","identifiers","selectedItems","filter","some","missingIdentifiers","MAX_IDENTIFIER_SUGGESTIONS","RECOMMENDATION_METADATA_NOTE","normalizeRecommendationContext","args","recommendationContext","normalizeSuggestionIdentifier","normalize","getEditDistance","left","right","length","previous","Array","from","_","index","leftIndex","current","rightIndex","substitutionCost","Math","min","splice","getSuggestionScore","requested","candidate","normalizedRequested","normalizedCandidate","includes","distance","threshold","max","ceil","dedupeSuggestionCandidates","candidates","seen","Set","key","has","add","getIdentifierSuggestions","requestedIdentifier","score","source","localeCompare","slice","canonicalIdentifier","matchedIdentifier","label","getSkillSuggestionCandidates","payload","skills","flatMap","summary","skillSlug","artifactName","skillName","catalogSkills","getWizardArtifactSuggestionCandidates","artifactSlug","getMissingIdentifierSuggestions","suggestions","OpencodeWizardSkillsPlugin","input","tool","config","worktree","workspacePath","cache","Map","catalogInflight","detailCache","wizardArtifactDetailCache","detailInflight","wizardArtifactDetailInflight","initialAuthState","signal","AbortSignal","timeout","onAuthStateChanged","clearPublishedSkillState","registeredTools","role","loginBootstrap","promise","snapshot","lastAuthenticatedAuthState","didEmitStart","didScheduleStop","presenceStartPromise","presenceStopPromise","lastInteractiveDirectoryPath","resolveActionAuthState","storedAuthState","emitActionEventForCurrentSession","event","authState","schedulePresenceStart","Promise","resolve","all","undefined","then","schedulePresenceStop","catch","scheduleInteractivePresenceStart","process","once","shutdownSignal","finally","exit","clear","persistAuthState","session","authStatePath","startLoginCompletion","trigger","startedAt","Date","toISOString","expiresAt","browserUrl","browserOpenError","email","loginPromise","loginSignal","loginStart","callbackPayload","callbackPromise","Error","state","expectedState","pluginSession","code","codeVerifier","redirectUri","error","closeCallbackServer","loadPublishedSkillCatalog","directory","useCache","workspaceResolution","preferenceContext","cacheKey","cached","get","now","fetchResult","inflight","requestPromise","resolution","set","cursor","ok","fetchedAt","delete","loadPublishedSkillDetail","itemRevision","skillVersion","inflightKey","detail","detailResult","artifactVersionId","requestedSkillVersionId","requestedArtifactVersionId","graphQlErrors","loadWizardArtifactDetail","inflightResult","executePublishedSkillsFetchTool","context","requestedDirectory","requestedSkills","fetchActionDirectoryPath","emitFetchOutcome","publishedSkillsResult","refresh","abort","loginBootstrapSnapshot","filteredPublishedSkillsResult","selection","isSingleRequest","skillSuggestionCandidates","catalog","title","publishedSkillCount","toString","globalAssignmentCount","assignmentCounts","global","projectAssignmentCount","project","userAssignmentCount","user","ignoredSkillCount","ignoreState","ignoredSkillSlugs","ignoredPublishedSkills","scopeKey","count","recommendationNote","cacheCursor","cacheTtlMs","nextStep","requestedSkill","missingSkills","missingSkillSuggestions","availableSkills","skillDetailResults","failedSkillDetail","find","skillDetails","version","workspace","skill","requestedCount","matchedCount","executeWizardArtifactCatalogTool","availableTools","artifacts","catalogArtifacts","artifactCount","executeWizardArtifactFetchTool","requestedArtifacts","artifactSuggestionCandidates","requestedArtifact","missingArtifacts","missingArtifactSuggestions","availableArtifacts","detailResults","failedDetail","details","executeStatusTool","executePublishedSkillPreferenceTool","emitPreferenceOutcome","action","catalogResult","selectableCatalogSkills","preferenceSelection","userPreferences","ignoredSkills","matchedSkill","preferenceState","ignored","preferenceScope","installed","guidance","executeWizardArtifactPreferenceTool","response","query","variables","workspaceSlug","repositoryUrl","data","setWizardArtifactPreference","createEditorWorkspaceSkillAssignment","lookupResponse","operationName","admin","assignmentResponse","scopePathAssignments","workspaceId","skillId","notes","assignmentResult","bulkCreateSkillAssignments","createdAssignment","assignmentId","skippedAssignment","skippedScopePathAssignments","conflictMessage","conflicts","conflict","executeEditorCreateOrUpdateSkillMarkdown","markdownContent","requestedSkillSlug","createOrUpdateSkillFromMarkdown","workspaceAssignment","success","errors","workspaceAssignmentStatus","workspaceAssignmentId","executeEditorCreateOrUpdateSkillTool","executeEditorPublishSkillTool","repositoryRoot","skillFilePath","rootSkillSeedPath","readFile","executeWizardArtifactImportTool","importPlan","importSource","candidateUrls","fetchedUrl","sourceSnapshotRef","sourceRef","importWizardArtifactSnapshot","sharedTools","editorOnlyTools","fetchPublishedSkills","fetchWizardArtifactCatalog","fetchWizardArtifacts","updatePublishedSkillPreference","updateWizardArtifactPreference","getStatus","createOrUpdateEditorSkill","publishEditorSkill","importWizardArtifact","experimental.chat.system.transform","_hookInput","loginMessage","system","push","systemNote","server"],"sources":["../../src/server/runtime.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport {\n BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION,\n CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION,\n EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY,\n IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION,\n SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION,\n} from '../graphql-operations.js';\nimport {\n createPublishedSkillToolDefinitions,\n resolveAvailableTools,\n type EditorCreateOrUpdateSkillArgs,\n type EditorPublishSkillArgs,\n type PluginStatusArgs,\n type PublishedSkillFetchArgs,\n type PublishedSkillPreferenceArgs,\n type ToolExecuteContext,\n type WizardArtifactCatalogFetchArgs,\n type WizardArtifactFetchArgs,\n type WizardArtifactKind,\n type WizardArtifactImportArgs,\n type WizardArtifactPreferenceArgs,\n} from '../plugin-tools.js';\nimport {\n resolveStoredAuthState,\n toAuthState,\n writeAuthState,\n} from './auth-store.js';\nimport { resolveConfig } from './config.js';\nexport { resolveConfig } from './config.js';\nimport { createPluginSession, openBrowser, startLoginFlow } from './auth-flow.js';\nimport {\n fetchPublishedSkillDetail,\n fetchPublishedSkillsCatalog,\n fetchPublishedSkillsGraphQl,\n fetchWizardArtifactDetail,\n fetchWizardArtifactsCatalog,\n hydrateStoredAuthStateRole,\n maybePersistWorkspaceSlugFromCatalog,\n} from './client.js';\nimport { normalizeAbsolutePath } from './path-utils.js';\nimport { emitPluginActionEvent, emitPresenceEvent } from './presence.js';\nimport {\n normalizeDirectoryArg,\n normalizeRepositoryPath,\n resolveWorkspace,\n toWorkspaceResolutionMetadata,\n toWorkspaceResolutionOutput,\n} from './workspace.js';\nimport {\n buildSkillMarkdown,\n parseRequestedSkillArgs,\n selectPublishedSkills,\n toInstallableSkillSummary,\n toPublishedSkillDetail,\n toPublishedSkillSummary,\n toWizardArtifactCatalog,\n toWizardArtifactDetail,\n toWizardArtifactSummary,\n} from '../published-skills-transform.js';\nimport {\n CACHE_TTL_MS,\n LOGIN_TIMEOUT_MS,\n NATIVE_SKILLS_URL_COMPATIBILITY,\n OIDC_CALLBACK_URL,\n PLUGIN_ID,\n PRESENCE_SHUTDOWN_SIGNALS,\n PRESENCE_SIGNAL_EXIT_CODES,\n type NativeSkillsUrlCompatibility,\n} from './constants.js';\nexport { PLUGIN_ID, NATIVE_SKILLS_URL_COMPATIBILITY, type NativeSkillsUrlCompatibility } from './constants.js';\nimport {\n buildSystemNote,\n filterIgnoredPublishedSkills,\n resolvePluginStatusSnapshot,\n toAiFacingPluginStatusSnapshot,\n toFetchFailureOutput,\n toPluginAuthStateSummary,\n toPluginStatusMetadata,\n toPublishedSkillCatalog,\n} from './status.js';\nimport { createIdleLoginBootstrapSnapshot } from './auth-bootstrap.js';\nimport { fetchWizardArtifactImportSource, planWizardArtifactImport } from './import-sources.js';\nimport {\n getCatalogCacheKey,\n resolvePublishedSkillPreferenceCacheContext,\n setPublishedSkillIgnored,\n setPublishedSkillInstalled,\n toPublishedSkillPreferenceAction,\n toPublishedSkillPreferenceScope,\n} from './preferences.js';\nexport {\n buildSystemNote,\n resolvePluginStatusSnapshot,\n toPluginAuthStateSummary,\n toPublishedSkillCatalog,\n} from './status.js';\nimport type {\n AuthState,\n BulkCreateSkillAssignmentsResponse,\n CacheEntry,\n CreateOrUpdateSkillFromMarkdownResponse,\n DetailCacheEntry,\n EditorSkillWorkspaceAssignmentLookupResponse,\n EditorSkillWorkspaceAssignmentResult,\n FetchResult,\n FilteredPublishedSkillsResult,\n LoginBootstrapTrigger,\n ImportWizardArtifactSnapshotResponse,\n OidcLoginStart,\n OpencodePluginModule,\n OpencodePluginServer,\n PluginActionEventType,\n PluginAuthStateSummary,\n PluginSessionResponse,\n PresenceEventType,\n PublishedSkillArtifactDetailPurpose,\n PublishedSkillCatalogItem,\n PublishedSkillCatalogPayload,\n PublishedSkillDetailResult,\n PublishedSkillInstallableCatalogItem,\n PublishedSkillsResult,\n ResolvedConfig,\n WorkspaceResolution,\n WizardArtifactCatalogItem,\n WizardArtifactDetailCacheEntry,\n WizardArtifactUserPreferences,\n} from './types.js';\nexport type {\n PluginAuthStateSummary,\n PluginStatusSnapshot,\n PublishedSkillCatalogItem,\n PublishedSkillCatalogPayload,\n PublishedSkillDetailItem,\n PublishedSkillInstallableCatalogItem,\n} from './types.js';\n\nconst importOpencodePluginModule = new Function('specifier', 'return import(specifier)') as (\n specifier: string,\n) => Promise<OpencodePluginModule>;\nexport { resolvePluginStatusSnapshotWithAuthBootstrap } from './auth-bootstrap.js';\nexport { setPublishedSkillIgnored, setPublishedSkillInstalled, toPublishedSkillPreferenceScope } from './preferences.js';\n\nconst getDetailCacheKey = (catalogCacheKey: string, skillVersionId: string, revision: string): string => {\n return JSON.stringify([catalogCacheKey, skillVersionId, revision]);\n};\n\nconst getPublishedSkillRevision = (item: PublishedSkillCatalogItem): string => {\n return item.publishedArtifact.revision ?? `${item.publishedArtifact.checksum}:${item.publishedArtifact.updatedAtCursor ?? item.publishedArtifact.publishedAt}`;\n};\n\nconst getCatalogCursor = (items: PublishedSkillCatalogItem[], catalogItems: PublishedSkillInstallableCatalogItem[]): string => {\n return [...items.map(getPublishedSkillRevision), ...catalogItems.map((item) => getPublishedSkillRevision({ ...item, assignmentSource: 'CATALOG', assignmentType: 'PATH', scopePath: '', includeChildren: true }))]\n .sort()\n .join('|');\n};\n\nconst getWizardArtifactRevision = (item: WizardArtifactCatalogItem): string => {\n return (\n item.artifactVersion.revision ??\n `${item.artifactVersion.checksum}:${item.artifactVersion.updatedAtCursor ?? item.artifactVersion.publishedAt ?? 'unpublished'}`\n );\n};\n\nconst getWizardArtifactCatalogCursor = (items: WizardArtifactCatalogItem[], catalogItems: WizardArtifactCatalogItem[]): string => {\n return [...items.map(getWizardArtifactRevision), ...catalogItems.map(getWizardArtifactRevision)].sort().join('|');\n};\n\nconst toWizardArtifactCatalogCursorItems = (items: Array<Pick<WizardArtifactCatalogItem, 'artifact' | 'artifactVersion'>>): WizardArtifactCatalogItem[] =>\n items.map((item) => ({\n ...item,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n }));\n\nconst getDetailInflightKey = (\n catalogCacheKey: string,\n skillVersionId: string,\n purpose: PublishedSkillArtifactDetailPurpose,\n): string => {\n return JSON.stringify([catalogCacheKey, skillVersionId, purpose]);\n};\n\nconst SUPPORTED_WIZARD_ARTIFACT_KINDS: WizardArtifactKind[] = ['SKILL', 'DESIGN_DOC'];\nconst DESIGN_DOC_UNSUPPORTED_MESSAGE =\n 'DESIGN_DOC is supported by generic wizard artifact persistence; use catalog/detail tools for assigned or installed documents.';\n\nconst toWizardArtifactKind = (value: string | undefined): WizardArtifactKind | null => {\n if (!value) return 'SKILL';\n const normalized = value.trim().toUpperCase().replace(/[-\\s]+/gu, '_');\n if (normalized === 'SKILL') return 'SKILL';\n if (normalized === 'DESIGN_DOC') return 'DESIGN_DOC';\n return null;\n};\n\nconst buildUnsupportedWizardArtifactOutput = ({\n artifactKind,\n directoryPath,\n}: {\n artifactKind: WizardArtifactKind | string;\n directoryPath: string;\n}) => ({\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: artifactKind === 'DESIGN_DOC' ? 'unsupported' : 'bad_artifact_kind',\n artifactKind,\n supportedArtifactKinds: SUPPORTED_WIZARD_ARTIFACT_KINDS,\n requestedDirectoryPath: directoryPath,\n message:\n artifactKind === 'DESIGN_DOC'\n ? DESIGN_DOC_UNSUPPORTED_MESSAGE\n : 'Unsupported wizard artifact kind. Use SKILL or DESIGN_DOC.',\n },\n null,\n 2,\n ),\n metadata: {\n status: artifactKind === 'DESIGN_DOC' ? 'unsupported' : 'bad_artifact_kind',\n artifactKind,\n directoryPath,\n },\n});\n\nconst withWizardArtifactEnvelope = (result: unknown, artifactKind: WizardArtifactKind): unknown => {\n if (!result || typeof result !== 'object' || !('output' in result)) return result;\n const outputResult = result as { output: unknown; metadata?: Record<string, string> };\n if (typeof outputResult.output !== 'string') return result;\n\n try {\n return {\n ...outputResult,\n output: JSON.stringify(\n {\n ...JSON.parse(outputResult.output),\n artifactKind,\n supportedArtifactKinds: SUPPORTED_WIZARD_ARTIFACT_KINDS,\n compatibilityAliases: [\n 'opencode_wizard_published_skills_fetch',\n 'opencode_wizard_published_skill_preference_set',\n ],\n },\n null,\n 2,\n ),\n metadata: {\n ...(outputResult.metadata ?? {}),\n artifactKind,\n },\n };\n } catch {\n return result;\n }\n};\n\nconst matchesWizardArtifactIdentifier = (item: WizardArtifactCatalogItem, identifier: string): boolean => {\n const normalizedIdentifier = identifier.trim().toLowerCase();\n if (!normalizedIdentifier) return false;\n if (item.artifact.slug.toLowerCase() === normalizedIdentifier) return true;\n if (item.artifact.name.toLowerCase() === normalizedIdentifier) return true;\n if (item.artifactVersion.frontmatterName.toLowerCase() === normalizedIdentifier) return true;\n return item.artifactVersion.id.toLowerCase() === normalizedIdentifier;\n};\n\nconst selectWizardArtifacts = (items: WizardArtifactCatalogItem[], identifiers: string[]) => {\n const selectedItems = items.filter((item) =>\n identifiers.some((identifier) => matchesWizardArtifactIdentifier(item, identifier)),\n );\n const missingIdentifiers = identifiers.filter(\n (identifier) => !selectedItems.some((item) => matchesWizardArtifactIdentifier(item, identifier)),\n );\n return { selectedItems, missingIdentifiers };\n};\n\ntype SuggestionSource = 'active' | 'catalog';\n\ntype IdentifierSuggestionCandidate = {\n identifier: string;\n canonicalIdentifier: string;\n label: string;\n source: SuggestionSource;\n};\n\ntype IdentifierSuggestion = {\n identifier: string;\n matchedIdentifier: string;\n label: string;\n source: SuggestionSource;\n};\n\nconst MAX_IDENTIFIER_SUGGESTIONS = 3;\nconst RECOMMENDATION_METADATA_NOTE =\n 'Recommendation fields are backend metadata for routing and discoverability only; fetch/detail tools are still required before using artifact bodies as guidance.';\n\ntype ArgsWithRecommendationContext = {\n recommendationContext?: unknown;\n};\n\nconst normalizeRecommendationContext = (args: ArgsWithRecommendationContext): string | null => {\n if (typeof args.recommendationContext !== 'string') return null;\n const recommendationContext = args.recommendationContext.trim();\n if (!recommendationContext) return null;\n return recommendationContext;\n};\n\nconst normalizeSuggestionIdentifier = (value: string): string =>\n value\n .trim()\n .toLowerCase()\n .normalize('NFKD')\n .replace(/[^\\p{Letter}\\p{Number}]+/gu, '');\n\nconst getEditDistance = (left: string, right: string): number => {\n if (left === right) return 0;\n if (!left) return right.length;\n if (!right) return left.length;\n\n const previous = Array.from({ length: right.length + 1 }, (_, index) => index);\n\n for (let leftIndex = 1; leftIndex <= left.length; leftIndex += 1) {\n const current = [leftIndex];\n for (let rightIndex = 1; rightIndex <= right.length; rightIndex += 1) {\n const substitutionCost = left[leftIndex - 1] === right[rightIndex - 1] ? 0 : 1;\n current[rightIndex] = Math.min(\n current[rightIndex - 1]! + 1,\n previous[rightIndex]! + 1,\n previous[rightIndex - 1]! + substitutionCost,\n );\n }\n previous.splice(0, previous.length, ...current);\n }\n\n return previous[right.length]!;\n};\n\nconst getSuggestionScore = (requested: string, candidate: string): number | null => {\n const normalizedRequested = normalizeSuggestionIdentifier(requested);\n const normalizedCandidate = normalizeSuggestionIdentifier(candidate);\n if (!normalizedRequested || !normalizedCandidate) return null;\n if (normalizedRequested === normalizedCandidate) return 0;\n if (normalizedCandidate.includes(normalizedRequested) || normalizedRequested.includes(normalizedCandidate)) return 1;\n\n const distance = getEditDistance(normalizedRequested, normalizedCandidate);\n const threshold = Math.max(2, Math.ceil(Math.max(normalizedRequested.length, normalizedCandidate.length) * 0.35));\n if (distance > threshold) return null;\n return distance + 2;\n};\n\nconst dedupeSuggestionCandidates = (candidates: IdentifierSuggestionCandidate[]): IdentifierSuggestionCandidate[] => {\n const seen = new Set<string>();\n return candidates.filter((candidate) => {\n const key = normalizeSuggestionIdentifier(candidate.identifier);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n};\n\nconst getIdentifierSuggestions = (\n requestedIdentifier: string,\n candidates: IdentifierSuggestionCandidate[],\n): IdentifierSuggestion[] =>\n dedupeSuggestionCandidates(candidates)\n .map((candidate) => ({\n candidate,\n score: getSuggestionScore(requestedIdentifier, candidate.identifier),\n }))\n .filter((result): result is { candidate: IdentifierSuggestionCandidate; score: number } => result.score !== null)\n .sort((left, right) => {\n if (left.score !== right.score) return left.score - right.score;\n if (left.candidate.source !== right.candidate.source) return left.candidate.source === 'active' ? -1 : 1;\n return left.candidate.identifier.localeCompare(right.candidate.identifier);\n })\n .slice(0, MAX_IDENTIFIER_SUGGESTIONS)\n .map(({ candidate }) => ({\n identifier: candidate.canonicalIdentifier,\n matchedIdentifier: candidate.identifier,\n label: candidate.label,\n source: candidate.source,\n }));\n\nconst getSkillSuggestionCandidates = (payload: PublishedSkillCatalogPayload): IdentifierSuggestionCandidate[] => [\n ...payload.skills.flatMap((item) => {\n const summary = toPublishedSkillSummary(item);\n return summary.identifiers.map((identifier) => ({\n identifier,\n canonicalIdentifier: summary.skillSlug,\n label: summary.artifactName || summary.skillName || summary.skillSlug,\n source: 'active' as const,\n }));\n }),\n ...payload.catalogSkills.flatMap((item) => {\n const summary = toInstallableSkillSummary(item);\n return summary.identifiers.map((identifier) => ({\n identifier,\n canonicalIdentifier: summary.skillSlug,\n label: summary.artifactName || summary.skillName || summary.skillSlug,\n source: 'catalog' as const,\n }));\n }),\n];\n\nconst getWizardArtifactSuggestionCandidates = (\n items: WizardArtifactCatalogItem[],\n catalogItems: Array<Pick<WizardArtifactCatalogItem, 'artifact' | 'artifactVersion'>>,\n): IdentifierSuggestionCandidate[] => [\n ...items.flatMap((item) => {\n const summary = toWizardArtifactSummary(item);\n return summary.identifiers.map((identifier) => ({\n identifier,\n canonicalIdentifier: summary.artifactSlug,\n label: summary.artifactName || summary.artifactSlug,\n source: 'active' as const,\n }));\n }),\n ...toWizardArtifactCatalogCursorItems(catalogItems).flatMap((item) => {\n const summary = toWizardArtifactSummary(item);\n return summary.identifiers.map((identifier) => ({\n identifier,\n canonicalIdentifier: summary.artifactSlug,\n label: summary.artifactName || summary.artifactSlug,\n source: 'catalog' as const,\n }));\n }),\n];\n\nconst getMissingIdentifierSuggestions = (identifiers: string[], candidates: IdentifierSuggestionCandidate[]) =>\n identifiers.map((identifier) => ({\n identifier,\n suggestions: getIdentifierSuggestions(identifier, candidates),\n }));\n\nexport const OpencodeWizardSkillsPlugin: OpencodePluginServer = async (input) => {\n const { tool } = await importOpencodePluginModule('@opencode-ai/plugin');\n const config = await resolveConfig(input.worktree);\n const workspacePath = normalizeAbsolutePath(input.worktree);\n const cache = new Map<string, CacheEntry>();\n const catalogInflight = new Map<string, Promise<PublishedSkillsResult>>();\n const detailCache = new Map<string, DetailCacheEntry>();\n const wizardArtifactDetailCache = new Map<string, WizardArtifactDetailCacheEntry>();\n const detailInflight = new Map<string, Promise<PublishedSkillDetailResult>>();\n const wizardArtifactDetailInflight = new Map<string, ReturnType<typeof fetchWizardArtifactDetail>>();\n const initialAuthState = await hydrateStoredAuthStateRole({\n worktree: input.worktree,\n config,\n signal: AbortSignal.timeout(5_000),\n onAuthStateChanged: clearPublishedSkillState,\n });\n const registeredTools = resolveAvailableTools(initialAuthState?.role ?? null);\n const loginBootstrap = {\n promise: null as Promise<AuthState> | null,\n snapshot: createIdleLoginBootstrapSnapshot(),\n };\n let lastAuthenticatedAuthState: AuthState | null = initialAuthState;\n let didEmitStart = false;\n let didScheduleStop = false;\n let presenceStartPromise: Promise<void> | null = null;\n let presenceStopPromise: Promise<void> | null = null;\n let lastInteractiveDirectoryPath: string | null = null;\n\n const resolveActionAuthState = async (): Promise<AuthState | null> => {\n const storedAuthState = await resolveStoredAuthState(input.worktree, config);\n if (storedAuthState) return storedAuthState;\n return lastAuthenticatedAuthState;\n };\n\n const emitActionEventForCurrentSession = async ({\n event,\n authState,\n directoryPath,\n }: {\n event: PluginActionEventType;\n authState?: AuthState | null;\n directoryPath?: string;\n }): Promise<void> => {\n await emitPluginActionEvent({\n config,\n authState: authState ?? (await resolveActionAuthState()),\n event,\n workspacePath,\n directoryPath,\n });\n };\n\n const schedulePresenceStart = (authState: AuthState): Promise<void> => {\n lastAuthenticatedAuthState = authState;\n if (didEmitStart) {\n return presenceStartPromise ?? Promise.resolve();\n }\n\n didEmitStart = true;\n presenceStartPromise = Promise.all([\n emitPresenceEvent({\n config,\n authState,\n event: 'START',\n workspacePath,\n }),\n emitActionEventForCurrentSession({\n event: 'START',\n authState,\n directoryPath: lastInteractiveDirectoryPath ?? undefined,\n }),\n ]).then(() => undefined);\n return presenceStartPromise;\n };\n\n const schedulePresenceStop = (): Promise<void> => {\n if (didScheduleStop) {\n return presenceStopPromise ?? Promise.resolve();\n }\n\n didScheduleStop = true;\n if (!didEmitStart || !lastAuthenticatedAuthState) {\n presenceStopPromise = Promise.resolve();\n return presenceStopPromise;\n }\n\n presenceStopPromise = (async () => {\n await presenceStartPromise?.catch(() => undefined);\n await Promise.all([\n emitPresenceEvent({\n config,\n authState: lastAuthenticatedAuthState,\n event: 'STOP',\n workspacePath,\n }),\n emitActionEventForCurrentSession({\n event: 'STOP',\n authState: lastAuthenticatedAuthState,\n directoryPath: lastInteractiveDirectoryPath ?? undefined,\n }),\n ]);\n })();\n\n return presenceStopPromise;\n };\n\n const scheduleInteractivePresenceStart = async (): Promise<void> => {\n const authState = await resolveStoredAuthState(input.worktree, config);\n if (!authState) return;\n await schedulePresenceStart(authState);\n };\n\n process.once('beforeExit', () => {\n void schedulePresenceStop();\n });\n\n for (const shutdownSignal of PRESENCE_SHUTDOWN_SIGNALS) {\n try {\n process.once(shutdownSignal, () => {\n void schedulePresenceStop().finally(() => {\n process.exit(PRESENCE_SIGNAL_EXIT_CODES[shutdownSignal]);\n });\n });\n } catch {\n continue;\n }\n }\n\n function clearPublishedSkillState() {\n cache.clear();\n catalogInflight.clear();\n detailCache.clear();\n wizardArtifactDetailCache.clear();\n detailInflight.clear();\n wizardArtifactDetailInflight.clear();\n }\n\n const persistAuthState = async (session: PluginSessionResponse['session']): Promise<AuthState> => {\n const authState = toAuthState(session);\n await writeAuthState(config.authStatePath, authState);\n clearPublishedSkillState();\n return authState;\n };\n\n const startLoginCompletion = (trigger: LoginBootstrapTrigger): Promise<AuthState> => {\n if (loginBootstrap.promise) {\n return loginBootstrap.promise;\n }\n\n const startedAt = new Date().toISOString();\n\n loginBootstrap.snapshot = {\n status: 'starting',\n trigger,\n startedAt,\n expiresAt: null,\n browserUrl: null,\n browserOpenError: null,\n email: null,\n message: null,\n };\n\n const loginPromise = (async () => {\n const loginSignal = AbortSignal.timeout(LOGIN_TIMEOUT_MS);\n let loginStart: OidcLoginStart | null = null;\n\n try {\n loginStart = await startLoginFlow(loginSignal);\n const browserOpenError = await openBrowser(loginStart.browserUrl);\n\n loginBootstrap.snapshot = {\n status: 'pending',\n trigger,\n startedAt,\n expiresAt: loginStart.expiresAt,\n browserUrl: loginStart.browserUrl,\n browserOpenError,\n email: null,\n message: browserOpenError\n ? `Automatic browser open failed. Open ${loginStart.browserUrl} manually.`\n : `Browser login started for published skill ${trigger}.`,\n };\n\n const callbackPayload = await loginStart.callbackPromise;\n\n if (callbackPayload.status === 'error') {\n throw new Error(callbackPayload.message);\n }\n\n if (callbackPayload.state !== loginStart.expectedState) {\n throw new Error('OAuth callback state did not match the original login request.');\n }\n\n loginBootstrap.snapshot = {\n status: 'pending',\n trigger,\n startedAt,\n expiresAt: loginStart.expiresAt,\n browserUrl: loginStart.browserUrl,\n browserOpenError,\n email: null,\n message: 'OAuth callback received. Finalizing backend session exchange.',\n };\n\n const pluginSession = await createPluginSession({\n code: callbackPayload.code,\n codeVerifier: loginStart.codeVerifier,\n redirectUri: OIDC_CALLBACK_URL,\n config,\n signal: loginSignal,\n });\n const authState = await persistAuthState(pluginSession);\n await emitActionEventForCurrentSession({\n event: 'LOGIN_SUCCESS',\n authState,\n directoryPath: lastInteractiveDirectoryPath ?? undefined,\n });\n\n loginBootstrap.snapshot = {\n status: 'authenticated',\n trigger,\n startedAt,\n expiresAt: authState.expiresAt,\n browserUrl: loginStart.browserUrl,\n browserOpenError,\n email: authState.email,\n message: `Browser login completed successfully for published skill ${trigger}.`,\n };\n\n return authState;\n } catch (error) {\n await emitActionEventForCurrentSession({\n event: 'LOGIN_FAILED',\n directoryPath: lastInteractiveDirectoryPath ?? undefined,\n });\n loginBootstrap.snapshot = {\n status: 'failed',\n trigger,\n startedAt,\n expiresAt: loginBootstrap.snapshot.expiresAt,\n browserUrl: loginBootstrap.snapshot.browserUrl,\n browserOpenError: loginBootstrap.snapshot.browserOpenError,\n email: null,\n message: error instanceof Error ? error.message : 'Browser login failed.',\n };\n throw error;\n } finally {\n await loginStart?.closeCallbackServer().catch(() => undefined);\n loginBootstrap.promise = null;\n }\n })();\n\n loginBootstrap.promise = loginPromise;\n return loginPromise;\n };\n\n const loadPublishedSkillCatalog = async ({\n directory,\n useCache,\n signal,\n recommendationContext,\n }: {\n directory: string;\n useCache: boolean;\n signal: AbortSignal;\n recommendationContext: string | null;\n }): Promise<PublishedSkillsResult> => {\n const workspaceResolution = await resolveWorkspace({\n config,\n directory,\n });\n const directoryPath = workspaceResolution.directoryPath;\n const preferenceContext = await resolvePublishedSkillPreferenceCacheContext(config);\n const cacheKey = JSON.stringify([getCatalogCacheKey(workspaceResolution, preferenceContext), recommendationContext ?? '']);\n const cached = cache.get(cacheKey);\n\n if (useCache && cached && cached.expiresAt > Date.now()) {\n return {\n directoryPath,\n workspaceResolution,\n fetchResult: {\n ...cached.result,\n source: 'cache',\n },\n };\n }\n\n const inflight = catalogInflight.get(cacheKey);\n if (inflight) {\n return inflight;\n }\n\n const requestPromise = (async (): Promise<PublishedSkillsResult> => {\n const fetchResult = await fetchPublishedSkillsCatalog(\n input.worktree,\n config,\n workspaceResolution,\n signal,\n recommendationContext,\n clearPublishedSkillState,\n );\n\n await maybePersistWorkspaceSlugFromCatalog({\n config,\n resolution: workspaceResolution,\n fetchResult,\n });\n\n cache.set(cacheKey, {\n result: fetchResult,\n expiresAt: Date.now() + CACHE_TTL_MS,\n cursor: fetchResult.ok ? getCatalogCursor(fetchResult.payload.skills, fetchResult.payload.catalogSkills) : fetchResult.fetchedAt,\n });\n\n return {\n directoryPath,\n workspaceResolution,\n fetchResult,\n };\n })();\n\n catalogInflight.set(cacheKey, requestPromise);\n\n try {\n return await requestPromise;\n } finally {\n catalogInflight.delete(cacheKey);\n }\n };\n\n const loadPublishedSkillDetail = async ({\n workspaceResolution,\n item,\n signal,\n useCache,\n purpose,\n }: {\n workspaceResolution: WorkspaceResolution;\n item: PublishedSkillCatalogItem;\n signal: AbortSignal;\n useCache: boolean;\n purpose: PublishedSkillArtifactDetailPurpose;\n }): Promise<PublishedSkillDetailResult> => {\n const directoryPath = workspaceResolution.directoryPath;\n const preferenceContext = await resolvePublishedSkillPreferenceCacheContext(config);\n const catalogCacheKey = getCatalogCacheKey(workspaceResolution, preferenceContext);\n const itemRevision = getPublishedSkillRevision(item);\n const cacheKey = getDetailCacheKey(catalogCacheKey, item.skillVersion.id, itemRevision);\n const inflightKey = getDetailInflightKey(catalogCacheKey, item.skillVersion.id, purpose);\n const cached = detailCache.get(cacheKey);\n\n if (useCache && cached && cached.expiresAt > Date.now()) {\n return {\n ok: true,\n detail: toPublishedSkillDetail({\n ...item,\n publishedArtifact: cached.artifact,\n }),\n };\n }\n\n const inflight = detailInflight.get(inflightKey);\n if (inflight) {\n return inflight;\n }\n\n const requestPromise = (async (): Promise<PublishedSkillDetailResult> => {\n const detailResult = await fetchPublishedSkillDetail({\n worktree: input.worktree,\n config,\n resolution: workspaceResolution,\n skillVersionId: item.skillVersion.id,\n artifactVersionId: item.publishedArtifact.id,\n signal,\n onAuthStateChanged: clearPublishedSkillState,\n purpose,\n });\n\n if (!detailResult.ok) {\n return {\n ok: false,\n status: detailResult.result.status,\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: detailResult.result.status,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n requestedSkillVersionId: item.skillVersion.id,\n requestedArtifactVersionId: item.publishedArtifact.id,\n message: detailResult.result.message,\n graphQlErrors:\n 'graphQlErrors' in detailResult.result ? detailResult.result.graphQlErrors : undefined,\n fetchedAt: detailResult.result.fetchedAt,\n source: detailResult.result.source,\n },\n null,\n 2,\n ),\n metadata: {\n status: detailResult.result.status,\n ...toWorkspaceResolutionMetadata(workspaceResolution),\n source: detailResult.result.source,\n },\n };\n }\n\n detailCache.set(cacheKey, {\n artifact: detailResult.artifact,\n expiresAt: Date.now() + CACHE_TTL_MS,\n revision: itemRevision,\n });\n\n return {\n ok: true,\n detail: toPublishedSkillDetail({\n ...item,\n publishedArtifact: detailResult.artifact,\n }),\n };\n })();\n\n detailInflight.set(inflightKey, requestPromise);\n\n try {\n return await requestPromise;\n } finally {\n detailInflight.delete(inflightKey);\n }\n };\n\n const loadWizardArtifactDetail = async ({\n workspaceResolution,\n item,\n signal,\n useCache,\n purpose,\n artifactKind,\n }: {\n workspaceResolution: WorkspaceResolution;\n item: WizardArtifactCatalogItem;\n signal: AbortSignal;\n useCache: boolean;\n purpose: PublishedSkillArtifactDetailPurpose;\n artifactKind: WizardArtifactKind;\n }) => {\n const preferenceContext = await resolvePublishedSkillPreferenceCacheContext(config);\n const catalogCacheKey = getCatalogCacheKey(workspaceResolution, preferenceContext);\n const itemRevision = getWizardArtifactRevision(item);\n const cacheKey = getDetailCacheKey(catalogCacheKey, item.artifactVersion.id, itemRevision);\n const inflightKey = JSON.stringify([catalogCacheKey, item.artifactVersion.id, itemRevision, purpose]);\n const cached = wizardArtifactDetailCache.get(cacheKey);\n\n if (useCache && cached && cached.expiresAt > Date.now()) {\n return { ok: true as const, artifact: cached.artifact };\n }\n\n const inflight = wizardArtifactDetailInflight.get(inflightKey);\n if (useCache && inflight) {\n const inflightResult = await inflight;\n if (!inflightResult.ok) return inflightResult;\n return { ok: true as const, artifact: inflightResult.artifact };\n }\n\n const requestPromise = fetchWizardArtifactDetail({\n worktree: input.worktree,\n config,\n resolution: workspaceResolution,\n artifactKind,\n artifactVersionId: item.artifactVersion.id,\n signal,\n onAuthStateChanged: clearPublishedSkillState,\n purpose,\n });\n\n wizardArtifactDetailInflight.set(inflightKey, requestPromise);\n\n try {\n const detailResult = await requestPromise;\n if (!detailResult.ok) return detailResult;\n\n wizardArtifactDetailCache.set(cacheKey, {\n artifact: detailResult.artifact,\n expiresAt: Date.now() + CACHE_TTL_MS,\n revision: itemRevision,\n });\n\n return { ok: true as const, artifact: detailResult.artifact };\n } finally {\n wizardArtifactDetailInflight.delete(inflightKey);\n }\n };\n\n const executePublishedSkillsFetchTool = async ({\n args,\n context,\n }: {\n args: PublishedSkillFetchArgs;\n context: {\n directory: string;\n abort: AbortSignal;\n metadata: (payload: { title: string; metadata: Record<string, string> }) => void;\n };\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const requestedSkills = parseRequestedSkillArgs(args);\n const recommendationContext = normalizeRecommendationContext(args as ArgsWithRecommendationContext);\n\n const fetchActionDirectoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = fetchActionDirectoryPath;\n\n const emitFetchOutcome = async (\n event: Extract<PluginActionEventType, 'FETCH_SUCCESS' | 'FETCH_FAILED'>,\n ): Promise<void> => {\n await emitActionEventForCurrentSession({\n event,\n directoryPath: fetchActionDirectoryPath,\n });\n };\n\n let publishedSkillsResult = await loadPublishedSkillCatalog({\n directory: requestedDirectory,\n useCache: !args.refresh,\n signal: context.abort,\n recommendationContext,\n });\n\n if (publishedSkillsResult.fetchResult.ok) {\n await scheduleInteractivePresenceStart();\n }\n\n if (!publishedSkillsResult.fetchResult.ok && publishedSkillsResult.fetchResult.status === 'missing_auth') {\n try {\n await startLoginCompletion('fetch').then(async (authState) => {\n await schedulePresenceStart(authState);\n });\n publishedSkillsResult = await loadPublishedSkillCatalog({\n directory: requestedDirectory,\n useCache: false,\n signal: context.abort,\n recommendationContext,\n });\n\n if (publishedSkillsResult.fetchResult.ok) {\n await scheduleInteractivePresenceStart();\n }\n } catch {\n // Return the original fetch failure with the latest login bootstrap snapshot attached.\n }\n }\n\n if (!publishedSkillsResult.fetchResult.ok) {\n await emitFetchOutcome('FETCH_FAILED');\n return toFetchFailureOutput({\n worktree: input.worktree,\n config,\n publishedSkillsResult,\n loginBootstrapSnapshot: loginBootstrap.snapshot,\n });\n }\n\n const filteredPublishedSkillsResult = await filterIgnoredPublishedSkills(config, publishedSkillsResult);\n if (!filteredPublishedSkillsResult.fetchResult.ok) {\n await emitFetchOutcome('FETCH_FAILED');\n return toFetchFailureOutput({\n worktree: input.worktree,\n config,\n publishedSkillsResult: filteredPublishedSkillsResult,\n loginBootstrapSnapshot: loginBootstrap.snapshot,\n });\n }\n\n const selection = selectPublishedSkills(filteredPublishedSkillsResult.fetchResult.payload, requestedSkills);\n const isSingleRequest = requestedSkills.length === 1;\n const skillSuggestionCandidates = getSkillSuggestionCandidates(filteredPublishedSkillsResult.fetchResult.payload);\n\n if (requestedSkills.length === 0) {\n const catalog = toPublishedSkillCatalog(filteredPublishedSkillsResult.fetchResult.payload, registeredTools);\n\n context.metadata({\n title: `opencode-wizard published skills catalog: ${catalog.publishedSkillCount} active`,\n metadata: {\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n status: 'ready',\n publishedSkillCount: catalog.publishedSkillCount.toString(),\n globalAssignmentCount: catalog.assignmentCounts.global.toString(),\n projectAssignmentCount: catalog.assignmentCounts.project.toString(),\n userAssignmentCount: catalog.assignmentCounts.user.toString(),\n ignoredSkillCount: filteredPublishedSkillsResult.ignoreState.ignoredSkillSlugs.length.toString(),\n },\n });\n\n await emitFetchOutcome('FETCH_SUCCESS');\n\n return {\n output: JSON.stringify(\n {\n ...catalog,\n status: 'ready',\n requestedDirectoryPath: filteredPublishedSkillsResult.directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(filteredPublishedSkillsResult.workspaceResolution),\n ignoredPublishedSkills: {\n scopeKey: filteredPublishedSkillsResult.ignoreState.scopeKey,\n count: filteredPublishedSkillsResult.ignoreState.ignoredSkillSlugs.length,\n },\n fetchedAt: filteredPublishedSkillsResult.fetchResult.fetchedAt,\n source: filteredPublishedSkillsResult.fetchResult.source,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n cacheCursor: getCatalogCursor(\n filteredPublishedSkillsResult.fetchResult.payload.skills,\n filteredPublishedSkillsResult.fetchResult.payload.catalogSkills,\n ),\n cacheTtlMs: CACHE_TTL_MS,\n message:\n args.refresh\n ? 'Catalog discovery refreshed from the backend. Provide `skill` for one identifier or prefer `skills` for comma/newline-separated multiple identifiers to fetch markdown bodies/details.'\n : 'Catalog discovery only. Cached results include deterministic revision cursors; pass `refresh: true` to force a backend refresh immediately. Provide `skill` for one identifier or prefer `skills` for comma/newline-separated multiple identifiers to fetch markdown bodies/details.',\n nextStep:\n 'Choose an active skill identifier from `skills` and call `opencode_wizard_published_skills_fetch` with `skill`; catalog-only skills must be installed before their bodies are fetchable.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'ready',\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n source: filteredPublishedSkillsResult.fetchResult.source,\n cacheCursor: getCatalogCursor(\n filteredPublishedSkillsResult.fetchResult.payload.skills,\n filteredPublishedSkillsResult.fetchResult.payload.catalogSkills,\n ),\n publishedSkillCount: catalog.publishedSkillCount.toString(),\n globalAssignmentCount: catalog.assignmentCounts.global.toString(),\n projectAssignmentCount: catalog.assignmentCounts.project.toString(),\n userAssignmentCount: catalog.assignmentCounts.user.toString(),\n ignoredSkillCount: filteredPublishedSkillsResult.ignoreState.ignoredSkillSlugs.length.toString(),\n },\n };\n }\n\n if (selection.selectedItems.length === 0) {\n await emitFetchOutcome('FETCH_FAILED');\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: 'not_found',\n requestedDirectoryPath: filteredPublishedSkillsResult.directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(filteredPublishedSkillsResult.workspaceResolution),\n requestedSkill: isSingleRequest ? requestedSkills[0] : undefined,\n requestedSkills,\n missingSkills: selection.missingIdentifiers,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n suggestions: isSingleRequest\n ? getIdentifierSuggestions(requestedSkills[0] ?? '', skillSuggestionCandidates)\n : undefined,\n missingSkillSuggestions: getMissingIdentifierSuggestions(\n selection.missingIdentifiers,\n skillSuggestionCandidates,\n ),\n availableSkills: filteredPublishedSkillsResult.fetchResult.payload.skills.map(toPublishedSkillSummary),\n ignoredPublishedSkills: {\n scopeKey: filteredPublishedSkillsResult.ignoreState.scopeKey,\n count: filteredPublishedSkillsResult.ignoreState.ignoredSkillSlugs.length,\n },\n nextStep:\n 'Retry with one suggested identifier, fetch the catalog with no args/refresh to inspect available skills, or install a catalog-only suggestion before fetching its body.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'not_found',\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n },\n };\n }\n\n let skillDetailResults = await Promise.all(\n selection.selectedItems.map((item) =>\n loadPublishedSkillDetail({\n workspaceResolution: filteredPublishedSkillsResult.workspaceResolution,\n item,\n signal: context.abort,\n useCache: !args.refresh,\n purpose: 'TOOL_FETCH',\n }),\n ),\n );\n\n if (skillDetailResults.some((result) => !result.ok && result.status === 'missing_auth')) {\n try {\n await startLoginCompletion('fetch').then(async (authState) => {\n await schedulePresenceStart(authState);\n });\n skillDetailResults = await Promise.all(\n selection.selectedItems.map((item) =>\n loadPublishedSkillDetail({\n workspaceResolution: filteredPublishedSkillsResult.workspaceResolution,\n item,\n signal: context.abort,\n useCache: false,\n purpose: 'TOOL_FETCH',\n }),\n ),\n );\n } catch {\n // Return the original detail failure after the login bootstrap attempt updates snapshot state.\n }\n }\n\n const failedSkillDetail = skillDetailResults.find((result) => !result.ok);\n\n if (failedSkillDetail && !failedSkillDetail.ok) {\n await emitFetchOutcome('FETCH_FAILED');\n return failedSkillDetail;\n }\n\n const skillDetails = skillDetailResults.map((result) => {\n if (!result.ok) {\n throw new Error('Published skill detail result unexpectedly missing after success guard.');\n }\n\n return result.detail;\n });\n\n if (isSingleRequest && skillDetails[0]) {\n const detail = skillDetails[0];\n\n context.metadata({\n title: `opencode-wizard published skill: ${detail.artifactName || detail.skillName}`,\n metadata: {\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n skillSlug: detail.skillSlug,\n version: detail.version,\n },\n });\n\n await emitFetchOutcome('FETCH_SUCCESS');\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n requestedDirectoryPath: filteredPublishedSkillsResult.directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(filteredPublishedSkillsResult.workspaceResolution),\n workspace: filteredPublishedSkillsResult.fetchResult.payload.workspace,\n fetchedAt: filteredPublishedSkillsResult.fetchResult.fetchedAt,\n source: filteredPublishedSkillsResult.fetchResult.source,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n skill: detail,\n },\n null,\n 2,\n ),\n metadata: {\n status: 'ready',\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n source: filteredPublishedSkillsResult.fetchResult.source,\n skillSlug: detail.skillSlug,\n },\n };\n }\n\n context.metadata({\n title: `opencode-wizard published skills fetch: ${skillDetails.length}`,\n metadata: {\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n requestedCount: requestedSkills.length.toString(),\n matchedCount: skillDetails.length.toString(),\n },\n });\n\n await emitFetchOutcome('FETCH_SUCCESS');\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n requestedDirectoryPath: filteredPublishedSkillsResult.directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(filteredPublishedSkillsResult.workspaceResolution),\n workspace: filteredPublishedSkillsResult.fetchResult.payload.workspace,\n fetchedAt: filteredPublishedSkillsResult.fetchResult.fetchedAt,\n source: filteredPublishedSkillsResult.fetchResult.source,\n requestedSkills,\n missingSkills: selection.missingIdentifiers,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n missingSkillSuggestions: getMissingIdentifierSuggestions(selection.missingIdentifiers, skillSuggestionCandidates),\n nextStep:\n selection.missingIdentifiers.length > 0\n ? 'Fetched matched skills. Retry missing identifiers with suggested active names, or inspect the no-arg catalog for catalog-only skills that need installation first.'\n : 'Use each fetched `skill.markdownDocument` as reference content for matched backend-published skills.',\n skills: skillDetails,\n },\n null,\n 2,\n ),\n metadata: {\n status: selection.missingIdentifiers.length > 0 ? 'partial' : 'ready',\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n source: filteredPublishedSkillsResult.fetchResult.source,\n matchedCount: skillDetails.length.toString(),\n },\n };\n };\n\n const executeWizardArtifactCatalogTool = async ({\n args,\n context,\n }: {\n args: WizardArtifactCatalogFetchArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n const artifactKind = toWizardArtifactKind(args.artifactKind);\n\n if (!artifactKind) {\n return buildUnsupportedWizardArtifactOutput({\n artifactKind: args.artifactKind ?? '',\n directoryPath,\n });\n }\n\n if (artifactKind === 'DESIGN_DOC') {\n const recommendationContext = normalizeRecommendationContext(args as ArgsWithRecommendationContext);\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const fetchResult = await fetchWizardArtifactsCatalog(\n input.worktree,\n config,\n workspaceResolution,\n artifactKind,\n context.abort,\n recommendationContext,\n clearPublishedSkillState,\n );\n\n if (!fetchResult.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: fetchResult.status,\n artifactKind,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n message: fetchResult.message,\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n },\n null,\n 2,\n ),\n metadata: { status: fetchResult.status, artifactKind, directoryPath, source: fetchResult.source },\n };\n }\n\n const catalog = toWizardArtifactCatalog(fetchResult.payload, {\n pluginId: PLUGIN_ID,\n availableTools: registeredTools,\n });\n const cacheCursor = getWizardArtifactCatalogCursor(\n fetchResult.payload.artifacts,\n toWizardArtifactCatalogCursorItems(fetchResult.payload.catalogArtifacts),\n );\n return {\n output: JSON.stringify(\n {\n ...catalog,\n status: 'ready',\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS,\n message:\n 'Generic artifact catalog discovery only. Full bodies/files require opencode_wizard_artifact_fetch with artifactKind and artifact identifiers.',\n nextStep:\n 'Choose an active artifact identifier from `artifacts` and call `opencode_wizard_artifact_fetch`; catalog-only artifacts must be installed before their bodies are fetchable.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'ready',\n artifactKind,\n artifactCount: catalog.artifactCount.toString(),\n ...toWorkspaceResolutionMetadata(workspaceResolution),\n source: fetchResult.source,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS.toString(),\n },\n };\n }\n\n const result = await executePublishedSkillsFetchTool({\n args: {\n directory: args.directory,\n refresh: args.refresh,\n recommendationContext: (args as ArgsWithRecommendationContext).recommendationContext,\n } as PublishedSkillFetchArgs,\n context,\n });\n return withWizardArtifactEnvelope(result, artifactKind);\n };\n\n const executeWizardArtifactFetchTool = async ({\n args,\n context,\n }: {\n args: WizardArtifactFetchArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n const artifactKind = toWizardArtifactKind(args.artifactKind);\n\n if (!artifactKind) {\n return buildUnsupportedWizardArtifactOutput({\n artifactKind: args.artifactKind ?? '',\n directoryPath,\n });\n }\n\n if (artifactKind === 'DESIGN_DOC') {\n const requestedArtifacts = parseRequestedSkillArgs({ skill: args.artifact, skills: args.artifacts });\n const recommendationContext = normalizeRecommendationContext(args as ArgsWithRecommendationContext);\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const fetchResult = await fetchWizardArtifactsCatalog(\n input.worktree,\n config,\n workspaceResolution,\n artifactKind,\n context.abort,\n recommendationContext,\n clearPublishedSkillState,\n );\n\n if (!fetchResult.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: fetchResult.status,\n artifactKind,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n message: fetchResult.message,\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n },\n null,\n 2,\n ),\n metadata: { status: fetchResult.status, artifactKind, directoryPath, source: fetchResult.source },\n };\n }\n\n const selection = selectWizardArtifacts(fetchResult.payload.artifacts, requestedArtifacts);\n const artifactSuggestionCandidates = getWizardArtifactSuggestionCandidates(\n fetchResult.payload.artifacts,\n fetchResult.payload.catalogArtifacts,\n );\n if (requestedArtifacts.length === 0) {\n const catalog = toWizardArtifactCatalog(fetchResult.payload, {\n pluginId: PLUGIN_ID,\n availableTools: registeredTools,\n });\n const cacheCursor = getWizardArtifactCatalogCursor(\n fetchResult.payload.artifacts,\n toWizardArtifactCatalogCursorItems(fetchResult.payload.catalogArtifacts),\n );\n return {\n output: JSON.stringify(\n {\n ...catalog,\n status: 'ready',\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS,\n message: 'Provide artifact or artifacts to fetch artifact body/files.',\n nextStep:\n 'Choose an active artifact identifier from `artifacts` and call `opencode_wizard_artifact_fetch`; install catalog-only artifacts before fetching their bodies.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'ready',\n artifactKind,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS.toString(),\n ...toWorkspaceResolutionMetadata(workspaceResolution),\n },\n };\n }\n\n if (selection.selectedItems.length === 0) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: 'not_found',\n artifactKind,\n requestedArtifact: requestedArtifacts.length === 1 ? requestedArtifacts[0] : undefined,\n requestedArtifacts,\n missingArtifacts: selection.missingIdentifiers,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n suggestions:\n requestedArtifacts.length === 1\n ? getIdentifierSuggestions(requestedArtifacts[0] ?? '', artifactSuggestionCandidates)\n : undefined,\n missingArtifactSuggestions: getMissingIdentifierSuggestions(\n selection.missingIdentifiers,\n artifactSuggestionCandidates,\n ),\n availableArtifacts: fetchResult.payload.artifacts.map(toWizardArtifactSummary),\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n nextStep:\n 'Retry with one suggested identifier, fetch the artifact catalog to inspect available artifacts, or install a catalog-only suggestion before fetching its body.',\n },\n null,\n 2,\n ),\n metadata: { status: 'not_found', artifactKind, ...toWorkspaceResolutionMetadata(workspaceResolution) },\n };\n }\n\n const detailResults = await Promise.all(\n selection.selectedItems.map((item) =>\n loadWizardArtifactDetail({\n workspaceResolution,\n item,\n signal: context.abort,\n useCache: !args.refresh,\n purpose: 'TOOL_FETCH',\n artifactKind,\n }),\n ),\n );\n const failedDetail = detailResults.find((result) => !result.ok);\n if (failedDetail && !failedDetail.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: failedDetail.result.status,\n artifactKind,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n message: failedDetail.result.message,\n fetchedAt: failedDetail.result.fetchedAt,\n source: failedDetail.result.source,\n },\n null,\n 2,\n ),\n metadata: { status: failedDetail.result.status, artifactKind, ...toWorkspaceResolutionMetadata(workspaceResolution) },\n };\n }\n\n const details = detailResults.map((result, index) => {\n if (!result.ok) throw new Error('Wizard artifact detail result unexpectedly missing after success guard.');\n return toWizardArtifactDetail({\n ...selection.selectedItems[index]!,\n artifactVersion: result.artifact,\n });\n });\n const cacheCursor = getWizardArtifactCatalogCursor(\n selection.selectedItems,\n toWizardArtifactCatalogCursorItems(fetchResult.payload.catalogArtifacts),\n );\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n artifactKind,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n workspace: fetchResult.payload.workspace,\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS,\n requestedArtifacts,\n missingArtifacts: selection.missingIdentifiers,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n missingArtifactSuggestions: getMissingIdentifierSuggestions(\n selection.missingIdentifiers,\n artifactSuggestionCandidates,\n ),\n nextStep:\n selection.missingIdentifiers.length > 0\n ? 'Fetched matched artifacts. Retry missing identifiers with suggested active names, or inspect the catalog for catalog-only artifacts that need installation first.'\n : 'Use the fetched artifact markdown as reference content for matched backend-published artifacts.',\n artifacts: details,\n },\n null,\n 2,\n ),\n metadata: {\n status: selection.missingIdentifiers.length > 0 ? 'partial' : 'ready',\n artifactKind,\n matchedCount: details.length.toString(),\n cacheTtlMs: CACHE_TTL_MS.toString(),\n ...toWorkspaceResolutionMetadata(workspaceResolution),\n },\n };\n }\n\n const result = await executePublishedSkillsFetchTool({\n args: {\n skill: args.artifact,\n skills: args.artifacts,\n directory: args.directory,\n refresh: args.refresh,\n recommendationContext: (args as ArgsWithRecommendationContext).recommendationContext,\n } as PublishedSkillFetchArgs,\n context,\n });\n return withWizardArtifactEnvelope(result, artifactKind);\n };\n\n const executeStatusTool = async ({ args, context }: { args: PluginStatusArgs; context: ToolExecuteContext }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n let snapshot = await resolvePluginStatusSnapshot({\n worktree: input.worktree,\n directory: requestedDirectory,\n signal: context.abort,\n registeredTools,\n });\n\n if (snapshot.status === 'missing_auth') {\n try {\n await startLoginCompletion('status').then(async (authState) => {\n await schedulePresenceStart(authState);\n });\n snapshot = await resolvePluginStatusSnapshot({\n worktree: input.worktree,\n directory: requestedDirectory,\n signal: context.abort,\n registeredTools,\n });\n } catch {\n // Keep returning the safe missing-auth snapshot when interactive login is cancelled or fails.\n }\n }\n\n if (snapshot.status === 'ready') {\n await scheduleInteractivePresenceStart();\n }\n\n const metadata = toPluginStatusMetadata(snapshot);\n\n context.metadata({\n title: `opencode-wizard status: ${snapshot.status} / auth ${snapshot.authState.status}`,\n metadata,\n });\n\n return {\n output: JSON.stringify(toAiFacingPluginStatusSnapshot(snapshot), null, 2),\n metadata,\n };\n };\n\n const executePublishedSkillPreferenceTool = async ({\n args,\n context,\n }: {\n args: PublishedSkillPreferenceArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = directoryPath;\n const requestedSkill = typeof args.skill === 'string' ? args.skill.trim() : '';\n\n const emitPreferenceOutcome = async (\n event: Extract<PluginActionEventType, 'PREFERENCE_SUCCESS' | 'PREFERENCE_FAILED'>,\n ): Promise<void> => {\n await emitActionEventForCurrentSession({\n event,\n directoryPath,\n });\n };\n\n try {\n if (!requestedSkill) {\n throw new Error('Published skill preference tool requires a non-empty skill slug, artifact name, or skill name.');\n }\n\n if (typeof args.action !== 'string') {\n throw new Error('Published skill preference tool requires an action: install, uninstall, ignore, or unignore.');\n }\n\n const action = toPublishedSkillPreferenceAction(args.action);\n const catalogResult = await loadPublishedSkillCatalog({\n directory: requestedDirectory,\n useCache: true,\n signal: context.abort,\n recommendationContext: null,\n });\n\n if (!catalogResult.fetchResult.ok) {\n await emitPreferenceOutcome('PREFERENCE_FAILED');\n return toFetchFailureOutput({\n worktree: input.worktree,\n config,\n publishedSkillsResult: catalogResult,\n loginBootstrapSnapshot: loginBootstrap.snapshot,\n });\n }\n\n const selectableCatalogSkills: PublishedSkillCatalogItem[] = catalogResult.fetchResult.payload.catalogSkills.map(\n (item) => ({\n ...item,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n }),\n );\n const preferenceSelection = selectPublishedSkills(\n {\n ...catalogResult.fetchResult.payload,\n skills: [\n ...catalogResult.fetchResult.payload.skills,\n ...selectableCatalogSkills,\n ...catalogResult.fetchResult.payload.userPreferences.ignoredSkills,\n ],\n },\n [requestedSkill],\n );\n\n const matchedSkill = preferenceSelection.selectedItems[0];\n if (!matchedSkill) {\n throw new Error(`Published skill preference target was not found for identifier: ${requestedSkill}.`);\n }\n\n const skillSlug = matchedSkill.skill.slug;\n const preferenceState =\n action === 'ignore' || action === 'unignore'\n ? await setPublishedSkillIgnored({\n worktree: input.worktree,\n directory: requestedDirectory,\n skillSlug,\n ignored: action === 'ignore',\n preferenceScope: toPublishedSkillPreferenceScope(args.preferenceScope, 'project'),\n })\n : await setPublishedSkillInstalled({\n worktree: input.worktree,\n directory: requestedDirectory,\n skillSlug,\n installed: action === 'install',\n preferenceScope: toPublishedSkillPreferenceScope(args.preferenceScope, 'project'),\n });\n\n await scheduleInteractivePresenceStart();\n await emitPreferenceOutcome('PREFERENCE_SUCCESS');\n\n const metadata = {\n status: 'updated',\n skillSlug,\n action,\n directoryPath,\n ignoredSkillCount: preferenceState.ignoredSkillSlugs.length.toString(),\n };\n\n context.metadata({\n title: `opencode-wizard published skill preference: ${action} ${skillSlug}`,\n metadata,\n });\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'updated',\n requestedIdentifier: requestedSkill,\n skillSlug,\n action,\n requestedDirectoryPath: directoryPath,\n preferenceState,\n message:\n 'Published skill preference updated through the shared server-backed API; TUI views will reflect this after refresh.',\n },\n null,\n 2,\n ),\n metadata,\n };\n } catch (error) {\n await emitPreferenceOutcome('PREFERENCE_FAILED');\n const message = error instanceof Error ? error.message : 'Unknown published skill preference failure.';\n const metadata = {\n status: 'preference_failed',\n directoryPath,\n };\n\n context.metadata({\n title: 'opencode-wizard published skill preference failed',\n metadata,\n });\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'preference_failed',\n requestedIdentifier: requestedSkill,\n requestedDirectoryPath: directoryPath,\n message,\n guidance:\n 'The preference tool remains available. Check opencode_wizard_status for safe auth/catalog state, rerun fetch/status to bootstrap auth, and retry after catalog status is ready.',\n },\n null,\n 2,\n ),\n metadata,\n };\n }\n };\n\n const executeWizardArtifactPreferenceTool = async ({\n args,\n context,\n }: {\n args: WizardArtifactPreferenceArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n const artifactKind = toWizardArtifactKind(args.artifactKind);\n\n if (!artifactKind) {\n return buildUnsupportedWizardArtifactOutput({\n artifactKind: args.artifactKind ?? '',\n directoryPath,\n });\n }\n\n if (artifactKind === 'DESIGN_DOC') {\n try {\n const action = toPublishedSkillPreferenceAction(args.action);\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const response = await fetchPublishedSkillsGraphQl<{ setWizardArtifactPreference: WizardArtifactUserPreferences }>({\n worktree: input.worktree,\n config,\n query: SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION,\n variables: {\n input: {\n workspaceSlug: workspaceResolution.workspaceSlug,\n repositoryUrl: workspaceResolution.repositoryUrl,\n directoryPath: workspaceResolution.directoryPath,\n artifactKind,\n artifactSlug: args.artifact.trim(),\n preferenceScope: toPublishedSkillPreferenceScope(args.preferenceScope, 'project') === 'global' ? 'GLOBAL' : 'WORKSPACE',\n installed: action === 'install' ? true : action === 'uninstall' ? false : undefined,\n ignored: action === 'ignore' ? true : action === 'unignore' ? false : undefined,\n },\n },\n signal: context.abort,\n onAuthStateChanged: clearPublishedSkillState,\n });\n\n if (!response.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: response.result.status,\n artifactKind,\n requestedIdentifier: args.artifact,\n requestedDirectoryPath: directoryPath,\n message: response.result.message,\n fetchedAt: response.result.fetchedAt,\n source: response.result.source,\n },\n null,\n 2,\n ),\n metadata: { status: response.result.status, artifactKind, directoryPath },\n };\n }\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'updated',\n artifactKind,\n requestedIdentifier: args.artifact,\n action,\n requestedDirectoryPath: directoryPath,\n preferenceState: response.data.setWizardArtifactPreference,\n message: 'Wizard artifact preference updated through the generic backend API.',\n },\n null,\n 2,\n ),\n metadata: { status: 'updated', artifactKind, directoryPath, action },\n };\n } catch (error) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'preference_failed',\n artifactKind,\n requestedIdentifier: args.artifact,\n requestedDirectoryPath: directoryPath,\n message: error instanceof Error ? error.message : 'Unknown wizard artifact preference failure.',\n },\n null,\n 2,\n ),\n metadata: { status: 'preference_failed', artifactKind, directoryPath },\n };\n }\n }\n\n const result = await executePublishedSkillPreferenceTool({\n args: {\n skill: args.artifact,\n action: args.action,\n preferenceScope: args.preferenceScope,\n directory: args.directory,\n },\n context,\n });\n return withWizardArtifactEnvelope(result, artifactKind);\n };\n\n const createEditorWorkspaceSkillAssignment = async ({\n skillSlug,\n skillVersionId,\n workspaceResolution,\n signal,\n }: {\n skillSlug: string | null;\n skillVersionId: string | null;\n workspaceResolution: WorkspaceResolution;\n signal: AbortSignal;\n }): Promise<EditorSkillWorkspaceAssignmentResult> => {\n if (!skillSlug || !skillVersionId) {\n return {\n status: 'skipped',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspaceResolution.workspaceSlug,\n message: 'Skill creation did not return a skill slug or version id, so no workspace assignment was created.',\n };\n }\n\n if (!workspaceResolution.workspaceSlug) {\n return {\n status: 'skipped',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: null,\n message: 'No resolved workspace slug was available for this directory context.',\n };\n }\n\n const lookupResponse = await fetchPublishedSkillsGraphQl<EditorSkillWorkspaceAssignmentLookupResponse>({\n worktree: input.worktree,\n config,\n query: EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY,\n variables: {\n skillSlug,\n workspaceSlug: workspaceResolution.workspaceSlug,\n },\n signal,\n operationName: 'editorSkillWorkspaceAssignmentLookup',\n });\n\n if (!lookupResponse.ok) {\n return {\n status: 'failed',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspaceResolution.workspaceSlug,\n message: lookupResponse.result.message,\n };\n }\n\n const { skill, workspace } = lookupResponse.data.admin;\n if (!skill) {\n return {\n status: 'failed',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspaceResolution.workspaceSlug,\n message: `Created skill ${skillSlug} could not be resolved for workspace assignment.`,\n };\n }\n\n if (!workspace) {\n return {\n status: 'skipped',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspaceResolution.workspaceSlug,\n message: `Resolved workspace ${workspaceResolution.workspaceSlug} was not found in the backend.`,\n };\n }\n\n const assignmentResponse = await fetchPublishedSkillsGraphQl<BulkCreateSkillAssignmentsResponse>({\n worktree: input.worktree,\n config,\n query: BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION,\n variables: {\n input: {\n scopePathAssignments: [\n {\n workspaceId: workspace.id,\n skillId: skill.id,\n skillVersionId,\n assignmentType: 'PATH',\n scopePath: workspaceResolution.directoryPath,\n includeChildren: true,\n status: 'ACTIVE',\n notes: 'Created by opencode-wizard editor skill publishing.',\n },\n ],\n },\n },\n signal,\n operationName: 'bulkCreateSkillAssignments',\n });\n\n if (!assignmentResponse.ok) {\n return {\n status: 'failed',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspace.slug,\n workspaceId: workspace.id,\n message: assignmentResponse.result.message,\n };\n }\n\n const assignmentResult = assignmentResponse.data.admin.bulkCreateSkillAssignments;\n const [createdAssignment] = assignmentResult.scopePathAssignments;\n if (createdAssignment) {\n return {\n status: 'created',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspace.slug,\n workspaceId: workspace.id,\n assignmentId: createdAssignment.id,\n };\n }\n\n const [skippedAssignment] = assignmentResult.skippedScopePathAssignments;\n if (skippedAssignment) {\n return {\n status: 'already_exists',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspace.slug,\n workspaceId: workspace.id,\n assignmentId: skippedAssignment.id,\n };\n }\n\n const conflictMessage = assignmentResult.conflicts.map((conflict) => conflict.message).join('; ');\n return {\n status: 'failed',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspace.slug,\n workspaceId: workspace.id,\n message: conflictMessage || 'Workspace assignment was not created and no existing matching assignment was returned.',\n };\n };\n\n const executeEditorCreateOrUpdateSkillMarkdown = async ({\n markdownContent,\n context,\n source,\n requestedSkillSlug,\n }: {\n markdownContent: string;\n context: ToolExecuteContext;\n source: 'direct_markdown' | 'seed_file';\n requestedSkillSlug?: string;\n }) => {\n const authState = await resolveStoredAuthState(input.worktree, config);\n if (!authState || authState.role !== 'EDITOR') {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'forbidden',\n skillSlug: requestedSkillSlug ?? null,\n source,\n message:\n 'This tool requires EDITOR role. Your current session does not have the required editor permission.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'forbidden',\n role: authState?.role ?? 'none',\n },\n };\n }\n\n if (!markdownContent.trim()) {\n throw new Error('Editor skill create/update requires non-empty markdownContent.');\n }\n\n const requestedDirectory = normalizeDirectoryArg(context.directory, undefined);\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const directoryPath = workspaceResolution.directoryPath;\n lastInteractiveDirectoryPath = directoryPath;\n\n const response = await fetchPublishedSkillsGraphQl<CreateOrUpdateSkillFromMarkdownResponse>({\n worktree: input.worktree,\n config,\n query: CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION,\n variables: {\n markdownContent,\n },\n signal: context.abort,\n });\n\n if (!response.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'request_failed',\n skillSlug: requestedSkillSlug ?? null,\n source,\n message: response.result.message,\n },\n null,\n 2,\n ),\n metadata: {\n status: 'request_failed',\n skillSlug: requestedSkillSlug ?? '',\n directoryPath,\n },\n };\n }\n\n const payload = response.data.admin.createOrUpdateSkillFromMarkdown;\n const workspaceAssignment = payload.success\n ? await createEditorWorkspaceSkillAssignment({\n skillSlug: payload.skillSlug,\n skillVersionId: payload.skillVersionId,\n workspaceResolution,\n signal: context.abort,\n })\n : null;\n\n if (payload.success) {\n clearPublishedSkillState();\n }\n\n await scheduleInteractivePresenceStart();\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: payload.success ? 'created_or_updated' : 'create_or_update_failed',\n source,\n skillSlug: payload.skillSlug,\n skillVersionId: payload.skillVersionId,\n artifactSlug: payload.artifactSlug,\n artifactVersionId: payload.artifactVersionId,\n workspaceAssignment,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n errors: payload.errors,\n message:\n source === 'direct_markdown'\n ? 'Skill markdown was sent directly to the backend; no local seed file was required. Workspace assignments are created when a backend workspace resolves for the directory.'\n : 'Local seed SKILL.md was published through the backend skill markdown mutation. Workspace assignments are created when a backend workspace resolves for the directory.',\n },\n null,\n 2,\n ),\n metadata: {\n status: payload.success ? 'created_or_updated' : 'create_or_update_failed',\n skillSlug: payload.skillSlug,\n skillVersionId: payload.skillVersionId ?? '',\n source,\n directoryPath,\n workspaceAssignmentStatus: workspaceAssignment?.status ?? '',\n workspaceAssignmentId: workspaceAssignment?.assignmentId ?? '',\n },\n };\n };\n\n const executeEditorCreateOrUpdateSkillTool = async ({\n args,\n context,\n }: {\n args: EditorCreateOrUpdateSkillArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = directoryPath;\n\n return executeEditorCreateOrUpdateSkillMarkdown({\n markdownContent: args.markdownContent,\n context: { ...context, directory: requestedDirectory },\n source: 'direct_markdown',\n });\n };\n\n const executeEditorPublishSkillTool = async ({\n args,\n context,\n }: {\n args: EditorPublishSkillArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedSkillSlug = args.skillSlug.trim();\n if (!requestedSkillSlug) {\n throw new Error('Editor publish requires a non-empty skill slug.');\n }\n\n const authState = await resolveStoredAuthState(input.worktree, config);\n if (!authState || authState.role !== 'EDITOR') {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'forbidden',\n skillSlug: requestedSkillSlug,\n source: 'seed_file',\n message:\n 'This tool requires EDITOR role. Your current session does not have the required editor permission.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'forbidden',\n role: authState?.role ?? 'none',\n },\n };\n }\n\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = directoryPath;\n\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const repositoryRoot = workspaceResolution.repositoryRoot;\n\n const skillFilePath = path.resolve(\n repositoryRoot,\n config.rootSkillSeedPath,\n requestedSkillSlug,\n 'SKILL.md',\n );\n\n let markdownContent: string;\n try {\n markdownContent = await fs.readFile(skillFilePath, 'utf8');\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'file_not_found',\n skillSlug: requestedSkillSlug,\n skillFilePath,\n message: `Skill markdown file not found at ${skillFilePath}: ${message}`,\n },\n null,\n 2,\n ),\n metadata: {\n status: 'file_not_found',\n skillSlug: requestedSkillSlug,\n directoryPath,\n },\n };\n }\n\n return executeEditorCreateOrUpdateSkillMarkdown({\n markdownContent,\n context: { ...context, directory: requestedDirectory },\n source: 'seed_file',\n requestedSkillSlug,\n });\n };\n\n const executeWizardArtifactImportTool = async ({\n args,\n context,\n }: {\n args: WizardArtifactImportArgs;\n context: ToolExecuteContext;\n }) => {\n const authState = await resolveStoredAuthState(input.worktree, config);\n const importPlan = planWizardArtifactImport({\n artifactKind: args.artifactKind,\n source: args.source,\n slug: args.slug,\n skill: args.skill,\n });\n\n if (!authState || authState.role !== 'EDITOR') {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'forbidden',\n artifactKind: importPlan.artifactKind,\n source: importPlan.source,\n message: 'This tool requires EDITOR role. Your current session does not have the required editor permission.',\n },\n null,\n 2,\n ),\n metadata: { status: 'forbidden', role: authState?.role ?? 'none' },\n };\n }\n\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = directoryPath;\n\n let importSource;\n try {\n importSource = await fetchWizardArtifactImportSource({\n artifactKind: args.artifactKind,\n source: args.source,\n slug: args.slug,\n skill: args.skill,\n signal: context.abort,\n });\n } catch (error) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'source_fetch_failed',\n artifactKind: importPlan.artifactKind,\n source: importPlan.source,\n candidateUrls: importPlan.candidateUrls,\n message: error instanceof Error ? error.message : 'Unknown import source fetch failure.',\n },\n null,\n 2,\n ),\n metadata: { status: 'source_fetch_failed', artifactKind: importPlan.artifactKind, directoryPath },\n };\n }\n\n const response = await fetchPublishedSkillsGraphQl<ImportWizardArtifactSnapshotResponse>({\n worktree: input.worktree,\n config,\n query: IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION,\n variables: {\n input: {\n artifactKind: importSource.artifactKind,\n slug: importSource.slug,\n name: args.name,\n summary: args.summary,\n markdownContent: importSource.markdownContent,\n source: importSource.fetchedUrl,\n sourceSnapshotRef: importSource.sourceRef,\n },\n },\n signal: context.abort,\n });\n\n if (!response.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'request_failed',\n artifactKind: importSource.artifactKind,\n source: importSource.source,\n fetchedUrl: importSource.fetchedUrl,\n message: response.result.message,\n },\n null,\n 2,\n ),\n metadata: { status: 'request_failed', artifactKind: importSource.artifactKind, directoryPath },\n };\n }\n\n const payload = response.data.importWizardArtifactSnapshot;\n await scheduleInteractivePresenceStart();\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: payload.success ? 'imported' : 'import_failed',\n artifactKind: importSource.artifactKind,\n artifactSlug: payload.artifactSlug,\n artifactVersionId: payload.artifactVersionId,\n skillSlug: payload.skillSlug,\n skillVersionId: payload.skillVersionId,\n source: importSource.source,\n fetchedUrl: importSource.fetchedUrl,\n sourceSnapshotRef: importSource.sourceRef,\n errors: payload.errors,\n message: 'Imported backend artifact is now the wizard/plugin runtime authority; no project files were written.',\n },\n null,\n 2,\n ),\n metadata: {\n status: payload.success ? 'imported' : 'import_failed',\n artifactKind: importSource.artifactKind,\n artifactSlug: payload.artifactSlug ?? '',\n artifactVersionId: payload.artifactVersionId ?? '',\n directoryPath,\n },\n };\n };\n\n const { sharedTools, editorOnlyTools } = createPublishedSkillToolDefinitions(tool, {\n fetchPublishedSkills: (args, context) => executePublishedSkillsFetchTool({ args, context }),\n fetchWizardArtifactCatalog: (args, context) => executeWizardArtifactCatalogTool({ args, context }),\n fetchWizardArtifacts: (args, context) => executeWizardArtifactFetchTool({ args, context }),\n updatePublishedSkillPreference: (args, context) => executePublishedSkillPreferenceTool({ args, context }),\n updateWizardArtifactPreference: (args, context) => executeWizardArtifactPreferenceTool({ args, context }),\n getStatus: (args, context) => executeStatusTool({ args, context }),\n createOrUpdateEditorSkill: (args, context) => executeEditorCreateOrUpdateSkillTool({ args, context }),\n publishEditorSkill: (args, context) => executeEditorPublishSkillTool({ args, context }),\n importWizardArtifact: (args, context) => executeWizardArtifactImportTool({ args, context }),\n });\n\n return {\n tool: registeredTools.includes('opencode_wizard_editor_create_or_update_skill')\n ? { ...sharedTools, ...editorOnlyTools }\n : sharedTools,\n 'experimental.chat.system.transform': async (_hookInput, output) => {\n let publishedSkillsResult = await loadPublishedSkillCatalog({\n directory: input.directory,\n useCache: true,\n signal: AbortSignal.timeout(5_000),\n recommendationContext: null,\n });\n\n if (!publishedSkillsResult.fetchResult.ok && publishedSkillsResult.fetchResult.status === 'missing_auth') {\n try {\n await startLoginCompletion('status').then(async (authState) => {\n await schedulePresenceStart(authState);\n });\n publishedSkillsResult = await loadPublishedSkillCatalog({\n directory: input.directory,\n useCache: false,\n signal: AbortSignal.timeout(5_000),\n recommendationContext: null,\n });\n } catch {\n const loginMessage = loginBootstrap.snapshot.message\n ? ` Last login status: ${loginBootstrap.snapshot.message}`\n : '';\n output.system.push(\n `opencode-wizard plugin stored auth is missing, expired, or rejected. Startup browser login was started but did not complete successfully.${loginMessage} Use opencode_wizard_status or opencode_wizard_published_skills_fetch to retry authentication when published skills are needed. No tokens are exposed.`,\n );\n return;\n }\n\n if (!publishedSkillsResult.fetchResult.ok) {\n output.system.push(\n `opencode-wizard plugin startup login completed, but published skills are still unavailable: ${publishedSkillsResult.fetchResult.message} No tokens are exposed.`,\n );\n return;\n }\n }\n\n if (publishedSkillsResult.fetchResult.ok) {\n await scheduleInteractivePresenceStart();\n }\n\n const filteredPublishedSkillsResult = await filterIgnoredPublishedSkills(config, publishedSkillsResult);\n const systemNote = buildSystemNote(filteredPublishedSkillsResult, config, []);\n\n if (!systemNote) return;\n\n output.system.push(systemNote);\n },\n };\n};\n\nexport default {\n id: PLUGIN_ID,\n server: OpencodeWizardSkillsPlugin,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["fs","path","BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION","CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION","EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY","IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION","SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION","createPublishedSkillToolDefinitions","hasPrivilegedWizardToolRole","resolveAvailableTools","resolveStoredAuthState","toAuthState","writeAuthState","resolveConfig","createPluginSession","openBrowser","startLoginFlow","fetchPublishedSkillDetail","fetchPublishedSkillsCatalog","fetchPublishedSkillsGraphQl","fetchWizardArtifactDetail","fetchWizardArtifactsCatalog","hydrateStoredAuthStateRole","maybePersistWorkspaceSlugFromCatalog","normalizeAbsolutePath","emitPluginActionEvent","emitPresenceEvent","normalizeDirectoryArg","normalizeRepositoryPath","resolveWorkspace","toWorkspaceResolutionMetadata","toWorkspaceResolutionOutput","parseRequestedSkillArgs","selectPublishedSkills","toInstallableSkillSummary","toPublishedSkillDetail","toPublishedSkillSummary","toWizardArtifactCatalog","toWizardArtifactDetail","toWizardArtifactSummary","CACHE_TTL_MS","LOGIN_TIMEOUT_MS","OIDC_CALLBACK_URL","PLUGIN_ID","PRESENCE_SHUTDOWN_SIGNALS","PRESENCE_SIGNAL_EXIT_CODES","NATIVE_SKILLS_URL_COMPATIBILITY","buildSystemNote","filterIgnoredPublishedSkills","resolvePluginStatusSnapshot","toAiFacingPluginStatusSnapshot","toFetchFailureOutput","toPluginStatusMetadata","toPublishedSkillCatalog","createIdleLoginBootstrapSnapshot","fetchWizardArtifactImportSource","planWizardArtifactImport","getCatalogCacheKey","resolvePublishedSkillPreferenceCacheContext","setPublishedSkillIgnored","setPublishedSkillInstalled","toPublishedSkillPreferenceAction","toPublishedSkillPreferenceScope","toPluginAuthStateSummary","importOpencodePluginModule","Function","resolvePluginStatusSnapshotWithAuthBootstrap","getDetailCacheKey","catalogCacheKey","skillVersionId","revision","JSON","stringify","getPublishedSkillRevision","item","publishedArtifact","checksum","updatedAtCursor","publishedAt","getCatalogCursor","items","catalogItems","map","assignmentSource","assignmentType","scopePath","includeChildren","sort","join","getWizardArtifactRevision","artifactVersion","getWizardArtifactCatalogCursor","toWizardArtifactCatalogCursorItems","getDetailInflightKey","purpose","SUPPORTED_WIZARD_ARTIFACT_KINDS","DESIGN_DOC_UNSUPPORTED_MESSAGE","toWizardArtifactKind","value","normalized","trim","toUpperCase","replace","buildUnsupportedWizardArtifactOutput","artifactKind","directoryPath","output","pluginId","runtimeMode","status","supportedArtifactKinds","requestedDirectoryPath","message","metadata","withWizardArtifactEnvelope","result","outputResult","parse","compatibilityAliases","matchesWizardArtifactIdentifier","identifier","normalizedIdentifier","toLowerCase","artifact","slug","name","frontmatterName","id","selectWizardArtifacts","identifiers","selectedItems","filter","some","missingIdentifiers","MAX_IDENTIFIER_SUGGESTIONS","RECOMMENDATION_METADATA_NOTE","normalizeRecommendationContext","args","recommendationContext","normalizeSuggestionIdentifier","normalize","getEditDistance","left","right","length","previous","Array","from","_","index","leftIndex","current","rightIndex","substitutionCost","Math","min","splice","getSuggestionScore","requested","candidate","normalizedRequested","normalizedCandidate","includes","distance","threshold","max","ceil","dedupeSuggestionCandidates","candidates","seen","Set","key","has","add","getIdentifierSuggestions","requestedIdentifier","score","source","localeCompare","slice","canonicalIdentifier","matchedIdentifier","label","getSkillSuggestionCandidates","payload","skills","flatMap","summary","skillSlug","artifactName","skillName","catalogSkills","getWizardArtifactSuggestionCandidates","artifactSlug","getMissingIdentifierSuggestions","suggestions","OpencodeWizardSkillsPlugin","input","tool","config","worktree","workspacePath","cache","Map","catalogInflight","detailCache","wizardArtifactDetailCache","detailInflight","wizardArtifactDetailInflight","initialAuthState","signal","AbortSignal","timeout","onAuthStateChanged","clearPublishedSkillState","registeredTools","role","loginBootstrap","promise","snapshot","lastAuthenticatedAuthState","didEmitStart","didScheduleStop","presenceStartPromise","presenceStopPromise","lastInteractiveDirectoryPath","resolveActionAuthState","storedAuthState","emitActionEventForCurrentSession","event","authState","schedulePresenceStart","Promise","resolve","all","undefined","then","schedulePresenceStop","catch","scheduleInteractivePresenceStart","process","once","shutdownSignal","finally","exit","clear","persistAuthState","session","authStatePath","startLoginCompletion","trigger","startedAt","Date","toISOString","expiresAt","browserUrl","browserOpenError","email","loginPromise","loginSignal","loginStart","callbackPayload","callbackPromise","Error","state","expectedState","pluginSession","code","codeVerifier","redirectUri","error","closeCallbackServer","loadPublishedSkillCatalog","directory","useCache","workspaceResolution","preferenceContext","cacheKey","cached","get","now","fetchResult","inflight","requestPromise","resolution","set","cursor","ok","fetchedAt","delete","loadPublishedSkillDetail","itemRevision","skillVersion","inflightKey","detail","detailResult","artifactVersionId","requestedSkillVersionId","requestedArtifactVersionId","graphQlErrors","loadWizardArtifactDetail","inflightResult","executePublishedSkillsFetchTool","context","requestedDirectory","requestedSkills","fetchActionDirectoryPath","emitFetchOutcome","publishedSkillsResult","refresh","abort","loginBootstrapSnapshot","filteredPublishedSkillsResult","selection","isSingleRequest","skillSuggestionCandidates","catalog","title","publishedSkillCount","toString","globalAssignmentCount","assignmentCounts","global","projectAssignmentCount","project","userAssignmentCount","user","ignoredSkillCount","ignoreState","ignoredSkillSlugs","ignoredPublishedSkills","scopeKey","count","recommendationNote","cacheCursor","cacheTtlMs","nextStep","requestedSkill","missingSkills","missingSkillSuggestions","availableSkills","skillDetailResults","failedSkillDetail","find","skillDetails","version","workspace","skill","requestedCount","matchedCount","executeWizardArtifactCatalogTool","availableTools","artifacts","catalogArtifacts","artifactCount","executeWizardArtifactFetchTool","requestedArtifacts","artifactSuggestionCandidates","requestedArtifact","missingArtifacts","missingArtifactSuggestions","availableArtifacts","detailResults","failedDetail","details","executeStatusTool","executePublishedSkillPreferenceTool","emitPreferenceOutcome","action","catalogResult","selectableCatalogSkills","preferenceSelection","userPreferences","ignoredSkills","matchedSkill","preferenceState","ignored","preferenceScope","installed","guidance","executeWizardArtifactPreferenceTool","response","query","variables","workspaceSlug","repositoryUrl","data","setWizardArtifactPreference","createEditorWorkspaceSkillAssignment","lookupResponse","operationName","admin","assignmentResponse","scopePathAssignments","workspaceId","skillId","notes","assignmentResult","bulkCreateSkillAssignments","createdAssignment","assignmentId","skippedAssignment","skippedScopePathAssignments","conflictMessage","conflicts","conflict","executeEditorCreateOrUpdateSkillMarkdown","markdownContent","requestedSkillSlug","createOrUpdateSkillFromMarkdown","workspaceAssignment","success","errors","workspaceAssignmentStatus","workspaceAssignmentId","executeEditorCreateOrUpdateSkillTool","executeEditorPublishSkillTool","repositoryRoot","skillFilePath","rootSkillSeedPath","readFile","executeWizardArtifactImportTool","importPlan","importSource","candidateUrls","fetchedUrl","sourceSnapshotRef","sourceRef","importWizardArtifactSnapshot","sharedTools","editorOnlyTools","fetchPublishedSkills","fetchWizardArtifactCatalog","fetchWizardArtifacts","updatePublishedSkillPreference","updateWizardArtifactPreference","getStatus","createOrUpdateEditorSkill","publishEditorSkill","importWizardArtifact","experimental.chat.system.transform","_hookInput","loginMessage","system","push","systemNote","server"],"sources":["../../src/server/runtime.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport {\n BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION,\n CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION,\n EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY,\n IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION,\n SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION,\n} from '../graphql-operations.js';\nimport {\n createPublishedSkillToolDefinitions,\n hasPrivilegedWizardToolRole,\n resolveAvailableTools,\n type EditorCreateOrUpdateSkillArgs,\n type EditorPublishSkillArgs,\n type PluginStatusArgs,\n type PublishedSkillFetchArgs,\n type PublishedSkillPreferenceArgs,\n type ToolExecuteContext,\n type WizardArtifactCatalogFetchArgs,\n type WizardArtifactFetchArgs,\n type WizardArtifactKind,\n type WizardArtifactImportArgs,\n type WizardArtifactPreferenceArgs,\n} from '../plugin-tools.js';\nimport {\n resolveStoredAuthState,\n toAuthState,\n writeAuthState,\n} from './auth-store.js';\nimport { resolveConfig } from './config.js';\nexport { resolveConfig } from './config.js';\nimport { createPluginSession, openBrowser, startLoginFlow } from './auth-flow.js';\nimport {\n fetchPublishedSkillDetail,\n fetchPublishedSkillsCatalog,\n fetchPublishedSkillsGraphQl,\n fetchWizardArtifactDetail,\n fetchWizardArtifactsCatalog,\n hydrateStoredAuthStateRole,\n maybePersistWorkspaceSlugFromCatalog,\n} from './client.js';\nimport { normalizeAbsolutePath } from './path-utils.js';\nimport { emitPluginActionEvent, emitPresenceEvent } from './presence.js';\nimport {\n normalizeDirectoryArg,\n normalizeRepositoryPath,\n resolveWorkspace,\n toWorkspaceResolutionMetadata,\n toWorkspaceResolutionOutput,\n} from './workspace.js';\nimport {\n buildSkillMarkdown,\n parseRequestedSkillArgs,\n selectPublishedSkills,\n toInstallableSkillSummary,\n toPublishedSkillDetail,\n toPublishedSkillSummary,\n toWizardArtifactCatalog,\n toWizardArtifactDetail,\n toWizardArtifactSummary,\n} from '../published-skills-transform.js';\nimport {\n CACHE_TTL_MS,\n LOGIN_TIMEOUT_MS,\n NATIVE_SKILLS_URL_COMPATIBILITY,\n OIDC_CALLBACK_URL,\n PLUGIN_ID,\n PRESENCE_SHUTDOWN_SIGNALS,\n PRESENCE_SIGNAL_EXIT_CODES,\n type NativeSkillsUrlCompatibility,\n} from './constants.js';\nexport { PLUGIN_ID, NATIVE_SKILLS_URL_COMPATIBILITY, type NativeSkillsUrlCompatibility } from './constants.js';\nimport {\n buildSystemNote,\n filterIgnoredPublishedSkills,\n resolvePluginStatusSnapshot,\n toAiFacingPluginStatusSnapshot,\n toFetchFailureOutput,\n toPluginAuthStateSummary,\n toPluginStatusMetadata,\n toPublishedSkillCatalog,\n} from './status.js';\nimport { createIdleLoginBootstrapSnapshot } from './auth-bootstrap.js';\nimport { fetchWizardArtifactImportSource, planWizardArtifactImport } from './import-sources.js';\nimport {\n getCatalogCacheKey,\n resolvePublishedSkillPreferenceCacheContext,\n setPublishedSkillIgnored,\n setPublishedSkillInstalled,\n toPublishedSkillPreferenceAction,\n toPublishedSkillPreferenceScope,\n} from './preferences.js';\nexport {\n buildSystemNote,\n resolvePluginStatusSnapshot,\n toPluginAuthStateSummary,\n toPublishedSkillCatalog,\n} from './status.js';\nimport type {\n AuthState,\n BulkCreateSkillAssignmentsResponse,\n CacheEntry,\n CreateOrUpdateSkillFromMarkdownResponse,\n DetailCacheEntry,\n EditorSkillWorkspaceAssignmentLookupResponse,\n EditorSkillWorkspaceAssignmentResult,\n FetchResult,\n FilteredPublishedSkillsResult,\n LoginBootstrapTrigger,\n ImportWizardArtifactSnapshotResponse,\n OidcLoginStart,\n OpencodePluginModule,\n OpencodePluginServer,\n PluginActionEventType,\n PluginAuthStateSummary,\n PluginSessionResponse,\n PresenceEventType,\n PublishedSkillArtifactDetailPurpose,\n PublishedSkillCatalogItem,\n PublishedSkillCatalogPayload,\n PublishedSkillDetailResult,\n PublishedSkillInstallableCatalogItem,\n PublishedSkillsResult,\n ResolvedConfig,\n WorkspaceResolution,\n WizardArtifactCatalogItem,\n WizardArtifactDetailCacheEntry,\n WizardArtifactUserPreferences,\n} from './types.js';\nexport type {\n PluginAuthStateSummary,\n PluginStatusSnapshot,\n PublishedSkillCatalogItem,\n PublishedSkillCatalogPayload,\n PublishedSkillDetailItem,\n PublishedSkillInstallableCatalogItem,\n} from './types.js';\n\nconst importOpencodePluginModule = new Function('specifier', 'return import(specifier)') as (\n specifier: string,\n) => Promise<OpencodePluginModule>;\nexport { resolvePluginStatusSnapshotWithAuthBootstrap } from './auth-bootstrap.js';\nexport { setPublishedSkillIgnored, setPublishedSkillInstalled, toPublishedSkillPreferenceScope } from './preferences.js';\n\nconst getDetailCacheKey = (catalogCacheKey: string, skillVersionId: string, revision: string): string => {\n return JSON.stringify([catalogCacheKey, skillVersionId, revision]);\n};\n\nconst getPublishedSkillRevision = (item: PublishedSkillCatalogItem): string => {\n return item.publishedArtifact.revision ?? `${item.publishedArtifact.checksum}:${item.publishedArtifact.updatedAtCursor ?? item.publishedArtifact.publishedAt}`;\n};\n\nconst getCatalogCursor = (items: PublishedSkillCatalogItem[], catalogItems: PublishedSkillInstallableCatalogItem[]): string => {\n return [...items.map(getPublishedSkillRevision), ...catalogItems.map((item) => getPublishedSkillRevision({ ...item, assignmentSource: 'CATALOG', assignmentType: 'PATH', scopePath: '', includeChildren: true }))]\n .sort()\n .join('|');\n};\n\nconst getWizardArtifactRevision = (item: WizardArtifactCatalogItem): string => {\n return (\n item.artifactVersion.revision ??\n `${item.artifactVersion.checksum}:${item.artifactVersion.updatedAtCursor ?? item.artifactVersion.publishedAt ?? 'unpublished'}`\n );\n};\n\nconst getWizardArtifactCatalogCursor = (items: WizardArtifactCatalogItem[], catalogItems: WizardArtifactCatalogItem[]): string => {\n return [...items.map(getWizardArtifactRevision), ...catalogItems.map(getWizardArtifactRevision)].sort().join('|');\n};\n\nconst toWizardArtifactCatalogCursorItems = (items: Array<Pick<WizardArtifactCatalogItem, 'artifact' | 'artifactVersion'>>): WizardArtifactCatalogItem[] =>\n items.map((item) => ({\n ...item,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n }));\n\nconst getDetailInflightKey = (\n catalogCacheKey: string,\n skillVersionId: string,\n purpose: PublishedSkillArtifactDetailPurpose,\n): string => {\n return JSON.stringify([catalogCacheKey, skillVersionId, purpose]);\n};\n\nconst SUPPORTED_WIZARD_ARTIFACT_KINDS: WizardArtifactKind[] = ['SKILL', 'DESIGN_DOC'];\nconst DESIGN_DOC_UNSUPPORTED_MESSAGE =\n 'DESIGN_DOC is supported by generic wizard artifact persistence; use catalog/detail tools for assigned or installed documents.';\n\nconst toWizardArtifactKind = (value: string | undefined): WizardArtifactKind | null => {\n if (!value) return 'SKILL';\n const normalized = value.trim().toUpperCase().replace(/[-\\s]+/gu, '_');\n if (normalized === 'SKILL') return 'SKILL';\n if (normalized === 'DESIGN_DOC') return 'DESIGN_DOC';\n return null;\n};\n\nconst buildUnsupportedWizardArtifactOutput = ({\n artifactKind,\n directoryPath,\n}: {\n artifactKind: WizardArtifactKind | string;\n directoryPath: string;\n}) => ({\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: artifactKind === 'DESIGN_DOC' ? 'unsupported' : 'bad_artifact_kind',\n artifactKind,\n supportedArtifactKinds: SUPPORTED_WIZARD_ARTIFACT_KINDS,\n requestedDirectoryPath: directoryPath,\n message:\n artifactKind === 'DESIGN_DOC'\n ? DESIGN_DOC_UNSUPPORTED_MESSAGE\n : 'Unsupported wizard artifact kind. Use SKILL or DESIGN_DOC.',\n },\n null,\n 2,\n ),\n metadata: {\n status: artifactKind === 'DESIGN_DOC' ? 'unsupported' : 'bad_artifact_kind',\n artifactKind,\n directoryPath,\n },\n});\n\nconst withWizardArtifactEnvelope = (result: unknown, artifactKind: WizardArtifactKind): unknown => {\n if (!result || typeof result !== 'object' || !('output' in result)) return result;\n const outputResult = result as { output: unknown; metadata?: Record<string, string> };\n if (typeof outputResult.output !== 'string') return result;\n\n try {\n return {\n ...outputResult,\n output: JSON.stringify(\n {\n ...JSON.parse(outputResult.output),\n artifactKind,\n supportedArtifactKinds: SUPPORTED_WIZARD_ARTIFACT_KINDS,\n compatibilityAliases: [\n 'opencode_wizard_published_skills_fetch',\n 'opencode_wizard_published_skill_preference_set',\n ],\n },\n null,\n 2,\n ),\n metadata: {\n ...(outputResult.metadata ?? {}),\n artifactKind,\n },\n };\n } catch {\n return result;\n }\n};\n\nconst matchesWizardArtifactIdentifier = (item: WizardArtifactCatalogItem, identifier: string): boolean => {\n const normalizedIdentifier = identifier.trim().toLowerCase();\n if (!normalizedIdentifier) return false;\n if (item.artifact.slug.toLowerCase() === normalizedIdentifier) return true;\n if (item.artifact.name.toLowerCase() === normalizedIdentifier) return true;\n if (item.artifactVersion.frontmatterName.toLowerCase() === normalizedIdentifier) return true;\n return item.artifactVersion.id.toLowerCase() === normalizedIdentifier;\n};\n\nconst selectWizardArtifacts = (items: WizardArtifactCatalogItem[], identifiers: string[]) => {\n const selectedItems = items.filter((item) =>\n identifiers.some((identifier) => matchesWizardArtifactIdentifier(item, identifier)),\n );\n const missingIdentifiers = identifiers.filter(\n (identifier) => !selectedItems.some((item) => matchesWizardArtifactIdentifier(item, identifier)),\n );\n return { selectedItems, missingIdentifiers };\n};\n\ntype SuggestionSource = 'active' | 'catalog';\n\ntype IdentifierSuggestionCandidate = {\n identifier: string;\n canonicalIdentifier: string;\n label: string;\n source: SuggestionSource;\n};\n\ntype IdentifierSuggestion = {\n identifier: string;\n matchedIdentifier: string;\n label: string;\n source: SuggestionSource;\n};\n\nconst MAX_IDENTIFIER_SUGGESTIONS = 3;\nconst RECOMMENDATION_METADATA_NOTE =\n 'Recommendation fields are backend metadata for routing and discoverability only; fetch/detail tools are still required before using artifact bodies as guidance.';\n\ntype ArgsWithRecommendationContext = {\n recommendationContext?: unknown;\n};\n\nconst normalizeRecommendationContext = (args: ArgsWithRecommendationContext): string | null => {\n if (typeof args.recommendationContext !== 'string') return null;\n const recommendationContext = args.recommendationContext.trim();\n if (!recommendationContext) return null;\n return recommendationContext;\n};\n\nconst normalizeSuggestionIdentifier = (value: string): string =>\n value\n .trim()\n .toLowerCase()\n .normalize('NFKD')\n .replace(/[^\\p{Letter}\\p{Number}]+/gu, '');\n\nconst getEditDistance = (left: string, right: string): number => {\n if (left === right) return 0;\n if (!left) return right.length;\n if (!right) return left.length;\n\n const previous = Array.from({ length: right.length + 1 }, (_, index) => index);\n\n for (let leftIndex = 1; leftIndex <= left.length; leftIndex += 1) {\n const current = [leftIndex];\n for (let rightIndex = 1; rightIndex <= right.length; rightIndex += 1) {\n const substitutionCost = left[leftIndex - 1] === right[rightIndex - 1] ? 0 : 1;\n current[rightIndex] = Math.min(\n current[rightIndex - 1]! + 1,\n previous[rightIndex]! + 1,\n previous[rightIndex - 1]! + substitutionCost,\n );\n }\n previous.splice(0, previous.length, ...current);\n }\n\n return previous[right.length]!;\n};\n\nconst getSuggestionScore = (requested: string, candidate: string): number | null => {\n const normalizedRequested = normalizeSuggestionIdentifier(requested);\n const normalizedCandidate = normalizeSuggestionIdentifier(candidate);\n if (!normalizedRequested || !normalizedCandidate) return null;\n if (normalizedRequested === normalizedCandidate) return 0;\n if (normalizedCandidate.includes(normalizedRequested) || normalizedRequested.includes(normalizedCandidate)) return 1;\n\n const distance = getEditDistance(normalizedRequested, normalizedCandidate);\n const threshold = Math.max(2, Math.ceil(Math.max(normalizedRequested.length, normalizedCandidate.length) * 0.35));\n if (distance > threshold) return null;\n return distance + 2;\n};\n\nconst dedupeSuggestionCandidates = (candidates: IdentifierSuggestionCandidate[]): IdentifierSuggestionCandidate[] => {\n const seen = new Set<string>();\n return candidates.filter((candidate) => {\n const key = normalizeSuggestionIdentifier(candidate.identifier);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n};\n\nconst getIdentifierSuggestions = (\n requestedIdentifier: string,\n candidates: IdentifierSuggestionCandidate[],\n): IdentifierSuggestion[] =>\n dedupeSuggestionCandidates(candidates)\n .map((candidate) => ({\n candidate,\n score: getSuggestionScore(requestedIdentifier, candidate.identifier),\n }))\n .filter((result): result is { candidate: IdentifierSuggestionCandidate; score: number } => result.score !== null)\n .sort((left, right) => {\n if (left.score !== right.score) return left.score - right.score;\n if (left.candidate.source !== right.candidate.source) return left.candidate.source === 'active' ? -1 : 1;\n return left.candidate.identifier.localeCompare(right.candidate.identifier);\n })\n .slice(0, MAX_IDENTIFIER_SUGGESTIONS)\n .map(({ candidate }) => ({\n identifier: candidate.canonicalIdentifier,\n matchedIdentifier: candidate.identifier,\n label: candidate.label,\n source: candidate.source,\n }));\n\nconst getSkillSuggestionCandidates = (payload: PublishedSkillCatalogPayload): IdentifierSuggestionCandidate[] => [\n ...payload.skills.flatMap((item) => {\n const summary = toPublishedSkillSummary(item);\n return summary.identifiers.map((identifier) => ({\n identifier,\n canonicalIdentifier: summary.skillSlug,\n label: summary.artifactName || summary.skillName || summary.skillSlug,\n source: 'active' as const,\n }));\n }),\n ...payload.catalogSkills.flatMap((item) => {\n const summary = toInstallableSkillSummary(item);\n return summary.identifiers.map((identifier) => ({\n identifier,\n canonicalIdentifier: summary.skillSlug,\n label: summary.artifactName || summary.skillName || summary.skillSlug,\n source: 'catalog' as const,\n }));\n }),\n];\n\nconst getWizardArtifactSuggestionCandidates = (\n items: WizardArtifactCatalogItem[],\n catalogItems: Array<Pick<WizardArtifactCatalogItem, 'artifact' | 'artifactVersion'>>,\n): IdentifierSuggestionCandidate[] => [\n ...items.flatMap((item) => {\n const summary = toWizardArtifactSummary(item);\n return summary.identifiers.map((identifier) => ({\n identifier,\n canonicalIdentifier: summary.artifactSlug,\n label: summary.artifactName || summary.artifactSlug,\n source: 'active' as const,\n }));\n }),\n ...toWizardArtifactCatalogCursorItems(catalogItems).flatMap((item) => {\n const summary = toWizardArtifactSummary(item);\n return summary.identifiers.map((identifier) => ({\n identifier,\n canonicalIdentifier: summary.artifactSlug,\n label: summary.artifactName || summary.artifactSlug,\n source: 'catalog' as const,\n }));\n }),\n];\n\nconst getMissingIdentifierSuggestions = (identifiers: string[], candidates: IdentifierSuggestionCandidate[]) =>\n identifiers.map((identifier) => ({\n identifier,\n suggestions: getIdentifierSuggestions(identifier, candidates),\n }));\n\nexport const OpencodeWizardSkillsPlugin: OpencodePluginServer = async (input) => {\n const { tool } = await importOpencodePluginModule('@opencode-ai/plugin');\n const config = await resolveConfig(input.worktree);\n const workspacePath = normalizeAbsolutePath(input.worktree);\n const cache = new Map<string, CacheEntry>();\n const catalogInflight = new Map<string, Promise<PublishedSkillsResult>>();\n const detailCache = new Map<string, DetailCacheEntry>();\n const wizardArtifactDetailCache = new Map<string, WizardArtifactDetailCacheEntry>();\n const detailInflight = new Map<string, Promise<PublishedSkillDetailResult>>();\n const wizardArtifactDetailInflight = new Map<string, ReturnType<typeof fetchWizardArtifactDetail>>();\n const initialAuthState = await hydrateStoredAuthStateRole({\n worktree: input.worktree,\n config,\n signal: AbortSignal.timeout(5_000),\n onAuthStateChanged: clearPublishedSkillState,\n });\n const registeredTools = resolveAvailableTools(initialAuthState?.role ?? null);\n const loginBootstrap = {\n promise: null as Promise<AuthState> | null,\n snapshot: createIdleLoginBootstrapSnapshot(),\n };\n let lastAuthenticatedAuthState: AuthState | null = initialAuthState;\n let didEmitStart = false;\n let didScheduleStop = false;\n let presenceStartPromise: Promise<void> | null = null;\n let presenceStopPromise: Promise<void> | null = null;\n let lastInteractiveDirectoryPath: string | null = null;\n\n const resolveActionAuthState = async (): Promise<AuthState | null> => {\n const storedAuthState = await resolveStoredAuthState(input.worktree, config);\n if (storedAuthState) return storedAuthState;\n return lastAuthenticatedAuthState;\n };\n\n const emitActionEventForCurrentSession = async ({\n event,\n authState,\n directoryPath,\n }: {\n event: PluginActionEventType;\n authState?: AuthState | null;\n directoryPath?: string;\n }): Promise<void> => {\n await emitPluginActionEvent({\n config,\n authState: authState ?? (await resolveActionAuthState()),\n event,\n workspacePath,\n directoryPath,\n });\n };\n\n const schedulePresenceStart = (authState: AuthState): Promise<void> => {\n lastAuthenticatedAuthState = authState;\n if (didEmitStart) {\n return presenceStartPromise ?? Promise.resolve();\n }\n\n didEmitStart = true;\n presenceStartPromise = Promise.all([\n emitPresenceEvent({\n config,\n authState,\n event: 'START',\n workspacePath,\n }),\n emitActionEventForCurrentSession({\n event: 'START',\n authState,\n directoryPath: lastInteractiveDirectoryPath ?? undefined,\n }),\n ]).then(() => undefined);\n return presenceStartPromise;\n };\n\n const schedulePresenceStop = (): Promise<void> => {\n if (didScheduleStop) {\n return presenceStopPromise ?? Promise.resolve();\n }\n\n didScheduleStop = true;\n if (!didEmitStart || !lastAuthenticatedAuthState) {\n presenceStopPromise = Promise.resolve();\n return presenceStopPromise;\n }\n\n presenceStopPromise = (async () => {\n await presenceStartPromise?.catch(() => undefined);\n await Promise.all([\n emitPresenceEvent({\n config,\n authState: lastAuthenticatedAuthState,\n event: 'STOP',\n workspacePath,\n }),\n emitActionEventForCurrentSession({\n event: 'STOP',\n authState: lastAuthenticatedAuthState,\n directoryPath: lastInteractiveDirectoryPath ?? undefined,\n }),\n ]);\n })();\n\n return presenceStopPromise;\n };\n\n const scheduleInteractivePresenceStart = async (): Promise<void> => {\n const authState = await resolveStoredAuthState(input.worktree, config);\n if (!authState) return;\n await schedulePresenceStart(authState);\n };\n\n process.once('beforeExit', () => {\n void schedulePresenceStop();\n });\n\n for (const shutdownSignal of PRESENCE_SHUTDOWN_SIGNALS) {\n try {\n process.once(shutdownSignal, () => {\n void schedulePresenceStop().finally(() => {\n process.exit(PRESENCE_SIGNAL_EXIT_CODES[shutdownSignal]);\n });\n });\n } catch {\n continue;\n }\n }\n\n function clearPublishedSkillState() {\n cache.clear();\n catalogInflight.clear();\n detailCache.clear();\n wizardArtifactDetailCache.clear();\n detailInflight.clear();\n wizardArtifactDetailInflight.clear();\n }\n\n const persistAuthState = async (session: PluginSessionResponse['session']): Promise<AuthState> => {\n const authState = toAuthState(session);\n await writeAuthState(config.authStatePath, authState);\n clearPublishedSkillState();\n return authState;\n };\n\n const startLoginCompletion = (trigger: LoginBootstrapTrigger): Promise<AuthState> => {\n if (loginBootstrap.promise) {\n return loginBootstrap.promise;\n }\n\n const startedAt = new Date().toISOString();\n\n loginBootstrap.snapshot = {\n status: 'starting',\n trigger,\n startedAt,\n expiresAt: null,\n browserUrl: null,\n browserOpenError: null,\n email: null,\n message: null,\n };\n\n const loginPromise = (async () => {\n const loginSignal = AbortSignal.timeout(LOGIN_TIMEOUT_MS);\n let loginStart: OidcLoginStart | null = null;\n\n try {\n loginStart = await startLoginFlow(loginSignal);\n const browserOpenError = await openBrowser(loginStart.browserUrl);\n\n loginBootstrap.snapshot = {\n status: 'pending',\n trigger,\n startedAt,\n expiresAt: loginStart.expiresAt,\n browserUrl: loginStart.browserUrl,\n browserOpenError,\n email: null,\n message: browserOpenError\n ? `Automatic browser open failed. Open ${loginStart.browserUrl} manually.`\n : `Browser login started for published skill ${trigger}.`,\n };\n\n const callbackPayload = await loginStart.callbackPromise;\n\n if (callbackPayload.status === 'error') {\n throw new Error(callbackPayload.message);\n }\n\n if (callbackPayload.state !== loginStart.expectedState) {\n throw new Error('OAuth callback state did not match the original login request.');\n }\n\n loginBootstrap.snapshot = {\n status: 'pending',\n trigger,\n startedAt,\n expiresAt: loginStart.expiresAt,\n browserUrl: loginStart.browserUrl,\n browserOpenError,\n email: null,\n message: 'OAuth callback received. Finalizing backend session exchange.',\n };\n\n const pluginSession = await createPluginSession({\n code: callbackPayload.code,\n codeVerifier: loginStart.codeVerifier,\n redirectUri: OIDC_CALLBACK_URL,\n config,\n signal: loginSignal,\n });\n const authState = await persistAuthState(pluginSession);\n await emitActionEventForCurrentSession({\n event: 'LOGIN_SUCCESS',\n authState,\n directoryPath: lastInteractiveDirectoryPath ?? undefined,\n });\n\n loginBootstrap.snapshot = {\n status: 'authenticated',\n trigger,\n startedAt,\n expiresAt: authState.expiresAt,\n browserUrl: loginStart.browserUrl,\n browserOpenError,\n email: authState.email,\n message: `Browser login completed successfully for published skill ${trigger}.`,\n };\n\n return authState;\n } catch (error) {\n await emitActionEventForCurrentSession({\n event: 'LOGIN_FAILED',\n directoryPath: lastInteractiveDirectoryPath ?? undefined,\n });\n loginBootstrap.snapshot = {\n status: 'failed',\n trigger,\n startedAt,\n expiresAt: loginBootstrap.snapshot.expiresAt,\n browserUrl: loginBootstrap.snapshot.browserUrl,\n browserOpenError: loginBootstrap.snapshot.browserOpenError,\n email: null,\n message: error instanceof Error ? error.message : 'Browser login failed.',\n };\n throw error;\n } finally {\n await loginStart?.closeCallbackServer().catch(() => undefined);\n loginBootstrap.promise = null;\n }\n })();\n\n loginBootstrap.promise = loginPromise;\n return loginPromise;\n };\n\n const loadPublishedSkillCatalog = async ({\n directory,\n useCache,\n signal,\n recommendationContext,\n }: {\n directory: string;\n useCache: boolean;\n signal: AbortSignal;\n recommendationContext: string | null;\n }): Promise<PublishedSkillsResult> => {\n const workspaceResolution = await resolveWorkspace({\n config,\n directory,\n });\n const directoryPath = workspaceResolution.directoryPath;\n const preferenceContext = await resolvePublishedSkillPreferenceCacheContext(config);\n const cacheKey = JSON.stringify([getCatalogCacheKey(workspaceResolution, preferenceContext), recommendationContext ?? '']);\n const cached = cache.get(cacheKey);\n\n if (useCache && cached && cached.expiresAt > Date.now()) {\n return {\n directoryPath,\n workspaceResolution,\n fetchResult: {\n ...cached.result,\n source: 'cache',\n },\n };\n }\n\n const inflight = catalogInflight.get(cacheKey);\n if (inflight) {\n return inflight;\n }\n\n const requestPromise = (async (): Promise<PublishedSkillsResult> => {\n const fetchResult = await fetchPublishedSkillsCatalog(\n input.worktree,\n config,\n workspaceResolution,\n signal,\n recommendationContext,\n clearPublishedSkillState,\n );\n\n await maybePersistWorkspaceSlugFromCatalog({\n config,\n resolution: workspaceResolution,\n fetchResult,\n });\n\n cache.set(cacheKey, {\n result: fetchResult,\n expiresAt: Date.now() + CACHE_TTL_MS,\n cursor: fetchResult.ok ? getCatalogCursor(fetchResult.payload.skills, fetchResult.payload.catalogSkills) : fetchResult.fetchedAt,\n });\n\n return {\n directoryPath,\n workspaceResolution,\n fetchResult,\n };\n })();\n\n catalogInflight.set(cacheKey, requestPromise);\n\n try {\n return await requestPromise;\n } finally {\n catalogInflight.delete(cacheKey);\n }\n };\n\n const loadPublishedSkillDetail = async ({\n workspaceResolution,\n item,\n signal,\n useCache,\n purpose,\n }: {\n workspaceResolution: WorkspaceResolution;\n item: PublishedSkillCatalogItem;\n signal: AbortSignal;\n useCache: boolean;\n purpose: PublishedSkillArtifactDetailPurpose;\n }): Promise<PublishedSkillDetailResult> => {\n const directoryPath = workspaceResolution.directoryPath;\n const preferenceContext = await resolvePublishedSkillPreferenceCacheContext(config);\n const catalogCacheKey = getCatalogCacheKey(workspaceResolution, preferenceContext);\n const itemRevision = getPublishedSkillRevision(item);\n const cacheKey = getDetailCacheKey(catalogCacheKey, item.skillVersion.id, itemRevision);\n const inflightKey = getDetailInflightKey(catalogCacheKey, item.skillVersion.id, purpose);\n const cached = detailCache.get(cacheKey);\n\n if (useCache && cached && cached.expiresAt > Date.now()) {\n return {\n ok: true,\n detail: toPublishedSkillDetail({\n ...item,\n publishedArtifact: cached.artifact,\n }),\n };\n }\n\n const inflight = detailInflight.get(inflightKey);\n if (inflight) {\n return inflight;\n }\n\n const requestPromise = (async (): Promise<PublishedSkillDetailResult> => {\n const detailResult = await fetchPublishedSkillDetail({\n worktree: input.worktree,\n config,\n resolution: workspaceResolution,\n skillVersionId: item.skillVersion.id,\n artifactVersionId: item.publishedArtifact.id,\n signal,\n onAuthStateChanged: clearPublishedSkillState,\n purpose,\n });\n\n if (!detailResult.ok) {\n return {\n ok: false,\n status: detailResult.result.status,\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: detailResult.result.status,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n requestedSkillVersionId: item.skillVersion.id,\n requestedArtifactVersionId: item.publishedArtifact.id,\n message: detailResult.result.message,\n graphQlErrors:\n 'graphQlErrors' in detailResult.result ? detailResult.result.graphQlErrors : undefined,\n fetchedAt: detailResult.result.fetchedAt,\n source: detailResult.result.source,\n },\n null,\n 2,\n ),\n metadata: {\n status: detailResult.result.status,\n ...toWorkspaceResolutionMetadata(workspaceResolution),\n source: detailResult.result.source,\n },\n };\n }\n\n detailCache.set(cacheKey, {\n artifact: detailResult.artifact,\n expiresAt: Date.now() + CACHE_TTL_MS,\n revision: itemRevision,\n });\n\n return {\n ok: true,\n detail: toPublishedSkillDetail({\n ...item,\n publishedArtifact: detailResult.artifact,\n }),\n };\n })();\n\n detailInflight.set(inflightKey, requestPromise);\n\n try {\n return await requestPromise;\n } finally {\n detailInflight.delete(inflightKey);\n }\n };\n\n const loadWizardArtifactDetail = async ({\n workspaceResolution,\n item,\n signal,\n useCache,\n purpose,\n artifactKind,\n }: {\n workspaceResolution: WorkspaceResolution;\n item: WizardArtifactCatalogItem;\n signal: AbortSignal;\n useCache: boolean;\n purpose: PublishedSkillArtifactDetailPurpose;\n artifactKind: WizardArtifactKind;\n }) => {\n const preferenceContext = await resolvePublishedSkillPreferenceCacheContext(config);\n const catalogCacheKey = getCatalogCacheKey(workspaceResolution, preferenceContext);\n const itemRevision = getWizardArtifactRevision(item);\n const cacheKey = getDetailCacheKey(catalogCacheKey, item.artifactVersion.id, itemRevision);\n const inflightKey = JSON.stringify([catalogCacheKey, item.artifactVersion.id, itemRevision, purpose]);\n const cached = wizardArtifactDetailCache.get(cacheKey);\n\n if (useCache && cached && cached.expiresAt > Date.now()) {\n return { ok: true as const, artifact: cached.artifact };\n }\n\n const inflight = wizardArtifactDetailInflight.get(inflightKey);\n if (useCache && inflight) {\n const inflightResult = await inflight;\n if (!inflightResult.ok) return inflightResult;\n return { ok: true as const, artifact: inflightResult.artifact };\n }\n\n const requestPromise = fetchWizardArtifactDetail({\n worktree: input.worktree,\n config,\n resolution: workspaceResolution,\n artifactKind,\n artifactVersionId: item.artifactVersion.id,\n signal,\n onAuthStateChanged: clearPublishedSkillState,\n purpose,\n });\n\n wizardArtifactDetailInflight.set(inflightKey, requestPromise);\n\n try {\n const detailResult = await requestPromise;\n if (!detailResult.ok) return detailResult;\n\n wizardArtifactDetailCache.set(cacheKey, {\n artifact: detailResult.artifact,\n expiresAt: Date.now() + CACHE_TTL_MS,\n revision: itemRevision,\n });\n\n return { ok: true as const, artifact: detailResult.artifact };\n } finally {\n wizardArtifactDetailInflight.delete(inflightKey);\n }\n };\n\n const executePublishedSkillsFetchTool = async ({\n args,\n context,\n }: {\n args: PublishedSkillFetchArgs;\n context: {\n directory: string;\n abort: AbortSignal;\n metadata: (payload: { title: string; metadata: Record<string, string> }) => void;\n };\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const requestedSkills = parseRequestedSkillArgs(args);\n const recommendationContext = normalizeRecommendationContext(args as ArgsWithRecommendationContext);\n\n const fetchActionDirectoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = fetchActionDirectoryPath;\n\n const emitFetchOutcome = async (\n event: Extract<PluginActionEventType, 'FETCH_SUCCESS' | 'FETCH_FAILED'>,\n ): Promise<void> => {\n await emitActionEventForCurrentSession({\n event,\n directoryPath: fetchActionDirectoryPath,\n });\n };\n\n let publishedSkillsResult = await loadPublishedSkillCatalog({\n directory: requestedDirectory,\n useCache: !args.refresh,\n signal: context.abort,\n recommendationContext,\n });\n\n if (publishedSkillsResult.fetchResult.ok) {\n await scheduleInteractivePresenceStart();\n }\n\n if (!publishedSkillsResult.fetchResult.ok && publishedSkillsResult.fetchResult.status === 'missing_auth') {\n try {\n await startLoginCompletion('fetch').then(async (authState) => {\n await schedulePresenceStart(authState);\n });\n publishedSkillsResult = await loadPublishedSkillCatalog({\n directory: requestedDirectory,\n useCache: false,\n signal: context.abort,\n recommendationContext,\n });\n\n if (publishedSkillsResult.fetchResult.ok) {\n await scheduleInteractivePresenceStart();\n }\n } catch {\n // Return the original fetch failure with the latest login bootstrap snapshot attached.\n }\n }\n\n if (!publishedSkillsResult.fetchResult.ok) {\n await emitFetchOutcome('FETCH_FAILED');\n return toFetchFailureOutput({\n worktree: input.worktree,\n config,\n publishedSkillsResult,\n loginBootstrapSnapshot: loginBootstrap.snapshot,\n });\n }\n\n const filteredPublishedSkillsResult = await filterIgnoredPublishedSkills(config, publishedSkillsResult);\n if (!filteredPublishedSkillsResult.fetchResult.ok) {\n await emitFetchOutcome('FETCH_FAILED');\n return toFetchFailureOutput({\n worktree: input.worktree,\n config,\n publishedSkillsResult: filteredPublishedSkillsResult,\n loginBootstrapSnapshot: loginBootstrap.snapshot,\n });\n }\n\n const selection = selectPublishedSkills(filteredPublishedSkillsResult.fetchResult.payload, requestedSkills);\n const isSingleRequest = requestedSkills.length === 1;\n const skillSuggestionCandidates = getSkillSuggestionCandidates(filteredPublishedSkillsResult.fetchResult.payload);\n\n if (requestedSkills.length === 0) {\n const catalog = toPublishedSkillCatalog(filteredPublishedSkillsResult.fetchResult.payload, registeredTools);\n\n context.metadata({\n title: `opencode-wizard published skills catalog: ${catalog.publishedSkillCount} active`,\n metadata: {\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n status: 'ready',\n publishedSkillCount: catalog.publishedSkillCount.toString(),\n globalAssignmentCount: catalog.assignmentCounts.global.toString(),\n projectAssignmentCount: catalog.assignmentCounts.project.toString(),\n userAssignmentCount: catalog.assignmentCounts.user.toString(),\n ignoredSkillCount: filteredPublishedSkillsResult.ignoreState.ignoredSkillSlugs.length.toString(),\n },\n });\n\n await emitFetchOutcome('FETCH_SUCCESS');\n\n return {\n output: JSON.stringify(\n {\n ...catalog,\n status: 'ready',\n requestedDirectoryPath: filteredPublishedSkillsResult.directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(filteredPublishedSkillsResult.workspaceResolution),\n ignoredPublishedSkills: {\n scopeKey: filteredPublishedSkillsResult.ignoreState.scopeKey,\n count: filteredPublishedSkillsResult.ignoreState.ignoredSkillSlugs.length,\n },\n fetchedAt: filteredPublishedSkillsResult.fetchResult.fetchedAt,\n source: filteredPublishedSkillsResult.fetchResult.source,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n cacheCursor: getCatalogCursor(\n filteredPublishedSkillsResult.fetchResult.payload.skills,\n filteredPublishedSkillsResult.fetchResult.payload.catalogSkills,\n ),\n cacheTtlMs: CACHE_TTL_MS,\n message:\n args.refresh\n ? 'Catalog discovery refreshed from the backend. Provide `skill` for one identifier or prefer `skills` for comma/newline-separated multiple identifiers to fetch markdown bodies/details.'\n : 'Catalog discovery only. Cached results include deterministic revision cursors; pass `refresh: true` to force a backend refresh immediately. Provide `skill` for one identifier or prefer `skills` for comma/newline-separated multiple identifiers to fetch markdown bodies/details.',\n nextStep:\n 'Choose an active skill identifier from `skills` and call `opencode_wizard_published_skills_fetch` with `skill`; catalog-only skills must be installed before their bodies are fetchable.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'ready',\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n source: filteredPublishedSkillsResult.fetchResult.source,\n cacheCursor: getCatalogCursor(\n filteredPublishedSkillsResult.fetchResult.payload.skills,\n filteredPublishedSkillsResult.fetchResult.payload.catalogSkills,\n ),\n publishedSkillCount: catalog.publishedSkillCount.toString(),\n globalAssignmentCount: catalog.assignmentCounts.global.toString(),\n projectAssignmentCount: catalog.assignmentCounts.project.toString(),\n userAssignmentCount: catalog.assignmentCounts.user.toString(),\n ignoredSkillCount: filteredPublishedSkillsResult.ignoreState.ignoredSkillSlugs.length.toString(),\n },\n };\n }\n\n if (selection.selectedItems.length === 0) {\n await emitFetchOutcome('FETCH_FAILED');\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: 'not_found',\n requestedDirectoryPath: filteredPublishedSkillsResult.directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(filteredPublishedSkillsResult.workspaceResolution),\n requestedSkill: isSingleRequest ? requestedSkills[0] : undefined,\n requestedSkills,\n missingSkills: selection.missingIdentifiers,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n suggestions: isSingleRequest\n ? getIdentifierSuggestions(requestedSkills[0] ?? '', skillSuggestionCandidates)\n : undefined,\n missingSkillSuggestions: getMissingIdentifierSuggestions(\n selection.missingIdentifiers,\n skillSuggestionCandidates,\n ),\n availableSkills: filteredPublishedSkillsResult.fetchResult.payload.skills.map(toPublishedSkillSummary),\n ignoredPublishedSkills: {\n scopeKey: filteredPublishedSkillsResult.ignoreState.scopeKey,\n count: filteredPublishedSkillsResult.ignoreState.ignoredSkillSlugs.length,\n },\n nextStep:\n 'Retry with one suggested identifier, fetch the catalog with no args/refresh to inspect available skills, or install a catalog-only suggestion before fetching its body.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'not_found',\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n },\n };\n }\n\n let skillDetailResults = await Promise.all(\n selection.selectedItems.map((item) =>\n loadPublishedSkillDetail({\n workspaceResolution: filteredPublishedSkillsResult.workspaceResolution,\n item,\n signal: context.abort,\n useCache: !args.refresh,\n purpose: 'TOOL_FETCH',\n }),\n ),\n );\n\n if (skillDetailResults.some((result) => !result.ok && result.status === 'missing_auth')) {\n try {\n await startLoginCompletion('fetch').then(async (authState) => {\n await schedulePresenceStart(authState);\n });\n skillDetailResults = await Promise.all(\n selection.selectedItems.map((item) =>\n loadPublishedSkillDetail({\n workspaceResolution: filteredPublishedSkillsResult.workspaceResolution,\n item,\n signal: context.abort,\n useCache: false,\n purpose: 'TOOL_FETCH',\n }),\n ),\n );\n } catch {\n // Return the original detail failure after the login bootstrap attempt updates snapshot state.\n }\n }\n\n const failedSkillDetail = skillDetailResults.find((result) => !result.ok);\n\n if (failedSkillDetail && !failedSkillDetail.ok) {\n await emitFetchOutcome('FETCH_FAILED');\n return failedSkillDetail;\n }\n\n const skillDetails = skillDetailResults.map((result) => {\n if (!result.ok) {\n throw new Error('Published skill detail result unexpectedly missing after success guard.');\n }\n\n return result.detail;\n });\n\n if (isSingleRequest && skillDetails[0]) {\n const detail = skillDetails[0];\n\n context.metadata({\n title: `opencode-wizard published skill: ${detail.artifactName || detail.skillName}`,\n metadata: {\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n skillSlug: detail.skillSlug,\n version: detail.version,\n },\n });\n\n await emitFetchOutcome('FETCH_SUCCESS');\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n requestedDirectoryPath: filteredPublishedSkillsResult.directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(filteredPublishedSkillsResult.workspaceResolution),\n workspace: filteredPublishedSkillsResult.fetchResult.payload.workspace,\n fetchedAt: filteredPublishedSkillsResult.fetchResult.fetchedAt,\n source: filteredPublishedSkillsResult.fetchResult.source,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n skill: detail,\n },\n null,\n 2,\n ),\n metadata: {\n status: 'ready',\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n source: filteredPublishedSkillsResult.fetchResult.source,\n skillSlug: detail.skillSlug,\n },\n };\n }\n\n context.metadata({\n title: `opencode-wizard published skills fetch: ${skillDetails.length}`,\n metadata: {\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n requestedCount: requestedSkills.length.toString(),\n matchedCount: skillDetails.length.toString(),\n },\n });\n\n await emitFetchOutcome('FETCH_SUCCESS');\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n requestedDirectoryPath: filteredPublishedSkillsResult.directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(filteredPublishedSkillsResult.workspaceResolution),\n workspace: filteredPublishedSkillsResult.fetchResult.payload.workspace,\n fetchedAt: filteredPublishedSkillsResult.fetchResult.fetchedAt,\n source: filteredPublishedSkillsResult.fetchResult.source,\n requestedSkills,\n missingSkills: selection.missingIdentifiers,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n missingSkillSuggestions: getMissingIdentifierSuggestions(selection.missingIdentifiers, skillSuggestionCandidates),\n nextStep:\n selection.missingIdentifiers.length > 0\n ? 'Fetched matched skills. Retry missing identifiers with suggested active names, or inspect the no-arg catalog for catalog-only skills that need installation first.'\n : 'Use each fetched `skill.markdownDocument` as reference content for matched backend-published skills.',\n skills: skillDetails,\n },\n null,\n 2,\n ),\n metadata: {\n status: selection.missingIdentifiers.length > 0 ? 'partial' : 'ready',\n ...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),\n source: filteredPublishedSkillsResult.fetchResult.source,\n matchedCount: skillDetails.length.toString(),\n },\n };\n };\n\n const executeWizardArtifactCatalogTool = async ({\n args,\n context,\n }: {\n args: WizardArtifactCatalogFetchArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n const artifactKind = toWizardArtifactKind(args.artifactKind);\n\n if (!artifactKind) {\n return buildUnsupportedWizardArtifactOutput({\n artifactKind: args.artifactKind ?? '',\n directoryPath,\n });\n }\n\n if (artifactKind === 'DESIGN_DOC') {\n const recommendationContext = normalizeRecommendationContext(args as ArgsWithRecommendationContext);\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const fetchResult = await fetchWizardArtifactsCatalog(\n input.worktree,\n config,\n workspaceResolution,\n artifactKind,\n context.abort,\n recommendationContext,\n clearPublishedSkillState,\n );\n\n if (!fetchResult.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: fetchResult.status,\n artifactKind,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n message: fetchResult.message,\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n },\n null,\n 2,\n ),\n metadata: { status: fetchResult.status, artifactKind, directoryPath, source: fetchResult.source },\n };\n }\n\n const catalog = toWizardArtifactCatalog(fetchResult.payload, {\n pluginId: PLUGIN_ID,\n availableTools: registeredTools,\n });\n const cacheCursor = getWizardArtifactCatalogCursor(\n fetchResult.payload.artifacts,\n toWizardArtifactCatalogCursorItems(fetchResult.payload.catalogArtifacts),\n );\n return {\n output: JSON.stringify(\n {\n ...catalog,\n status: 'ready',\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS,\n message:\n 'Generic artifact catalog discovery only. Full bodies/files require opencode_wizard_artifact_fetch with artifactKind and artifact identifiers.',\n nextStep:\n 'Choose an active artifact identifier from `artifacts` and call `opencode_wizard_artifact_fetch`; catalog-only artifacts must be installed before their bodies are fetchable.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'ready',\n artifactKind,\n artifactCount: catalog.artifactCount.toString(),\n ...toWorkspaceResolutionMetadata(workspaceResolution),\n source: fetchResult.source,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS.toString(),\n },\n };\n }\n\n const result = await executePublishedSkillsFetchTool({\n args: {\n directory: args.directory,\n refresh: args.refresh,\n recommendationContext: (args as ArgsWithRecommendationContext).recommendationContext,\n } as PublishedSkillFetchArgs,\n context,\n });\n return withWizardArtifactEnvelope(result, artifactKind);\n };\n\n const executeWizardArtifactFetchTool = async ({\n args,\n context,\n }: {\n args: WizardArtifactFetchArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n const artifactKind = toWizardArtifactKind(args.artifactKind);\n\n if (!artifactKind) {\n return buildUnsupportedWizardArtifactOutput({\n artifactKind: args.artifactKind ?? '',\n directoryPath,\n });\n }\n\n if (artifactKind === 'DESIGN_DOC') {\n const requestedArtifacts = parseRequestedSkillArgs({ skill: args.artifact, skills: args.artifacts });\n const recommendationContext = normalizeRecommendationContext(args as ArgsWithRecommendationContext);\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const fetchResult = await fetchWizardArtifactsCatalog(\n input.worktree,\n config,\n workspaceResolution,\n artifactKind,\n context.abort,\n recommendationContext,\n clearPublishedSkillState,\n );\n\n if (!fetchResult.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: fetchResult.status,\n artifactKind,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n message: fetchResult.message,\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n },\n null,\n 2,\n ),\n metadata: { status: fetchResult.status, artifactKind, directoryPath, source: fetchResult.source },\n };\n }\n\n const selection = selectWizardArtifacts(fetchResult.payload.artifacts, requestedArtifacts);\n const artifactSuggestionCandidates = getWizardArtifactSuggestionCandidates(\n fetchResult.payload.artifacts,\n fetchResult.payload.catalogArtifacts,\n );\n if (requestedArtifacts.length === 0) {\n const catalog = toWizardArtifactCatalog(fetchResult.payload, {\n pluginId: PLUGIN_ID,\n availableTools: registeredTools,\n });\n const cacheCursor = getWizardArtifactCatalogCursor(\n fetchResult.payload.artifacts,\n toWizardArtifactCatalogCursorItems(fetchResult.payload.catalogArtifacts),\n );\n return {\n output: JSON.stringify(\n {\n ...catalog,\n status: 'ready',\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS,\n message: 'Provide artifact or artifacts to fetch artifact body/files.',\n nextStep:\n 'Choose an active artifact identifier from `artifacts` and call `opencode_wizard_artifact_fetch`; install catalog-only artifacts before fetching their bodies.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'ready',\n artifactKind,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS.toString(),\n ...toWorkspaceResolutionMetadata(workspaceResolution),\n },\n };\n }\n\n if (selection.selectedItems.length === 0) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: 'not_found',\n artifactKind,\n requestedArtifact: requestedArtifacts.length === 1 ? requestedArtifacts[0] : undefined,\n requestedArtifacts,\n missingArtifacts: selection.missingIdentifiers,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n suggestions:\n requestedArtifacts.length === 1\n ? getIdentifierSuggestions(requestedArtifacts[0] ?? '', artifactSuggestionCandidates)\n : undefined,\n missingArtifactSuggestions: getMissingIdentifierSuggestions(\n selection.missingIdentifiers,\n artifactSuggestionCandidates,\n ),\n availableArtifacts: fetchResult.payload.artifacts.map(toWizardArtifactSummary),\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n nextStep:\n 'Retry with one suggested identifier, fetch the artifact catalog to inspect available artifacts, or install a catalog-only suggestion before fetching its body.',\n },\n null,\n 2,\n ),\n metadata: { status: 'not_found', artifactKind, ...toWorkspaceResolutionMetadata(workspaceResolution) },\n };\n }\n\n const detailResults = await Promise.all(\n selection.selectedItems.map((item) =>\n loadWizardArtifactDetail({\n workspaceResolution,\n item,\n signal: context.abort,\n useCache: !args.refresh,\n purpose: 'TOOL_FETCH',\n artifactKind,\n }),\n ),\n );\n const failedDetail = detailResults.find((result) => !result.ok);\n if (failedDetail && !failedDetail.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n status: failedDetail.result.status,\n artifactKind,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n message: failedDetail.result.message,\n fetchedAt: failedDetail.result.fetchedAt,\n source: failedDetail.result.source,\n },\n null,\n 2,\n ),\n metadata: { status: failedDetail.result.status, artifactKind, ...toWorkspaceResolutionMetadata(workspaceResolution) },\n };\n }\n\n const details = detailResults.map((result, index) => {\n if (!result.ok) throw new Error('Wizard artifact detail result unexpectedly missing after success guard.');\n return toWizardArtifactDetail({\n ...selection.selectedItems[index]!,\n artifactVersion: result.artifact,\n });\n });\n const cacheCursor = getWizardArtifactCatalogCursor(\n selection.selectedItems,\n toWizardArtifactCatalogCursorItems(fetchResult.payload.catalogArtifacts),\n );\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n runtimeMode: 'tool_fetch_only',\n artifactKind,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n workspace: fetchResult.payload.workspace,\n fetchedAt: fetchResult.fetchedAt,\n source: fetchResult.source,\n cacheCursor,\n cacheTtlMs: CACHE_TTL_MS,\n requestedArtifacts,\n missingArtifacts: selection.missingIdentifiers,\n recommendationContext,\n recommendationNote: RECOMMENDATION_METADATA_NOTE,\n missingArtifactSuggestions: getMissingIdentifierSuggestions(\n selection.missingIdentifiers,\n artifactSuggestionCandidates,\n ),\n nextStep:\n selection.missingIdentifiers.length > 0\n ? 'Fetched matched artifacts. Retry missing identifiers with suggested active names, or inspect the catalog for catalog-only artifacts that need installation first.'\n : 'Use the fetched artifact markdown as reference content for matched backend-published artifacts.',\n artifacts: details,\n },\n null,\n 2,\n ),\n metadata: {\n status: selection.missingIdentifiers.length > 0 ? 'partial' : 'ready',\n artifactKind,\n matchedCount: details.length.toString(),\n cacheTtlMs: CACHE_TTL_MS.toString(),\n ...toWorkspaceResolutionMetadata(workspaceResolution),\n },\n };\n }\n\n const result = await executePublishedSkillsFetchTool({\n args: {\n skill: args.artifact,\n skills: args.artifacts,\n directory: args.directory,\n refresh: args.refresh,\n recommendationContext: (args as ArgsWithRecommendationContext).recommendationContext,\n } as PublishedSkillFetchArgs,\n context,\n });\n return withWizardArtifactEnvelope(result, artifactKind);\n };\n\n const executeStatusTool = async ({ args, context }: { args: PluginStatusArgs; context: ToolExecuteContext }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n let snapshot = await resolvePluginStatusSnapshot({\n worktree: input.worktree,\n directory: requestedDirectory,\n signal: context.abort,\n registeredTools,\n });\n\n if (snapshot.status === 'missing_auth') {\n try {\n await startLoginCompletion('status').then(async (authState) => {\n await schedulePresenceStart(authState);\n });\n snapshot = await resolvePluginStatusSnapshot({\n worktree: input.worktree,\n directory: requestedDirectory,\n signal: context.abort,\n registeredTools,\n });\n } catch {\n // Keep returning the safe missing-auth snapshot when interactive login is cancelled or fails.\n }\n }\n\n if (snapshot.status === 'ready') {\n await scheduleInteractivePresenceStart();\n }\n\n const metadata = toPluginStatusMetadata(snapshot);\n\n context.metadata({\n title: `opencode-wizard status: ${snapshot.status} / auth ${snapshot.authState.status}`,\n metadata,\n });\n\n return {\n output: JSON.stringify(toAiFacingPluginStatusSnapshot(snapshot), null, 2),\n metadata,\n };\n };\n\n const executePublishedSkillPreferenceTool = async ({\n args,\n context,\n }: {\n args: PublishedSkillPreferenceArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = directoryPath;\n const requestedSkill = typeof args.skill === 'string' ? args.skill.trim() : '';\n\n const emitPreferenceOutcome = async (\n event: Extract<PluginActionEventType, 'PREFERENCE_SUCCESS' | 'PREFERENCE_FAILED'>,\n ): Promise<void> => {\n await emitActionEventForCurrentSession({\n event,\n directoryPath,\n });\n };\n\n try {\n if (!requestedSkill) {\n throw new Error('Published skill preference tool requires a non-empty skill slug, artifact name, or skill name.');\n }\n\n if (typeof args.action !== 'string') {\n throw new Error('Published skill preference tool requires an action: install, uninstall, ignore, or unignore.');\n }\n\n const action = toPublishedSkillPreferenceAction(args.action);\n const catalogResult = await loadPublishedSkillCatalog({\n directory: requestedDirectory,\n useCache: true,\n signal: context.abort,\n recommendationContext: null,\n });\n\n if (!catalogResult.fetchResult.ok) {\n await emitPreferenceOutcome('PREFERENCE_FAILED');\n return toFetchFailureOutput({\n worktree: input.worktree,\n config,\n publishedSkillsResult: catalogResult,\n loginBootstrapSnapshot: loginBootstrap.snapshot,\n });\n }\n\n const selectableCatalogSkills: PublishedSkillCatalogItem[] = catalogResult.fetchResult.payload.catalogSkills.map(\n (item) => ({\n ...item,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n }),\n );\n const preferenceSelection = selectPublishedSkills(\n {\n ...catalogResult.fetchResult.payload,\n skills: [\n ...catalogResult.fetchResult.payload.skills,\n ...selectableCatalogSkills,\n ...catalogResult.fetchResult.payload.userPreferences.ignoredSkills,\n ],\n },\n [requestedSkill],\n );\n\n const matchedSkill = preferenceSelection.selectedItems[0];\n if (!matchedSkill) {\n throw new Error(`Published skill preference target was not found for identifier: ${requestedSkill}.`);\n }\n\n const skillSlug = matchedSkill.skill.slug;\n const preferenceState =\n action === 'ignore' || action === 'unignore'\n ? await setPublishedSkillIgnored({\n worktree: input.worktree,\n directory: requestedDirectory,\n skillSlug,\n ignored: action === 'ignore',\n preferenceScope: toPublishedSkillPreferenceScope(args.preferenceScope, 'project'),\n })\n : await setPublishedSkillInstalled({\n worktree: input.worktree,\n directory: requestedDirectory,\n skillSlug,\n installed: action === 'install',\n preferenceScope: toPublishedSkillPreferenceScope(args.preferenceScope, 'project'),\n });\n\n await scheduleInteractivePresenceStart();\n await emitPreferenceOutcome('PREFERENCE_SUCCESS');\n\n const metadata = {\n status: 'updated',\n skillSlug,\n action,\n directoryPath,\n ignoredSkillCount: preferenceState.ignoredSkillSlugs.length.toString(),\n };\n\n context.metadata({\n title: `opencode-wizard published skill preference: ${action} ${skillSlug}`,\n metadata,\n });\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'updated',\n requestedIdentifier: requestedSkill,\n skillSlug,\n action,\n requestedDirectoryPath: directoryPath,\n preferenceState,\n message:\n 'Published skill preference updated through the shared server-backed API; TUI views will reflect this after refresh.',\n },\n null,\n 2,\n ),\n metadata,\n };\n } catch (error) {\n await emitPreferenceOutcome('PREFERENCE_FAILED');\n const message = error instanceof Error ? error.message : 'Unknown published skill preference failure.';\n const metadata = {\n status: 'preference_failed',\n directoryPath,\n };\n\n context.metadata({\n title: 'opencode-wizard published skill preference failed',\n metadata,\n });\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'preference_failed',\n requestedIdentifier: requestedSkill,\n requestedDirectoryPath: directoryPath,\n message,\n guidance:\n 'The preference tool remains available. Check opencode_wizard_status for safe auth/catalog state, rerun fetch/status to bootstrap auth, and retry after catalog status is ready.',\n },\n null,\n 2,\n ),\n metadata,\n };\n }\n };\n\n const executeWizardArtifactPreferenceTool = async ({\n args,\n context,\n }: {\n args: WizardArtifactPreferenceArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n const artifactKind = toWizardArtifactKind(args.artifactKind);\n\n if (!artifactKind) {\n return buildUnsupportedWizardArtifactOutput({\n artifactKind: args.artifactKind ?? '',\n directoryPath,\n });\n }\n\n if (artifactKind === 'DESIGN_DOC') {\n try {\n const action = toPublishedSkillPreferenceAction(args.action);\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const response = await fetchPublishedSkillsGraphQl<{ setWizardArtifactPreference: WizardArtifactUserPreferences }>({\n worktree: input.worktree,\n config,\n query: SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION,\n variables: {\n input: {\n workspaceSlug: workspaceResolution.workspaceSlug,\n repositoryUrl: workspaceResolution.repositoryUrl,\n directoryPath: workspaceResolution.directoryPath,\n artifactKind,\n artifactSlug: args.artifact.trim(),\n preferenceScope: toPublishedSkillPreferenceScope(args.preferenceScope, 'project') === 'global' ? 'GLOBAL' : 'WORKSPACE',\n installed: action === 'install' ? true : action === 'uninstall' ? false : undefined,\n ignored: action === 'ignore' ? true : action === 'unignore' ? false : undefined,\n },\n },\n signal: context.abort,\n onAuthStateChanged: clearPublishedSkillState,\n });\n\n if (!response.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: response.result.status,\n artifactKind,\n requestedIdentifier: args.artifact,\n requestedDirectoryPath: directoryPath,\n message: response.result.message,\n fetchedAt: response.result.fetchedAt,\n source: response.result.source,\n },\n null,\n 2,\n ),\n metadata: { status: response.result.status, artifactKind, directoryPath },\n };\n }\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'updated',\n artifactKind,\n requestedIdentifier: args.artifact,\n action,\n requestedDirectoryPath: directoryPath,\n preferenceState: response.data.setWizardArtifactPreference,\n message: 'Wizard artifact preference updated through the generic backend API.',\n },\n null,\n 2,\n ),\n metadata: { status: 'updated', artifactKind, directoryPath, action },\n };\n } catch (error) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'preference_failed',\n artifactKind,\n requestedIdentifier: args.artifact,\n requestedDirectoryPath: directoryPath,\n message: error instanceof Error ? error.message : 'Unknown wizard artifact preference failure.',\n },\n null,\n 2,\n ),\n metadata: { status: 'preference_failed', artifactKind, directoryPath },\n };\n }\n }\n\n const result = await executePublishedSkillPreferenceTool({\n args: {\n skill: args.artifact,\n action: args.action,\n preferenceScope: args.preferenceScope,\n directory: args.directory,\n },\n context,\n });\n return withWizardArtifactEnvelope(result, artifactKind);\n };\n\n const createEditorWorkspaceSkillAssignment = async ({\n skillSlug,\n skillVersionId,\n workspaceResolution,\n signal,\n }: {\n skillSlug: string | null;\n skillVersionId: string | null;\n workspaceResolution: WorkspaceResolution;\n signal: AbortSignal;\n }): Promise<EditorSkillWorkspaceAssignmentResult> => {\n if (!skillSlug || !skillVersionId) {\n return {\n status: 'skipped',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspaceResolution.workspaceSlug,\n message: 'Skill creation did not return a skill slug or version id, so no workspace assignment was created.',\n };\n }\n\n if (!workspaceResolution.workspaceSlug) {\n return {\n status: 'skipped',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: null,\n message: 'No resolved workspace slug was available for this directory context.',\n };\n }\n\n const lookupResponse = await fetchPublishedSkillsGraphQl<EditorSkillWorkspaceAssignmentLookupResponse>({\n worktree: input.worktree,\n config,\n query: EDITOR_SKILL_WORKSPACE_ASSIGNMENT_LOOKUP_QUERY,\n variables: {\n skillSlug,\n workspaceSlug: workspaceResolution.workspaceSlug,\n },\n signal,\n operationName: 'editorSkillWorkspaceAssignmentLookup',\n });\n\n if (!lookupResponse.ok) {\n return {\n status: 'failed',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspaceResolution.workspaceSlug,\n message: lookupResponse.result.message,\n };\n }\n\n const { skill, workspace } = lookupResponse.data.admin;\n if (!skill) {\n return {\n status: 'failed',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspaceResolution.workspaceSlug,\n message: `Created skill ${skillSlug} could not be resolved for workspace assignment.`,\n };\n }\n\n if (!workspace) {\n return {\n status: 'skipped',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspaceResolution.workspaceSlug,\n message: `Resolved workspace ${workspaceResolution.workspaceSlug} was not found in the backend.`,\n };\n }\n\n const assignmentResponse = await fetchPublishedSkillsGraphQl<BulkCreateSkillAssignmentsResponse>({\n worktree: input.worktree,\n config,\n query: BULK_CREATE_SKILL_ASSIGNMENTS_MUTATION,\n variables: {\n input: {\n scopePathAssignments: [\n {\n workspaceId: workspace.id,\n skillId: skill.id,\n skillVersionId,\n assignmentType: 'PATH',\n scopePath: workspaceResolution.directoryPath,\n includeChildren: true,\n status: 'ACTIVE',\n notes: 'Created by opencode-wizard editor skill publishing.',\n },\n ],\n },\n },\n signal,\n operationName: 'bulkCreateSkillAssignments',\n });\n\n if (!assignmentResponse.ok) {\n return {\n status: 'failed',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspace.slug,\n workspaceId: workspace.id,\n message: assignmentResponse.result.message,\n };\n }\n\n const assignmentResult = assignmentResponse.data.admin.bulkCreateSkillAssignments;\n const [createdAssignment] = assignmentResult.scopePathAssignments;\n if (createdAssignment) {\n return {\n status: 'created',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspace.slug,\n workspaceId: workspace.id,\n assignmentId: createdAssignment.id,\n };\n }\n\n const [skippedAssignment] = assignmentResult.skippedScopePathAssignments;\n if (skippedAssignment) {\n return {\n status: 'already_exists',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspace.slug,\n workspaceId: workspace.id,\n assignmentId: skippedAssignment.id,\n };\n }\n\n const conflictMessage = assignmentResult.conflicts.map((conflict) => conflict.message).join('; ');\n return {\n status: 'failed',\n directoryPath: workspaceResolution.directoryPath,\n workspaceSlug: workspace.slug,\n workspaceId: workspace.id,\n message: conflictMessage || 'Workspace assignment was not created and no existing matching assignment was returned.',\n };\n };\n\n const executeEditorCreateOrUpdateSkillMarkdown = async ({\n markdownContent,\n context,\n source,\n requestedSkillSlug,\n }: {\n markdownContent: string;\n context: ToolExecuteContext;\n source: 'direct_markdown' | 'seed_file';\n requestedSkillSlug?: string;\n }) => {\n const authState = await resolveStoredAuthState(input.worktree, config);\n if (!authState || !hasPrivilegedWizardToolRole(authState.role)) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'forbidden',\n skillSlug: requestedSkillSlug ?? null,\n source,\n message:\n 'This tool requires ADMIN or EDITOR role. Your current session does not have the required privileged permission.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'forbidden',\n role: authState?.role ?? 'none',\n },\n };\n }\n\n if (!markdownContent.trim()) {\n throw new Error('Editor skill create/update requires non-empty markdownContent.');\n }\n\n const requestedDirectory = normalizeDirectoryArg(context.directory, undefined);\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const directoryPath = workspaceResolution.directoryPath;\n lastInteractiveDirectoryPath = directoryPath;\n\n const response = await fetchPublishedSkillsGraphQl<CreateOrUpdateSkillFromMarkdownResponse>({\n worktree: input.worktree,\n config,\n query: CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION,\n variables: {\n markdownContent,\n },\n signal: context.abort,\n });\n\n if (!response.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'request_failed',\n skillSlug: requestedSkillSlug ?? null,\n source,\n message: response.result.message,\n },\n null,\n 2,\n ),\n metadata: {\n status: 'request_failed',\n skillSlug: requestedSkillSlug ?? '',\n directoryPath,\n },\n };\n }\n\n const payload = response.data.admin.createOrUpdateSkillFromMarkdown;\n const workspaceAssignment = payload.success\n ? await createEditorWorkspaceSkillAssignment({\n skillSlug: payload.skillSlug,\n skillVersionId: payload.skillVersionId,\n workspaceResolution,\n signal: context.abort,\n })\n : null;\n\n if (payload.success) {\n clearPublishedSkillState();\n }\n\n await scheduleInteractivePresenceStart();\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: payload.success ? 'created_or_updated' : 'create_or_update_failed',\n source,\n skillSlug: payload.skillSlug,\n skillVersionId: payload.skillVersionId,\n artifactSlug: payload.artifactSlug,\n artifactVersionId: payload.artifactVersionId,\n workspaceAssignment,\n requestedDirectoryPath: directoryPath,\n workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),\n errors: payload.errors,\n message:\n source === 'direct_markdown'\n ? 'Skill markdown was sent directly to the backend; no local seed file was required. Workspace assignments are created when a backend workspace resolves for the directory.'\n : 'Local seed SKILL.md was published through the backend skill markdown mutation. Workspace assignments are created when a backend workspace resolves for the directory.',\n },\n null,\n 2,\n ),\n metadata: {\n status: payload.success ? 'created_or_updated' : 'create_or_update_failed',\n skillSlug: payload.skillSlug,\n skillVersionId: payload.skillVersionId ?? '',\n source,\n directoryPath,\n workspaceAssignmentStatus: workspaceAssignment?.status ?? '',\n workspaceAssignmentId: workspaceAssignment?.assignmentId ?? '',\n },\n };\n };\n\n const executeEditorCreateOrUpdateSkillTool = async ({\n args,\n context,\n }: {\n args: EditorCreateOrUpdateSkillArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = directoryPath;\n\n return executeEditorCreateOrUpdateSkillMarkdown({\n markdownContent: args.markdownContent,\n context: { ...context, directory: requestedDirectory },\n source: 'direct_markdown',\n });\n };\n\n const executeEditorPublishSkillTool = async ({\n args,\n context,\n }: {\n args: EditorPublishSkillArgs;\n context: ToolExecuteContext;\n }) => {\n const requestedSkillSlug = args.skillSlug.trim();\n if (!requestedSkillSlug) {\n throw new Error('Editor publish requires a non-empty skill slug.');\n }\n\n const authState = await resolveStoredAuthState(input.worktree, config);\n if (!authState || !hasPrivilegedWizardToolRole(authState.role)) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'forbidden',\n skillSlug: requestedSkillSlug,\n source: 'seed_file',\n message:\n 'This tool requires ADMIN or EDITOR role. Your current session does not have the required privileged permission.',\n },\n null,\n 2,\n ),\n metadata: {\n status: 'forbidden',\n role: authState?.role ?? 'none',\n },\n };\n }\n\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = directoryPath;\n\n const workspaceResolution = await resolveWorkspace({ config, directory: requestedDirectory });\n const repositoryRoot = workspaceResolution.repositoryRoot;\n\n const skillFilePath = path.resolve(\n repositoryRoot,\n config.rootSkillSeedPath,\n requestedSkillSlug,\n 'SKILL.md',\n );\n\n let markdownContent: string;\n try {\n markdownContent = await fs.readFile(skillFilePath, 'utf8');\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'file_not_found',\n skillSlug: requestedSkillSlug,\n skillFilePath,\n message: `Skill markdown file not found at ${skillFilePath}: ${message}`,\n },\n null,\n 2,\n ),\n metadata: {\n status: 'file_not_found',\n skillSlug: requestedSkillSlug,\n directoryPath,\n },\n };\n }\n\n return executeEditorCreateOrUpdateSkillMarkdown({\n markdownContent,\n context: { ...context, directory: requestedDirectory },\n source: 'seed_file',\n requestedSkillSlug,\n });\n };\n\n const executeWizardArtifactImportTool = async ({\n args,\n context,\n }: {\n args: WizardArtifactImportArgs;\n context: ToolExecuteContext;\n }) => {\n const authState = await resolveStoredAuthState(input.worktree, config);\n const importPlan = planWizardArtifactImport({\n artifactKind: args.artifactKind,\n source: args.source,\n slug: args.slug,\n skill: args.skill,\n });\n\n if (!authState || !hasPrivilegedWizardToolRole(authState.role)) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'forbidden',\n artifactKind: importPlan.artifactKind,\n source: importPlan.source,\n message: 'This tool requires ADMIN or EDITOR role. Your current session does not have the required privileged permission.',\n },\n null,\n 2,\n ),\n metadata: { status: 'forbidden', role: authState?.role ?? 'none' },\n };\n }\n\n const requestedDirectory = normalizeDirectoryArg(context.directory, args.directory);\n const directoryPath = normalizeRepositoryPath(workspacePath, requestedDirectory);\n lastInteractiveDirectoryPath = directoryPath;\n\n let importSource;\n try {\n importSource = await fetchWizardArtifactImportSource({\n artifactKind: args.artifactKind,\n source: args.source,\n slug: args.slug,\n skill: args.skill,\n signal: context.abort,\n });\n } catch (error) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'source_fetch_failed',\n artifactKind: importPlan.artifactKind,\n source: importPlan.source,\n candidateUrls: importPlan.candidateUrls,\n message: error instanceof Error ? error.message : 'Unknown import source fetch failure.',\n },\n null,\n 2,\n ),\n metadata: { status: 'source_fetch_failed', artifactKind: importPlan.artifactKind, directoryPath },\n };\n }\n\n const response = await fetchPublishedSkillsGraphQl<ImportWizardArtifactSnapshotResponse>({\n worktree: input.worktree,\n config,\n query: IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION,\n variables: {\n input: {\n artifactKind: importSource.artifactKind,\n slug: importSource.slug,\n name: args.name,\n summary: args.summary,\n markdownContent: importSource.markdownContent,\n source: importSource.fetchedUrl,\n sourceSnapshotRef: importSource.sourceRef,\n },\n },\n signal: context.abort,\n });\n\n if (!response.ok) {\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: 'request_failed',\n artifactKind: importSource.artifactKind,\n source: importSource.source,\n fetchedUrl: importSource.fetchedUrl,\n message: response.result.message,\n },\n null,\n 2,\n ),\n metadata: { status: 'request_failed', artifactKind: importSource.artifactKind, directoryPath },\n };\n }\n\n const payload = response.data.admin.importWizardArtifactSnapshot;\n await scheduleInteractivePresenceStart();\n\n return {\n output: JSON.stringify(\n {\n pluginId: PLUGIN_ID,\n status: payload.success ? 'imported' : 'import_failed',\n artifactKind: importSource.artifactKind,\n artifactSlug: payload.artifactSlug,\n artifactVersionId: payload.artifactVersionId,\n skillSlug: payload.skillSlug,\n skillVersionId: payload.skillVersionId,\n source: importSource.source,\n fetchedUrl: importSource.fetchedUrl,\n sourceSnapshotRef: importSource.sourceRef,\n errors: payload.errors,\n message: 'Imported backend artifact is now the wizard/plugin runtime authority; no project files were written.',\n },\n null,\n 2,\n ),\n metadata: {\n status: payload.success ? 'imported' : 'import_failed',\n artifactKind: importSource.artifactKind,\n artifactSlug: payload.artifactSlug ?? '',\n artifactVersionId: payload.artifactVersionId ?? '',\n directoryPath,\n },\n };\n };\n\n const { sharedTools, editorOnlyTools } = createPublishedSkillToolDefinitions(tool, {\n fetchPublishedSkills: (args, context) => executePublishedSkillsFetchTool({ args, context }),\n fetchWizardArtifactCatalog: (args, context) => executeWizardArtifactCatalogTool({ args, context }),\n fetchWizardArtifacts: (args, context) => executeWizardArtifactFetchTool({ args, context }),\n updatePublishedSkillPreference: (args, context) => executePublishedSkillPreferenceTool({ args, context }),\n updateWizardArtifactPreference: (args, context) => executeWizardArtifactPreferenceTool({ args, context }),\n getStatus: (args, context) => executeStatusTool({ args, context }),\n createOrUpdateEditorSkill: (args, context) => executeEditorCreateOrUpdateSkillTool({ args, context }),\n publishEditorSkill: (args, context) => executeEditorPublishSkillTool({ args, context }),\n importWizardArtifact: (args, context) => executeWizardArtifactImportTool({ args, context }),\n });\n\n return {\n tool: registeredTools.includes('opencode_wizard_editor_create_or_update_skill')\n ? { ...sharedTools, ...editorOnlyTools }\n : sharedTools,\n 'experimental.chat.system.transform': async (_hookInput, output) => {\n let publishedSkillsResult = await loadPublishedSkillCatalog({\n directory: input.directory,\n useCache: true,\n signal: AbortSignal.timeout(5_000),\n recommendationContext: null,\n });\n\n if (!publishedSkillsResult.fetchResult.ok && publishedSkillsResult.fetchResult.status === 'missing_auth') {\n try {\n await startLoginCompletion('status').then(async (authState) => {\n await schedulePresenceStart(authState);\n });\n publishedSkillsResult = await loadPublishedSkillCatalog({\n directory: input.directory,\n useCache: false,\n signal: AbortSignal.timeout(5_000),\n recommendationContext: null,\n });\n } catch {\n const loginMessage = loginBootstrap.snapshot.message\n ? ` Last login status: ${loginBootstrap.snapshot.message}`\n : '';\n output.system.push(\n `opencode-wizard plugin stored auth is missing, expired, or rejected. Startup browser login was started but did not complete successfully.${loginMessage} Use opencode_wizard_status or opencode_wizard_published_skills_fetch to retry authentication when published skills are needed. No tokens are exposed.`,\n );\n return;\n }\n\n if (!publishedSkillsResult.fetchResult.ok) {\n output.system.push(\n `opencode-wizard plugin startup login completed, but published skills are still unavailable: ${publishedSkillsResult.fetchResult.message} No tokens are exposed.`,\n );\n return;\n }\n }\n\n if (publishedSkillsResult.fetchResult.ok) {\n await scheduleInteractivePresenceStart();\n }\n\n const filteredPublishedSkillsResult = await filterIgnoredPublishedSkills(config, publishedSkillsResult);\n const systemNote = buildSystemNote(filteredPublishedSkillsResult, config, []);\n\n if (!systemNote) return;\n\n output.system.push(systemNote);\n },\n };\n};\n\nexport default {\n id: PLUGIN_ID,\n server: OpencodeWizardSkillsPlugin,\n};\n"],"mappings":"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","ignoreList":[]}
|
package/dist/server/types.d.ts
CHANGED
|
@@ -140,13 +140,15 @@ export type EditorSkillWorkspaceAssignmentResult = {
|
|
|
140
140
|
message?: string | null;
|
|
141
141
|
};
|
|
142
142
|
export type ImportWizardArtifactSnapshotResponse = {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
143
|
+
admin: {
|
|
144
|
+
importWizardArtifactSnapshot: {
|
|
145
|
+
success: boolean;
|
|
146
|
+
skillSlug: string | null;
|
|
147
|
+
skillVersionId: string | null;
|
|
148
|
+
artifactSlug: string | null;
|
|
149
|
+
artifactVersionId: string | null;
|
|
150
|
+
errors: string[];
|
|
151
|
+
};
|
|
150
152
|
};
|
|
151
153
|
};
|
|
152
154
|
export type SetPublishedSkillPreferenceResponse = {
|
package/dist/server/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/server/types.ts"],"sourcesContent":["import type { ToolFactory } from '../plugin-tools.js';\nimport type { PublishedSkillDetail, PublishedSkillSummary, PublishedSkillsSuccessState } from '../published-skills-transform.js';\nimport type { NativeSkillsUrlCompatibility } from './constants.js';\n\nexport type ResolvedConfig = {\n backendOrigin: string;\n graphqlUrl: string;\n authSessionUrl: string;\n presenceUrl: string;\n actionsUrl: string;\n configuredWorkspaceSlug: string | null;\n fallbackWorkspaceSlug: string;\n rootSkillSeedPath: string;\n authStatePath: string;\n};\n\nexport type WorkspaceResolution = {\n requestedDirectory: string;\n repositoryRoot: string;\n repositoryUrl: string | null;\n workspaceSlug?: string | null;\n workspaceSlugSource?: 'configured' | 'learned' | 'backend' | 'fallback' | 'repositoryUrl' | 'placeholder';\n fallbackWorkspaceSlug: string | null;\n directoryPath: string;\n cacheKey: string;\n};\n\nexport type WorkspaceResolutionOutput = {\n requestedDirectory: string;\n repositoryRoot: string;\n repositoryUrl: string | null;\n workspaceSlug?: string | null;\n workspaceSlugSource?: WorkspaceResolution['workspaceSlugSource'];\n fallbackWorkspaceSlug: string | null;\n directoryPath: string;\n};\n\nexport type StoredWorkspaceSlugMapping = {\n repositoryUrl: string | null;\n repositoryRoot: string | null;\n workspaceSlug: string;\n updatedAt: string;\n};\n\nexport type PublishedSkillCatalogResponse = {\n pluginPublishedSkills: PublishedSkillCatalogPayload;\n};\n\nexport type PublishedSkillDetailResponse = {\n pluginPublishedSkillVersionArtifact: PublishedSkillArtifactDetailPayload | null;\n};\n\nexport type WizardArtifactKind = 'SKILL' | 'DESIGN_DOC';\n\nexport type WizardArtifactCatalogResponse = {\n pluginWizardArtifacts: WizardArtifactCatalogPayload;\n};\n\nexport type WizardArtifactDetailResponse = {\n pluginWizardArtifactVersion: WizardArtifactDetailPayload | null;\n};\n\nexport type PublishedSkillCatalogPayload = {\n workspace: {\n id: string;\n slug: string;\n name: string;\n repositoryUrl?: string | null;\n defaultBranch?: string | null;\n status: string;\n } | null;\n directoryPath: string;\n skills: PublishedSkillCatalogItem[];\n catalogSkills: PublishedSkillInstallableCatalogItem[];\n userPreferences: PublishedSkillUserPreferences;\n};\n\nexport type RecommendationMetadata = {\n relevance?: number | null;\n recommendationReason?: string | null;\n};\n\nexport type WizardArtifactCatalogPayload = {\n artifactKind: WizardArtifactKind;\n workspace: PublishedSkillCatalogPayload['workspace'];\n directoryPath: string;\n artifacts: WizardArtifactCatalogItem[];\n catalogArtifacts: WizardArtifactInstallableCatalogItem[];\n artifactPreferences: WizardArtifactUserPreferences;\n unsupportedReason?: string | null;\n message?: string | null;\n};\n\nexport type WizardArtifactUserPreferences = {\n scopeKey: string;\n userKey: string;\n ignoredArtifacts: WizardArtifactCatalogItem[];\n};\n\nexport type PublishedSkillUserPreferences = {\n scopeKey: string;\n userKey: string;\n ignoredSkills: PublishedSkillCatalogItem[];\n};\n\nexport type PublishedSkillPreferenceScope = 'GLOBAL' | 'WORKSPACE';\n\nexport type CreateOrUpdateSkillFromMarkdownResponse = {\n admin: {\n createOrUpdateSkillFromMarkdown: {\n success: boolean;\n skillSlug: string | null;\n skillVersionId: string | null;\n artifactSlug: string | null;\n artifactVersionId: string | null;\n errors: string[];\n };\n };\n};\n\nexport type EditorSkillWorkspaceAssignmentLookupResponse = {\n admin: {\n skill: { id: string; slug: string } | null;\n workspace: { id: string; slug: string } | null;\n };\n};\n\nexport type BulkCreateSkillAssignmentsResponse = {\n admin: {\n bulkCreateSkillAssignments: {\n scopePathAssignments: Array<{ id: string }>;\n skippedScopePathAssignments: Array<{ id: string }>;\n conflicts: Array<{\n target: string;\n inputIndex: number;\n reason: string;\n message: string;\n }>;\n };\n };\n};\n\nexport type EditorSkillWorkspaceAssignmentResult = {\n status: 'created' | 'already_exists' | 'skipped' | 'failed';\n workspaceSlug?: string | null;\n workspaceId?: string | null;\n directoryPath: string;\n assignmentId?: string | null;\n message?: string | null;\n};\n\nexport type ImportWizardArtifactSnapshotResponse = {\n importWizardArtifactSnapshot: {\n success: boolean;\n skillSlug: string | null;\n skillVersionId: string | null;\n artifactSlug: string | null;\n artifactVersionId: string | null;\n errors: string[];\n };\n};\n\nexport type SetPublishedSkillPreferenceResponse = {\n setPublishedSkillPreference: PublishedSkillUserPreferences;\n};\n\nexport type PublishedSkillInstallableCatalogItem = RecommendationMetadata &\n Pick<PublishedSkillCatalogItem, 'skill' | 'skillVersion' | 'publishedArtifact'>;\n\nexport type PublishedSkillCatalogItem = RecommendationMetadata & {\n assignmentSource: string;\n assignmentType: string;\n scopePath: string;\n includeChildren?: boolean | null;\n skill: {\n id: string;\n slug: string;\n name: string;\n summary?: string | null;\n whenToUse?: string | null;\n status: string;\n installPolicy: PublishedSkillInstallPolicy;\n tags: PublishedSkillTag[];\n };\n skillVersion: {\n id: string;\n version: string;\n title?: string | null;\n summary?: string | null;\n status: string;\n };\n publishedArtifact: {\n id: string;\n frontmatterName: string;\n frontmatterDescription: string;\n checksum: string;\n revision?: string | null;\n updatedAtCursor?: string | null;\n publishedAt?: string | null;\n fileCount: number;\n };\n};\n\nexport type WizardArtifactInstallableCatalogItem = RecommendationMetadata &\n Pick<WizardArtifactCatalogItem, 'artifact' | 'artifactVersion'>;\n\nexport type WizardArtifactCatalogItem = RecommendationMetadata & {\n assignmentSource: string;\n assignmentType: string;\n scopePath: string;\n includeChildren?: boolean | null;\n artifact: {\n id: string;\n kind: WizardArtifactKind;\n slug: string;\n name: string;\n summary?: string | null;\n whenToUse?: string | null;\n status: string;\n installPolicy: PublishedSkillInstallPolicy;\n };\n artifactVersion: {\n id: string;\n version: string;\n title?: string | null;\n summary?: string | null;\n status: string;\n frontmatterName: string;\n frontmatterDescription: string;\n checksum: string;\n revision?: string | null;\n updatedAtCursor?: string | null;\n canonicalFilePath: string;\n publishedAt?: string | null;\n fileCount: number;\n };\n};\n\nexport type PublishedSkillArtifactFilePayload = {\n id: string;\n relativePath: string;\n contentType: string;\n content: string;\n checksum: string;\n size: number;\n sortOrder: number;\n};\n\nexport type PublishedSkillFacet = {\n id: string;\n slug: string;\n label: string;\n description?: string | null;\n};\n\nexport type PublishedSkillTag = {\n id: string;\n slug: string;\n label: string;\n description?: string | null;\n facet?: PublishedSkillFacet | null;\n};\n\nexport type PublishedSkillInstallPolicy = 'GLOBAL_CONTEXT' | 'PROJECT_INSTALLABLE';\n\nexport type PublishedSkillDetailItem = PublishedSkillCatalogItem & {\n publishedArtifact: PublishedSkillCatalogItem['publishedArtifact'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFilePayload[];\n };\n};\n\nexport type WizardArtifactDetailItem = WizardArtifactCatalogItem & {\n artifactVersion: WizardArtifactCatalogItem['artifactVersion'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFilePayload[];\n };\n};\n\nexport type PublishedSkillArtifactDetailPayload = PublishedSkillCatalogItem['publishedArtifact'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFilePayload[];\n};\n\nexport type WizardArtifactDetailPayload = WizardArtifactCatalogItem['artifactVersion'] & {\n artifact: WizardArtifactCatalogItem['artifact'];\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFilePayload[];\n};\n\nexport type PublishedSkillArtifactDetailPurpose = 'TOOL_FETCH';\n\nexport type GraphQLErrorItem = {\n message: string;\n path?: Array<string | number>;\n extensions?: {\n code?: string;\n } & Record<string, unknown>;\n};\n\nexport type GraphQLResponse<TData> = {\n data?: TData;\n errors?: GraphQLErrorItem[];\n};\n\nexport type AuthState = {\n pluginId: string;\n sessionToken: string;\n expiresAt: string;\n authenticatedAt: string;\n userId: string;\n email: string;\n role?: 'ADMIN' | 'EDITOR' | null;\n};\n\nexport type CurrentUserRoleResponse = {\n user?: {\n me?: {\n _id: string;\n email: string;\n role: 'ADMIN' | 'EDITOR';\n } | null;\n } | null;\n};\n\nexport type PresenceEventType = 'START' | 'STOP';\n\nexport type PluginActionEventType =\n | PresenceEventType\n | 'FETCH_SUCCESS'\n | 'FETCH_FAILED'\n | 'LOGIN_SUCCESS'\n | 'LOGIN_FAILED'\n | 'PREFERENCE_SUCCESS'\n | 'PREFERENCE_FAILED';\n\nexport type LoginBootstrapTrigger = 'fetch' | 'status';\n\nexport type LoginBootstrapSnapshot = {\n status: 'idle' | 'starting' | 'pending' | 'authenticated' | 'failed';\n trigger: LoginBootstrapTrigger | null;\n startedAt: string | null;\n expiresAt: string | null;\n browserUrl: string | null;\n browserOpenError: string | null;\n email: string | null;\n message: string | null;\n};\n\nexport type StatusPathLoginBootstrap = {\n promise: Promise<AuthState> | null;\n status: 'idle' | 'pending' | 'authenticated' | 'failed';\n message: string | null;\n failedAt: number | null;\n};\n\nexport type FetchResult =\n | {\n ok: true;\n status: 'ready';\n authMode: 'session';\n payload: PublishedSkillCatalogPayload;\n fetchedAt: string;\n source: 'network' | 'cache';\n }\n | {\n ok: false;\n status: 'missing_auth' | 'request_failed';\n authMode: 'missing' | 'session';\n message: string;\n graphQlErrors?: string[];\n fetchedAt: string;\n source: 'network' | 'cache';\n };\n\nexport type CacheEntry = {\n result: FetchResult;\n expiresAt: number;\n cursor: string;\n};\n\nexport type WizardArtifactFetchResult =\n | {\n ok: true;\n status: 'ready';\n authMode: 'session';\n payload: WizardArtifactCatalogPayload;\n fetchedAt: string;\n source: 'network' | 'cache';\n }\n | Extract<FetchResult, { ok: false }>;\n\nexport type DetailCacheEntry = {\n artifact: PublishedSkillArtifactDetailPayload;\n expiresAt: number;\n revision: string;\n};\n\nexport type WizardArtifactDetailCacheEntry = {\n artifact: WizardArtifactDetailPayload;\n expiresAt: number;\n revision: string;\n};\n\nexport type PublishedSkillPreferenceAction = 'install' | 'uninstall' | 'ignore' | 'unignore';\n\nexport type OpencodePluginModule = {\n tool: ToolFactory;\n};\n\nexport type OpencodePluginServerInput = {\n worktree: string;\n directory: string;\n};\n\nexport type OpencodePluginSystemTransformOutput = {\n system: string[];\n};\n\nexport type OpencodePluginServer = (input: OpencodePluginServerInput) => Promise<{\n tool: Record<string, unknown>;\n 'experimental.chat.system.transform': (\n hookInput: unknown,\n output: OpencodePluginSystemTransformOutput,\n ) => Promise<void>;\n}>;\n\nexport type PublishedSkillsResult = {\n directoryPath: string;\n workspaceResolution: WorkspaceResolution;\n fetchResult: FetchResult;\n};\n\nexport type PublishedSkillsIgnoreState = {\n scopeKey: string;\n userKey: string;\n ignoredSkillSlugs: string[];\n installedGlobalSkillSlugs: string[];\n installedWorkspaceSkillSlugs: string[];\n globalSkillManagementHint: string;\n};\n\nexport type PublishedSkillPreferenceCacheContext = {\n userKey: string;\n preferenceVersion: number;\n};\n\nexport type FilteredPublishedSkillsResult = PublishedSkillsResult & {\n ignoreState: PublishedSkillsIgnoreState;\n ignoredSkills: PublishedSkillSummary[];\n};\n\nexport type PublishedSkillDetailResult =\n | {\n ok: true;\n detail: PublishedSkillDetail;\n }\n | {\n ok: false;\n status: 'not_found' | 'missing_auth' | 'request_failed';\n output: string;\n metadata: Record<string, string>;\n };\n\nexport type PluginAuthStateSummary = {\n status: 'missing' | 'authenticated';\n email: string | null;\n userId: string | null;\n role: 'ADMIN' | 'EDITOR' | null;\n authenticatedAt: string | null;\n expiresAt: string | null;\n};\n\nexport type PluginStatusSnapshot = {\n pluginId: string;\n runtimeMode: 'tool_fetch_only';\n nativeSkillsUrlCompatibility: NativeSkillsUrlCompatibility;\n backendOrigin: string;\n graphqlUrl: string;\n fallbackWorkspaceSlug: string;\n workspaceResolution: WorkspaceResolutionOutput;\n rootSkillSeedPath: string;\n authStatePath: string;\n authState: PluginAuthStateSummary;\n status: FetchResult['status'];\n authMode: FetchResult['authMode'];\n fetchedAt: string;\n source: FetchResult['source'];\n availableTools: string[];\n message: string | null;\n catalog: PublishedSkillsSuccessState | null;\n installableCatalog: {\n count: number;\n skills: PublishedSkillSummary[];\n } | null;\n ignoredPublishedSkills: {\n scopeKey: string;\n userKey: string;\n count: number;\n skills: PublishedSkillSummary[];\n };\n};\n\nexport type AiFacingIgnoredPublishedSkillsSummary = {\n scopeKey: string;\n count: number;\n};\n\nexport type AiFacingPluginStatusSnapshot = Omit<PluginStatusSnapshot, 'ignoredPublishedSkills' | 'installableCatalog'> & {\n ignoredPublishedSkills: AiFacingIgnoredPublishedSkillsSummary;\n};\n\nexport type OidcDiscoveryDocument = {\n authorization_endpoint: string;\n};\n\nexport type PluginSessionResponse = {\n success: true;\n session: {\n jwtToken: string;\n expiresAt: string;\n user: {\n id: string;\n email: string;\n role?: 'ADMIN' | 'EDITOR';\n };\n };\n};\n\nexport type OidcCallbackPayload =\n | {\n status: 'success';\n code: string;\n state: string;\n }\n | {\n status: 'error';\n message: string;\n };\n\nexport type OidcLoginStart = {\n browserUrl: string;\n expiresAt: string;\n codeVerifier: string;\n expectedState: string;\n callbackPromise: Promise<OidcCallbackPayload>;\n closeCallbackServer: () => Promise<void>;\n};\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/server/types.ts"],"sourcesContent":["import type { ToolFactory } from '../plugin-tools.js';\nimport type { PublishedSkillDetail, PublishedSkillSummary, PublishedSkillsSuccessState } from '../published-skills-transform.js';\nimport type { NativeSkillsUrlCompatibility } from './constants.js';\n\nexport type ResolvedConfig = {\n backendOrigin: string;\n graphqlUrl: string;\n authSessionUrl: string;\n presenceUrl: string;\n actionsUrl: string;\n configuredWorkspaceSlug: string | null;\n fallbackWorkspaceSlug: string;\n rootSkillSeedPath: string;\n authStatePath: string;\n};\n\nexport type WorkspaceResolution = {\n requestedDirectory: string;\n repositoryRoot: string;\n repositoryUrl: string | null;\n workspaceSlug?: string | null;\n workspaceSlugSource?: 'configured' | 'learned' | 'backend' | 'fallback' | 'repositoryUrl' | 'placeholder';\n fallbackWorkspaceSlug: string | null;\n directoryPath: string;\n cacheKey: string;\n};\n\nexport type WorkspaceResolutionOutput = {\n requestedDirectory: string;\n repositoryRoot: string;\n repositoryUrl: string | null;\n workspaceSlug?: string | null;\n workspaceSlugSource?: WorkspaceResolution['workspaceSlugSource'];\n fallbackWorkspaceSlug: string | null;\n directoryPath: string;\n};\n\nexport type StoredWorkspaceSlugMapping = {\n repositoryUrl: string | null;\n repositoryRoot: string | null;\n workspaceSlug: string;\n updatedAt: string;\n};\n\nexport type PublishedSkillCatalogResponse = {\n pluginPublishedSkills: PublishedSkillCatalogPayload;\n};\n\nexport type PublishedSkillDetailResponse = {\n pluginPublishedSkillVersionArtifact: PublishedSkillArtifactDetailPayload | null;\n};\n\nexport type WizardArtifactKind = 'SKILL' | 'DESIGN_DOC';\n\nexport type WizardArtifactCatalogResponse = {\n pluginWizardArtifacts: WizardArtifactCatalogPayload;\n};\n\nexport type WizardArtifactDetailResponse = {\n pluginWizardArtifactVersion: WizardArtifactDetailPayload | null;\n};\n\nexport type PublishedSkillCatalogPayload = {\n workspace: {\n id: string;\n slug: string;\n name: string;\n repositoryUrl?: string | null;\n defaultBranch?: string | null;\n status: string;\n } | null;\n directoryPath: string;\n skills: PublishedSkillCatalogItem[];\n catalogSkills: PublishedSkillInstallableCatalogItem[];\n userPreferences: PublishedSkillUserPreferences;\n};\n\nexport type RecommendationMetadata = {\n relevance?: number | null;\n recommendationReason?: string | null;\n};\n\nexport type WizardArtifactCatalogPayload = {\n artifactKind: WizardArtifactKind;\n workspace: PublishedSkillCatalogPayload['workspace'];\n directoryPath: string;\n artifacts: WizardArtifactCatalogItem[];\n catalogArtifacts: WizardArtifactInstallableCatalogItem[];\n artifactPreferences: WizardArtifactUserPreferences;\n unsupportedReason?: string | null;\n message?: string | null;\n};\n\nexport type WizardArtifactUserPreferences = {\n scopeKey: string;\n userKey: string;\n ignoredArtifacts: WizardArtifactCatalogItem[];\n};\n\nexport type PublishedSkillUserPreferences = {\n scopeKey: string;\n userKey: string;\n ignoredSkills: PublishedSkillCatalogItem[];\n};\n\nexport type PublishedSkillPreferenceScope = 'GLOBAL' | 'WORKSPACE';\n\nexport type CreateOrUpdateSkillFromMarkdownResponse = {\n admin: {\n createOrUpdateSkillFromMarkdown: {\n success: boolean;\n skillSlug: string | null;\n skillVersionId: string | null;\n artifactSlug: string | null;\n artifactVersionId: string | null;\n errors: string[];\n };\n };\n};\n\nexport type EditorSkillWorkspaceAssignmentLookupResponse = {\n admin: {\n skill: { id: string; slug: string } | null;\n workspace: { id: string; slug: string } | null;\n };\n};\n\nexport type BulkCreateSkillAssignmentsResponse = {\n admin: {\n bulkCreateSkillAssignments: {\n scopePathAssignments: Array<{ id: string }>;\n skippedScopePathAssignments: Array<{ id: string }>;\n conflicts: Array<{\n target: string;\n inputIndex: number;\n reason: string;\n message: string;\n }>;\n };\n };\n};\n\nexport type EditorSkillWorkspaceAssignmentResult = {\n status: 'created' | 'already_exists' | 'skipped' | 'failed';\n workspaceSlug?: string | null;\n workspaceId?: string | null;\n directoryPath: string;\n assignmentId?: string | null;\n message?: string | null;\n};\n\nexport type ImportWizardArtifactSnapshotResponse = {\n admin: {\n importWizardArtifactSnapshot: {\n success: boolean;\n skillSlug: string | null;\n skillVersionId: string | null;\n artifactSlug: string | null;\n artifactVersionId: string | null;\n errors: string[];\n };\n };\n};\n\nexport type SetPublishedSkillPreferenceResponse = {\n setPublishedSkillPreference: PublishedSkillUserPreferences;\n};\n\nexport type PublishedSkillInstallableCatalogItem = RecommendationMetadata &\n Pick<PublishedSkillCatalogItem, 'skill' | 'skillVersion' | 'publishedArtifact'>;\n\nexport type PublishedSkillCatalogItem = RecommendationMetadata & {\n assignmentSource: string;\n assignmentType: string;\n scopePath: string;\n includeChildren?: boolean | null;\n skill: {\n id: string;\n slug: string;\n name: string;\n summary?: string | null;\n whenToUse?: string | null;\n status: string;\n installPolicy: PublishedSkillInstallPolicy;\n tags: PublishedSkillTag[];\n };\n skillVersion: {\n id: string;\n version: string;\n title?: string | null;\n summary?: string | null;\n status: string;\n };\n publishedArtifact: {\n id: string;\n frontmatterName: string;\n frontmatterDescription: string;\n checksum: string;\n revision?: string | null;\n updatedAtCursor?: string | null;\n publishedAt?: string | null;\n fileCount: number;\n };\n};\n\nexport type WizardArtifactInstallableCatalogItem = RecommendationMetadata &\n Pick<WizardArtifactCatalogItem, 'artifact' | 'artifactVersion'>;\n\nexport type WizardArtifactCatalogItem = RecommendationMetadata & {\n assignmentSource: string;\n assignmentType: string;\n scopePath: string;\n includeChildren?: boolean | null;\n artifact: {\n id: string;\n kind: WizardArtifactKind;\n slug: string;\n name: string;\n summary?: string | null;\n whenToUse?: string | null;\n status: string;\n installPolicy: PublishedSkillInstallPolicy;\n };\n artifactVersion: {\n id: string;\n version: string;\n title?: string | null;\n summary?: string | null;\n status: string;\n frontmatterName: string;\n frontmatterDescription: string;\n checksum: string;\n revision?: string | null;\n updatedAtCursor?: string | null;\n canonicalFilePath: string;\n publishedAt?: string | null;\n fileCount: number;\n };\n};\n\nexport type PublishedSkillArtifactFilePayload = {\n id: string;\n relativePath: string;\n contentType: string;\n content: string;\n checksum: string;\n size: number;\n sortOrder: number;\n};\n\nexport type PublishedSkillFacet = {\n id: string;\n slug: string;\n label: string;\n description?: string | null;\n};\n\nexport type PublishedSkillTag = {\n id: string;\n slug: string;\n label: string;\n description?: string | null;\n facet?: PublishedSkillFacet | null;\n};\n\nexport type PublishedSkillInstallPolicy = 'GLOBAL_CONTEXT' | 'PROJECT_INSTALLABLE';\n\nexport type PublishedSkillDetailItem = PublishedSkillCatalogItem & {\n publishedArtifact: PublishedSkillCatalogItem['publishedArtifact'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFilePayload[];\n };\n};\n\nexport type WizardArtifactDetailItem = WizardArtifactCatalogItem & {\n artifactVersion: WizardArtifactCatalogItem['artifactVersion'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFilePayload[];\n };\n};\n\nexport type PublishedSkillArtifactDetailPayload = PublishedSkillCatalogItem['publishedArtifact'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFilePayload[];\n};\n\nexport type WizardArtifactDetailPayload = WizardArtifactCatalogItem['artifactVersion'] & {\n artifact: WizardArtifactCatalogItem['artifact'];\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFilePayload[];\n};\n\nexport type PublishedSkillArtifactDetailPurpose = 'TOOL_FETCH';\n\nexport type GraphQLErrorItem = {\n message: string;\n path?: Array<string | number>;\n extensions?: {\n code?: string;\n } & Record<string, unknown>;\n};\n\nexport type GraphQLResponse<TData> = {\n data?: TData;\n errors?: GraphQLErrorItem[];\n};\n\nexport type AuthState = {\n pluginId: string;\n sessionToken: string;\n expiresAt: string;\n authenticatedAt: string;\n userId: string;\n email: string;\n role?: 'ADMIN' | 'EDITOR' | null;\n};\n\nexport type CurrentUserRoleResponse = {\n user?: {\n me?: {\n _id: string;\n email: string;\n role: 'ADMIN' | 'EDITOR';\n } | null;\n } | null;\n};\n\nexport type PresenceEventType = 'START' | 'STOP';\n\nexport type PluginActionEventType =\n | PresenceEventType\n | 'FETCH_SUCCESS'\n | 'FETCH_FAILED'\n | 'LOGIN_SUCCESS'\n | 'LOGIN_FAILED'\n | 'PREFERENCE_SUCCESS'\n | 'PREFERENCE_FAILED';\n\nexport type LoginBootstrapTrigger = 'fetch' | 'status';\n\nexport type LoginBootstrapSnapshot = {\n status: 'idle' | 'starting' | 'pending' | 'authenticated' | 'failed';\n trigger: LoginBootstrapTrigger | null;\n startedAt: string | null;\n expiresAt: string | null;\n browserUrl: string | null;\n browserOpenError: string | null;\n email: string | null;\n message: string | null;\n};\n\nexport type StatusPathLoginBootstrap = {\n promise: Promise<AuthState> | null;\n status: 'idle' | 'pending' | 'authenticated' | 'failed';\n message: string | null;\n failedAt: number | null;\n};\n\nexport type FetchResult =\n | {\n ok: true;\n status: 'ready';\n authMode: 'session';\n payload: PublishedSkillCatalogPayload;\n fetchedAt: string;\n source: 'network' | 'cache';\n }\n | {\n ok: false;\n status: 'missing_auth' | 'request_failed';\n authMode: 'missing' | 'session';\n message: string;\n graphQlErrors?: string[];\n fetchedAt: string;\n source: 'network' | 'cache';\n };\n\nexport type CacheEntry = {\n result: FetchResult;\n expiresAt: number;\n cursor: string;\n};\n\nexport type WizardArtifactFetchResult =\n | {\n ok: true;\n status: 'ready';\n authMode: 'session';\n payload: WizardArtifactCatalogPayload;\n fetchedAt: string;\n source: 'network' | 'cache';\n }\n | Extract<FetchResult, { ok: false }>;\n\nexport type DetailCacheEntry = {\n artifact: PublishedSkillArtifactDetailPayload;\n expiresAt: number;\n revision: string;\n};\n\nexport type WizardArtifactDetailCacheEntry = {\n artifact: WizardArtifactDetailPayload;\n expiresAt: number;\n revision: string;\n};\n\nexport type PublishedSkillPreferenceAction = 'install' | 'uninstall' | 'ignore' | 'unignore';\n\nexport type OpencodePluginModule = {\n tool: ToolFactory;\n};\n\nexport type OpencodePluginServerInput = {\n worktree: string;\n directory: string;\n};\n\nexport type OpencodePluginSystemTransformOutput = {\n system: string[];\n};\n\nexport type OpencodePluginServer = (input: OpencodePluginServerInput) => Promise<{\n tool: Record<string, unknown>;\n 'experimental.chat.system.transform': (\n hookInput: unknown,\n output: OpencodePluginSystemTransformOutput,\n ) => Promise<void>;\n}>;\n\nexport type PublishedSkillsResult = {\n directoryPath: string;\n workspaceResolution: WorkspaceResolution;\n fetchResult: FetchResult;\n};\n\nexport type PublishedSkillsIgnoreState = {\n scopeKey: string;\n userKey: string;\n ignoredSkillSlugs: string[];\n installedGlobalSkillSlugs: string[];\n installedWorkspaceSkillSlugs: string[];\n globalSkillManagementHint: string;\n};\n\nexport type PublishedSkillPreferenceCacheContext = {\n userKey: string;\n preferenceVersion: number;\n};\n\nexport type FilteredPublishedSkillsResult = PublishedSkillsResult & {\n ignoreState: PublishedSkillsIgnoreState;\n ignoredSkills: PublishedSkillSummary[];\n};\n\nexport type PublishedSkillDetailResult =\n | {\n ok: true;\n detail: PublishedSkillDetail;\n }\n | {\n ok: false;\n status: 'not_found' | 'missing_auth' | 'request_failed';\n output: string;\n metadata: Record<string, string>;\n };\n\nexport type PluginAuthStateSummary = {\n status: 'missing' | 'authenticated';\n email: string | null;\n userId: string | null;\n role: 'ADMIN' | 'EDITOR' | null;\n authenticatedAt: string | null;\n expiresAt: string | null;\n};\n\nexport type PluginStatusSnapshot = {\n pluginId: string;\n runtimeMode: 'tool_fetch_only';\n nativeSkillsUrlCompatibility: NativeSkillsUrlCompatibility;\n backendOrigin: string;\n graphqlUrl: string;\n fallbackWorkspaceSlug: string;\n workspaceResolution: WorkspaceResolutionOutput;\n rootSkillSeedPath: string;\n authStatePath: string;\n authState: PluginAuthStateSummary;\n status: FetchResult['status'];\n authMode: FetchResult['authMode'];\n fetchedAt: string;\n source: FetchResult['source'];\n availableTools: string[];\n message: string | null;\n catalog: PublishedSkillsSuccessState | null;\n installableCatalog: {\n count: number;\n skills: PublishedSkillSummary[];\n } | null;\n ignoredPublishedSkills: {\n scopeKey: string;\n userKey: string;\n count: number;\n skills: PublishedSkillSummary[];\n };\n};\n\nexport type AiFacingIgnoredPublishedSkillsSummary = {\n scopeKey: string;\n count: number;\n};\n\nexport type AiFacingPluginStatusSnapshot = Omit<PluginStatusSnapshot, 'ignoredPublishedSkills' | 'installableCatalog'> & {\n ignoredPublishedSkills: AiFacingIgnoredPublishedSkillsSummary;\n};\n\nexport type OidcDiscoveryDocument = {\n authorization_endpoint: string;\n};\n\nexport type PluginSessionResponse = {\n success: true;\n session: {\n jwtToken: string;\n expiresAt: string;\n user: {\n id: string;\n email: string;\n role?: 'ADMIN' | 'EDITOR';\n };\n };\n};\n\nexport type OidcCallbackPayload =\n | {\n status: 'success';\n code: string;\n state: string;\n }\n | {\n status: 'error';\n message: string;\n };\n\nexport type OidcLoginStart = {\n browserUrl: string;\n expiresAt: string;\n codeVerifier: string;\n expectedState: string;\n callbackPromise: Promise<OidcCallbackPayload>;\n closeCallbackServer: () => Promise<void>;\n};\n"],"mappings":"","ignoreList":[]}
|