@dexto/agent-management 1.5.5 → 1.5.7

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 (128) hide show
  1. package/dist/config/config-enrichment.cjs +70 -20
  2. package/dist/config/config-enrichment.d.ts +10 -2
  3. package/dist/config/config-enrichment.d.ts.map +1 -1
  4. package/dist/config/config-enrichment.js +74 -20
  5. package/dist/config/discover-prompts.cjs +1 -1
  6. package/dist/config/discover-prompts.d.ts +11 -11
  7. package/dist/config/discover-prompts.d.ts.map +1 -1
  8. package/dist/config/discover-prompts.js +1 -1
  9. package/dist/config/loader.cjs +31 -13
  10. package/dist/config/loader.d.ts.map +1 -1
  11. package/dist/config/loader.js +31 -13
  12. package/dist/index.cjs +65 -0
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +66 -0
  16. package/dist/models/custom-models.cjs +2 -1
  17. package/dist/models/custom-models.d.ts +7 -6
  18. package/dist/models/custom-models.d.ts.map +1 -1
  19. package/dist/models/custom-models.js +2 -1
  20. package/dist/plugins/discover-plugins.cjs +176 -0
  21. package/dist/plugins/discover-plugins.d.ts +39 -0
  22. package/dist/plugins/discover-plugins.d.ts.map +1 -0
  23. package/dist/plugins/discover-plugins.js +140 -0
  24. package/dist/plugins/discover-skills.cjs +89 -0
  25. package/dist/plugins/discover-skills.d.ts +46 -0
  26. package/dist/plugins/discover-skills.d.ts.map +1 -0
  27. package/dist/plugins/discover-skills.js +54 -0
  28. package/dist/plugins/error-codes.cjs +47 -0
  29. package/dist/plugins/error-codes.d.ts +24 -0
  30. package/dist/plugins/error-codes.d.ts.map +1 -0
  31. package/dist/plugins/error-codes.js +23 -0
  32. package/dist/plugins/errors.cjs +197 -0
  33. package/dist/plugins/errors.d.ts +68 -0
  34. package/dist/plugins/errors.d.ts.map +1 -0
  35. package/dist/plugins/errors.js +173 -0
  36. package/dist/plugins/index.cjs +144 -0
  37. package/dist/plugins/index.d.ts +23 -0
  38. package/dist/plugins/index.d.ts.map +1 -0
  39. package/dist/plugins/index.js +115 -0
  40. package/dist/plugins/install-plugin.cjs +211 -0
  41. package/dist/plugins/install-plugin.d.ts +47 -0
  42. package/dist/plugins/install-plugin.d.ts.map +1 -0
  43. package/dist/plugins/install-plugin.js +173 -0
  44. package/dist/plugins/list-plugins.cjs +134 -0
  45. package/dist/plugins/list-plugins.d.ts +26 -0
  46. package/dist/plugins/list-plugins.d.ts.map +1 -0
  47. package/dist/plugins/list-plugins.js +99 -0
  48. package/dist/plugins/load-plugin.cjs +197 -0
  49. package/dist/plugins/load-plugin.d.ts +20 -0
  50. package/dist/plugins/load-plugin.d.ts.map +1 -0
  51. package/dist/plugins/load-plugin.js +163 -0
  52. package/dist/plugins/marketplace/error-codes.cjs +45 -0
  53. package/dist/plugins/marketplace/error-codes.d.ts +21 -0
  54. package/dist/plugins/marketplace/error-codes.d.ts.map +1 -0
  55. package/dist/plugins/marketplace/error-codes.js +21 -0
  56. package/dist/plugins/marketplace/errors.cjs +188 -0
  57. package/dist/plugins/marketplace/errors.d.ts +64 -0
  58. package/dist/plugins/marketplace/errors.d.ts.map +1 -0
  59. package/dist/plugins/marketplace/errors.js +164 -0
  60. package/dist/plugins/marketplace/index.cjs +95 -0
  61. package/dist/plugins/marketplace/index.d.ts +14 -0
  62. package/dist/plugins/marketplace/index.d.ts.map +1 -0
  63. package/dist/plugins/marketplace/index.js +74 -0
  64. package/dist/plugins/marketplace/install-from-marketplace.cjs +152 -0
  65. package/dist/plugins/marketplace/install-from-marketplace.d.ts +25 -0
  66. package/dist/plugins/marketplace/install-from-marketplace.d.ts.map +1 -0
  67. package/dist/plugins/marketplace/install-from-marketplace.js +120 -0
  68. package/dist/plugins/marketplace/operations.cjs +374 -0
  69. package/dist/plugins/marketplace/operations.d.ts +43 -0
  70. package/dist/plugins/marketplace/operations.d.ts.map +1 -0
  71. package/dist/plugins/marketplace/operations.js +339 -0
  72. package/dist/plugins/marketplace/registry.cjs +166 -0
  73. package/dist/plugins/marketplace/registry.d.ts +72 -0
  74. package/dist/plugins/marketplace/registry.d.ts.map +1 -0
  75. package/dist/plugins/marketplace/registry.js +119 -0
  76. package/dist/plugins/marketplace/schemas.cjs +79 -0
  77. package/dist/plugins/marketplace/schemas.d.ts +260 -0
  78. package/dist/plugins/marketplace/schemas.d.ts.map +1 -0
  79. package/dist/plugins/marketplace/schemas.js +49 -0
  80. package/dist/plugins/marketplace/types.cjs +16 -0
  81. package/dist/plugins/marketplace/types.d.ts +156 -0
  82. package/dist/plugins/marketplace/types.d.ts.map +1 -0
  83. package/dist/plugins/marketplace/types.js +0 -0
  84. package/dist/plugins/schemas.cjs +74 -0
  85. package/dist/plugins/schemas.d.ts +262 -0
  86. package/dist/plugins/schemas.d.ts.map +1 -0
  87. package/dist/plugins/schemas.js +46 -0
  88. package/dist/plugins/types.cjs +16 -0
  89. package/dist/plugins/types.d.ts +186 -0
  90. package/dist/plugins/types.d.ts.map +1 -0
  91. package/dist/plugins/types.js +0 -0
  92. package/dist/plugins/uninstall-plugin.cjs +133 -0
  93. package/dist/plugins/uninstall-plugin.d.ts +24 -0
  94. package/dist/plugins/uninstall-plugin.d.ts.map +1 -0
  95. package/dist/plugins/uninstall-plugin.js +99 -0
  96. package/dist/plugins/validate-plugin.cjs +180 -0
  97. package/dist/plugins/validate-plugin.d.ts +53 -0
  98. package/dist/plugins/validate-plugin.d.ts.map +1 -0
  99. package/dist/plugins/validate-plugin.js +145 -0
  100. package/dist/preferences/schemas.d.ts +12 -12
  101. package/dist/runtime/AgentRuntime.cjs +1 -2
  102. package/dist/runtime/AgentRuntime.d.ts.map +1 -1
  103. package/dist/runtime/AgentRuntime.js +1 -2
  104. package/dist/tool-provider/llm-resolution.cjs +74 -0
  105. package/dist/tool-provider/llm-resolution.d.ts +51 -0
  106. package/dist/tool-provider/llm-resolution.d.ts.map +1 -0
  107. package/dist/tool-provider/llm-resolution.js +50 -0
  108. package/dist/tool-provider/runtime-service.cjs +158 -23
  109. package/dist/tool-provider/runtime-service.d.ts +32 -2
  110. package/dist/tool-provider/runtime-service.d.ts.map +1 -1
  111. package/dist/tool-provider/runtime-service.js +158 -23
  112. package/dist/tool-provider/tool-provider.cjs +2 -0
  113. package/dist/tool-provider/tool-provider.d.ts.map +1 -1
  114. package/dist/tool-provider/tool-provider.js +2 -0
  115. package/dist/tool-provider/types.d.ts +2 -0
  116. package/dist/tool-provider/types.d.ts.map +1 -1
  117. package/dist/utils/api-key-resolver.cjs +5 -2
  118. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  119. package/dist/utils/api-key-resolver.js +5 -2
  120. package/dist/utils/dexto-auth.cjs +83 -0
  121. package/dist/utils/dexto-auth.d.ts +23 -0
  122. package/dist/utils/dexto-auth.d.ts.map +1 -0
  123. package/dist/utils/dexto-auth.js +57 -0
  124. package/dist/utils/feature-flags.cjs +30 -0
  125. package/dist/utils/feature-flags.d.ts +21 -0
  126. package/dist/utils/feature-flags.d.ts.map +1 -0
  127. package/dist/utils/feature-flags.js +6 -0
  128. package/package.json +2 -2
