vibeman 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -3
- package/dist/runtime/api/.tsbuildinfo +1 -1
- package/dist/runtime/api/agent/agent-service.d.ts +4 -0
- package/dist/runtime/api/agent/agent-service.js +62 -3
- package/dist/runtime/api/agent/ai-providers/amp-cli-provider.d.ts +38 -0
- package/dist/runtime/api/agent/ai-providers/amp-cli-provider.js +268 -0
- package/dist/runtime/api/agent/ai-providers/codex-cli-provider.js +40 -12
- package/dist/runtime/api/agent/ai-providers/gemini-cli-provider.d.ts +24 -0
- package/dist/runtime/api/agent/ai-providers/gemini-cli-provider.js +291 -0
- package/dist/runtime/api/agent/ai-providers/index.d.ts +3 -3
- package/dist/runtime/api/agent/ai-providers/index.js +3 -1
- package/dist/runtime/api/agent/ai-providers/types.d.ts +5 -2
- package/dist/runtime/api/agent/amp-cli-provider.test.d.ts +1 -0
- package/dist/runtime/api/agent/amp-cli-provider.test.js +99 -0
- package/dist/runtime/api/agent/codex-cli-provider.test.js +10 -8
- package/dist/runtime/api/agent/prompt-service.js +108 -105
- package/dist/runtime/api/agent/prompt-service.test.js +35 -0
- package/dist/runtime/api/agent/routing-policy.d.ts +2 -2
- package/dist/runtime/api/agent/routing-policy.test.js +4 -4
- package/dist/runtime/api/api/routers/ai.d.ts +3 -3
- package/dist/runtime/api/api/routers/executions.d.ts +2 -7
- package/dist/runtime/api/api/routers/executions.js +2 -2
- package/dist/runtime/api/api/routers/provider-config.d.ts +34 -0
- package/dist/runtime/api/api/routers/settings.d.ts +19 -0
- package/dist/runtime/api/api/routers/settings.js +16 -0
- package/dist/runtime/api/api/routers/tasks.d.ts +9 -9
- package/dist/runtime/api/api/routers/workflows.d.ts +12 -12
- package/dist/runtime/api/api/routers/worktrees.d.ts +2 -2
- package/dist/runtime/api/api/trpc.d.ts +16 -16
- package/dist/runtime/api/lib/local-config.d.ts +94 -4
- package/dist/runtime/api/lib/local-config.js +16 -0
- package/dist/runtime/api/lib/provider-detection.d.ts +2 -0
- package/dist/runtime/api/lib/provider-detection.js +83 -1
- package/dist/runtime/api/lib/server/vibeman-info.d.ts +5 -0
- package/dist/runtime/api/lib/server/vibeman-info.js +85 -0
- package/dist/runtime/api/lib/trpc/server.d.ts +63 -33
- package/dist/runtime/api/persistence/execution-log-persistence.d.ts +1 -1
- package/dist/runtime/api/persistence/execution-log-persistence.js +19 -3
- package/dist/runtime/api/router.d.ts +63 -33
- package/dist/runtime/api/settings-service.js +31 -14
- package/dist/runtime/api/tasks/task-file-parser.d.ts +1 -0
- package/dist/runtime/api/tasks/task-file-parser.js +20 -1
- package/dist/runtime/api/tasks/task-updater.d.ts +62 -0
- package/dist/runtime/api/tasks/task-updater.js +260 -0
- package/dist/runtime/api/tasks/task-updater.test.d.ts +1 -0
- package/dist/runtime/api/tasks/task-updater.test.js +303 -0
- package/dist/runtime/api/types/index.d.ts +1 -1
- package/dist/runtime/api/types/settings.d.ts +17 -6
- package/dist/runtime/api/vcs/git-service.d.ts +9 -0
- package/dist/runtime/api/vcs/git-service.js +23 -0
- package/dist/runtime/api/vcs/worktree-service.d.ts +1 -1
- package/dist/runtime/api/vcs/worktree-service.js +22 -10
- package/dist/runtime/api/workflows/quality-pipeline.js +2 -1
- package/dist/runtime/api/workflows/vibing-orchestrator.d.ts +93 -5
- package/dist/runtime/api/workflows/vibing-orchestrator.js +774 -203
- package/dist/runtime/api/workflows/workflow-effects.d.ts +45 -0
- package/dist/runtime/api/workflows/workflow-effects.js +49 -0
- package/dist/runtime/api/workflows/workflow-reconciler.d.ts +65 -0
- package/dist/runtime/api/workflows/workflow-reconciler.js +226 -0
- package/dist/runtime/api/workflows/workflow-reducer.d.ts +26 -0
- package/dist/runtime/api/workflows/workflow-reducer.js +288 -0
- package/dist/runtime/api/workflows/workflow-reducer.test.d.ts +1 -0
- package/dist/runtime/api/workflows/workflow-reducer.test.js +247 -0
- package/dist/runtime/api/workflows/workflow-schema.d.ts +546 -0
- package/dist/runtime/api/workflows/workflow-schema.js +256 -0
- package/dist/runtime/web/.next/BUILD_ID +1 -1
- package/dist/runtime/web/.next/app-build-manifest.json +50 -50
- package/dist/runtime/web/.next/app-path-routes-manifest.json +1 -1
- package/dist/runtime/web/.next/build-manifest.json +14 -14
- package/dist/runtime/web/.next/prerender-manifest.json +3 -3
- package/dist/runtime/web/.next/react-loadable-manifest.json +2 -33
- package/dist/runtime/web/.next/required-server-files.json +5 -5
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js +1 -1
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js.nft.json +1 -1
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app/_not-found/page.js +2 -2
- package/dist/runtime/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- 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 +12 -12
- package/dist/runtime/web/.next/server/app/api/health/route.js +1 -1
- package/dist/runtime/web/.next/server/app/api/health/route.js.nft.json +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.js.nft.json +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.js.nft.json +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 +15 -15
- package/dist/runtime/web/.next/server/app/page.js +27 -62
- package/dist/runtime/web/.next/server/app/page.js.nft.json +1 -1
- package/dist/runtime/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app-paths-manifest.json +1 -1
- package/dist/runtime/web/.next/server/chunks/210.js +1 -0
- package/dist/runtime/web/.next/server/chunks/291.js +18 -0
- package/dist/runtime/web/.next/server/chunks/552.js +22 -0
- package/dist/runtime/web/.next/server/chunks/780.js +1 -0
- package/dist/runtime/web/.next/server/chunks/905.js +6 -0
- package/dist/runtime/web/.next/server/chunks/98.js +1 -0
- package/dist/runtime/web/.next/server/middleware-build-manifest.js +1 -1
- package/dist/runtime/web/.next/server/middleware-react-loadable-manifest.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/_app.js +1 -1
- package/dist/runtime/web/.next/server/pages/_app.js.nft.json +1 -1
- package/dist/runtime/web/.next/server/pages/_document.js +1 -1
- package/dist/runtime/web/.next/server/pages/_document.js.nft.json +1 -1
- package/dist/runtime/web/.next/server/pages/_error.js +9 -9
- package/dist/runtime/web/.next/server/pages/_error.js.nft.json +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/server/webpack-runtime.js +1 -1
- package/dist/runtime/web/.next/static/{5_15u1WQCxN1_eHZpldCv → LJFZk_8tvKFN_Ee4HqUuM}/_buildManifest.js +1 -1
- package/dist/runtime/web/.next/static/chunks/05c91ade-7d09b2b280adffd1.js +1 -0
- package/dist/runtime/web/.next/static/chunks/201-51bef3fa8c832e2e.js +1 -0
- package/dist/runtime/web/.next/static/chunks/524-89747ed9b0294f8a.js +1 -0
- package/dist/runtime/web/.next/static/chunks/554-8bec6e9cca6acc67.js +1 -0
- package/dist/runtime/web/.next/static/chunks/764.86e9503a69d45a85.js +1 -0
- package/dist/runtime/web/.next/static/chunks/{87c73c54-09e1ba5c70e60a51.js → 7ab4dc20-239138e0ae7af24a.js} +1 -1
- package/dist/runtime/web/.next/static/chunks/905-342391e3d3a3678f.js +20 -0
- package/dist/runtime/web/.next/static/chunks/a8a5ce16-4edea7df2d9b544a.js +79 -0
- package/dist/runtime/web/.next/static/chunks/{8bb4d8db-3e2aa02b0a2384b9.js → ad74d572-4c1b162e2c15acaa.js} +1 -1
- package/dist/runtime/web/.next/static/chunks/app/.vibeman/assets/images/[...path]/route-7b752a8641f96c1f.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/_not-found/page-34e66b251c2b5044.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/api/health/route-7b752a8641f96c1f.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-7b752a8641f96c1f.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/api/upload/route-7b752a8641f96c1f.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/layout-df9ac93cb02b2385.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/page-6610743f7de5f92a.js +1 -0
- package/dist/runtime/web/.next/static/chunks/c25e0690-e9b798b8de667da1.js +1 -0
- package/dist/runtime/web/.next/static/chunks/framework-57157ec4d37f64aa.js +1 -0
- package/dist/runtime/web/.next/static/chunks/main-app-156cc0c60371bd78.js +1 -0
- package/dist/runtime/web/.next/static/chunks/main-df25d367c47b1fec.js +1 -0
- package/dist/runtime/web/.next/static/chunks/pages/_app-9f629a5e1131d19f.js +1 -0
- package/dist/runtime/web/.next/static/chunks/pages/_error-9238238274c7efcd.js +1 -0
- package/dist/runtime/web/.next/static/chunks/webpack-cd50e39b423d1808.js +1 -0
- package/dist/runtime/web/.next/static/css/4fbf378a264bd4ea.css +1 -0
- package/dist/runtime/web/package.json +8 -8
- package/dist/runtime/web/server.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -37
- package/dist/runtime/api/lib/trpc/client.d.ts +0 -1
- package/dist/runtime/api/lib/trpc/client.js +0 -5
- package/dist/runtime/web/.next/server/chunks/217.js +0 -1
- package/dist/runtime/web/.next/server/chunks/383.js +0 -6
- package/dist/runtime/web/.next/server/chunks/458.js +0 -1
- package/dist/runtime/web/.next/server/chunks/576.js +0 -18
- package/dist/runtime/web/.next/server/chunks/635.js +0 -22
- package/dist/runtime/web/.next/server/chunks/761.js +0 -1
- package/dist/runtime/web/.next/server/chunks/777.js +0 -3
- package/dist/runtime/web/.next/server/chunks/825.js +0 -1
- package/dist/runtime/web/.next/server/chunks/838.js +0 -1
- package/dist/runtime/web/.next/server/chunks/973.js +0 -15
- package/dist/runtime/web/.next/static/chunks/18-15c10d3288afef2e.js +0 -1
- package/dist/runtime/web/.next/static/chunks/1c0ca389.537bbe362e3ffbd9.js +0 -3
- package/dist/runtime/web/.next/static/chunks/22747d63-ad5da0c19f4cfe41.js +0 -71
- package/dist/runtime/web/.next/static/chunks/355.056c2645878a799a.js +0 -1
- package/dist/runtime/web/.next/static/chunks/420.a5ccf151c9e2b2f1.js +0 -1
- package/dist/runtime/web/.next/static/chunks/439.1be0c6242fd248d5.js +0 -15
- package/dist/runtime/web/.next/static/chunks/440.c52e7c0f797e22b2.js +0 -1
- package/dist/runtime/web/.next/static/chunks/575-e2478287c27da87b.js +0 -1
- package/dist/runtime/web/.next/static/chunks/691.920d88c115087314.js +0 -1
- package/dist/runtime/web/.next/static/chunks/765-e838910065b50c3d.js +0 -1
- package/dist/runtime/web/.next/static/chunks/823-6f371a6e829adbba.js +0 -63
- package/dist/runtime/web/.next/static/chunks/891cff7f.0f71fc028f87e683.js +0 -1
- package/dist/runtime/web/.next/static/chunks/9af238c7-271a911d4e99ab18.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/.vibeman/assets/images/[...path]/route-751c9265a65409e5.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/_not-found/page-1cb74d1cba27d0ab.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/health/route-751c9265a65409e5.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-751c9265a65409e5.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/upload/route-751c9265a65409e5.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/layout-8435322f09fd0975.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/page-9fe7d75095b4ccec.js +0 -1
- package/dist/runtime/web/.next/static/chunks/cac567b0-5b77dd12911823cd.js +0 -1
- package/dist/runtime/web/.next/static/chunks/framework-2518f1345b5b2806.js +0 -1
- package/dist/runtime/web/.next/static/chunks/main-17665e5e39de9a8a.js +0 -1
- package/dist/runtime/web/.next/static/chunks/main-app-c0b0f5ba4f7f9d75.js +0 -1
- package/dist/runtime/web/.next/static/chunks/pages/_app-d6f6b3bbc3d81ee1.js +0 -1
- package/dist/runtime/web/.next/static/chunks/pages/_error-75a96cf1997cc3b9.js +0 -1
- package/dist/runtime/web/.next/static/chunks/webpack-c8de37305b4635cf.js +0 -1
- package/dist/runtime/web/.next/static/css/08c950681f1a9a92.css +0 -1
- /package/dist/runtime/web/.next/static/{5_15u1WQCxN1_eHZpldCv → LJFZk_8tvKFN_Ee4HqUuM}/_ssgManifest.js +0 -0
|
@@ -1,79 +1,60 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import fs from 'fs/promises';
|
|
3
3
|
import { log } from '../lib/logger.js';
|
|
4
|
-
import { getVibeDir } from '../lib/server/project-root.js';
|
|
4
|
+
import { getProjectRoot, getVibeDir } from '../lib/server/project-root.js';
|
|
5
5
|
// -----------------------------
|
|
6
6
|
// Prompt templates (hard-coded)
|
|
7
7
|
// -----------------------------
|
|
8
|
-
const IMPROVEMENT_TEMPLATE = `
|
|
8
|
+
const IMPROVEMENT_TEMPLATE = `Streamline the task spec below so it is easy to execute and maintain.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Guidance
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
- **IMPORTANT: Detect the language of the task content provided and respond in that SAME language for all markdown sections.** Keep enum fields (type, priority) in English, but write all descriptive content (Description, Technical Details, Implementation Notes, etc.) in the detected language.
|
|
13
|
+
- Judge complexity first: keep the spec compact when the work is straightforward; elaborate only when multiple systems or risks require extra direction.
|
|
14
|
+
- Drop low-value detail (exact file names, functions, or boilerplate such as "run tests").
|
|
15
|
+
- Keep every section action-focused and only include information that will change how the work is done.
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- **bug**: Fixing defects or issues
|
|
18
|
-
- **chore**: Maintenance, dependencies, tooling
|
|
19
|
-
- **refactor**: Code improvement without behavior change
|
|
20
|
-
- **test**: Adding or improving tests
|
|
21
|
-
- **doc**: Documentation updates
|
|
17
|
+
If type or priority should change, surface the recommendation before the content:
|
|
18
|
+
**Type**: [new type with a brief reason, omit if unchanged]
|
|
19
|
+
**Priority**: [new priority with a brief reason, omit if unchanged]
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
- **high**: Critical, blocking, or high business value
|
|
25
|
-
- **medium**: Important but not urgent, moderate impact
|
|
26
|
-
- **low**: Nice to have, minor improvements
|
|
21
|
+
## Response Format
|
|
27
22
|
|
|
28
|
-
|
|
23
|
+
Return JSON with:
|
|
24
|
+
- "type": feature | bug | chore | refactor | test | doc
|
|
25
|
+
- "priority": high | medium | low
|
|
26
|
+
- "title": optional concise title
|
|
27
|
+
- "content": markdown that follows the layout below (omit a leading H1 when a title is provided)
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
**Type**: [recommended type with brief reasoning]
|
|
32
|
-
**Priority**: [recommended priority with brief reasoning]
|
|
29
|
+
## Markdown Layout
|
|
33
30
|
|
|
34
|
-
|
|
31
|
+
Use clear, economical language in this order.
|
|
35
32
|
|
|
36
|
-
|
|
37
|
-
[Provide a clear, detailed description of what needs to be accomplished]
|
|
33
|
+
<TaskContentTemplate>
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
[Add more as needed]
|
|
35
|
+
## Description
|
|
36
|
+
[Outcome in plain language. Keep it short when the task is simple.]
|
|
37
|
+
## Technical Details
|
|
38
|
+
[Only the essential constraints, integrations, or dependencies.]
|
|
44
39
|
|
|
45
|
-
|
|
46
|
-
[
|
|
40
|
+
## Implementation Notes
|
|
41
|
+
[Key tactics, risks, or decisions to highlight.]
|
|
47
42
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
[
|
|
43
|
+
## Recommended Steps
|
|
44
|
+
- Step 1
|
|
45
|
+
- [ ] TODO
|
|
46
|
+
- [ ] TODO
|
|
47
|
+
- Step 2
|
|
48
|
+
- [ ] TODO
|
|
49
|
+
(Provide 2-5 steps total, each with 1-3 TODO checkboxes.)
|
|
51
50
|
|
|
52
|
-
##
|
|
51
|
+
## Acceptance Criteria
|
|
52
|
+
- [ ] Concise, verifiable results. Keep the list short but complete.
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
3. **Project Alignment**: Ensure the task fits within the existing codebase architecture and follows established patterns
|
|
57
|
-
4. **Quality Assurance**: Include comprehensive testing strategies, edge cases, and validation approaches
|
|
58
|
-
5. **Risk Assessment**: Identify potential challenges, blockers, and mitigation strategies
|
|
59
|
-
6. **Cross-functional Impact**: Consider effects on other systems, teams, or user experiences
|
|
60
|
-
7. **Scalability & Performance**: Include considerations for performance, scalability, and maintainability
|
|
61
|
-
8. **Documentation**: Ensure adequate documentation and knowledge transfer requirements
|
|
62
|
-
9. **Scope Optimization**: Balance completeness with manageable task size for effective execution
|
|
63
|
-
10. **Context Preservation**: Maintain original intent while significantly enhancing detail and clarity
|
|
64
|
-
11. **Standards Compliance**: Follow GitHub Flavored Markdown specification and project conventions
|
|
65
|
-
12. **Asset Preservation**: Retain any images, diagrams, or other media from the original content
|
|
66
|
-
13. **Simple and focus**: Keep the task simple, don't make it too complex and over design, focus on the core functionality and core business logic
|
|
54
|
+
## Implementation Summary
|
|
55
|
+
[Brief, auto-generated summary of changes.]
|
|
67
56
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
Return a JSON object with:
|
|
71
|
-
- "type": one of [feature, bug, chore, refactor, test, doc]
|
|
72
|
-
- "priority": one of [high, medium, low]
|
|
73
|
-
- "title": a concise, descriptive title for the task (optional, but preferred)
|
|
74
|
-
- "content": the improved task specification in markdown format with proper JSON escaping
|
|
75
|
-
|
|
76
|
-
If you include a title in the JSON response, do NOT include an H1 heading at the beginning of the content field to avoid duplication.
|
|
57
|
+
</TaskContentTemplate>
|
|
77
58
|
|
|
78
59
|
## Project Context
|
|
79
60
|
|
|
@@ -81,12 +62,13 @@ If you include a title in the JSON response, do NOT include an H1 heading at the
|
|
|
81
62
|
{{projectContext}}
|
|
82
63
|
</ProjectContext>
|
|
83
64
|
|
|
84
|
-
## Current Task
|
|
65
|
+
## Current Task
|
|
66
|
+
|
|
85
67
|
- **ID:** {{taskId}}
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
68
|
+
- **Title:** {{taskTitle}}
|
|
69
|
+
- **Type:** {{taskType}}
|
|
70
|
+
- **Priority:** {{taskPriority}}
|
|
71
|
+
- **Status:** {{taskStatus}}
|
|
90
72
|
|
|
91
73
|
## Content to Improve
|
|
92
74
|
|
|
@@ -94,43 +76,24 @@ If you include a title in the JSON response, do NOT include an H1 heading at the
|
|
|
94
76
|
{{taskContent}}
|
|
95
77
|
</CurrentTaskContent>
|
|
96
78
|
`;
|
|
97
|
-
const TASK_TEMPLATE = `## Task
|
|
79
|
+
const TASK_TEMPLATE = `## Task Brief
|
|
98
80
|
|
|
99
|
-
Deliver the following
|
|
81
|
+
Deliver the task by following the specification exactly as written.
|
|
100
82
|
|
|
101
83
|
## Workflow Instructions
|
|
102
84
|
|
|
103
85
|
{{workflowInstructions}}
|
|
104
86
|
|
|
105
|
-
##
|
|
87
|
+
## How to Work
|
|
106
88
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
## Development Guidelines
|
|
114
|
-
|
|
115
|
-
- Respect existing architecture and style conventions.
|
|
116
|
-
- Add robust error handling.
|
|
117
|
-
- Update documentation when necessary.
|
|
118
|
-
- Ensure all tests pass and the project builds cleanly.
|
|
119
|
-
- Commit with a clear, descriptive message.
|
|
120
|
-
- Create todo list to track the progress.
|
|
121
|
-
|
|
122
|
-
## Expected Deliverables
|
|
123
|
-
|
|
124
|
-
- A working implementation that satisfies every requirement.
|
|
125
|
-
- An updated task file showing completed acceptance criteria.
|
|
126
|
-
- Clean, well-documented code.
|
|
127
|
-
- Passing build and test results.
|
|
128
|
-
|
|
129
|
-
Begin by examining the codebase; then proceed with the implementation.
|
|
130
|
-
|
|
131
|
-
---
|
|
89
|
+
- Start with the **Description** to internalize the expected outcome.
|
|
90
|
+
- Apply every constraint under **Technical Details**.
|
|
91
|
+
- Review **Implementation Notes** for callouts, risks, or decisions you must honor.
|
|
92
|
+
- Work through each group in **Recommended Steps**, checking off the TODO boxes inside the task file as you complete them.
|
|
93
|
+
- Do not mark the task complete until every **Acceptance Criterion** is satisfied and verified.
|
|
94
|
+
- Think independently and do not just rely on the task file to guide your work. You can update the task file as you work.
|
|
132
95
|
|
|
133
|
-
|
|
96
|
+
## Task Reference
|
|
134
97
|
|
|
135
98
|
- **ID:** {{taskId}}
|
|
136
99
|
- **Title:** {{taskTitle}}
|
|
@@ -138,29 +101,58 @@ Begin by examining the codebase; then proceed with the implementation.
|
|
|
138
101
|
- **Priority:** {{taskPriority}}
|
|
139
102
|
- **Status:** {{taskStatus}}
|
|
140
103
|
- **Tags:** {{tagsList}}
|
|
141
|
-
|
|
142
104
|
{{taskFilePathInfo}}
|
|
143
105
|
|
|
144
|
-
|
|
106
|
+
## Task Specification
|
|
145
107
|
|
|
146
108
|
{{taskContent}}
|
|
147
109
|
|
|
148
110
|
`;
|
|
149
|
-
const MERGE_TEMPLATE = `Goal: Merge feature branch into base
|
|
111
|
+
const MERGE_TEMPLATE = `Goal: Merge feature branch into base branch in the main repo. Do NOT push to remote.
|
|
150
112
|
|
|
151
|
-
Context
|
|
113
|
+
## Context
|
|
152
114
|
|
|
153
|
-
- Repo: {{repoPath}}
|
|
115
|
+
- Main Repo: {{repoPath}}
|
|
154
116
|
- Worktree: {{worktreePath}}
|
|
155
117
|
- Feature branch: {{featureBranch}}
|
|
156
118
|
- Base branch: {{baseBranch}}
|
|
157
119
|
|
|
158
|
-
|
|
120
|
+
## CRITICAL INSTRUCTIONS
|
|
121
|
+
|
|
122
|
+
1. **Do NOT run formatters, linters, or builds**
|
|
123
|
+
2. **Always use \`--no-verify\` flag** to skip pre-commit hooks
|
|
124
|
+
3. **Handle any uncommitted changes in main repo first**
|
|
125
|
+
|
|
126
|
+
## Steps
|
|
127
|
+
|
|
128
|
+
\`\`\`bash
|
|
129
|
+
cd {{repoPath}}
|
|
130
|
+
|
|
131
|
+
# Step 1: Stash any uncommitted changes in main repo
|
|
132
|
+
git stash --include-untracked || true
|
|
133
|
+
|
|
134
|
+
# Step 2: Checkout base branch and update
|
|
135
|
+
git checkout {{baseBranch}}
|
|
136
|
+
git fetch origin {{baseBranch}}
|
|
137
|
+
git reset --hard origin/{{baseBranch}}
|
|
138
|
+
|
|
139
|
+
# Step 3: Merge feature branch into base
|
|
140
|
+
git merge {{featureBranch}} --no-ff --no-verify -m "Merge branch '{{featureBranch}}' into {{baseBranch}}"
|
|
159
141
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
142
|
+
# Step 4: Restore stashed changes if any
|
|
143
|
+
git stash pop || true
|
|
144
|
+
\`\`\`
|
|
145
|
+
|
|
146
|
+
If conflicts occur during merge:
|
|
147
|
+
- Prefer {{featureBranch}} when changes are clearly additive
|
|
148
|
+
- Keep {{baseBranch}} when it contains newer logic
|
|
149
|
+
- After resolving: \`git add <file>\` then \`git commit --no-verify\`
|
|
150
|
+
|
|
151
|
+
## Output Format
|
|
152
|
+
|
|
153
|
+
At the end, output exactly one of:
|
|
154
|
+
- MERGE_STATUS: SUCCESS
|
|
155
|
+
- MERGE_STATUS: FAILED
|
|
164
156
|
`;
|
|
165
157
|
const REVIEW_TEMPLATE = `## Code Review Task
|
|
166
158
|
|
|
@@ -295,20 +287,31 @@ export class PromptService {
|
|
|
295
287
|
}
|
|
296
288
|
async generateImprovementPrompt(task, taskData) {
|
|
297
289
|
// Read project context
|
|
298
|
-
const
|
|
299
|
-
|
|
290
|
+
const contextSections = [];
|
|
291
|
+
const vibeDir = getVibeDir();
|
|
292
|
+
const productOverviewPath = path.join(vibeDir, 'product_overview.md');
|
|
293
|
+
try {
|
|
294
|
+
await fs.access(productOverviewPath, fs.constants.F_OK);
|
|
295
|
+
contextSections.push(`**Product overview file:** ${productOverviewPath}\nReference this for additional product context.`);
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
log.warn('Could not read product_overview.md for improvement prompt, something went wrong with initialization', undefined, 'prompt-service');
|
|
299
|
+
}
|
|
300
|
+
const readmePath = path.join(getProjectRoot(), 'README.md');
|
|
300
301
|
try {
|
|
301
|
-
|
|
302
|
+
await fs.access(readmePath, fs.constants.F_OK);
|
|
303
|
+
contextSections.push(`**Repository README:** ${readmePath}\nReview this if you need additional project context.`);
|
|
302
304
|
}
|
|
303
305
|
catch {
|
|
304
|
-
log.
|
|
306
|
+
log.info('README.md not found when building improvement prompt context', { readmePath }, 'prompt-service');
|
|
305
307
|
}
|
|
306
308
|
// Add task file path to project context for improvement prompts
|
|
307
309
|
const taskFilePath = this.generateTaskFilePath(task.id);
|
|
308
310
|
if (taskFilePath && (await this.validateTaskFile(taskFilePath))) {
|
|
309
|
-
|
|
311
|
+
contextSections.push(`**Current task file location:** ${taskFilePath}`);
|
|
310
312
|
log.info(`Task file path included in improvement prompt`, { taskId: task.id, path: taskFilePath }, 'prompt-service');
|
|
311
313
|
}
|
|
314
|
+
const productContext = contextSections.join('\n\n');
|
|
312
315
|
return render(IMPROVEMENT_TEMPLATE, {
|
|
313
316
|
projectContext: productContext,
|
|
314
317
|
taskId: task.id,
|
|
@@ -131,14 +131,49 @@ Test task content`;
|
|
|
131
131
|
priority: 'high',
|
|
132
132
|
content: 'Improved content',
|
|
133
133
|
};
|
|
134
|
+
const productOverviewPath = path.join(TEST_DATA_DIR, 'product_overview.md');
|
|
135
|
+
const readmePath = path.join(TEST_DATA_DIR, 'README.md');
|
|
136
|
+
await fs.writeFile(productOverviewPath, 'Existing product overview content for context.', 'utf-8');
|
|
137
|
+
await fs.writeFile(readmePath, '# Workspace README\n', 'utf-8');
|
|
134
138
|
// Create task file
|
|
135
139
|
const taskFilePath = path.join(TEST_TASKS_DIR, 'IMPROVE-TASK-001.md');
|
|
136
140
|
await fs.writeFile(taskFilePath, 'Task file content', 'utf-8');
|
|
137
141
|
const prompt = await promptService.generateImprovementPrompt(mockTask, taskData);
|
|
142
|
+
expect(prompt).not.toContain('Existing product overview content for context.');
|
|
143
|
+
expect(prompt).toContain(`**Product overview file:** ${productOverviewPath}`);
|
|
144
|
+
expect(prompt).toContain('Reference this for additional product context.');
|
|
145
|
+
expect(prompt).toContain(`**Repository README:** ${readmePath}`);
|
|
146
|
+
expect(prompt).toContain('Review this if you need additional project context.');
|
|
138
147
|
expect(prompt).toContain('Current task file location:');
|
|
139
148
|
expect(prompt).toContain(taskFilePath);
|
|
140
149
|
expect(prompt).toContain('IMPROVE-TASK-001');
|
|
141
150
|
});
|
|
151
|
+
it('should include language preservation instructions in the prompt', async () => {
|
|
152
|
+
const mockTask = {
|
|
153
|
+
id: 'LANG-TEST-001',
|
|
154
|
+
title: 'Language Test Task',
|
|
155
|
+
type: 'feature',
|
|
156
|
+
status: 'backlog',
|
|
157
|
+
priority: 'medium',
|
|
158
|
+
tags: [],
|
|
159
|
+
content: 'Test content in any language',
|
|
160
|
+
created_at: '2024-09-04T12:00:00.000Z',
|
|
161
|
+
updated_at: '2024-09-04T12:00:00.000Z',
|
|
162
|
+
assignee: [],
|
|
163
|
+
comments: [],
|
|
164
|
+
};
|
|
165
|
+
const taskData = {
|
|
166
|
+
title: 'Tarea de prueba de idioma',
|
|
167
|
+
type: 'feature',
|
|
168
|
+
priority: 'high',
|
|
169
|
+
content: 'Contenido de prueba en español',
|
|
170
|
+
};
|
|
171
|
+
const prompt = await promptService.generateImprovementPrompt(mockTask, taskData);
|
|
172
|
+
// Verify the prompt contains language preservation instructions
|
|
173
|
+
expect(prompt).toContain('Detect the language of the task content');
|
|
174
|
+
expect(prompt).toContain('respond in that SAME language');
|
|
175
|
+
expect(prompt).toContain('Keep enum fields (type, priority) in English');
|
|
176
|
+
});
|
|
142
177
|
});
|
|
143
178
|
describe('generateReviewPrompt', () => {
|
|
144
179
|
it('should include task file path in additional context', async () => {
|
|
@@ -108,7 +108,7 @@ export declare const RoutingPolicySchema: z.ZodObject<{
|
|
|
108
108
|
}>>>;
|
|
109
109
|
}, "strip", z.ZodTypeAny, {
|
|
110
110
|
defaultProvider: string;
|
|
111
|
-
operations?: Partial<Record<"execute_task" | "quality_checks" | "
|
|
111
|
+
operations?: Partial<Record<"execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task", {
|
|
112
112
|
provider: string;
|
|
113
113
|
options?: {
|
|
114
114
|
temperature?: number | undefined;
|
|
@@ -120,7 +120,7 @@ export declare const RoutingPolicySchema: z.ZodObject<{
|
|
|
120
120
|
}>> | undefined;
|
|
121
121
|
}, {
|
|
122
122
|
defaultProvider: string;
|
|
123
|
-
operations?: Partial<Record<"execute_task" | "quality_checks" | "
|
|
123
|
+
operations?: Partial<Record<"execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task", {
|
|
124
124
|
provider: string;
|
|
125
125
|
options?: {
|
|
126
126
|
temperature?: number | undefined;
|
|
@@ -38,12 +38,12 @@ describe('RoutingPolicyManager resolve precedence', () => {
|
|
|
38
38
|
const rpm = new RoutingPolicyManager();
|
|
39
39
|
await rpm.updatePolicy({
|
|
40
40
|
operations: {
|
|
41
|
-
ai_merge: { provider: 'codex', model: 'gpt-5' },
|
|
41
|
+
ai_merge: { provider: 'codex', model: 'gpt-5.1-codex' },
|
|
42
42
|
},
|
|
43
43
|
});
|
|
44
44
|
const resolved = await rpm.resolveProviderForOperation('ai_merge');
|
|
45
45
|
expect(resolved.provider).toBe('codex');
|
|
46
|
-
expect(resolved.model).toBe('gpt-5');
|
|
46
|
+
expect(resolved.model).toBe('gpt-5.1-codex');
|
|
47
47
|
});
|
|
48
48
|
it('when override sets provider without model, does not inherit mismatched model', async () => {
|
|
49
49
|
const rpm = new RoutingPolicyManager();
|
|
@@ -55,9 +55,9 @@ describe('RoutingPolicyManager resolve precedence', () => {
|
|
|
55
55
|
});
|
|
56
56
|
it('override with provider+model takes full precedence', async () => {
|
|
57
57
|
const rpm = new RoutingPolicyManager();
|
|
58
|
-
const override = { provider: 'codex', model: 'gpt-5' };
|
|
58
|
+
const override = { provider: 'codex', model: 'gpt-5.1-codex' };
|
|
59
59
|
const resolved = await rpm.resolveProviderForOperation('execute_task', override);
|
|
60
60
|
expect(resolved.provider).toBe('codex');
|
|
61
|
-
expect(resolved.model).toBe('gpt-5');
|
|
61
|
+
expect(resolved.model).toBe('gpt-5.1-codex');
|
|
62
62
|
});
|
|
63
63
|
});
|
|
@@ -42,7 +42,7 @@ export declare function buildAIRoutes(options: {
|
|
|
42
42
|
input: void;
|
|
43
43
|
output: {
|
|
44
44
|
defaultProvider: string;
|
|
45
|
-
operations?: Partial<Record<"execute_task" | "quality_checks" | "
|
|
45
|
+
operations?: Partial<Record<"execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task", {
|
|
46
46
|
provider: string;
|
|
47
47
|
options?: {
|
|
48
48
|
temperature?: number | undefined;
|
|
@@ -62,7 +62,7 @@ export declare function buildAIRoutes(options: {
|
|
|
62
62
|
input: {
|
|
63
63
|
policy: {
|
|
64
64
|
defaultProvider?: string | undefined;
|
|
65
|
-
operations?: Partial<Record<"execute_task" | "quality_checks" | "
|
|
65
|
+
operations?: Partial<Record<"execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task", {
|
|
66
66
|
provider: string;
|
|
67
67
|
options?: {
|
|
68
68
|
temperature?: number | undefined;
|
|
@@ -98,7 +98,6 @@ export declare function buildAIRoutes(options: {
|
|
|
98
98
|
*/
|
|
99
99
|
setOperationConfig: import("@trpc/server").TRPCMutationProcedure<{
|
|
100
100
|
input: {
|
|
101
|
-
operation: "execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview";
|
|
102
101
|
config: {
|
|
103
102
|
provider: string;
|
|
104
103
|
options?: {
|
|
@@ -109,6 +108,7 @@ export declare function buildAIRoutes(options: {
|
|
|
109
108
|
model?: string | undefined;
|
|
110
109
|
fallback?: string[] | undefined;
|
|
111
110
|
};
|
|
111
|
+
operation: "execute_task" | "quality_checks" | "ai_codereview" | "ai_merge" | "improve_task";
|
|
112
112
|
};
|
|
113
113
|
output: {
|
|
114
114
|
success: boolean;
|
|
@@ -65,20 +65,15 @@ export declare function buildExecutionRoutes({ taskService, vibingOrchestrator }
|
|
|
65
65
|
}>;
|
|
66
66
|
readonly improveTask: import("@trpc/server").TRPCMutationProcedure<{
|
|
67
67
|
input: {
|
|
68
|
-
title: string;
|
|
69
68
|
type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
|
|
70
69
|
priority: "low" | "medium" | "high";
|
|
70
|
+
title: string;
|
|
71
71
|
content: string;
|
|
72
72
|
taskId: string;
|
|
73
73
|
executionId?: string | undefined;
|
|
74
74
|
};
|
|
75
75
|
output: {
|
|
76
|
-
|
|
77
|
-
priority: string;
|
|
78
|
-
content: string;
|
|
79
|
-
title?: string;
|
|
80
|
-
executionId: string;
|
|
81
|
-
selectedModel?: string;
|
|
76
|
+
readonly executionId: string;
|
|
82
77
|
};
|
|
83
78
|
meta: object;
|
|
84
79
|
}>;
|
|
@@ -53,13 +53,13 @@ export function buildExecutionRoutes({ taskService, vibingOrchestrator }) {
|
|
|
53
53
|
}))
|
|
54
54
|
.mutation(async ({ input }) => {
|
|
55
55
|
assertTaskActive(input.taskId);
|
|
56
|
-
const
|
|
56
|
+
const { executionId } = await vibingOrchestrator.startTaskImprovement(input.taskId, {
|
|
57
57
|
title: input.title,
|
|
58
58
|
type: input.type,
|
|
59
59
|
priority: input.priority,
|
|
60
60
|
content: input.content,
|
|
61
61
|
}, { executionId: input.executionId });
|
|
62
|
-
return
|
|
62
|
+
return { executionId };
|
|
63
63
|
}),
|
|
64
64
|
onExecutionUpdate: publicProcedure
|
|
65
65
|
.input(z.object({ executionId: z.string() }))
|
|
@@ -69,6 +69,18 @@ export declare function buildProviderConfigRoutes(): {
|
|
|
69
69
|
lastDetected?: string | undefined;
|
|
70
70
|
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
71
71
|
} | undefined;
|
|
72
|
+
gemini?: {
|
|
73
|
+
binPath?: string | undefined;
|
|
74
|
+
detectedPath?: string | undefined;
|
|
75
|
+
lastDetected?: string | undefined;
|
|
76
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
77
|
+
} | undefined;
|
|
78
|
+
amp?: {
|
|
79
|
+
binPath?: string | undefined;
|
|
80
|
+
detectedPath?: string | undefined;
|
|
81
|
+
lastDetected?: string | undefined;
|
|
82
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
83
|
+
} | undefined;
|
|
72
84
|
};
|
|
73
85
|
path: string;
|
|
74
86
|
exists: boolean;
|
|
@@ -107,6 +119,16 @@ export declare function buildProviderConfigRoutes(): {
|
|
|
107
119
|
detectedPath?: string | undefined;
|
|
108
120
|
lastDetected?: string | undefined;
|
|
109
121
|
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
122
|
+
} | {
|
|
123
|
+
binPath?: string | undefined;
|
|
124
|
+
detectedPath?: string | undefined;
|
|
125
|
+
lastDetected?: string | undefined;
|
|
126
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
127
|
+
} | {
|
|
128
|
+
binPath?: string | undefined;
|
|
129
|
+
detectedPath?: string | undefined;
|
|
130
|
+
lastDetected?: string | undefined;
|
|
131
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
110
132
|
} | undefined;
|
|
111
133
|
cached: {
|
|
112
134
|
available: boolean;
|
|
@@ -154,6 +176,18 @@ export declare function buildProviderConfigRouteHandlers(): {
|
|
|
154
176
|
lastDetected?: string | undefined;
|
|
155
177
|
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
156
178
|
} | undefined;
|
|
179
|
+
gemini?: {
|
|
180
|
+
binPath?: string | undefined;
|
|
181
|
+
detectedPath?: string | undefined;
|
|
182
|
+
lastDetected?: string | undefined;
|
|
183
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
184
|
+
} | undefined;
|
|
185
|
+
amp?: {
|
|
186
|
+
binPath?: string | undefined;
|
|
187
|
+
detectedPath?: string | undefined;
|
|
188
|
+
lastDetected?: string | undefined;
|
|
189
|
+
detectionMethod?: "explicit" | "PATH" | "common-location" | undefined;
|
|
190
|
+
} | undefined;
|
|
157
191
|
};
|
|
158
192
|
path: string;
|
|
159
193
|
exists: boolean;
|
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
* tRPC routes for settings management
|
|
3
3
|
*/
|
|
4
4
|
export declare function buildSettingsRoutes(): {
|
|
5
|
+
/**
|
|
6
|
+
* Get current project information
|
|
7
|
+
*/
|
|
8
|
+
getProjectInfo: import("@trpc/server").TRPCQueryProcedure<{
|
|
9
|
+
input: void;
|
|
10
|
+
output: {
|
|
11
|
+
name: string;
|
|
12
|
+
path: string;
|
|
13
|
+
};
|
|
14
|
+
meta: object;
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* Get Vibeman application information
|
|
18
|
+
*/
|
|
19
|
+
getVibemanInfo: import("@trpc/server").TRPCQueryProcedure<{
|
|
20
|
+
input: void;
|
|
21
|
+
output: import("../../lib/server/vibeman-info.js").VibemanInfo;
|
|
22
|
+
meta: object;
|
|
23
|
+
}>;
|
|
5
24
|
/**
|
|
6
25
|
* Get current settings
|
|
7
26
|
*/
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* tRPC routes for settings management
|
|
3
3
|
*/
|
|
4
|
+
import path from 'path';
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
import { publicProcedure } from '../trpc.js';
|
|
6
7
|
import { getSettingsService } from '../../settings-service.js';
|
|
7
8
|
import { QualityPipeline } from '../../workflows/quality-pipeline.js';
|
|
8
9
|
import { getProjectRoot } from '../../lib/server/project-root.js';
|
|
10
|
+
import { getVibemanInfo } from '../../lib/server/vibeman-info.js';
|
|
9
11
|
// Input validation schemas
|
|
10
12
|
const UpdateSettingsInputSchema = z.array(z.object({
|
|
11
13
|
path: z.array(z.string().min(1)),
|
|
@@ -16,6 +18,20 @@ export function buildSettingsRoutes() {
|
|
|
16
18
|
// Initialize settings service on first router build
|
|
17
19
|
settingsService.initialize().catch(console.error);
|
|
18
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
|
+
}),
|
|
19
35
|
/**
|
|
20
36
|
* Get current settings
|
|
21
37
|
*/
|
|
@@ -3,11 +3,11 @@ import type { GitService } from '../../vcs/git-service.js';
|
|
|
3
3
|
export declare function buildTaskRoutes(taskService: TaskService, gitService?: GitService): {
|
|
4
4
|
readonly listTasks: import("@trpc/server").TRPCQueryProcedure<{
|
|
5
5
|
input: {
|
|
6
|
-
status?: "review" | "in-progress" | "backlog" | "done" | undefined;
|
|
7
6
|
type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
|
|
8
|
-
|
|
7
|
+
status?: "backlog" | "in-progress" | "review" | "done" | undefined;
|
|
9
8
|
priority?: "low" | "medium" | "high" | undefined;
|
|
10
9
|
search?: string | undefined;
|
|
10
|
+
tags?: string[] | undefined;
|
|
11
11
|
includeDeleted?: boolean | undefined;
|
|
12
12
|
onlyDeleted?: boolean | undefined;
|
|
13
13
|
} | undefined;
|
|
@@ -23,15 +23,15 @@ export declare function buildTaskRoutes(taskService: TaskService, gitService?: G
|
|
|
23
23
|
}>;
|
|
24
24
|
readonly createTask: import("@trpc/server").TRPCMutationProcedure<{
|
|
25
25
|
input: {
|
|
26
|
-
title: string;
|
|
27
26
|
type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
|
|
27
|
+
title: string;
|
|
28
28
|
content: string;
|
|
29
|
-
status?: "
|
|
29
|
+
status?: "backlog" | "in-progress" | "review" | "done" | undefined;
|
|
30
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
30
31
|
id?: string | undefined;
|
|
31
32
|
tags?: string[] | undefined;
|
|
32
33
|
due_date?: string | undefined;
|
|
33
34
|
assignee?: string[] | undefined;
|
|
34
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
35
35
|
comments?: string[] | undefined;
|
|
36
36
|
};
|
|
37
37
|
output: import("../../types/index.js").Task;
|
|
@@ -40,13 +40,13 @@ export declare function buildTaskRoutes(taskService: TaskService, gitService?: G
|
|
|
40
40
|
readonly updateTask: import("@trpc/server").TRPCMutationProcedure<{
|
|
41
41
|
input: {
|
|
42
42
|
id: string;
|
|
43
|
-
status?: "review" | "in-progress" | "backlog" | "done" | undefined;
|
|
44
|
-
title?: string | undefined;
|
|
45
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;
|
|
46
47
|
tags?: string[] | undefined;
|
|
47
48
|
due_date?: string | undefined;
|
|
48
49
|
assignee?: string[] | undefined;
|
|
49
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
50
50
|
comments?: string[] | undefined;
|
|
51
51
|
content?: string | undefined;
|
|
52
52
|
deleted_at?: string | undefined;
|
|
@@ -65,7 +65,7 @@ export declare function buildTaskRoutes(taskService: TaskService, gitService?: G
|
|
|
65
65
|
}>;
|
|
66
66
|
readonly moveTask: import("@trpc/server").TRPCMutationProcedure<{
|
|
67
67
|
input: {
|
|
68
|
-
status: "
|
|
68
|
+
status: "backlog" | "in-progress" | "review" | "done";
|
|
69
69
|
id: string;
|
|
70
70
|
};
|
|
71
71
|
output: import("../../types/index.js").Task;
|