@aexol/opencode-wizard 0.3.4 → 0.3.6

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.
Files changed (71) hide show
  1. package/README.md +11 -7
  2. package/dist/graphql-operations.d.ts +6 -2
  3. package/dist/graphql-operations.js +173 -156
  4. package/dist/graphql-operations.js.map +1 -1
  5. package/dist/plugin-tools.d.ts +37 -0
  6. package/dist/plugin-tools.js +58 -7
  7. package/dist/plugin-tools.js.map +1 -1
  8. package/dist/published-skills-system-note.js +3 -7
  9. package/dist/published-skills-system-note.js.map +1 -1
  10. package/dist/published-skills-terminology.d.ts +21 -0
  11. package/dist/published-skills-terminology.js +38 -0
  12. package/dist/published-skills-terminology.js.map +1 -0
  13. package/dist/published-skills-transform.d.ts +99 -2
  14. package/dist/published-skills-transform.js +91 -19
  15. package/dist/published-skills-transform.js.map +1 -1
  16. package/dist/server/auth-bootstrap.d.ts +7 -0
  17. package/dist/server/auth-bootstrap.js +89 -0
  18. package/dist/server/auth-bootstrap.js.map +1 -0
  19. package/dist/server/client.d.ts +30 -1
  20. package/dist/server/client.js +81 -1
  21. package/dist/server/client.js.map +1 -1
  22. package/dist/server/import-sources.d.ts +27 -0
  23. package/dist/server/import-sources.js +115 -0
  24. package/dist/server/import-sources.js.map +1 -0
  25. package/dist/server/preferences.d.ts +22 -0
  26. package/dist/server/preferences.js +121 -0
  27. package/dist/server/preferences.js.map +1 -0
  28. package/dist/server/runtime.d.ts +3 -22
  29. package/dist/server/runtime.js +567 -242
  30. package/dist/server/runtime.js.map +1 -1
  31. package/dist/server/types.d.ts +87 -0
  32. package/dist/server/types.js.map +1 -1
  33. package/dist/server.d.ts +1 -0
  34. package/dist/server.js +1 -0
  35. package/dist/server.js.map +1 -1
  36. package/dist/smoke-published-skills.js +4 -4
  37. package/dist/smoke-published-skills.js.map +1 -1
  38. package/dist/tui/components/common.d.ts +0 -1
  39. package/dist/tui/components/common.js +6 -29
  40. package/dist/tui/components/common.js.map +1 -1
  41. package/dist/tui/components/status-content.js +1 -1
  42. package/dist/tui/components/status-content.js.map +1 -1
  43. package/dist/tui/constants.d.ts +0 -5
  44. package/dist/tui/constants.js +0 -5
  45. package/dist/tui/constants.js.map +1 -1
  46. package/dist/tui/formatting.d.ts +0 -3
  47. package/dist/tui/formatting.js +1 -13
  48. package/dist/tui/formatting.js.map +1 -1
  49. package/dist/tui/skill-helpers.d.ts +1 -11
  50. package/dist/tui/skill-helpers.js +0 -41
  51. package/dist/tui/skill-helpers.js.map +1 -1
  52. package/dist/tui/slots.d.ts +1 -1
  53. package/dist/tui/slots.js +1 -24
  54. package/dist/tui/slots.js.map +1 -1
  55. package/dist/tui/status.js +2 -2
  56. package/dist/tui/status.js.map +1 -1
  57. package/dist/tui/types.d.ts +0 -19
  58. package/dist/tui/types.js.map +1 -1
  59. package/package.json +1 -1
  60. package/dist/tui/components/preference-action-notice-row.d.ts +0 -5
  61. package/dist/tui/components/preference-action-notice-row.js +0 -17
  62. package/dist/tui/components/preference-action-notice-row.js.map +0 -1
  63. package/dist/tui/components/skill-catalog-row.d.ts +0 -8
  64. package/dist/tui/components/skill-catalog-row.js +0 -124
  65. package/dist/tui/components/skill-catalog-row.js.map +0 -1
  66. package/dist/tui/components/wizard-skills-dialog-content.d.ts +0 -9
  67. package/dist/tui/components/wizard-skills-dialog-content.js +0 -219
  68. package/dist/tui/components/wizard-skills-dialog-content.js.map +0 -1
  69. package/dist/tui/components/wizard-skills-dialog.d.ts +0 -7
  70. package/dist/tui/components/wizard-skills-dialog.js +0 -156
  71. package/dist/tui/components/wizard-skills-dialog.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["MAX_SKILL_DESCRIPTION_LENGTH","MAX_SKILL_META_LENGTH","MAX_SKILL_NAME_LENGTH","MAX_STATUS_MESSAGE_LENGTH","compactStatusMessage","message","length","slice","compactSkillDescription","compactSkillName","name","compactSkillMeta","meta","formatSkillsCatalogUnavailableMessage","snapshot","catalog","status","formatAuthStatus","roleLabel","authState","role","email","formatBackendOriginLabel","backendOrigin","hostname","URL","includes"],"sources":["../../src/tui/formatting.ts"],"sourcesContent":["import type { PluginStatusSnapshot } from '../server.js';\nimport {\n MAX_SKILL_DESCRIPTION_LENGTH,\n MAX_SKILL_META_LENGTH,\n MAX_SKILL_NAME_LENGTH,\n MAX_STATUS_MESSAGE_LENGTH,\n} from './constants.js';\n\nexport const compactStatusMessage = (message: string): string => {\n if (message.length <= MAX_STATUS_MESSAGE_LENGTH) return message;\n\n return `${message.slice(0, MAX_STATUS_MESSAGE_LENGTH - 1)}…`;\n};\n\nexport const compactSkillDescription = (message: string): string => {\n if (message.length <= MAX_SKILL_DESCRIPTION_LENGTH) return message;\n\n return `${message.slice(0, MAX_SKILL_DESCRIPTION_LENGTH - 1)}…`;\n};\n\nexport const compactSkillName = (name: string): string => {\n if (name.length <= MAX_SKILL_NAME_LENGTH) return name;\n\n return `${name.slice(0, MAX_SKILL_NAME_LENGTH - 1)}…`;\n};\n\nexport const compactSkillMeta = (meta: string): string => {\n if (meta.length <= MAX_SKILL_META_LENGTH) return meta;\n\n return `${meta.slice(0, MAX_SKILL_META_LENGTH - 1)}…`;\n};\n\nexport const formatSkillsCatalogUnavailableMessage = (snapshot: PluginStatusSnapshot): string => {\n if (!snapshot.catalog && snapshot.status === 'missing_auth') {\n if (snapshot.message) return compactStatusMessage(snapshot.message);\n\n return 'locked (browser auth pending)';\n }\n\n if (!snapshot.catalog && snapshot.message) return compactStatusMessage(snapshot.message);\n if (!snapshot.catalog) return `unavailable (${snapshot.status})`;\n\n return 'unavailable';\n};\n\nexport const formatAuthStatus = (snapshot: PluginStatusSnapshot): string => {\n const roleLabel = snapshot.authState.role ? ` [${snapshot.authState.role}]` : '';\n if (snapshot.authState.status !== 'authenticated') return `${snapshot.authState.status}${roleLabel}`;\n if (!snapshot.authState.email) return `authenticated${roleLabel}`;\n\n return `${snapshot.authState.email}${roleLabel}`;\n};\n\nexport const formatBackendOriginLabel = (backendOrigin: string): string => {\n try {\n const { hostname } = new URL(backendOrigin);\n if (hostname === 'localhost' || hostname === '127.0.0.1') return 'localhost';\n\n return 'opencode-wizard';\n } catch {\n if (backendOrigin.includes('localhost') || backendOrigin.includes('127.0.0.1')) return 'localhost';\n\n return 'opencode-wizard';\n }\n};\n"],"mappings":"AACA,SACEA,4BAA4B,EAC5BC,qBAAqB,EACrBC,qBAAqB,EACrBC,yBAAyB,QACpB,gBAAgB;AAEvB,OAAO,MAAMC,oBAAoB,GAAIC,OAAe,IAAa;EAC/D,IAAIA,OAAO,CAACC,MAAM,IAAIH,yBAAyB,EAAE,OAAOE,OAAO;EAE/D,OAAO,GAAGA,OAAO,CAACE,KAAK,CAAC,CAAC,EAAEJ,yBAAyB,GAAG,CAAC,CAAC,GAAG;AAC9D,CAAC;AAED,OAAO,MAAMK,uBAAuB,GAAIH,OAAe,IAAa;EAClE,IAAIA,OAAO,CAACC,MAAM,IAAIN,4BAA4B,EAAE,OAAOK,OAAO;EAElE,OAAO,GAAGA,OAAO,CAACE,KAAK,CAAC,CAAC,EAAEP,4BAA4B,GAAG,CAAC,CAAC,GAAG;AACjE,CAAC;AAED,OAAO,MAAMS,gBAAgB,GAAIC,IAAY,IAAa;EACxD,IAAIA,IAAI,CAACJ,MAAM,IAAIJ,qBAAqB,EAAE,OAAOQ,IAAI;EAErD,OAAO,GAAGA,IAAI,CAACH,KAAK,CAAC,CAAC,EAAEL,qBAAqB,GAAG,CAAC,CAAC,GAAG;AACvD,CAAC;AAED,OAAO,MAAMS,gBAAgB,GAAIC,IAAY,IAAa;EACxD,IAAIA,IAAI,CAACN,MAAM,IAAIL,qBAAqB,EAAE,OAAOW,IAAI;EAErD,OAAO,GAAGA,IAAI,CAACL,KAAK,CAAC,CAAC,EAAEN,qBAAqB,GAAG,CAAC,CAAC,GAAG;AACvD,CAAC;AAED,OAAO,MAAMY,qCAAqC,GAAIC,QAA8B,IAAa;EAC/F,IAAI,CAACA,QAAQ,CAACC,OAAO,IAAID,QAAQ,CAACE,MAAM,KAAK,cAAc,EAAE;IAC3D,IAAIF,QAAQ,CAACT,OAAO,EAAE,OAAOD,oBAAoB,CAACU,QAAQ,CAACT,OAAO,CAAC;IAEnE,OAAO,+BAA+B;EACxC;EAEA,IAAI,CAACS,QAAQ,CAACC,OAAO,IAAID,QAAQ,CAACT,OAAO,EAAE,OAAOD,oBAAoB,CAACU,QAAQ,CAACT,OAAO,CAAC;EACxF,IAAI,CAACS,QAAQ,CAACC,OAAO,EAAE,OAAO,gBAAgBD,QAAQ,CAACE,MAAM,GAAG;EAEhE,OAAO,aAAa;AACtB,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAIH,QAA8B,IAAa;EAC1E,MAAMI,SAAS,GAAGJ,QAAQ,CAACK,SAAS,CAACC,IAAI,GAAG,KAAKN,QAAQ,CAACK,SAAS,CAACC,IAAI,GAAG,GAAG,EAAE;EAChF,IAAIN,QAAQ,CAACK,SAAS,CAACH,MAAM,KAAK,eAAe,EAAE,OAAO,GAAGF,QAAQ,CAACK,SAAS,CAACH,MAAM,GAAGE,SAAS,EAAE;EACpG,IAAI,CAACJ,QAAQ,CAACK,SAAS,CAACE,KAAK,EAAE,OAAO,gBAAgBH,SAAS,EAAE;EAEjE,OAAO,GAAGJ,QAAQ,CAACK,SAAS,CAACE,KAAK,GAAGH,SAAS,EAAE;AAClD,CAAC;AAED,OAAO,MAAMI,wBAAwB,GAAIC,aAAqB,IAAa;EACzE,IAAI;IACF,MAAM;MAAEC;IAAS,CAAC,GAAG,IAAIC,GAAG,CAACF,aAAa,CAAC;IAC3C,IAAIC,QAAQ,KAAK,WAAW,IAAIA,QAAQ,KAAK,WAAW,EAAE,OAAO,WAAW;IAE5E,OAAO,iBAAiB;EAC1B,CAAC,CAAC,MAAM;IACN,IAAID,aAAa,CAACG,QAAQ,CAAC,WAAW,CAAC,IAAIH,aAAa,CAACG,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,WAAW;IAElG,OAAO,iBAAiB;EAC1B;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["MAX_STATUS_MESSAGE_LENGTH","compactStatusMessage","message","length","slice","formatSkillsCatalogUnavailableMessage","snapshot","catalog","status","formatAuthStatus","roleLabel","authState","role","email","formatBackendOriginLabel","backendOrigin","hostname","URL","includes"],"sources":["../../src/tui/formatting.ts"],"sourcesContent":["import type { PluginStatusSnapshot } from '../server.js';\nimport { MAX_STATUS_MESSAGE_LENGTH } from './constants.js';\n\nexport const compactStatusMessage = (message: string): string => {\n if (message.length <= MAX_STATUS_MESSAGE_LENGTH) return message;\n\n return `${message.slice(0, MAX_STATUS_MESSAGE_LENGTH - 1)}…`;\n};\n\nexport const formatSkillsCatalogUnavailableMessage = (snapshot: PluginStatusSnapshot): string => {\n if (!snapshot.catalog && snapshot.status === 'missing_auth') {\n if (snapshot.message) return compactStatusMessage(snapshot.message);\n\n return 'locked (browser auth pending)';\n }\n\n if (!snapshot.catalog && snapshot.message) return compactStatusMessage(snapshot.message);\n if (!snapshot.catalog) return `unavailable (${snapshot.status})`;\n\n return 'unavailable';\n};\n\nexport const formatAuthStatus = (snapshot: PluginStatusSnapshot): string => {\n const roleLabel = snapshot.authState.role ? ` [${snapshot.authState.role}]` : '';\n if (snapshot.authState.status !== 'authenticated') return `${snapshot.authState.status}${roleLabel}`;\n if (!snapshot.authState.email) return `authenticated${roleLabel}`;\n\n return `${snapshot.authState.email}${roleLabel}`;\n};\n\nexport const formatBackendOriginLabel = (backendOrigin: string): string => {\n try {\n const { hostname } = new URL(backendOrigin);\n if (hostname === 'localhost' || hostname === '127.0.0.1') return 'localhost';\n\n return 'opencode-wizard';\n } catch {\n if (backendOrigin.includes('localhost') || backendOrigin.includes('127.0.0.1')) return 'localhost';\n\n return 'opencode-wizard';\n }\n};\n"],"mappings":"AACA,SAASA,yBAAyB,QAAQ,gBAAgB;AAE1D,OAAO,MAAMC,oBAAoB,GAAIC,OAAe,IAAa;EAC/D,IAAIA,OAAO,CAACC,MAAM,IAAIH,yBAAyB,EAAE,OAAOE,OAAO;EAE/D,OAAO,GAAGA,OAAO,CAACE,KAAK,CAAC,CAAC,EAAEJ,yBAAyB,GAAG,CAAC,CAAC,GAAG;AAC9D,CAAC;AAED,OAAO,MAAMK,qCAAqC,GAAIC,QAA8B,IAAa;EAC/F,IAAI,CAACA,QAAQ,CAACC,OAAO,IAAID,QAAQ,CAACE,MAAM,KAAK,cAAc,EAAE;IAC3D,IAAIF,QAAQ,CAACJ,OAAO,EAAE,OAAOD,oBAAoB,CAACK,QAAQ,CAACJ,OAAO,CAAC;IAEnE,OAAO,+BAA+B;EACxC;EAEA,IAAI,CAACI,QAAQ,CAACC,OAAO,IAAID,QAAQ,CAACJ,OAAO,EAAE,OAAOD,oBAAoB,CAACK,QAAQ,CAACJ,OAAO,CAAC;EACxF,IAAI,CAACI,QAAQ,CAACC,OAAO,EAAE,OAAO,gBAAgBD,QAAQ,CAACE,MAAM,GAAG;EAEhE,OAAO,aAAa;AACtB,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAIH,QAA8B,IAAa;EAC1E,MAAMI,SAAS,GAAGJ,QAAQ,CAACK,SAAS,CAACC,IAAI,GAAG,KAAKN,QAAQ,CAACK,SAAS,CAACC,IAAI,GAAG,GAAG,EAAE;EAChF,IAAIN,QAAQ,CAACK,SAAS,CAACH,MAAM,KAAK,eAAe,EAAE,OAAO,GAAGF,QAAQ,CAACK,SAAS,CAACH,MAAM,GAAGE,SAAS,EAAE;EACpG,IAAI,CAACJ,QAAQ,CAACK,SAAS,CAACE,KAAK,EAAE,OAAO,gBAAgBH,SAAS,EAAE;EAEjE,OAAO,GAAGJ,QAAQ,CAACK,SAAS,CAACE,KAAK,GAAGH,SAAS,EAAE;AAClD,CAAC;AAED,OAAO,MAAMI,wBAAwB,GAAIC,aAAqB,IAAa;EACzE,IAAI;IACF,MAAM;MAAEC;IAAS,CAAC,GAAG,IAAIC,GAAG,CAACF,aAAa,CAAC;IAC3C,IAAIC,QAAQ,KAAK,WAAW,IAAIA,QAAQ,KAAK,WAAW,EAAE,OAAO,WAAW;IAE5E,OAAO,iBAAiB;EAC1B,CAAC,CAAC,MAAM;IACN,IAAID,aAAa,CAACG,QAAQ,CAAC,WAAW,CAAC,IAAIH,aAAa,CAACG,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,WAAW;IAElG,OAAO,iBAAiB;EAC1B;AACF,CAAC","ignoreList":[]}
