@vibe-forge/core 2.0.1 → 2.0.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-forge/core",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "imports": {
5
5
  "#~/*.js": {
6
6
  "__vibe-forge__": {
@@ -53,7 +53,7 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "zod": "^3.24.1",
56
- "@vibe-forge/utils": "^2.0.1",
57
- "@vibe-forge/types": "^2.0.0"
56
+ "@vibe-forge/types": "^2.0.1",
57
+ "@vibe-forge/utils": "^2.0.1"
58
58
  }
59
59
  }
@@ -146,10 +146,56 @@ export const shortcutsConfigSchema = z.object({
146
146
  switchPermissionMode: z.string().optional().describe('Shortcut for switching permission mode')
147
147
  })
148
148
 
149
+ export const conversationStarterModeSchema = z.enum([
150
+ 'default',
151
+ 'workspace',
152
+ 'entity',
153
+ 'agent',
154
+ 'spec'
155
+ ])
156
+
157
+ export const conversationStarterWorktreeConfigSchema = z.object({
158
+ create: z.boolean().optional().describe('Override whether the session uses a managed worktree'),
159
+ environment: z.string().optional().describe('Managed worktree environment override'),
160
+ branch: z.object({
161
+ name: z.string().min(1).describe('Branch name'),
162
+ kind: z.enum(['local', 'remote']).optional().describe('Branch kind'),
163
+ mode: z.enum(['checkout', 'create']).optional().describe('Branch operation mode')
164
+ }).optional().describe('Branch selection override')
165
+ })
166
+
167
+ export const conversationStarterConfigSchema = z.object({
168
+ id: z.string().optional().describe('Stable starter identifier'),
169
+ title: z.string().min(1).describe('Starter title'),
170
+ description: z.string().optional().describe('Starter description'),
171
+ icon: z.string().optional().describe('Material Symbols icon name'),
172
+ mode: conversationStarterModeSchema.optional().describe('Target mode, `agent` is an alias for `entity`'),
173
+ target: z.string().optional().describe('Target resource name or workspace id'),
174
+ targetLabel: z.string().optional().describe('Optional target label shown in the UI'),
175
+ targetDescription: z.string().optional().describe('Optional target description shown in the UI'),
176
+ model: z.string().optional().describe('Model id or service-prefixed model value'),
177
+ adapter: z.string().optional().describe('Adapter override'),
178
+ account: z.string().optional().describe('Account override'),
179
+ effort: z.union([z.literal('default'), effortLevelSchema]).optional().describe('Effort override'),
180
+ permissionMode: z.enum(['default', 'acceptEdits', 'plan', 'dontAsk', 'bypassPermissions']).optional()
181
+ .describe('Permission mode override'),
182
+ worktree: conversationStarterWorktreeConfigSchema.optional().describe('Managed worktree overrides'),
183
+ prompt: z.string().optional().describe('Prefilled prompt'),
184
+ files: z.array(z.string()).optional().describe('Referenced file paths'),
185
+ rules: z.array(z.string()).optional().describe('Referenced rule paths or rule identifiers'),
186
+ skills: z.array(z.string()).optional().describe('Referenced skill paths or skill identifiers')
187
+ })
188
+
149
189
  export const conversationConfigSchema = z.object({
150
190
  style: z.enum(['friendly', 'programmatic']).optional().describe('Conversation style'),
151
191
  customInstructions: z.string().optional().describe('Extra system instructions'),
152
- injectDefaultSystemPrompt: z.boolean().optional().describe('Inject the default system prompt')
192
+ injectDefaultSystemPrompt: z.boolean().optional().describe('Inject the default system prompt'),
193
+ createSessionWorktree: z.boolean().optional().describe('Create a managed worktree for new sessions by default'),
194
+ worktreeEnvironment: z.string().optional().describe('Default managed worktree environment'),
195
+ startupPresets: z.array(conversationStarterConfigSchema).optional()
196
+ .describe('Quick-start presets shown on the new session page'),
197
+ builtinActions: z.array(conversationStarterConfigSchema).optional()
198
+ .describe('Built-in development actions shown on the new session page')
153
199
  })
