vibeman 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/README.md +12 -0
  2. package/dist/index.js +114 -0
  3. package/dist/runtime/api/.tsbuildinfo +1 -0
  4. package/dist/runtime/api/agent/agent-service.d.ts +224 -0
  5. package/dist/runtime/api/agent/agent-service.js +895 -0
  6. package/dist/runtime/api/agent/ai-providers/claude-code-adapter.d.ts +61 -0
  7. package/dist/runtime/api/agent/ai-providers/claude-code-adapter.js +362 -0
  8. package/dist/runtime/api/agent/ai-providers/codex-cli-provider.d.ts +34 -0
  9. package/dist/runtime/api/agent/ai-providers/codex-cli-provider.js +315 -0
  10. package/dist/runtime/api/agent/ai-providers/index.d.ts +9 -0
  11. package/dist/runtime/api/agent/ai-providers/index.js +7 -0
  12. package/dist/runtime/api/agent/ai-providers/types.d.ts +182 -0
  13. package/dist/runtime/api/agent/ai-providers/types.js +5 -0
  14. package/dist/runtime/api/agent/codex-cli-provider.test.d.ts +1 -0
  15. package/dist/runtime/api/agent/codex-cli-provider.test.js +125 -0
  16. package/dist/runtime/api/agent/core-agent-service.d.ts +119 -0
  17. package/dist/runtime/api/agent/core-agent-service.js +267 -0
  18. package/dist/runtime/api/agent/parsers.d.ts +16 -0
  19. package/dist/runtime/api/agent/parsers.js +308 -0
  20. package/dist/runtime/api/agent/prompt-service.d.ts +30 -0
  21. package/dist/runtime/api/agent/prompt-service.js +449 -0
  22. package/dist/runtime/api/agent/prompt-service.test.d.ts +1 -0
  23. package/dist/runtime/api/agent/prompt-service.test.js +230 -0
  24. package/dist/runtime/api/agent/routing-policy.d.ts +188 -0
  25. package/dist/runtime/api/agent/routing-policy.js +246 -0
  26. package/dist/runtime/api/api/router-helpers.d.ts +32 -0
  27. package/dist/runtime/api/api/router-helpers.js +31 -0
  28. package/dist/runtime/api/api/routers/ai.d.ts +188 -0
  29. package/dist/runtime/api/api/routers/ai.js +395 -0
  30. package/dist/runtime/api/api/routers/executions.d.ts +98 -0
  31. package/dist/runtime/api/api/routers/executions.js +94 -0
  32. package/dist/runtime/api/api/routers/git.d.ts +45 -0
  33. package/dist/runtime/api/api/routers/git.js +35 -0
  34. package/dist/runtime/api/api/routers/provider-config.d.ts +165 -0
  35. package/dist/runtime/api/api/routers/provider-config.js +252 -0
  36. package/dist/runtime/api/api/routers/settings.d.ts +139 -0
  37. package/dist/runtime/api/api/routers/settings.js +113 -0
  38. package/dist/runtime/api/api/routers/tasks.d.ts +141 -0
  39. package/dist/runtime/api/api/routers/tasks.js +238 -0
  40. package/dist/runtime/api/api/routers/workflows.d.ts +267 -0
  41. package/dist/runtime/api/api/routers/workflows.js +310 -0
  42. package/dist/runtime/api/api/routers/worktrees.d.ts +101 -0
  43. package/dist/runtime/api/api/routers/worktrees.js +80 -0
  44. package/dist/runtime/api/api/trpc.d.ts +118 -0
  45. package/dist/runtime/api/api/trpc.js +34 -0
  46. package/dist/runtime/api/index.d.ts +9 -0
  47. package/dist/runtime/api/index.js +117 -0
  48. package/dist/runtime/api/lib/id-generator.d.ts +70 -0
  49. package/dist/runtime/api/lib/id-generator.js +123 -0
  50. package/dist/runtime/api/lib/image-paste-drop-extension.d.ts +26 -0
  51. package/dist/runtime/api/lib/image-paste-drop-extension.js +125 -0
  52. package/dist/runtime/api/lib/local-config.d.ts +245 -0
  53. package/dist/runtime/api/lib/local-config.js +288 -0
  54. package/dist/runtime/api/lib/logger.d.ts +11 -0
  55. package/dist/runtime/api/lib/logger.js +188 -0
  56. package/dist/runtime/api/lib/markdown-utils.d.ts +8 -0
  57. package/dist/runtime/api/lib/markdown-utils.js +282 -0
  58. package/dist/runtime/api/lib/markdown-utils.test.d.ts +1 -0
  59. package/dist/runtime/api/lib/markdown-utils.test.js +348 -0
  60. package/dist/runtime/api/lib/provider-detection.d.ts +59 -0
  61. package/dist/runtime/api/lib/provider-detection.js +244 -0
  62. package/dist/runtime/api/lib/server/agent-service-singleton.d.ts +6 -0
  63. package/dist/runtime/api/lib/server/agent-service-singleton.js +27 -0
  64. package/dist/runtime/api/lib/server/bootstrap.d.ts +38 -0
  65. package/dist/runtime/api/lib/server/bootstrap.js +197 -0
  66. package/dist/runtime/api/lib/server/git-service-singleton.d.ts +6 -0
  67. package/dist/runtime/api/lib/server/git-service-singleton.js +47 -0
  68. package/dist/runtime/api/lib/server/project-root.d.ts +2 -0
  69. package/dist/runtime/api/lib/server/project-root.js +61 -0
  70. package/dist/runtime/api/lib/server/task-service-singleton.d.ts +7 -0
  71. package/dist/runtime/api/lib/server/task-service-singleton.js +58 -0
  72. package/dist/runtime/api/lib/server/vibing-orchestrator-singleton.d.ts +7 -0
  73. package/dist/runtime/api/lib/server/vibing-orchestrator-singleton.js +57 -0
  74. package/dist/runtime/api/lib/tiptap-utils.clamp-selection.test.d.ts +1 -0
  75. package/dist/runtime/api/lib/tiptap-utils.clamp-selection.test.js +27 -0
  76. package/dist/runtime/api/lib/tiptap-utils.d.ts +130 -0
  77. package/dist/runtime/api/lib/tiptap-utils.js +327 -0
  78. package/dist/runtime/api/lib/trpc/client.d.ts +1 -0
  79. package/dist/runtime/api/lib/trpc/client.js +5 -0
  80. package/dist/runtime/api/lib/trpc/server.d.ts +915 -0
  81. package/dist/runtime/api/lib/trpc/server.js +11 -0
  82. package/dist/runtime/api/lib/trpc/ws-server.d.ts +8 -0
  83. package/dist/runtime/api/lib/trpc/ws-server.js +33 -0
  84. package/dist/runtime/api/persistence/database-service.d.ts +14 -0
  85. package/dist/runtime/api/persistence/database-service.js +74 -0
  86. package/dist/runtime/api/persistence/execution-log-persistence.d.ts +90 -0
  87. package/dist/runtime/api/persistence/execution-log-persistence.js +410 -0
  88. package/dist/runtime/api/persistence/execution-log-persistence.test.d.ts +1 -0
  89. package/dist/runtime/api/persistence/execution-log-persistence.test.js +170 -0
  90. package/dist/runtime/api/router.d.ts +918 -0
  91. package/dist/runtime/api/router.js +34 -0
  92. package/dist/runtime/api/settings-service.d.ts +110 -0
  93. package/dist/runtime/api/settings-service.js +613 -0
  94. package/dist/runtime/api/tasks/file-watcher.d.ts +23 -0
  95. package/dist/runtime/api/tasks/file-watcher.js +88 -0
  96. package/dist/runtime/api/tasks/task-file-parser.d.ts +13 -0
  97. package/dist/runtime/api/tasks/task-file-parser.js +161 -0
  98. package/dist/runtime/api/tasks/task-service.d.ts +36 -0
  99. package/dist/runtime/api/tasks/task-service.js +173 -0
  100. package/dist/runtime/api/types/index.d.ts +179 -0
  101. package/dist/runtime/api/types/index.js +1 -0
  102. package/dist/runtime/api/types/settings.d.ts +81 -0
  103. package/dist/runtime/api/types/settings.js +2 -0
  104. package/dist/runtime/api/types.d.ts +2 -0
  105. package/dist/runtime/api/types.js +1 -0
  106. package/dist/runtime/api/utils/env.d.ts +6 -0
  107. package/dist/runtime/api/utils/env.js +12 -0
  108. package/dist/runtime/api/utils/stripNextEnv.d.ts +7 -0
  109. package/dist/runtime/api/utils/stripNextEnv.js +22 -0
  110. package/dist/runtime/api/utils/title-slug.d.ts +6 -0
  111. package/dist/runtime/api/utils/title-slug.js +77 -0
  112. package/dist/runtime/api/utils/url.d.ts +2 -0
  113. package/dist/runtime/api/utils/url.js +19 -0
  114. package/dist/runtime/api/vcs/git-history-service.d.ts +57 -0
  115. package/dist/runtime/api/vcs/git-history-service.js +228 -0
  116. package/dist/runtime/api/vcs/git-service.d.ts +127 -0
  117. package/dist/runtime/api/vcs/git-service.js +284 -0
  118. package/dist/runtime/api/vcs/worktree-service.d.ts +93 -0
  119. package/dist/runtime/api/vcs/worktree-service.js +506 -0
  120. package/dist/runtime/api/vcs/worktree-service.test.d.ts +1 -0
  121. package/dist/runtime/api/vcs/worktree-service.test.js +20 -0
  122. package/dist/runtime/api/workflows/quality-pipeline.d.ts +58 -0
  123. package/dist/runtime/api/workflows/quality-pipeline.js +400 -0
  124. package/dist/runtime/api/workflows/vibing-orchestrator.d.ts +318 -0
  125. package/dist/runtime/api/workflows/vibing-orchestrator.js +1860 -0
  126. package/dist/runtime/web/.next/BUILD_ID +1 -0
  127. package/dist/runtime/web/.next/app-build-manifest.json +59 -0
  128. package/dist/runtime/web/.next/app-path-routes-manifest.json +7 -0
  129. package/dist/runtime/web/.next/build-manifest.json +33 -0
  130. package/dist/runtime/web/.next/package.json +1 -0
  131. package/dist/runtime/web/.next/prerender-manifest.json +61 -0
  132. package/dist/runtime/web/.next/react-loadable-manifest.json +39 -0
  133. package/dist/runtime/web/.next/required-server-files.json +334 -0
  134. package/dist/runtime/web/.next/routes-manifest.json +62 -0
  135. package/dist/runtime/web/.next/server/app/_not-found/page.js +2 -0
  136. package/dist/runtime/web/.next/server/app/_not-found/page.js.nft.json +1 -0
  137. package/dist/runtime/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  138. package/dist/runtime/web/.next/server/app/_not-found.html +7 -0
  139. package/dist/runtime/web/.next/server/app/_not-found.meta +8 -0
  140. package/dist/runtime/web/.next/server/app/_not-found.rsc +22 -0
  141. package/dist/runtime/web/.next/server/app/api/health/route.js +1 -0
  142. package/dist/runtime/web/.next/server/app/api/health/route.js.nft.json +1 -0
  143. package/dist/runtime/web/.next/server/app/api/health/route_client-reference-manifest.js +1 -0
  144. package/dist/runtime/web/.next/server/app/api/images/[...path]/route.js +1 -0
  145. package/dist/runtime/web/.next/server/app/api/images/[...path]/route.js.nft.json +1 -0
  146. package/dist/runtime/web/.next/server/app/api/images/[...path]/route_client-reference-manifest.js +1 -0
  147. package/dist/runtime/web/.next/server/app/api/upload/route.js +1 -0
  148. package/dist/runtime/web/.next/server/app/api/upload/route.js.nft.json +1 -0
  149. package/dist/runtime/web/.next/server/app/api/upload/route_client-reference-manifest.js +1 -0
  150. package/dist/runtime/web/.next/server/app/index.html +7 -0
  151. package/dist/runtime/web/.next/server/app/index.meta +7 -0
  152. package/dist/runtime/web/.next/server/app/index.rsc +27 -0
  153. package/dist/runtime/web/.next/server/app/page.js +147 -0
  154. package/dist/runtime/web/.next/server/app/page.js.nft.json +1 -0
  155. package/dist/runtime/web/.next/server/app/page_client-reference-manifest.js +1 -0
  156. package/dist/runtime/web/.next/server/app-paths-manifest.json +7 -0
  157. package/dist/runtime/web/.next/server/chunks/217.js +1 -0
  158. package/dist/runtime/web/.next/server/chunks/383.js +6 -0
  159. package/dist/runtime/web/.next/server/chunks/458.js +1 -0
  160. package/dist/runtime/web/.next/server/chunks/576.js +18 -0
  161. package/dist/runtime/web/.next/server/chunks/635.js +22 -0
  162. package/dist/runtime/web/.next/server/chunks/761.js +1 -0
  163. package/dist/runtime/web/.next/server/chunks/777.js +3 -0
  164. package/dist/runtime/web/.next/server/chunks/825.js +1 -0
  165. package/dist/runtime/web/.next/server/chunks/838.js +1 -0
  166. package/dist/runtime/web/.next/server/chunks/973.js +15 -0
  167. package/dist/runtime/web/.next/server/functions-config-manifest.json +4 -0
  168. package/dist/runtime/web/.next/server/middleware-build-manifest.js +1 -0
  169. package/dist/runtime/web/.next/server/middleware-manifest.json +6 -0
  170. package/dist/runtime/web/.next/server/middleware-react-loadable-manifest.js +1 -0
  171. package/dist/runtime/web/.next/server/next-font-manifest.js +1 -0
  172. package/dist/runtime/web/.next/server/next-font-manifest.json +1 -0
  173. package/dist/runtime/web/.next/server/pages/404.html +7 -0
  174. package/dist/runtime/web/.next/server/pages/500.html +1 -0
  175. package/dist/runtime/web/.next/server/pages/_app.js +1 -0
  176. package/dist/runtime/web/.next/server/pages/_app.js.nft.json +1 -0
  177. package/dist/runtime/web/.next/server/pages/_document.js +1 -0
  178. package/dist/runtime/web/.next/server/pages/_document.js.nft.json +1 -0
  179. package/dist/runtime/web/.next/server/pages/_error.js +19 -0
  180. package/dist/runtime/web/.next/server/pages/_error.js.nft.json +1 -0
  181. package/dist/runtime/web/.next/server/pages-manifest.json +6 -0
  182. package/dist/runtime/web/.next/server/server-reference-manifest.js +1 -0
  183. package/dist/runtime/web/.next/server/server-reference-manifest.json +1 -0
  184. package/dist/runtime/web/.next/server/webpack-runtime.js +1 -0
  185. package/dist/runtime/web/.next/static/chunks/18-15c10d3288afef2e.js +1 -0
  186. package/dist/runtime/web/.next/static/chunks/1c0ca389.537bbe362e3ffbd9.js +3 -0
  187. package/dist/runtime/web/.next/static/chunks/22747d63-ad5da0c19f4cfe41.js +71 -0
  188. package/dist/runtime/web/.next/static/chunks/277-0142a939f08738c3.js +63 -0
  189. package/dist/runtime/web/.next/static/chunks/355.056c2645878a799a.js +1 -0
  190. package/dist/runtime/web/.next/static/chunks/420.a5ccf151c9e2b2f1.js +1 -0
  191. package/dist/runtime/web/.next/static/chunks/439.1be0c6242fd248d5.js +15 -0
  192. package/dist/runtime/web/.next/static/chunks/440.c52e7c0f797e22b2.js +1 -0
  193. package/dist/runtime/web/.next/static/chunks/575-e2478287c27da87b.js +1 -0
  194. package/dist/runtime/web/.next/static/chunks/691.920d88c115087314.js +1 -0
  195. package/dist/runtime/web/.next/static/chunks/765-e838910065b50c3d.js +1 -0
  196. package/dist/runtime/web/.next/static/chunks/87c73c54-09e1ba5c70e60a51.js +1 -0
  197. package/dist/runtime/web/.next/static/chunks/891cff7f.0f71fc028f87e683.js +1 -0
  198. package/dist/runtime/web/.next/static/chunks/8bb4d8db-3e2aa02b0a2384b9.js +1 -0
  199. package/dist/runtime/web/.next/static/chunks/9af238c7-271a911d4e99ab18.js +1 -0
  200. package/dist/runtime/web/.next/static/chunks/app/_not-found/page-1cb74d1cba27d0ab.js +1 -0
  201. package/dist/runtime/web/.next/static/chunks/app/api/health/route-105a61ae865ba536.js +1 -0
  202. package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-105a61ae865ba536.js +1 -0
  203. package/dist/runtime/web/.next/static/chunks/app/api/upload/route-105a61ae865ba536.js +1 -0
  204. package/dist/runtime/web/.next/static/chunks/app/layout-8435322f09fd0975.js +1 -0
  205. package/dist/runtime/web/.next/static/chunks/app/page-8c3ba579efc6f918.js +1 -0
  206. package/dist/runtime/web/.next/static/chunks/cac567b0-5b77dd12911823cd.js +1 -0
  207. package/dist/runtime/web/.next/static/chunks/framework-2518f1345b5b2806.js +1 -0
  208. package/dist/runtime/web/.next/static/chunks/main-17665e5e39de9a8a.js +1 -0
  209. package/dist/runtime/web/.next/static/chunks/main-app-c0b0f5ba4f7f9d75.js +1 -0
  210. package/dist/runtime/web/.next/static/chunks/pages/_app-d6f6b3bbc3d81ee1.js +1 -0
  211. package/dist/runtime/web/.next/static/chunks/pages/_error-75a96cf1997cc3b9.js +1 -0
  212. package/dist/runtime/web/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  213. package/dist/runtime/web/.next/static/chunks/webpack-c8de37305b4635cf.js +1 -0
  214. package/dist/runtime/web/.next/static/css/08c950681f1a9a92.css +1 -0
  215. package/dist/runtime/web/.next/static/css/2728291c68f99cb1.css +3 -0
  216. package/dist/runtime/web/.next/static/css/521bd69cc298cd1a.css +1 -0
  217. package/dist/runtime/web/.next/static/css/537e22821e101b87.css +1 -0
  218. package/dist/runtime/web/.next/static/mRpNgPfbYR_0wrODzlg_4/_buildManifest.js +1 -0
  219. package/dist/runtime/web/.next/static/mRpNgPfbYR_0wrODzlg_4/_ssgManifest.js +1 -0
  220. package/dist/runtime/web/.next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  221. package/dist/runtime/web/.next/static/media/21350d82a1f187e9-s.woff2 +0 -0
  222. package/dist/runtime/web/.next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  223. package/dist/runtime/web/.next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  224. package/dist/runtime/web/.next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  225. package/dist/runtime/web/.next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  226. package/dist/runtime/web/.next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  227. package/dist/runtime/web/package.json +65 -0
  228. package/dist/runtime/web/server.js +44 -0
  229. package/dist/tsconfig.tsbuildinfo +1 -0
  230. package/package.json +84 -7