@@ -1,13 +1,3 @@
1
1
  import type { PluginStatusSnapshot } from '../server.js';
2
- import type { PreferenceScope, PublishedSkillSummary, SkillDialogRow, SkillRowState } from './types.js';
3
- export declare const getSkillDisplayName: (skill: PublishedSkillSummary) => string;
4
- export declare const getSkillDescription: (skill: PublishedSkillSummary) => string | null;
5
- export declare const getSkillTags: (skill: PublishedSkillSummary) => string;
6
- export declare const isUserScopeAssignment: (assignmentSource: string) => boolean;
7
- export declare const getSkillScopeLabel: (skill: PublishedSkillSummary, state: SkillRowState) => string;
8
- export declare const getSkillPreferenceScope: (skill: PublishedSkillSummary) => PreferenceScope;
9
- export declare const getSkillMeta: (skill: PublishedSkillSummary, state: SkillRowState) => string;
10
- export declare const getRowStateLabel: (row: SkillDialogRow) => string;
11
- export declare const getSkillRowState: (skill: PublishedSkillSummary) => SkillRowState;
2
+ import type { PublishedSkillSummary } from './types.js';
12
3
  export declare const getInstallableNotInstalledSkills: (snapshot: PluginStatusSnapshot) => PublishedSkillSummary[];
