@vibescope/mcp-server 0.2.2 → 0.2.4
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/CHANGELOG.md +84 -0
- package/README.md +35 -20
- package/dist/api-client.d.ts +276 -8
- package/dist/api-client.js +128 -9
- package/dist/handlers/blockers.d.ts +11 -0
- package/dist/handlers/blockers.js +37 -2
- package/dist/handlers/bodies-of-work.d.ts +2 -0
- package/dist/handlers/bodies-of-work.js +30 -1
- package/dist/handlers/connectors.js +2 -2
- package/dist/handlers/decisions.d.ts +11 -0
- package/dist/handlers/decisions.js +37 -2
- package/dist/handlers/deployment.d.ts +6 -0
- package/dist/handlers/deployment.js +33 -5
- package/dist/handlers/discovery.js +27 -11
- package/dist/handlers/fallback.js +12 -6
- package/dist/handlers/file-checkouts.d.ts +1 -0
- package/dist/handlers/file-checkouts.js +17 -2
- package/dist/handlers/findings.d.ts +5 -0
- package/dist/handlers/findings.js +19 -2
- package/dist/handlers/git-issues.js +4 -2
- package/dist/handlers/ideas.d.ts +5 -0
- package/dist/handlers/ideas.js +19 -2
- package/dist/handlers/progress.js +2 -2
- package/dist/handlers/project.d.ts +1 -0
- package/dist/handlers/project.js +35 -2
- package/dist/handlers/requests.js +6 -3
- package/dist/handlers/roles.js +13 -2
- package/dist/handlers/session.d.ts +12 -0
- package/dist/handlers/session.js +288 -25
- package/dist/handlers/sprints.d.ts +2 -0
- package/dist/handlers/sprints.js +30 -1
- package/dist/handlers/tasks.d.ts +25 -2
- package/dist/handlers/tasks.js +228 -35
- package/dist/handlers/tool-docs.js +72 -5
- package/dist/templates/agent-guidelines.d.ts +18 -0
- package/dist/templates/agent-guidelines.js +207 -0
- package/dist/tools.js +478 -125
- package/dist/utils.d.ts +5 -2
- package/dist/utils.js +90 -51
- package/package.json +51 -46
- package/scripts/version-bump.ts +203 -0
- package/src/api-client.test.ts +8 -3
- package/src/api-client.ts +376 -13
- package/src/handlers/__test-setup__.ts +5 -0
- package/src/handlers/blockers.test.ts +76 -0
- package/src/handlers/blockers.ts +56 -2
- package/src/handlers/bodies-of-work.ts +59 -1
- package/src/handlers/connectors.ts +2 -2
- package/src/handlers/decisions.test.ts +71 -2
- package/src/handlers/decisions.ts +56 -2
- package/src/handlers/deployment.test.ts +81 -0
- package/src/handlers/deployment.ts +38 -5
- package/src/handlers/discovery.ts +27 -11
- package/src/handlers/fallback.test.ts +11 -10
- package/src/handlers/fallback.ts +14 -8
- package/src/handlers/file-checkouts.test.ts +83 -3
- package/src/handlers/file-checkouts.ts +22 -2
- package/src/handlers/findings.test.ts +2 -2
- package/src/handlers/findings.ts +38 -2
- package/src/handlers/git-issues.test.ts +2 -2
- package/src/handlers/git-issues.ts +4 -2
- package/src/handlers/ideas.test.ts +1 -1
- package/src/handlers/ideas.ts +34 -2
- package/src/handlers/progress.ts +2 -2
- package/src/handlers/project.ts +47 -2
- package/src/handlers/requests.test.ts +38 -7
- package/src/handlers/requests.ts +6 -3
- package/src/handlers/roles.test.ts +1 -1
- package/src/handlers/roles.ts +20 -2
- package/src/handlers/session.test.ts +303 -4
- package/src/handlers/session.ts +335 -28
- package/src/handlers/sprints.ts +61 -1
- package/src/handlers/tasks.test.ts +0 -73
- package/src/handlers/tasks.ts +269 -40
- package/src/handlers/tool-docs.ts +77 -5
- package/src/handlers/types.test.ts +259 -0
- package/src/templates/agent-guidelines.ts +210 -0
- package/src/tools.ts +479 -125
- package/src/utils.test.ts +7 -5
- package/src/utils.ts +95 -51
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@vibescope/mcp-server` will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Test writing reminders in developer workflow - `update_task(status: "in_progress")` now includes test guidance
|
|
12
|
+
- Test check in validation workflow - `claim_validation` now checks for test file modifications in PR
|
|
13
|
+
- PR link display on completed tasks in dashboard
|
|
14
|
+
- Smart task selection respecting sprints, bodies of work, phases and dependencies
|
|
15
|
+
- `get_project_summary` endpoint for unified project overview
|
|
16
|
+
- `get_file_checkouts_stats` endpoint for aggregate file lock statistics
|
|
17
|
+
- Pagination support for `get_pending_requests`, `get_deployment_requirements`, `get_decisions`, `get_blockers`
|
|
18
|
+
- Offset pagination for `get_git_issues`, `get_file_checkouts`, `get_activity_history`
|
|
19
|
+
- Pagination for scheduled deployments, activity schedules, and stale worktrees
|
|
20
|
+
- New project settings: `require_pr_for_validation`, `auto_merge_on_approval`, `validation_required`, `default_task_priority`, `require_time_estimates`, `fallback_activities_enabled`, `git_delete_branch_on_merge`
|
|
21
|
+
- Stats endpoints for blockers and decisions
|
|
22
|
+
- Automatic semantic version bumping script (`scripts/version-bump.ts`)
|
|
23
|
+
- Version npm scripts: `version:check`, `version:bump`, `version:patch`, `version:minor`, `version:major`
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- Worktree naming now includes agent persona and short task description for easier identification
|
|
27
|
+
- Return `unanswered_questions_count` instead of full array in session responses for token efficiency
|
|
28
|
+
|
|
29
|
+
## [0.2.3] - 2026-01-14
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
- Route complete_task through proxy endpoint for proper authentication
|
|
33
|
+
- Surface unanswered questions prominently in start_work_session
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
- Improved session context type handling for completeTask
|
|
37
|
+
|
|
38
|
+
## [0.2.2] - 2026-01-13
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
- Token tracking module with unit tests
|
|
42
|
+
- Connector handlers with unit tests
|
|
43
|
+
- Custom connectors support for external integrations
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
- Refactored duplicate tool definitions from index.ts
|
|
47
|
+
|
|
48
|
+
## [0.2.1] - 2026-01-12
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
- Unit tests for blockers, decisions, and findings handlers
|
|
52
|
+
- Stats endpoints for blockers, decisions, and findings
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
- Security vulnerability in @modelcontextprotocol/sdk (GHSA-8r9q-7v3j-jr4g)
|
|
56
|
+
|
|
57
|
+
## [0.2.0] - 2026-01-11
|
|
58
|
+
|
|
59
|
+
### Added
|
|
60
|
+
- Deployment priority feature - active deployments block regular task assignment
|
|
61
|
+
- Background activity history and scheduling
|
|
62
|
+
- Agent creator tracking for tasks, ideas, blockers, decisions
|
|
63
|
+
- Setup CLI package for guided onboarding
|
|
64
|
+
|
|
65
|
+
### Changed
|
|
66
|
+
- Updated get_next_task tool description to mention deployment blocking
|
|
67
|
+
- Enhanced CLAUDE.md with deployment priority instructions
|
|
68
|
+
|
|
69
|
+
## [0.1.0] - 2026-01-10
|
|
70
|
+
|
|
71
|
+
### Added
|
|
72
|
+
- Initial release of MCP server for Vibescope
|
|
73
|
+
- Core tools: tasks, projects, sessions, progress tracking
|
|
74
|
+
- Background activity support (fallback activities)
|
|
75
|
+
- Git workflow integration with worktree support
|
|
76
|
+
- Validation workflow for cross-agent task validation
|
|
77
|
+
- Deployment coordination tools
|
|
78
|
+
|
|
79
|
+
[Unreleased]: https://github.com/Nonatomic/Vibescope/compare/v0.2.3...HEAD
|
|
80
|
+
[0.2.3]: https://github.com/Nonatomic/Vibescope/compare/v0.2.2...v0.2.3
|
|
81
|
+
[0.2.2]: https://github.com/Nonatomic/Vibescope/compare/v0.2.1...v0.2.2
|
|
82
|
+
[0.2.1]: https://github.com/Nonatomic/Vibescope/compare/v0.2.0...v0.2.1
|
|
83
|
+
[0.2.0]: https://github.com/Nonatomic/Vibescope/compare/v0.1.0...v0.2.0
|
|
84
|
+
[0.1.0]: https://github.com/Nonatomic/Vibescope/releases/tag/v0.1.0
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ Use directly in your MCP config without installing:
|
|
|
13
13
|
"mcpServers": {
|
|
14
14
|
"vibescope": {
|
|
15
15
|
"command": "npx",
|
|
16
|
-
"args": ["-y", "-p", "@vibescope/mcp-server", "vibescope-mcp"],
|
|
16
|
+
"args": ["-y", "-p", "@vibescope/mcp-server@latest", "vibescope-mcp"],
|
|
17
17
|
"env": {
|
|
18
18
|
"VIBESCOPE_API_KEY": "your-api-key"
|
|
19
19
|
}
|
|
@@ -25,7 +25,7 @@ Use directly in your MCP config without installing:
|
|
|
25
25
|
### Option 2: Global Install
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
npm install -g @vibescope/mcp-server
|
|
28
|
+
npm install -g @vibescope/mcp-server@latest
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Then configure:
|
|
@@ -43,43 +43,58 @@ Then configure:
|
|
|
43
43
|
}
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
## Quick Start
|
|
47
|
+
|
|
48
|
+
### Claude Code
|
|
47
49
|
|
|
48
50
|
```bash
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
claude mcp add vibescope npx @vibescope/mcp-server@latest \
|
|
52
|
+
--env VIBESCOPE_API_KEY=your_key
|
|
53
|
+
```
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
pnpm install
|
|
55
|
-
pnpm build
|
|
55
|
+
### Gemini CLI
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
```
|
|
57
|
+
Add to your `~/.gemini/settings.json` or project-level `.gemini/settings.json`:
|
|
59
58
|
|
|
60
59
|
```json
|
|
61
60
|
{
|
|
62
61
|
"mcpServers": {
|
|
63
62
|
"vibescope": {
|
|
64
|
-
"command": "
|
|
65
|
-
"args": ["/
|
|
63
|
+
"command": "npx",
|
|
64
|
+
"args": ["-y", "-p", "@vibescope/mcp-server@latest", "vibescope-mcp"],
|
|
66
65
|
"env": {
|
|
67
|
-
"VIBESCOPE_API_KEY": "
|
|
68
|
-
}
|
|
66
|
+
"VIBESCOPE_API_KEY": "$VIBESCOPE_API_KEY"
|
|
67
|
+
},
|
|
68
|
+
"timeout": 30000,
|
|
69
|
+
"trust": true
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
```
|
|
73
74
|
|
|
74
|
-
|
|
75
|
+
Then set your API key as an environment variable:
|
|
76
|
+
```bash
|
|
77
|
+
export VIBESCOPE_API_KEY=your_key_here
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## How to Call MCP Tools (Important for AI Agents)
|
|
75
81
|
|
|
76
|
-
|
|
82
|
+
MCP tools are invoked **from within your AI conversation**, not via command line.
|
|
77
83
|
|
|
84
|
+
**WRONG - CLI does not have a 'call' command:**
|
|
78
85
|
```bash
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
# This does NOT work
|
|
87
|
+
claude mcp call vibescope start_work_session '{"git_url": "..."}'
|
|
81
88
|
```
|
|
82
89
|
|
|
90
|
+
**RIGHT - Call tools within your conversation response:**
|
|
91
|
+
```
|
|
92
|
+
# Invoke as a tool call, same as Read, Edit, or Bash
|
|
93
|
+
mcp__vibescope__start_work_session(git_url: "...", model: "opus")
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The CLI commands (`claude mcp`, `gemini mcp`) are only for **server configuration** (`add`, `remove`, `list`), not for calling tools. All tool invocations happen within the AI conversation context.
|
|
97
|
+
|
|
83
98
|
## Getting an API Key
|
|
84
99
|
|
|
85
100
|
1. Sign up at [vibescope.dev](https://vibescope.dev)
|
|
@@ -88,7 +103,7 @@ claude mcp add vibescope npx @vibescope/mcp-server \
|
|
|
88
103
|
|
|
89
104
|
## Available Tools
|
|
90
105
|
|
|
91
|
-
The MCP server provides **
|
|
106
|
+
The MCP server provides **140+ tools** for AI agents. Here are the key tools by category:
|
|
92
107
|
|
|
93
108
|
### Session
|
|
94
109
|
| Tool | Description |
|
package/dist/api-client.d.ts
CHANGED
|
@@ -31,6 +31,8 @@ export declare class VibescopeApiClient {
|
|
|
31
31
|
mode?: 'lite' | 'full';
|
|
32
32
|
model?: 'opus' | 'sonnet' | 'haiku';
|
|
33
33
|
role?: 'developer' | 'validator' | 'deployer' | 'reviewer' | 'maintainer';
|
|
34
|
+
hostname?: string;
|
|
35
|
+
agent_type?: 'claude' | 'gemini' | 'cursor' | 'windsurf' | 'other';
|
|
34
36
|
}): Promise<ApiResponse<{
|
|
35
37
|
session_started: boolean;
|
|
36
38
|
session_id?: string;
|
|
@@ -96,10 +98,34 @@ export declare class VibescopeApiClient {
|
|
|
96
98
|
example: string;
|
|
97
99
|
note: string;
|
|
98
100
|
};
|
|
101
|
+
agent_setup?: {
|
|
102
|
+
agent_type: string;
|
|
103
|
+
is_new_agent_type: boolean;
|
|
104
|
+
setup_required: boolean;
|
|
105
|
+
instructions: string;
|
|
106
|
+
config_file: string;
|
|
107
|
+
template_url?: string;
|
|
108
|
+
steps: string[];
|
|
109
|
+
};
|
|
110
|
+
stale_worktrees?: Array<{
|
|
111
|
+
task_id: string;
|
|
112
|
+
task_title: string;
|
|
113
|
+
worktree_path: string;
|
|
114
|
+
worktree_hostname?: string | null;
|
|
115
|
+
}>;
|
|
116
|
+
stale_worktrees_count?: number;
|
|
117
|
+
cleanup_action?: string;
|
|
118
|
+
awaiting_validation?: Array<{
|
|
119
|
+
id: string;
|
|
120
|
+
title?: string;
|
|
121
|
+
}>;
|
|
122
|
+
validation_priority?: boolean;
|
|
123
|
+
next_action?: string;
|
|
99
124
|
error?: string;
|
|
100
125
|
}>>;
|
|
101
126
|
heartbeat(sessionId: string, options?: {
|
|
102
127
|
current_worktree_path?: string | null;
|
|
128
|
+
hostname?: string;
|
|
103
129
|
}): Promise<ApiResponse<{
|
|
104
130
|
success: boolean;
|
|
105
131
|
session_id: string;
|
|
@@ -192,6 +218,14 @@ export declare class VibescopeApiClient {
|
|
|
192
218
|
git_auto_tag?: boolean;
|
|
193
219
|
deployment_instructions?: string;
|
|
194
220
|
agent_instructions?: string;
|
|
221
|
+
git_delete_branch_on_merge?: boolean;
|
|
222
|
+
require_pr_for_validation?: boolean;
|
|
223
|
+
auto_merge_on_approval?: boolean;
|
|
224
|
+
validation_required?: boolean;
|
|
225
|
+
default_task_priority?: number;
|
|
226
|
+
require_time_estimates?: boolean;
|
|
227
|
+
fallback_activities_enabled?: boolean;
|
|
228
|
+
preferred_fallback_activities?: string[];
|
|
195
229
|
}): Promise<ApiResponse<{
|
|
196
230
|
success: boolean;
|
|
197
231
|
project_id: string;
|
|
@@ -283,6 +317,121 @@ export declare class VibescopeApiClient {
|
|
|
283
317
|
working_agent_session_id?: string;
|
|
284
318
|
};
|
|
285
319
|
}>>;
|
|
320
|
+
/**
|
|
321
|
+
* Get a single task by ID with optional subtasks and milestones
|
|
322
|
+
*/
|
|
323
|
+
getTaskById(taskId: string, params?: {
|
|
324
|
+
include_subtasks?: boolean;
|
|
325
|
+
include_milestones?: boolean;
|
|
326
|
+
}): Promise<ApiResponse<{
|
|
327
|
+
task: {
|
|
328
|
+
id: string;
|
|
329
|
+
title: string;
|
|
330
|
+
description?: string;
|
|
331
|
+
priority: number;
|
|
332
|
+
status: string;
|
|
333
|
+
progress_percentage?: number;
|
|
334
|
+
estimated_minutes?: number;
|
|
335
|
+
started_at?: string;
|
|
336
|
+
completed_at?: string;
|
|
337
|
+
git_branch?: string;
|
|
338
|
+
references?: Array<{
|
|
339
|
+
url: string;
|
|
340
|
+
label?: string;
|
|
341
|
+
}>;
|
|
342
|
+
};
|
|
343
|
+
subtasks?: Array<{
|
|
344
|
+
id: string;
|
|
345
|
+
title: string;
|
|
346
|
+
status: string;
|
|
347
|
+
progress_percentage?: number;
|
|
348
|
+
}>;
|
|
349
|
+
milestones?: Array<{
|
|
350
|
+
id: string;
|
|
351
|
+
title: string;
|
|
352
|
+
status: string;
|
|
353
|
+
order_index: number;
|
|
354
|
+
}>;
|
|
355
|
+
}>>;
|
|
356
|
+
/**
|
|
357
|
+
* Search tasks by text query with pagination
|
|
358
|
+
*/
|
|
359
|
+
searchTasks(projectId: string, params: {
|
|
360
|
+
query: string;
|
|
361
|
+
status?: string[];
|
|
362
|
+
limit?: number;
|
|
363
|
+
offset?: number;
|
|
364
|
+
}): Promise<ApiResponse<{
|
|
365
|
+
tasks: Array<{
|
|
366
|
+
id: string;
|
|
367
|
+
title: string;
|
|
368
|
+
status: string;
|
|
369
|
+
priority: number;
|
|
370
|
+
snippet?: string;
|
|
371
|
+
}>;
|
|
372
|
+
total_matches: number;
|
|
373
|
+
hint?: string;
|
|
374
|
+
}>>;
|
|
375
|
+
/**
|
|
376
|
+
* Get tasks filtered by priority with pagination
|
|
377
|
+
*/
|
|
378
|
+
getTasksByPriority(projectId: string, params?: {
|
|
379
|
+
priority?: number;
|
|
380
|
+
priority_max?: number;
|
|
381
|
+
status?: string;
|
|
382
|
+
limit?: number;
|
|
383
|
+
offset?: number;
|
|
384
|
+
}): Promise<ApiResponse<{
|
|
385
|
+
tasks: Array<{
|
|
386
|
+
id: string;
|
|
387
|
+
title: string;
|
|
388
|
+
priority: number;
|
|
389
|
+
status: string;
|
|
390
|
+
estimated_minutes?: number;
|
|
391
|
+
}>;
|
|
392
|
+
total_count: number;
|
|
393
|
+
}>>;
|
|
394
|
+
/**
|
|
395
|
+
* Get recent tasks (newest or oldest) with pagination
|
|
396
|
+
*/
|
|
397
|
+
getRecentTasks(projectId: string, params?: {
|
|
398
|
+
order?: 'newest' | 'oldest';
|
|
399
|
+
status?: string;
|
|
400
|
+
limit?: number;
|
|
401
|
+
offset?: number;
|
|
402
|
+
}): Promise<ApiResponse<{
|
|
403
|
+
tasks: Array<{
|
|
404
|
+
id: string;
|
|
405
|
+
title: string;
|
|
406
|
+
status: string;
|
|
407
|
+
priority: number;
|
|
408
|
+
created_at: string;
|
|
409
|
+
age?: string;
|
|
410
|
+
}>;
|
|
411
|
+
total_count: number;
|
|
412
|
+
}>>;
|
|
413
|
+
/**
|
|
414
|
+
* Get task statistics for a project
|
|
415
|
+
*/
|
|
416
|
+
getTaskStats(projectId: string): Promise<ApiResponse<{
|
|
417
|
+
total: number;
|
|
418
|
+
by_status: {
|
|
419
|
+
backlog: number;
|
|
420
|
+
pending: number;
|
|
421
|
+
in_progress: number;
|
|
422
|
+
completed: number;
|
|
423
|
+
cancelled: number;
|
|
424
|
+
};
|
|
425
|
+
by_priority: {
|
|
426
|
+
1: number;
|
|
427
|
+
2: number;
|
|
428
|
+
3: number;
|
|
429
|
+
4: number;
|
|
430
|
+
5: number;
|
|
431
|
+
};
|
|
432
|
+
awaiting_validation: number;
|
|
433
|
+
oldest_pending_days: number | null;
|
|
434
|
+
}>>;
|
|
286
435
|
updateTask(taskId: string, updates: {
|
|
287
436
|
title?: string;
|
|
288
437
|
description?: string;
|
|
@@ -394,6 +543,10 @@ export declare class VibescopeApiClient {
|
|
|
394
543
|
deleteBlocker(blockerId: string): Promise<ApiResponse<{
|
|
395
544
|
success: boolean;
|
|
396
545
|
}>>;
|
|
546
|
+
getBlockersStats(projectId: string): Promise<ApiResponse<{
|
|
547
|
+
total: number;
|
|
548
|
+
by_status: Record<string, number>;
|
|
549
|
+
}>>;
|
|
397
550
|
getDecisions(projectId: string, options?: {
|
|
398
551
|
limit?: number;
|
|
399
552
|
offset?: number;
|
|
@@ -420,6 +573,9 @@ export declare class VibescopeApiClient {
|
|
|
420
573
|
deleteDecision(decisionId: string): Promise<ApiResponse<{
|
|
421
574
|
success: boolean;
|
|
422
575
|
}>>;
|
|
576
|
+
getDecisionsStats(projectId: string): Promise<ApiResponse<{
|
|
577
|
+
total: number;
|
|
578
|
+
}>>;
|
|
423
579
|
getIdeas(projectId: string, params?: {
|
|
424
580
|
status?: string;
|
|
425
581
|
limit?: number;
|
|
@@ -572,13 +728,15 @@ export declare class VibescopeApiClient {
|
|
|
572
728
|
deleteMilestone(milestoneId: string): Promise<ApiResponse<{
|
|
573
729
|
success: boolean;
|
|
574
730
|
}>>;
|
|
575
|
-
getPendingRequests(projectId: string, sessionId?: string): Promise<ApiResponse<{
|
|
731
|
+
getPendingRequests(projectId: string, sessionId?: string, limit?: number, offset?: number): Promise<ApiResponse<{
|
|
576
732
|
requests: Array<{
|
|
577
733
|
id: string;
|
|
578
734
|
request_type: string;
|
|
579
735
|
message: string;
|
|
580
736
|
created_at: string;
|
|
581
737
|
}>;
|
|
738
|
+
total_count: number;
|
|
739
|
+
has_more: boolean;
|
|
582
740
|
}>>;
|
|
583
741
|
acknowledgeRequest(requestId: string, sessionId?: string): Promise<ApiResponse<{
|
|
584
742
|
success: boolean;
|
|
@@ -645,7 +803,10 @@ export declare class VibescopeApiClient {
|
|
|
645
803
|
latest_by_type: Record<string, unknown>;
|
|
646
804
|
count: number;
|
|
647
805
|
}>>;
|
|
648
|
-
getActivitySchedules(projectId: string
|
|
806
|
+
getActivitySchedules(projectId: string, params?: {
|
|
807
|
+
limit?: number;
|
|
808
|
+
offset?: number;
|
|
809
|
+
}): Promise<ApiResponse<{
|
|
649
810
|
schedules: Array<{
|
|
650
811
|
id: string;
|
|
651
812
|
activity_type: string;
|
|
@@ -653,8 +814,8 @@ export declare class VibescopeApiClient {
|
|
|
653
814
|
next_run_at?: string;
|
|
654
815
|
enabled: boolean;
|
|
655
816
|
}>;
|
|
656
|
-
|
|
657
|
-
|
|
817
|
+
total_count: number;
|
|
818
|
+
has_more: boolean;
|
|
658
819
|
}>>;
|
|
659
820
|
addSubtask(parentTaskId: string, params: {
|
|
660
821
|
title: string;
|
|
@@ -802,6 +963,27 @@ export declare class VibescopeApiClient {
|
|
|
802
963
|
}): Promise<ApiResponse<{
|
|
803
964
|
success: boolean;
|
|
804
965
|
}>>;
|
|
966
|
+
/**
|
|
967
|
+
* Report actual API token usage for accurate cost tracking.
|
|
968
|
+
* This records token usage to the session and attributes cost to the current task.
|
|
969
|
+
*/
|
|
970
|
+
reportTokenUsage(sessionId: string, params: {
|
|
971
|
+
input_tokens: number;
|
|
972
|
+
output_tokens: number;
|
|
973
|
+
model?: 'opus' | 'sonnet' | 'haiku';
|
|
974
|
+
}): Promise<ApiResponse<{
|
|
975
|
+
success: boolean;
|
|
976
|
+
reported: {
|
|
977
|
+
session_id: string;
|
|
978
|
+
model: string;
|
|
979
|
+
input_tokens: number;
|
|
980
|
+
output_tokens: number;
|
|
981
|
+
total_tokens: number;
|
|
982
|
+
estimated_cost_usd: number;
|
|
983
|
+
};
|
|
984
|
+
task_attributed: boolean;
|
|
985
|
+
task_id?: string;
|
|
986
|
+
}>>;
|
|
805
987
|
listOrganizations(): Promise<ApiResponse<{
|
|
806
988
|
organizations: Array<{
|
|
807
989
|
id: string;
|
|
@@ -1009,6 +1191,7 @@ export declare class VibescopeApiClient {
|
|
|
1009
1191
|
issue_type?: string;
|
|
1010
1192
|
branch?: string;
|
|
1011
1193
|
limit?: number;
|
|
1194
|
+
offset?: number;
|
|
1012
1195
|
}): Promise<ApiResponse<{
|
|
1013
1196
|
git_issues: Array<{
|
|
1014
1197
|
id: string;
|
|
@@ -1172,6 +1355,8 @@ export declare class VibescopeApiClient {
|
|
|
1172
1355
|
getDeploymentRequirements(projectId: string, params?: {
|
|
1173
1356
|
status?: string;
|
|
1174
1357
|
stage?: string;
|
|
1358
|
+
limit?: number;
|
|
1359
|
+
offset?: number;
|
|
1175
1360
|
}): Promise<ApiResponse<{
|
|
1176
1361
|
requirements: Array<{
|
|
1177
1362
|
id: string;
|
|
@@ -1181,6 +1366,14 @@ export declare class VibescopeApiClient {
|
|
|
1181
1366
|
status: string;
|
|
1182
1367
|
stage: string;
|
|
1183
1368
|
}>;
|
|
1369
|
+
total_count: number;
|
|
1370
|
+
has_more: boolean;
|
|
1371
|
+
}>>;
|
|
1372
|
+
getDeploymentRequirementsStats(projectId: string): Promise<ApiResponse<{
|
|
1373
|
+
total: number;
|
|
1374
|
+
by_status: Record<string, number>;
|
|
1375
|
+
by_stage: Record<string, number>;
|
|
1376
|
+
by_type: Record<string, number>;
|
|
1184
1377
|
}>>;
|
|
1185
1378
|
completeDeploymentRequirement(requirementId: string): Promise<ApiResponse<{
|
|
1186
1379
|
success: boolean;
|
|
@@ -1198,7 +1391,11 @@ export declare class VibescopeApiClient {
|
|
|
1198
1391
|
success: boolean;
|
|
1199
1392
|
schedule_id: string;
|
|
1200
1393
|
}>>;
|
|
1201
|
-
getScheduledDeployments(projectId: string,
|
|
1394
|
+
getScheduledDeployments(projectId: string, params?: {
|
|
1395
|
+
includeDisabled?: boolean;
|
|
1396
|
+
limit?: number;
|
|
1397
|
+
offset?: number;
|
|
1398
|
+
}): Promise<ApiResponse<{
|
|
1202
1399
|
schedules: Array<{
|
|
1203
1400
|
id: string;
|
|
1204
1401
|
scheduled_at: string;
|
|
@@ -1211,8 +1408,8 @@ export declare class VibescopeApiClient {
|
|
|
1211
1408
|
git_ref?: string;
|
|
1212
1409
|
notes?: string;
|
|
1213
1410
|
}>;
|
|
1214
|
-
|
|
1215
|
-
|
|
1411
|
+
total_count: number;
|
|
1412
|
+
has_more: boolean;
|
|
1216
1413
|
}>>;
|
|
1217
1414
|
updateScheduledDeployment(scheduleId: string, updates: {
|
|
1218
1415
|
scheduled_at?: string;
|
|
@@ -1253,6 +1450,51 @@ export declare class VibescopeApiClient {
|
|
|
1253
1450
|
success: boolean;
|
|
1254
1451
|
project_id: string;
|
|
1255
1452
|
}>>;
|
|
1453
|
+
getProjectSummary(projectId: string): Promise<ApiResponse<{
|
|
1454
|
+
project: {
|
|
1455
|
+
id: string;
|
|
1456
|
+
name: string;
|
|
1457
|
+
description?: string;
|
|
1458
|
+
goal?: string;
|
|
1459
|
+
status: string;
|
|
1460
|
+
git_url?: string;
|
|
1461
|
+
tech_stack?: string[];
|
|
1462
|
+
git_workflow?: string;
|
|
1463
|
+
};
|
|
1464
|
+
tasks: {
|
|
1465
|
+
total: number;
|
|
1466
|
+
by_status: Record<string, number>;
|
|
1467
|
+
};
|
|
1468
|
+
blockers: {
|
|
1469
|
+
total: number;
|
|
1470
|
+
open: number;
|
|
1471
|
+
resolved: number;
|
|
1472
|
+
};
|
|
1473
|
+
findings: {
|
|
1474
|
+
total: number;
|
|
1475
|
+
by_severity: Record<string, number>;
|
|
1476
|
+
by_status: Record<string, number>;
|
|
1477
|
+
};
|
|
1478
|
+
agents: {
|
|
1479
|
+
active_count: number;
|
|
1480
|
+
total_tokens_this_session: number;
|
|
1481
|
+
total_tool_calls: number;
|
|
1482
|
+
};
|
|
1483
|
+
activity: {
|
|
1484
|
+
tasks_completed_today: number;
|
|
1485
|
+
progress_entries_today: number;
|
|
1486
|
+
};
|
|
1487
|
+
deployment: {
|
|
1488
|
+
active: boolean;
|
|
1489
|
+
status: string | null;
|
|
1490
|
+
last_deployment_at: string | null;
|
|
1491
|
+
};
|
|
1492
|
+
planning: {
|
|
1493
|
+
active_sprints: number;
|
|
1494
|
+
active_bodies_of_work: number;
|
|
1495
|
+
pending_deployment_requirements: number;
|
|
1496
|
+
};
|
|
1497
|
+
}>>;
|
|
1256
1498
|
getHelpTopic(slug: string): Promise<ApiResponse<{
|
|
1257
1499
|
slug: string;
|
|
1258
1500
|
title: string;
|
|
@@ -1283,6 +1525,7 @@ export declare class VibescopeApiClient {
|
|
|
1283
1525
|
status?: string;
|
|
1284
1526
|
file_path?: string;
|
|
1285
1527
|
limit?: number;
|
|
1528
|
+
offset?: number;
|
|
1286
1529
|
}): Promise<ApiResponse<{
|
|
1287
1530
|
checkouts: Array<{
|
|
1288
1531
|
id: string;
|
|
@@ -1304,22 +1547,38 @@ export declare class VibescopeApiClient {
|
|
|
1304
1547
|
checkout_id: string;
|
|
1305
1548
|
message: string;
|
|
1306
1549
|
}>>;
|
|
1307
|
-
|
|
1550
|
+
getFileCheckoutsStats(projectId: string): Promise<ApiResponse<{
|
|
1551
|
+
total: number;
|
|
1552
|
+
by_status: Record<string, number>;
|
|
1553
|
+
}>>;
|
|
1554
|
+
getStaleWorktrees(projectId: string, params?: {
|
|
1555
|
+
hostname?: string;
|
|
1556
|
+
limit?: number;
|
|
1557
|
+
offset?: number;
|
|
1558
|
+
}): Promise<ApiResponse<{
|
|
1308
1559
|
project_id: string;
|
|
1309
1560
|
project_name: string;
|
|
1561
|
+
hostname_filter: string | null;
|
|
1310
1562
|
stale_worktrees: Array<{
|
|
1311
1563
|
task_id: string;
|
|
1312
1564
|
task_title: string;
|
|
1313
1565
|
worktree_path: string;
|
|
1566
|
+
worktree_hostname: string | null;
|
|
1314
1567
|
git_branch: string | null;
|
|
1315
1568
|
status: string;
|
|
1316
1569
|
completed_at: string | null;
|
|
1317
1570
|
updated_at: string;
|
|
1318
1571
|
pr_url: string | null;
|
|
1319
1572
|
stale_reason: 'task_finished' | 'potentially_abandoned';
|
|
1573
|
+
can_cleanup_locally: boolean;
|
|
1320
1574
|
}>;
|
|
1321
1575
|
count: number;
|
|
1576
|
+
local_count: number;
|
|
1577
|
+
remote_count: number;
|
|
1578
|
+
total_count: number;
|
|
1579
|
+
has_more: boolean;
|
|
1322
1580
|
cleanup_instructions: string[] | null;
|
|
1581
|
+
remote_worktree_note: string | null;
|
|
1323
1582
|
}>>;
|
|
1324
1583
|
clearWorktreePath(taskId: string): Promise<ApiResponse<{
|
|
1325
1584
|
success: boolean;
|
|
@@ -1413,6 +1672,15 @@ export declare class VibescopeApiClient {
|
|
|
1413
1672
|
total_count: number;
|
|
1414
1673
|
has_more: boolean;
|
|
1415
1674
|
}>>;
|
|
1675
|
+
/**
|
|
1676
|
+
* Confirm that agent setup is complete for a project.
|
|
1677
|
+
* This marks the agent type as onboarded so future sessions don't receive setup instructions.
|
|
1678
|
+
*/
|
|
1679
|
+
confirmAgentSetup(projectId: string, agentType: 'claude' | 'gemini' | 'cursor' | 'windsurf' | 'other'): Promise<ApiResponse<{
|
|
1680
|
+
success: boolean;
|
|
1681
|
+
project_id: string;
|
|
1682
|
+
agent_type: string;
|
|
1683
|
+
}>>;
|
|
1416
1684
|
}
|
|
1417
1685
|
export declare function getApiClient(): VibescopeApiClient;
|
|
1418
1686
|
export declare function initApiClient(config: ApiClientConfig): VibescopeApiClient;
|