@aexol/opencode-wizard 0.3.7 → 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/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/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 +1 -1
|
@@ -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":[]}
|
package/dist/server/runtime.js
CHANGED
|
@@ -21,9 +21,34 @@ export { buildSystemNote, resolvePluginStatusSnapshot, toPluginAuthStateSummary,
|
|
|
21
21
|
const importOpencodePluginModule = new Function('specifier', 'return import(specifier)');
|
|
22
22
|
export { resolvePluginStatusSnapshotWithAuthBootstrap } from './auth-bootstrap.js';
|
|
23
23
|
export { setPublishedSkillIgnored, setPublishedSkillInstalled } from './preferences.js';
|
|
24
|
-
const getDetailCacheKey = (catalogCacheKey, skillVersionId) => {
|
|
25
|
-
return JSON.stringify([catalogCacheKey, skillVersionId]);
|
|
24
|
+
const getDetailCacheKey = (catalogCacheKey, skillVersionId, revision) => {
|
|
25
|
+
return JSON.stringify([catalogCacheKey, skillVersionId, revision]);
|
|
26
26
|
};
|
|
27
|
+
const getPublishedSkillRevision = item => {
|
|
28
|
+
return item.publishedArtifact.revision ?? `${item.publishedArtifact.checksum}:${item.publishedArtifact.updatedAtCursor ?? item.publishedArtifact.publishedAt}`;
|
|
29
|
+
};
|
|
30
|
+
const getCatalogCursor = (items, catalogItems) => {
|
|
31
|
+
return [...items.map(getPublishedSkillRevision), ...catalogItems.map(item => getPublishedSkillRevision({
|
|
32
|
+
...item,
|
|
33
|
+
assignmentSource: 'CATALOG',
|
|
34
|
+
assignmentType: 'PATH',
|
|
35
|
+
scopePath: '',
|
|
36
|
+
includeChildren: true
|
|
37
|
+
}))].sort().join('|');
|
|
38
|
+
};
|
|
39
|
+
const getWizardArtifactRevision = item => {
|
|
40
|
+
return item.artifactVersion.revision ?? `${item.artifactVersion.checksum}:${item.artifactVersion.updatedAtCursor ?? item.artifactVersion.publishedAt ?? 'unpublished'}`;
|
|
41
|
+
};
|
|
42
|
+
const getWizardArtifactCatalogCursor = (items, catalogItems) => {
|
|
43
|
+
return [...items.map(getWizardArtifactRevision), ...catalogItems.map(getWizardArtifactRevision)].sort().join('|');
|
|
44
|
+
};
|
|
45
|
+
const toWizardArtifactCatalogCursorItems = items => items.map(item => ({
|
|
46
|
+
...item,
|
|
47
|
+
assignmentSource: 'CATALOG',
|
|
48
|
+
assignmentType: 'PATH',
|
|
49
|
+
scopePath: '',
|
|
50
|
+
includeChildren: true
|
|
51
|
+
}));
|
|
27
52
|
const getDetailInflightKey = (catalogCacheKey, skillVersionId, purpose) => {
|
|
28
53
|
return JSON.stringify([catalogCacheKey, skillVersionId, purpose]);
|
|
29
54
|
};
|
|
@@ -102,7 +127,9 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
102
127
|
const cache = new Map();
|
|
103
128
|
const catalogInflight = new Map();
|
|
104
129
|
const detailCache = new Map();
|
|
130
|
+
const wizardArtifactDetailCache = new Map();
|
|
105
131
|
const detailInflight = new Map();
|
|
132
|
+
const wizardArtifactDetailInflight = new Map();
|
|
106
133
|
const initialAuthState = await resolveStoredAuthState(input.worktree, config);
|
|
107
134
|
const loginBootstrap = {
|
|
108
135
|
promise: null,
|
|
@@ -197,7 +224,9 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
197
224
|
cache.clear();
|
|
198
225
|
catalogInflight.clear();
|
|
199
226
|
detailCache.clear();
|
|
227
|
+
wizardArtifactDetailCache.clear();
|
|
200
228
|
detailInflight.clear();
|
|
229
|
+
wizardArtifactDetailInflight.clear();
|
|
201
230
|
};
|
|
202
231
|
const persistAuthState = async session => {
|
|
203
232
|
const authState = toAuthState(session);
|
|
@@ -337,7 +366,8 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
337
366
|
});
|
|
338
367
|
cache.set(cacheKey, {
|
|
339
368
|
result: fetchResult,
|
|
340
|
-
expiresAt: Date.now() + CACHE_TTL_MS
|
|
369
|
+
expiresAt: Date.now() + CACHE_TTL_MS,
|
|
370
|
+
cursor: fetchResult.ok ? getCatalogCursor(fetchResult.payload.skills, fetchResult.payload.catalogSkills) : fetchResult.fetchedAt
|
|
341
371
|
});
|
|
342
372
|
return {
|
|
343
373
|
directoryPath,
|
|
@@ -362,7 +392,8 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
362
392
|
const directoryPath = workspaceResolution.directoryPath;
|
|
363
393
|
const preferenceContext = await resolvePublishedSkillPreferenceCacheContext(config);
|
|
364
394
|
const catalogCacheKey = getCatalogCacheKey(workspaceResolution, preferenceContext);
|
|
365
|
-
const
|
|
395
|
+
const itemRevision = getPublishedSkillRevision(item);
|
|
396
|
+
const cacheKey = getDetailCacheKey(catalogCacheKey, item.skillVersion.id, itemRevision);
|
|
366
397
|
const inflightKey = getDetailInflightKey(catalogCacheKey, item.skillVersion.id, purpose);
|
|
367
398
|
const cached = detailCache.get(cacheKey);
|
|
368
399
|
if (useCache && cached && cached.expiresAt > Date.now()) {
|
|
@@ -412,7 +443,8 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
412
443
|
}
|
|
413
444
|
detailCache.set(cacheKey, {
|
|
414
445
|
artifact: detailResult.artifact,
|
|
415
|
-
expiresAt: Date.now() + CACHE_TTL_MS
|
|
446
|
+
expiresAt: Date.now() + CACHE_TTL_MS,
|
|
447
|
+
revision: itemRevision
|
|
416
448
|
});
|
|
417
449
|
return {
|
|
418
450
|
ok: true,
|
|
@@ -429,6 +461,62 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
429
461
|
detailInflight.delete(inflightKey);
|
|
430
462
|
}
|
|
431
463
|
};
|
|
464
|
+
const loadWizardArtifactDetail = async ({
|
|
465
|
+
workspaceResolution,
|
|
466
|
+
item,
|
|
467
|
+
signal,
|
|
468
|
+
useCache,
|
|
469
|
+
purpose,
|
|
470
|
+
artifactKind
|
|
471
|
+
}) => {
|
|
472
|
+
const preferenceContext = await resolvePublishedSkillPreferenceCacheContext(config);
|
|
473
|
+
const catalogCacheKey = getCatalogCacheKey(workspaceResolution, preferenceContext);
|
|
474
|
+
const itemRevision = getWizardArtifactRevision(item);
|
|
475
|
+
const cacheKey = getDetailCacheKey(catalogCacheKey, item.artifactVersion.id, itemRevision);
|
|
476
|
+
const inflightKey = JSON.stringify([catalogCacheKey, item.artifactVersion.id, itemRevision, purpose]);
|
|
477
|
+
const cached = wizardArtifactDetailCache.get(cacheKey);
|
|
478
|
+
if (useCache && cached && cached.expiresAt > Date.now()) {
|
|
479
|
+
return {
|
|
480
|
+
ok: true,
|
|
481
|
+
artifact: cached.artifact
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
const inflight = wizardArtifactDetailInflight.get(inflightKey);
|
|
485
|
+
if (useCache && inflight) {
|
|
486
|
+
const inflightResult = await inflight;
|
|
487
|
+
if (!inflightResult.ok) return inflightResult;
|
|
488
|
+
return {
|
|
489
|
+
ok: true,
|
|
490
|
+
artifact: inflightResult.artifact
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
const requestPromise = fetchWizardArtifactDetail({
|
|
494
|
+
worktree: input.worktree,
|
|
495
|
+
config,
|
|
496
|
+
resolution: workspaceResolution,
|
|
497
|
+
artifactKind,
|
|
498
|
+
artifactVersionId: item.artifactVersion.id,
|
|
499
|
+
signal,
|
|
500
|
+
onAuthStateChanged: clearPublishedSkillState,
|
|
501
|
+
purpose
|
|
502
|
+
});
|
|
503
|
+
wizardArtifactDetailInflight.set(inflightKey, requestPromise);
|
|
504
|
+
try {
|
|
505
|
+
const detailResult = await requestPromise;
|
|
506
|
+
if (!detailResult.ok) return detailResult;
|
|
507
|
+
wizardArtifactDetailCache.set(cacheKey, {
|
|
508
|
+
artifact: detailResult.artifact,
|
|
509
|
+
expiresAt: Date.now() + CACHE_TTL_MS,
|
|
510
|
+
revision: itemRevision
|
|
511
|
+
});
|
|
512
|
+
return {
|
|
513
|
+
ok: true,
|
|
514
|
+
artifact: detailResult.artifact
|
|
515
|
+
};
|
|
516
|
+
} finally {
|
|
517
|
+
wizardArtifactDetailInflight.delete(inflightKey);
|
|
518
|
+
}
|
|
519
|
+
};
|
|
432
520
|
const executePublishedSkillsFetchTool = async ({
|
|
433
521
|
args,
|
|
434
522
|
context
|
|
@@ -520,13 +608,15 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
520
608
|
},
|
|
521
609
|
fetchedAt: filteredPublishedSkillsResult.fetchResult.fetchedAt,
|
|
522
610
|
source: filteredPublishedSkillsResult.fetchResult.source,
|
|
611
|
+
cacheCursor: getCatalogCursor(filteredPublishedSkillsResult.fetchResult.payload.skills, filteredPublishedSkillsResult.fetchResult.payload.catalogSkills),
|
|
523
612
|
cacheTtlMs: CACHE_TTL_MS,
|
|
524
|
-
message: args.refresh ? 'Catalog discovery refreshed from the backend. Provide `skill` for one identifier or prefer `skills` for comma/newline-separated multiple identifiers to fetch markdown bodies/details.' : 'Catalog discovery only. Cached results
|
|
613
|
+
message: args.refresh ? 'Catalog discovery refreshed from the backend. Provide `skill` for one identifier or prefer `skills` for comma/newline-separated multiple identifiers to fetch markdown bodies/details.' : 'Catalog discovery only. Cached results include deterministic revision cursors; pass `refresh: true` to force a backend refresh immediately. Provide `skill` for one identifier or prefer `skills` for comma/newline-separated multiple identifiers to fetch markdown bodies/details.'
|
|
525
614
|
}, null, 2),
|
|
526
615
|
metadata: {
|
|
527
616
|
status: 'ready',
|
|
528
617
|
...toWorkspaceResolutionMetadata(filteredPublishedSkillsResult.workspaceResolution),
|
|
529
618
|
source: filteredPublishedSkillsResult.fetchResult.source,
|
|
619
|
+
cacheCursor: getCatalogCursor(filteredPublishedSkillsResult.fetchResult.payload.skills, filteredPublishedSkillsResult.fetchResult.payload.catalogSkills),
|
|
530
620
|
publishedSkillCount: catalog.publishedSkillCount.toString(),
|
|
531
621
|
globalAssignmentCount: catalog.assignmentCounts.global.toString(),
|
|
532
622
|
projectAssignmentCount: catalog.assignmentCounts.project.toString(),
|
|
@@ -696,6 +786,7 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
696
786
|
pluginId: PLUGIN_ID,
|
|
697
787
|
availableTools: resolveAvailableTools(authState?.role ?? null)
|
|
698
788
|
});
|
|
789
|
+
const cacheCursor = getWizardArtifactCatalogCursor(fetchResult.payload.artifacts, toWizardArtifactCatalogCursorItems(fetchResult.payload.catalogArtifacts));
|
|
699
790
|
return {
|
|
700
791
|
output: JSON.stringify({
|
|
701
792
|
...catalog,
|
|
@@ -704,14 +795,18 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
704
795
|
workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),
|
|
705
796
|
fetchedAt: fetchResult.fetchedAt,
|
|
706
797
|
source: fetchResult.source,
|
|
707
|
-
|
|
798
|
+
cacheCursor,
|
|
799
|
+
cacheTtlMs: CACHE_TTL_MS,
|
|
800
|
+
message: 'Generic artifact catalog discovery only. Full bodies/files require opencode_wizard_artifact_fetch with artifactKind and artifact identifiers.'
|
|
708
801
|
}, null, 2),
|
|
709
802
|
metadata: {
|
|
710
803
|
status: 'ready',
|
|
711
804
|
artifactKind,
|
|
712
805
|
artifactCount: catalog.artifactCount.toString(),
|
|
713
806
|
...toWorkspaceResolutionMetadata(workspaceResolution),
|
|
714
|
-
source: fetchResult.source
|
|
807
|
+
source: fetchResult.source,
|
|
808
|
+
cacheCursor,
|
|
809
|
+
cacheTtlMs: CACHE_TTL_MS.toString()
|
|
715
810
|
}
|
|
716
811
|
};
|
|
717
812
|
}
|
|
@@ -775,6 +870,7 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
775
870
|
pluginId: PLUGIN_ID,
|
|
776
871
|
availableTools: resolveAvailableTools(authState?.role ?? null)
|
|
777
872
|
});
|
|
873
|
+
const cacheCursor = getWizardArtifactCatalogCursor(fetchResult.payload.artifacts, toWizardArtifactCatalogCursorItems(fetchResult.payload.catalogArtifacts));
|
|
778
874
|
return {
|
|
779
875
|
output: JSON.stringify({
|
|
780
876
|
...catalog,
|
|
@@ -783,11 +879,15 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
783
879
|
workspaceResolution: toWorkspaceResolutionOutput(workspaceResolution),
|
|
784
880
|
fetchedAt: fetchResult.fetchedAt,
|
|
785
881
|
source: fetchResult.source,
|
|
786
|
-
|
|
882
|
+
cacheCursor,
|
|
883
|
+
cacheTtlMs: CACHE_TTL_MS,
|
|
884
|
+
message: 'Provide artifact or artifacts to fetch artifact body/files.'
|
|
787
885
|
}, null, 2),
|
|
788
886
|
metadata: {
|
|
789
887
|
status: 'ready',
|
|
790
888
|
artifactKind,
|
|
889
|
+
cacheCursor,
|
|
890
|
+
cacheTtlMs: CACHE_TTL_MS.toString(),
|
|
791
891
|
...toWorkspaceResolutionMetadata(workspaceResolution)
|
|
792
892
|
}
|
|
793
893
|
};
|
|
@@ -811,15 +911,13 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
811
911
|
}
|
|
812
912
|
};
|
|
813
913
|
}
|
|
814
|
-
const detailResults = await Promise.all(selection.selectedItems.map(item =>
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
resolution: workspaceResolution,
|
|
818
|
-
artifactKind,
|
|
819
|
-
artifactVersionId: item.artifactVersion.id,
|
|
914
|
+
const detailResults = await Promise.all(selection.selectedItems.map(item => loadWizardArtifactDetail({
|
|
915
|
+
workspaceResolution,
|
|
916
|
+
item,
|
|
820
917
|
signal: context.abort,
|
|
821
|
-
|
|
822
|
-
purpose: 'TOOL_FETCH'
|
|
918
|
+
useCache: !args.refresh,
|
|
919
|
+
purpose: 'TOOL_FETCH',
|
|
920
|
+
artifactKind
|
|
823
921
|
})));
|
|
824
922
|
const failedDetail = detailResults.find(result => !result.ok);
|
|
825
923
|
if (failedDetail && !failedDetail.ok) {
|
|
@@ -849,6 +947,7 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
849
947
|
artifactVersion: result.artifact
|
|
850
948
|
});
|
|
851
949
|
});
|
|
950
|
+
const cacheCursor = getWizardArtifactCatalogCursor(selection.selectedItems, toWizardArtifactCatalogCursorItems(fetchResult.payload.catalogArtifacts));
|
|
852
951
|
return {
|
|
853
952
|
output: JSON.stringify({
|
|
854
953
|
pluginId: PLUGIN_ID,
|
|
@@ -859,6 +958,8 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
859
958
|
workspace: fetchResult.payload.workspace,
|
|
860
959
|
fetchedAt: fetchResult.fetchedAt,
|
|
861
960
|
source: fetchResult.source,
|
|
961
|
+
cacheCursor,
|
|
962
|
+
cacheTtlMs: CACHE_TTL_MS,
|
|
862
963
|
requestedArtifacts,
|
|
863
964
|
missingArtifacts: selection.missingIdentifiers,
|
|
864
965
|
artifacts: details
|
|
@@ -867,6 +968,7 @@ export const OpencodeWizardSkillsPlugin = async input => {
|
|
|
867
968
|
status: selection.missingIdentifiers.length > 0 ? 'partial' : 'ready',
|
|
868
969
|
artifactKind,
|
|
869
970
|
matchedCount: details.length.toString(),
|
|
971
|
+
cacheTtlMs: CACHE_TTL_MS.toString(),
|
|
870
972
|
...toWorkspaceResolutionMetadata(workspaceResolution)
|
|
871
973
|
}
|
|
872
974
|
};
|