@specforge/mcp 3.0.3 → 3.0.6

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 (32) hide show
  1. package/dist/autopilot/agents/agent-runner.d.ts.map +1 -1
  2. package/dist/autopilot/agents/agent-runner.js +20 -0
  3. package/dist/autopilot/agents/agent-runner.js.map +1 -1
  4. package/dist/autopilot/api/autopilot-api-client.d.ts.map +1 -1
  5. package/dist/autopilot/api/autopilot-api-client.js +12 -0
  6. package/dist/autopilot/api/autopilot-api-client.js.map +1 -1
  7. package/dist/autopilot/types.d.ts +6 -0
  8. package/dist/autopilot/types.d.ts.map +1 -1
  9. package/dist/autopilot/types.js.map +1 -1
  10. package/dist/cli/commands/check-circular.d.ts +24 -0
  11. package/dist/cli/commands/check-circular.d.ts.map +1 -0
  12. package/dist/cli/commands/check-circular.js +131 -0
  13. package/dist/cli/commands/check-circular.js.map +1 -0
  14. package/dist/cli/commands/critical-path.d.ts +23 -0
  15. package/dist/cli/commands/critical-path.d.ts.map +1 -0
  16. package/dist/cli/commands/critical-path.js +151 -0
  17. package/dist/cli/commands/critical-path.js.map +1 -0
  18. package/dist/cli/commands/index.d.ts +3 -0
  19. package/dist/cli/commands/index.d.ts.map +1 -1
  20. package/dist/cli/commands/index.js +3 -0
  21. package/dist/cli/commands/index.js.map +1 -1
  22. package/dist/cli/commands/tree.d.ts +25 -0
  23. package/dist/cli/commands/tree.d.ts.map +1 -0
  24. package/dist/cli/commands/tree.js +132 -0
  25. package/dist/cli/commands/tree.js.map +1 -0
  26. package/dist/cli/index.d.ts.map +1 -1
  27. package/dist/cli/index.js +7 -1
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +137 -0
  31. package/dist/tools/index.js.map +1 -1
  32. package/package.json +1 -1
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Critical Path Command
3
+ *
4
+ * Display the critical path (longest dependency chain) for a specification.
5
+ */
6
+ import ora from 'ora';
7
+ import { resolveConfig } from '../config/index.js';
8
+ import { withErrorHandler, CliError, NetworkError } from '../middleware/error-handler.js';
9
+ import { printBlank, printHeader } from '../ui/output.js';
10
+ import { colors } from '../ui/colors.js';
11
+ import { ApiClient } from '../../client/api-client.js';
12
+ /**
13
+ * Format ticket ID for display
14
+ */
15
+ function formatTicketId(ticketNumber) {
16
+ return colors.primary(`T-${ticketNumber}`);
17
+ }
18
+ /**
19
+ * Get status color
20
+ */
21
+ function getStatusColor(status) {
22
+ switch (status) {
23
+ case 'done':
24
+ return colors.muted;
25
+ case 'active':
26
+ return colors.primary;
27
+ case 'ready':
28
+ return colors.success;
29
+ case 'pending':
30
+ return colors.warning;
31
+ default:
32
+ return (s) => s;
33
+ }
34
+ }
35
+ /**
36
+ * Display critical path in human-readable format
37
+ */
38
+ function displayCriticalPath(response) {
39
+ printBlank();
40
+ printHeader('Critical Path');
41
+ printBlank();
42
+ if (response.path.length === 0) {
43
+ console.log(colors.muted('No incomplete tickets found.'));
44
+ console.log(colors.muted('All tickets may be completed or there are no dependencies.'));
45
+ printBlank();
46
+ return;
47
+ }
48
+ console.log(`${colors.bold('Length:')} ${response.path.length} tickets`);
49
+ console.log(`${colors.bold('Estimated:')} ${response.totalEstimatedHours}h total`);
50
+ printBlank();
51
+ // Display path as a chain
52
+ console.log(colors.muted('Dependency chain (must be completed in order):'));
53
+ printBlank();
54
+ for (let i = 0; i < response.path.length; i++) {
55
+ const ticket = response.path[i];
56
+ const statusColor = getStatusColor(ticket.status);
57
+ const prefix = i === 0 ? ' ' : ' │\n └──▶ ';
58
+ const isFirst = i === 0;
59
+ if (isFirst) {
60
+ console.log(` ┌── ${formatTicketId(ticket.ticketNumber)}: ${ticket.title}`);
61
+ console.log(` │ Status: ${statusColor(ticket.status)}`);
62
+ }
63
+ else {
64
+ console.log(` │`);
65
+ console.log(` └──▶ ${formatTicketId(ticket.ticketNumber)}: ${ticket.title}`);
66
+ if (i < response.path.length - 1) {
67
+ console.log(` ┌── Status: ${statusColor(ticket.status)}`);
68
+ }
69
+ else {
70
+ console.log(` Status: ${statusColor(ticket.status)}`);
71
+ }
72
+ }
73
+ }
74
+ printBlank();
75
+ console.log(colors.muted('The critical path shows the longest chain of dependent tickets.'));
76
+ console.log(colors.muted('Completing these first will make the most progress.'));
77
+ printBlank();
78
+ }
79
+ /**
80
+ * Critical path command action handler
81
+ */
82
+ export async function criticalPathAction(options) {
83
+ const config = resolveConfig();
84
+ if (!config.apiKey) {
85
+ throw new CliError('Not authenticated', 1, 'Run `specforge login` to authenticate first');
86
+ }
87
+ // Determine specification to use
88
+ const specificationId = options.specificationId || config.specificationId;
89
+ if (!specificationId) {
90
+ throw new CliError('No specification configured', 1, "Run 'specforge init' to set a specification, or use -s/--specification-id");
91
+ }
92
+ const spinner = ora({
93
+ text: 'Calculating critical path...',
94
+ color: 'cyan',
95
+ }).start();
96
+ try {
97
+ const client = new ApiClient({
98
+ apiKey: config.apiKey,
99
+ apiUrl: config.apiUrl,
100
+ debug: config.debug,
101
+ });
102
+ const result = await client.call('get_critical_path', {
103
+ specificationId,
104
+ });
105
+ spinner.stop();
106
+ if (options.json) {
107
+ console.log(JSON.stringify(result, null, 2));
108
+ return;
109
+ }
110
+ displayCriticalPath(result);
111
+ }
112
+ catch (error) {
113
+ spinner.fail('Failed to calculate critical path');
114
+ const message = error instanceof Error ? error.message : 'Unknown error';
115
+ if (message.includes('404') || message.includes('not found')) {
116
+ throw new CliError('Specification not found', 1, 'The configured specification may have been deleted. Run `specforge init` to select a new one.');
117
+ }
118
+ if (message.includes('401') || message.includes('Unauthorized')) {
119
+ throw new CliError('Authentication failed', 1, 'Your API key may be invalid. Run `specforge login` to re-authenticate');
120
+ }
121
+ throw new NetworkError(`Failed to calculate critical path: ${message}`);
122
+ }
123
+ }
124
+ /**
125
+ * Register critical-path command with Commander
126
+ */
127
+ export function registerCriticalPathCommand(program) {
128
+ program
129
+ .command('critical-path')
130
+ .description('Show the critical path (longest dependency chain)')
131
+ .option('-s, --specification-id <id>', 'Specification ID')
132
+ .option('--json', 'Output as JSON')
133
+ .addHelpText('after', `
134
+ Examples:
135
+ $ specforge critical-path # Show critical path for current spec
136
+ $ specforge critical-path --json # Output as JSON
137
+ $ specforge critical-path -s spec-123 # Show for specific specification
138
+
139
+ The critical path is the longest chain of dependent tickets that must be
140
+ completed sequentially. Understanding this path helps with:
141
+
142
+ - Identifying bottlenecks in your implementation plan
143
+ - Prioritizing which tickets to work on first
144
+ - Estimating minimum time to complete all work
145
+
146
+ If the dependency tree has been generated (via \`specforge tree\`), this
147
+ operation runs in O(1) time. Otherwise, it calculates the path on-the-fly.
148
+ `)
149
+ .action(withErrorHandler(criticalPathAction));
150
+ }
151
+ //# sourceMappingURL=critical-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"critical-path.js","sourceRoot":"","sources":["../../../src/cli/commands/critical-path.ts"],"names":[],"mappings":"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"}
@@ -19,4 +19,7 @@ export { registerFeedbackCommand } from './feedback.js';
19
19
  export { registerBlueprintsCommand } from './blueprints.js';