154
200
 
155
201
  export const webAuthAccountConfigSchema = z.object({
@@ -166,17 +212,40 @@ export const webAuthConfigSchema = z.object({
166
212
  rememberDeviceTtlDays: z.number().positive().optional().describe('Remember-device token lifetime in days')
167
213
  })
168
214
 
169
- export const skillRegistryConfigSchema = z.object({
170
- enabled: z.boolean().optional().describe('Enable remote skill registry resolution'),
171
- url: z.string().optional().describe('Base URL for remote skill registry search and download'),
172
- searchUrl: z.string().optional().describe('Remote skill registry search endpoint'),
173
- downloadUrl: z.string().optional().describe('Remote skill registry download endpoint')
215
+ export const skillsCliConfigSchema = adapterNativeCliConfigSchema.extend({
216
+ registry: z.string().optional().describe('Package registry used to install the managed skills CLI'),
217
+ npmRegistry: z.string().optional().describe('Deprecated alias for skillsCli.registry'),
218
+ env: z.record(z.string(), z.string()).optional().describe('Environment variables passed to the skills CLI')
174
219
  })
175
220
 
176
- export const skillsConfigSchema = z.object({
177
- registry: z.union([z.string(), skillRegistryConfigSchema]).optional().describe('Remote skill registry settings')
221
+ export const skillHomeBridgeConfigSchema = z.object({
222
+ enabled: z.boolean().optional().describe('Bridge supported home skill roots into workspace asset discovery'),
223
+ roots: z.union([z.string(), z.array(z.string())]).optional()
224
+ .describe('Ordered home skill roots. Supports absolute paths or paths starting with ~')
178
225
  })
179
226
 
227
+ export const configuredSkillInstallConfigSchema = z.union([
228
+ z.string().min(1),
229
+ z.object({
230
+ name: z.string().min(1).describe('Remote skill name'),
231
+ source: z.string().optional().describe('Remote skills CLI source path'),
232
+ rename: z.string().optional().describe('Local skill name to expose after install')
233
+ })
234
+ ])
235
+
236
+ export const legacySkillsConfigSchema = z.object({
237
+ install: z.array(configuredSkillInstallConfigSchema).optional()
238
+ .describe('Project skills that should be ensured before session startup'),
239
+ cli: skillsCliConfigSchema.optional().describe('Deprecated alias for top-level skillsCli runtime settings'),
240
+ homeBridge: skillHomeBridgeConfigSchema.optional().describe('Home skill auto-bridge settings')
241
+ })
242
+
243
+ export const skillsConfigSchema = z.union([
244
+ z.array(configuredSkillInstallConfigSchema)
245
+ .describe('Project skills that should be ensured before session startup'),
246
+ legacySkillsConfigSchema
247
+ ])
248
+
180
249
  const pluginInstanceConfigSchema: z.ZodType<unknown> = z.lazy(() =>
181
250
  z.object({
182
251
  id: z.string().min(1).describe('Plugin package name or short id'),
@@ -330,6 +399,7 @@ export const generalConfigSectionSchema = z.object({
330
399
  env: z.record(z.string(), z.string()).optional(),
331
400
  notifications: notificationConfigSchema.optional(),
332
401
  skills: skillsConfigSchema.optional(),
402
+ skillsCli: skillsCliConfigSchema.optional(),
333
403
  webAuth: webAuthConfigSchema.optional()
334
404
  })
335
405
 
@@ -386,6 +456,7 @@ export const baseConfigFileSchema = z.object({
386
456
  shortcuts: shortcutsConfigSchema.optional(),
387
457
  notifications: notificationConfigSchema.optional(),
388
458
  skills: skillsConfigSchema.optional(),
459
+ skillsCli: skillsCliConfigSchema.optional(),
389
460
  webAuth: webAuthConfigSchema.optional(),
390
461
  conversation: conversationConfigSchema.optional(),
391
462
  plugins: pluginConfigSchema.optional(),