@@ -0,0 +1,141 @@
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
+ status?: "review" | "in-progress" | "backlog" | "done" | undefined;
7
+ type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
8
+ tags?: string[] | undefined;
9
+ priority?: "high" | "medium" | "low" | undefined;
10
+ search?: 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
+ title: string;
27
+ type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
28
+ content: string;
29
+ status?: "review" | "in-progress" | "backlog" | "done" | undefined;
30
+ id?: string | undefined;
31
+ tags?: string[] | undefined;
32
+ due_date?: string | undefined;
33
+ assignee?: string[] | undefined;
34
+ priority?: "high" | "medium" | "low" | 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
+ status?: "review" | "in-progress" | "backlog" | "done" | undefined;
44
+ title?: string | undefined;
45
+ type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
46
+ tags?: string[] | undefined;
47
+ due_date?: string | undefined;
48
+ assignee?: string[] | undefined;
49
+ priority?: "high" | "medium" | "low" | 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: "review" | "in-progress" | "backlog" | "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
+ };
@@ -0,0 +1,238 @@
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
+ }
@@ -0,0 +1,267 @@
1
+ import type { VibingOrchestrator } from '../../workflows/vibing-orchestrator.js';
2
+ type Deps = {
3
+ vibingOrchestrator: VibingOrchestrator;
4
+ };
5
+ export declare function buildWorkflowRoutes({ vibingOrchestrator }: Deps): {
6
+ readonly updateWorkflowOptions: import("@trpc/server").TRPCMutationProcedure<{
7
+ input: {
8
+ workflowId: string;
9
+ config: {
10
+ autoCommit?: boolean | undefined;
11
+ createPR?: boolean | undefined;
12
+ autoQualityChecks?: boolean | undefined;
13
+ requireHumanApproval?: boolean | undefined;
14
+ stepByStepMode?: boolean | undefined;
15
+ autoMerge?: boolean | undefined;
16
+ aiCodeReview?: boolean | undefined;
17
+ aiRoutingOverrides?: {
18
+ execute_task?: {
19
+ provider?: string | undefined;
20
+ model?: string | undefined;
21
+ } | undefined;
22
+ improve_task?: {
23
+ provider?: string | undefined;
24
+ model?: string | undefined;
25
+ } | undefined;
26
+ ai_merge?: {
27
+ provider?: string | undefined;
28
+ model?: string | undefined;
29
+ } | undefined;
30
+ ai_codereview?: {
31
+ provider?: string | undefined;
32
+ model?: string | undefined;
33
+ } | undefined;
34
+ } | undefined;
35
+ };
36
+ };
37
+ output: {
38
+ readonly success: true;
39
+ };
40
+ meta: object;
41
+ }>;
42
+ readonly startWorkflow: import("@trpc/server").TRPCMutationProcedure<{
43
+ input: {
44
+ taskId: string;
45
+ config?: {
46
+ autoCommit?: boolean | undefined;
47
+ createPR?: boolean | undefined;
48
+ autoQualityChecks?: boolean | undefined;
49
+ requireHumanApproval?: boolean | undefined;
50
+ stepByStepMode?: boolean | undefined;
51
+ autoMerge?: boolean | undefined;
52
+ aiCodeReview?: boolean | undefined;
53
+ aiRoutingOverrides?: {
54
+ execute_task?: {
55
+ provider?: string | undefined;
56
+ model?: string | undefined;
57
+ } | undefined;
58
+ improve_task?: {
59
+ provider?: string | undefined;
60
+ model?: string | undefined;
61
+ } | undefined;
62
+ ai_merge?: {
63
+ provider?: string | undefined;
64
+ model?: string | undefined;
65
+ } | undefined;
66
+ ai_codereview?: {
67
+ provider?: string | undefined;
68
+ model?: string | undefined;
69
+ } | undefined;
70
+ } | undefined;
71
+ } | undefined;
72
+ };
73
+ output: {
74
+ workflowId: string;
75
+ };
76
+ meta: object;
77
+ }>;
78
+ readonly continueWorkflow: import("@trpc/server").TRPCMutationProcedure<{
79
+ input: {
80
+ workflowId: string;
81
+ };
82
+ output: {
83
+ readonly success: true;
84
+ };
85
+ meta: object;
86
+ }>;
87
+ readonly runValidation: import("@trpc/server").TRPCMutationProcedure<{
88
+ input: {
89
+ workflowId: string;
90
+ };
91
+ output: {
92
+ readonly success: true;
93
+ };
94
+ meta: object;
95
+ }>;
96
+ readonly runMerge: import("@trpc/server").TRPCMutationProcedure<{
97
+ input: {
98
+ workflowId: string;
99
+ provider?: string | undefined;
100
+ model?: string | undefined;
101
+ };
102
+ output: {
103
+ readonly success: true;
104
+ };
105
+ meta: object;
106
+ }>;
107
+ readonly runCleanup: import("@trpc/server").TRPCMutationProcedure<{
108
+ input: {
109
+ workflowId: string;
110
+ };
111
+ output: {
112
+ readonly success: true;
113
+ };
114
+ meta: object;
115
+ }>;
116
+ readonly pauseWorkflow: import("@trpc/server").TRPCMutationProcedure<{
117
+ input: {
118
+ workflowId: string;
119
+ };
120
+ output: {
121
+ readonly success: true;
122
+ };
123
+ meta: object;
124
+ }>;
125
+ readonly resetWorkflow: import("@trpc/server").TRPCMutationProcedure<{
126
+ input: {
127
+ workflowId: string;
128
+ force?: boolean | undefined;
129
+ deleteWorktree?: boolean | undefined;
130
+ };
131
+ output: {
132
+ success: true;
133
+ };
134
+ meta: object;
135
+ }>;
136
+ readonly approveWorkflow: import("@trpc/server").TRPCMutationProcedure<{
137
+ input: {
138
+ workflowId: string;
139
+ comments?: string | undefined;
140
+ };
141
+ output: {
142
+ readonly success: true;
143
+ };
144
+ meta: object;
145
+ }>;
146
+ readonly rejectWorkflow: import("@trpc/server").TRPCMutationProcedure<{
147
+ input: {
148
+ workflowId: string;
149
+ feedback: string;
150
+ };
151
+ output: {
152
+ readonly success: true;
153
+ };
154
+ meta: object;
155
+ }>;
156
+ readonly onTaskWorkflowEvents: import("@trpc/server").TRPCSubscriptionProcedure<{
157
+ input: {
158
+ taskId?: string | undefined;
159
+ } | undefined;
160
+ output: AsyncIterable<{
161
+ type: "started" | "phase" | "completed" | "failed" | "updated" | "deleted";
162
+ workflowId: string;
163
+ phase?: string;
164
+ workflow?: any;
165
+ executionId?: string;
166
+ }, void, any>;
167
+ meta: object;
168
+ }>;
169
+ readonly getWorkflow: import("@trpc/server").TRPCQueryProcedure<{
170
+ input: {
171
+ workflowId: string;
172
+ };
173
+ output: import("../../types/index.js").VibingExecution | null;
174
+ meta: object;
175
+ }>;
176
+ readonly getWorkflowsByTaskId: import("@trpc/server").TRPCQueryProcedure<{
177
+ input: {
178
+ taskId: string;
179
+ };
180
+ output: import("../../types/index.js").VibingExecution[];
181
+ meta: object;
182
+ }>;
183
+ readonly getLatestWorkflowByTaskId: import("@trpc/server").TRPCQueryProcedure<{
184
+ input: {
185
+ taskId: string;
186
+ };
187
+ output: import("../../types/index.js").VibingExecution | null;
188
+ meta: object;
189
+ }>;
190
+ readonly aiReviewCode: import("@trpc/server").TRPCMutationProcedure<{
191
+ input: {
192
+ taskId: string;
193
+ provider?: string | undefined;
194
+ workflowId?: string | undefined;
195
+ model?: string | undefined;
196
+ reviewContext?: string | undefined;
197
+ };
198
+ output: {
199
+ executionId: string;
200
+ reviewSummary: string;
201
+ recommendations: string[];
202
+ qualityScore: number;
203
+ };
204
+ meta: object;
205
+ }>;
206
+ readonly approveAndContinueReview: import("@trpc/server").TRPCMutationProcedure<{
207
+ input: {
208
+ workflowId: string;
209
+ };
210
+ output: {
211
+ success: true;
212
+ };
213
+ meta: object;
214
+ }>;
215
+ readonly markCompleted: import("@trpc/server").TRPCMutationProcedure<{
216
+ input: {
217
+ workflowId: string;
218
+ };
219
+ output: {
220
+ success: true;
221
+ };
222
+ meta: object;
223
+ }>;
224
+ readonly checkWorktreeStatus: import("@trpc/server").TRPCMutationProcedure<{
225
+ input: {
226
+ workflowId: string;
227
+ };
228
+ output: {
229
+ clean: boolean;
230
+ uncommittedFiles: string[];
231
+ worktreePath?: string;
232
+ };
233
+ meta: object;
234
+ }>;
235
+ readonly rerunImplementation: import("@trpc/server").TRPCMutationProcedure<{
236
+ input: {
237
+ workflowId: string;
238
+ provider?: string | undefined;
239
+ model?: string | undefined;
240
+ feedback?: string | undefined;
241
+ };
242
+ output: {
243
+ success: true;
244
+ };
245
+ meta: object;
246
+ }>;
247
+ readonly skipToNextPhase: import("@trpc/server").TRPCMutationProcedure<{
248
+ input: {
249
+ workflowId: string;
250
+ };
251
+ output: {
252
+ success: true;
253
+ };
254
+ meta: object;
255
+ }>;
256
+ readonly rerunFromPhase: import("@trpc/server").TRPCMutationProcedure<{
257
+ input: {
258
+ workflowId: string;
259
+ phase: "completed" | "failed" | "draft" | "awaiting-review" | "approved" | "merged" | "paused" | "implementing" | "validating" | "ai-reviewing" | "merging" | "cleaning";
260
+ };
261
+ output: {
262
+ success: true;
263
+ };
264
+ meta: object;
265
+ }>;
266
+ };
267
+ export {};