20
20
  export { registerMembersCommand } from './members.js';
21
21
  export { registerInvitationsCommand } from './invitations.js';
22
+ export { registerCheckCircularCommand } from './check-circular.js';
23
+ export { registerTreeCommand } from './tree.js';
24
+ export { registerCriticalPathCommand } from './critical-path.js';
22
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC"}
@@ -19,4 +19,7 @@ export { registerFeedbackCommand } from './feedback.js';
19
19
  export { registerBlueprintsCommand } from './blueprints.js';
20
20
  export { registerMembersCommand } from './members.js';
21
21
  export { registerInvitationsCommand } from './invitations.js';
22
+ export { registerCheckCircularCommand } from './check-circular.js';
23
+ export { registerTreeCommand } from './tree.js';
24
+ export { registerCriticalPathCommand } from './critical-path.js';
22
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Tree Command
3
+ *
4
+ * Generate and display the dependency tree for a specification.
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Command options
9
+ */
10
+ interface TreeOptions {
11
+ specificationId?: string;
12
+ projectId?: string;
13
+ force?: boolean;
14
+ json?: boolean;
15
+ }
16
+ /**
17
+ * Tree command action handler
18
+ */
19
+ export declare function treeAction(options: TreeOptions): Promise<void>;
20
+ /**
21
+ * Register tree command with Commander
22
+ */
23
+ export declare function registerTreeCommand(program: Command): void;
24
+ export {};
25
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/tree.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;GAEG;AACH,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAsFD;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyB1D"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Tree Command
3
+ *
4
+ * Generate and display the dependency tree for a specification.
5
+ */
6
+ import ora from 'ora';
7
+ import { resolveConfig } from '../config/index.js';
8
+ import { withErrorHandler, CliError, NetworkError } from '../middleware/error-handler.js';
9
+ import { printBlank, printHeader } from '../ui/output.js';
10
+ import { colors } from '../ui/colors.js';
11
+ import { ApiClient } from '../../client/api-client.js';
12
+ /**
13
+ * Display tree summary in human-readable format
14
+ */
15
+ function displayTreeSummary(response) {
16
+ printBlank();
17
+ printHeader('Dependency Tree Generated');
18
+ printBlank();
19
+ const summary = response.summary;
20
+ console.log(`Version: ${colors.primary(String(response.version))}`);
21
+ console.log(`Generated: ${colors.muted(new Date(response.generatedAt).toLocaleString())}`);
22
+ printBlank();
23
+ // Ticket counts by status
24
+ console.log(colors.bold('Ticket Status:'));
25
+ console.log(` Pending: ${colors.warning(String(summary.ticketsByStatus.pending))}`);
26
+ console.log(` Ready: ${colors.success(String(summary.ticketsByStatus.ready))}`);
27
+ console.log(` Active: ${colors.primary(String(summary.ticketsByStatus.active))}`);
28
+ console.log(` Done: ${colors.muted(String(summary.ticketsByStatus.done))}`);
29
+ console.log(` Total: ${colors.bold(String(summary.totalTickets))}`);
30
+ printBlank();
31
+ // Ready tickets
32
+ if (summary.readyTickets.length > 0) {
33
+ console.log(`${colors.success(`${summary.readyTickets.length} tickets ready`)} to work on`);
34
+ }
35
+ else {
36
+ console.log(colors.warning('No tickets ready to work on'));
37
+ }
38
+ // Blocked tickets
39
+ if (summary.blockedTickets.length > 0) {
40
+ console.log(`${colors.warning(`${summary.blockedTickets.length} tickets blocked`)} by dependencies`);
41
+ }
42
+ // Critical path
43
+ if (summary.criticalPathLength > 0) {
44
+ console.log(`Critical path: ${colors.primary(`${summary.criticalPathLength} tickets`)} ` +
45
+ `(${summary.criticalPathHours}h estimated)`);
46
+ }
47
+ // Circular dependencies warning
48
+ if (summary.hasCircularDeps) {
49
+ printBlank();
50
+ console.log(colors.error('Warning: Circular dependencies detected!'));
51
+ console.log(colors.muted('Run `specforge check-circular` for details.'));
52
+ }
53
+ printBlank();
54
+ console.log(colors.muted('Use `specforge next` to see the next actionable ticket.'));
55
+ printBlank();
56
+ }
57
+ /**
58
+ * Tree command action handler
59
+ */
60
+ export async function treeAction(options) {
61
+ const config = resolveConfig();
62
+ if (!config.apiKey) {
63
+ throw new CliError('Not authenticated', 1, 'Run `specforge login` to authenticate first');
64
+ }
65
+ // Determine specification to use
66
+ const specificationId = options.specificationId || config.specificationId;
67
+ if (!specificationId && !options.projectId) {
68
+ throw new CliError('No specification configured', 1, "Run 'specforge init' to set a specification, or use -s/--specification-id");
69
+ }
70
+ const spinner = ora({
71
+ text: 'Generating dependency tree...',
72
+ color: 'cyan',
73
+ }).start();
74
+ try {
75
+ const client = new ApiClient({
76
+ apiKey: config.apiKey,
77
+ apiUrl: config.apiUrl,
78
+ debug: config.debug,
79
+ });
80
+ const result = await client.call('generate_dependency_tree', {
81
+ specificationId,
82
+ force: options.force,
83
+ });
84
+ spinner.stop();
85
+ if (options.json) {
86
+ console.log(JSON.stringify(result, null, 2));
87
+ return;
88
+ }
89
+ displayTreeSummary(result);
90
+ }
91
+ catch (error) {
92
+ spinner.fail('Failed to generate dependency tree');
93
+ const message = error instanceof Error ? error.message : 'Unknown error';
94
+ if (message.includes('404') || message.includes('not found')) {
95
+ throw new CliError('Specification not found', 1, 'The configured specification may have been deleted. Run `specforge init` to select a new one.');
96
+ }
97
+ if (message.includes('401') || message.includes('Unauthorized')) {
98
+ throw new CliError('Authentication failed', 1, 'Your API key may be invalid. Run `specforge login` to re-authenticate');
99
+ }
100
+ throw new NetworkError(`Failed to generate dependency tree: ${message}`);
101
+ }
102
+ }
103
+ /**
104
+ * Register tree command with Commander
105
+ */
106
+ export function registerTreeCommand(program) {
107
+ program
108
+ .command('tree')
109
+ .description('Generate and display the dependency tree')
110
+ .option('-s, --specification-id <id>', 'Specification ID to generate tree for')
111
+ .option('-p, --project-id <id>', 'Project ID (generates trees for all specifications)')
112
+ .option('--force', 'Force regeneration even if tree exists')
113
+ .option('--json', 'Output as JSON')
114
+ .addHelpText('after', `
115
+ Examples:
116
+ $ specforge tree # Generate tree for current specification
117
+ $ specforge tree --force # Force regeneration
118
+ $ specforge tree --json # Output as JSON
119
+ $ specforge tree -s spec-123 # Generate for specific specification
120
+
121
+ The tree command pre-computes and stores a dependency tree on the specification.
122
+ This enables fast O(1) reads for operations like:
123
+ - specforge next (get next actionable tickets)
124
+ - specforge blockers (get blocked tickets)
125
+ - specforge critical-path (get critical path)
126
+
127
+ The tree is automatically updated when tickets or dependencies change,
128
+ but you can regenerate it manually with --force if needed.
129
+ `)
130
+ .action(withErrorHandler(treeAction));
131
+ }
132
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/cli/commands/tree.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAyCvD;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAA8B;IACxD,UAAU,EAAE,CAAC;IACb,WAAW,CAAC,2BAA2B,CAAC,CAAC;IACzC,UAAU,EAAE,CAAC;IAEb,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAEjC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3F,UAAU,EAAE,CAAC;IAEb,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IACxE,UAAU,EAAE,CAAC;IAEb,gBAAgB;IAChB,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IACvG,CAAC;IAED,gBAAgB;IAChB,IAAI,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CACT,kBAAkB,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,UAAU,CAAC,GAAG;YAC5E,IAAI,OAAO,CAAC,iBAAiB,cAAc,CAC5C,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;IACrF,UAAU,EAAE,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAoB;IACnD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAChB,mBAAmB,EACnB,CAAC,EACD,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC;IAE1E,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,IAAI,QAAQ,CAChB,6BAA6B,EAC7B,CAAC,EACD,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,MAAM;KACd,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAuB,0BAA0B,EAAE;YACjF,eAAe;YACf,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAEzE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,QAAQ,CAChB,yBAAyB,EACzB,CAAC,EACD,+FAA+F,CAChG,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,QAAQ,CAChB,uBAAuB,EACvB,CAAC,EACD,uEAAuE,CACxE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,YAAY,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,6BAA6B,EAAE,uCAAuC,CAAC;SAC9E,MAAM,CAAC,uBAAuB,EAAE,qDAAqD,CAAC;SACtF,MAAM,CAAC,SAAS,EAAE,wCAAwC,CAAC;SAC3D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;CAezB,CAAC;SACG,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC;;GAEG;AACH,QAAA,MAAM,WAAW,UAAU,CAAC;AAiL5B;;GAEG;AACH,QAAA,MAAM,OAAO,SAAkB,CAAC;AAShC;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CAQ1D;AAED;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC;;GAEG;AACH,QAAA,MAAM,WAAW,UAAU,CAAC;AA0L5B;;GAEG;AACH,QAAA,MAAM,OAAO,SAAkB,CAAC;AAShC;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CAQ1D;AAED;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC"}
package/dist/cli/index.js CHANGED
@@ -9,7 +9,7 @@ import { authGuardHook } from './middleware/auth-guard.js';
9
9
  import { withErrorHandler, debugLog } from './middleware/error-handler.js';
