@aexol/opencode-wizard 0.3.6 → 0.3.8
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/README.md +1 -1
- package/dist/graphql-operations.d.ts +3 -3
- package/dist/graphql-operations.js +4 -0
- package/dist/graphql-operations.js.map +1 -1
- package/dist/published-skills-transform.d.ts +10 -2
- package/dist/published-skills-transform.js +12 -3
- package/dist/published-skills-transform.js.map +1 -1
- package/dist/server/import-sources.js +49 -0
- package/dist/server/import-sources.js.map +1 -1
- package/dist/server/runtime.js +119 -17
- package/dist/server/runtime.js.map +1 -1
- package/dist/server/types.d.ts +13 -2
- package/dist/server/types.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ Published skill fetches still support `refresh: true`, but normal cache entries
|
|
|
60
60
|
|
|
61
61
|
Use `opencode_wizard_artifact_preference_set` or compatibility `opencode_wizard_published_skill_preference_set` for preference actions (`install`, `uninstall`, `ignore`, `unignore`); the TUI panel stays information-only and does not expose those mutations.
|
|
62
62
|
|
|
63
|
-
Editors can import external artifacts without writing project files via `opencode_wizard_artifact_import`: use `source: "npx getdesign@latest add bmw-m"` for a `DESIGN_DOC`, or `source: "https://github.com/vercel-labs/skills --skill
|
|
63
|
+
Editors can import external artifacts without writing project files via `opencode_wizard_artifact_import`: use `source: "npx getdesign@latest add bmw-m"` for a `DESIGN_DOC`, or `source: "https://github.com/vercel-labs/agent-skills --skill react-best-practices"` for a `SKILL`. The plugin import path is a command/raw-source bridge into generic backend artifact persistence: it fetches markdown or a zip-backed `SKILL.md`/`README.md`, sends it to the backend import mutation, records the importing editor in existing created/published actor fields plus source metadata, and the imported backend artifact becomes the runtime authority. The admin Skills Catalog UI can browse Vercel, Skillta, and Design Docs sources and unzip archives in the browser; the plugin keeps generic `artifact` tool naming because the same backend artifact flow supports both `SKILL` and `DESIGN_DOC`.
|
|
64
64
|
|
|
65
65
|
`GLOBAL_CONTEXT` skills are active context skills and are not meant to be installed per project. `PROJECT_INSTALLABLE` skills are gallery/installable skills that may be attached globally or to a workspace/path through assignment records; those assignments remain the source of truth for what is active in a catalog response.
|
|
66
66
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare 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 \n assignmentSource\n assignmentType\n scopePath\n includeChildren\n \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\n }\n catalogSkills {\n \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 }\n userPreferences {\n scopeKey\n userKey\n ignoredSkills {\n \n assignmentSource\n assignmentType\n scopePath\n includeChildren\n \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\n }\n }\n }\n }\n";
|
|
2
2
|
export declare const SET_PUBLISHED_SKILL_PREFERENCE_MUTATION = "\n mutation SetPublishedSkillPreference($input: SetPublishedSkillPreferenceInput!) {\n setPublishedSkillPreference(input: $input) {\n scopeKey\n userKey\n ignoredSkills {\n \n assignmentSource\n assignmentType\n scopePath\n includeChildren\n \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\n }\n }\n }\n";
|
|
3
3
|
export declare 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";
|
|
4
|
-
export declare 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 \n assignmentSource\n assignmentType\n scopePath\n includeChildren\n \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 canonicalFilePath\n publishedAt\n fileCount\n }\n\n\n }\n catalogArtifacts {\n \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 canonicalFilePath\n publishedAt\n fileCount\n }\n\n }\n artifactPreferences {\n scopeKey\n userKey\n ignoredArtifacts {\n \n assignmentSource\n assignmentType\n scopePath\n includeChildren\n \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 canonicalFilePath\n publishedAt\n fileCount\n }\n\n\n }\n }\n unsupportedReason\n message\n }\n }\n";
|
|
5
|
-
export declare 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 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";
|
|
6
|
-
export declare const SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION = "\n mutation SetWizardArtifactPreference($input: SetWizardArtifactPreferenceInput!) {\n setWizardArtifactPreference(input: $input) {\n scopeKey\n userKey\n ignoredArtifacts {\n \n assignmentSource\n assignmentType\n scopePath\n includeChildren\n \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 canonicalFilePath\n publishedAt\n fileCount\n }\n\n\n }\n }\n }\n";
|
|
4
|
+
export declare 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 \n assignmentSource\n assignmentType\n scopePath\n includeChildren\n \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\n }\n catalogArtifacts {\n \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 }\n artifactPreferences {\n scopeKey\n userKey\n ignoredArtifacts {\n \n assignmentSource\n assignmentType\n scopePath\n includeChildren\n \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\n }\n }\n unsupportedReason\n message\n }\n }\n";
|
|
5
|
+
export declare 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";
|
|
6
|
+
export declare const SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION = "\n mutation SetWizardArtifactPreference($input: SetWizardArtifactPreferenceInput!) {\n setWizardArtifactPreference(input: $input) {\n scopeKey\n userKey\n ignoredArtifacts {\n \n assignmentSource\n assignmentType\n scopePath\n includeChildren\n \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\n }\n }\n }\n";
|
|
7
7
|
export declare const CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_MUTATION = "\n mutation CreateOrUpdateSkillFromMarkdown($markdownContent: String!) {\n createOrUpdateSkillFromMarkdown(markdownContent: $markdownContent) {\n success\n skillSlug\n skillVersionId\n errors\n }\n }\n";
|
|
8
8
|
export declare const IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION = "\n mutation ImportWizardArtifactSnapshot($input: ImportWizardArtifactSnapshotInput!) {\n importWizardArtifactSnapshot(input: $input) {\n success\n skillSlug\n skillVersionId\n artifactSlug\n artifactVersionId\n errors\n }\n }\n";
|
|
@@ -125,6 +125,8 @@ const WIZARD_ARTIFACT_CORE_FIELDS = `
|
|
|
125
125
|
frontmatterName
|
|
126
126
|
frontmatterDescription
|
|
127
127
|
checksum
|
|
128
|
+
revision
|
|
129
|
+
updatedAtCursor
|
|
128
130
|
canonicalFilePath
|
|
129
131
|
publishedAt
|
|
130
132
|
fileCount
|
|
@@ -191,6 +193,8 @@ export const WIZARD_ARTIFACT_DETAIL_QUERY = `
|
|
|
191
193
|
markdownBody
|
|
192
194
|
renderedContent
|
|
193
195
|
checksum
|
|
196
|
+
revision
|
|
197
|
+
updatedAtCursor
|
|
194
198
|
canonicalFilePath
|
|
195
199
|
publishedAt
|
|
196
200
|
fileCount
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PUBLISHED_SKILL_CORE_FIELDS","PUBLISHED_SKILL_ASSIGNMENT_FIELDS","PUBLISHED_SKILLS_CATALOG_QUERY","SET_PUBLISHED_SKILL_PREFERENCE_MUTATION","PUBLISHED_SKILL_DETAIL_QUERY","WIZARD_ARTIFACT_CORE_FIELDS","WIZARD_ARTIFACT_ASSIGNMENT_FIELDS","WIZARD_ARTIFACTS_CATALOG_QUERY","WIZARD_ARTIFACT_DETAIL_QUERY","SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION","CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_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 ${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_CORE_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 canonicalFilePath\n publishedAt\n fileCount\n }\n`;\n\nconst WIZARD_ARTIFACT_ASSIGNMENT_FIELDS = `\n assignmentSource\n assignmentType\n scopePath\n includeChildren\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_CORE_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 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 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 createOrUpdateSkillFromMarkdown(markdownContent: $markdownContent) {\n success\n skillSlug\n skillVersionId\n errors\n }\n }\n`;\n\nexport const IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION = `\n mutation ImportWizardArtifactSnapshot($input: ImportWizardArtifactSnapshotInput!) {\n importWizardArtifactSnapshot(input: $input) {\n success\n skillSlug\n skillVersionId\n artifactSlug\n artifactVersionId\n errors\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,IAAID,2BAA2B;AAC/B,CAAC;AAED,OAAO,MAAME,8BAA8B,GAAG;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUD,iCAAiC;AAC3C;AACA;AACA,UAAUD,2BAA2B;AACrC;AACA;AACA;AACA;AACA;AACA,YAAYC,iCAAiC;AAC7C;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAME,uCAAuC,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA,UAAUF,iCAAiC;AAC3C;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,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,CAAC;AAED,MAAMC,iCAAiC,GAAG;AAC1C;AACA;AACA;AACA;AACA,IAAID,2BAA2B;AAC/B,CAAC;AAED,OAAO,MAAME,8BAA8B,GAAG;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUD,iCAAiC;AAC3C;AACA;AACA,UAAUD,2BAA2B;AACrC;AACA;AACA;AACA;AACA;AACA,YAAYC,iCAAiC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAME,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,CAAC;AAED,OAAO,MAAMC,uCAAuC,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA,UAAUH,iCAAiC;AAC3C;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMI,6CAA6C,GAAG;AAC7D;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,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PUBLISHED_SKILL_CORE_FIELDS","PUBLISHED_SKILL_ASSIGNMENT_FIELDS","PUBLISHED_SKILLS_CATALOG_QUERY","SET_PUBLISHED_SKILL_PREFERENCE_MUTATION","PUBLISHED_SKILL_DETAIL_QUERY","WIZARD_ARTIFACT_CORE_FIELDS","WIZARD_ARTIFACT_ASSIGNMENT_FIELDS","WIZARD_ARTIFACTS_CATALOG_QUERY","WIZARD_ARTIFACT_DETAIL_QUERY","SET_WIZARD_ARTIFACT_PREFERENCE_MUTATION","CREATE_OR_UPDATE_SKILL_FROM_MARKDOWN_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 ${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_CORE_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 ${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_CORE_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 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 createOrUpdateSkillFromMarkdown(markdownContent: $markdownContent) {\n success\n skillSlug\n skillVersionId\n errors\n }\n }\n`;\n\nexport const IMPORT_WIZARD_ARTIFACT_SNAPSHOT_MUTATION = `\n mutation ImportWizardArtifactSnapshot($input: ImportWizardArtifactSnapshotInput!) {\n importWizardArtifactSnapshot(input: $input) {\n success\n skillSlug\n skillVersionId\n artifactSlug\n artifactVersionId\n errors\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,IAAID,2BAA2B;AAC/B,CAAC;AAED,OAAO,MAAME,8BAA8B,GAAG;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUD,iCAAiC;AAC3C;AACA;AACA,UAAUD,2BAA2B;AACrC;AACA;AACA;AACA;AACA;AACA,YAAYC,iCAAiC;AAC7C;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAME,uCAAuC,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA,UAAUF,iCAAiC;AAC3C;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,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,IAAID,2BAA2B;AAC/B,CAAC;AAED,OAAO,MAAME,8BAA8B,GAAG;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUD,iCAAiC;AAC3C;AACA;AACA,UAAUD,2BAA2B;AACrC;AACA;AACA;AACA;AACA;AACA,YAAYC,iCAAiC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAME,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,uCAAuC,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA,UAAUH,iCAAiC;AAC3C;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMI,6CAA6C,GAAG;AAC7D;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,CAAC","ignoreList":[]}
|
|
@@ -38,7 +38,9 @@ type PublishedSkillCatalogItemLike = {
|
|
|
38
38
|
frontmatterName: string;
|
|
39
39
|
frontmatterDescription: string;
|
|
40
40
|
checksum: string;
|
|
41
|
-
|
|
41
|
+
revision?: string | null;
|
|
42
|
+
updatedAtCursor?: string | null;
|
|
43
|
+
publishedAt?: string | null;
|
|
42
44
|
fileCount: number;
|
|
43
45
|
};
|
|
44
46
|
};
|
|
@@ -100,6 +102,8 @@ export type PublishedSkillSummary = {
|
|
|
100
102
|
scopePath: string;
|
|
101
103
|
includeChildren: boolean | null;
|
|
102
104
|
checksum: string;
|
|
105
|
+
revision: string;
|
|
106
|
+
updatedAtCursor: string;
|
|
103
107
|
publishedAt: string;
|
|
104
108
|
fileCount: number;
|
|
105
109
|
identifiers: string[];
|
|
@@ -144,8 +148,10 @@ type WizardArtifactCatalogItemLike = {
|
|
|
144
148
|
frontmatterName: string;
|
|
145
149
|
frontmatterDescription: string;
|
|
146
150
|
checksum: string;
|
|
151
|
+
revision?: string | null;
|
|
152
|
+
updatedAtCursor?: string | null;
|
|
147
153
|
canonicalFilePath: string;
|
|
148
|
-
publishedAt
|
|
154
|
+
publishedAt?: string | null;
|
|
149
155
|
fileCount: number;
|
|
150
156
|
};
|
|
151
157
|
};
|
|
@@ -180,6 +186,8 @@ export type WizardArtifactSummary = {
|
|
|
180
186
|
scopePath: string;
|
|
181
187
|
includeChildren: boolean | null;
|
|
182
188
|
checksum: string;
|
|
189
|
+
revision: string;
|
|
190
|
+
updatedAtCursor: string;
|
|
183
191
|
publishedAt: string;
|
|
184
192
|
fileCount: number;
|
|
185
193
|
canonicalFilePath: string;
|
|
@@ -89,6 +89,9 @@ const getSkillContextKind = item => {
|
|
|
89
89
|
if (item.assignmentSource === 'GLOBAL') return 'global';
|
|
90
90
|
return 'project';
|
|
91
91
|
};
|
|
92
|
+
const getRevision = (checksum, updatedAtCursor, fallbackTimestamp) => {
|
|
93
|
+
return `${checksum}:${updatedAtCursor ?? fallbackTimestamp ?? 'unpublished'}`;
|
|
94
|
+
};
|
|
92
95
|
export const toPublishedSkillSummary = item => {
|
|
93
96
|
const contextKind = getSkillContextKind(item);
|
|
94
97
|
return {
|
|
@@ -103,7 +106,9 @@ export const toPublishedSkillSummary = item => {
|
|
|
103
106
|
scopePath: item.scopePath,
|
|
104
107
|
includeChildren: item.includeChildren ?? null,
|
|
105
108
|
checksum: item.publishedArtifact.checksum,
|
|
106
|
-
|
|
109
|
+
revision: item.publishedArtifact.revision ?? getRevision(item.publishedArtifact.checksum, item.publishedArtifact.updatedAtCursor, item.publishedArtifact.publishedAt),
|
|
110
|
+
updatedAtCursor: item.publishedArtifact.updatedAtCursor ?? item.publishedArtifact.publishedAt ?? 'unpublished',
|
|
111
|
+
publishedAt: item.publishedArtifact.publishedAt ?? 'unpublished',
|
|
107
112
|
fileCount: item.publishedArtifact.fileCount,
|
|
108
113
|
identifiers: getSkillIdentifiers(item),
|
|
109
114
|
tags: item.skill.tags.map(toPublishedSkillTagSummary),
|
|
@@ -160,7 +165,9 @@ export const toWizardArtifactSummary = item => {
|
|
|
160
165
|
scopePath: item.scopePath,
|
|
161
166
|
includeChildren: item.includeChildren ?? null,
|
|
162
167
|
checksum: item.artifactVersion.checksum,
|
|
163
|
-
|
|
168
|
+
revision: item.artifactVersion.revision ?? getRevision(item.artifactVersion.checksum, item.artifactVersion.updatedAtCursor, item.artifactVersion.publishedAt),
|
|
169
|
+
updatedAtCursor: item.artifactVersion.updatedAtCursor ?? item.artifactVersion.publishedAt ?? 'unpublished',
|
|
170
|
+
publishedAt: item.artifactVersion.publishedAt ?? 'unpublished',
|
|
164
171
|
fileCount: item.artifactVersion.fileCount,
|
|
165
172
|
canonicalFilePath: item.artifactVersion.canonicalFilePath,
|
|
166
173
|
identifiers: getWizardArtifactIdentifiers(item),
|
|
@@ -219,7 +226,9 @@ export const toInstallableSkillSummary = item => ({
|
|
|
219
226
|
scopePath: '',
|
|
220
227
|
includeChildren: true,
|
|
221
228
|
checksum: item.publishedArtifact.checksum,
|
|
222
|
-
|
|
229
|
+
revision: item.publishedArtifact.revision ?? getRevision(item.publishedArtifact.checksum, item.publishedArtifact.updatedAtCursor, item.publishedArtifact.publishedAt),
|
|
230
|
+
updatedAtCursor: item.publishedArtifact.updatedAtCursor ?? item.publishedArtifact.publishedAt ?? 'unpublished',
|
|
231
|
+
publishedAt: item.publishedArtifact.publishedAt ?? 'unpublished',
|
|
223
232
|
fileCount: item.publishedArtifact.fileCount,
|
|
224
233
|
identifiers: getSkillIdentifiers({
|
|
225
234
|
...item,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getPublishedSkillAssignmentLabel","getPublishedSkillPolicyLabel","isUserPublishedSkillAssignment","toFrontmatterString","value","JSON","stringify","formatSkillLabel","item","artifactName","publishedArtifact","frontmatterName","trim","length","skill","name","buildSkillMarkdown","artifactBody","markdownBody","fallbackBody","renderedContent","body","startsWith","endsWith","description","frontmatterDescription","summary","frontmatter","join","getSkillIdentifiers","candidates","slug","seen","Set","reduce","all","candidate","normalized","cacheKey","toLowerCase","has","add","push","toPublishedSkillFacetSummary","facet","label","toPublishedSkillTagSummary","tag","getPublishedSkillFacets","items","facetsBySlug","Map","tags","set","values","sort","left","right","localeCompare","getPublishedSkillAssignmentCounts","counts","assignmentSource","user","global","project","other","getSkillContextKind","toPublishedSkillSummary","contextKind","skillSlug","skillName","artifactDescription","whenToUse","version","skillVersion","assignmentType","scopePath","includeChildren","checksum","publishedAt","fileCount","identifiers","map","installPolicy","assignmentLabel","policyLabel","policy","toPublishedSkillDetail","skillId","id","skillVersionId","artifactId","markdownDocument","files","resources","filter","file","relativePath","getWizardArtifactContextKind","getWizardArtifactIdentifiers","artifact","artifactVersion","toWizardArtifactSummary","artifactKind","kind","artifactSlug","canonicalFilePath","buildWizardArtifactMarkdown","toWizardArtifactDetail","artifactVersionId","toWizardArtifactCatalog","payload","options","pluginId","runtimeMode","deliveryModel","workspace","directoryPath","availableTools","artifactCount","artifacts","catalogArtifacts","toInstallableSkillSummary","toPublishedSkillCatalog","rootSkillSeedPath","publishedSkillCount","skills","assignmentCounts","facets","normalizeSkillIdentifier","parseSkillIdentifiers","split","mergeSkillIdentifiers","parseRequestedSkillArgs","args","requestedSkills","selectPublishedSkills","itemsByIdentifier","identifier","selectedItems","selectedKeys","missingIdentifiers","matched","get"],"sources":["../src/published-skills-transform.ts"],"sourcesContent":["import {\n getPublishedSkillAssignmentLabel,\n getPublishedSkillPolicyLabel,\n isUserPublishedSkillAssignment,\n} from './published-skills-terminology.js';\n\nexport { isUserPublishedSkillAssignment } from './published-skills-terminology.js';\n\ntype PublishedSkillFacetLike = {\n slug: string;\n label: string;\n description?: string | null;\n};\n\ntype PublishedSkillTagLike = {\n slug: string;\n label: string;\n description?: string | null;\n facet?: PublishedSkillFacetLike | null;\n};\n\ntype PublishedSkillInstallPolicy = 'GLOBAL_CONTEXT' | 'PROJECT_INSTALLABLE';\n\ntype PublishedSkillCatalogItemLike = {\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: PublishedSkillTagLike[];\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 publishedAt: string;\n fileCount: number;\n };\n};\n\ntype PublishedSkillArtifactFileLike = {\n id: string;\n relativePath: string;\n contentType: string;\n content: string;\n checksum: string;\n size: number;\n sortOrder: number;\n};\n\ntype PublishedSkillDetailItemLike = PublishedSkillCatalogItemLike & {\n publishedArtifact: PublishedSkillCatalogItemLike['publishedArtifact'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFileLike[];\n };\n};\n\ntype PublishedSkillInstallableCatalogItemLike = Pick<\n PublishedSkillCatalogItemLike,\n 'skill' | 'skillVersion' | 'publishedArtifact'\n>;\n\ntype PublishedSkillCatalogPayloadLike<TItem extends PublishedSkillCatalogItemLike = PublishedSkillCatalogItemLike> = {\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: TItem[];\n catalogSkills: PublishedSkillInstallableCatalogItemLike[];\n userPreferences: {\n scopeKey: string;\n userKey: string;\n ignoredSkills: PublishedSkillCatalogItemLike[];\n };\n};\n\nexport type PublishedSkillFacetSummary = {\n slug: string;\n label: string;\n description: string | null;\n};\n\nexport type PublishedSkillTagSummary = {\n slug: string;\n label: string;\n description: string | null;\n facet: PublishedSkillFacetSummary | null;\n};\n\nexport type PublishedSkillSummary = {\n skillSlug: string;\n skillName: string;\n artifactName: string;\n artifactDescription: string;\n whenToUse: string | null;\n version: string;\n assignmentSource: string;\n assignmentType: string;\n scopePath: string;\n includeChildren: boolean | null;\n checksum: string;\n publishedAt: string;\n fileCount: number;\n identifiers: string[];\n tags: PublishedSkillTagSummary[];\n contextKind: 'global' | 'project' | 'installable';\n installPolicy: PublishedSkillInstallPolicy;\n assignmentLabel: string;\n policyLabel: string;\n};\n\nexport type PublishedSkillDetail = PublishedSkillSummary & {\n skillId: string;\n skillVersionId: string;\n artifactId: string;\n markdownDocument: string;\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFileLike[];\n resources: PublishedSkillArtifactFileLike[];\n};\n\ntype WizardArtifactKind = 'SKILL' | 'DESIGN_DOC';\n\ntype WizardArtifactCatalogItemLike = {\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 canonicalFilePath: string;\n publishedAt: string;\n fileCount: number;\n };\n};\n\ntype WizardArtifactDetailLike = WizardArtifactCatalogItemLike & {\n artifactVersion: WizardArtifactCatalogItemLike['artifactVersion'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFileLike[];\n };\n};\n\ntype WizardArtifactCatalogPayloadLike = {\n artifactKind: WizardArtifactKind;\n workspace: PublishedSkillCatalogPayloadLike['workspace'];\n directoryPath: string;\n artifacts: WizardArtifactCatalogItemLike[];\n catalogArtifacts: Pick<WizardArtifactCatalogItemLike, 'artifact' | 'artifactVersion'>[];\n artifactPreferences: {\n scopeKey: string;\n userKey: string;\n ignoredArtifacts: WizardArtifactCatalogItemLike[];\n };\n};\n\nexport type WizardArtifactSummary = {\n artifactKind: WizardArtifactKind;\n artifactSlug: string;\n artifactName: string;\n artifactDescription: string;\n whenToUse: string | null;\n version: string;\n assignmentSource: string;\n assignmentType: string;\n scopePath: string;\n includeChildren: boolean | null;\n checksum: string;\n publishedAt: string;\n fileCount: number;\n canonicalFilePath: string;\n identifiers: string[];\n contextKind: 'global' | 'project' | 'installable';\n installPolicy: PublishedSkillInstallPolicy;\n assignmentLabel: string;\n policyLabel: string;\n};\n\nexport type WizardArtifactDetail = WizardArtifactSummary & {\n artifactId: string;\n artifactVersionId: string;\n markdownDocument: string;\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFileLike[];\n resources: PublishedSkillArtifactFileLike[];\n};\n\nexport type WizardArtifactCatalogState = {\n pluginId: string;\n runtimeMode: 'tool_fetch_only';\n deliveryModel: 'backend_published_generic_artifacts';\n artifactKind: WizardArtifactKind;\n workspace: PublishedSkillCatalogPayloadLike['workspace'];\n directoryPath: string;\n availableTools: string[];\n artifactCount: number;\n artifacts: WizardArtifactSummary[];\n catalogArtifacts: WizardArtifactSummary[];\n};\n\nexport type PublishedSkillsSuccessState = {\n pluginId: string;\n runtimeMode: 'tool_fetch_only';\n deliveryModel: 'backend_published_installed_effective_skills';\n workspace: PublishedSkillCatalogPayloadLike['workspace'];\n directoryPath: string;\n rootSkillSeedPath: string;\n availableTools: string[];\n publishedSkillCount: number;\n assignmentCounts: {\n global: number;\n project: number;\n user: number;\n other: number;\n };\n facets: PublishedSkillFacetSummary[];\n skills: PublishedSkillSummary[];\n};\n\ntype PublishedSkillCatalogOptions = {\n pluginId: string;\n rootSkillSeedPath: string;\n availableTools: string[];\n};\n\nconst toFrontmatterString = (value: string): string => JSON.stringify(value);\n\nexport const formatSkillLabel = (item: PublishedSkillCatalogItemLike): string => {\n const artifactName = item.publishedArtifact.frontmatterName.trim();\n if (artifactName.length > 0) return artifactName;\n return item.skill.name;\n};\n\nexport const buildSkillMarkdown = (item: PublishedSkillDetailItemLike): string => {\n const artifactBody = item.publishedArtifact.markdownBody.trim();\n const fallbackBody = item.publishedArtifact.renderedContent.trim();\n const body = artifactBody || fallbackBody;\n\n if (body.startsWith('---')) {\n return body.endsWith('\\n') ? body : `${body}\\n`;\n }\n\n const name = formatSkillLabel(item);\n const description = item.publishedArtifact.frontmatterDescription.trim() || item.skill.summary?.trim() || '';\n const frontmatter = ['---', `name: ${toFrontmatterString(name)}`, `description: ${toFrontmatterString(description)}`, '---'].join(\n '\\n',\n );\n\n if (!body) {\n return `${frontmatter}\\n`;\n }\n\n return `${frontmatter}\\n\\n${body.endsWith('\\n') ? body : `${body}\\n`}`;\n};\n\nconst getSkillIdentifiers = (item: PublishedSkillCatalogItemLike): string[] => {\n const candidates = [item.skill.slug, item.publishedArtifact.frontmatterName, item.skill.name];\n const seen = new Set<string>();\n\n return candidates.reduce<string[]>((all, candidate) => {\n const normalized = candidate.trim();\n if (!normalized) return all;\n\n const cacheKey = normalized.toLowerCase();\n if (seen.has(cacheKey)) return all;\n\n seen.add(cacheKey);\n all.push(normalized);\n return all;\n }, []);\n};\n\nconst toPublishedSkillFacetSummary = (facet: PublishedSkillFacetLike): PublishedSkillFacetSummary => ({\n slug: facet.slug,\n label: facet.label,\n description: facet.description ?? null,\n});\n\nconst toPublishedSkillTagSummary = (tag: PublishedSkillTagLike): PublishedSkillTagSummary => ({\n slug: tag.slug,\n label: tag.label,\n description: tag.description ?? null,\n facet: tag.facet ? toPublishedSkillFacetSummary(tag.facet) : null,\n});\n\nconst getPublishedSkillFacets = (items: PublishedSkillCatalogItemLike[]): PublishedSkillFacetSummary[] => {\n const facetsBySlug = new Map<string, PublishedSkillFacetSummary>();\n\n for (const item of items) {\n for (const tag of item.skill.tags) {\n if (!tag.facet) continue;\n if (facetsBySlug.has(tag.facet.slug)) continue;\n facetsBySlug.set(tag.facet.slug, toPublishedSkillFacetSummary(tag.facet));\n }\n }\n\n return [...facetsBySlug.values()].sort((left, right) => left.slug.localeCompare(right.slug));\n};\n\nconst getPublishedSkillAssignmentCounts = (\n items: PublishedSkillCatalogItemLike[],\n): PublishedSkillsSuccessState['assignmentCounts'] =>\n items.reduce<PublishedSkillsSuccessState['assignmentCounts']>(\n (counts, item) => {\n if (isUserPublishedSkillAssignment(item.assignmentSource)) {\n return {\n ...counts,\n user: counts.user + 1,\n };\n }\n\n if (item.assignmentSource === 'GLOBAL') {\n return {\n ...counts,\n global: counts.global + 1,\n };\n }\n\n if (item.assignmentSource === 'WORKSPACE') {\n return {\n ...counts,\n project: counts.project + 1,\n };\n }\n\n return {\n ...counts,\n other: counts.other + 1,\n };\n },\n {\n global: 0,\n project: 0,\n user: 0,\n other: 0,\n },\n );\n\nconst getSkillContextKind = (item: PublishedSkillCatalogItemLike): PublishedSkillSummary['contextKind'] => {\n if (item.assignmentSource === 'GLOBAL') return 'global';\n return 'project';\n};\n\nexport const toPublishedSkillSummary = (item: PublishedSkillCatalogItemLike): PublishedSkillSummary => {\n const contextKind = getSkillContextKind(item);\n\n return {\n skillSlug: item.skill.slug,\n skillName: item.skill.name,\n artifactName: item.publishedArtifact.frontmatterName,\n artifactDescription: item.publishedArtifact.frontmatterDescription,\n whenToUse: item.skill.whenToUse ?? null,\n version: item.skillVersion.version,\n assignmentSource: item.assignmentSource,\n assignmentType: item.assignmentType,\n scopePath: item.scopePath,\n includeChildren: item.includeChildren ?? null,\n checksum: item.publishedArtifact.checksum,\n publishedAt: item.publishedArtifact.publishedAt,\n fileCount: item.publishedArtifact.fileCount,\n identifiers: getSkillIdentifiers(item),\n tags: item.skill.tags.map(toPublishedSkillTagSummary),\n contextKind,\n installPolicy: item.skill.installPolicy,\n assignmentLabel: getPublishedSkillAssignmentLabel(item.assignmentSource),\n policyLabel: getPublishedSkillPolicyLabel({\n assignmentSource: item.assignmentSource,\n contextKind,\n policy: item.skill.installPolicy,\n }),\n };\n};\n\nexport const toPublishedSkillDetail = (item: PublishedSkillDetailItemLike): PublishedSkillDetail => ({\n ...toPublishedSkillSummary(item),\n skillId: item.skill.id,\n skillVersionId: item.skillVersion.id,\n artifactId: item.publishedArtifact.id,\n markdownDocument: buildSkillMarkdown(item),\n markdownBody: item.publishedArtifact.markdownBody,\n renderedContent: item.publishedArtifact.renderedContent,\n files: item.publishedArtifact.files,\n resources: item.publishedArtifact.files.filter((file) => file.relativePath !== 'SKILL.md'),\n});\n\nconst getWizardArtifactContextKind = (item: WizardArtifactCatalogItemLike): WizardArtifactSummary['contextKind'] => {\n if (item.assignmentSource === 'GLOBAL') return 'global';\n if (item.assignmentSource === 'CATALOG') return 'installable';\n return 'project';\n};\n\nconst getWizardArtifactIdentifiers = (item: WizardArtifactCatalogItemLike): string[] => {\n const candidates = [item.artifact.slug, item.artifactVersion.frontmatterName, item.artifact.name];\n const seen = new Set<string>();\n return candidates.reduce<string[]>((all, candidate) => {\n const normalized = candidate.trim();\n if (!normalized) return all;\n const cacheKey = normalized.toLowerCase();\n if (seen.has(cacheKey)) return all;\n seen.add(cacheKey);\n all.push(normalized);\n return all;\n }, []);\n};\n\nexport const toWizardArtifactSummary = (item: WizardArtifactCatalogItemLike): WizardArtifactSummary => {\n const contextKind = getWizardArtifactContextKind(item);\n return {\n artifactKind: item.artifact.kind,\n artifactSlug: item.artifact.slug,\n artifactName: item.artifactVersion.frontmatterName || item.artifact.name,\n artifactDescription: item.artifactVersion.frontmatterDescription || item.artifact.summary || '',\n whenToUse: item.artifact.whenToUse ?? null,\n version: item.artifactVersion.version,\n assignmentSource: item.assignmentSource,\n assignmentType: item.assignmentType,\n scopePath: item.scopePath,\n includeChildren: item.includeChildren ?? null,\n checksum: item.artifactVersion.checksum,\n publishedAt: item.artifactVersion.publishedAt,\n fileCount: item.artifactVersion.fileCount,\n canonicalFilePath: item.artifactVersion.canonicalFilePath,\n identifiers: getWizardArtifactIdentifiers(item),\n contextKind,\n installPolicy: item.artifact.installPolicy,\n assignmentLabel: getPublishedSkillAssignmentLabel(item.assignmentSource),\n policyLabel: getPublishedSkillPolicyLabel({\n assignmentSource: item.assignmentSource,\n contextKind,\n policy: item.artifact.installPolicy,\n }),\n };\n};\n\nexport const buildWizardArtifactMarkdown = (item: WizardArtifactDetailLike): string => {\n const body = item.artifactVersion.markdownBody.trim() || item.artifactVersion.renderedContent.trim();\n if (body.endsWith('\\n')) return body;\n return `${body}\\n`;\n};\n\nexport const toWizardArtifactDetail = (item: WizardArtifactDetailLike): WizardArtifactDetail => ({\n ...toWizardArtifactSummary(item),\n artifactId: item.artifact.id,\n artifactVersionId: item.artifactVersion.id,\n markdownDocument: buildWizardArtifactMarkdown(item),\n markdownBody: item.artifactVersion.markdownBody,\n renderedContent: item.artifactVersion.renderedContent,\n files: item.artifactVersion.files,\n resources: item.artifactVersion.files.filter((file) => file.relativePath !== item.artifactVersion.canonicalFilePath),\n});\n\nexport const toWizardArtifactCatalog = (\n payload: WizardArtifactCatalogPayloadLike,\n options: { pluginId: string; availableTools: string[] },\n): WizardArtifactCatalogState => ({\n pluginId: options.pluginId,\n runtimeMode: 'tool_fetch_only',\n deliveryModel: 'backend_published_generic_artifacts',\n artifactKind: payload.artifactKind,\n workspace: payload.workspace,\n directoryPath: payload.directoryPath,\n availableTools: options.availableTools,\n artifactCount: payload.artifacts.length,\n artifacts: payload.artifacts.map(toWizardArtifactSummary),\n catalogArtifacts: payload.catalogArtifacts.map((item) =>\n toWizardArtifactSummary({\n ...item,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n }),\n ),\n});\n\nexport const toInstallableSkillSummary = (item: PublishedSkillInstallableCatalogItemLike): PublishedSkillSummary => ({\n skillSlug: item.skill.slug,\n skillName: item.skill.name,\n artifactName: item.publishedArtifact.frontmatterName,\n artifactDescription: item.publishedArtifact.frontmatterDescription,\n whenToUse: item.skill.whenToUse ?? null,\n version: item.skillVersion.version,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n checksum: item.publishedArtifact.checksum,\n publishedAt: item.publishedArtifact.publishedAt,\n fileCount: item.publishedArtifact.fileCount,\n identifiers: getSkillIdentifiers({\n ...item,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n }),\n tags: item.skill.tags.map(toPublishedSkillTagSummary),\n contextKind: 'installable',\n installPolicy: item.skill.installPolicy,\n assignmentLabel: 'catalog skill',\n policyLabel: getPublishedSkillPolicyLabel({\n assignmentSource: 'CATALOG',\n contextKind: 'installable',\n policy: item.skill.installPolicy,\n }),\n});\n\nexport const toPublishedSkillCatalog = (\n payload: PublishedSkillCatalogPayloadLike,\n options: PublishedSkillCatalogOptions,\n): PublishedSkillsSuccessState => ({\n pluginId: options.pluginId,\n runtimeMode: 'tool_fetch_only',\n deliveryModel: 'backend_published_installed_effective_skills',\n workspace: payload.workspace,\n directoryPath: payload.directoryPath,\n rootSkillSeedPath: options.rootSkillSeedPath,\n availableTools: options.availableTools,\n publishedSkillCount: payload.skills.length,\n assignmentCounts: getPublishedSkillAssignmentCounts(payload.skills),\n facets: getPublishedSkillFacets(payload.skills),\n skills: payload.skills.map(toPublishedSkillSummary),\n});\n\nconst normalizeSkillIdentifier = (value: string): string => value.trim().toLowerCase();\n\nconst parseSkillIdentifiers = (value: string): string[] => {\n const seen = new Set<string>();\n\n return value\n .split(/[\\n,]/)\n .map((item) => item.trim())\n .filter((item) => item.length > 0)\n .filter((item) => {\n const normalized = normalizeSkillIdentifier(item);\n if (seen.has(normalized)) return false;\n seen.add(normalized);\n return true;\n });\n};\n\nconst mergeSkillIdentifiers = (values: string[]): string[] => {\n const seen = new Set<string>();\n\n return values.filter((value) => {\n const normalized = normalizeSkillIdentifier(value);\n if (!normalized || seen.has(normalized)) return false;\n seen.add(normalized);\n return true;\n });\n};\n\nexport const parseRequestedSkillArgs = (args: { skill?: string; skills?: string }): string[] => {\n const requestedSkills: string[] = [];\n\n if (typeof args.skill === 'string') {\n requestedSkills.push(...parseSkillIdentifiers(args.skill));\n }\n\n if (typeof args.skills === 'string') {\n requestedSkills.push(...parseSkillIdentifiers(args.skills));\n }\n\n return mergeSkillIdentifiers(requestedSkills);\n};\n\nexport const selectPublishedSkills = <TItem extends PublishedSkillCatalogItemLike>(\n payload: Omit<PublishedSkillCatalogPayloadLike<TItem>, 'skills'> & { skills: TItem[] },\n identifiers: string[],\n) => {\n const itemsByIdentifier = new Map<string, TItem>();\n\n for (const item of payload.skills) {\n for (const identifier of getSkillIdentifiers(item)) {\n itemsByIdentifier.set(normalizeSkillIdentifier(identifier), item);\n }\n }\n\n const selectedItems: TItem[] = [];\n const selectedKeys = new Set<string>();\n const missingIdentifiers: string[] = [];\n\n for (const identifier of identifiers) {\n const matched = itemsByIdentifier.get(normalizeSkillIdentifier(identifier));\n if (!matched) {\n missingIdentifiers.push(identifier);\n continue;\n }\n\n if (selectedKeys.has(matched.publishedArtifact.id)) {\n continue;\n }\n\n selectedKeys.add(matched.publishedArtifact.id);\n selectedItems.push(matched);\n }\n\n return {\n selectedItems,\n missingIdentifiers,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["getPublishedSkillAssignmentLabel","getPublishedSkillPolicyLabel","isUserPublishedSkillAssignment","toFrontmatterString","value","JSON","stringify","formatSkillLabel","item","artifactName","publishedArtifact","frontmatterName","trim","length","skill","name","buildSkillMarkdown","artifactBody","markdownBody","fallbackBody","renderedContent","body","startsWith","endsWith","description","frontmatterDescription","summary","frontmatter","join","getSkillIdentifiers","candidates","slug","seen","Set","reduce","all","candidate","normalized","cacheKey","toLowerCase","has","add","push","toPublishedSkillFacetSummary","facet","label","toPublishedSkillTagSummary","tag","getPublishedSkillFacets","items","facetsBySlug","Map","tags","set","values","sort","left","right","localeCompare","getPublishedSkillAssignmentCounts","counts","assignmentSource","user","global","project","other","getSkillContextKind","getRevision","checksum","updatedAtCursor","fallbackTimestamp","toPublishedSkillSummary","contextKind","skillSlug","skillName","artifactDescription","whenToUse","version","skillVersion","assignmentType","scopePath","includeChildren","revision","publishedAt","fileCount","identifiers","map","installPolicy","assignmentLabel","policyLabel","policy","toPublishedSkillDetail","skillId","id","skillVersionId","artifactId","markdownDocument","files","resources","filter","file","relativePath","getWizardArtifactContextKind","getWizardArtifactIdentifiers","artifact","artifactVersion","toWizardArtifactSummary","artifactKind","kind","artifactSlug","canonicalFilePath","buildWizardArtifactMarkdown","toWizardArtifactDetail","artifactVersionId","toWizardArtifactCatalog","payload","options","pluginId","runtimeMode","deliveryModel","workspace","directoryPath","availableTools","artifactCount","artifacts","catalogArtifacts","toInstallableSkillSummary","toPublishedSkillCatalog","rootSkillSeedPath","publishedSkillCount","skills","assignmentCounts","facets","normalizeSkillIdentifier","parseSkillIdentifiers","split","mergeSkillIdentifiers","parseRequestedSkillArgs","args","requestedSkills","selectPublishedSkills","itemsByIdentifier","identifier","selectedItems","selectedKeys","missingIdentifiers","matched","get"],"sources":["../src/published-skills-transform.ts"],"sourcesContent":["import {\n getPublishedSkillAssignmentLabel,\n getPublishedSkillPolicyLabel,\n isUserPublishedSkillAssignment,\n} from './published-skills-terminology.js';\n\nexport { isUserPublishedSkillAssignment } from './published-skills-terminology.js';\n\ntype PublishedSkillFacetLike = {\n slug: string;\n label: string;\n description?: string | null;\n};\n\ntype PublishedSkillTagLike = {\n slug: string;\n label: string;\n description?: string | null;\n facet?: PublishedSkillFacetLike | null;\n};\n\ntype PublishedSkillInstallPolicy = 'GLOBAL_CONTEXT' | 'PROJECT_INSTALLABLE';\n\ntype PublishedSkillCatalogItemLike = {\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: PublishedSkillTagLike[];\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\ntype PublishedSkillArtifactFileLike = {\n id: string;\n relativePath: string;\n contentType: string;\n content: string;\n checksum: string;\n size: number;\n sortOrder: number;\n};\n\ntype PublishedSkillDetailItemLike = PublishedSkillCatalogItemLike & {\n publishedArtifact: PublishedSkillCatalogItemLike['publishedArtifact'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFileLike[];\n };\n};\n\ntype PublishedSkillInstallableCatalogItemLike = Pick<\n PublishedSkillCatalogItemLike,\n 'skill' | 'skillVersion' | 'publishedArtifact'\n>;\n\ntype PublishedSkillCatalogPayloadLike<TItem extends PublishedSkillCatalogItemLike = PublishedSkillCatalogItemLike> = {\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: TItem[];\n catalogSkills: PublishedSkillInstallableCatalogItemLike[];\n userPreferences: {\n scopeKey: string;\n userKey: string;\n ignoredSkills: PublishedSkillCatalogItemLike[];\n };\n};\n\nexport type PublishedSkillFacetSummary = {\n slug: string;\n label: string;\n description: string | null;\n};\n\nexport type PublishedSkillTagSummary = {\n slug: string;\n label: string;\n description: string | null;\n facet: PublishedSkillFacetSummary | null;\n};\n\nexport type PublishedSkillSummary = {\n skillSlug: string;\n skillName: string;\n artifactName: string;\n artifactDescription: string;\n whenToUse: string | null;\n version: string;\n assignmentSource: string;\n assignmentType: string;\n scopePath: string;\n includeChildren: boolean | null;\n checksum: string;\n revision: string;\n updatedAtCursor: string;\n publishedAt: string;\n fileCount: number;\n identifiers: string[];\n tags: PublishedSkillTagSummary[];\n contextKind: 'global' | 'project' | 'installable';\n installPolicy: PublishedSkillInstallPolicy;\n assignmentLabel: string;\n policyLabel: string;\n};\n\nexport type PublishedSkillDetail = PublishedSkillSummary & {\n skillId: string;\n skillVersionId: string;\n artifactId: string;\n markdownDocument: string;\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFileLike[];\n resources: PublishedSkillArtifactFileLike[];\n};\n\ntype WizardArtifactKind = 'SKILL' | 'DESIGN_DOC';\n\ntype WizardArtifactCatalogItemLike = {\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\ntype WizardArtifactDetailLike = WizardArtifactCatalogItemLike & {\n artifactVersion: WizardArtifactCatalogItemLike['artifactVersion'] & {\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFileLike[];\n };\n};\n\ntype WizardArtifactCatalogPayloadLike = {\n artifactKind: WizardArtifactKind;\n workspace: PublishedSkillCatalogPayloadLike['workspace'];\n directoryPath: string;\n artifacts: WizardArtifactCatalogItemLike[];\n catalogArtifacts: Pick<WizardArtifactCatalogItemLike, 'artifact' | 'artifactVersion'>[];\n artifactPreferences: {\n scopeKey: string;\n userKey: string;\n ignoredArtifacts: WizardArtifactCatalogItemLike[];\n };\n};\n\nexport type WizardArtifactSummary = {\n artifactKind: WizardArtifactKind;\n artifactSlug: string;\n artifactName: string;\n artifactDescription: string;\n whenToUse: string | null;\n version: string;\n assignmentSource: string;\n assignmentType: string;\n scopePath: string;\n includeChildren: boolean | null;\n checksum: string;\n revision: string;\n updatedAtCursor: string;\n publishedAt: string;\n fileCount: number;\n canonicalFilePath: string;\n identifiers: string[];\n contextKind: 'global' | 'project' | 'installable';\n installPolicy: PublishedSkillInstallPolicy;\n assignmentLabel: string;\n policyLabel: string;\n};\n\nexport type WizardArtifactDetail = WizardArtifactSummary & {\n artifactId: string;\n artifactVersionId: string;\n markdownDocument: string;\n markdownBody: string;\n renderedContent: string;\n files: PublishedSkillArtifactFileLike[];\n resources: PublishedSkillArtifactFileLike[];\n};\n\nexport type WizardArtifactCatalogState = {\n pluginId: string;\n runtimeMode: 'tool_fetch_only';\n deliveryModel: 'backend_published_generic_artifacts';\n artifactKind: WizardArtifactKind;\n workspace: PublishedSkillCatalogPayloadLike['workspace'];\n directoryPath: string;\n availableTools: string[];\n artifactCount: number;\n artifacts: WizardArtifactSummary[];\n catalogArtifacts: WizardArtifactSummary[];\n};\n\nexport type PublishedSkillsSuccessState = {\n pluginId: string;\n runtimeMode: 'tool_fetch_only';\n deliveryModel: 'backend_published_installed_effective_skills';\n workspace: PublishedSkillCatalogPayloadLike['workspace'];\n directoryPath: string;\n rootSkillSeedPath: string;\n availableTools: string[];\n publishedSkillCount: number;\n assignmentCounts: {\n global: number;\n project: number;\n user: number;\n other: number;\n };\n facets: PublishedSkillFacetSummary[];\n skills: PublishedSkillSummary[];\n};\n\ntype PublishedSkillCatalogOptions = {\n pluginId: string;\n rootSkillSeedPath: string;\n availableTools: string[];\n};\n\nconst toFrontmatterString = (value: string): string => JSON.stringify(value);\n\nexport const formatSkillLabel = (item: PublishedSkillCatalogItemLike): string => {\n const artifactName = item.publishedArtifact.frontmatterName.trim();\n if (artifactName.length > 0) return artifactName;\n return item.skill.name;\n};\n\nexport const buildSkillMarkdown = (item: PublishedSkillDetailItemLike): string => {\n const artifactBody = item.publishedArtifact.markdownBody.trim();\n const fallbackBody = item.publishedArtifact.renderedContent.trim();\n const body = artifactBody || fallbackBody;\n\n if (body.startsWith('---')) {\n return body.endsWith('\\n') ? body : `${body}\\n`;\n }\n\n const name = formatSkillLabel(item);\n const description = item.publishedArtifact.frontmatterDescription.trim() || item.skill.summary?.trim() || '';\n const frontmatter = ['---', `name: ${toFrontmatterString(name)}`, `description: ${toFrontmatterString(description)}`, '---'].join(\n '\\n',\n );\n\n if (!body) {\n return `${frontmatter}\\n`;\n }\n\n return `${frontmatter}\\n\\n${body.endsWith('\\n') ? body : `${body}\\n`}`;\n};\n\nconst getSkillIdentifiers = (item: PublishedSkillCatalogItemLike): string[] => {\n const candidates = [item.skill.slug, item.publishedArtifact.frontmatterName, item.skill.name];\n const seen = new Set<string>();\n\n return candidates.reduce<string[]>((all, candidate) => {\n const normalized = candidate.trim();\n if (!normalized) return all;\n\n const cacheKey = normalized.toLowerCase();\n if (seen.has(cacheKey)) return all;\n\n seen.add(cacheKey);\n all.push(normalized);\n return all;\n }, []);\n};\n\nconst toPublishedSkillFacetSummary = (facet: PublishedSkillFacetLike): PublishedSkillFacetSummary => ({\n slug: facet.slug,\n label: facet.label,\n description: facet.description ?? null,\n});\n\nconst toPublishedSkillTagSummary = (tag: PublishedSkillTagLike): PublishedSkillTagSummary => ({\n slug: tag.slug,\n label: tag.label,\n description: tag.description ?? null,\n facet: tag.facet ? toPublishedSkillFacetSummary(tag.facet) : null,\n});\n\nconst getPublishedSkillFacets = (items: PublishedSkillCatalogItemLike[]): PublishedSkillFacetSummary[] => {\n const facetsBySlug = new Map<string, PublishedSkillFacetSummary>();\n\n for (const item of items) {\n for (const tag of item.skill.tags) {\n if (!tag.facet) continue;\n if (facetsBySlug.has(tag.facet.slug)) continue;\n facetsBySlug.set(tag.facet.slug, toPublishedSkillFacetSummary(tag.facet));\n }\n }\n\n return [...facetsBySlug.values()].sort((left, right) => left.slug.localeCompare(right.slug));\n};\n\nconst getPublishedSkillAssignmentCounts = (\n items: PublishedSkillCatalogItemLike[],\n): PublishedSkillsSuccessState['assignmentCounts'] =>\n items.reduce<PublishedSkillsSuccessState['assignmentCounts']>(\n (counts, item) => {\n if (isUserPublishedSkillAssignment(item.assignmentSource)) {\n return {\n ...counts,\n user: counts.user + 1,\n };\n }\n\n if (item.assignmentSource === 'GLOBAL') {\n return {\n ...counts,\n global: counts.global + 1,\n };\n }\n\n if (item.assignmentSource === 'WORKSPACE') {\n return {\n ...counts,\n project: counts.project + 1,\n };\n }\n\n return {\n ...counts,\n other: counts.other + 1,\n };\n },\n {\n global: 0,\n project: 0,\n user: 0,\n other: 0,\n },\n );\n\nconst getSkillContextKind = (item: PublishedSkillCatalogItemLike): PublishedSkillSummary['contextKind'] => {\n if (item.assignmentSource === 'GLOBAL') return 'global';\n return 'project';\n};\n\nconst getRevision = (checksum: string, updatedAtCursor: string | null | undefined, fallbackTimestamp: string | null | undefined): string => {\n return `${checksum}:${updatedAtCursor ?? fallbackTimestamp ?? 'unpublished'}`;\n};\n\nexport const toPublishedSkillSummary = (item: PublishedSkillCatalogItemLike): PublishedSkillSummary => {\n const contextKind = getSkillContextKind(item);\n\n return {\n skillSlug: item.skill.slug,\n skillName: item.skill.name,\n artifactName: item.publishedArtifact.frontmatterName,\n artifactDescription: item.publishedArtifact.frontmatterDescription,\n whenToUse: item.skill.whenToUse ?? null,\n version: item.skillVersion.version,\n assignmentSource: item.assignmentSource,\n assignmentType: item.assignmentType,\n scopePath: item.scopePath,\n includeChildren: item.includeChildren ?? null,\n checksum: item.publishedArtifact.checksum,\n revision:\n item.publishedArtifact.revision ??\n getRevision(item.publishedArtifact.checksum, item.publishedArtifact.updatedAtCursor, item.publishedArtifact.publishedAt),\n updatedAtCursor: item.publishedArtifact.updatedAtCursor ?? item.publishedArtifact.publishedAt ?? 'unpublished',\n publishedAt: item.publishedArtifact.publishedAt ?? 'unpublished',\n fileCount: item.publishedArtifact.fileCount,\n identifiers: getSkillIdentifiers(item),\n tags: item.skill.tags.map(toPublishedSkillTagSummary),\n contextKind,\n installPolicy: item.skill.installPolicy,\n assignmentLabel: getPublishedSkillAssignmentLabel(item.assignmentSource),\n policyLabel: getPublishedSkillPolicyLabel({\n assignmentSource: item.assignmentSource,\n contextKind,\n policy: item.skill.installPolicy,\n }),\n };\n};\n\nexport const toPublishedSkillDetail = (item: PublishedSkillDetailItemLike): PublishedSkillDetail => ({\n ...toPublishedSkillSummary(item),\n skillId: item.skill.id,\n skillVersionId: item.skillVersion.id,\n artifactId: item.publishedArtifact.id,\n markdownDocument: buildSkillMarkdown(item),\n markdownBody: item.publishedArtifact.markdownBody,\n renderedContent: item.publishedArtifact.renderedContent,\n files: item.publishedArtifact.files,\n resources: item.publishedArtifact.files.filter((file) => file.relativePath !== 'SKILL.md'),\n});\n\nconst getWizardArtifactContextKind = (item: WizardArtifactCatalogItemLike): WizardArtifactSummary['contextKind'] => {\n if (item.assignmentSource === 'GLOBAL') return 'global';\n if (item.assignmentSource === 'CATALOG') return 'installable';\n return 'project';\n};\n\nconst getWizardArtifactIdentifiers = (item: WizardArtifactCatalogItemLike): string[] => {\n const candidates = [item.artifact.slug, item.artifactVersion.frontmatterName, item.artifact.name];\n const seen = new Set<string>();\n return candidates.reduce<string[]>((all, candidate) => {\n const normalized = candidate.trim();\n if (!normalized) return all;\n const cacheKey = normalized.toLowerCase();\n if (seen.has(cacheKey)) return all;\n seen.add(cacheKey);\n all.push(normalized);\n return all;\n }, []);\n};\n\nexport const toWizardArtifactSummary = (item: WizardArtifactCatalogItemLike): WizardArtifactSummary => {\n const contextKind = getWizardArtifactContextKind(item);\n return {\n artifactKind: item.artifact.kind,\n artifactSlug: item.artifact.slug,\n artifactName: item.artifactVersion.frontmatterName || item.artifact.name,\n artifactDescription: item.artifactVersion.frontmatterDescription || item.artifact.summary || '',\n whenToUse: item.artifact.whenToUse ?? null,\n version: item.artifactVersion.version,\n assignmentSource: item.assignmentSource,\n assignmentType: item.assignmentType,\n scopePath: item.scopePath,\n includeChildren: item.includeChildren ?? null,\n checksum: item.artifactVersion.checksum,\n revision:\n item.artifactVersion.revision ??\n getRevision(item.artifactVersion.checksum, item.artifactVersion.updatedAtCursor, item.artifactVersion.publishedAt),\n updatedAtCursor: item.artifactVersion.updatedAtCursor ?? item.artifactVersion.publishedAt ?? 'unpublished',\n publishedAt: item.artifactVersion.publishedAt ?? 'unpublished',\n fileCount: item.artifactVersion.fileCount,\n canonicalFilePath: item.artifactVersion.canonicalFilePath,\n identifiers: getWizardArtifactIdentifiers(item),\n contextKind,\n installPolicy: item.artifact.installPolicy,\n assignmentLabel: getPublishedSkillAssignmentLabel(item.assignmentSource),\n policyLabel: getPublishedSkillPolicyLabel({\n assignmentSource: item.assignmentSource,\n contextKind,\n policy: item.artifact.installPolicy,\n }),\n };\n};\n\nexport const buildWizardArtifactMarkdown = (item: WizardArtifactDetailLike): string => {\n const body = item.artifactVersion.markdownBody.trim() || item.artifactVersion.renderedContent.trim();\n if (body.endsWith('\\n')) return body;\n return `${body}\\n`;\n};\n\nexport const toWizardArtifactDetail = (item: WizardArtifactDetailLike): WizardArtifactDetail => ({\n ...toWizardArtifactSummary(item),\n artifactId: item.artifact.id,\n artifactVersionId: item.artifactVersion.id,\n markdownDocument: buildWizardArtifactMarkdown(item),\n markdownBody: item.artifactVersion.markdownBody,\n renderedContent: item.artifactVersion.renderedContent,\n files: item.artifactVersion.files,\n resources: item.artifactVersion.files.filter((file) => file.relativePath !== item.artifactVersion.canonicalFilePath),\n});\n\nexport const toWizardArtifactCatalog = (\n payload: WizardArtifactCatalogPayloadLike,\n options: { pluginId: string; availableTools: string[] },\n): WizardArtifactCatalogState => ({\n pluginId: options.pluginId,\n runtimeMode: 'tool_fetch_only',\n deliveryModel: 'backend_published_generic_artifacts',\n artifactKind: payload.artifactKind,\n workspace: payload.workspace,\n directoryPath: payload.directoryPath,\n availableTools: options.availableTools,\n artifactCount: payload.artifacts.length,\n artifacts: payload.artifacts.map(toWizardArtifactSummary),\n catalogArtifacts: payload.catalogArtifacts.map((item) =>\n toWizardArtifactSummary({\n ...item,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n }),\n ),\n});\n\nexport const toInstallableSkillSummary = (item: PublishedSkillInstallableCatalogItemLike): PublishedSkillSummary => ({\n skillSlug: item.skill.slug,\n skillName: item.skill.name,\n artifactName: item.publishedArtifact.frontmatterName,\n artifactDescription: item.publishedArtifact.frontmatterDescription,\n whenToUse: item.skill.whenToUse ?? null,\n version: item.skillVersion.version,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n checksum: item.publishedArtifact.checksum,\n revision:\n item.publishedArtifact.revision ??\n getRevision(item.publishedArtifact.checksum, item.publishedArtifact.updatedAtCursor, item.publishedArtifact.publishedAt),\n updatedAtCursor: item.publishedArtifact.updatedAtCursor ?? item.publishedArtifact.publishedAt ?? 'unpublished',\n publishedAt: item.publishedArtifact.publishedAt ?? 'unpublished',\n fileCount: item.publishedArtifact.fileCount,\n identifiers: getSkillIdentifiers({\n ...item,\n assignmentSource: 'CATALOG',\n assignmentType: 'PATH',\n scopePath: '',\n includeChildren: true,\n }),\n tags: item.skill.tags.map(toPublishedSkillTagSummary),\n contextKind: 'installable',\n installPolicy: item.skill.installPolicy,\n assignmentLabel: 'catalog skill',\n policyLabel: getPublishedSkillPolicyLabel({\n assignmentSource: 'CATALOG',\n contextKind: 'installable',\n policy: item.skill.installPolicy,\n }),\n});\n\nexport const toPublishedSkillCatalog = (\n payload: PublishedSkillCatalogPayloadLike,\n options: PublishedSkillCatalogOptions,\n): PublishedSkillsSuccessState => ({\n pluginId: options.pluginId,\n runtimeMode: 'tool_fetch_only',\n deliveryModel: 'backend_published_installed_effective_skills',\n workspace: payload.workspace,\n directoryPath: payload.directoryPath,\n rootSkillSeedPath: options.rootSkillSeedPath,\n availableTools: options.availableTools,\n publishedSkillCount: payload.skills.length,\n assignmentCounts: getPublishedSkillAssignmentCounts(payload.skills),\n facets: getPublishedSkillFacets(payload.skills),\n skills: payload.skills.map(toPublishedSkillSummary),\n});\n\nconst normalizeSkillIdentifier = (value: string): string => value.trim().toLowerCase();\n\nconst parseSkillIdentifiers = (value: string): string[] => {\n const seen = new Set<string>();\n\n return value\n .split(/[\\n,]/)\n .map((item) => item.trim())\n .filter((item) => item.length > 0)\n .filter((item) => {\n const normalized = normalizeSkillIdentifier(item);\n if (seen.has(normalized)) return false;\n seen.add(normalized);\n return true;\n });\n};\n\nconst mergeSkillIdentifiers = (values: string[]): string[] => {\n const seen = new Set<string>();\n\n return values.filter((value) => {\n const normalized = normalizeSkillIdentifier(value);\n if (!normalized || seen.has(normalized)) return false;\n seen.add(normalized);\n return true;\n });\n};\n\nexport const parseRequestedSkillArgs = (args: { skill?: string; skills?: string }): string[] => {\n const requestedSkills: string[] = [];\n\n if (typeof args.skill === 'string') {\n requestedSkills.push(...parseSkillIdentifiers(args.skill));\n }\n\n if (typeof args.skills === 'string') {\n requestedSkills.push(...parseSkillIdentifiers(args.skills));\n }\n\n return mergeSkillIdentifiers(requestedSkills);\n};\n\nexport const selectPublishedSkills = <TItem extends PublishedSkillCatalogItemLike>(\n payload: Omit<PublishedSkillCatalogPayloadLike<TItem>, 'skills'> & { skills: TItem[] },\n identifiers: string[],\n) => {\n const itemsByIdentifier = new Map<string, TItem>();\n\n for (const item of payload.skills) {\n for (const identifier of getSkillIdentifiers(item)) {\n itemsByIdentifier.set(normalizeSkillIdentifier(identifier), item);\n }\n }\n\n const selectedItems: TItem[] = [];\n const selectedKeys = new Set<string>();\n const missingIdentifiers: string[] = [];\n\n for (const identifier of identifiers) {\n const matched = itemsByIdentifier.get(normalizeSkillIdentifier(identifier));\n if (!matched) {\n missingIdentifiers.push(identifier);\n continue;\n }\n\n if (selectedKeys.has(matched.publishedArtifact.id)) {\n continue;\n }\n\n selectedKeys.add(matched.publishedArtifact.id);\n selectedItems.push(matched);\n }\n\n return {\n selectedItems,\n missingIdentifiers,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { strFromU8, unzipSync } from 'fflate';
|
|
1
2
|
const GETDESIGN_RAW_BASE = 'https://raw.githubusercontent.com/VoltAgent/awesome-design-md/main/design-md';
|
|
3
|
+
const ZIP_MARKDOWN_FILE_PRIORITY = ['SKILL.md', 'skill.md', 'Skill.md', 'README.md', 'readme.md'];
|
|
2
4
|
const tokenizeCommandLikeInput = input => {
|
|
3
5
|
const tokens = input.match(/(?:[^\s"']+|"[^"]*"|'[^']*')+/g) ?? [];
|
|
4
6
|
return tokens.map(token => token.replace(/^("|')|("|')$/g, ''));
|
|
@@ -34,8 +36,46 @@ const toRawGithubUrl = inputUrl => {
|
|
|
34
36
|
}
|
|
35
37
|
return null;
|
|
36
38
|
};
|
|
39
|
+
const isZipUrl = inputUrl => {
|
|
40
|
+
try {
|
|
41
|
+
return new URL(inputUrl).pathname.toLowerCase().endsWith('.zip');
|
|
42
|
+
} catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const zipSourceRef = (sourceRef, markdownPath) => {
|
|
47
|
+
const separator = sourceRef.includes('#') ? '&' : '#';
|
|
48
|
+
return `${sourceRef}${separator}path=${encodeURIComponent(markdownPath)}`;
|
|
49
|
+
};
|
|
50
|
+
const zipPathDepth = entryPath => entryPath.split('/').filter(Boolean).length;
|
|
51
|
+
const selectZipMarkdownEntry = archive => {
|
|
52
|
+
const candidates = Object.entries(archive).map(([entryPath, bytes]) => {
|
|
53
|
+
const fileName = entryPath.split('/').filter(Boolean).at(-1) ?? '';
|
|
54
|
+
const priority = ZIP_MARKDOWN_FILE_PRIORITY.indexOf(fileName);
|
|
55
|
+
if (priority < 0) return null;
|
|
56
|
+
return {
|
|
57
|
+
path: entryPath,
|
|
58
|
+
content: strFromU8(bytes),
|
|
59
|
+
priority,
|
|
60
|
+
depth: zipPathDepth(entryPath)
|
|
61
|
+
};
|
|
62
|
+
}).filter(candidate => candidate !== null).sort((left, right) => {
|
|
63
|
+
if (left.priority !== right.priority) return left.priority - right.priority;
|
|
64
|
+
if (left.depth !== right.depth) return left.depth - right.depth;
|
|
65
|
+
if (left.path.length !== right.path.length) return left.path.length - right.path.length;
|
|
66
|
+
return left.path.localeCompare(right.path);
|
|
67
|
+
});
|
|
68
|
+
return candidates[0] ?? null;
|
|
69
|
+
};
|
|
70
|
+
const extractMarkdownFromZip = bytes => {
|
|
71
|
+
const archive = unzipSync(new Uint8Array(bytes));
|
|
72
|
+
const selectedEntry = selectZipMarkdownEntry(archive);
|
|
73
|
+
if (!selectedEntry) throw new Error('No SKILL.md or README.md markdown file found in zip archive.');
|
|
74
|
+
return selectedEntry;
|
|
75
|
+
};
|
|
37
76
|
const buildGithubSkillCandidateUrls = (sourceUrl, skill) => {
|
|
38
77
|
const parsedUrl = new URL(sourceUrl);
|
|
78
|
+
if (isZipUrl(sourceUrl)) return [sourceUrl];
|
|
39
79
|
if (parsedUrl.hostname === 'raw.githubusercontent.com') return [parsedUrl.toString()];
|
|
40
80
|
if (parsedUrl.hostname !== 'github.com') return [sourceUrl];
|
|
41
81
|
const rawUrl = toRawGithubUrl(sourceUrl);
|
|
@@ -101,6 +141,15 @@ export const fetchWizardArtifactImportSource = async input => {
|
|
|
101
141
|
errors.push(`${candidateUrl}: HTTP ${response.status}`);
|
|
102
142
|
continue;
|
|
103
143
|
}
|
|
144
|
+
if (isZipUrl(candidateUrl)) {
|
|
145
|
+
const zipMarkdown = extractMarkdownFromZip(await response.arrayBuffer());
|
|
146
|
+
return {
|
|
147
|
+
...plan,
|
|
148
|
+
markdownContent: zipMarkdown.content,
|
|
149
|
+
fetchedUrl: candidateUrl,
|
|
150
|
+
sourceRef: zipSourceRef(plan.sourceRef, zipMarkdown.path)
|
|
151
|
+
};
|
|
152
|
+
}
|
|
104
153
|
return {
|
|
105
154
|
...plan,
|
|
106
155
|
markdownContent: await response.text(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GETDESIGN_RAW_BASE","tokenizeCommandLikeInput","input","tokens","match","map","token","replace","normalizeSlug","value","trim","toLowerCase","parseOptionValue","optionName","inlinePrefix","inlineToken","find","startsWith","slice","length","optionIndex","indexOf","toWizardArtifactKind","normalized","toUpperCase","Error","firstUrlToken","test","toRawGithubUrl","inputUrl","parsedUrl","URL","hostname","toString","parts","pathname","split","filter","Boolean","owner","repo","marker","branch","rest","join","buildGithubSkillCandidateUrls","sourceUrl","skill","rawUrl","endsWith","treePathParts","branches","treePath","skillSlug","paths","Set","add","flatMap","candidateBranch","candidatePath","planWizardArtifactImport","source","optionSkill","getdesignSlug","index","inferredKind","includes","artifactKind","rawSlug","slug","directUrl","candidateUrls","sourceRef","fetchWizardArtifactImportSource","plan","errors","candidateUrl","response","fetch","signal","ok","push","status","markdownContent","text","fetchedUrl","error","message"],"sources":["../../src/server/import-sources.ts"],"sourcesContent":["import type { WizardArtifactKind } from './types.js';\n\ntype ImportSourcePlan = {\n artifactKind: WizardArtifactKind;\n slug: string | null;\n skill: string | null;\n source: string;\n sourceRef: string;\n candidateUrls: string[];\n};\n\nexport type ResolvedImportSource = ImportSourcePlan & {\n markdownContent: string;\n fetchedUrl: string;\n};\n\nconst GETDESIGN_RAW_BASE = 'https://raw.githubusercontent.com/VoltAgent/awesome-design-md/main/design-md';\n\nconst tokenizeCommandLikeInput = (input: string): string[] => {\n const tokens = input.match(/(?:[^\\s\"']+|\"[^\"]*\"|'[^']*')+/g) ?? [];\n return tokens.map((token) => token.replace(/^(\"|')|(\"|')$/g, ''));\n};\n\nconst normalizeSlug = (value: string): string => {\n return value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n};\n\nconst parseOptionValue = (tokens: string[], optionName: string): string | null => {\n const inlinePrefix = `${optionName}=`;\n const inlineToken = tokens.find((token) => token.startsWith(inlinePrefix));\n if (inlineToken) return inlineToken.slice(inlinePrefix.length) || null;\n\n const optionIndex = tokens.indexOf(optionName);\n if (optionIndex < 0) return null;\n return tokens[optionIndex + 1] ?? null;\n};\n\nconst toWizardArtifactKind = (value: string): WizardArtifactKind => {\n const normalized = value.trim().toUpperCase();\n if (normalized === 'SKILL' || normalized === 'DESIGN_DOC') return normalized;\n throw new Error('artifactKind must be SKILL or DESIGN_DOC.');\n};\n\nconst firstUrlToken = (tokens: string[]): string | null => {\n return tokens.find((token) => /^https?:\\/\\//i.test(token)) ?? null;\n};\n\nconst toRawGithubUrl = (inputUrl: string): string | null => {\n const parsedUrl = new URL(inputUrl);\n if (parsedUrl.hostname === 'raw.githubusercontent.com') return parsedUrl.toString();\n if (parsedUrl.hostname !== 'github.com') return null;\n\n const parts = parsedUrl.pathname.split('/').filter(Boolean);\n if (parts.length < 2) return null;\n\n const [owner, repo, marker, branch, ...rest] = parts;\n if (marker === 'blob' || marker === 'tree') {\n return `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${rest.join('/')}`;\n }\n\n return null;\n};\n\nconst buildGithubSkillCandidateUrls = (sourceUrl: string, skill: string | null): string[] => {\n const parsedUrl = new URL(sourceUrl);\n if (parsedUrl.hostname === 'raw.githubusercontent.com') return [parsedUrl.toString()];\n if (parsedUrl.hostname !== 'github.com') return [sourceUrl];\n\n const rawUrl = toRawGithubUrl(sourceUrl);\n if (rawUrl?.endsWith('/SKILL.md')) return [rawUrl];\n\n const parts = parsedUrl.pathname.split('/').filter(Boolean);\n const [owner, repo, marker, branch, ...treePathParts] = parts;\n const branches = marker === 'tree' && branch ? [branch] : ['main', 'master'];\n const treePath = marker === 'tree' ? treePathParts.join('/') : '';\n const skillSlug = skill ? normalizeSlug(skill) : null;\n const paths = new Set<string>();\n\n if (treePath) paths.add(`${treePath}/SKILL.md`);\n if (!treePath) paths.add('SKILL.md');\n if (skillSlug) {\n paths.add(`skills/${skillSlug}/SKILL.md`);\n paths.add(`.agents/skills/${skillSlug}/SKILL.md`);\n if (treePath) paths.add(`${treePath}/skills/${skillSlug}/SKILL.md`);\n if (treePath) paths.add(`${treePath}/.agents/skills/${skillSlug}/SKILL.md`);\n }\n\n return branches.flatMap((candidateBranch) =>\n [...paths].map((candidatePath) => `https://raw.githubusercontent.com/${owner}/${repo}/${candidateBranch}/${candidatePath}`),\n );\n};\n\nexport const planWizardArtifactImport = (input: {\n artifactKind?: string;\n source: string;\n slug?: string;\n skill?: string;\n}): ImportSourcePlan => {\n const source = input.source.trim();\n const tokens = tokenizeCommandLikeInput(source);\n const optionSkill = parseOptionValue(tokens, '--skill');\n const skill = input.skill?.trim() || optionSkill || null;\n const getdesignSlug = tokens.find((token, index) => tokens[index - 1] === 'add' && !token.startsWith('-')) ?? null;\n const inferredKind: WizardArtifactKind = source.includes('getdesign') ? 'DESIGN_DOC' : 'SKILL';\n const artifactKind = input.artifactKind ? toWizardArtifactKind(input.artifactKind) : inferredKind;\n\n if (artifactKind === 'DESIGN_DOC') {\n const rawSlug = input.slug?.trim() || getdesignSlug;\n if (!rawSlug) throw new Error('DESIGN_DOC import requires a slug or a getdesign `add <slug>` input.');\n const slug = normalizeSlug(rawSlug);\n const directUrl = firstUrlToken(tokens);\n const candidateUrls = directUrl ? [toRawGithubUrl(directUrl) ?? directUrl] : [`${GETDESIGN_RAW_BASE}/${slug}/DESIGN.md`];\n return { artifactKind, slug, skill: null, source, sourceRef: directUrl ?? `getdesign:${slug}`, candidateUrls };\n }\n\n const sourceUrl = firstUrlToken(tokens) ?? source;\n return {\n artifactKind: 'SKILL',\n slug: input.slug ? normalizeSlug(input.slug) : null,\n skill,\n source,\n sourceRef: skill ? `${sourceUrl}#skill=${skill}` : sourceUrl,\n candidateUrls: buildGithubSkillCandidateUrls(sourceUrl, skill),\n };\n};\n\nexport const fetchWizardArtifactImportSource = async (input: {\n artifactKind?: string;\n source: string;\n slug?: string;\n skill?: string;\n signal: AbortSignal;\n}): Promise<ResolvedImportSource> => {\n const plan = planWizardArtifactImport(input);\n const errors: string[] = [];\n\n for (const candidateUrl of plan.candidateUrls) {\n try {\n const response = await fetch(candidateUrl, { signal: input.signal });\n if (!response.ok) {\n errors.push(`${candidateUrl}: HTTP ${response.status}`);\n continue;\n }\n\n return { ...plan, markdownContent: await response.text(), fetchedUrl: candidateUrl };\n } catch (error) {\n errors.push(`${candidateUrl}: ${error instanceof Error ? error.message : 'Unknown fetch error'}`);\n }\n }\n\n throw new Error(`Could not fetch import source. Tried: ${errors.join('; ')}`);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["strFromU8","unzipSync","GETDESIGN_RAW_BASE","ZIP_MARKDOWN_FILE_PRIORITY","tokenizeCommandLikeInput","input","tokens","match","map","token","replace","normalizeSlug","value","trim","toLowerCase","parseOptionValue","optionName","inlinePrefix","inlineToken","find","startsWith","slice","length","optionIndex","indexOf","toWizardArtifactKind","normalized","toUpperCase","Error","firstUrlToken","test","toRawGithubUrl","inputUrl","parsedUrl","URL","hostname","toString","parts","pathname","split","filter","Boolean","owner","repo","marker","branch","rest","join","isZipUrl","endsWith","zipSourceRef","sourceRef","markdownPath","separator","includes","encodeURIComponent","zipPathDepth","entryPath","selectZipMarkdownEntry","archive","candidates","Object","entries","bytes","fileName","at","priority","path","content","depth","candidate","sort","left","right","localeCompare","extractMarkdownFromZip","Uint8Array","selectedEntry","buildGithubSkillCandidateUrls","sourceUrl","skill","rawUrl","treePathParts","branches","treePath","skillSlug","paths","Set","add","flatMap","candidateBranch","candidatePath","planWizardArtifactImport","source","optionSkill","getdesignSlug","index","inferredKind","artifactKind","rawSlug","slug","directUrl","candidateUrls","fetchWizardArtifactImportSource","plan","errors","candidateUrl","response","fetch","signal","ok","push","status","zipMarkdown","arrayBuffer","markdownContent","fetchedUrl","text","error","message"],"sources":["../../src/server/import-sources.ts"],"sourcesContent":["import { strFromU8, unzipSync } from 'fflate';\nimport type { WizardArtifactKind } from './types.js';\n\ntype ImportSourcePlan = {\n artifactKind: WizardArtifactKind;\n slug: string | null;\n skill: string | null;\n source: string;\n sourceRef: string;\n candidateUrls: string[];\n};\n\nexport type ResolvedImportSource = ImportSourcePlan & {\n markdownContent: string;\n fetchedUrl: string;\n};\n\nconst GETDESIGN_RAW_BASE = 'https://raw.githubusercontent.com/VoltAgent/awesome-design-md/main/design-md';\nconst ZIP_MARKDOWN_FILE_PRIORITY = ['SKILL.md', 'skill.md', 'Skill.md', 'README.md', 'readme.md'] as const;\n\nconst tokenizeCommandLikeInput = (input: string): string[] => {\n const tokens = input.match(/(?:[^\\s\"']+|\"[^\"]*\"|'[^']*')+/g) ?? [];\n return tokens.map((token) => token.replace(/^(\"|')|(\"|')$/g, ''));\n};\n\nconst normalizeSlug = (value: string): string => {\n return value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n};\n\nconst parseOptionValue = (tokens: string[], optionName: string): string | null => {\n const inlinePrefix = `${optionName}=`;\n const inlineToken = tokens.find((token) => token.startsWith(inlinePrefix));\n if (inlineToken) return inlineToken.slice(inlinePrefix.length) || null;\n\n const optionIndex = tokens.indexOf(optionName);\n if (optionIndex < 0) return null;\n return tokens[optionIndex + 1] ?? null;\n};\n\nconst toWizardArtifactKind = (value: string): WizardArtifactKind => {\n const normalized = value.trim().toUpperCase();\n if (normalized === 'SKILL' || normalized === 'DESIGN_DOC') return normalized;\n throw new Error('artifactKind must be SKILL or DESIGN_DOC.');\n};\n\nconst firstUrlToken = (tokens: string[]): string | null => {\n return tokens.find((token) => /^https?:\\/\\//i.test(token)) ?? null;\n};\n\nconst toRawGithubUrl = (inputUrl: string): string | null => {\n const parsedUrl = new URL(inputUrl);\n if (parsedUrl.hostname === 'raw.githubusercontent.com') return parsedUrl.toString();\n if (parsedUrl.hostname !== 'github.com') return null;\n\n const parts = parsedUrl.pathname.split('/').filter(Boolean);\n if (parts.length < 2) return null;\n\n const [owner, repo, marker, branch, ...rest] = parts;\n if (marker === 'blob' || marker === 'tree') {\n return `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${rest.join('/')}`;\n }\n\n return null;\n};\n\nconst isZipUrl = (inputUrl: string): boolean => {\n try {\n return new URL(inputUrl).pathname.toLowerCase().endsWith('.zip');\n } catch {\n return false;\n }\n};\n\nconst zipSourceRef = (sourceRef: string, markdownPath: string): string => {\n const separator = sourceRef.includes('#') ? '&' : '#';\n return `${sourceRef}${separator}path=${encodeURIComponent(markdownPath)}`;\n};\n\nconst zipPathDepth = (entryPath: string): number => entryPath.split('/').filter(Boolean).length;\n\nconst selectZipMarkdownEntry = (archive: Record<string, Uint8Array>): { path: string; content: string } | null => {\n const candidates = Object.entries(archive)\n .map(([entryPath, bytes]) => {\n const fileName = entryPath.split('/').filter(Boolean).at(-1) ?? '';\n const priority = ZIP_MARKDOWN_FILE_PRIORITY.indexOf(fileName as (typeof ZIP_MARKDOWN_FILE_PRIORITY)[number]);\n if (priority < 0) return null;\n\n return {\n path: entryPath,\n content: strFromU8(bytes),\n priority,\n depth: zipPathDepth(entryPath),\n };\n })\n .filter((candidate): candidate is { path: string; content: string; priority: number; depth: number } => candidate !== null)\n .sort((left, right) => {\n if (left.priority !== right.priority) return left.priority - right.priority;\n if (left.depth !== right.depth) return left.depth - right.depth;\n if (left.path.length !== right.path.length) return left.path.length - right.path.length;\n return left.path.localeCompare(right.path);\n });\n\n return candidates[0] ?? null;\n};\n\nconst extractMarkdownFromZip = (bytes: ArrayBuffer): { path: string; content: string } => {\n const archive = unzipSync(new Uint8Array(bytes));\n const selectedEntry = selectZipMarkdownEntry(archive);\n if (!selectedEntry) throw new Error('No SKILL.md or README.md markdown file found in zip archive.');\n return selectedEntry;\n};\n\nconst buildGithubSkillCandidateUrls = (sourceUrl: string, skill: string | null): string[] => {\n const parsedUrl = new URL(sourceUrl);\n if (isZipUrl(sourceUrl)) return [sourceUrl];\n if (parsedUrl.hostname === 'raw.githubusercontent.com') return [parsedUrl.toString()];\n if (parsedUrl.hostname !== 'github.com') return [sourceUrl];\n\n const rawUrl = toRawGithubUrl(sourceUrl);\n if (rawUrl?.endsWith('/SKILL.md')) return [rawUrl];\n\n const parts = parsedUrl.pathname.split('/').filter(Boolean);\n const [owner, repo, marker, branch, ...treePathParts] = parts;\n const branches = marker === 'tree' && branch ? [branch] : ['main', 'master'];\n const treePath = marker === 'tree' ? treePathParts.join('/') : '';\n const skillSlug = skill ? normalizeSlug(skill) : null;\n const paths = new Set<string>();\n\n if (treePath) paths.add(`${treePath}/SKILL.md`);\n if (!treePath) paths.add('SKILL.md');\n if (skillSlug) {\n paths.add(`skills/${skillSlug}/SKILL.md`);\n paths.add(`.agents/skills/${skillSlug}/SKILL.md`);\n if (treePath) paths.add(`${treePath}/skills/${skillSlug}/SKILL.md`);\n if (treePath) paths.add(`${treePath}/.agents/skills/${skillSlug}/SKILL.md`);\n }\n\n return branches.flatMap((candidateBranch) =>\n [...paths].map((candidatePath) => `https://raw.githubusercontent.com/${owner}/${repo}/${candidateBranch}/${candidatePath}`),\n );\n};\n\nexport const planWizardArtifactImport = (input: {\n artifactKind?: string;\n source: string;\n slug?: string;\n skill?: string;\n}): ImportSourcePlan => {\n const source = input.source.trim();\n const tokens = tokenizeCommandLikeInput(source);\n const optionSkill = parseOptionValue(tokens, '--skill');\n const skill = input.skill?.trim() || optionSkill || null;\n const getdesignSlug = tokens.find((token, index) => tokens[index - 1] === 'add' && !token.startsWith('-')) ?? null;\n const inferredKind: WizardArtifactKind = source.includes('getdesign') ? 'DESIGN_DOC' : 'SKILL';\n const artifactKind = input.artifactKind ? toWizardArtifactKind(input.artifactKind) : inferredKind;\n\n if (artifactKind === 'DESIGN_DOC') {\n const rawSlug = input.slug?.trim() || getdesignSlug;\n if (!rawSlug) throw new Error('DESIGN_DOC import requires a slug or a getdesign `add <slug>` input.');\n const slug = normalizeSlug(rawSlug);\n const directUrl = firstUrlToken(tokens);\n const candidateUrls = directUrl ? [toRawGithubUrl(directUrl) ?? directUrl] : [`${GETDESIGN_RAW_BASE}/${slug}/DESIGN.md`];\n return { artifactKind, slug, skill: null, source, sourceRef: directUrl ?? `getdesign:${slug}`, candidateUrls };\n }\n\n const sourceUrl = firstUrlToken(tokens) ?? source;\n return {\n artifactKind: 'SKILL',\n slug: input.slug ? normalizeSlug(input.slug) : null,\n skill,\n source,\n sourceRef: skill ? `${sourceUrl}#skill=${skill}` : sourceUrl,\n candidateUrls: buildGithubSkillCandidateUrls(sourceUrl, skill),\n };\n};\n\nexport const fetchWizardArtifactImportSource = async (input: {\n artifactKind?: string;\n source: string;\n slug?: string;\n skill?: string;\n signal: AbortSignal;\n}): Promise<ResolvedImportSource> => {\n const plan = planWizardArtifactImport(input);\n const errors: string[] = [];\n\n for (const candidateUrl of plan.candidateUrls) {\n try {\n const response = await fetch(candidateUrl, { signal: input.signal });\n if (!response.ok) {\n errors.push(`${candidateUrl}: HTTP ${response.status}`);\n continue;\n }\n\n if (isZipUrl(candidateUrl)) {\n const zipMarkdown = extractMarkdownFromZip(await response.arrayBuffer());\n return {\n ...plan,\n markdownContent: zipMarkdown.content,\n fetchedUrl: candidateUrl,\n sourceRef: zipSourceRef(plan.sourceRef, zipMarkdown.path),\n };\n }\n\n return { ...plan, markdownContent: await response.text(), fetchedUrl: candidateUrl };\n } catch (error) {\n errors.push(`${candidateUrl}: ${error instanceof Error ? error.message : 'Unknown fetch error'}`);\n }\n }\n\n throw new Error(`Could not fetch import source. Tried: ${errors.join('; ')}`);\n};\n"],"mappings":"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","ignoreList":[]}
|