vibeman 0.0.3 → 0.0.5

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 (184) hide show
  1. package/dist/index.js +3 -3
  2. package/dist/runtime/api/.tsbuildinfo +1 -1
  3. package/dist/runtime/api/agent/agent-service.d.ts +4 -0
  4. package/dist/runtime/api/agent/agent-service.js +62 -3
  5. package/dist/runtime/api/agent/ai-providers/amp-cli-provider.d.ts +38 -0
  6. package/dist/runtime/api/agent/ai-providers/amp-cli-provider.js +268 -0
  7. package/dist/runtime/api/agent/ai-providers/codex-cli-provider.js +40 -12
  8. package/dist/runtime/api/agent/ai-providers/gemini-cli-provider.d.ts +24 -0
  9. package/dist/runtime/api/agent/ai-providers/gemini-cli-provider.js +291 -0
  10. package/dist/runtime/api/agent/ai-providers/index.d.ts +3 -3
  11. package/dist/runtime/api/agent/ai-providers/index.js +3 -1
  12. package/dist/runtime/api/agent/ai-providers/types.d.ts +5 -2
  13. package/dist/runtime/api/agent/amp-cli-provider.test.d.ts +1 -0
  14. package/dist/runtime/api/agent/amp-cli-provider.test.js +99 -0
  15. package/dist/runtime/api/agent/codex-cli-provider.test.js +10 -8
  16. package/dist/runtime/api/agent/prompt-service.js +108 -105
  17. package/dist/runtime/api/agent/prompt-service.test.js +35 -0
  18. package/dist/runtime/api/agent/routing-policy.d.ts +2 -2
  19. package/dist/runtime/api/agent/routing-policy.test.js +4 -4
  20. package/dist/runtime/api/api/routers/ai.d.ts +3 -3
  21. package/dist/runtime/api/api/routers/executions.d.ts +2 -7
  22. package/dist/runtime/api/api/routers/executions.js +2 -2
  23. package/dist/runtime/api/api/routers/provider-config.d.ts +34 -0
  24. package/dist/runtime/api/api/routers/settings.d.ts +19 -0
  25. package/dist/runtime/api/api/routers/settings.js +16 -0
  26. package/dist/runtime/api/api/routers/tasks.d.ts +9 -9
  27. package/dist/runtime/api/api/routers/workflows.d.ts +12 -12
  28. package/dist/runtime/api/api/routers/worktrees.d.ts +2 -2
  29. package/dist/runtime/api/api/trpc.d.ts +16 -16
  30. package/dist/runtime/api/lib/local-config.d.ts +94 -4
  31. package/dist/runtime/api/lib/local-config.js +16 -0
  32. package/dist/runtime/api/lib/provider-detection.d.ts +2 -0
  33. package/dist/runtime/api/lib/provider-detection.js +83 -1
  34. package/dist/runtime/api/lib/server/vibeman-info.d.ts +5 -0
  35. package/dist/runtime/api/lib/server/vibeman-info.js +85 -0
  36. package/dist/runtime/api/lib/trpc/server.d.ts +63 -33
  37. package/dist/runtime/api/persistence/execution-log-persistence.d.ts +1 -1
  38. package/dist/runtime/api/persistence/execution-log-persistence.js +19 -3
  39. package/dist/runtime/api/router.d.ts +63 -33
  40. package/dist/runtime/api/settings-service.js +31 -14
  41. package/dist/runtime/api/tasks/task-file-parser.d.ts +1 -0
  42. package/dist/runtime/api/tasks/task-file-parser.js +20 -1
  43. package/dist/runtime/api/tasks/task-updater.d.ts +62 -0
  44. package/dist/runtime/api/tasks/task-updater.js +260 -0
  45. package/dist/runtime/api/tasks/task-updater.test.d.ts +1 -0
  46. package/dist/runtime/api/tasks/task-updater.test.js +303 -0
  47. package/dist/runtime/api/types/index.d.ts +1 -1
  48. package/dist/runtime/api/types/settings.d.ts +17 -6
  49. package/dist/runtime/api/vcs/git-service.d.ts +9 -0
  50. package/dist/runtime/api/vcs/git-service.js +23 -0
  51. package/dist/runtime/api/vcs/worktree-service.d.ts +1 -1
  52. package/dist/runtime/api/vcs/worktree-service.js +22 -10
  53. package/dist/runtime/api/workflows/quality-pipeline.js +2 -1
  54. package/dist/runtime/api/workflows/vibing-orchestrator.d.ts +93 -5
  55. package/dist/runtime/api/workflows/vibing-orchestrator.js +774 -203
  56. package/dist/runtime/api/workflows/workflow-effects.d.ts +45 -0
  57. package/dist/runtime/api/workflows/workflow-effects.js +49 -0
  58. package/dist/runtime/api/workflows/workflow-reconciler.d.ts +65 -0
  59. package/dist/runtime/api/workflows/workflow-reconciler.js +226 -0
  60. package/dist/runtime/api/workflows/workflow-reducer.d.ts +26 -0
  61. package/dist/runtime/api/workflows/workflow-reducer.js +288 -0
  62. package/dist/runtime/api/workflows/workflow-reducer.test.d.ts +1 -0
  63. package/dist/runtime/api/workflows/workflow-reducer.test.js +247 -0
  64. package/dist/runtime/api/workflows/workflow-schema.d.ts +546 -0
  65. package/dist/runtime/api/workflows/workflow-schema.js +256 -0
  66. package/dist/runtime/web/.next/BUILD_ID +1 -1
  67. package/dist/runtime/web/.next/app-build-manifest.json +50 -50
  68. package/dist/runtime/web/.next/app-path-routes-manifest.json +1 -1
  69. package/dist/runtime/web/.next/build-manifest.json +14 -14
  70. package/dist/runtime/web/.next/prerender-manifest.json +3 -3
  71. package/dist/runtime/web/.next/react-loadable-manifest.json +2 -33
  72. package/dist/runtime/web/.next/required-server-files.json +5 -5
  73. package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js +1 -1
  74. package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js.nft.json +1 -1
  75. package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route_client-reference-manifest.js +1 -1
  76. package/dist/runtime/web/.next/server/app/_not-found/page.js +2 -2
  77. package/dist/runtime/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  78. package/dist/runtime/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  79. package/dist/runtime/web/.next/server/app/_not-found.html +2 -2
  80. package/dist/runtime/web/.next/server/app/_not-found.rsc +12 -12
  81. package/dist/runtime/web/.next/server/app/api/health/route.js +1 -1
  82. package/dist/runtime/web/.next/server/app/api/health/route.js.nft.json +1 -1
  83. package/dist/runtime/web/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  84. package/dist/runtime/web/.next/server/app/api/images/[...path]/route.js +1 -1
  85. package/dist/runtime/web/.next/server/app/api/images/[...path]/route.js.nft.json +1 -1
  86. package/dist/runtime/web/.next/server/app/api/images/[...path]/route_client-reference-manifest.js +1 -1
  87. package/dist/runtime/web/.next/server/app/api/upload/route.js +1 -1
  88. package/dist/runtime/web/.next/server/app/api/upload/route.js.nft.json +1 -1
  89. package/dist/runtime/web/.next/server/app/api/upload/route_client-reference-manifest.js +1 -1
  90. package/dist/runtime/web/.next/server/app/index.html +2 -2
  91. package/dist/runtime/web/.next/server/app/index.rsc +15 -15
  92. package/dist/runtime/web/.next/server/app/page.js +27 -62
  93. package/dist/runtime/web/.next/server/app/page.js.nft.json +1 -1
  94. package/dist/runtime/web/.next/server/app/page_client-reference-manifest.js +1 -1
  95. package/dist/runtime/web/.next/server/app-paths-manifest.json +1 -1
  96. package/dist/runtime/web/.next/server/chunks/210.js +1 -0
  97. package/dist/runtime/web/.next/server/chunks/291.js +18 -0
  98. package/dist/runtime/web/.next/server/chunks/552.js +22 -0
  99. package/dist/runtime/web/.next/server/chunks/780.js +1 -0
  100. package/dist/runtime/web/.next/server/chunks/905.js +6 -0
  101. package/dist/runtime/web/.next/server/chunks/98.js +1 -0
  102. package/dist/runtime/web/.next/server/middleware-build-manifest.js +1 -1
  103. package/dist/runtime/web/.next/server/middleware-react-loadable-manifest.js +1 -1
  104. package/dist/runtime/web/.next/server/pages/404.html +2 -2
  105. package/dist/runtime/web/.next/server/pages/500.html +1 -1
  106. package/dist/runtime/web/.next/server/pages/_app.js +1 -1
  107. package/dist/runtime/web/.next/server/pages/_app.js.nft.json +1 -1
  108. package/dist/runtime/web/.next/server/pages/_document.js +1 -1
  109. package/dist/runtime/web/.next/server/pages/_document.js.nft.json +1 -1
  110. package/dist/runtime/web/.next/server/pages/_error.js +9 -9
  111. package/dist/runtime/web/.next/server/pages/_error.js.nft.json +1 -1
  112. package/dist/runtime/web/.next/server/pages-manifest.json +1 -1
  113. package/dist/runtime/web/.next/server/server-reference-manifest.json +1 -1
  114. package/dist/runtime/web/.next/server/webpack-runtime.js +1 -1
  115. package/dist/runtime/web/.next/static/{5_15u1WQCxN1_eHZpldCv → LJFZk_8tvKFN_Ee4HqUuM}/_buildManifest.js +1 -1
  116. package/dist/runtime/web/.next/static/chunks/05c91ade-7d09b2b280adffd1.js +1 -0
  117. package/dist/runtime/web/.next/static/chunks/201-51bef3fa8c832e2e.js +1 -0
  118. package/dist/runtime/web/.next/static/chunks/524-89747ed9b0294f8a.js +1 -0
  119. package/dist/runtime/web/.next/static/chunks/554-8bec6e9cca6acc67.js +1 -0
  120. package/dist/runtime/web/.next/static/chunks/764.86e9503a69d45a85.js +1 -0
  121. package/dist/runtime/web/.next/static/chunks/{87c73c54-09e1ba5c70e60a51.js → 7ab4dc20-239138e0ae7af24a.js} +1 -1
  122. package/dist/runtime/web/.next/static/chunks/905-342391e3d3a3678f.js +20 -0
  123. package/dist/runtime/web/.next/static/chunks/a8a5ce16-4edea7df2d9b544a.js +79 -0
  124. package/dist/runtime/web/.next/static/chunks/{8bb4d8db-3e2aa02b0a2384b9.js → ad74d572-4c1b162e2c15acaa.js} +1 -1
  125. package/dist/runtime/web/.next/static/chunks/app/.vibeman/assets/images/[...path]/route-7b752a8641f96c1f.js +1 -0
  126. package/dist/runtime/web/.next/static/chunks/app/_not-found/page-34e66b251c2b5044.js +1 -0
  127. package/dist/runtime/web/.next/static/chunks/app/api/health/route-7b752a8641f96c1f.js +1 -0
  128. package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-7b752a8641f96c1f.js +1 -0
  129. package/dist/runtime/web/.next/static/chunks/app/api/upload/route-7b752a8641f96c1f.js +1 -0
  130. package/dist/runtime/web/.next/static/chunks/app/layout-df9ac93cb02b2385.js +1 -0
  131. package/dist/runtime/web/.next/static/chunks/app/page-6610743f7de5f92a.js +1 -0
  132. package/dist/runtime/web/.next/static/chunks/c25e0690-e9b798b8de667da1.js +1 -0
  133. package/dist/runtime/web/.next/static/chunks/framework-57157ec4d37f64aa.js +1 -0
  134. package/dist/runtime/web/.next/static/chunks/main-app-156cc0c60371bd78.js +1 -0
  135. package/dist/runtime/web/.next/static/chunks/main-df25d367c47b1fec.js +1 -0
  136. package/dist/runtime/web/.next/static/chunks/pages/_app-9f629a5e1131d19f.js +1 -0
  137. package/dist/runtime/web/.next/static/chunks/pages/_error-9238238274c7efcd.js +1 -0
  138. package/dist/runtime/web/.next/static/chunks/webpack-cd50e39b423d1808.js +1 -0
  139. package/dist/runtime/web/.next/static/css/4fbf378a264bd4ea.css +1 -0
  140. package/dist/runtime/web/package.json +8 -8
  141. package/dist/runtime/web/server.js +1 -1
  142. package/dist/tsconfig.tsbuildinfo +1 -1
  143. package/package.json +3 -37
  144. package/dist/runtime/api/lib/trpc/client.d.ts +0 -1
  145. package/dist/runtime/api/lib/trpc/client.js +0 -5
  146. package/dist/runtime/web/.next/server/chunks/217.js +0 -1
  147. package/dist/runtime/web/.next/server/chunks/383.js +0 -6
  148. package/dist/runtime/web/.next/server/chunks/458.js +0 -1
  149. package/dist/runtime/web/.next/server/chunks/576.js +0 -18
  150. package/dist/runtime/web/.next/server/chunks/635.js +0 -22
  151. package/dist/runtime/web/.next/server/chunks/761.js +0 -1
  152. package/dist/runtime/web/.next/server/chunks/777.js +0 -3
  153. package/dist/runtime/web/.next/server/chunks/825.js +0 -1
  154. package/dist/runtime/web/.next/server/chunks/838.js +0 -1
  155. package/dist/runtime/web/.next/server/chunks/973.js +0 -15
  156. package/dist/runtime/web/.next/static/chunks/18-15c10d3288afef2e.js +0 -1
  157. package/dist/runtime/web/.next/static/chunks/1c0ca389.537bbe362e3ffbd9.js +0 -3
  158. package/dist/runtime/web/.next/static/chunks/22747d63-ad5da0c19f4cfe41.js +0 -71
  159. package/dist/runtime/web/.next/static/chunks/355.056c2645878a799a.js +0 -1
  160. package/dist/runtime/web/.next/static/chunks/420.a5ccf151c9e2b2f1.js +0 -1
  161. package/dist/runtime/web/.next/static/chunks/439.1be0c6242fd248d5.js +0 -15
  162. package/dist/runtime/web/.next/static/chunks/440.c52e7c0f797e22b2.js +0 -1
  163. package/dist/runtime/web/.next/static/chunks/575-e2478287c27da87b.js +0 -1
  164. package/dist/runtime/web/.next/static/chunks/691.920d88c115087314.js +0 -1
  165. package/dist/runtime/web/.next/static/chunks/765-e838910065b50c3d.js +0 -1
  166. package/dist/runtime/web/.next/static/chunks/823-6f371a6e829adbba.js +0 -63
  167. package/dist/runtime/web/.next/static/chunks/891cff7f.0f71fc028f87e683.js +0 -1
  168. package/dist/runtime/web/.next/static/chunks/9af238c7-271a911d4e99ab18.js +0 -1
  169. package/dist/runtime/web/.next/static/chunks/app/.vibeman/assets/images/[...path]/route-751c9265a65409e5.js +0 -1
  170. package/dist/runtime/web/.next/static/chunks/app/_not-found/page-1cb74d1cba27d0ab.js +0 -1
  171. package/dist/runtime/web/.next/static/chunks/app/api/health/route-751c9265a65409e5.js +0 -1
  172. package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-751c9265a65409e5.js +0 -1
  173. package/dist/runtime/web/.next/static/chunks/app/api/upload/route-751c9265a65409e5.js +0 -1
  174. package/dist/runtime/web/.next/static/chunks/app/layout-8435322f09fd0975.js +0 -1
  175. package/dist/runtime/web/.next/static/chunks/app/page-9fe7d75095b4ccec.js +0 -1
  176. package/dist/runtime/web/.next/static/chunks/cac567b0-5b77dd12911823cd.js +0 -1
  177. package/dist/runtime/web/.next/static/chunks/framework-2518f1345b5b2806.js +0 -1
  178. package/dist/runtime/web/.next/static/chunks/main-17665e5e39de9a8a.js +0 -1
  179. package/dist/runtime/web/.next/static/chunks/main-app-c0b0f5ba4f7f9d75.js +0 -1
  180. package/dist/runtime/web/.next/static/chunks/pages/_app-d6f6b3bbc3d81ee1.js +0 -1
  181. package/dist/runtime/web/.next/static/chunks/pages/_error-75a96cf1997cc3b9.js +0 -1
  182. package/dist/runtime/web/.next/static/chunks/webpack-c8de37305b4635cf.js +0 -1
  183. package/dist/runtime/web/.next/static/css/08c950681f1a9a92.css +0 -1
  184. /package/dist/runtime/web/.next/static/{5_15u1WQCxN1_eHZpldCv → LJFZk_8tvKFN_Ee4HqUuM}/_ssgManifest.js +0 -0