10
10
  import { resolveConfig } from './config/loader.js';
11
11
  import { colors } from './ui/index.js';
12
- import { registerLoginCommand, registerInitCommand, registerConfigureCommand, registerDoctorCommand, registerStatusCommand, registerProjectsCommand, registerSpecsCommand, registerSwitchCommand, registerTicketsCommand, registerNextCommand, registerBlockedCommand, registerFeedbackCommand, registerBlueprintsCommand, registerMembersCommand, registerInvitationsCommand, } from './commands/index.js';
12
+ import { registerLoginCommand, registerInitCommand, registerConfigureCommand, registerDoctorCommand, registerStatusCommand, registerProjectsCommand, registerSpecsCommand, registerSwitchCommand, registerTicketsCommand, registerNextCommand, registerBlockedCommand, registerFeedbackCommand, registerBlueprintsCommand, registerMembersCommand, registerInvitationsCommand, registerCheckCircularCommand, registerTreeCommand, registerCriticalPathCommand, } from './commands/index.js';
13
13
  import { registerTicketCommand } from './commands/ticket/index.js';
14
14
  import { registerSessionCommands } from './commands/session/index.js';
15
15
  import { registerDebugCommands } from './commands/debug/index.js';
@@ -109,6 +109,12 @@ function registerCommands(program) {
109
109
  registerNextCommand(program);
110
110
  // E10 - Blocked Command (implemented)
111
111
  registerBlockedCommand(program);
112
+ // Check Circular Dependencies Command (implemented)
113
+ registerCheckCircularCommand(program);
114
+ // Tree Command (implemented)
115
+ registerTreeCommand(program);
116
+ // Critical Path Command (implemented)
117
+ registerCriticalPathCommand(program);
112
118
  // E11 - Ticket Command (implemented)
113
119
  registerTicketCommand(program);
114
120
  // E12 - Session Commands (implemented)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAML,gBAAgB,EAKjB,MAAM,wBAAwB,CAAC;AAwBhC;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AA+ED,wBAAgB,QAAQ,IAAI,IAAI,EAAE,CAu6EjC;AAED;;GAEG;AACH,KAAK,WAAW,GAAG,CACjB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;AA6EtB;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,GACnB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAqlC7B;AAqCD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,OAAO,CAAC,CA4DlB;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAOrC;AAGD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAML,gBAAgB,EAKjB,MAAM,wBAAwB,CAAC;AAwBhC;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAgFD,wBAAgB,QAAQ,IAAI,IAAI,EAAE,CAugFjC;AAED;;GAEG;AACH,KAAK,WAAW,GAAG,CACjB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;AA6EtB;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,GACnB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAmoC7B;AAqCD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,OAAO,CAAC,CA4DlB;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAOrC;AAGD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC"}
@@ -66,6 +66,7 @@ const READ_TOOL_NAMES = new Set([
66
66
  'lookup_tickets_by_status',
67
67
  // Dependency operations
68
68
  'get_dependency_tree',
69
+ 'check_circular_dependencies',
69
70
  // Context operations
70
71
  'get_implementation_context',
71
72
  'get_next_actionable_tickets',
@@ -602,6 +603,29 @@ Optional includes (ignored when summary=true):
602
603
  required: ['specificationId'],
603
604
  },
604
605
  },
606
+ {
607
+ name: 'check_circular_dependencies',
608
+ description: `Check for circular dependencies between tickets in a specification.
609
+
610
+ Returns any cycles found where tickets depend on each other in a loop (e.g., A→B→C→A).
611
+
612
+ Examples:
613
+ - check_circular_dependencies specificationId="spec-123"
614
+ - check_circular_dependencies projectId="proj-123" // Check all specs in project`,
615
+ inputSchema: {
616
+ type: 'object',
617
+ properties: {
618
+ specificationId: {
619
+ type: 'string',
620
+ description: 'Specification ID to check (optional if projectId provided)',
621
+ },
622
+ projectId: {
623
+ type: 'string',
624
+ description: 'Project ID to check all specifications (optional if specificationId provided)',
625
+ },
626
+ },
627
+ },
628
+ },
605
629
  // ========================================================================
606
630
  // Context & AI Tools (Epic 4)
607
631
  // ========================================================================
@@ -814,6 +838,34 @@ Optional includes (ignored when summary=true):
814
838
  required: ['ticketId', 'progress'],
815
839
  },