File without changes
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var schemas_exports = {};
20
+ __export(schemas_exports, {
21
+ DextoPluginManifestSchema: () => DextoPluginManifestSchema,
22
+ InstalledPluginEntrySchema: () => InstalledPluginEntrySchema,
23
+ InstalledPluginsFileSchema: () => InstalledPluginsFileSchema,
24
+ PluginMCPConfigSchema: () => PluginMCPConfigSchema,
25
+ PluginManifestSchema: () => PluginManifestSchema
26
+ });
27
+ module.exports = __toCommonJS(schemas_exports);
28
+ var import_zod = require("zod");
29
+ const AuthorSchema = import_zod.z.union([
30
+ import_zod.z.string(),
31
+ import_zod.z.object({
32
+ name: import_zod.z.string(),
33
+ email: import_zod.z.string().optional()
34
+ })
35
+ ]);
36
+ const PluginManifestSchema = import_zod.z.object({
37
+ name: import_zod.z.string().min(1).describe("Unique plugin name (used for namespacing commands)"),
38
+ description: import_zod.z.string().optional().describe("Human-readable plugin description"),
39
+ version: import_zod.z.string().optional().describe("Semantic version (e.g., 1.0.0)"),
40
+ author: AuthorSchema.optional().describe("Plugin author - string or {name, email} object")
41
+ }).passthrough().describe("Claude Code plugin manifest from .claude-plugin/plugin.json");
42
+ const DextoPluginManifestSchema = import_zod.z.object({
43
+ name: import_zod.z.string().min(1).describe("Unique plugin name (used for namespacing commands)"),
44
+ description: import_zod.z.string().optional().describe("Human-readable plugin description"),
45
+ version: import_zod.z.string().optional().describe("Semantic version (e.g., 1.0.0)"),
46
+ author: AuthorSchema.optional().describe("Plugin author - string or {name, email} object"),
47
+ // Dexto-specific extensions
48
+ customToolProviders: import_zod.z.array(import_zod.z.string()).optional().describe('Custom tool provider types bundled with this plugin (e.g., ["plan-tools"])')
49
+ }).passthrough().describe("Dexto-native plugin manifest from .dexto-plugin/plugin.json");
50
+ const PluginMCPConfigSchema = import_zod.z.object({
51
+ mcpServers: import_zod.z.record(import_zod.z.unknown()).optional().describe("MCP servers to register")
52
+ }).passthrough().describe("MCP configuration from .mcp.json");
53
+ const InstalledPluginEntrySchema = import_zod.z.object({
54
+ scope: import_zod.z.enum(["project", "user", "local", "managed"]).describe("Installation scope"),
55
+ installPath: import_zod.z.string().describe("Absolute path to the installed plugin"),
56
+ version: import_zod.z.string().optional().describe("Plugin version"),
57
+ installedAt: import_zod.z.string().optional().describe("ISO timestamp of installation"),
58
+ lastUpdated: import_zod.z.string().optional().describe("ISO timestamp of last update"),
59
+ gitCommitSha: import_zod.z.string().optional().describe("Git commit SHA if installed from marketplace"),
60
+ projectPath: import_zod.z.string().optional().describe("Project path for project-scoped plugins"),
61
+ isLocal: import_zod.z.boolean().optional().describe("Whether this is a local plugin")
62
+ }).passthrough().describe("Plugin installation entry");
63
+ const InstalledPluginsFileSchema = import_zod.z.object({
64
+ version: import_zod.z.number().optional().describe("Schema version"),
65
+ plugins: import_zod.z.record(import_zod.z.array(InstalledPluginEntrySchema)).describe("Map of plugin identifiers to installation entries")
66
+ }).passthrough().describe("Claude Code installed plugins manifest");
67
+ // Annotate the CommonJS export names for ESM import in node:
68
+ 0 && (module.exports = {
69
+ DextoPluginManifestSchema,
70
+ InstalledPluginEntrySchema,
71
+ InstalledPluginsFileSchema,
72
+ PluginMCPConfigSchema,
73
+ PluginManifestSchema
74
+ });
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Zod schemas for plugin validation
3
+ *
4
+ * Supports two plugin formats:
5
+ * - .claude-plugin/plugin.json: Claude Code compatible format
6
+ * - .dexto-plugin/plugin.json: Dexto-native format with extended features
7
+ */
8
+ import { z } from 'zod';
9
+ /**
10
+ * Schema for Claude Code plugin.json manifest
11
+ * Uses passthrough to allow unknown fields from Claude Code plugins
12
+ */
13
+ export declare const PluginManifestSchema: z.ZodObject<{
14
+ name: z.ZodString;
15
+ description: z.ZodOptional<z.ZodString>;
16
+ version: z.ZodOptional<z.ZodString>;
17
+ author: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
18
+ name: z.ZodString;
19
+ email: z.ZodOptional<z.ZodString>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ name: string;
22
+ email?: string | undefined;
23
+ }, {
24
+ name: string;
25
+ email?: string | undefined;
26
+ }>]>>;
27
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
28
+ name: z.ZodString;
29
+ description: z.ZodOptional<z.ZodString>;
30
+ version: z.ZodOptional<z.ZodString>;
31
+ author: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
32
+ name: z.ZodString;
33
+ email: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ name: string;
36
+ email?: string | undefined;
37
+ }, {
38
+ name: string;
39
+ email?: string | undefined;
40
+ }>]>>;
41
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
42
+ name: z.ZodString;
43
+ description: z.ZodOptional<z.ZodString>;
44
+ version: z.ZodOptional<z.ZodString>;
45
+ author: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
46
+ name: z.ZodString;
47
+ email: z.ZodOptional<z.ZodString>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ name: string;
50
+ email?: string | undefined;
51
+ }, {
52
+ name: string;
53
+ email?: string | undefined;
54
+ }>]>>;
55
+ }, z.ZodTypeAny, "passthrough">>;
56
+ /**
57
+ * Schema for Dexto-native plugin.json manifest
58
+ * Extends Claude Code format with Dexto-specific features
59
+ */
60
+ export declare const DextoPluginManifestSchema: z.ZodObject<{
61
+ name: z.ZodString;
62
+ description: z.ZodOptional<z.ZodString>;
63
+ version: z.ZodOptional<z.ZodString>;
64
+ author: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
65
+ name: z.ZodString;
66
+ email: z.ZodOptional<z.ZodString>;
67
+ }, "strip", z.ZodTypeAny, {
68
+ name: string;
69
+ email?: string | undefined;
70
+ }, {
71
+ name: string;
72
+ email?: string | undefined;
73
+ }>]>>;
74
+ customToolProviders: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
75
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
76
+ name: z.ZodString;
77
+ description: z.ZodOptional<z.ZodString>;
78
+ version: z.ZodOptional<z.ZodString>;
79
+ author: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
80
+ name: z.ZodString;
81
+ email: z.ZodOptional<z.ZodString>;
82
+ }, "strip", z.ZodTypeAny, {
83
+ name: string;
84
+ email?: string | undefined;
85
+ }, {
86
+ name: string;
87
+ email?: string | undefined;
88
+ }>]>>;
89
+ customToolProviders: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
90
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
91
+ name: z.ZodString;
92
+ description: z.ZodOptional<z.ZodString>;
93
+ version: z.ZodOptional<z.ZodString>;
94
+ author: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
95
+ name: z.ZodString;
96
+ email: z.ZodOptional<z.ZodString>;
97
+ }, "strip", z.ZodTypeAny, {
98
+ name: string;
99
+ email?: string | undefined;
100
+ }, {
101
+ name: string;
102
+ email?: string | undefined;
103
+ }>]>>;
104
+ customToolProviders: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
105
+ }, z.ZodTypeAny, "passthrough">>;
106
+ /**
107
+ * Schema for .mcp.json configuration
108
+ * Uses passthrough to allow unknown MCP server configurations
109
+ */
110
+ export declare const PluginMCPConfigSchema: z.ZodObject<{
111
+ mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
112
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
113
+ mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
114
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
115
+ mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
116
+ }, z.ZodTypeAny, "passthrough">>;
117
+ /**
118
+ * Type for validated Claude Code plugin manifest
119
+ */
120
+ export type ValidatedPluginManifest = z.output<typeof PluginManifestSchema>;
121
+ /**
122
+ * Type for validated Dexto-native plugin manifest
123
+ */
124
+ export type ValidatedDextoPluginManifest = z.output<typeof DextoPluginManifestSchema>;
125
+ /**
126
+ * Type for validated MCP config
127
+ */
128
+ export type ValidatedPluginMCPConfig = z.output<typeof PluginMCPConfigSchema>;
129
+ /**
130
+ * Schema for individual plugin installation entry in installed_plugins.json
131
+ */
132
+ export declare const InstalledPluginEntrySchema: z.ZodObject<{
133
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
134
+ installPath: z.ZodString;
135
+ version: z.ZodOptional<z.ZodString>;
136
+ installedAt: z.ZodOptional<z.ZodString>;
137
+ lastUpdated: z.ZodOptional<z.ZodString>;
138
+ gitCommitSha: z.ZodOptional<z.ZodString>;
139
+ projectPath: z.ZodOptional<z.ZodString>;
140
+ isLocal: z.ZodOptional<z.ZodBoolean>;
141
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
142
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
143
+ installPath: z.ZodString;
144
+ version: z.ZodOptional<z.ZodString>;
145
+ installedAt: z.ZodOptional<z.ZodString>;
146
+ lastUpdated: z.ZodOptional<z.ZodString>;
147
+ gitCommitSha: z.ZodOptional<z.ZodString>;
148
+ projectPath: z.ZodOptional<z.ZodString>;
149
+ isLocal: z.ZodOptional<z.ZodBoolean>;
150
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
151
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
152
+ installPath: z.ZodString;
153
+ version: z.ZodOptional<z.ZodString>;
154
+ installedAt: z.ZodOptional<z.ZodString>;
155
+ lastUpdated: z.ZodOptional<z.ZodString>;
156
+ gitCommitSha: z.ZodOptional<z.ZodString>;
157
+ projectPath: z.ZodOptional<z.ZodString>;
158
+ isLocal: z.ZodOptional<z.ZodBoolean>;
159
+ }, z.ZodTypeAny, "passthrough">>;
160
+ /**
161
+ * Schema for ~/.dexto/plugins/installed_plugins.json
162
+ */
163
+ export declare const InstalledPluginsFileSchema: z.ZodObject<{
164
+ version: z.ZodOptional<z.ZodNumber>;
165
+ plugins: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
166
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
167
+ installPath: z.ZodString;
168
+ version: z.ZodOptional<z.ZodString>;
169
+ installedAt: z.ZodOptional<z.ZodString>;
170
+ lastUpdated: z.ZodOptional<z.ZodString>;
171
+ gitCommitSha: z.ZodOptional<z.ZodString>;
172
+ projectPath: z.ZodOptional<z.ZodString>;
173
+ isLocal: z.ZodOptional<z.ZodBoolean>;
174
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
175
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
176
+ installPath: z.ZodString;
177
+ version: z.ZodOptional<z.ZodString>;
178
+ installedAt: z.ZodOptional<z.ZodString>;
179
+ lastUpdated: z.ZodOptional<z.ZodString>;
180
+ gitCommitSha: z.ZodOptional<z.ZodString>;
181
+ projectPath: z.ZodOptional<z.ZodString>;
182
+ isLocal: z.ZodOptional<z.ZodBoolean>;
183
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
184
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
185
+ installPath: z.ZodString;
186
+ version: z.ZodOptional<z.ZodString>;
187
+ installedAt: z.ZodOptional<z.ZodString>;
188
+ lastUpdated: z.ZodOptional<z.ZodString>;
189
+ gitCommitSha: z.ZodOptional<z.ZodString>;
190
+ projectPath: z.ZodOptional<z.ZodString>;
191
+ isLocal: z.ZodOptional<z.ZodBoolean>;
192
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
193
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
194
+ version: z.ZodOptional<z.ZodNumber>;
195
+ plugins: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
196
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
197
+ installPath: z.ZodString;
198
+ version: z.ZodOptional<z.ZodString>;
199
+ installedAt: z.ZodOptional<z.ZodString>;
200
+ lastUpdated: z.ZodOptional<z.ZodString>;
201
+ gitCommitSha: z.ZodOptional<z.ZodString>;
202
+ projectPath: z.ZodOptional<z.ZodString>;
203
+ isLocal: z.ZodOptional<z.ZodBoolean>;
204
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
205
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
206
+ installPath: z.ZodString;
207
+ version: z.ZodOptional<z.ZodString>;
208
+ installedAt: z.ZodOptional<z.ZodString>;
209
+ lastUpdated: z.ZodOptional<z.ZodString>;
210
+ gitCommitSha: z.ZodOptional<z.ZodString>;
211
+ projectPath: z.ZodOptional<z.ZodString>;
212
+ isLocal: z.ZodOptional<z.ZodBoolean>;
213
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
214
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
215
+ installPath: z.ZodString;
216
+ version: z.ZodOptional<z.ZodString>;
217
+ installedAt: z.ZodOptional<z.ZodString>;
218
+ lastUpdated: z.ZodOptional<z.ZodString>;
219
+ gitCommitSha: z.ZodOptional<z.ZodString>;
220
+ projectPath: z.ZodOptional<z.ZodString>;
221
+ isLocal: z.ZodOptional<z.ZodBoolean>;
222
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
223
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
224
+ version: z.ZodOptional<z.ZodNumber>;
225
+ plugins: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
226
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
227
+ installPath: z.ZodString;
228
+ version: z.ZodOptional<z.ZodString>;
229
+ installedAt: z.ZodOptional<z.ZodString>;
230
+ lastUpdated: z.ZodOptional<z.ZodString>;
231
+ gitCommitSha: z.ZodOptional<z.ZodString>;
232
+ projectPath: z.ZodOptional<z.ZodString>;
233
+ isLocal: z.ZodOptional<z.ZodBoolean>;
234
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
235
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
236
+ installPath: z.ZodString;
237
+ version: z.ZodOptional<z.ZodString>;
238
+ installedAt: z.ZodOptional<z.ZodString>;
239
+ lastUpdated: z.ZodOptional<z.ZodString>;
240
+ gitCommitSha: z.ZodOptional<z.ZodString>;
241
+ projectPath: z.ZodOptional<z.ZodString>;
242
+ isLocal: z.ZodOptional<z.ZodBoolean>;
243
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
244
+ scope: z.ZodEnum<["project", "user", "local", "managed"]>;
245
+ installPath: z.ZodString;
246
+ version: z.ZodOptional<z.ZodString>;
247
+ installedAt: z.ZodOptional<z.ZodString>;
248
+ lastUpdated: z.ZodOptional<z.ZodString>;
249
+ gitCommitSha: z.ZodOptional<z.ZodString>;
250
+ projectPath: z.ZodOptional<z.ZodString>;
251
+ isLocal: z.ZodOptional<z.ZodBoolean>;
252
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
253
+ }, z.ZodTypeAny, "passthrough">>;
254
+ /**
255
+ * Type for validated installed plugins file
256
+ */
257
+ export type ValidatedInstalledPluginsFile = z.output<typeof InstalledPluginsFileSchema>;
258
+ /**
259
+ * Type for validated installed plugin entry
260
+ */
261
+ export type ValidatedInstalledPluginEntry = z.output<typeof InstalledPluginEntrySchema>;
262
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/plugins/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAQ2C,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAasC,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;gCAKe,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEtF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAeG,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAQgB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAExF;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { z } from "zod";
2
+ const AuthorSchema = z.union([
3
+ z.string(),
4
+ z.object({
5
+ name: z.string(),
6
+ email: z.string().optional()
7
+ })
8
+ ]);
9
+ const PluginManifestSchema = z.object({
10
+ name: z.string().min(1).describe("Unique plugin name (used for namespacing commands)"),
11
+ description: z.string().optional().describe("Human-readable plugin description"),
12
+ version: z.string().optional().describe("Semantic version (e.g., 1.0.0)"),
13
+ author: AuthorSchema.optional().describe("Plugin author - string or {name, email} object")
14
+ }).passthrough().describe("Claude Code plugin manifest from .claude-plugin/plugin.json");
15
+ const DextoPluginManifestSchema = z.object({
16
+ name: z.string().min(1).describe("Unique plugin name (used for namespacing commands)"),
17
+ description: z.string().optional().describe("Human-readable plugin description"),
18
+ version: z.string().optional().describe("Semantic version (e.g., 1.0.0)"),
19
+ author: AuthorSchema.optional().describe("Plugin author - string or {name, email} object"),
20
+ // Dexto-specific extensions
21
+ customToolProviders: z.array(z.string()).optional().describe('Custom tool provider types bundled with this plugin (e.g., ["plan-tools"])')
22
+ }).passthrough().describe("Dexto-native plugin manifest from .dexto-plugin/plugin.json");
23
+ const PluginMCPConfigSchema = z.object({
24
+ mcpServers: z.record(z.unknown()).optional().describe("MCP servers to register")
25
+ }).passthrough().describe("MCP configuration from .mcp.json");
26
+ const InstalledPluginEntrySchema = z.object({
27
+ scope: z.enum(["project", "user", "local", "managed"]).describe("Installation scope"),
28
+ installPath: z.string().describe("Absolute path to the installed plugin"),
29
+ version: z.string().optional().describe("Plugin version"),
30
+ installedAt: z.string().optional().describe("ISO timestamp of installation"),
31
+ lastUpdated: z.string().optional().describe("ISO timestamp of last update"),
32
+ gitCommitSha: z.string().optional().describe("Git commit SHA if installed from marketplace"),
33
+ projectPath: z.string().optional().describe("Project path for project-scoped plugins"),
34
+ isLocal: z.boolean().optional().describe("Whether this is a local plugin")
35
+ }).passthrough().describe("Plugin installation entry");
36
+ const InstalledPluginsFileSchema = z.object({
37
+ version: z.number().optional().describe("Schema version"),
38
+ plugins: z.record(z.array(InstalledPluginEntrySchema)).describe("Map of plugin identifiers to installation entries")
39
+ }).passthrough().describe("Claude Code installed plugins manifest");
40
+ export {
41
+ DextoPluginManifestSchema,
42
+ InstalledPluginEntrySchema,
43
+ InstalledPluginsFileSchema,
44
+ PluginMCPConfigSchema,
45
+ PluginManifestSchema
46
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var types_exports = {};
16
+ module.exports = __toCommonJS(types_exports);
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Claude Code Plugin Loader Types
3
+ *
4
+ * Supports loading bundled plugins from community sources (e.g., Vercel skills repo)
5
+ * with compatible features. Emits warnings for unsupported features (hooks, LSP).
6
+ *
7
+ * Plugin Format:
8
+ * ```
9
+ * my-plugin/
10
+ * ├── .claude-plugin/
11
+ * │ └── plugin.json # {name, description, version, author?}
12
+ * ├── commands/*.md # Commands (→ prompts, user-invocable by default)
13
+ * ├── skills/* /SKILL.md # Skills (→ prompts, user-invocable by default)
14
+ * ├── hooks/hooks.json # UNSUPPORTED - shell injection
15
+ * ├── .mcp.json # MCP servers to merge into config
16
+ * └── .lsp.json # UNSUPPORTED - language servers
17
+ * ```
18
+ */
19
+ /**
20
+ * Author can be a string or an object with name/email
21
+ */
22
+ export type PluginAuthor = string | {
23
+ name: string;
24
+ email?: string | undefined;
25
+ };
26
+ /**
27
+ * Plugin manifest from .claude-plugin/plugin.json
28
+ */
29
+ export interface PluginManifest {
30
+ name: string;
31
+ description?: string | undefined;
32
+ version?: string | undefined;
33
+ author?: PluginAuthor | undefined;
34
+ }
35
+ /**
36
+ * Dexto-native plugin manifest from .dexto-plugin/plugin.json
37
+ * Extends PluginManifest with Dexto-specific features
38
+ */
39
+ export interface DextoPluginManifest extends PluginManifest {
40
+ /** Custom tool provider types bundled with this plugin (e.g., ["plan-tools"]) */
41
+ customToolProviders?: string[] | undefined;
42
+ }
43
+ /**
44
+ * Plugin format type
45
+ */
46
+ export type PluginFormat = 'claude-code' | 'dexto';
47
+ /**
48
+ * A discovered plugin directory with its manifest
49
+ */
50
+ export interface DiscoveredPlugin {
51
+ /** Absolute path to plugin directory */
52
+ path: string;
53
+ /** Parsed and validated plugin manifest */
54
+ manifest: PluginManifest | DextoPluginManifest;
55
+ /** Source location type */
56
+ source: 'project' | 'user';
57
+ /** Plugin format (claude-code or dexto) */
58
+ format: PluginFormat;
59
+ }
60
+ /**
61
+ * A command or skill discovered within a plugin
62
+ */
63
+ export interface PluginCommand {
64
+ /** Absolute path to .md file */
65
+ file: string;
66
+ /** Plugin name for prefixing (namespace) */
67
+ namespace: string;
68
+ /** true = from skills/ directory, false = from commands/ directory.
69
+ * Note: This is metadata only; both are user-invocable by default. */
70
+ isSkill: boolean;
71
+ }
72
+ /**
73
+ * MCP configuration from .mcp.json
74
+ */
75
+ export interface PluginMCPConfig {
76
+ mcpServers?: Record<string, unknown> | undefined;
77
+ }
78
+ /**
79
+ * A fully loaded plugin with all discovered content
80
+ */
81
+ export interface LoadedPlugin {
82
+ /** Plugin manifest metadata */
83
+ manifest: PluginManifest | DextoPluginManifest;
84
+ /** Plugin format (claude-code or dexto) */
85
+ format: PluginFormat;
86
+ /** Discovered commands and skills */
87
+ commands: PluginCommand[];
88
+ /** MCP servers to merge into agent config */
89
+ mcpConfig?: PluginMCPConfig | undefined;
90
+ /** Custom tool provider types to register (Dexto-native plugins only) */
91
+ customToolProviders: string[];
92
+ /** Warnings for unsupported features found */
93
+ warnings: string[];
94
+ }
95
+ /**
96
+ * Installation scope for plugins
97
+ * - user: Installed to ~/.dexto/plugins/<name>/
98
+ * - project: Installed to <cwd>/.dexto/plugins/<name>/
99
+ * - local: Registered in-place (no copy)
100
+ */
101
+ export type PluginInstallScope = 'user' | 'project' | 'local';
102
+ /**
103
+ * Entry in installed_plugins.json for Dexto's plugin tracking
104
+ */
105
+ export interface InstalledPluginEntry {
106
+ /** Installation scope */
107
+ scope: PluginInstallScope;
108
+ /** Absolute path to the installed plugin */
109
+ installPath: string;
110
+ /** Plugin version from manifest */
111
+ version?: string | undefined;
112
+ /** ISO timestamp of installation */
113
+ installedAt: string;
114
+ /** ISO timestamp of last update */
115
+ lastUpdated?: string | undefined;
116
+ /** Project path for project-scoped plugins */
117
+ projectPath?: string | undefined;
118
+ /** Whether this is a local plugin (registered in-place) */
119
+ isLocal?: boolean | undefined;
120
+ /** Whether this plugin is imported from Claude Code (not copied, just referenced) */
121
+ isImported?: boolean | undefined;
122
+ }
123
+ /**
124
+ * Structure of installed_plugins.json
125
+ */
126
+ export interface InstalledPluginsFile {
127
+ /** Schema version for future compatibility */
128
+ version: number;
129
+ /** Map of plugin names to installation entries */
130
+ plugins: Record<string, InstalledPluginEntry[]>;
131
+ }
132
+ /**
133
+ * Plugin with source tracking for listing
134
+ */
135
+ export interface ListedPlugin {
136
+ /** Plugin name from manifest */
137
+ name: string;
138
+ /** Plugin description */
139
+ description?: string | undefined;
140
+ /** Plugin version */
141
+ version?: string | undefined;
142
+ /** Absolute path to plugin directory */
143
+ path: string;
144
+ /** Source of plugin discovery (always 'dexto' now) */
145
+ source: 'dexto';
146
+ /** Installation scope if installed via Dexto */
147
+ scope?: PluginInstallScope | undefined;
148
+ /** ISO timestamp of installation */
149
+ installedAt?: string | undefined;
150
+ }
151
+ /**
152
+ * Result of plugin validation
153
+ */
154
+ export interface PluginValidationResult {
155
+ /** Whether the plugin is valid */
156
+ valid: boolean;
157
+ /** Validated manifest if valid */
158
+ manifest?: PluginManifest | undefined;
159
+ /** Validation errors */
160
+ errors: string[];
161
+ /** Validation warnings */
162
+ warnings: string[];
163
+ }
164
+ /**
165
+ * Result of plugin installation
166
+ */
167
+ export interface PluginInstallResult {
168
+ /** Whether installation succeeded */
169
+ success: boolean;
170
+ /** Plugin name from manifest */
171
+ pluginName: string;
172
+ /** Path where plugin was installed */
173
+ installPath: string;
174
+ /** Installation warnings */
175
+ warnings: string[];
176
+ }
177
+ /**
178
+ * Result of plugin uninstallation
179
+ */
180
+ export interface PluginUninstallResult {
181
+ /** Whether uninstallation succeeded */
182
+ success: boolean;
183
+ /** Path that was removed */
184
+ removedPath?: string | undefined;
185
+ }
186
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"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"}
File without changes