@@ -52,6 +52,18 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
52
52
  lastDetected?: string | undefined;
53
53
  detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
54
54
  } | undefined;
55
+ gemini?: {
56
+ binPath?: string | undefined;
57
+ detectedPath?: string | undefined;
58
+ lastDetected?: string | undefined;
59
+ detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
60
+ } | undefined;
61
+ amp?: {
62
+ binPath?: string | undefined;
63
+ detectedPath?: string | undefined;
64
+ lastDetected?: string | undefined;
65
+ detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
66
+ } | undefined;
55
67
  };
56
68
  path: string;
57
69
  exists: boolean;
@@ -84,6 +96,16 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
84
96
  detectedPath?: string | undefined;
85
97
  lastDetected?: string | undefined;
86
98
  detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
99
+ } | {
100
+ binPath?: string | undefined;
101
+ detectedPath?: string | undefined;
102
+ lastDetected?: string | undefined;
103
+ detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
104
+ } | {
105
+ binPath?: string | undefined;
106
+ detectedPath?: string | undefined;
107
+ lastDetected?: string | undefined;
108
+ detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
87
109
  } | undefined;
88
110
  cached: {
89
111
  available: boolean;
@@ -119,7 +141,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
119
141
  input: void;
120
142
  output: {
121
143
  defaultProvider: string;
122
- operations?: Partial<Record<"execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview", {
144
+ operations?: Partial<Record<"execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task", {
123
145
  provider: string;
124
146
  options?: {
125
147
  temperature?: number | undefined;
@@ -136,7 +158,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
136
158
  input: {
137
159
  policy: {
138
160
  defaultProvider?: string | undefined;
139
- operations?: Partial<Record<"execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview", {
161
+ operations?: Partial<Record<"execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task", {
140
162
  provider: string;
141
163
  options?: {
142
164
  temperature?: number | undefined;
@@ -166,7 +188,6 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
166
188
  }>;
167
189
  setOperationConfig: import("@trpc/server").TRPCMutationProcedure<{
168
190
  input: {
169
- operation: "execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview";
170
191
  config: {
171
192
  provider: string;
172
193
  options?: {
@@ -177,6 +198,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
177
198
  model?: string | undefined;
178
199
  fallback?: string[] | undefined;
179
200
  };
201
+ operation: "execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task";
180
202
  };
181
203
  output: {
182
204
  success: boolean;
@@ -242,6 +264,19 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
242
264
  output: boolean;
243
265
  meta: object;
244
266
  }>;
267
+ getProjectInfo: import("@trpc/server").TRPCQueryProcedure<{
268
+ input: void;
269
+ output: {
270
+ name: string;
271
+ path: string;
272
+ };
273
+ meta: object;
274
+ }>;
275
+ getVibemanInfo: import("@trpc/server").TRPCQueryProcedure<{
276
+ input: void;
277
+ output: import("../server/vibeman-info.js").VibemanInfo;
278
+ meta: object;
279
+ }>;
245
280
  getSettings: import("@trpc/server").TRPCQueryProcedure<{
246
281
  input: void;
247
282
  output: import("../../types/settings.js").VibemanSettings;
@@ -345,15 +380,14 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
345
380
  }>;
346
381
  updateWorkflowOptions: import("@trpc/server").TRPCMutationProcedure<{
347
382
  input: {
348
- workflowId: string;
349
383
  config: {
350
- autoCommit?: boolean | undefined;
351
- createPR?: boolean | undefined;
352
384
  autoQualityChecks?: boolean | undefined;
353
385
  requireHumanApproval?: boolean | undefined;
386
+ aiCodeReview?: boolean | undefined;
387
+ autoCommit?: boolean | undefined;
388
+ createPR?: boolean | undefined;
354
389
  stepByStepMode?: boolean | undefined;
355
390
  autoMerge?: boolean | undefined;
356
- aiCodeReview?: boolean | undefined;
357
391
  aiRoutingOverrides?: {
358
392
  execute_task?: {
359
393
  provider?: string | undefined;
@@ -363,7 +397,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
363
397
  provider?: string | undefined;
364
398
  model?: string | undefined;
365
399
  } | undefined;
366
- improve_task?: {
400
+ ai_codereview?: {
367
401
  provider?: string | undefined;
368
402
  model?: string | undefined;
369
403
  } | undefined;
@@ -371,12 +405,13 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
371
405
  provider?: string | undefined;
372
406
  model?: string | undefined;
373
407
  } | undefined;
374
- ai_codereview?: {
408
+ improve_task?: {
375
409
  provider?: string | undefined;
376
410
  model?: string | undefined;
377
411
  } | undefined;
378
412
  } | undefined;
379
413
  };
414
+ workflowId: string;
380
415
  };
381
416
  output: {
382
417
  readonly success: true;
@@ -387,13 +422,13 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
387
422
  input: {
388
423
  taskId: string;
389
424
  config?: {
390
- autoCommit?: boolean | undefined;
391
- createPR?: boolean | undefined;
392
425
  autoQualityChecks?: boolean | undefined;
393
426
  requireHumanApproval?: boolean | undefined;
427
+ aiCodeReview?: boolean | undefined;
428
+ autoCommit?: boolean | undefined;
429
+ createPR?: boolean | undefined;
394
430
  stepByStepMode?: boolean | undefined;
395
431
  autoMerge?: boolean | undefined;
396
- aiCodeReview?: boolean | undefined;
397
432
  aiRoutingOverrides?: {
398
433
  execute_task?: {
399
434
  provider?: string | undefined;
@@ -403,7 +438,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
403
438
  provider?: string | undefined;
404
439
  model?: string | undefined;
405
440
  } | undefined;
406
- improve_task?: {
441
+ ai_codereview?: {
407
442
  provider?: string | undefined;
408
443
  model?: string | undefined;
409
444
  } | undefined;
@@ -411,7 +446,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
411
446
  provider?: string | undefined;
412
447
  model?: string | undefined;
413
448
  } | undefined;
414
- ai_codereview?: {
449
+ improve_task?: {
415
450
  provider?: string | undefined;
416
451
  model?: string | undefined;
417
452
  } | undefined;
@@ -539,8 +574,8 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
539
574
  input: {
540
575
  taskId: string;
541
576
  provider?: string | undefined;
542
- workflowId?: string | undefined;
543
577
  model?: string | undefined;
578
+ workflowId?: string | undefined;
544
579
  reviewContext?: string | undefined;
545
580
  };
546
581
  output: {
@@ -695,9 +730,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
695
730
  cleanupWorktree: import("@trpc/server").TRPCMutationProcedure<{
696
731
  input: {
697
732
  isConnectedToTask: boolean;
698
- taskId?: string | undefined;
699
- force?: boolean | undefined;
700
733
  worktreePath?: string | undefined;
734
+ force?: boolean | undefined;
735
+ taskId?: string | undefined;
701
736
  branchName?: string | undefined;
702
737
  };
703
738
  output: {
@@ -765,20 +800,15 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
765
800
  }>;
766
801
  improveTask: import("@trpc/server").TRPCMutationProcedure<{
767
802
  input: {
768
- title: string;
769
803
  type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
770
804
  priority: "low" | "medium" | "high";
805
+ title: string;
771
806
  content: string;
772
807
  taskId: string;
773
808
  executionId?: string | undefined;
774
809
  };
775
810
  output: {
776
- type: string;
777
- priority: string;
778
- content: string;
779
- title?: string;
780
- executionId: string;
781
- selectedModel?: string;
811
+ readonly executionId: string;
782
812
  };
783
813
  meta: object;
784
814
  }>;
@@ -796,11 +826,11 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
796
826
  }>;
797
827
  listTasks: import("@trpc/server").TRPCQueryProcedure<{
798
828
  input: {
799
- status?: "review" | "in-progress" | "backlog" | "done" | undefined;
800
829
  type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
801
- tags?: string[] | undefined;
830
+ status?: "backlog" | "in-progress" | "review" | "done" | undefined;
802
831
  priority?: "low" | "medium" | "high" | undefined;
803
832
  search?: string | undefined;
833
+ tags?: string[] | undefined;
804
834
  includeDeleted?: boolean | undefined;
805
835
  onlyDeleted?: boolean | undefined;
806
836
  } | undefined;
@@ -816,15 +846,15 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
816
846
  }>;
817
847
  createTask: import("@trpc/server").TRPCMutationProcedure<{
818
848
  input: {
819
- title: string;
820
849
  type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
850
+ title: string;
821
851
  content: string;
822
- status?: "review" | "in-progress" | "backlog" | "done" | undefined;
852
+ status?: "backlog" | "in-progress" | "review" | "done" | undefined;
853
+ priority?: "low" | "medium" | "high" | undefined;
823
854
  id?: string | undefined;
824
855
  tags?: string[] | undefined;
825
856
  due_date?: string | undefined;
826
857
  assignee?: string[] | undefined;
827
- priority?: "low" | "medium" | "high" | undefined;
828
858
  comments?: string[] | undefined;
829
859
  };
830
860
  output: import("../../types/index.js").Task;
@@ -833,13 +863,13 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
833
863
  updateTask: import("@trpc/server").TRPCMutationProcedure<{
834
864
  input: {
835
865
  id: string;
836
- status?: "review" | "in-progress" | "backlog" | "done" | undefined;
837
- title?: string | undefined;
838
866
  type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
867
+ status?: "backlog" | "in-progress" | "review" | "done" | undefined;
868
+ priority?: "low" | "medium" | "high" | undefined;
869
+ title?: string | undefined;
839
870
  tags?: string[] | undefined;
840
871
  due_date?: string | undefined;
841
872
  assignee?: string[] | undefined;
842
- priority?: "low" | "medium" | "high" | undefined;
843
873
  comments?: string[] | undefined;
844
874
  content?: string | undefined;
845
875
  deleted_at?: string | undefined;
@@ -858,7 +888,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
858
888
  }>;
859
889
  moveTask: import("@trpc/server").TRPCMutationProcedure<{
860
890
  input: {
861
- status: "review" | "in-progress" | "backlog" | "done";
891
+ status: "backlog" | "in-progress" | "review" | "done";
862
892
  id: string;
863
893
  };
864
894
  output: import("../../types/index.js").Task;
@@ -35,7 +35,7 @@ export declare class ExecutionLogPersistence {
35
35
  private ensureLogsDir;
36
36
  /**
37
37
  * Get execution log directory path, grouped by task ID
38
- * .vibeman/execution-logs/{taskId}/{executionId-YYYYMMDD_HHMMSS}/
38
+ * .vibeman/.local/execution-logs/{taskId}/{executionId-YYYYMMDD_HHMMSS}/
39
39
  */
40
40
  private getExecutionDirFor;
41
41
  /**
@@ -6,7 +6,7 @@ import { getVibeDir } from '../lib/server/project-root.js';
6
6
  export class ExecutionLogPersistence {
7
7
  constructor() {
8
8
  this.dataDir = getVibeDir();
9
- this.logsDir = path.join(this.dataDir, 'execution-logs');
9
+ this.logsDir = path.join(this.dataDir, '.local/execution-logs');
10
10
  this.indexDb = new DatabaseService(path.join(this.logsDir, 'index.json'));
11
11
  }
12
12
  /**
@@ -22,7 +22,7 @@ export class ExecutionLogPersistence {
22
22
  }
23
23
  /**
24
24
  * Get execution log directory path, grouped by task ID
25
- * .vibeman/execution-logs/{taskId}/{executionId-YYYYMMDD_HHMMSS}/
25
+ * .vibeman/.local/execution-logs/{taskId}/{executionId-YYYYMMDD_HHMMSS}/
26
26
  */
27
27
  getExecutionDirFor(execution) {
28
28
  const timestamp = new Date()
@@ -43,7 +43,23 @@ export class ExecutionLogPersistence {
43
43
  // Prefer index lookup (non-throwing)
44
44
  const idx = await this.indexDb.get(executionId).catch(() => undefined);
45
45
  if (idx?.dirPath) {
46
- return idx.dirPath;
46
+ try {
47
+ const stats = await fs.stat(idx.dirPath);
48
+ if (stats.isDirectory()) {
49
+ return idx.dirPath;
50
+ }
51
+ log.debug('Removing stale execution index entry (not a directory)', { executionId, dirPath: idx.dirPath }, 'execution-log-persistence:findExecutionDir');
52
+ }
53
+ catch (error) {
54
+ if (error && error.code !== 'ENOENT') {
55
+ log.error('Failed to access execution directory from index', error, 'execution-log-persistence:findExecutionDir');
56
+ return idx.dirPath;
57
+ }
58
+ log.debug('Removing stale execution index entry (missing directory)', { executionId, dirPath: idx.dirPath }, 'execution-log-persistence:findExecutionDir');
59
+ }
60
+ await this.indexDb.delete(executionId).catch((deleteError) => {
61
+ log.error('Failed to delete stale execution index entry', deleteError, 'execution-log-persistence:findExecutionDir');
62
+ });
47
63
  }
48
64
  // Walk task directories
49
65
  const taskDirs = await fs.readdir(this.logsDir, { withFileTypes: true });
@@ -55,6 +55,18 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
55
55
  lastDetected?: string | undefined;
56
56
  detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
57
57
  } | undefined;
58
+ gemini?: {
59
+ binPath?: string | undefined;
60
+ detectedPath?: string | undefined;
61
+ lastDetected?: string | undefined;
62
+ detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
63
+ } | undefined;
64
+ amp?: {
65
+ binPath?: string | undefined;
66
+ detectedPath?: string | undefined;
67
+ lastDetected?: string | undefined;
68
+ detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
69
+ } | undefined;
58
70
  };
59
71
  path: string;
60
72
  exists: boolean;
@@ -87,6 +99,16 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
87
99
  detectedPath?: string | undefined;
88
100
  lastDetected?: string | undefined;
89
101
  detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
102
+ } | {
103
+ binPath?: string | undefined;
104
+ detectedPath?: string | undefined;
105
+ lastDetected?: string | undefined;
106
+ detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
107
+ } | {
108
+ binPath?: string | undefined;
109
+ detectedPath?: string | undefined;
110
+ lastDetected?: string | undefined;
111
+ detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
90
112
  } | undefined;
91
113
  cached: {
92
114
  available: boolean;
@@ -122,7 +144,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
122
144
  input: void;
123
145
  output: {
124
146
  defaultProvider: string;
125
- operations?: Partial<Record<"execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview", {
147
+ operations?: Partial<Record<"execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task", {
126
148
  provider: string;
127
149
  options?: {
128
150
  temperature?: number | undefined;
@@ -139,7 +161,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
139
161
  input: {
140
162
  policy: {
141
163
  defaultProvider?: string | undefined;
142
- operations?: Partial<Record<"execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview", {
164
+ operations?: Partial<Record<"execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task", {
143
165
  provider: string;
144
166
  options?: {
145
167
  temperature?: number | undefined;
@@ -169,7 +191,6 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
169
191
  }>;
170
192
  setOperationConfig: import("@trpc/server").TRPCMutationProcedure<{
171
193
  input: {
172
- operation: "execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview";
173
194
  config: {
174
195
  provider: string;
175
196
  options?: {
@@ -180,6 +201,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
180
201
  model?: string | undefined;
181
202
  fallback?: string[] | undefined;
182
203
  };
204
+ operation: "execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task";
183
205
  };
184
206
  output: {
185
207
  success: boolean;
@@ -245,6 +267,19 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
245
267
  output: boolean;
246
268
  meta: object;
247
269
  }>;
270
+ getProjectInfo: import("@trpc/server").TRPCQueryProcedure<{
271
+ input: void;
272
+ output: {
273
+ name: string;
274
+ path: string;
275
+ };
276
+ meta: object;
277
+ }>;
278
+ getVibemanInfo: import("@trpc/server").TRPCQueryProcedure<{
279
+ input: void;
280
+ output: import("./lib/server/vibeman-info.js").VibemanInfo;
281
+ meta: object;
282
+ }>;
248
283
  getSettings: import("@trpc/server").TRPCQueryProcedure<{
249
284
  input: void;
250
285
  output: import("./types/settings.js").VibemanSettings;
@@ -348,15 +383,14 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
348
383
  }>;
349
384
  updateWorkflowOptions: import("@trpc/server").TRPCMutationProcedure<{
350
385
  input: {
351
- workflowId: string;
352
386
  config: {
353
- autoCommit?: boolean | undefined;
354
- createPR?: boolean | undefined;
355
387
  autoQualityChecks?: boolean | undefined;
356
388
  requireHumanApproval?: boolean | undefined;
389
+ aiCodeReview?: boolean | undefined;
390
+ autoCommit?: boolean | undefined;
391
+ createPR?: boolean | undefined;
357
392
  stepByStepMode?: boolean | undefined;
358
393
  autoMerge?: boolean | undefined;
359
- aiCodeReview?: boolean | undefined;
360
394
  aiRoutingOverrides?: {
361
395
  execute_task?: {
362
396
  provider?: string | undefined;
@@ -366,7 +400,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
366
400
  provider?: string | undefined;
367
401
  model?: string | undefined;
368
402
  } | undefined;
369
- improve_task?: {
403
+ ai_codereview?: {
370
404
  provider?: string | undefined;
371
405
  model?: string | undefined;
372
406
  } | undefined;
@@ -374,12 +408,13 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
374
408
  provider?: string | undefined;
375
409
  model?: string | undefined;
376
410
  } | undefined;
377
- ai_codereview?: {
411
+ improve_task?: {
378
412
  provider?: string | undefined;
379
413
  model?: string | undefined;
380
414
  } | undefined;
381
415
  } | undefined;
382
416
  };
417
+ workflowId: string;
383
418
  };
384
419
  output: {
385
420
  readonly success: true;
@@ -390,13 +425,13 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
390
425
  input: {
391
426
  taskId: string;
392
427
  config?: {
393
- autoCommit?: boolean | undefined;
394
- createPR?: boolean | undefined;
395
428
  autoQualityChecks?: boolean | undefined;
396
429
  requireHumanApproval?: boolean | undefined;
430
+ aiCodeReview?: boolean | undefined;
431
+ autoCommit?: boolean | undefined;
432
+ createPR?: boolean | undefined;
397
433
  stepByStepMode?: boolean | undefined;
398
434
  autoMerge?: boolean | undefined;
399
- aiCodeReview?: boolean | undefined;
400
435
  aiRoutingOverrides?: {
401
436
  execute_task?: {
402
437
  provider?: string | undefined;
@@ -406,7 +441,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
406
441
  provider?: string | undefined;
407
442
  model?: string | undefined;
408
443
  } | undefined;
409
- improve_task?: {
444
+ ai_codereview?: {
410
445
  provider?: string | undefined;
411
446
  model?: string | undefined;
412
447
  } | undefined;
@@ -414,7 +449,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
414
449
  provider?: string | undefined;
415
450
  model?: string | undefined;
416
451
  } | undefined;
417
- ai_codereview?: {
452
+ improve_task?: {
418
453
  provider?: string | undefined;
419
454
  model?: string | undefined;
420
455
  } | undefined;
@@ -542,8 +577,8 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
542
577
  input: {
543
578
  taskId: string;
544
579
  provider?: string | undefined;
545
- workflowId?: string | undefined;
546
580
  model?: string | undefined;
581
+ workflowId?: string | undefined;
547
582
  reviewContext?: string | undefined;
548
583
  };
549
584
  output: {
@@ -698,9 +733,9 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
698
733
  cleanupWorktree: import("@trpc/server").TRPCMutationProcedure<{
699
734
  input: {
700
735
  isConnectedToTask: boolean;
701
- taskId?: string | undefined;
702
- force?: boolean | undefined;
703
736
  worktreePath?: string | undefined;
737
+ force?: boolean | undefined;
738
+ taskId?: string | undefined;
704
739
  branchName?: string | undefined;
705
740
  };
706
741
  output: {
@@ -768,20 +803,15 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
768
803
  }>;
769
804
  improveTask: import("@trpc/server").TRPCMutationProcedure<{
770
805
  input: {
771
- title: string;
772
806
  type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
773
807
  priority: "low" | "medium" | "high";
808
+ title: string;
774
809
  content: string;
775
810
  taskId: string;
776
811
  executionId?: string | undefined;
777
812
  };
778
813
  output: {
779
- type: string;
780
- priority: string;
781
- content: string;
782
- title?: string;
783
- executionId: string;
784
- selectedModel?: string;
814
+ readonly executionId: string;
785
815
  };
786
816
  meta: object;
787
817
  }>;
@@ -799,11 +829,11 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
799
829
  }>;
800
830
  listTasks: import("@trpc/server").TRPCQueryProcedure<{
801
831
  input: {
802
- status?: "review" | "in-progress" | "backlog" | "done" | undefined;
803
832
  type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
804
- tags?: string[] | undefined;
833
+ status?: "backlog" | "in-progress" | "review" | "done" | undefined;
805
834
  priority?: "low" | "medium" | "high" | undefined;
806
835
  search?: string | undefined;
836
+ tags?: string[] | undefined;
807
837
  includeDeleted?: boolean | undefined;
808
838
  onlyDeleted?: boolean | undefined;
809
839
  } | undefined;
@@ -819,15 +849,15 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
819
849
  }>;
820
850
  createTask: import("@trpc/server").TRPCMutationProcedure<{
821
851
  input: {
822
- title: string;
823
852
  type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
853
+ title: string;
824
854
  content: string;
825
- status?: "review" | "in-progress" | "backlog" | "done" | undefined;
855
+ status?: "backlog" | "in-progress" | "review" | "done" | undefined;
856
+ priority?: "low" | "medium" | "high" | undefined;
826
857
  id?: string | undefined;
827
858
  tags?: string[] | undefined;
828
859
  due_date?: string | undefined;
829
860
  assignee?: string[] | undefined;
830
- priority?: "low" | "medium" | "high" | undefined;
831
861
  comments?: string[] | undefined;
832
862
  };
833
863
  output: import("./types/index.js").Task;
@@ -836,13 +866,13 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
836
866
  updateTask: import("@trpc/server").TRPCMutationProcedure<{
837
867
  input: {
838
868
  id: string;
839
- status?: "review" | "in-progress" | "backlog" | "done" | undefined;
840
- title?: string | undefined;
841
869
  type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
870
+ status?: "backlog" | "in-progress" | "review" | "done" | undefined;
871
+ priority?: "low" | "medium" | "high" | undefined;
872
+ title?: string | undefined;
842
873
  tags?: string[] | undefined;
843
874
  due_date?: string | undefined;
844
875
  assignee?: string[] | undefined;
845
- priority?: "low" | "medium" | "high" | undefined;
846
876
  comments?: string[] | undefined;
847
877
  content?: string | undefined;
848
878
  deleted_at?: string | undefined;
@@ -861,7 +891,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
861
891
  }>;
862
892
  moveTask: import("@trpc/server").TRPCMutationProcedure<{
863
893
  input: {
864
- status: "review" | "in-progress" | "backlog" | "done";
894
+ status: "backlog" | "in-progress" | "review" | "done";
865
895
  id: string;
866
896
  };
867
897
  output: import("./types/index.js").Task;
@@ -16,17 +16,32 @@ const CLAUDE_ALLOWED_MODELS = [
16
16
  'claude-opus-4-1-20250805',
17
17
  'claude-3-5-haiku-20241022',
18
18
  ];
19
+ const CODEX_BASE_MODELS = [
20
+ 'gpt-5.1-codex-max',
21
+ 'gpt-5.1-codex',
22
+ 'gpt-5.1-codex-mini',
23
+ 'gpt-5.2',
24
+ 'gpt-5.1',
25
+ ];
26
+ const CODEX_REASONING_SUFFIXES = ['low', 'medium', 'high', 'extra-high'];
19
27
  const CODEX_ALLOWED_MODELS = [
20
- 'gpt-5',
21
- 'gpt-5-low',
22
- 'gpt-5-medium',
23
- 'gpt-5-high',
24
- 'gpt-5-codex',
25
- 'gpt-5-codex-low',
26
- 'gpt-5-codex-medium',
27
- 'gpt-5-codex-high',
28
+ ...CODEX_BASE_MODELS,
29
+ ...CODEX_BASE_MODELS.flatMap((base) => CODEX_REASONING_SUFFIXES.map((suffix) => `${base}-${suffix}`)),
30
+ ];
31
+ const GEMINI_ALLOWED_MODELS = [
32
+ 'gemini-3-pro-preview',
33
+ 'gemini-3-flash-preview',
34
+ 'gemini-2.5-pro',
35
+ 'gemini-2.5-flash',
36
+ 'gemini-2.5-flash-lite',
37
+ ];
38
+ const AUTO_ALLOWED_MODELS = ['auto'];
39
+ const MODEL_ENUM = [
40
+ ...CLAUDE_ALLOWED_MODELS,
41
+ ...CODEX_ALLOWED_MODELS,
42
+ ...GEMINI_ALLOWED_MODELS,
43
+ ...AUTO_ALLOWED_MODELS,
28
44
  ];
29
- const MODEL_ENUM = [...CLAUDE_ALLOWED_MODELS, ...CODEX_ALLOWED_MODELS];
30
45
  const ROUTABLE_OPERATIONS = [
31
46
  'execute_task',
32
47
  'quality_checks',
@@ -48,20 +63,20 @@ const RoutingOperationSchema = z.object({
48
63
  });
49
64
  const RoutingPolicySettingsSchema = z
50
65
  .object({
51
- defaultProvider: z.enum(['claude-code', 'codex']).optional(),
66
+ defaultProvider: z.enum(['claude-code', 'codex', 'gemini', 'amp']).optional(),
52
67
  operations: z.record(z.enum(ROUTABLE_OPERATIONS), RoutingOperationSchema).optional(),
53
68
  })
54
69
  .optional();
55
70
  const VibemanSettingsSchema = z.object({
56
71
  agents: z.object({
57
- defaultProvider: z.enum(['claude-code', 'codex']),
72
+ defaultProvider: z.enum(['claude-code', 'codex', 'gemini', 'amp']),
58
73
  codingAgent: z.object({
59
- provider: z.enum(['claude-code', 'codex']),
74
+ provider: z.enum(['claude-code', 'codex', 'gemini', 'amp']),
60
75
  model: z.enum(MODEL_ENUM),
61
76
  maxTokens: z.number().min(256).max(10000000000000).optional(),
62
77
  }),
63
78
  judgeAgent: z.object({
64
- provider: z.enum(['claude-code', 'codex']),
79
+ provider: z.enum(['claude-code', 'codex', 'gemini', 'amp']),
65
80
  model: z.enum(MODEL_ENUM),
66
81
  maxTokens: z.number().min(256).max(10000000000000).optional(),
67
82
  reviewThresholdScore: z.number().min(0).max(100),
@@ -76,6 +91,8 @@ const VibemanSettingsSchema = z.object({
76
91
  .object({
77
92
  claudeCode: z.object({ binPath: z.string().min(1).optional() }).optional(),
78
93
  codex: z.object({ binPath: z.string().min(1).optional() }).optional(),
94
+ gemini: z.object({ binPath: z.string().min(1).optional() }).optional(),
95
+ amp: z.object({ binPath: z.string().min(1).optional() }).optional(),
79
96
  })
80
97
  .optional(),
81
98
  routingPolicy: RoutingPolicySettingsSchema,
@@ -210,7 +227,7 @@ export class SettingsService extends EventEmitter {
210
227
  super();
211
228
  this.settings = { ...DEFAULT_SETTINGS };
212
229
  this.initialized = false;
213
- const settingsDir = config.settingsDir ?? '.vibeman';
230
+ const settingsDir = config.settingsDir ?? '.vibeman/.local';
214
231
  const settingsFileName = config.settingsFileName ?? 'settings.json';
215
232
  // Resolve settings path relative to the repo project root (not package CWD)
216
233
  const projectRoot = getProjectRoot();