clavix 5.6.3 → 5.6.4

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.
@@ -155,16 +155,82 @@ export declare const IntegrationsConfigSchema: z.ZodObject<{
155
155
  }>;
156
156
  /**
157
157
  * Schema for user's .clavix/config.json
158
+ * Matches ClavixConfig interface in src/types/config.ts
158
159
  */
159
160
  export declare const UserConfigSchema: z.ZodObject<{
161
+ version: z.ZodOptional<z.ZodString>;
160
162
  integrations: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
161
163
  providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
164
+ templates: z.ZodOptional<z.ZodObject<{
165
+ prdQuestions: z.ZodString;
166
+ fullPrd: z.ZodString;
167
+ quickPrd: z.ZodString;
168
+ }, "strip", z.ZodTypeAny, {
169
+ prdQuestions: string;
170
+ fullPrd: string;
171
+ quickPrd: string;
172
+ }, {
173
+ prdQuestions: string;
174
+ fullPrd: string;
175
+ quickPrd: string;
176
+ }>>;
177
+ outputs: z.ZodOptional<z.ZodObject<{
178
+ path: z.ZodString;
179
+ format: z.ZodEnum<["markdown", "pdf"]>;
180
+ }, "strip", z.ZodTypeAny, {
181
+ path: string;
182
+ format: "markdown" | "pdf";
183
+ }, {
184
+ path: string;
185
+ format: "markdown" | "pdf";
186
+ }>>;
187
+ preferences: z.ZodOptional<z.ZodObject<{
188
+ autoOpenOutputs: z.ZodBoolean;
189
+ verboseLogging: z.ZodBoolean;
190
+ }, "strip", z.ZodTypeAny, {
191
+ autoOpenOutputs: boolean;
192
+ verboseLogging: boolean;
193
+ }, {
194
+ autoOpenOutputs: boolean;
195
+ verboseLogging: boolean;
196
+ }>>;
197
+ experimental: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
162
198
  }, "strip", z.ZodTypeAny, {
199
+ version?: string | undefined;
163
200
  integrations?: string[] | undefined;
164
201
  providers?: string[] | undefined;
202
+ templates?: {
203
+ prdQuestions: string;
204
+ fullPrd: string;
205
+ quickPrd: string;
206
+ } | undefined;
207
+ outputs?: {
208
+ path: string;
209
+ format: "markdown" | "pdf";
210
+ } | undefined;
211
+ preferences?: {
212
+ autoOpenOutputs: boolean;
213
+ verboseLogging: boolean;
214
+ } | undefined;
215
+ experimental?: Record<string, unknown> | undefined;
165
216
  }, {
217
+ version?: string | undefined;
166
218
  integrations?: string[] | undefined;
167
219
  providers?: string[] | undefined;
220
+ templates?: {
221
+ prdQuestions: string;
222
+ fullPrd: string;
223
+ quickPrd: string;
224
+ } | undefined;
225
+ outputs?: {
226
+ path: string;
227
+ format: "markdown" | "pdf";
228
+ } | undefined;
229
+ preferences?: {
230
+ autoOpenOutputs: boolean;
231
+ verboseLogging: boolean;
232
+ } | undefined;
233
+ experimental?: Record<string, unknown> | undefined;
168
234
  }>;
169
235
  /**
170
236
  * Inferred TypeScript types from schemas
@@ -41,16 +41,44 @@ export const IntegrationsConfigSchema = z.object({
41
41
  return new Set(names).size === names.length;
42
42
  }, { message: 'Integration names must be unique' }),
43
43
  });
44
+ /**
45
+ * Schema for template configuration
46
+ */
47
+ const TemplateConfigSchema = z.object({
48
+ prdQuestions: z.string(),
49
+ fullPrd: z.string(),
50
+ quickPrd: z.string(),
51
+ });
52
+ /**
53
+ * Schema for output configuration
54
+ */
55
+ const OutputConfigSchema = z.object({
56
+ path: z.string(),
57
+ format: z.enum(['markdown', 'pdf']),
58
+ });
59
+ /**
60
+ * Schema for user preferences
61
+ */
62
+ const PreferencesConfigSchema = z.object({
63
+ autoOpenOutputs: z.boolean(),
64
+ verboseLogging: z.boolean(),
65
+ });
44
66
  /**
45
67
  * Schema for user's .clavix/config.json
68
+ * Matches ClavixConfig interface in src/types/config.ts
46
69
  */
47
70
  export const UserConfigSchema = z.object({
71
+ version: z.string().optional(),
48
72
  integrations: z.array(z.string().min(1)).optional().describe('List of enabled integration names'),
49
73
  // Legacy field name (backwards compatibility)
50
74
  providers: z
51
75
  .array(z.string().min(1))
52
76
  .optional()
53
77
  .describe('Legacy field: use "integrations" instead'),
78
+ templates: TemplateConfigSchema.optional(),
79
+ outputs: OutputConfigSchema.optional(),
80
+ preferences: PreferencesConfigSchema.optional(),
81
+ experimental: z.record(z.unknown()).optional(),
54
82
  });
55
83
  /**
56
84
  * Validate integrations.json content (build-time, strict)
@@ -101,7 +129,15 @@ export function validateUserConfig(content) {
101
129
  }
102
130
  // Check for unknown fields (warn only)
103
131
  if (typeof content === 'object' && content !== null) {
104
- const knownFields = new Set(['integrations', 'providers']);
132
+ const knownFields = new Set([
133
+ 'version',
134
+ 'integrations',
135
+ 'providers',
136
+ 'templates',
137
+ 'outputs',
138
+ 'preferences',
139
+ 'experimental',
140
+ ]);
105
141
  const contentKeys = Object.keys(content);
106
142
  const unknownKeys = contentKeys.filter((key) => !knownFields.has(key));
107
143
  if (unknownKeys.length > 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clavix",
3
- "version": "5.6.3",
3
+ "version": "5.6.4",
4
4
  "description": "Agentic-first prompt workflows. Markdown templates that teach AI agents how to optimize prompts, create PRDs, and manage implementation.\n\nSLASH COMMANDS (in your AI assistant):\n /clavix:improve Optimize prompts with auto-depth\n /clavix:prd Generate PRD through questions\n /clavix:plan Create task breakdown from PRD\n /clavix:implement Execute tasks with progress tracking\n /clavix:start Begin conversational session\n /clavix:summarize Extract requirements from conversation\n\nWorks with Claude Code, Cursor, Windsurf, and 19+ other AI coding tools.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",