vibeman 0.0.1 → 0.0.3
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/dist/index.js +5 -7
- package/dist/runtime/api/.tsbuildinfo +1 -1
- package/dist/runtime/api/agent/agent-service.d.ts +18 -19
- package/dist/runtime/api/agent/agent-service.js +61 -58
- package/dist/runtime/api/agent/ai-providers/claude-code-adapter.d.ts +2 -2
- package/dist/runtime/api/agent/ai-providers/claude-code-adapter.js +25 -36
- package/dist/runtime/api/agent/ai-providers/codex-cli-provider.d.ts +2 -0
- package/dist/runtime/api/agent/ai-providers/codex-cli-provider.js +109 -43
- package/dist/runtime/api/agent/ai-providers/types.d.ts +2 -0
- package/dist/runtime/api/agent/codex-cli-provider.test.js +83 -1
- package/dist/runtime/api/agent/parsers.d.ts +1 -0
- package/dist/runtime/api/agent/parsers.js +75 -8
- package/dist/runtime/api/agent/prompt-service.d.ts +14 -1
- package/dist/runtime/api/agent/prompt-service.js +123 -14
- package/dist/runtime/api/agent/prompt-service.test.js +230 -0
- package/dist/runtime/api/agent/routing-policy.d.ts +25 -42
- package/dist/runtime/api/agent/routing-policy.js +82 -132
- package/dist/runtime/api/agent/routing-policy.test.js +63 -0
- package/dist/runtime/api/api/routers/ai.d.ts +19 -7
- package/dist/runtime/api/api/routers/ai.js +9 -23
- package/dist/runtime/api/api/routers/executions.d.ts +4 -4
- package/dist/runtime/api/api/routers/executions.js +12 -21
- package/dist/runtime/api/api/routers/provider-config.d.ts +165 -0
- package/dist/runtime/api/api/routers/provider-config.js +252 -0
- package/dist/runtime/api/api/routers/tasks.d.ts +9 -9
- package/dist/runtime/api/api/routers/workflows.d.ts +23 -16
- package/dist/runtime/api/api/routers/workflows.js +30 -27
- package/dist/runtime/api/api/routers/worktrees.d.ts +4 -5
- package/dist/runtime/api/api/routers/worktrees.js +11 -11
- package/dist/runtime/api/api/trpc.d.ts +16 -16
- package/dist/runtime/api/index.js +2 -10
- package/dist/runtime/api/lib/local-config.d.ts +245 -0
- package/dist/runtime/api/lib/local-config.js +288 -0
- package/dist/runtime/api/lib/provider-detection.d.ts +59 -0
- package/dist/runtime/api/lib/provider-detection.js +244 -0
- package/dist/runtime/api/lib/server/bootstrap.d.ts +38 -0
- package/dist/runtime/api/lib/server/bootstrap.js +197 -0
- package/dist/runtime/api/lib/server/project-root.js +24 -1
- package/dist/runtime/api/lib/trpc/server.d.ts +143 -30
- package/dist/runtime/api/lib/trpc/server.js +8 -8
- package/dist/runtime/api/lib/trpc/ws-server.js +2 -2
- package/dist/runtime/api/router.d.ts +144 -31
- package/dist/runtime/api/router.js +9 -31
- package/dist/runtime/api/settings-service.js +51 -1
- package/dist/runtime/api/types/index.d.ts +8 -1
- package/dist/runtime/api/types/settings.d.ts +15 -2
- package/dist/runtime/api/workflows/vibing-orchestrator.d.ts +8 -3
- package/dist/runtime/api/workflows/vibing-orchestrator.js +214 -184
- package/dist/runtime/web/.next/BUILD_ID +1 -1
- package/dist/runtime/web/.next/app-build-manifest.json +19 -12
- package/dist/runtime/web/.next/app-path-routes-manifest.json +2 -1
- package/dist/runtime/web/.next/build-manifest.json +2 -2
- package/dist/runtime/web/.next/prerender-manifest.json +10 -10
- package/dist/runtime/web/.next/routes-manifest.json +8 -0
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js +1 -0
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js.nft.json +1 -0
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route_client-reference-manifest.js +1 -0
- package/dist/runtime/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app/_not-found.html +2 -2
- package/dist/runtime/web/.next/server/app/_not-found.rsc +5 -5
- package/dist/runtime/web/.next/server/app/api/health/route.js +1 -1
- package/dist/runtime/web/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app/api/images/[...path]/route.js +1 -1
- package/dist/runtime/web/.next/server/app/api/images/[...path]/route_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app/api/upload/route.js +1 -1
- package/dist/runtime/web/.next/server/app/api/upload/route_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app/index.html +2 -2
- package/dist/runtime/web/.next/server/app/index.rsc +6 -6
- package/dist/runtime/web/.next/server/app/page.js +21 -21
- package/dist/runtime/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app-paths-manifest.json +2 -1
- package/dist/runtime/web/.next/server/chunks/458.js +1 -1
- package/dist/runtime/web/.next/server/pages/404.html +2 -2
- package/dist/runtime/web/.next/server/pages/500.html +1 -1
- package/dist/runtime/web/.next/server/pages-manifest.json +1 -1
- package/dist/runtime/web/.next/server/server-reference-manifest.json +1 -1
- package/dist/runtime/web/.next/static/5_15u1WQCxN1_eHZpldCv/_buildManifest.js +1 -0
- package/dist/runtime/web/.next/static/chunks/{277-0142a939f08738c3.js → 823-6f371a6e829adbba.js} +1 -1
- package/dist/runtime/web/.next/static/chunks/app/.vibeman/assets/images/[...path]/route-751c9265a65409e5.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/api/health/route-751c9265a65409e5.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-751c9265a65409e5.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/api/upload/route-751c9265a65409e5.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/{layout-dc0cfd29075b2160.js → layout-8435322f09fd0975.js} +1 -1
- package/dist/runtime/web/.next/static/chunks/app/page-9fe7d75095b4ccec.js +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -1
- package/dist/runtime/api/lib/image-paste-drop-extension.d.ts +0 -26
- package/dist/runtime/api/lib/image-paste-drop-extension.js +0 -125
- package/dist/runtime/api/lib/markdown-utils.d.ts +0 -8
- package/dist/runtime/api/lib/markdown-utils.js +0 -282
- package/dist/runtime/api/lib/markdown-utils.test.js +0 -348
- package/dist/runtime/api/lib/tiptap-utils.clamp-selection.test.js +0 -27
- package/dist/runtime/api/lib/tiptap-utils.d.ts +0 -130
- package/dist/runtime/api/lib/tiptap-utils.js +0 -327
- package/dist/runtime/web/.next/static/1HR8N0rJkCvFRtbTPJMyH/_buildManifest.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/health/route-105a61ae865ba536.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-105a61ae865ba536.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/upload/route-105a61ae865ba536.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/page-f34a8b196b18850b.js +0 -1
- /package/dist/runtime/api/{lib/markdown-utils.test.d.ts → agent/prompt-service.test.d.ts} +0 -0
- /package/dist/runtime/api/{lib/tiptap-utils.clamp-selection.test.d.ts → agent/routing-policy.test.d.ts} +0 -0
- /package/dist/runtime/web/.next/static/{1HR8N0rJkCvFRtbTPJMyH → 5_15u1WQCxN1_eHZpldCv}/_ssgManifest.js +0 -0
|
@@ -2,7 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { on, EventEmitter } from 'events';
|
|
3
3
|
import { publicProcedure } from '../trpc.js';
|
|
4
4
|
import { TRPCError } from '@trpc/server';
|
|
5
|
-
export function buildWorkflowRoutes({
|
|
5
|
+
export function buildWorkflowRoutes({ vibingOrchestrator }) {
|
|
6
6
|
const OperationOverrideSchema = z.object({
|
|
7
7
|
provider: z.string().optional(),
|
|
8
8
|
model: z.string().optional(),
|
|
@@ -10,9 +10,10 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
10
10
|
const WorkflowAIRoutingOverrides = z
|
|
11
11
|
.object({
|
|
12
12
|
execute_task: OperationOverrideSchema.optional(),
|
|
13
|
-
|
|
13
|
+
quality_checks: OperationOverrideSchema.optional(),
|
|
14
14
|
ai_codereview: OperationOverrideSchema.optional(),
|
|
15
15
|
ai_merge: OperationOverrideSchema.optional(),
|
|
16
|
+
improve_task: OperationOverrideSchema.optional(),
|
|
16
17
|
})
|
|
17
18
|
.partial();
|
|
18
19
|
const WorkflowConfig = z.object({
|
|
@@ -30,14 +31,14 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
30
31
|
updateWorkflowOptions: publicProcedure
|
|
31
32
|
.input(z.object({ workflowId: z.string(), config: WorkflowConfig }))
|
|
32
33
|
.mutation(async ({ input }) => {
|
|
33
|
-
const orchestrator =
|
|
34
|
+
const orchestrator = vibingOrchestrator;
|
|
34
35
|
await orchestrator.updateWorkflowOptions(input.workflowId, input.config);
|
|
35
36
|
return { success: true };
|
|
36
37
|
}),
|
|
37
38
|
startWorkflow: publicProcedure
|
|
38
39
|
.input(z.object({ taskId: z.string(), config: WorkflowConfigOpt }))
|
|
39
40
|
.mutation(async ({ input }) => {
|
|
40
|
-
const orchestrator =
|
|
41
|
+
const orchestrator = vibingOrchestrator;
|
|
41
42
|
const workflowId = await orchestrator.startWorkflow(input.taskId, input.config || {});
|
|
42
43
|
return { workflowId };
|
|
43
44
|
}),
|
|
@@ -45,7 +46,7 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
45
46
|
.input(z.object({ workflowId: z.string() }))
|
|
46
47
|
.mutation(async ({ input }) => {
|
|
47
48
|
try {
|
|
48
|
-
const orchestrator =
|
|
49
|
+
const orchestrator = vibingOrchestrator;
|
|
49
50
|
await orchestrator.continueWorkflow(input.workflowId);
|
|
50
51
|
return { success: true };
|
|
51
52
|
}
|
|
@@ -58,7 +59,7 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
58
59
|
runValidation: publicProcedure
|
|
59
60
|
.input(z.object({ workflowId: z.string() }))
|
|
60
61
|
.mutation(async ({ input }) => {
|
|
61
|
-
const orchestrator =
|
|
62
|
+
const orchestrator = vibingOrchestrator;
|
|
62
63
|
await orchestrator.runValidation(input.workflowId);
|
|
63
64
|
return { success: true };
|
|
64
65
|
}),
|
|
@@ -69,7 +70,7 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
69
70
|
model: z.string().optional(),
|
|
70
71
|
}))
|
|
71
72
|
.mutation(async ({ input }) => {
|
|
72
|
-
const orchestrator =
|
|
73
|
+
const orchestrator = vibingOrchestrator;
|
|
73
74
|
await orchestrator.runMerge(input.workflowId, {
|
|
74
75
|
provider: input.provider,
|
|
75
76
|
model: input.model,
|
|
@@ -79,14 +80,14 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
79
80
|
runCleanup: publicProcedure
|
|
80
81
|
.input(z.object({ workflowId: z.string() }))
|
|
81
82
|
.mutation(async ({ input }) => {
|
|
82
|
-
const orchestrator =
|
|
83
|
+
const orchestrator = vibingOrchestrator;
|
|
83
84
|
await orchestrator.runCleanup(input.workflowId);
|
|
84
85
|
return { success: true };
|
|
85
86
|
}),
|
|
86
87
|
pauseWorkflow: publicProcedure
|
|
87
88
|
.input(z.object({ workflowId: z.string() }))
|
|
88
89
|
.mutation(async ({ input }) => {
|
|
89
|
-
const orchestrator =
|
|
90
|
+
const orchestrator = vibingOrchestrator;
|
|
90
91
|
await orchestrator.pauseWorkflow(input.workflowId);
|
|
91
92
|
return { success: true };
|
|
92
93
|
}),
|
|
@@ -97,7 +98,7 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
97
98
|
force: z.boolean().optional(),
|
|
98
99
|
}))
|
|
99
100
|
.mutation(async ({ input }) => {
|
|
100
|
-
const orchestrator =
|
|
101
|
+
const orchestrator = vibingOrchestrator;
|
|
101
102
|
await orchestrator.resetWorkflow(input.workflowId, {
|
|
102
103
|
deleteWorktree: input.deleteWorktree,
|
|
103
104
|
force: input.force,
|
|
@@ -107,14 +108,14 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
107
108
|
approveWorkflow: publicProcedure
|
|
108
109
|
.input(z.object({ workflowId: z.string(), comments: z.string().optional() }))
|
|
109
110
|
.mutation(async ({ input }) => {
|
|
110
|
-
const orchestrator =
|
|
111
|
+
const orchestrator = vibingOrchestrator;
|
|
111
112
|
await orchestrator.approveWorkflow(input.workflowId);
|
|
112
113
|
return { success: true };
|
|
113
114
|
}),
|
|
114
115
|
rejectWorkflow: publicProcedure
|
|
115
116
|
.input(z.object({ workflowId: z.string(), feedback: z.string() }))
|
|
116
117
|
.mutation(async ({ input }) => {
|
|
117
|
-
const orchestrator =
|
|
118
|
+
const orchestrator = vibingOrchestrator;
|
|
118
119
|
await orchestrator.rejectWorkflow(input.workflowId, input.feedback);
|
|
119
120
|
return { success: true };
|
|
120
121
|
}),
|
|
@@ -122,7 +123,7 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
122
123
|
.input(z.object({ taskId: z.string().optional() }).optional())
|
|
123
124
|
.subscription(async function* (opts) {
|
|
124
125
|
const input = opts.input;
|
|
125
|
-
const orchestrator =
|
|
126
|
+
const orchestrator = vibingOrchestrator;
|
|
126
127
|
const proxy = new EventEmitter();
|
|
127
128
|
const handleStarted = (workflow) => {
|
|
128
129
|
if (!input?.taskId || workflow.taskId === input.taskId)
|
|
@@ -208,22 +209,22 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
208
209
|
getWorkflow: publicProcedure
|
|
209
210
|
.input(z.object({ workflowId: z.string() }))
|
|
210
211
|
.query(async ({ input }) => {
|
|
211
|
-
const orchestrator =
|
|
212
|
+
const orchestrator = vibingOrchestrator;
|
|
212
213
|
return orchestrator.getWorkflow(input.workflowId);
|
|
213
214
|
}),
|
|
214
215
|
getWorkflowsByTaskId: publicProcedure
|
|
215
216
|
.input(z.object({ taskId: z.string() }))
|
|
216
217
|
.query(async ({ input }) => {
|
|
217
|
-
const orchestrator =
|
|
218
|
+
const orchestrator = vibingOrchestrator;
|
|
218
219
|
return orchestrator.getTaskWorkflows(input.taskId);
|
|
219
220
|
}),
|
|
220
221
|
getLatestWorkflowByTaskId: publicProcedure
|
|
221
222
|
.input(z.object({ taskId: z.string() }))
|
|
222
223
|
.query(async ({ input }) => {
|
|
223
|
-
const orchestrator =
|
|
224
|
+
const orchestrator = vibingOrchestrator;
|
|
224
225
|
return orchestrator.getLatestWorkflowByTask(input.taskId);
|
|
225
226
|
}),
|
|
226
|
-
|
|
227
|
+
aiReviewCode: publicProcedure
|
|
227
228
|
.input(z.object({
|
|
228
229
|
taskId: z.string(),
|
|
229
230
|
workflowId: z.string().optional(),
|
|
@@ -232,31 +233,33 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
232
233
|
model: z.string().optional(),
|
|
233
234
|
}))
|
|
234
235
|
.mutation(async ({ input }) => {
|
|
235
|
-
const orchestrator =
|
|
236
|
-
|
|
236
|
+
const orchestrator = vibingOrchestrator;
|
|
237
|
+
const overrides = input.provider || input.model
|
|
238
|
+
? { provider: input.provider, model: input.model }
|
|
239
|
+
: undefined;
|
|
240
|
+
return await orchestrator.aiReviewCode(input.taskId, input.reviewContext, {
|
|
237
241
|
workflowId: input.workflowId,
|
|
238
|
-
|
|
239
|
-
model: input.model,
|
|
242
|
+
overrides,
|
|
240
243
|
});
|
|
241
244
|
}),
|
|
242
245
|
approveAndContinueReview: publicProcedure
|
|
243
246
|
.input(z.object({ workflowId: z.string() }))
|
|
244
247
|
.mutation(async ({ input }) => {
|
|
245
|
-
const orchestrator =
|
|
248
|
+
const orchestrator = vibingOrchestrator;
|
|
246
249
|
await orchestrator.approveAndContinueReview(input.workflowId);
|
|
247
250
|
return { success: true };
|
|
248
251
|
}),
|
|
249
252
|
markCompleted: publicProcedure
|
|
250
253
|
.input(z.object({ workflowId: z.string() }))
|
|
251
254
|
.mutation(async ({ input }) => {
|
|
252
|
-
const orchestrator =
|
|
255
|
+
const orchestrator = vibingOrchestrator;
|
|
253
256
|
await orchestrator.markWorkflowCompleted(input.workflowId);
|
|
254
257
|
return { success: true };
|
|
255
258
|
}),
|
|
256
259
|
checkWorktreeStatus: publicProcedure
|
|
257
260
|
.input(z.object({ workflowId: z.string() }))
|
|
258
261
|
.mutation(async ({ input }) => {
|
|
259
|
-
const orchestrator =
|
|
262
|
+
const orchestrator = vibingOrchestrator;
|
|
260
263
|
return await orchestrator.checkWorktreeStatus(input.workflowId);
|
|
261
264
|
}),
|
|
262
265
|
rerunImplementation: publicProcedure
|
|
@@ -267,7 +270,7 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
267
270
|
model: z.string().optional(),
|
|
268
271
|
}))
|
|
269
272
|
.mutation(async ({ input }) => {
|
|
270
|
-
const orchestrator =
|
|
273
|
+
const orchestrator = vibingOrchestrator;
|
|
271
274
|
await orchestrator.rerunImplementation(input.workflowId, input.feedback, {
|
|
272
275
|
provider: input.provider,
|
|
273
276
|
model: input.model,
|
|
@@ -277,7 +280,7 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
277
280
|
skipToNextPhase: publicProcedure
|
|
278
281
|
.input(z.object({ workflowId: z.string() }))
|
|
279
282
|
.mutation(async ({ input }) => {
|
|
280
|
-
const orchestrator =
|
|
283
|
+
const orchestrator = vibingOrchestrator;
|
|
281
284
|
await orchestrator.skipToNextPhase(input.workflowId);
|
|
282
285
|
return { success: true };
|
|
283
286
|
}),
|
|
@@ -300,7 +303,7 @@ export function buildWorkflowRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
300
303
|
]),
|
|
301
304
|
}))
|
|
302
305
|
.mutation(async ({ input }) => {
|
|
303
|
-
const orchestrator =
|
|
306
|
+
const orchestrator = vibingOrchestrator;
|
|
304
307
|
await orchestrator.rerunPhase(input.workflowId, input.phase);
|
|
305
308
|
return { success: true };
|
|
306
309
|
}),
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { VibingOrchestrator } from '../../workflows/vibing-orchestrator.js';
|
|
2
2
|
type Deps = {
|
|
3
|
-
|
|
4
|
-
requireOrchestratorSync: () => VibingOrchestrator;
|
|
3
|
+
vibingOrchestrator: VibingOrchestrator;
|
|
5
4
|
};
|
|
6
|
-
export declare function buildWorktreeRoutes({
|
|
5
|
+
export declare function buildWorktreeRoutes({ vibingOrchestrator }: Deps): {
|
|
7
6
|
readonly listWorktrees: import("@trpc/server").TRPCQueryProcedure<{
|
|
8
7
|
input: void;
|
|
9
8
|
output: (import("../../types/index.js").WorktreeInfo & {
|
|
@@ -88,9 +87,9 @@ export declare function buildWorktreeRoutes({ requireOrchestrator, requireOrches
|
|
|
88
87
|
readonly cleanupWorktree: import("@trpc/server").TRPCMutationProcedure<{
|
|
89
88
|
input: {
|
|
90
89
|
isConnectedToTask: boolean;
|
|
91
|
-
worktreePath?: string | undefined;
|
|
92
|
-
force?: boolean | undefined;
|
|
93
90
|
taskId?: string | undefined;
|
|
91
|
+
force?: boolean | undefined;
|
|
92
|
+
worktreePath?: string | undefined;
|
|
94
93
|
branchName?: string | undefined;
|
|
95
94
|
};
|
|
96
95
|
output: {
|
|
@@ -2,19 +2,19 @@ import { z } from 'zod';
|
|
|
2
2
|
import { publicProcedure } from '../trpc.js';
|
|
3
3
|
import { TaskIdSchema, WorktreePathSchema, withErrors } from '../router-helpers.js';
|
|
4
4
|
import { log } from '../../lib/logger.js';
|
|
5
|
-
export function buildWorktreeRoutes({
|
|
5
|
+
export function buildWorktreeRoutes({ vibingOrchestrator }) {
|
|
6
6
|
return {
|
|
7
7
|
listWorktrees: publicProcedure.query(withErrors('list worktrees', 'router:listWorktrees', async () => {
|
|
8
|
-
const orchestrator =
|
|
8
|
+
const orchestrator = vibingOrchestrator;
|
|
9
9
|
return await orchestrator.listWorktrees();
|
|
10
10
|
})),
|
|
11
11
|
syncWorktreeState: publicProcedure.mutation(withErrors('sync worktree state', 'router:syncWorktreeState', async () => {
|
|
12
|
-
const orchestrator =
|
|
12
|
+
const orchestrator = vibingOrchestrator;
|
|
13
13
|
await orchestrator.syncWorktreeState();
|
|
14
14
|
return { success: true, message: 'Worktree state synchronized' };
|
|
15
15
|
})),
|
|
16
16
|
getWorktreeInfo: publicProcedure.input(TaskIdSchema).query(async ({ input }) => {
|
|
17
|
-
const orchestrator =
|
|
17
|
+
const orchestrator = vibingOrchestrator;
|
|
18
18
|
const worktree = orchestrator.getWorktreeInfo(input.taskId);
|
|
19
19
|
if (!worktree)
|
|
20
20
|
return null;
|
|
@@ -22,7 +22,7 @@ export function buildWorktreeRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
22
22
|
return serializableWorktree;
|
|
23
23
|
}),
|
|
24
24
|
createWorktree: publicProcedure.input(TaskIdSchema).mutation(async ({ input }) => {
|
|
25
|
-
const orchestrator =
|
|
25
|
+
const orchestrator = vibingOrchestrator;
|
|
26
26
|
const worktree = await orchestrator.createWorktree(input.taskId);
|
|
27
27
|
const { git, ...serializableWorktree } = worktree;
|
|
28
28
|
return serializableWorktree;
|
|
@@ -30,7 +30,7 @@ export function buildWorktreeRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
30
30
|
deleteWorktree: publicProcedure
|
|
31
31
|
.input(z.object({ taskId: z.string(), force: z.coerce.boolean().optional() }))
|
|
32
32
|
.mutation(async ({ input }) => {
|
|
33
|
-
const orchestrator =
|
|
33
|
+
const orchestrator = vibingOrchestrator;
|
|
34
34
|
await orchestrator.deleteWorktree(input.taskId, input.force || false);
|
|
35
35
|
if (orchestrator) {
|
|
36
36
|
await orchestrator.removeWorkflowsByTask(input.taskId);
|
|
@@ -38,13 +38,13 @@ export function buildWorktreeRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
38
38
|
return { success: true };
|
|
39
39
|
}),
|
|
40
40
|
openInEditor: publicProcedure.input(WorktreePathSchema).mutation(withErrors('open in editor', 'router:openInEditor', async ({ input }) => {
|
|
41
|
-
const orchestrator =
|
|
41
|
+
const orchestrator = vibingOrchestrator;
|
|
42
42
|
await orchestrator.openInEditor(input.worktreePath);
|
|
43
43
|
// Ensure we return a clean, serializable object
|
|
44
44
|
return { success: true };
|
|
45
45
|
})),
|
|
46
46
|
openInTerminal: publicProcedure.input(WorktreePathSchema).mutation(withErrors('open in terminal', 'router:openInTerminal', async ({ input }) => {
|
|
47
|
-
const orchestrator =
|
|
47
|
+
const orchestrator = vibingOrchestrator;
|
|
48
48
|
await orchestrator.openInTerminal(input.worktreePath);
|
|
49
49
|
// Ensure we return a clean, serializable object
|
|
50
50
|
return { success: true };
|
|
@@ -53,14 +53,14 @@ export function buildWorktreeRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
53
53
|
createWorktreePR: publicProcedure
|
|
54
54
|
.input(z.object({ taskId: z.string(), baseBranch: z.string().optional().default('main') }))
|
|
55
55
|
.mutation(async ({ input }) => {
|
|
56
|
-
const orchestrator =
|
|
56
|
+
const orchestrator = vibingOrchestrator;
|
|
57
57
|
log.warn('Deprecated route used: createWorktreePR; prefer createPullRequest', { taskId: input.taskId }, 'router:createWorktreePR');
|
|
58
58
|
return await orchestrator.createPullRequest(input.taskId, input.baseBranch);
|
|
59
59
|
}),
|
|
60
60
|
createPullRequest: publicProcedure
|
|
61
61
|
.input(z.object({ taskId: z.string(), baseBranch: z.string().optional().default('main') }))
|
|
62
62
|
.mutation(withErrors('create pull request', 'router:createPullRequest', async ({ input }) => {
|
|
63
|
-
const orchestrator =
|
|
63
|
+
const orchestrator = vibingOrchestrator;
|
|
64
64
|
return await orchestrator.createPullRequest(input.taskId, input.baseBranch);
|
|
65
65
|
})),
|
|
66
66
|
cleanupWorktree: publicProcedure
|
|
@@ -72,7 +72,7 @@ export function buildWorktreeRoutes({ requireOrchestrator, requireOrchestratorSy
|
|
|
72
72
|
force: z.coerce.boolean().optional().default(false),
|
|
73
73
|
}))
|
|
74
74
|
.mutation(async ({ input }) => {
|
|
75
|
-
const orchestrator =
|
|
75
|
+
const orchestrator = vibingOrchestrator;
|
|
76
76
|
await orchestrator.cleanupWorktree(input);
|
|
77
77
|
return { success: true };
|
|
78
78
|
}),
|
|
@@ -31,26 +31,26 @@ export declare const TaskCreateSchema: z.ZodObject<{
|
|
|
31
31
|
comments: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
32
32
|
content: z.ZodString;
|
|
33
33
|
}, "strip", z.ZodTypeAny, {
|
|
34
|
-
|
|
35
|
-
status: "backlog" | "in-progress" | "review" | "done";
|
|
36
|
-
priority: "low" | "medium" | "high";
|
|
34
|
+
status: "review" | "in-progress" | "backlog" | "done";
|
|
37
35
|
title: string;
|
|
36
|
+
type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
|
|
38
37
|
tags: string[];
|
|
39
38
|
assignee: string[];
|
|
39
|
+
priority: "low" | "medium" | "high";
|
|
40
40
|
comments: string[];
|
|
41
41
|
content: string;
|
|
42
42
|
id?: string | undefined;
|
|
43
43
|
due_date?: string | undefined;
|
|
44
44
|
}, {
|
|
45
|
-
type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
|
|
46
45
|
title: string;
|
|
46
|
+
type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
|
|
47
47
|
content: string;
|
|
48
|
-
status?: "
|
|
49
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
48
|
+
status?: "review" | "in-progress" | "backlog" | "done" | undefined;
|
|
50
49
|
id?: string | undefined;
|
|
51
50
|
tags?: string[] | undefined;
|
|
52
51
|
due_date?: string | undefined;
|
|
53
52
|
assignee?: string[] | undefined;
|
|
53
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
54
54
|
comments?: string[] | undefined;
|
|
55
55
|
}>;
|
|
56
56
|
export declare const TaskUpdateSchema: z.ZodObject<{
|
|
@@ -68,25 +68,25 @@ export declare const TaskUpdateSchema: z.ZodObject<{
|
|
|
68
68
|
deleted_at: z.ZodOptional<z.ZodString>;
|
|
69
69
|
}, "strip", z.ZodTypeAny, {
|
|
70
70
|
id: string;
|
|
71
|
-
|
|
72
|
-
status?: "backlog" | "in-progress" | "review" | "done" | undefined;
|
|
73
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
71
|
+
status?: "review" | "in-progress" | "backlog" | "done" | undefined;
|
|
74
72
|
title?: string | undefined;
|
|
73
|
+
type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
|
|
75
74
|
tags?: string[] | undefined;
|
|
76
75
|
due_date?: string | undefined;
|
|
77
76
|
assignee?: string[] | undefined;
|
|
77
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
78
78
|
comments?: string[] | undefined;
|
|
79
79
|
content?: string | undefined;
|
|
80
80
|
deleted_at?: string | undefined;
|
|
81
81
|
}, {
|
|
82
82
|
id: string;
|
|
83
|
-
|
|
84
|
-
status?: "backlog" | "in-progress" | "review" | "done" | undefined;
|
|
85
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
83
|
+
status?: "review" | "in-progress" | "backlog" | "done" | undefined;
|
|
86
84
|
title?: string | undefined;
|
|
85
|
+
type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
|
|
87
86
|
tags?: string[] | undefined;
|
|
88
87
|
due_date?: string | undefined;
|
|
89
88
|
assignee?: string[] | undefined;
|
|
89
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
90
90
|
comments?: string[] | undefined;
|
|
91
91
|
content?: string | undefined;
|
|
92
92
|
deleted_at?: string | undefined;
|
|
@@ -100,19 +100,19 @@ export declare const TaskFilterSchema: z.ZodObject<{
|
|
|
100
100
|
includeDeleted: z.ZodOptional<z.ZodBoolean>;
|
|
101
101
|
onlyDeleted: z.ZodOptional<z.ZodBoolean>;
|
|
102
102
|
}, "strip", z.ZodTypeAny, {
|
|
103
|
+
status?: "review" | "in-progress" | "backlog" | "done" | undefined;
|
|
103
104
|
type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
|
|
104
|
-
|
|
105
|
+
tags?: string[] | undefined;
|
|
105
106
|
priority?: "low" | "medium" | "high" | undefined;
|
|
106
107
|
search?: string | undefined;
|
|
107
|
-
tags?: string[] | undefined;
|
|
108
108
|
includeDeleted?: boolean | undefined;
|
|
109
109
|
onlyDeleted?: boolean | undefined;
|
|
110
110
|
}, {
|
|
111
|
+
status?: "review" | "in-progress" | "backlog" | "done" | undefined;
|
|
111
112
|
type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
|
|
112
|
-
|
|
113
|
+
tags?: string[] | undefined;
|
|
113
114
|
priority?: "low" | "medium" | "high" | undefined;
|
|
114
115
|
search?: string | undefined;
|
|
115
|
-
tags?: string[] | undefined;
|
|
116
116
|
includeDeleted?: boolean | undefined;
|
|
117
117
|
onlyDeleted?: boolean | undefined;
|
|
118
118
|
}>;
|
|
@@ -100,16 +100,8 @@ try {
|
|
|
100
100
|
if (isMain) {
|
|
101
101
|
const host = process.env.HOST || 'localhost';
|
|
102
102
|
const resolveApiPort = async () => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if (Number.isFinite(explicit) && explicit > 0)
|
|
106
|
-
return explicit;
|
|
107
|
-
// If PORT (web) is set, use web+1
|
|
108
|
-
const webPort = getNumberEnv('PORT', 0);
|
|
109
|
-
if (webPort > 0)
|
|
110
|
-
return webPort + 1;
|
|
111
|
-
// Default dev behavior: assume web on 3000, so API on 3001
|
|
112
|
-
return 3001;
|
|
103
|
+
const port = getNumberEnv('PORT', 3000);
|
|
104
|
+
return port + 1;
|
|
113
105
|
};
|
|
114
106
|
(async () => {
|
|
115
107
|
const port = await resolveApiPort();
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Configuration Manager
|
|
3
|
+
* Handles machine-specific configuration that should not be committed to git
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
declare const LocalConfigSchema: z.ZodObject<{
|
|
8
|
+
providers: z.ZodOptional<z.ZodObject<{
|
|
9
|
+
'claude-code': z.ZodOptional<z.ZodObject<{
|
|
10
|
+
binPath: z.ZodOptional<z.ZodString>;
|
|
11
|
+
detectedPath: z.ZodOptional<z.ZodString>;
|
|
12
|
+
lastDetected: z.ZodOptional<z.ZodString>;
|
|
13
|
+
detectionMethod: z.ZodOptional<z.ZodEnum<["explicit", "PATH", "common-location"]>>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
binPath?: string | undefined;
|
|
16
|
+
detectedPath?: string | undefined;
|
|
17
|
+
lastDetected?: string | undefined;
|
|
18
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
19
|
+
}, {
|
|
20
|
+
binPath?: string | undefined;
|
|
21
|
+
detectedPath?: string | undefined;
|
|
22
|
+
lastDetected?: string | undefined;
|
|
23
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
24
|
+
}>>;
|
|
25
|
+
codex: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
binPath: z.ZodOptional<z.ZodString>;
|
|
27
|
+
detectedPath: z.ZodOptional<z.ZodString>;
|
|
28
|
+
lastDetected: z.ZodOptional<z.ZodString>;
|
|
29
|
+
detectionMethod: z.ZodOptional<z.ZodEnum<["explicit", "PATH", "common-location"]>>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
binPath?: string | undefined;
|
|
32
|
+
detectedPath?: string | undefined;
|
|
33
|
+
lastDetected?: string | undefined;
|
|
34
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
35
|
+
}, {
|
|
36
|
+
binPath?: string | undefined;
|
|
37
|
+
detectedPath?: string | undefined;
|
|
38
|
+
lastDetected?: string | undefined;
|
|
39
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
40
|
+
}>>;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
'claude-code'?: {
|
|
43
|
+
binPath?: string | undefined;
|
|
44
|
+
detectedPath?: string | undefined;
|
|
45
|
+
lastDetected?: string | undefined;
|
|
46
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
47
|
+
} | undefined;
|
|
48
|
+
codex?: {
|
|
49
|
+
binPath?: string | undefined;
|
|
50
|
+
detectedPath?: string | undefined;
|
|
51
|
+
lastDetected?: string | undefined;
|
|
52
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
53
|
+
} | undefined;
|
|
54
|
+
}, {
|
|
55
|
+
'claude-code'?: {
|
|
56
|
+
binPath?: string | undefined;
|
|
57
|
+
detectedPath?: string | undefined;
|
|
58
|
+
lastDetected?: string | undefined;
|
|
59
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
60
|
+
} | undefined;
|
|
61
|
+
codex?: {
|
|
62
|
+
binPath?: string | undefined;
|
|
63
|
+
detectedPath?: string | undefined;
|
|
64
|
+
lastDetected?: string | undefined;
|
|
65
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
66
|
+
} | undefined;
|
|
67
|
+
}>>;
|
|
68
|
+
cache: z.ZodOptional<z.ZodObject<{
|
|
69
|
+
lastProviderValidation: z.ZodOptional<z.ZodString>;
|
|
70
|
+
validationResults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
71
|
+
available: z.ZodBoolean;
|
|
72
|
+
error: z.ZodOptional<z.ZodString>;
|
|
73
|
+
version: z.ZodOptional<z.ZodString>;
|
|
74
|
+
checkedAt: z.ZodString;
|
|
75
|
+
}, "strip", z.ZodTypeAny, {
|
|
76
|
+
available: boolean;
|
|
77
|
+
checkedAt: string;
|
|
78
|
+
error?: string | undefined;
|
|
79
|
+
version?: string | undefined;
|
|
80
|
+
}, {
|
|
81
|
+
available: boolean;
|
|
82
|
+
checkedAt: string;
|
|
83
|
+
error?: string | undefined;
|
|
84
|
+
version?: string | undefined;
|
|
85
|
+
}>>>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
lastProviderValidation?: string | undefined;
|
|
88
|
+
validationResults?: Record<string, {
|
|
89
|
+
available: boolean;
|
|
90
|
+
checkedAt: string;
|
|
91
|
+
error?: string | undefined;
|
|
92
|
+
version?: string | undefined;
|
|
93
|
+
}> | undefined;
|
|
94
|
+
}, {
|
|
95
|
+
lastProviderValidation?: string | undefined;
|
|
96
|
+
validationResults?: Record<string, {
|
|
97
|
+
available: boolean;
|
|
98
|
+
checkedAt: string;
|
|
99
|
+
error?: string | undefined;
|
|
100
|
+
version?: string | undefined;
|
|
101
|
+
}> | undefined;
|
|
102
|
+
}>>;
|
|
103
|
+
}, "strip", z.ZodTypeAny, {
|
|
104
|
+
providers?: {
|
|
105
|
+
'claude-code'?: {
|
|
106
|
+
binPath?: string | undefined;
|
|
107
|
+
detectedPath?: string | undefined;
|
|
108
|
+
lastDetected?: string | undefined;
|
|
109
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
110
|
+
} | undefined;
|
|
111
|
+
codex?: {
|
|
112
|
+
binPath?: string | undefined;
|
|
113
|
+
detectedPath?: string | undefined;
|
|
114
|
+
lastDetected?: string | undefined;
|
|
115
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
116
|
+
} | undefined;
|
|
117
|
+
} | undefined;
|
|
118
|
+
cache?: {
|
|
119
|
+
lastProviderValidation?: string | undefined;
|
|
120
|
+
validationResults?: Record<string, {
|
|
121
|
+
available: boolean;
|
|
122
|
+
checkedAt: string;
|
|
123
|
+
error?: string | undefined;
|
|
124
|
+
version?: string | undefined;
|
|
125
|
+
}> | undefined;
|
|
126
|
+
} | undefined;
|
|
127
|
+
}, {
|
|
128
|
+
providers?: {
|
|
129
|
+
'claude-code'?: {
|
|
130
|
+
binPath?: string | undefined;
|
|
131
|
+
detectedPath?: string | undefined;
|
|
132
|
+
lastDetected?: string | undefined;
|
|
133
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
134
|
+
} | undefined;
|
|
135
|
+
codex?: {
|
|
136
|
+
binPath?: string | undefined;
|
|
137
|
+
detectedPath?: string | undefined;
|
|
138
|
+
lastDetected?: string | undefined;
|
|
139
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
140
|
+
} | undefined;
|
|
141
|
+
} | undefined;
|
|
142
|
+
cache?: {
|
|
143
|
+
lastProviderValidation?: string | undefined;
|
|
144
|
+
validationResults?: Record<string, {
|
|
145
|
+
available: boolean;
|
|
146
|
+
checkedAt: string;
|
|
147
|
+
error?: string | undefined;
|
|
148
|
+
version?: string | undefined;
|
|
149
|
+
}> | undefined;
|
|
150
|
+
} | undefined;
|
|
151
|
+
}>;
|
|
152
|
+
export type LocalConfig = z.infer<typeof LocalConfigSchema>;
|
|
153
|
+
export interface LocalConfigServiceConfig {
|
|
154
|
+
configDir?: string;
|
|
155
|
+
configFileName?: string;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Local Configuration Service
|
|
159
|
+
* Manages machine-specific configuration stored in local-only directory
|
|
160
|
+
*/
|
|
161
|
+
export declare class LocalConfigService extends EventEmitter {
|
|
162
|
+
private config;
|
|
163
|
+
private configPath;
|
|
164
|
+
private initialized;
|
|
165
|
+
constructor(options?: LocalConfigServiceConfig);
|
|
166
|
+
/**
|
|
167
|
+
* Initialize the local config service
|
|
168
|
+
*/
|
|
169
|
+
initialize(): Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* Get the full local configuration
|
|
172
|
+
*/
|
|
173
|
+
getConfig(): LocalConfig;
|
|
174
|
+
/**
|
|
175
|
+
* Get provider-specific configuration
|
|
176
|
+
*/
|
|
177
|
+
getProviderConfig(provider: 'claude-code' | 'codex'): {
|
|
178
|
+
binPath?: string | undefined;
|
|
179
|
+
detectedPath?: string | undefined;
|
|
180
|
+
lastDetected?: string | undefined;
|
|
181
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
182
|
+
} | {
|
|
183
|
+
binPath?: string | undefined;
|
|
184
|
+
detectedPath?: string | undefined;
|
|
185
|
+
lastDetected?: string | undefined;
|
|
186
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
187
|
+
} | undefined;
|
|
188
|
+
/**
|
|
189
|
+
* Set provider binary path and detection info
|
|
190
|
+
*/
|
|
191
|
+
setProviderPath(provider: 'claude-code' | 'codex', binPath: string, detectionMethod?: 'explicit' | 'PATH' | 'common-location'): Promise<void>;
|
|
192
|
+
updateDetectedProvider(provider: 'claude-code' | 'codex', detectedPath: string, detectionMethod?: 'PATH' | 'common-location'): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* Clear provider configuration
|
|
195
|
+
*/
|
|
196
|
+
clearProviderPath(provider: 'claude-code' | 'codex'): Promise<void>;
|
|
197
|
+
/**
|
|
198
|
+
* Cache provider validation results
|
|
199
|
+
*/
|
|
200
|
+
cacheValidationResult(provider: string, result: {
|
|
201
|
+
available: boolean;
|
|
202
|
+
error?: string;
|
|
203
|
+
version?: string;
|
|
204
|
+
}): Promise<void>;
|
|
205
|
+
/**
|
|
206
|
+
* Get cached validation result
|
|
207
|
+
*/
|
|
208
|
+
getCachedValidationResult(provider: string): {
|
|
209
|
+
available: boolean;
|
|
210
|
+
error?: string;
|
|
211
|
+
version?: string;
|
|
212
|
+
checkedAt: string;
|
|
213
|
+
} | undefined;
|
|
214
|
+
/**
|
|
215
|
+
* Check if cached validation is still fresh (within last 5 minutes)
|
|
216
|
+
*/
|
|
217
|
+
isCachedValidationFresh(provider: string): boolean;
|
|
218
|
+
/**
|
|
219
|
+
* Clear all cached validation results
|
|
220
|
+
*/
|
|
221
|
+
clearValidationCache(): Promise<void>;
|
|
222
|
+
/**
|
|
223
|
+
* Get configuration file information
|
|
224
|
+
*/
|
|
225
|
+
getConfigInfo(): Promise<{
|
|
226
|
+
path: string;
|
|
227
|
+
exists: boolean;
|
|
228
|
+
size?: number;
|
|
229
|
+
}>;
|
|
230
|
+
/**
|
|
231
|
+
* Export configuration for debugging/backup
|
|
232
|
+
*/
|
|
233
|
+
exportConfig(): Promise<string>;
|
|
234
|
+
/**
|
|
235
|
+
* Import configuration from JSON string
|
|
236
|
+
*/
|
|
237
|
+
importConfig(configJson: string): Promise<void>;
|
|
238
|
+
private ensureConfigDirectory;
|
|
239
|
+
private loadConfig;
|
|
240
|
+
private saveConfig;
|
|
241
|
+
private fileExists;
|
|
242
|
+
private mergeWithDefaults;
|
|
243
|
+
}
|
|
244
|
+
export declare function getLocalConfigService(config?: LocalConfigServiceConfig): LocalConfigService;
|
|
245
|
+
export {};
|