vibeman 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.js +43 -0
- package/dist/index.js +227 -104
- package/dist/ui/assets/index-C_kQPI1m.js +9 -0
- package/dist/ui/index.html +12 -0
- package/package.json +13 -46
- package/README.md +0 -12
- package/dist/runtime/api/.tsbuildinfo +0 -1
- package/dist/runtime/api/agent/agent-service.d.ts +0 -229
- package/dist/runtime/api/agent/agent-service.js +0 -963
- package/dist/runtime/api/agent/ai-providers/amp-cli-provider.d.ts +0 -38
- package/dist/runtime/api/agent/ai-providers/amp-cli-provider.js +0 -268
- package/dist/runtime/api/agent/ai-providers/claude-code-adapter.d.ts +0 -61
- package/dist/runtime/api/agent/ai-providers/claude-code-adapter.js +0 -362
- package/dist/runtime/api/agent/ai-providers/codex-cli-provider.d.ts +0 -36
- package/dist/runtime/api/agent/ai-providers/codex-cli-provider.js +0 -375
- package/dist/runtime/api/agent/ai-providers/gemini-cli-provider.d.ts +0 -24
- package/dist/runtime/api/agent/ai-providers/gemini-cli-provider.js +0 -291
- package/dist/runtime/api/agent/ai-providers/index.d.ts +0 -9
- package/dist/runtime/api/agent/ai-providers/index.js +0 -9
- package/dist/runtime/api/agent/ai-providers/types.d.ts +0 -185
- package/dist/runtime/api/agent/ai-providers/types.js +0 -5
- package/dist/runtime/api/agent/amp-cli-provider.test.d.ts +0 -1
- package/dist/runtime/api/agent/amp-cli-provider.test.js +0 -99
- package/dist/runtime/api/agent/codex-cli-provider.test.d.ts +0 -1
- package/dist/runtime/api/agent/codex-cli-provider.test.js +0 -172
- package/dist/runtime/api/agent/core-agent-service.d.ts +0 -119
- package/dist/runtime/api/agent/core-agent-service.js +0 -267
- package/dist/runtime/api/agent/parsers.d.ts +0 -16
- package/dist/runtime/api/agent/parsers.js +0 -308
- package/dist/runtime/api/agent/prompt-service.d.ts +0 -30
- package/dist/runtime/api/agent/prompt-service.js +0 -452
- package/dist/runtime/api/agent/prompt-service.test.d.ts +0 -1
- package/dist/runtime/api/agent/prompt-service.test.js +0 -265
- package/dist/runtime/api/agent/routing-policy.d.ts +0 -171
- package/dist/runtime/api/agent/routing-policy.js +0 -196
- package/dist/runtime/api/agent/routing-policy.test.d.ts +0 -1
- package/dist/runtime/api/agent/routing-policy.test.js +0 -63
- package/dist/runtime/api/api/router-helpers.d.ts +0 -32
- package/dist/runtime/api/api/router-helpers.js +0 -31
- package/dist/runtime/api/api/routers/ai.d.ts +0 -200
- package/dist/runtime/api/api/routers/ai.js +0 -396
- package/dist/runtime/api/api/routers/executions.d.ts +0 -93
- package/dist/runtime/api/api/routers/executions.js +0 -94
- package/dist/runtime/api/api/routers/git.d.ts +0 -45
- package/dist/runtime/api/api/routers/git.js +0 -35
- package/dist/runtime/api/api/routers/provider-config.d.ts +0 -199
- package/dist/runtime/api/api/routers/provider-config.js +0 -252
- package/dist/runtime/api/api/routers/settings.d.ts +0 -158
- package/dist/runtime/api/api/routers/settings.js +0 -129
- package/dist/runtime/api/api/routers/tasks.d.ts +0 -141
- package/dist/runtime/api/api/routers/tasks.js +0 -238
- package/dist/runtime/api/api/routers/workflows.d.ts +0 -275
- package/dist/runtime/api/api/routers/workflows.js +0 -311
- package/dist/runtime/api/api/routers/worktrees.d.ts +0 -101
- package/dist/runtime/api/api/routers/worktrees.js +0 -80
- package/dist/runtime/api/api/trpc.d.ts +0 -118
- package/dist/runtime/api/api/trpc.js +0 -34
- package/dist/runtime/api/index.d.ts +0 -9
- package/dist/runtime/api/index.js +0 -117
- package/dist/runtime/api/lib/id-generator.d.ts +0 -70
- package/dist/runtime/api/lib/id-generator.js +0 -123
- package/dist/runtime/api/lib/local-config.d.ts +0 -335
- package/dist/runtime/api/lib/local-config.js +0 -304
- package/dist/runtime/api/lib/logger.d.ts +0 -11
- package/dist/runtime/api/lib/logger.js +0 -188
- package/dist/runtime/api/lib/provider-detection.d.ts +0 -61
- package/dist/runtime/api/lib/provider-detection.js +0 -326
- package/dist/runtime/api/lib/server/agent-service-singleton.d.ts +0 -6
- package/dist/runtime/api/lib/server/agent-service-singleton.js +0 -27
- package/dist/runtime/api/lib/server/bootstrap.d.ts +0 -38
- package/dist/runtime/api/lib/server/bootstrap.js +0 -197
- package/dist/runtime/api/lib/server/git-service-singleton.d.ts +0 -6
- package/dist/runtime/api/lib/server/git-service-singleton.js +0 -47
- package/dist/runtime/api/lib/server/project-root.d.ts +0 -2
- package/dist/runtime/api/lib/server/project-root.js +0 -61
- package/dist/runtime/api/lib/server/task-service-singleton.d.ts +0 -7
- package/dist/runtime/api/lib/server/task-service-singleton.js +0 -58
- package/dist/runtime/api/lib/server/vibeman-info.d.ts +0 -5
- package/dist/runtime/api/lib/server/vibeman-info.js +0 -85
- package/dist/runtime/api/lib/server/vibing-orchestrator-singleton.d.ts +0 -7
- package/dist/runtime/api/lib/server/vibing-orchestrator-singleton.js +0 -57
- package/dist/runtime/api/lib/trpc/server.d.ts +0 -965
- package/dist/runtime/api/lib/trpc/server.js +0 -11
- package/dist/runtime/api/lib/trpc/ws-server.d.ts +0 -8
- package/dist/runtime/api/lib/trpc/ws-server.js +0 -33
- package/dist/runtime/api/persistence/database-service.d.ts +0 -14
- package/dist/runtime/api/persistence/database-service.js +0 -74
- package/dist/runtime/api/persistence/execution-log-persistence.d.ts +0 -90
- package/dist/runtime/api/persistence/execution-log-persistence.js +0 -426
- package/dist/runtime/api/persistence/execution-log-persistence.test.d.ts +0 -1
- package/dist/runtime/api/persistence/execution-log-persistence.test.js +0 -170
- package/dist/runtime/api/router.d.ts +0 -968
- package/dist/runtime/api/router.js +0 -34
- package/dist/runtime/api/settings-service.d.ts +0 -110
- package/dist/runtime/api/settings-service.js +0 -678
- package/dist/runtime/api/tasks/file-watcher.d.ts +0 -23
- package/dist/runtime/api/tasks/file-watcher.js +0 -88
- package/dist/runtime/api/tasks/task-file-parser.d.ts +0 -14
- package/dist/runtime/api/tasks/task-file-parser.js +0 -180
- package/dist/runtime/api/tasks/task-service.d.ts +0 -36
- package/dist/runtime/api/tasks/task-service.js +0 -173
- package/dist/runtime/api/tasks/task-updater.d.ts +0 -62
- package/dist/runtime/api/tasks/task-updater.js +0 -260
- package/dist/runtime/api/tasks/task-updater.test.d.ts +0 -1
- package/dist/runtime/api/tasks/task-updater.test.js +0 -303
- package/dist/runtime/api/types/index.d.ts +0 -186
- package/dist/runtime/api/types/index.js +0 -1
- package/dist/runtime/api/types/settings.d.ts +0 -105
- package/dist/runtime/api/types/settings.js +0 -2
- package/dist/runtime/api/types.d.ts +0 -2
- package/dist/runtime/api/types.js +0 -1
- package/dist/runtime/api/utils/env.d.ts +0 -6
- package/dist/runtime/api/utils/env.js +0 -12
- package/dist/runtime/api/utils/stripNextEnv.d.ts +0 -7
- package/dist/runtime/api/utils/stripNextEnv.js +0 -22
- package/dist/runtime/api/utils/title-slug.d.ts +0 -6
- package/dist/runtime/api/utils/title-slug.js +0 -77
- package/dist/runtime/api/utils/url.d.ts +0 -2
- package/dist/runtime/api/utils/url.js +0 -19
- package/dist/runtime/api/vcs/git-history-service.d.ts +0 -57
- package/dist/runtime/api/vcs/git-history-service.js +0 -228
- package/dist/runtime/api/vcs/git-service.d.ts +0 -136
- package/dist/runtime/api/vcs/git-service.js +0 -307
- package/dist/runtime/api/vcs/worktree-service.d.ts +0 -93
- package/dist/runtime/api/vcs/worktree-service.js +0 -518
- package/dist/runtime/api/vcs/worktree-service.test.d.ts +0 -1
- package/dist/runtime/api/vcs/worktree-service.test.js +0 -20
- package/dist/runtime/api/workflows/quality-pipeline.d.ts +0 -58
- package/dist/runtime/api/workflows/quality-pipeline.js +0 -401
- package/dist/runtime/api/workflows/vibing-orchestrator.d.ts +0 -406
- package/dist/runtime/api/workflows/vibing-orchestrator.js +0 -2462
- package/dist/runtime/api/workflows/workflow-effects.d.ts +0 -45
- package/dist/runtime/api/workflows/workflow-effects.js +0 -49
- package/dist/runtime/api/workflows/workflow-reconciler.d.ts +0 -65
- package/dist/runtime/api/workflows/workflow-reconciler.js +0 -226
- package/dist/runtime/api/workflows/workflow-reducer.d.ts +0 -26
- package/dist/runtime/api/workflows/workflow-reducer.js +0 -288
- package/dist/runtime/api/workflows/workflow-reducer.test.d.ts +0 -1
- package/dist/runtime/api/workflows/workflow-reducer.test.js +0 -247
- package/dist/runtime/api/workflows/workflow-schema.d.ts +0 -546
- package/dist/runtime/api/workflows/workflow-schema.js +0 -256
- package/dist/runtime/web/.next/BUILD_ID +0 -1
- package/dist/runtime/web/.next/app-build-manifest.json +0 -66
- package/dist/runtime/web/.next/app-path-routes-manifest.json +0 -8
- package/dist/runtime/web/.next/build-manifest.json +0 -33
- package/dist/runtime/web/.next/package.json +0 -1
- package/dist/runtime/web/.next/prerender-manifest.json +0 -61
- package/dist/runtime/web/.next/react-loadable-manifest.json +0 -8
- package/dist/runtime/web/.next/required-server-files.json +0 -334
- package/dist/runtime/web/.next/routes-manifest.json +0 -70
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js +0 -1
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js.nft.json +0 -1
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route_client-reference-manifest.js +0 -1
- package/dist/runtime/web/.next/server/app/_not-found/page.js +0 -2
- package/dist/runtime/web/.next/server/app/_not-found/page.js.nft.json +0 -1
- package/dist/runtime/web/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
- package/dist/runtime/web/.next/server/app/_not-found.html +0 -7
- package/dist/runtime/web/.next/server/app/_not-found.meta +0 -8
- package/dist/runtime/web/.next/server/app/_not-found.rsc +0 -22
- package/dist/runtime/web/.next/server/app/api/health/route.js +0 -1
- package/dist/runtime/web/.next/server/app/api/health/route.js.nft.json +0 -1
- package/dist/runtime/web/.next/server/app/api/health/route_client-reference-manifest.js +0 -1
- package/dist/runtime/web/.next/server/app/api/images/[...path]/route.js +0 -1
- package/dist/runtime/web/.next/server/app/api/images/[...path]/route.js.nft.json +0 -1
- package/dist/runtime/web/.next/server/app/api/images/[...path]/route_client-reference-manifest.js +0 -1
- package/dist/runtime/web/.next/server/app/api/upload/route.js +0 -1
- package/dist/runtime/web/.next/server/app/api/upload/route.js.nft.json +0 -1
- package/dist/runtime/web/.next/server/app/api/upload/route_client-reference-manifest.js +0 -1
- package/dist/runtime/web/.next/server/app/index.html +0 -7
- package/dist/runtime/web/.next/server/app/index.meta +0 -7
- package/dist/runtime/web/.next/server/app/index.rsc +0 -27
- package/dist/runtime/web/.next/server/app/page.js +0 -112
- package/dist/runtime/web/.next/server/app/page.js.nft.json +0 -1
- package/dist/runtime/web/.next/server/app/page_client-reference-manifest.js +0 -1
- package/dist/runtime/web/.next/server/app-paths-manifest.json +0 -8
- package/dist/runtime/web/.next/server/chunks/210.js +0 -1
- package/dist/runtime/web/.next/server/chunks/291.js +0 -18
- package/dist/runtime/web/.next/server/chunks/552.js +0 -22
- package/dist/runtime/web/.next/server/chunks/780.js +0 -1
- package/dist/runtime/web/.next/server/chunks/905.js +0 -6
- package/dist/runtime/web/.next/server/chunks/98.js +0 -1
- package/dist/runtime/web/.next/server/functions-config-manifest.json +0 -4
- package/dist/runtime/web/.next/server/middleware-build-manifest.js +0 -1
- package/dist/runtime/web/.next/server/middleware-manifest.json +0 -6
- package/dist/runtime/web/.next/server/middleware-react-loadable-manifest.js +0 -1
- package/dist/runtime/web/.next/server/next-font-manifest.js +0 -1
- package/dist/runtime/web/.next/server/next-font-manifest.json +0 -1
- package/dist/runtime/web/.next/server/pages/404.html +0 -7
- package/dist/runtime/web/.next/server/pages/500.html +0 -1
- package/dist/runtime/web/.next/server/pages/_app.js +0 -1
- package/dist/runtime/web/.next/server/pages/_app.js.nft.json +0 -1
- package/dist/runtime/web/.next/server/pages/_document.js +0 -1
- package/dist/runtime/web/.next/server/pages/_document.js.nft.json +0 -1
- package/dist/runtime/web/.next/server/pages/_error.js +0 -19
- package/dist/runtime/web/.next/server/pages/_error.js.nft.json +0 -1
- package/dist/runtime/web/.next/server/pages-manifest.json +0 -6
- package/dist/runtime/web/.next/server/server-reference-manifest.js +0 -1
- package/dist/runtime/web/.next/server/server-reference-manifest.json +0 -1
- package/dist/runtime/web/.next/server/webpack-runtime.js +0 -1
- package/dist/runtime/web/.next/static/LJFZk_8tvKFN_Ee4HqUuM/_buildManifest.js +0 -1
- package/dist/runtime/web/.next/static/LJFZk_8tvKFN_Ee4HqUuM/_ssgManifest.js +0 -1
- package/dist/runtime/web/.next/static/chunks/05c91ade-7d09b2b280adffd1.js +0 -1
- package/dist/runtime/web/.next/static/chunks/201-51bef3fa8c832e2e.js +0 -1
- package/dist/runtime/web/.next/static/chunks/524-89747ed9b0294f8a.js +0 -1
- package/dist/runtime/web/.next/static/chunks/554-8bec6e9cca6acc67.js +0 -1
- package/dist/runtime/web/.next/static/chunks/764.86e9503a69d45a85.js +0 -1
- package/dist/runtime/web/.next/static/chunks/7ab4dc20-239138e0ae7af24a.js +0 -1
- package/dist/runtime/web/.next/static/chunks/905-342391e3d3a3678f.js +0 -20
- package/dist/runtime/web/.next/static/chunks/a8a5ce16-4edea7df2d9b544a.js +0 -79
- package/dist/runtime/web/.next/static/chunks/ad74d572-4c1b162e2c15acaa.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/.vibeman/assets/images/[...path]/route-7b752a8641f96c1f.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/_not-found/page-34e66b251c2b5044.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/health/route-7b752a8641f96c1f.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-7b752a8641f96c1f.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/upload/route-7b752a8641f96c1f.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/layout-df9ac93cb02b2385.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/page-6610743f7de5f92a.js +0 -1
- package/dist/runtime/web/.next/static/chunks/c25e0690-e9b798b8de667da1.js +0 -1
- package/dist/runtime/web/.next/static/chunks/framework-57157ec4d37f64aa.js +0 -1
- package/dist/runtime/web/.next/static/chunks/main-app-156cc0c60371bd78.js +0 -1
- package/dist/runtime/web/.next/static/chunks/main-df25d367c47b1fec.js +0 -1
- package/dist/runtime/web/.next/static/chunks/pages/_app-9f629a5e1131d19f.js +0 -1
- package/dist/runtime/web/.next/static/chunks/pages/_error-9238238274c7efcd.js +0 -1
- package/dist/runtime/web/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- package/dist/runtime/web/.next/static/chunks/webpack-cd50e39b423d1808.js +0 -1
- package/dist/runtime/web/.next/static/css/2728291c68f99cb1.css +0 -3
- package/dist/runtime/web/.next/static/css/4fbf378a264bd4ea.css +0 -1
- package/dist/runtime/web/.next/static/css/521bd69cc298cd1a.css +0 -1
- package/dist/runtime/web/.next/static/css/537e22821e101b87.css +0 -1
- package/dist/runtime/web/.next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
- package/dist/runtime/web/.next/static/media/21350d82a1f187e9-s.woff2 +0 -0
- package/dist/runtime/web/.next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
- package/dist/runtime/web/.next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
- package/dist/runtime/web/.next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
- package/dist/runtime/web/.next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
- package/dist/runtime/web/.next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
- package/dist/runtime/web/package.json +0 -65
- package/dist/runtime/web/server.js +0 -44
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* tRPC routes for settings management
|
|
3
|
-
*/
|
|
4
|
-
import path from 'path';
|
|
5
|
-
import { z } from 'zod';
|
|
6
|
-
import { publicProcedure } from '../trpc.js';
|
|
7
|
-
import { getSettingsService } from '../../settings-service.js';
|
|
8
|
-
import { QualityPipeline } from '../../workflows/quality-pipeline.js';
|
|
9
|
-
import { getProjectRoot } from '../../lib/server/project-root.js';
|
|
10
|
-
import { getVibemanInfo } from '../../lib/server/vibeman-info.js';
|
|
11
|
-
// Input validation schemas
|
|
12
|
-
const UpdateSettingsInputSchema = z.array(z.object({
|
|
13
|
-
path: z.array(z.string().min(1)),
|
|
14
|
-
value: z.unknown(),
|
|
15
|
-
}));
|
|
16
|
-
export function buildSettingsRoutes() {
|
|
17
|
-
const settingsService = getSettingsService();
|
|
18
|
-
// Initialize settings service on first router build
|
|
19
|
-
settingsService.initialize().catch(console.error);
|
|
20
|
-
return {
|
|
21
|
-
/**
|
|
22
|
-
* Get current project information
|
|
23
|
-
*/
|
|
24
|
-
getProjectInfo: publicProcedure.query(async () => {
|
|
25
|
-
const root = getProjectRoot();
|
|
26
|
-
const name = path.basename(root);
|
|
27
|
-
return { name, path: root };
|
|
28
|
-
}),
|
|
29
|
-
/**
|
|
30
|
-
* Get Vibeman application information
|
|
31
|
-
*/
|
|
32
|
-
getVibemanInfo: publicProcedure.query(async () => {
|
|
33
|
-
return getVibemanInfo();
|
|
34
|
-
}),
|
|
35
|
-
/**
|
|
36
|
-
* Get current settings
|
|
37
|
-
*/
|
|
38
|
-
getSettings: publicProcedure.query(async () => {
|
|
39
|
-
await settingsService.initialize();
|
|
40
|
-
return settingsService.getSettings();
|
|
41
|
-
}),
|
|
42
|
-
/**
|
|
43
|
-
* Detect quality checks using AI and persist them into settings
|
|
44
|
-
*/
|
|
45
|
-
detectQualityChecks: publicProcedure.mutation(async () => {
|
|
46
|
-
// TODO: Integrate this into the onboarding flow to auto-bootstrap
|
|
47
|
-
// quality checks on first project setup.
|
|
48
|
-
await settingsService.initialize();
|
|
49
|
-
const pipeline = new QualityPipeline();
|
|
50
|
-
const workingDirectory = getProjectRoot();
|
|
51
|
-
const checks = await pipeline.detectAndPersistChecks(workingDirectory);
|
|
52
|
-
return { checks, workingDirectory };
|
|
53
|
-
}),
|
|
54
|
-
/**
|
|
55
|
-
* Get a specific setting by path
|
|
56
|
-
*/
|
|
57
|
-
getSetting: publicProcedure
|
|
58
|
-
.input(z.object({ path: z.array(z.string().min(1)) }))
|
|
59
|
-
.query(async ({ input }) => {
|
|
60
|
-
await settingsService.initialize();
|
|
61
|
-
return settingsService.getSetting(input.path);
|
|
62
|
-
}),
|
|
63
|
-
/**
|
|
64
|
-
* Update multiple settings
|
|
65
|
-
*/
|
|
66
|
-
updateSettings: publicProcedure.input(UpdateSettingsInputSchema).mutation(async ({ input }) => {
|
|
67
|
-
await settingsService.initialize();
|
|
68
|
-
const updates = input.map((item) => ({
|
|
69
|
-
path: item.path,
|
|
70
|
-
value: item.value,
|
|
71
|
-
}));
|
|
72
|
-
return await settingsService.updateSettings(updates);
|
|
73
|
-
}),
|
|
74
|
-
/**
|
|
75
|
-
* Reset settings to defaults
|
|
76
|
-
*/
|
|
77
|
-
resetToDefaults: publicProcedure.mutation(async () => {
|
|
78
|
-
await settingsService.initialize();
|
|
79
|
-
await settingsService.resetToDefaults();
|
|
80
|
-
return settingsService.getSettings();
|
|
81
|
-
}),
|
|
82
|
-
/**
|
|
83
|
-
* Validate settings schema
|
|
84
|
-
*/
|
|
85
|
-
validateSettings: publicProcedure.input(z.record(z.unknown())).query(async ({ input }) => {
|
|
86
|
-
await settingsService.initialize();
|
|
87
|
-
return settingsService.validateSettings(input);
|
|
88
|
-
}),
|
|
89
|
-
/**
|
|
90
|
-
* Get settings file information
|
|
91
|
-
*/
|
|
92
|
-
getSettingsInfo: publicProcedure.query(async () => {
|
|
93
|
-
await settingsService.initialize();
|
|
94
|
-
return settingsService.getSettingsInfo();
|
|
95
|
-
}),
|
|
96
|
-
/**
|
|
97
|
-
* Get available editor presets
|
|
98
|
-
*/
|
|
99
|
-
getEditorPresets: publicProcedure.query(async () => {
|
|
100
|
-
await settingsService.initialize();
|
|
101
|
-
return settingsService.getEditorPresets();
|
|
102
|
-
}),
|
|
103
|
-
/**
|
|
104
|
-
* Get available terminal presets
|
|
105
|
-
*/
|
|
106
|
-
getTerminalPresets: publicProcedure.query(async () => {
|
|
107
|
-
await settingsService.initialize();
|
|
108
|
-
return settingsService.getTerminalPresets();
|
|
109
|
-
}),
|
|
110
|
-
/**
|
|
111
|
-
* Apply editor preset configuration
|
|
112
|
-
*/
|
|
113
|
-
applyEditorPreset: publicProcedure
|
|
114
|
-
.input(z.object({ presetName: z.string().min(1) }))
|
|
115
|
-
.mutation(async ({ input }) => {
|
|
116
|
-
await settingsService.initialize();
|
|
117
|
-
return await settingsService.applyEditorPreset(input.presetName);
|
|
118
|
-
}),
|
|
119
|
-
/**
|
|
120
|
-
* Apply terminal preset configuration
|
|
121
|
-
*/
|
|
122
|
-
applyTerminalPreset: publicProcedure
|
|
123
|
-
.input(z.object({ presetName: z.string().min(1) }))
|
|
124
|
-
.mutation(async ({ input }) => {
|
|
125
|
-
await settingsService.initialize();
|
|
126
|
-
return await settingsService.applyTerminalPreset(input.presetName);
|
|
127
|
-
}),
|
|
128
|
-
};
|
|
129
|
-
}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import type { TaskService } from '../../tasks/task-service.js';
|
|
2
|
-
import type { GitService } from '../../vcs/git-service.js';
|
|
3
|
-
export declare function buildTaskRoutes(taskService: TaskService, gitService?: GitService): {
|
|
4
|
-
readonly listTasks: import("@trpc/server").TRPCQueryProcedure<{
|
|
5
|
-
input: {
|
|
6
|
-
type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
|
|
7
|
-
status?: "backlog" | "in-progress" | "review" | "done" | undefined;
|
|
8
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
9
|
-
search?: string | undefined;
|
|
10
|
-
tags?: string[] | undefined;
|
|
11
|
-
includeDeleted?: boolean | undefined;
|
|
12
|
-
onlyDeleted?: boolean | undefined;
|
|
13
|
-
} | undefined;
|
|
14
|
-
output: import("../../types/index.js").Task[];
|
|
15
|
-
meta: object;
|
|
16
|
-
}>;
|
|
17
|
-
readonly getTask: import("@trpc/server").TRPCQueryProcedure<{
|
|
18
|
-
input: {
|
|
19
|
-
id: string;
|
|
20
|
-
};
|
|
21
|
-
output: import("../../types/index.js").Task;
|
|
22
|
-
meta: object;
|
|
23
|
-
}>;
|
|
24
|
-
readonly createTask: import("@trpc/server").TRPCMutationProcedure<{
|
|
25
|
-
input: {
|
|
26
|
-
type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
|
|
27
|
-
title: string;
|
|
28
|
-
content: string;
|
|
29
|
-
status?: "backlog" | "in-progress" | "review" | "done" | undefined;
|
|
30
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
31
|
-
id?: string | undefined;
|
|
32
|
-
tags?: string[] | undefined;
|
|
33
|
-
due_date?: string | undefined;
|
|
34
|
-
assignee?: string[] | undefined;
|
|
35
|
-
comments?: string[] | undefined;
|
|
36
|
-
};
|
|
37
|
-
output: import("../../types/index.js").Task;
|
|
38
|
-
meta: object;
|
|
39
|
-
}>;
|
|
40
|
-
readonly updateTask: import("@trpc/server").TRPCMutationProcedure<{
|
|
41
|
-
input: {
|
|
42
|
-
id: string;
|
|
43
|
-
type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
|
|
44
|
-
status?: "backlog" | "in-progress" | "review" | "done" | undefined;
|
|
45
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
46
|
-
title?: string | undefined;
|
|
47
|
-
tags?: string[] | undefined;
|
|
48
|
-
due_date?: string | undefined;
|
|
49
|
-
assignee?: string[] | undefined;
|
|
50
|
-
comments?: string[] | undefined;
|
|
51
|
-
content?: string | undefined;
|
|
52
|
-
deleted_at?: string | undefined;
|
|
53
|
-
};
|
|
54
|
-
output: import("../../types/index.js").Task;
|
|
55
|
-
meta: object;
|
|
56
|
-
}>;
|
|
57
|
-
readonly deleteTask: import("@trpc/server").TRPCMutationProcedure<{
|
|
58
|
-
input: {
|
|
59
|
-
id: string;
|
|
60
|
-
};
|
|
61
|
-
output: {
|
|
62
|
-
readonly success: true;
|
|
63
|
-
};
|
|
64
|
-
meta: object;
|
|
65
|
-
}>;
|
|
66
|
-
readonly moveTask: import("@trpc/server").TRPCMutationProcedure<{
|
|
67
|
-
input: {
|
|
68
|
-
status: "backlog" | "in-progress" | "review" | "done";
|
|
69
|
-
id: string;
|
|
70
|
-
};
|
|
71
|
-
output: import("../../types/index.js").Task;
|
|
72
|
-
meta: object;
|
|
73
|
-
}>;
|
|
74
|
-
readonly getTaskStats: import("@trpc/server").TRPCQueryProcedure<{
|
|
75
|
-
input: void;
|
|
76
|
-
output: any;
|
|
77
|
-
meta: object;
|
|
78
|
-
}>;
|
|
79
|
-
readonly searchTasks: import("@trpc/server").TRPCQueryProcedure<{
|
|
80
|
-
input: {
|
|
81
|
-
query: string;
|
|
82
|
-
includeDeleted?: boolean | undefined;
|
|
83
|
-
onlyDeleted?: boolean | undefined;
|
|
84
|
-
};
|
|
85
|
-
output: import("../../types/index.js").Task[];
|
|
86
|
-
meta: object;
|
|
87
|
-
}>;
|
|
88
|
-
readonly healthCheck: import("@trpc/server").TRPCQueryProcedure<{
|
|
89
|
-
input: void;
|
|
90
|
-
output: {
|
|
91
|
-
status: string;
|
|
92
|
-
timestamp: string;
|
|
93
|
-
tasksLoaded: number;
|
|
94
|
-
};
|
|
95
|
-
meta: object;
|
|
96
|
-
}>;
|
|
97
|
-
readonly onTaskUpdate: import("@trpc/server").TRPCSubscriptionProcedure<{
|
|
98
|
-
input: {
|
|
99
|
-
taskId?: string | undefined;
|
|
100
|
-
} | undefined;
|
|
101
|
-
output: AsyncIterable<{
|
|
102
|
-
type: "update" | "delete";
|
|
103
|
-
taskId: string;
|
|
104
|
-
task?: any;
|
|
105
|
-
}, void, any>;
|
|
106
|
-
meta: object;
|
|
107
|
-
}>;
|
|
108
|
-
readonly getTaskHistory: import("@trpc/server").TRPCQueryProcedure<{
|
|
109
|
-
input: {
|
|
110
|
-
taskId: string;
|
|
111
|
-
limit?: number | undefined;
|
|
112
|
-
};
|
|
113
|
-
output: {
|
|
114
|
-
available: boolean;
|
|
115
|
-
history: import("../../vcs/git-history-service.js").TaskHistoryEntry[];
|
|
116
|
-
error?: undefined;
|
|
117
|
-
} | {
|
|
118
|
-
available: boolean;
|
|
119
|
-
history: never[];
|
|
120
|
-
error: string;
|
|
121
|
-
};
|
|
122
|
-
meta: object;
|
|
123
|
-
}>;
|
|
124
|
-
readonly getTaskVersion: import("@trpc/server").TRPCQueryProcedure<{
|
|
125
|
-
input: {
|
|
126
|
-
taskId: string;
|
|
127
|
-
commitHash: string;
|
|
128
|
-
};
|
|
129
|
-
output: import("../../vcs/git-history-service.js").TaskFileContent;
|
|
130
|
-
meta: object;
|
|
131
|
-
}>;
|
|
132
|
-
readonly getTaskDiff: import("@trpc/server").TRPCQueryProcedure<{
|
|
133
|
-
input: {
|
|
134
|
-
taskId: string;
|
|
135
|
-
fromHash: string;
|
|
136
|
-
toHash: string;
|
|
137
|
-
};
|
|
138
|
-
output: import("../../vcs/git-history-service.js").TaskDiffEntry;
|
|
139
|
-
meta: object;
|
|
140
|
-
}>;
|
|
141
|
-
};
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { on, EventEmitter } from 'events';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { publicProcedure, TaskCreateSchema, TaskUpdateSchema, TaskFilterSchema } from '../trpc.js';
|
|
5
|
-
import { GitHistoryService } from '../../vcs/git-history-service.js';
|
|
6
|
-
import { getVibeDir } from '../../lib/server/project-root.js';
|
|
7
|
-
export function buildTaskRoutes(taskService, gitService) {
|
|
8
|
-
const gitHistoryService = new GitHistoryService();
|
|
9
|
-
return {
|
|
10
|
-
// Get all tasks with optional filtering
|
|
11
|
-
listTasks: publicProcedure.input(TaskFilterSchema.optional()).query(async ({ input }) => {
|
|
12
|
-
await taskService.ensureInitialized();
|
|
13
|
-
let tasks = taskService.getAllTasks();
|
|
14
|
-
if (input) {
|
|
15
|
-
if (input.status)
|
|
16
|
-
tasks = tasks.filter((task) => task.status === input.status);
|
|
17
|
-
if (input.type)
|
|
18
|
-
tasks = tasks.filter((task) => task.type === input.type);
|
|
19
|
-
if (input.priority)
|
|
20
|
-
tasks = tasks.filter((task) => task.priority === input.priority);
|
|
21
|
-
if (input.tags && input.tags.length > 0) {
|
|
22
|
-
tasks = tasks.filter((task) => input.tags.some((tag) => task.tags.includes(tag)));
|
|
23
|
-
}
|
|
24
|
-
if (input.search)
|
|
25
|
-
tasks = taskService.searchTasks(input.search);
|
|
26
|
-
}
|
|
27
|
-
if (input?.onlyDeleted) {
|
|
28
|
-
tasks = tasks.filter((t) => !!t.deleted_at);
|
|
29
|
-
}
|
|
30
|
-
else if (!input?.includeDeleted) {
|
|
31
|
-
tasks = tasks.filter((t) => !t.deleted_at);
|
|
32
|
-
}
|
|
33
|
-
return tasks;
|
|
34
|
-
}),
|
|
35
|
-
// Get single task by ID
|
|
36
|
-
getTask: publicProcedure.input(z.object({ id: z.string() })).query(async ({ input }) => {
|
|
37
|
-
const task = taskService.getTask(input.id);
|
|
38
|
-
if (!task)
|
|
39
|
-
throw new Error(`Task ${input.id} not found`);
|
|
40
|
-
return task;
|
|
41
|
-
}),
|
|
42
|
-
// Create new task
|
|
43
|
-
createTask: publicProcedure.input(TaskCreateSchema).mutation(async ({ input }) => {
|
|
44
|
-
const newTask = await taskService.createTask(input);
|
|
45
|
-
try {
|
|
46
|
-
if (gitService) {
|
|
47
|
-
const message = `Create ${newTask.id}: ${newTask.title}`;
|
|
48
|
-
const taskFilePath = path.relative(process.cwd(), path.join(getVibeDir(), 'tasks', `${newTask.id}.md`));
|
|
49
|
-
await gitService.commitChanges(newTask, message, [taskFilePath]);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
// Non-fatal: ignore commit failure
|
|
54
|
-
}
|
|
55
|
-
return newTask;
|
|
56
|
-
}),
|
|
57
|
-
// Update existing task
|
|
58
|
-
updateTask: publicProcedure.input(TaskUpdateSchema).mutation(async ({ input }) => {
|
|
59
|
-
const { id, ...updates } = input;
|
|
60
|
-
return await taskService.updateTask(id, updates);
|
|
61
|
-
}),
|
|
62
|
-
// Delete task (soft delete + optional git commit)
|
|
63
|
-
deleteTask: publicProcedure.input(z.object({ id: z.string() })).mutation(async ({ input }) => {
|
|
64
|
-
await taskService.deleteTask(input.id);
|
|
65
|
-
try {
|
|
66
|
-
if (gitService) {
|
|
67
|
-
const t = taskService.getTask(input.id);
|
|
68
|
-
if (t) {
|
|
69
|
-
const message = `Delete ${t.id}: ${t.title}`;
|
|
70
|
-
const taskFilePath = path.relative(process.cwd(), path.join(getVibeDir(), 'tasks', `${t.id}.md`));
|
|
71
|
-
await gitService.commitChanges(t, message, [taskFilePath]);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
// Non-fatal
|
|
77
|
-
}
|
|
78
|
-
return { success: true };
|
|
79
|
-
}),
|
|
80
|
-
// Move task to different status
|
|
81
|
-
moveTask: publicProcedure
|
|
82
|
-
.input(z.object({ id: z.string(), status: z.enum(['backlog', 'in-progress', 'review', 'done']) }))
|
|
83
|
-
.mutation(async ({ input }) => {
|
|
84
|
-
const tsk = taskService.getTask(input.id);
|
|
85
|
-
if (!tsk)
|
|
86
|
-
throw new Error(`Task ${input.id} not found`);
|
|
87
|
-
if (tsk.deleted_at)
|
|
88
|
-
throw new Error(`Task ${input.id} is deleted`);
|
|
89
|
-
const oldStatus = tsk.status;
|
|
90
|
-
const updated = await taskService.moveTask(input.id, input.status);
|
|
91
|
-
try {
|
|
92
|
-
if (gitService) {
|
|
93
|
-
const message = `chore: Update task ${tsk.id} status from ${oldStatus} to ${input.status}`;
|
|
94
|
-
const taskFilePath = path.relative(process.cwd(), path.join(getVibeDir(), 'tasks', `${tsk.id}.md`));
|
|
95
|
-
await gitService.commitChanges(updated, message, [taskFilePath]);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
// Non-fatal
|
|
100
|
-
}
|
|
101
|
-
return updated;
|
|
102
|
-
}),
|
|
103
|
-
// Get task statistics
|
|
104
|
-
getTaskStats: publicProcedure.query(async () => {
|
|
105
|
-
const tasks = taskService.getAllTasks().filter((t) => !t.deleted_at);
|
|
106
|
-
const stats = {
|
|
107
|
-
total: tasks.length,
|
|
108
|
-
backlog: 0,
|
|
109
|
-
'in-progress': 0,
|
|
110
|
-
review: 0,
|
|
111
|
-
done: 0,
|
|
112
|
-
byType: {},
|
|
113
|
-
byPriority: {},
|
|
114
|
-
};
|
|
115
|
-
for (const task of tasks) {
|
|
116
|
-
stats[task.status]++;
|
|
117
|
-
stats.byType[task.type] = (stats.byType[task.type] || 0) + 1;
|
|
118
|
-
stats.byPriority[task.priority] = (stats.byPriority[task.priority] || 0) + 1;
|
|
119
|
-
}
|
|
120
|
-
return stats;
|
|
121
|
-
}),
|
|
122
|
-
// Search tasks
|
|
123
|
-
searchTasks: publicProcedure
|
|
124
|
-
.input(z.object({
|
|
125
|
-
query: z.string(),
|
|
126
|
-
includeDeleted: z.boolean().optional(),
|
|
127
|
-
onlyDeleted: z.boolean().optional(),
|
|
128
|
-
}))
|
|
129
|
-
.query(async ({ input }) => {
|
|
130
|
-
let results = taskService.searchTasks(input.query);
|
|
131
|
-
if (input.onlyDeleted)
|
|
132
|
-
results = results.filter((t) => !!t.deleted_at);
|
|
133
|
-
else if (!input.includeDeleted)
|
|
134
|
-
results = results.filter((t) => !t.deleted_at);
|
|
135
|
-
return results;
|
|
136
|
-
}),
|
|
137
|
-
// Health check
|
|
138
|
-
healthCheck: publicProcedure.query(async () => {
|
|
139
|
-
return {
|
|
140
|
-
status: 'ok',
|
|
141
|
-
timestamp: new Date().toISOString(),
|
|
142
|
-
tasksLoaded: taskService.getAllTasks().length,
|
|
143
|
-
};
|
|
144
|
-
}),
|
|
145
|
-
// Subscriptions for task updates
|
|
146
|
-
onTaskUpdate: publicProcedure
|
|
147
|
-
.input(z.object({ taskId: z.string().optional() }).optional())
|
|
148
|
-
.subscription(async function* (opts) {
|
|
149
|
-
const input = opts.input;
|
|
150
|
-
const proxy = new EventEmitter();
|
|
151
|
-
const handleTaskUpdated = (task) => {
|
|
152
|
-
if (!input?.taskId || task.id === input.taskId) {
|
|
153
|
-
proxy.emit('data', { type: 'update', taskId: task.id, task });
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
const handleTaskDeleted = (taskId) => {
|
|
157
|
-
if (!input?.taskId || taskId === input.taskId) {
|
|
158
|
-
proxy.emit('data', { type: 'delete', taskId });
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
taskService.on('taskUpdated', handleTaskUpdated);
|
|
162
|
-
taskService.on('taskDeleted', handleTaskDeleted);
|
|
163
|
-
try {
|
|
164
|
-
for await (const [payload] of on(proxy, 'data', { signal: opts.signal })) {
|
|
165
|
-
yield payload;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
finally {
|
|
169
|
-
taskService.off('taskUpdated', handleTaskUpdated);
|
|
170
|
-
taskService.off('taskDeleted', handleTaskDeleted);
|
|
171
|
-
}
|
|
172
|
-
}),
|
|
173
|
-
// Task History procedures
|
|
174
|
-
getTaskHistory: publicProcedure
|
|
175
|
-
.input(z.object({
|
|
176
|
-
taskId: z.string(),
|
|
177
|
-
limit: z.number().min(1).max(100).default(50),
|
|
178
|
-
}))
|
|
179
|
-
.query(async ({ input }) => {
|
|
180
|
-
const { taskId, limit } = input;
|
|
181
|
-
// Check if Git repository is available
|
|
182
|
-
const isGitAvailable = await gitHistoryService.isGitRepositoryAvailable();
|
|
183
|
-
if (!isGitAvailable) {
|
|
184
|
-
return { available: false, history: [] };
|
|
185
|
-
}
|
|
186
|
-
try {
|
|
187
|
-
const history = await gitHistoryService.getTaskHistory(taskId, limit);
|
|
188
|
-
return { available: true, history };
|
|
189
|
-
}
|
|
190
|
-
catch (error) {
|
|
191
|
-
return {
|
|
192
|
-
available: false,
|
|
193
|
-
history: [],
|
|
194
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
}),
|
|
198
|
-
getTaskVersion: publicProcedure
|
|
199
|
-
.input(z.object({
|
|
200
|
-
taskId: z.string(),
|
|
201
|
-
commitHash: z.string(),
|
|
202
|
-
}))
|
|
203
|
-
.query(async ({ input }) => {
|
|
204
|
-
const { taskId, commitHash } = input;
|
|
205
|
-
const isGitAvailable = await gitHistoryService.isGitRepositoryAvailable();
|
|
206
|
-
if (!isGitAvailable) {
|
|
207
|
-
throw new Error('Git repository not available');
|
|
208
|
-
}
|
|
209
|
-
try {
|
|
210
|
-
const version = await gitHistoryService.getTaskVersionContent(taskId, commitHash);
|
|
211
|
-
return version;
|
|
212
|
-
}
|
|
213
|
-
catch (error) {
|
|
214
|
-
throw new Error(`Failed to get task version: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
215
|
-
}
|
|
216
|
-
}),
|
|
217
|
-
getTaskDiff: publicProcedure
|
|
218
|
-
.input(z.object({
|
|
219
|
-
taskId: z.string(),
|
|
220
|
-
fromHash: z.string(),
|
|
221
|
-
toHash: z.string(),
|
|
222
|
-
}))
|
|
223
|
-
.query(async ({ input }) => {
|
|
224
|
-
const { taskId, fromHash, toHash } = input;
|
|
225
|
-
const isGitAvailable = await gitHistoryService.isGitRepositoryAvailable();
|
|
226
|
-
if (!isGitAvailable) {
|
|
227
|
-
throw new Error('Git repository not available');
|
|
228
|
-
}
|
|
229
|
-
try {
|
|
230
|
-
const diff = await gitHistoryService.getTaskDiff(taskId, fromHash, toHash);
|
|
231
|
-
return diff;
|
|
232
|
-
}
|
|
233
|
-
catch (error) {
|
|
234
|
-
throw new Error(`Failed to get task diff: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
235
|
-
}
|
|
236
|
-
}),
|
|
237
|
-
};
|
|
238
|
-
}
|