816
840
  },
841
+ {
842
+ name: 'pause_work_session',
843
+ description: 'Pause work on a ticket, setting it back to ready status. Use this to temporarily pause work on a ticket without completing it.',
844
+ inputSchema: {
845
+ type: 'object',
846
+ properties: {
847
+ ticketId: {
848
+ type: 'string',
849
+ description: 'The ID of the ticket to pause',
850
+ },
851
+ },
852
+ required: ['ticketId'],
853
+ },
854
+ },
855
+ {
856
+ name: 'resume_work_session',
857
+ description: 'Resume work on a paused ticket, setting it to active status. Use this to continue work on a ticket that was previously paused.',
858
+ inputSchema: {
859
+ type: 'object',
860
+ properties: {
861
+ ticketId: {
862
+ type: 'string',
863
+ description: 'The ID of the ticket to resume',
864
+ },
865
+ },
866
+ required: ['ticketId'],
867
+ },
868
+ },
817
869
  // ========================================================================
818
870
  // Status & Analytics Tools (Epic 8)
819
871
  // ========================================================================
@@ -2534,6 +2586,51 @@ At least one scope filter (projectId, specificationId, or epicId) is required.`,
2534
2586
  },
2535
2587
  },
2536
2588
  },
2589
+ // ========================================================================
2590
+ // Delete Operations
2591
+ // ========================================================================
2592
+ {
2593
+ name: 'delete_ticket',
2594
+ description: 'Delete a ticket and all its related records (dependencies, test results, discoveries, blueprint references)',
2595
+ inputSchema: {
2596
+ type: 'object',
2597
+ properties: {
2598
+ ticketId: {
2599
+ type: 'string',
2600
+ description: 'The ID of the ticket to delete',
2601
+ },
2602
+ },
2603
+ required: ['ticketId'],
2604
+ },
2605
+ },
2606
+ {
2607
+ name: 'delete_epic',
2608
+ description: 'Delete an epic and cascade delete all its tickets and related records',
2609
+ inputSchema: {
2610
+ type: 'object',
2611
+ properties: {
2612
+ epicId: {
2613
+ type: 'string',
2614
+ description: 'The ID of the epic to delete',
2615
+ },
2616
+ },
2617
+ required: ['epicId'],
2618
+ },
2619
+ },
2620
+ {
2621
+ name: 'delete_specification',
2622
+ description: 'Delete a specification and cascade delete all epics, tickets, and related records',
2623
+ inputSchema: {
2624
+ type: 'object',
2625
+ properties: {
2626
+ specificationId: {
2627
+ type: 'string',
2628
+ description: 'The ID of the specification to delete',
2629
+ },
2630
+ },
2631
+ required: ['specificationId'],
2632
+ },
2633
+ },
2537
2634
  ];
2538
2635
  // Apply format parameter to all read operations
2539
2636
  return tools.map(tool => READ_TOOL_NAMES.has(tool.name) ? addFormatParameter(tool) : tool);
@@ -2789,6 +2886,13 @@ export function createToolHandlers(apiClient) {
2789
2886
  specificationId: args.specificationId,
2790
2887
  });
2791
2888
  },
2889
+ check_circular_dependencies: async (_client, args) => {
2890
+ const argsWithContext = injectContext(args, ['specificationId', 'projectId']);
2891
+ return await apiClient.call('check_circular_dependencies', {
2892
+ specificationId: argsWithContext.specificationId,
2893
+ projectId: argsWithContext.projectId,
2894
+ });
2895
+ },
2792
2896
  // ========================================================================
2793
2897
  // Context & AI Tools
2794
2898
  // ========================================================================
@@ -3033,6 +3137,18 @@ export function createToolHandlers(apiClient) {
3033
3137
  message: args.message,
3034
3138
  });
3035
3139
  },
3140
+ pause_work_session: async (_client, args) => {
3141
+ validateRequired(args, 'ticketId');
3142
+ return await apiClient.call('pause_work_session', {
3143
+ ticketId: args.ticketId,
3144
+ });
3145
+ },
3146
+ resume_work_session: async (_client, args) => {
3147
+ validateRequired(args, 'ticketId');
3148
+ return await apiClient.call('resume_work_session', {
3149
+ ticketId: args.ticketId,
3150
+ });
3151
+ },
3036
3152
  // ========================================================================
3037
3153
  // Status & Analytics Tools
3038
3154
  // ========================================================================
@@ -3613,6 +3729,27 @@ export function createToolHandlers(apiClient) {
3613
3729
  includeSent: args.includeSent,
3614
3730
  });
3615
3731
  },
3732
+ // ========================================================================
3733
+ // Delete Operations
3734
+ // ========================================================================
3735
+ delete_ticket: async (_client, args) => {
3736
+ validateRequired(args, 'ticketId');
3737
+ return await apiClient.call('delete_ticket', {
3738
+ ticketId: args.ticketId,
3739
+ });
3740
+ },
3741
+ delete_epic: async (_client, args) => {
3742
+ validateRequired(args, 'epicId');
3743
+ return await apiClient.call('delete_epic', {
3744
+ epicId: args.epicId,
3745
+ });
3746
+ },
3747
+ delete_specification: async (_client, args) => {
3748
+ validateRequired(args, 'specificationId');
3749
+ return await apiClient.call('delete_specification', {
3750
+ specificationId: args.specificationId,
3751
+ });
3752
+ },
3616
3753
  };
3617
3754
  }
3618
3755
  /**