13
- export declare const getErrorMessage: (error: unknown) => string;
@@ -1,40 +1,3 @@
1
- import { MAX_SKILL_TAGS } from './constants.js';
2
- export const getSkillDisplayName = skill => skill.artifactName || skill.skillName || skill.skillSlug;
3
- export const getSkillDescription = skill => {
4
- if (skill.whenToUse) return skill.whenToUse;
5
- if (skill.artifactDescription) return skill.artifactDescription;
6
- return null;
7
- };
8
- export const getSkillTags = skill => {
9
- const tagLabels = skill.tags.map(tag => tag.label || tag.slug).filter(Boolean).slice(0, MAX_SKILL_TAGS);
10
- if (tagLabels.length === 0) return 'no tags';
11
- return tagLabels.join(', ');
12
- };
13
- export const isUserScopeAssignment = assignmentSource => assignmentSource === 'USER' || assignmentSource === 'USER_GLOBAL' || assignmentSource === 'USER_WORKSPACE';
14
- export const getSkillScopeLabel = (skill, state) => {
15
- if (state === 'installable') return 'AVAILABLE';
16
- if (isUserScopeAssignment(skill.assignmentSource) || state === 'user-scope') return 'USER SCOPE';
17
- if (state === 'global-scope' || skill.contextKind === 'global') return 'GLOBAL SCOPE';
18
- return 'PROJECT SCOPE';
19
- };
20
- export const getSkillPreferenceScope = skill => {
21
- if (skill.assignmentSource === 'USER_GLOBAL') return 'global';
22
- if (skill.assignmentSource === 'USER_WORKSPACE') return 'project';
23
- if (skill.contextKind === 'global') return 'global';
24
- return 'project';
25
- };
26
- export const getSkillMeta = (skill, state) => `${getSkillScopeLabel(skill, state)} · ${skill.assignmentLabel} · ${skill.policyLabel} · ${getSkillTags(skill)}`;
27
- export const getRowStateLabel = row => {
28
- const scopeLabel = getSkillScopeLabel(row.skill, row.state);
29
- if (row.ignored) return `ignored · ${scopeLabel}`;
30
- if (row.state === 'installable') return 'not installed';
31
- return `active · ${scopeLabel}`;
32
- };
33
- export const getSkillRowState = skill => {
34
- if (isUserScopeAssignment(skill.assignmentSource)) return 'user-scope';
35
- if (skill.contextKind === 'global') return 'global-scope';
36
- return 'project-scope';
37
- };
38
1
  export const getInstallableNotInstalledSkills = snapshot => {
39
2
  const installableSkills = snapshot.installableCatalog?.skills ?? [];
40
3
  if (installableSkills.length === 0) return [];
@@ -42,8 +5,4 @@ export const getInstallableNotInstalledSkills = snapshot => {
42
5
  const ignoredSkillSlugs = new Set(snapshot.ignoredPublishedSkills.skills.map(skill => skill.skillSlug));
43
6
  return installableSkills.filter(skill => !activeSkillSlugs.has(skill.skillSlug) && !ignoredSkillSlugs.has(skill.skillSlug));
44
7
  };
45
- export const getErrorMessage = error => {
46
- if (error instanceof Error && error.message) return error.message;
47
- return 'Preference update failed. Check plugin auth/backend status and try again.';
48
- };
49
8
  //# sourceMappingURL=skill-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MAX_SKILL_TAGS","getSkillDisplayName","skill","artifactName","skillName","skillSlug","getSkillDescription","whenToUse","artifactDescription","getSkillTags","tagLabels","tags","map","tag","label","slug","filter","Boolean","slice","length","join","isUserScopeAssignment","assignmentSource","getSkillScopeLabel","state","contextKind","getSkillPreferenceScope","getSkillMeta","assignmentLabel","policyLabel","getRowStateLabel","row","scopeLabel","ignored","getSkillRowState","getInstallableNotInstalledSkills","snapshot","installableSkills","installableCatalog","skills","activeSkillSlugs","Set","catalog","ignoredSkillSlugs","ignoredPublishedSkills","has","getErrorMessage","error","Error","message"],"sources":["../../src/tui/skill-helpers.ts"],"sourcesContent":["import type { PluginStatusSnapshot } from '../server.js';\nimport { MAX_SKILL_TAGS } from './constants.js';\nimport type { PreferenceScope, PublishedSkillSummary, SkillDialogRow, SkillRowState } from './types.js';\n\nexport const getSkillDisplayName = (skill: PublishedSkillSummary): string =>\n skill.artifactName || skill.skillName || skill.skillSlug;\n\nexport const getSkillDescription = (skill: PublishedSkillSummary): string | null => {\n if (skill.whenToUse) return skill.whenToUse;\n if (skill.artifactDescription) return skill.artifactDescription;\n\n return null;\n};\n\nexport const getSkillTags = (skill: PublishedSkillSummary): string => {\n const tagLabels = skill.tags.map((tag) => tag.label || tag.slug).filter(Boolean).slice(0, MAX_SKILL_TAGS);\n if (tagLabels.length === 0) return 'no tags';\n\n return tagLabels.join(', ');\n};\n\nexport const isUserScopeAssignment = (assignmentSource: string): boolean =>\n assignmentSource === 'USER' || assignmentSource === 'USER_GLOBAL' || assignmentSource === 'USER_WORKSPACE';\n\nexport const getSkillScopeLabel = (skill: PublishedSkillSummary, state: SkillRowState): string => {\n if (state === 'installable') return 'AVAILABLE';\n if (isUserScopeAssignment(skill.assignmentSource) || state === 'user-scope') return 'USER SCOPE';\n if (state === 'global-scope' || skill.contextKind === 'global') return 'GLOBAL SCOPE';\n\n return 'PROJECT SCOPE';\n};\n\nexport const getSkillPreferenceScope = (skill: PublishedSkillSummary): PreferenceScope => {\n if (skill.assignmentSource === 'USER_GLOBAL') return 'global';\n if (skill.assignmentSource === 'USER_WORKSPACE') return 'project';\n if (skill.contextKind === 'global') return 'global';\n\n return 'project';\n};\n\nexport const getSkillMeta = (skill: PublishedSkillSummary, state: SkillRowState): string =>\n `${getSkillScopeLabel(skill, state)} · ${skill.assignmentLabel} · ${skill.policyLabel} · ${getSkillTags(skill)}`;\n\nexport const getRowStateLabel = (row: SkillDialogRow): string => {\n const scopeLabel = getSkillScopeLabel(row.skill, row.state);\n if (row.ignored) return `ignored · ${scopeLabel}`;\n if (row.state === 'installable') return 'not installed';\n\n return `active · ${scopeLabel}`;\n};\n\nexport const getSkillRowState = (skill: PublishedSkillSummary): SkillRowState => {\n if (isUserScopeAssignment(skill.assignmentSource)) return 'user-scope';\n if (skill.contextKind === 'global') return 'global-scope';\n\n return 'project-scope';\n};\n\nexport const getInstallableNotInstalledSkills = (snapshot: PluginStatusSnapshot): PublishedSkillSummary[] => {\n const installableSkills = snapshot.installableCatalog?.skills ?? [];\n if (installableSkills.length === 0) return [];\n\n const activeSkillSlugs = new Set(snapshot.catalog?.skills.map((skill) => skill.skillSlug) ?? []);\n const ignoredSkillSlugs = new Set(snapshot.ignoredPublishedSkills.skills.map((skill) => skill.skillSlug));\n\n return installableSkills.filter(\n (skill) => !activeSkillSlugs.has(skill.skillSlug) && !ignoredSkillSlugs.has(skill.skillSlug),\n );\n};\n\nexport const getErrorMessage = (error: unknown): string => {\n if (error instanceof Error && error.message) return error.message;\n\n return 'Preference update failed. Check plugin auth/backend status and try again.';\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getInstallableNotInstalledSkills","snapshot","installableSkills","installableCatalog","skills","length","activeSkillSlugs","Set","catalog","map","skill","skillSlug","ignoredSkillSlugs","ignoredPublishedSkills","filter","has"],"sources":["../../src/tui/skill-helpers.ts"],"sourcesContent":["import type { PluginStatusSnapshot } from '../server.js';\nimport type { PublishedSkillSummary } from './types.js';\n\nexport const getInstallableNotInstalledSkills = (snapshot: PluginStatusSnapshot): PublishedSkillSummary[] => {\n const installableSkills = snapshot.installableCatalog?.skills ?? [];\n if (installableSkills.length === 0) return [];\n\n const activeSkillSlugs = new Set(snapshot.catalog?.skills.map((skill) => skill.skillSlug) ?? []);\n const ignoredSkillSlugs = new Set(snapshot.ignoredPublishedSkills.skills.map((skill) => skill.skillSlug));\n\n return installableSkills.filter(\n (skill) => !activeSkillSlugs.has(skill.skillSlug) && !ignoredSkillSlugs.has(skill.skillSlug),\n );\n};\n"],"mappings":"AAGA,OAAO,MAAMA,gCAAgC,GAAIC,QAA8B,IAA8B;EAC3G,MAAMC,iBAAiB,GAAGD,QAAQ,CAACE,kBAAkB,EAAEC,MAAM,IAAI,EAAE;EACnE,IAAIF,iBAAiB,CAACG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;EAE7C,MAAMC,gBAAgB,GAAG,IAAIC,GAAG,CAACN,QAAQ,CAACO,OAAO,EAAEJ,MAAM,CAACK,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACC,SAAS,CAAC,IAAI,EAAE,CAAC;EAChG,MAAMC,iBAAiB,GAAG,IAAIL,GAAG,CAACN,QAAQ,CAACY,sBAAsB,CAACT,MAAM,CAACK,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACC,SAAS,CAAC,CAAC;EAEzG,OAAOT,iBAAiB,CAACY,MAAM,CAC5BJ,KAAK,IAAK,CAACJ,gBAAgB,CAACS,GAAG,CAACL,KAAK,CAACC,SAAS,CAAC,IAAI,CAACC,iBAAiB,CAACG,GAAG,CAACL,KAAK,CAACC,SAAS,CAC7F,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1,2 +1,2 @@
1
1
  import type { RefreshStatus, StatusState, TuiPluginApi, TuiSlotPlugin } from './types.js';
2
- export declare const createWizardStatusSlot: (api: TuiPluginApi, status: () => StatusState, refreshStatus: RefreshStatus) => TuiSlotPlugin;
2
+ export declare const createWizardStatusSlot: (api: TuiPluginApi, status: () => StatusState, _refreshStatus: RefreshStatus) => TuiSlotPlugin;
package/dist/tui/slots.js CHANGED
@@ -1,28 +1,7 @@
1
1
  import { createComponent as _$createComponent } from "@opentui/solid";
2
- import { requestRender } from './rendering.js';
3
2
  import { Panel } from './components/common.js';
4
3
  import { SkillsRows } from './components/status-content.js';
5
- import { WizardSkillsDialog } from './components/wizard-skills-dialog.js';
6
- const openWizardSkillsDialog = (api, status, refreshStatus) => {
7
- const dialog = api.ui?.dialog;
8
- if (!dialog?.replace) return;
9
- refreshStatus({
10
- showLoading: true
11
- });
12
- dialog.replace(() => _$createComponent(WizardSkillsDialog, {
13
- api: api,
14
- status: status,
15
- refreshStatus: refreshStatus,
16
- onClose: () => {
17
- dialog.clear?.();
18
- requestRender(api);
19
- }
20
- }), () => {
21
- requestRender(api);
22
- });
23
- requestRender(api);
24
- };
25
- export const createWizardStatusSlot = (api, status, refreshStatus) => ({
4
+ export const createWizardStatusSlot = (api, status, _refreshStatus) => ({
26
5
  order: 240,
27
6
  slots: {
28
7
  home_bottom: () => _$createComponent(Panel, {
@@ -30,7 +9,6 @@ export const createWizardStatusSlot = (api, status, refreshStatus) => ({
30
9
  get theme() {
31
10
  return api.theme.current;
32
11
  },
33
- onOpen: () => openWizardSkillsDialog(api, status, refreshStatus),
34
12
  get children() {
35
13
  return _$createComponent(SkillsRows, {
36
14
  api: api,
@@ -43,7 +21,6 @@ export const createWizardStatusSlot = (api, status, refreshStatus) => ({
43
21
  get theme() {
44
22
  return api.theme.current;
45
23
  },
46
- onOpen: () => openWizardSkillsDialog(api, status, refreshStatus),
47
24
  get children() {
48
25
  return _$createComponent(SkillsRows, {
49
26
  api: api,
@@ -1 +1 @@
1
- {"version":3,"names":["requestRender","Panel","SkillsRows","WizardSkillsDialog","openWizardSkillsDialog","api","status","refreshStatus","dialog","ui","replace","showLoading","_$createComponent","onClose","clear","createWizardStatusSlot","order","slots","home_bottom","title","theme","current","onOpen","children","sidebar_content","_ctx","_value"],"sources":["../../src/tui/slots.tsx"],"sourcesContent":["import { requestRender } from './rendering.js';\nimport type { RefreshStatus, StatusState, TuiPluginApi, TuiSlotContext, TuiSlotPlugin } from './types.js';\nimport { Panel } from './components/common.js';\nimport { SkillsRows } from './components/status-content.js';\nimport { WizardSkillsDialog } from './components/wizard-skills-dialog.js';\n\nconst openWizardSkillsDialog = (api: TuiPluginApi, status: () => StatusState, refreshStatus: RefreshStatus): void => {\n const dialog = api.ui?.dialog;\n if (!dialog?.replace) return;\n\n refreshStatus({ showLoading: true });\n\n dialog.replace(\n () => (\n <WizardSkillsDialog\n api={api}\n status={status}\n refreshStatus={refreshStatus}\n onClose={() => {\n dialog.clear?.();\n requestRender(api);\n }}\n />\n ),\n () => {\n requestRender(api);\n },\n );\n\n requestRender(api);\n};\n\nexport const createWizardStatusSlot = (\n api: TuiPluginApi,\n status: () => StatusState,\n refreshStatus: RefreshStatus,\n): TuiSlotPlugin => ({\n order: 240,\n slots: {\n home_bottom: () => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current} onOpen={() => openWizardSkillsDialog(api, status, refreshStatus)}>\n <SkillsRows api={api} status={status} />\n </Panel>\n ),\n sidebar_content: (_ctx: TuiSlotContext, _value: { session_id: string }) => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current} onOpen={() => openWizardSkillsDialog(api, status, refreshStatus)}>\n <SkillsRows api={api} status={status} />\n </Panel>\n ),\n },\n});\n"],"mappings":";AAAA,SAASA,aAAa,QAAQ,gBAAgB;AAE9C,SAASC,KAAK,QAAQ,wBAAwB;AAC9C,SAASC,UAAU,QAAQ,gCAAgC;AAC3D,SAASC,kBAAkB,QAAQ,sCAAsC;AAEzE,MAAMC,sBAAsB,GAAGA,CAACC,GAAiB,EAAEC,MAAyB,EAAEC,aAA4B,KAAW;EACnH,MAAMC,MAAM,GAAGH,GAAG,CAACI,EAAE,EAAED,MAAM;EAC7B,IAAI,CAACA,MAAM,EAAEE,OAAO,EAAE;EAEtBH,aAAa,CAAC;IAAEI,WAAW,EAAE;EAAK,CAAC,CAAC;EAEpCH,MAAM,CAACE,OAAO,CACZ,MAAAE,iBAAA,CACGT,kBAAkB;IACjBE,GAAG,EAAEA,GAAG;IACRC,MAAM,EAAEA,MAAM;IACdC,aAAa,EAAEA,aAAa;IAC5BM,OAAO,EAAEA,CAAA,KAAM;MACbL,MAAM,CAACM,KAAK,GAAG,CAAC;MAChBd,aAAa,CAACK,GAAG,CAAC;IACpB;EAAC,EAEJ,EACD,MAAM;IACJL,aAAa,CAACK,GAAG,CAAC;EACpB,CACF,CAAC;EAEDL,aAAa,CAACK,GAAG,CAAC;AACpB,CAAC;AAED,OAAO,MAAMU,sBAAsB,GAAGA,CACpCV,GAAiB,EACjBC,MAAyB,EACzBC,aAA4B,MACT;EACnBS,KAAK,EAAE,GAAG;EACVC,KAAK,EAAE;IACLC,WAAW,EAAEA,CAAA,KAAAN,iBAAA,CACVX,KAAK;MAACkB,KAAK;MAAA,IAAiBC,KAAKA,CAAA;QAAA,OAAEf,GAAG,CAACe,KAAK,CAACC,OAAO;MAAA;MAAEC,MAAM,EAAEA,CAAA,KAAMlB,sBAAsB,CAACC,GAAG,EAAEC,MAAM,EAAEC,aAAa,CAAC;MAAA,IAAAgB,SAAA;QAAA,OAAAX,iBAAA,CACpHV,UAAU;UAACG,GAAG,EAAEA,GAAG;UAAEC,MAAM,EAAEA;QAAM;MAAA;IAAA,EAEvC;IACDkB,eAAe,EAAEA,CAACC,IAAoB,EAAEC,MAA8B,KAAAd,iBAAA,CACnEX,KAAK;MAACkB,KAAK;MAAA,IAAiBC,KAAKA,CAAA;QAAA,OAAEf,GAAG,CAACe,KAAK,CAACC,OAAO;MAAA;MAAEC,MAAM,EAAEA,CAAA,KAAMlB,sBAAsB,CAACC,GAAG,EAAEC,MAAM,EAAEC,aAAa,CAAC;MAAA,IAAAgB,SAAA;QAAA,OAAAX,iBAAA,CACpHV,UAAU;UAACG,GAAG,EAAEA,GAAG;UAAEC,MAAM,EAAEA;QAAM;MAAA;IAAA;EAG1C;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Panel","SkillsRows","createWizardStatusSlot","api","status","_refreshStatus","order","slots","home_bottom","_$createComponent","title","theme","current","children","sidebar_content","_ctx","_value"],"sources":["../../src/tui/slots.tsx"],"sourcesContent":["import type { RefreshStatus, StatusState, TuiPluginApi, TuiSlotContext, TuiSlotPlugin } from './types.js';\nimport { Panel } from './components/common.js';\nimport { SkillsRows } from './components/status-content.js';\n\nexport const createWizardStatusSlot = (\n api: TuiPluginApi,\n status: () => StatusState,\n _refreshStatus: RefreshStatus,\n): TuiSlotPlugin => ({\n order: 240,\n slots: {\n home_bottom: () => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current}>\n <SkillsRows api={api} status={status} />\n </Panel>\n ),\n sidebar_content: (_ctx: TuiSlotContext, _value: { session_id: string }) => (\n <Panel title=\"Wizard Skills\" theme={api.theme.current}>\n <SkillsRows api={api} status={status} />\n </Panel>\n ),\n },\n});\n"],"mappings":";AACA,SAASA,KAAK,QAAQ,wBAAwB;AAC9C,SAASC,UAAU,QAAQ,gCAAgC;AAE3D,OAAO,MAAMC,sBAAsB,GAAGA,CACpCC,GAAiB,EACjBC,MAAyB,EACzBC,cAA6B,MACV;EACnBC,KAAK,EAAE,GAAG;EACVC,KAAK,EAAE;IACLC,WAAW,EAAEA,CAAA,KAAAC,iBAAA,CACVT,KAAK;MAACU,KAAK;MAAA,IAAiBC,KAAKA,CAAA;QAAA,OAAER,GAAG,CAACQ,KAAK,CAACC,OAAO;MAAA;MAAA,IAAAC,SAAA;QAAA,OAAAJ,iBAAA,CAClDR,UAAU;UAACE,GAAG,EAAEA,GAAG;UAAEC,MAAM,EAAEA;QAAM;MAAA;IAAA,EAEvC;IACDU,eAAe,EAAEA,CAACC,IAAoB,EAAEC,MAA8B,KAAAP,iBAAA,CACnET,KAAK;MAACU,KAAK;MAAA,IAAiBC,KAAKA,CAAA;QAAA,OAAER,GAAG,CAACQ,KAAK,CAACC,OAAO;MAAA;MAAA,IAAAC,SAAA;QAAA,OAAAJ,iBAAA,CAClDR,UAAU;UAACE,GAAG,EAAEA,GAAG;UAAEC,MAAM,EAAEA;QAAM;MAAA;IAAA;EAG1C;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,8 +1,8 @@
1
- import { resolvePluginStatusSnapshotWithAuthBootstrap } from '../server.js';
1
+ import { resolvePluginStatusSnapshot } from '../server.js';
2
2
  import { STATUS_TIMEOUT_MS } from './constants.js';
3
3
  export const loadStatus = async api => {
4
4
  try {
5
- const snapshot = await resolvePluginStatusSnapshotWithAuthBootstrap({
5
+ const snapshot = await resolvePluginStatusSnapshot({
6
6
  worktree: api.state.path.worktree,
7
7
  directory: api.state.path.directory,
8
8
  signal: AbortSignal.timeout(STATUS_TIMEOUT_MS)
@@ -1 +1 @@
1
- {"version":3,"names":["resolvePluginStatusSnapshotWithAuthBootstrap","STATUS_TIMEOUT_MS","loadStatus","api","snapshot","worktree","state","path","directory","signal","AbortSignal","timeout","kind","error","message","Error"],"sources":["../../src/tui/status.ts"],"sourcesContent":["import { resolvePluginStatusSnapshotWithAuthBootstrap } from '../server.js';\nimport { STATUS_TIMEOUT_MS } from './constants.js';\nimport type { StatusState, TuiPluginApi } from './types.js';\n\nexport const loadStatus = async (api: TuiPluginApi): Promise<StatusState> => {\n try {\n const snapshot = await resolvePluginStatusSnapshotWithAuthBootstrap({\n worktree: api.state.path.worktree,\n directory: api.state.path.directory,\n signal: AbortSignal.timeout(STATUS_TIMEOUT_MS),\n });\n\n return {\n kind: 'ready',\n snapshot,\n };\n } catch (error) {\n return {\n kind: 'error',\n message: error instanceof Error ? error.message : 'Unable to load opencode-wizard status.',\n };\n }\n};\n"],"mappings":"AAAA,SAASA,4CAA4C,QAAQ,cAAc;AAC3E,SAASC,iBAAiB,QAAQ,gBAAgB;AAGlD,OAAO,MAAMC,UAAU,GAAG,MAAOC,GAAiB,IAA2B;EAC3E,IAAI;IACF,MAAMC,QAAQ,GAAG,MAAMJ,4CAA4C,CAAC;MAClEK,QAAQ,EAAEF,GAAG,CAACG,KAAK,CAACC,IAAI,CAACF,QAAQ;MACjCG,SAAS,EAAEL,GAAG,CAACG,KAAK,CAACC,IAAI,CAACC,SAAS;MACnCC,MAAM,EAAEC,WAAW,CAACC,OAAO,CAACV,iBAAiB;IAC/C,CAAC,CAAC;IAEF,OAAO;MACLW,IAAI,EAAE,OAAO;MACbR;IACF,CAAC;EACH,CAAC,CAAC,OAAOS,KAAK,EAAE;IACd,OAAO;MACLD,IAAI,EAAE,OAAO;MACbE,OAAO,EAAED,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG;IACpD,CAAC;EACH;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["resolvePluginStatusSnapshot","STATUS_TIMEOUT_MS","loadStatus","api","snapshot","worktree","state","path","directory","signal","AbortSignal","timeout","kind","error","message","Error"],"sources":["../../src/tui/status.ts"],"sourcesContent":["import { resolvePluginStatusSnapshot } from '../server.js';\nimport { STATUS_TIMEOUT_MS } from './constants.js';\nimport type { StatusState, TuiPluginApi } from './types.js';\n\nexport const loadStatus = async (api: TuiPluginApi): Promise<StatusState> => {\n try {\n const snapshot = await resolvePluginStatusSnapshot({\n worktree: api.state.path.worktree,\n directory: api.state.path.directory,\n signal: AbortSignal.timeout(STATUS_TIMEOUT_MS),\n });\n\n return {\n kind: 'ready',\n snapshot,\n };\n } catch (error) {\n return {\n kind: 'error',\n message: error instanceof Error ? error.message : 'Unable to load opencode-wizard status.',\n };\n }\n};\n"],"mappings":"AAAA,SAASA,2BAA2B,QAAQ,cAAc;AAC1D,SAASC,iBAAiB,QAAQ,gBAAgB;AAGlD,OAAO,MAAMC,UAAU,GAAG,MAAOC,GAAiB,IAA2B;EAC3E,IAAI;IACF,MAAMC,QAAQ,GAAG,MAAMJ,2BAA2B,CAAC;MACjDK,QAAQ,EAAEF,GAAG,CAACG,KAAK,CAACC,IAAI,CAACF,QAAQ;MACjCG,SAAS,EAAEL,GAAG,CAACG,KAAK,CAACC,IAAI,CAACC,SAAS;MACnCC,MAAM,EAAEC,WAAW,CAACC,OAAO,CAACV,iBAAiB;IAC/C,CAAC,CAAC;IAEF,OAAO;MACLW,IAAI,EAAE,OAAO;MACbR;IACF,CAAC;EACH,CAAC,CAAC,OAAOS,KAAK,EAAE;IACd,OAAO;MACLD,IAAI,EAAE,OAAO;MACbE,OAAO,EAAED,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG;IACpD,CAAC;EACH;AACF,CAAC","ignoreList":[]}
@@ -51,25 +51,6 @@ export type TuiSlotPlugin = {
51
51
  };
52
52
  export type TuiPlugin = (api: TuiPluginApi) => void | Promise<void>;
53
53
  export type PublishedSkillSummary = NonNullable<PluginStatusSnapshot['catalog']>['skills'][number];
54
- export type SkillRowState = 'global-scope' | 'project-scope' | 'user-scope' | 'installable';
55
- export type SkillDialogRow = {
56
- skill: PublishedSkillSummary;
57
- ignored: boolean;
58
- state: SkillRowState;
59
- };
60
54
  export type RefreshStatus = (options?: {
61
55
  showLoading?: boolean;
62
56
  }) => void;
63
- export type PreferenceScope = 'global' | 'project';
64
- export type PreferenceActionNotice = {
65
- kind: 'idle';
66
- } | {
67
- kind: 'pending';
68
- message: string;
69
- } | {
70
- kind: 'success';
71
- message: string;
72
- } | {
73
- kind: 'error';
74
- message: string;
75
- };
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/tui/types.ts"],"sourcesContent":["import type { RGBA } from '@opentui/core';\nimport type { JSX } from 'solid-js';\nimport type { PluginStatusSnapshot } from '../server.js';\n\nexport type StatusState =\n | {\n kind: 'loading';\n }\n | {\n kind: 'ready';\n snapshot: PluginStatusSnapshot;\n }\n | {\n kind: 'error';\n message: string;\n };\n\nexport type WizardTheme = {\n text: string | RGBA | undefined;\n textMuted: string | RGBA | undefined;\n warning: string | RGBA | undefined;\n};\n\nexport type TuiPluginApi = {\n theme: {\n current: WizardTheme;\n };\n ui?: {\n dialog?: {\n replace?: (render: () => JSX.Element, onClose?: () => void) => void;\n clear?: () => void;\n setSize?: (size: 'medium' | 'large' | 'xlarge') => void;\n };\n };\n renderer?: {\n requestRender?: () => void;\n };\n slots: {\n register: (slot: TuiSlotPlugin) => void;\n };\n state: {\n path: {\n worktree: string;\n directory: string;\n };\n };\n};\n\nexport type TuiSlotContext = unknown;\n\nexport type TuiSlotPlugin = {\n order: number;\n slots: {\n home_bottom: () => JSX.Element;\n sidebar_content: (ctx: TuiSlotContext, value: { session_id: string }) => JSX.Element;\n };\n};\n\nexport type TuiPlugin = (api: TuiPluginApi) => void | Promise<void>;\n\nexport type PublishedSkillSummary = NonNullable<PluginStatusSnapshot['catalog']>['skills'][number];\nexport type SkillRowState = 'global-scope' | 'project-scope' | 'user-scope' | 'installable';\nexport type SkillDialogRow = {\n skill: PublishedSkillSummary;\n ignored: boolean;\n state: SkillRowState;\n};\nexport type RefreshStatus = (options?: { showLoading?: boolean }) => void;\nexport type PreferenceScope = 'global' | 'project';\nexport type PreferenceActionNotice =\n | {\n kind: 'idle';\n }\n | {\n kind: 'pending';\n message: string;\n }\n | {\n kind: 'success';\n message: string;\n }\n | {\n kind: 'error';\n message: string;\n };\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../src/tui/types.ts"],"sourcesContent":["import type { RGBA } from '@opentui/core';\nimport type { JSX } from 'solid-js';\nimport type { PluginStatusSnapshot } from '../server.js';\n\nexport type StatusState =\n | {\n kind: 'loading';\n }\n | {\n kind: 'ready';\n snapshot: PluginStatusSnapshot;\n }\n | {\n kind: 'error';\n message: string;\n };\n\nexport type WizardTheme = {\n text: string | RGBA | undefined;\n textMuted: string | RGBA | undefined;\n warning: string | RGBA | undefined;\n};\n\nexport type TuiPluginApi = {\n theme: {\n current: WizardTheme;\n };\n ui?: {\n dialog?: {\n replace?: (render: () => JSX.Element, onClose?: () => void) => void;\n clear?: () => void;\n setSize?: (size: 'medium' | 'large' | 'xlarge') => void;\n };\n };\n renderer?: {\n requestRender?: () => void;\n };\n slots: {\n register: (slot: TuiSlotPlugin) => void;\n };\n state: {\n path: {\n worktree: string;\n directory: string;\n };\n };\n};\n\nexport type TuiSlotContext = unknown;\n\nexport type TuiSlotPlugin = {\n order: number;\n slots: {\n home_bottom: () => JSX.Element;\n sidebar_content: (ctx: TuiSlotContext, value: { session_id: string }) => JSX.Element;\n };\n};\n\nexport type TuiPlugin = (api: TuiPluginApi) => void | Promise<void>;\n\nexport type PublishedSkillSummary = NonNullable<PluginStatusSnapshot['catalog']>['skills'][number];\nexport type RefreshStatus = (options?: { showLoading?: boolean }) => void;\n"],"mappings":"","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aexol/opencode-wizard",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "OpenCode plugin for opencode-wizard published skills",
5
5
  "type": "module",
6
6
  "oc-plugin": [
@@ -1,5 +0,0 @@
1
- import type { PreferenceActionNotice, TuiPluginApi } from '../types.js';
2
- export declare const PreferenceActionNoticeRow: (props: {
3
- notice: PreferenceActionNotice;
4
- theme: TuiPluginApi["theme"]["current"];
5
- }) => any;
@@ -1,17 +0,0 @@
1
- import { effect as _$effect } from "@opentui/solid";
2
- import { insert as _$insert } from "@opentui/solid";
3
- import { setProp as _$setProp } from "@opentui/solid";
4
- import { createElement as _$createElement } from "@opentui/solid";
5
- import { compactStatusMessage } from '../formatting.js';
6
- export const PreferenceActionNoticeRow = props => {
7
- if (props.notice.kind === 'idle') return null;
8
- return (() => {
9
- var _el$ = _$createElement("text");
10
- _$setProp(_el$, "wrapMode", "none");
11
- _$setProp(_el$, "overflow", "hidden");
12
- _$insert(_el$, () => compactStatusMessage(props.notice.message));
13
- _$effect(_$p => _$setProp(_el$, "fg", props.notice.kind === 'error' ? props.theme.warning : props.theme.textMuted, _$p));
14
- return _el$;
15
- })();
16
- };
17
- //# sourceMappingURL=preference-action-notice-row.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["compactStatusMessage","PreferenceActionNoticeRow","props","notice","kind","_el$","_$createElement","_$setProp","_$insert","message","_$effect","_$p","theme","warning","textMuted"],"sources":["../../../src/tui/components/preference-action-notice-row.tsx"],"sourcesContent":["import { compactStatusMessage } from '../formatting.js';\nimport type { PreferenceActionNotice, TuiPluginApi } from '../types.js';\n\nexport const PreferenceActionNoticeRow = (props: {\n notice: PreferenceActionNotice;\n theme: TuiPluginApi['theme']['current'];\n}) => {\n if (props.notice.kind === 'idle') return null;\n\n return (\n <text\n fg={props.notice.kind === 'error' ? props.theme.warning : props.theme.textMuted}\n wrapMode=\"none\"\n overflow=\"hidden\"\n >\n {compactStatusMessage(props.notice.message)}\n </text>\n );\n};\n"],"mappings":";;;;AAAA,SAASA,oBAAoB,QAAQ,kBAAkB;AAGvD,OAAO,MAAMC,yBAAyB,GAAIC,KAGzC,IAAK;EACJ,IAAIA,KAAK,CAACC,MAAM,CAACC,IAAI,KAAK,MAAM,EAAE,OAAO,IAAI;EAE7C;IAAA,IAAAC,IAAA,GAAAC,eAAA;IAAAC,SAAA,CAAAF,IAAA,cAGa,MAAM;IAAAE,SAAA,CAAAF,IAAA,cACN,QAAQ;IAAAG,QAAA,CAAAH,IAAA,QAEhBL,oBAAoB,CAACE,KAAK,CAACC,MAAM,CAACM,OAAO,CAAC;IAAAC,QAAA,CAAAC,GAAA,IAAAJ,SAAA,CAAAF,IAAA,QAJvCH,KAAK,CAACC,MAAM,CAACC,IAAI,KAAK,OAAO,GAAGF,KAAK,CAACU,KAAK,CAACC,OAAO,GAAGX,KAAK,CAACU,KAAK,CAACE,SAAS,EAAAH,GAAA;IAAA,OAAAN,IAAA;EAAA;AAOrF,CAAC","ignoreList":[]}
@@ -1,8 +0,0 @@
1
- import type { PreferenceScope, SkillDialogRow, TuiPluginApi } from '../types.js';
2
- export declare const SkillCatalogRow: (props: {
3
- row: SkillDialogRow;
4
- theme: TuiPluginApi["theme"]["current"];
5
- onIgnore: (row: SkillDialogRow) => void;
6
- onInstall: (row: SkillDialogRow, preferenceScope: PreferenceScope) => void;
7
- onUninstall: (row: SkillDialogRow) => void;
8
- }) => any;
@@ -1,124 +0,0 @@
1
- import { effect as _$effect } from "@opentui/solid";
2
- import { memo as _$memo } from "@opentui/solid";
3
- import { createTextNode as _$createTextNode } from "@opentui/solid";
4
- import { insertNode as _$insertNode } from "@opentui/solid";
5
- import { insert as _$insert } from "@opentui/solid";
6
- import { setProp as _$setProp } from "@opentui/solid";
7
- import { createElement as _$createElement } from "@opentui/solid";
8
- import { compactSkillDescription, compactSkillMeta, compactSkillName } from '../formatting.js';
9
- import { getRowStateLabel, getSkillDescription, getSkillDisplayName, getSkillMeta } from '../skill-helpers.js';
10
- export const SkillCatalogRow = props => {
11
- const skill = props.row.skill;
12
- const description = getSkillDescription(skill);
13
- const canUninstall = skill.assignmentSource === 'USER_GLOBAL' || skill.assignmentSource === 'USER_WORKSPACE';
14
- return (() => {
15
- var _el$ = _$createElement("box"),
16
- _el$2 = _$createElement("box"),
17
- _el$3 = _$createElement("text"),
18
- _el$4 = _$createElement("b"),
19
- _el$5 = _$createTextNode(` (`),
20
- _el$7 = _$createTextNode(`)`),
21
- _el$8 = _$createElement("box"),
22
- _el$9 = _$createElement("text");
23
- _$insertNode(_el$, _el$2);
24
- _$insertNode(_el$, _el$9);
25
- _$setProp(_el$, "width", "100%");
26
- _$setProp(_el$, "flexDirection", "column");
27
- _$setProp(_el$, "overflow", "hidden");
28
- _$setProp(_el$, "marginBottom", 1);
29
- _$insertNode(_el$2, _el$3);
30
- _$insertNode(_el$2, _el$8);
31
- _$setProp(_el$2, "width", "100%");
32
- _$setProp(_el$2, "flexDirection", "row");
33
- _$setProp(_el$2, "justifyContent", "space-between");
34
- _$setProp(_el$2, "overflow", "hidden");
35
- _$insertNode(_el$3, _el$4);
36
- _$insertNode(_el$3, _el$5);
37
- _$insertNode(_el$3, _el$7);
38
- _$setProp(_el$3, "wrapMode", "none");
39
- _$setProp(_el$3, "overflow", "hidden");
40
- _$insert(_el$4, () => compactSkillName(getSkillDisplayName(skill)));
41
- _$insert(_el$3, () => getRowStateLabel(props.row), _el$7);
42
- _$setProp(_el$8, "flexDirection", "row");
43
- _$setProp(_el$8, "flexShrink", 0);
44
- _$insert(_el$8, (() => {
45
- var _c$ = _$memo(() => props.row.state === 'installable');
46
- return () => _c$() ? [(() => {
47
- var _el$0 = _$createElement("box"),
48
- _el$1 = _$createElement("text");
49
- _$insertNode(_el$0, _el$1);
50
- _$setProp(_el$0, "onMouseUp", () => props.onInstall(props.row, 'global'));
51
- _$setProp(_el$0, "flexShrink", 0);
52
- _$insertNode(_el$1, _$createTextNode(`GLOBAL SCOPE`));
53
- _$setProp(_el$1, "wrapMode", "none");
54
- _$effect(_$p => _$setProp(_el$1, "fg", props.theme.textMuted, _$p));
55
- return _el$0;
56
- })(), (() => {
57
- var _el$11 = _$createElement("text");
58
- _$insertNode(_el$11, _$createTextNode(` / `));
59
- _$setProp(_el$11, "wrapMode", "none");
60
- _$effect(_$p => _$setProp(_el$11, "fg", props.theme.textMuted, _$p));
61
- return _el$11;
62
- })(), (() => {
63
- var _el$13 = _$createElement("box"),
64
- _el$14 = _$createElement("text");
65
- _$insertNode(_el$13, _el$14);
66
- _$setProp(_el$13, "onMouseUp", () => props.onInstall(props.row, 'project'));
67
- _$setProp(_el$13, "flexShrink", 0);
68
- _$insertNode(_el$14, _$createTextNode(`PROJECT SCOPE`));
69
- _$setProp(_el$14, "wrapMode", "none");
70
- _$effect(_$p => _$setProp(_el$14, "fg", props.theme.textMuted, _$p));
71
- return _el$13;
72
- })()] : [(() => {
73
- var _el$16 = _$createElement("box"),
74
- _el$17 = _$createElement("text");
75
- _$insertNode(_el$16, _el$17);
76
- _$setProp(_el$16, "onMouseUp", () => props.onIgnore(props.row));
77
- _$setProp(_el$16, "flexShrink", 0);
78
- _$setProp(_el$17, "wrapMode", "none");
79
- _$insert(_el$17, () => props.row.ignored ? 'Unignore' : 'Ignore');
80
- _$effect(_$p => _$setProp(_el$17, "fg", props.theme.textMuted, _$p));
81
- return _el$16;
82
- })(), canUninstall ? [(() => {
83
- var _el$18 = _$createElement("text");
84
- _$insertNode(_el$18, _$createTextNode(` / `));
85
- _$setProp(_el$18, "wrapMode", "none");
86
- _$effect(_$p => _$setProp(_el$18, "fg", props.theme.textMuted, _$p));
87
- return _el$18;
88
- })(), (() => {
89
- var _el$20 = _$createElement("box"),
90
- _el$21 = _$createElement("text");
91
- _$insertNode(_el$20, _el$21);
92
- _$setProp(_el$20, "onMouseUp", () => props.onUninstall(props.row));
93
- _$setProp(_el$20, "flexShrink", 0);
94
- _$insertNode(_el$21, _$createTextNode(`Uninstall`));
95
- _$setProp(_el$21, "wrapMode", "none");
96
- _$effect(_$p => _$setProp(_el$21, "fg", props.theme.textMuted, _$p));
97
- return _el$20;
98
- })()] : null];
99
- })());
100
- _$setProp(_el$9, "wrapMode", "none");
101
- _$setProp(_el$9, "overflow", "hidden");
102
- _$insert(_el$9, () => compactSkillMeta(getSkillMeta(skill, props.row.state)));
103
- _$insert(_el$, description ? (() => {
104
- var _el$23 = _$createElement("text");
105
- _$setProp(_el$23, "wrapMode", "none");
106
- _$setProp(_el$23, "overflow", "hidden");
107
- _$insert(_el$23, () => compactSkillDescription(description));
108
- _$effect(_$p => _$setProp(_el$23, "fg", props.theme.text, _$p));
109
- return _el$23;
110
- })() : null, null);
111
- _$effect(_p$ => {
112
- var _v$ = props.row.ignored ? props.theme.textMuted : props.theme.text,
113
- _v$2 = props.theme.textMuted;
114
- _v$ !== _p$.e && (_p$.e = _$setProp(_el$3, "fg", _v$, _p$.e));
115
- _v$2 !== _p$.t && (_p$.t = _$setProp(_el$9, "fg", _v$2, _p$.t));
116
- return _p$;
117
- }, {
118
- e: undefined,
119
- t: undefined
120
- });
121
- return _el$;
122
- })();
123
- };
124
- //# sourceMappingURL=skill-catalog-row.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["compactSkillDescription","compactSkillMeta","compactSkillName","getRowStateLabel","getSkillDescription","getSkillDisplayName","getSkillMeta","SkillCatalogRow","props","skill","row","description","canUninstall","assignmentSource","_el$","_$createElement","_el$2","_el$3","_el$4","_el$5","_$createTextNode","_el$7","_el$8","_el$9","_$insertNode","_$setProp","_$insert","_c$","_$memo","state","_el$0","_el$1","onInstall","_$effect","_$p","theme","textMuted","_el$11","_el$13","_el$14","_el$16","_el$17","onIgnore","ignored","_el$18","_el$20","_el$21","onUninstall","_el$23","text","_p$","_v$","_v$2","e","t","undefined"],"sources":["../../../src/tui/components/skill-catalog-row.tsx"],"sourcesContent":["import { compactSkillDescription, compactSkillMeta, compactSkillName } from '../formatting.js';\nimport {\n getRowStateLabel,\n getSkillDescription,\n getSkillDisplayName,\n getSkillMeta,\n} from '../skill-helpers.js';\nimport type { PreferenceScope, SkillDialogRow, TuiPluginApi } from '../types.js';\n\nexport const SkillCatalogRow = (props: {\n row: SkillDialogRow;\n theme: TuiPluginApi['theme']['current'];\n onIgnore: (row: SkillDialogRow) => void;\n onInstall: (row: SkillDialogRow, preferenceScope: PreferenceScope) => void;\n onUninstall: (row: SkillDialogRow) => void;\n}) => {\n const skill = props.row.skill;\n const description = getSkillDescription(skill);\n const canUninstall = skill.assignmentSource === 'USER_GLOBAL' || skill.assignmentSource === 'USER_WORKSPACE';\n\n return (\n <box width=\"100%\" flexDirection=\"column\" overflow=\"hidden\" marginBottom={1}>\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"space-between\" overflow=\"hidden\">\n <text fg={props.row.ignored ? props.theme.textMuted : props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n <b>{compactSkillName(getSkillDisplayName(skill))}</b>\n {' '}({getRowStateLabel(props.row)})\n </text>\n <box flexDirection=\"row\" flexShrink={0}>\n {props.row.state === 'installable' ? (\n <>\n <box onMouseUp={() => props.onInstall(props.row, 'global')} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n GLOBAL SCOPE\n </text>\n </box>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n {' / '}\n </text>\n <box onMouseUp={() => props.onInstall(props.row, 'project')} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n PROJECT SCOPE\n </text>\n </box>\n </>\n ) : (\n <>\n <box onMouseUp={() => props.onIgnore(props.row)} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n {props.row.ignored ? 'Unignore' : 'Ignore'}\n </text>\n </box>\n {canUninstall ? (\n <>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n {' / '}\n </text>\n <box onMouseUp={() => props.onUninstall(props.row)} flexShrink={0}>\n <text fg={props.theme.textMuted} wrapMode=\"none\">\n Uninstall\n </text>\n </box>\n </>\n ) : null}\n </>\n )}\n </box>\n </box>\n <text fg={props.theme.textMuted} wrapMode=\"none\" overflow=\"hidden\">\n {compactSkillMeta(getSkillMeta(skill, props.row.state))}\n </text>\n {description ? (\n <text fg={props.theme.text} wrapMode=\"none\" overflow=\"hidden\">\n {compactSkillDescription(description)}\n </text>\n ) : null}\n </box>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +0,0 @@
1
- import type { PreferenceActionNotice, PreferenceScope, SkillDialogRow, StatusState, TuiPluginApi } from '../types.js';
2
- export declare const WizardSkillsDialogContent: (props: {
3
- status: () => StatusState;
4
- actionNotice: () => PreferenceActionNotice;
5
- theme: TuiPluginApi["theme"]["current"];
6
- onIgnoreSkill: (row: SkillDialogRow) => void;
7
- onInstallSkill: (row: SkillDialogRow, preferenceScope: PreferenceScope) => void;
8
- onUninstallSkill: (row: SkillDialogRow) => void;
9
- }) => any;