@rengler33/prov 0.1.1
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/README.md +314 -0
- package/dist/cli.d.ts +26 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +381 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/agent.d.ts +107 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +197 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/agent.test.d.ts +5 -0
- package/dist/commands/agent.test.d.ts.map +1 -0
- package/dist/commands/agent.test.js +199 -0
- package/dist/commands/agent.test.js.map +1 -0
- package/dist/commands/constraint.d.ts +100 -0
- package/dist/commands/constraint.d.ts.map +1 -0
- package/dist/commands/constraint.js +763 -0
- package/dist/commands/constraint.js.map +1 -0
- package/dist/commands/constraint.test.d.ts +9 -0
- package/dist/commands/constraint.test.d.ts.map +1 -0
- package/dist/commands/constraint.test.js +470 -0
- package/dist/commands/constraint.test.js.map +1 -0
- package/dist/commands/graph.d.ts +99 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +552 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/graph.test.d.ts +2 -0
- package/dist/commands/graph.test.d.ts.map +1 -0
- package/dist/commands/graph.test.js +258 -0
- package/dist/commands/graph.test.js.map +1 -0
- package/dist/commands/impact.d.ts +83 -0
- package/dist/commands/impact.d.ts.map +1 -0
- package/dist/commands/impact.js +319 -0
- package/dist/commands/impact.js.map +1 -0
- package/dist/commands/impact.test.d.ts +2 -0
- package/dist/commands/impact.test.d.ts.map +1 -0
- package/dist/commands/impact.test.js +234 -0
- package/dist/commands/impact.test.js.map +1 -0
- package/dist/commands/init.d.ts +45 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +94 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/init.test.d.ts +7 -0
- package/dist/commands/init.test.d.ts.map +1 -0
- package/dist/commands/init.test.js +174 -0
- package/dist/commands/init.test.js.map +1 -0
- package/dist/commands/integration.test.d.ts +10 -0
- package/dist/commands/integration.test.d.ts.map +1 -0
- package/dist/commands/integration.test.js +456 -0
- package/dist/commands/integration.test.js.map +1 -0
- package/dist/commands/mcp.d.ts +21 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +616 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/mcp.test.d.ts +7 -0
- package/dist/commands/mcp.test.d.ts.map +1 -0
- package/dist/commands/mcp.test.js +132 -0
- package/dist/commands/mcp.test.js.map +1 -0
- package/dist/commands/plan.d.ts +218 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +1307 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/plan.test.d.ts +9 -0
- package/dist/commands/plan.test.d.ts.map +1 -0
- package/dist/commands/plan.test.js +569 -0
- package/dist/commands/plan.test.js.map +1 -0
- package/dist/commands/spec.d.ts +94 -0
- package/dist/commands/spec.d.ts.map +1 -0
- package/dist/commands/spec.js +635 -0
- package/dist/commands/spec.js.map +1 -0
- package/dist/commands/spec.test.d.ts +9 -0
- package/dist/commands/spec.test.d.ts.map +1 -0
- package/dist/commands/spec.test.js +407 -0
- package/dist/commands/spec.test.js.map +1 -0
- package/dist/commands/trace.d.ts +157 -0
- package/dist/commands/trace.d.ts.map +1 -0
- package/dist/commands/trace.js +847 -0
- package/dist/commands/trace.js.map +1 -0
- package/dist/commands/trace.test.d.ts +9 -0
- package/dist/commands/trace.test.d.ts.map +1 -0
- package/dist/commands/trace.test.js +524 -0
- package/dist/commands/trace.test.js.map +1 -0
- package/dist/graph.d.ts +204 -0
- package/dist/graph.d.ts.map +1 -0
- package/dist/graph.js +496 -0
- package/dist/graph.js.map +1 -0
- package/dist/graph.test.d.ts +2 -0
- package/dist/graph.test.d.ts.map +1 -0
- package/dist/graph.test.js +382 -0
- package/dist/graph.test.js.map +1 -0
- package/dist/hash.d.ts +72 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +137 -0
- package/dist/hash.js.map +1 -0
- package/dist/hash.test.d.ts +2 -0
- package/dist/hash.test.d.ts.map +1 -0
- package/dist/hash.test.js +227 -0
- package/dist/hash.test.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +11 -0
- package/dist/index.test.js.map +1 -0
- package/dist/output.d.ts +84 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +175 -0
- package/dist/output.js.map +1 -0
- package/dist/output.test.d.ts +7 -0
- package/dist/output.test.d.ts.map +1 -0
- package/dist/output.test.js +146 -0
- package/dist/output.test.js.map +1 -0
- package/dist/staleness.d.ts +162 -0
- package/dist/staleness.d.ts.map +1 -0
- package/dist/staleness.js +309 -0
- package/dist/staleness.js.map +1 -0
- package/dist/staleness.test.d.ts +2 -0
- package/dist/staleness.test.d.ts.map +1 -0
- package/dist/staleness.test.js +448 -0
- package/dist/staleness.test.js.map +1 -0
- package/dist/storage.d.ts +267 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +623 -0
- package/dist/storage.js.map +1 -0
- package/dist/storage.test.d.ts +5 -0
- package/dist/storage.test.d.ts.map +1 -0
- package/dist/storage.test.js +434 -0
- package/dist/storage.test.js.map +1 -0
- package/dist/types.d.ts +270 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/types.test.d.ts +2 -0
- package/dist/types.test.d.ts.map +1 -0
- package/dist/types.test.js +232 -0
- package/dist/types.test.js.map +1 -0
- package/dist/watcher.d.ts +139 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +406 -0
- package/dist/watcher.js.map +1 -0
- package/dist/watcher.test.d.ts +5 -0
- package/dist/watcher.test.d.ts.map +1 -0
- package/dist/watcher.test.js +327 -0
- package/dist/watcher.test.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for prov MCP server.
|
|
3
|
+
*
|
|
4
|
+
* @see req:agent:mcp-integration
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
7
|
+
import { existsSync, rmSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { tmpdir } from 'node:os';
|
|
10
|
+
import { createMcpServer, setProjectRoot } from './mcp.js';
|
|
11
|
+
import { runInit } from './init.js';
|
|
12
|
+
import { runSpecAdd } from './spec.js';
|
|
13
|
+
import { runPlanCreate } from './plan.js';
|
|
14
|
+
// Sample valid spec YAML
|
|
15
|
+
const VALID_SPEC = `id: spec:test-feature:v1
|
|
16
|
+
version: 1.0.0
|
|
17
|
+
title: Test Feature Specification
|
|
18
|
+
status: active
|
|
19
|
+
|
|
20
|
+
intent: |
|
|
21
|
+
A test specification for MCP testing.
|
|
22
|
+
|
|
23
|
+
requirements:
|
|
24
|
+
- id: req:test-feature:init
|
|
25
|
+
description: Initialize the test feature
|
|
26
|
+
acceptance:
|
|
27
|
+
- Feature can be initialized
|
|
28
|
+
|
|
29
|
+
- id: req:test-feature:run
|
|
30
|
+
description: Run the test feature
|
|
31
|
+
acceptance:
|
|
32
|
+
- Feature can be executed
|
|
33
|
+
`;
|
|
34
|
+
describe('MCP server', () => {
|
|
35
|
+
let testDir;
|
|
36
|
+
beforeEach(() => {
|
|
37
|
+
// Create a unique test directory
|
|
38
|
+
testDir = join(tmpdir(), `prov-mcp-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
39
|
+
mkdirSync(testDir, { recursive: true });
|
|
40
|
+
mkdirSync(join(testDir, 'spec'), { recursive: true });
|
|
41
|
+
// Set project root for MCP server
|
|
42
|
+
setProjectRoot(testDir);
|
|
43
|
+
// Mock stdout/stderr to suppress output
|
|
44
|
+
vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
45
|
+
vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
|
|
46
|
+
vi.spyOn(process, 'exit').mockImplementation((code) => {
|
|
47
|
+
throw new Error(`Process exited with code ${String(code)}`);
|
|
48
|
+
});
|
|
49
|
+
// Initialize prov
|
|
50
|
+
runInit({ dir: testDir }, {});
|
|
51
|
+
});
|
|
52
|
+
afterEach(() => {
|
|
53
|
+
// Reset project root
|
|
54
|
+
setProjectRoot(undefined);
|
|
55
|
+
// Clean up test directory
|
|
56
|
+
if (existsSync(testDir)) {
|
|
57
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
58
|
+
}
|
|
59
|
+
vi.restoreAllMocks();
|
|
60
|
+
});
|
|
61
|
+
describe('createMcpServer', () => {
|
|
62
|
+
it('should create a server instance', () => {
|
|
63
|
+
const server = createMcpServer();
|
|
64
|
+
expect(server).toBeDefined();
|
|
65
|
+
});
|
|
66
|
+
it('should create server with setRequestHandler method', () => {
|
|
67
|
+
const server = createMcpServer();
|
|
68
|
+
expect(typeof server.setRequestHandler).toBe('function');
|
|
69
|
+
});
|
|
70
|
+
it('should create server with connect method', () => {
|
|
71
|
+
const server = createMcpServer();
|
|
72
|
+
expect(typeof server.connect).toBe('function');
|
|
73
|
+
});
|
|
74
|
+
it('should create server with close method', () => {
|
|
75
|
+
const server = createMcpServer();
|
|
76
|
+
expect(typeof server.close).toBe('function');
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('MCP server with data', () => {
|
|
81
|
+
let testDir;
|
|
82
|
+
beforeEach(() => {
|
|
83
|
+
testDir = join(tmpdir(), `prov-mcp-data-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
84
|
+
mkdirSync(testDir, { recursive: true });
|
|
85
|
+
mkdirSync(join(testDir, 'spec'), { recursive: true });
|
|
86
|
+
mkdirSync(join(testDir, 'src'), { recursive: true });
|
|
87
|
+
setProjectRoot(testDir);
|
|
88
|
+
vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
89
|
+
vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
|
|
90
|
+
vi.spyOn(process, 'exit').mockImplementation((code) => {
|
|
91
|
+
throw new Error(`Process exited with code ${String(code)}`);
|
|
92
|
+
});
|
|
93
|
+
runInit({ dir: testDir }, {});
|
|
94
|
+
});
|
|
95
|
+
afterEach(() => {
|
|
96
|
+
setProjectRoot(undefined);
|
|
97
|
+
if (existsSync(testDir)) {
|
|
98
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
99
|
+
}
|
|
100
|
+
vi.restoreAllMocks();
|
|
101
|
+
});
|
|
102
|
+
it('should create server after adding spec', () => {
|
|
103
|
+
// Add a spec
|
|
104
|
+
const specPath = join(testDir, 'spec', 'test.spec.yaml');
|
|
105
|
+
writeFileSync(specPath, VALID_SPEC);
|
|
106
|
+
runSpecAdd({ dir: testDir }, 'spec/test.spec.yaml', {});
|
|
107
|
+
const server = createMcpServer();
|
|
108
|
+
expect(server).toBeDefined();
|
|
109
|
+
});
|
|
110
|
+
it('should create server after adding spec and plan', () => {
|
|
111
|
+
// Add spec and create plan
|
|
112
|
+
const specPath = join(testDir, 'spec', 'test.spec.yaml');
|
|
113
|
+
writeFileSync(specPath, VALID_SPEC);
|
|
114
|
+
runSpecAdd({ dir: testDir }, 'spec/test.spec.yaml', {});
|
|
115
|
+
runPlanCreate({ dir: testDir }, { from: ['spec:test-feature:v1'] });
|
|
116
|
+
const server = createMcpServer();
|
|
117
|
+
expect(server).toBeDefined();
|
|
118
|
+
});
|
|
119
|
+
it('should create server with artifact files', () => {
|
|
120
|
+
// Add spec, create plan, and create an artifact
|
|
121
|
+
const specPath = join(testDir, 'spec', 'test.spec.yaml');
|
|
122
|
+
writeFileSync(specPath, VALID_SPEC);
|
|
123
|
+
runSpecAdd({ dir: testDir }, 'spec/test.spec.yaml', {});
|
|
124
|
+
runPlanCreate({ dir: testDir }, { from: ['spec:test-feature:v1'] });
|
|
125
|
+
// Create a source file
|
|
126
|
+
const srcPath = join(testDir, 'src', 'feature.ts');
|
|
127
|
+
writeFileSync(srcPath, 'export function init() { console.log("init"); }');
|
|
128
|
+
const server = createMcpServer();
|
|
129
|
+
expect(server).toBeDefined();
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=mcp.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.test.js","sourceRoot":"","sources":["../../src/commands/mcp.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* prov plan commands implementation.
|
|
3
|
+
*
|
|
4
|
+
* Commands for managing implementation plans:
|
|
5
|
+
* - plan create: Create a new plan from specs and constraints
|
|
6
|
+
* - plan show: Display plan details
|
|
7
|
+
* - plan validate: Validate plan completeness
|
|
8
|
+
*
|
|
9
|
+
* @see req:cli:plan-create
|
|
10
|
+
* @see req:cli:plan-show
|
|
11
|
+
* @see req:cli:plan-validate
|
|
12
|
+
*/
|
|
13
|
+
import { type GlobalOptions } from '../cli.js';
|
|
14
|
+
import type { PlanId, DecisionId, StepId, SourceReference, Hash, EntityStatus } from '../types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Options for plan create command.
|
|
17
|
+
*/
|
|
18
|
+
export interface PlanCreateOptions {
|
|
19
|
+
from: string[];
|
|
20
|
+
with?: string[];
|
|
21
|
+
output?: string;
|
|
22
|
+
interactive?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result of plan create command.
|
|
26
|
+
*/
|
|
27
|
+
export interface PlanCreateResult {
|
|
28
|
+
success: boolean;
|
|
29
|
+
planId?: PlanId;
|
|
30
|
+
hash?: Hash;
|
|
31
|
+
stepCount?: number;
|
|
32
|
+
decisionCount?: number;
|
|
33
|
+
outputFile?: string;
|
|
34
|
+
error?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Options for plan show command.
|
|
38
|
+
*/
|
|
39
|
+
export interface PlanShowOptions {
|
|
40
|
+
format?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Step entry for show output.
|
|
44
|
+
*/
|
|
45
|
+
export interface StepEntry {
|
|
46
|
+
id: StepId;
|
|
47
|
+
number: number;
|
|
48
|
+
action: string;
|
|
49
|
+
status: string;
|
|
50
|
+
tracesTo: string[];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Decision entry for show output.
|
|
54
|
+
*/
|
|
55
|
+
export interface DecisionEntry {
|
|
56
|
+
id: DecisionId;
|
|
57
|
+
question: string;
|
|
58
|
+
choice: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Result of plan show command.
|
|
62
|
+
*/
|
|
63
|
+
export interface PlanShowResult {
|
|
64
|
+
success: boolean;
|
|
65
|
+
plan?: {
|
|
66
|
+
id: PlanId;
|
|
67
|
+
version: string;
|
|
68
|
+
title: string;
|
|
69
|
+
status: EntityStatus;
|
|
70
|
+
sources: SourceReference[];
|
|
71
|
+
decisions: DecisionEntry[];
|
|
72
|
+
steps: StepEntry[];
|
|
73
|
+
hash?: Hash;
|
|
74
|
+
};
|
|
75
|
+
error?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Options for plan validate command.
|
|
79
|
+
*/
|
|
80
|
+
export interface PlanValidateOptions {
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validation issue.
|
|
84
|
+
*/
|
|
85
|
+
export interface PlanValidationIssue {
|
|
86
|
+
severity: 'error' | 'warning';
|
|
87
|
+
planId?: string;
|
|
88
|
+
message: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Result of plan validate command.
|
|
92
|
+
*/
|
|
93
|
+
export interface PlanValidateResult {
|
|
94
|
+
valid: boolean;
|
|
95
|
+
issues: PlanValidationIssue[];
|
|
96
|
+
plansChecked: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Plan entry for list output.
|
|
100
|
+
*/
|
|
101
|
+
export interface PlanListEntry {
|
|
102
|
+
id: PlanId;
|
|
103
|
+
version: string;
|
|
104
|
+
title: string;
|
|
105
|
+
status: EntityStatus | 'stale' | 'missing';
|
|
106
|
+
hash: string;
|
|
107
|
+
steps: number;
|
|
108
|
+
decisions: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Execute the plan create command.
|
|
112
|
+
*
|
|
113
|
+
* Creates a new plan scaffold based on the specified specs and constraints.
|
|
114
|
+
*
|
|
115
|
+
* @see req:cli:plan-create
|
|
116
|
+
*/
|
|
117
|
+
export declare function runPlanCreate(globalOpts: GlobalOptions, options: PlanCreateOptions): void;
|
|
118
|
+
/**
|
|
119
|
+
* Execute the plan show command.
|
|
120
|
+
*
|
|
121
|
+
* @see req:cli:plan-show
|
|
122
|
+
*/
|
|
123
|
+
export declare function runPlanShow(globalOpts: GlobalOptions, planIdStr: string, _options: PlanShowOptions): void;
|
|
124
|
+
/**
|
|
125
|
+
* Execute the plan validate command.
|
|
126
|
+
*
|
|
127
|
+
* Validates plan completeness and consistency.
|
|
128
|
+
*
|
|
129
|
+
* @see req:cli:plan-validate
|
|
130
|
+
*/
|
|
131
|
+
export declare function runPlanValidate(globalOpts: GlobalOptions, _options: PlanValidateOptions): void;
|
|
132
|
+
/**
|
|
133
|
+
* Options for plan next command.
|
|
134
|
+
*/
|
|
135
|
+
export interface PlanNextOptions {
|
|
136
|
+
format?: string;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Result of plan next command.
|
|
140
|
+
*/
|
|
141
|
+
export interface PlanNextResult {
|
|
142
|
+
success: boolean;
|
|
143
|
+
planId?: PlanId;
|
|
144
|
+
step?: StepEntry;
|
|
145
|
+
message?: string;
|
|
146
|
+
error?: string;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Execute the plan next command.
|
|
150
|
+
*
|
|
151
|
+
* Returns the next unimplemented step in the plan.
|
|
152
|
+
*
|
|
153
|
+
* @see req:agent:step-execution
|
|
154
|
+
*/
|
|
155
|
+
export declare function runPlanNext(globalOpts: GlobalOptions, planIdStr: string, _options: PlanNextOptions): void;
|
|
156
|
+
/**
|
|
157
|
+
* Options for plan remaining command.
|
|
158
|
+
*/
|
|
159
|
+
export interface PlanRemainingOptions {
|
|
160
|
+
format?: string;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Result of plan remaining command.
|
|
164
|
+
*/
|
|
165
|
+
export interface PlanRemainingResult {
|
|
166
|
+
success: boolean;
|
|
167
|
+
planId?: PlanId;
|
|
168
|
+
remainingSteps?: StepEntry[];
|
|
169
|
+
totalSteps?: number;
|
|
170
|
+
completedSteps?: number;
|
|
171
|
+
error?: string;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Execute the plan remaining command.
|
|
175
|
+
*
|
|
176
|
+
* Lists all unimplemented steps in the plan.
|
|
177
|
+
*
|
|
178
|
+
* @see req:cli:plan-remaining
|
|
179
|
+
*/
|
|
180
|
+
export declare function runPlanRemaining(globalOpts: GlobalOptions, planIdStr: string, _options: PlanRemainingOptions): void;
|
|
181
|
+
/**
|
|
182
|
+
* Options for plan progress command.
|
|
183
|
+
*/
|
|
184
|
+
export interface PlanProgressOptions {
|
|
185
|
+
format?: string;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Progress breakdown by status.
|
|
189
|
+
*/
|
|
190
|
+
export interface ProgressBreakdown {
|
|
191
|
+
pending: number;
|
|
192
|
+
inProgress: number;
|
|
193
|
+
completed: number;
|
|
194
|
+
blocked: number;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Result of plan progress command.
|
|
198
|
+
*/
|
|
199
|
+
export interface PlanProgressResult {
|
|
200
|
+
success: boolean;
|
|
201
|
+
planId?: PlanId;
|
|
202
|
+
progress?: {
|
|
203
|
+
totalSteps: number;
|
|
204
|
+
completedSteps: number;
|
|
205
|
+
percentComplete: number;
|
|
206
|
+
breakdown: ProgressBreakdown;
|
|
207
|
+
};
|
|
208
|
+
error?: string;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Execute the plan progress command.
|
|
212
|
+
*
|
|
213
|
+
* Shows completion percentage and breakdown for a plan.
|
|
214
|
+
*
|
|
215
|
+
* @see req:agent:step-execution
|
|
216
|
+
*/
|
|
217
|
+
export declare function runPlanProgress(globalOpts: GlobalOptions, planIdStr: string, _options: PlanProgressOptions): void;
|
|
218
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
|