@planu/cli 1.9.0 → 1.11.0

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 (157) hide show
  1. package/dist/config/license-plans.json +5 -0
  2. package/dist/engine/compliance/evidence-builder.d.ts +19 -0
  3. package/dist/engine/compliance/evidence-builder.d.ts.map +1 -0
  4. package/dist/engine/compliance/evidence-builder.js +36 -0
  5. package/dist/engine/compliance/evidence-builder.js.map +1 -0
  6. package/dist/engine/compliance/framework-catalog.d.ts +15 -0
  7. package/dist/engine/compliance/framework-catalog.d.ts.map +1 -0
  8. package/dist/engine/compliance/framework-catalog.js +134 -0
  9. package/dist/engine/compliance/framework-catalog.js.map +1 -0
  10. package/dist/engine/compliance/gap-analyzer.d.ts +11 -0
  11. package/dist/engine/compliance/gap-analyzer.d.ts.map +1 -0
  12. package/dist/engine/compliance/gap-analyzer.js +39 -0
  13. package/dist/engine/compliance/gap-analyzer.js.map +1 -0
  14. package/dist/engine/distribution/cost-estimator.d.ts +8 -0
  15. package/dist/engine/distribution/cost-estimator.d.ts.map +1 -0
  16. package/dist/engine/distribution/cost-estimator.js +113 -0
  17. package/dist/engine/distribution/cost-estimator.js.map +1 -0
  18. package/dist/engine/distribution/diagram-generator.d.ts +12 -0
  19. package/dist/engine/distribution/diagram-generator.d.ts.map +1 -0
  20. package/dist/engine/distribution/diagram-generator.js +59 -0
  21. package/dist/engine/distribution/diagram-generator.js.map +1 -0
  22. package/dist/engine/distribution/readiness-analyzer.d.ts +4 -0
  23. package/dist/engine/distribution/readiness-analyzer.d.ts.map +1 -0
  24. package/dist/engine/distribution/readiness-analyzer.js +61 -0
  25. package/dist/engine/distribution/readiness-analyzer.js.map +1 -0
  26. package/dist/engine/distribution/runbook-generator.d.ts +7 -0
  27. package/dist/engine/distribution/runbook-generator.d.ts.map +1 -0
  28. package/dist/engine/distribution/runbook-generator.js +42 -0
  29. package/dist/engine/distribution/runbook-generator.js.map +1 -0
  30. package/dist/engine/mcp-hub/adapter-registry.d.ts +23 -0
  31. package/dist/engine/mcp-hub/adapter-registry.d.ts.map +1 -0
  32. package/dist/engine/mcp-hub/adapter-registry.js +19 -0
  33. package/dist/engine/mcp-hub/adapter-registry.js.map +1 -0
  34. package/dist/engine/mcp-hub/adapters/github-adapter.d.ts +4 -0
  35. package/dist/engine/mcp-hub/adapters/github-adapter.d.ts.map +1 -0
  36. package/dist/engine/mcp-hub/adapters/github-adapter.js +44 -0
  37. package/dist/engine/mcp-hub/adapters/github-adapter.js.map +1 -0
  38. package/dist/engine/mcp-hub/adapters/supabase-adapter.d.ts +4 -0
  39. package/dist/engine/mcp-hub/adapters/supabase-adapter.d.ts.map +1 -0
  40. package/dist/engine/mcp-hub/adapters/supabase-adapter.js +41 -0
  41. package/dist/engine/mcp-hub/adapters/supabase-adapter.js.map +1 -0
  42. package/dist/engine/mcp-hub/event-router.d.ts +19 -0
  43. package/dist/engine/mcp-hub/event-router.d.ts.map +1 -0
  44. package/dist/engine/mcp-hub/event-router.js +47 -0
  45. package/dist/engine/mcp-hub/event-router.js.map +1 -0
  46. package/dist/engine/productivity/calibration-engine.d.ts +17 -0
  47. package/dist/engine/productivity/calibration-engine.d.ts.map +1 -0
  48. package/dist/engine/productivity/calibration-engine.js +49 -0
  49. package/dist/engine/productivity/calibration-engine.js.map +1 -0
  50. package/dist/engine/productivity/time-tracker.d.ts +6 -0
  51. package/dist/engine/productivity/time-tracker.d.ts.map +1 -0
  52. package/dist/engine/productivity/time-tracker.js +28 -0
  53. package/dist/engine/productivity/time-tracker.js.map +1 -0
  54. package/dist/engine/productivity/vibe-tax-calculator.d.ts +14 -0
  55. package/dist/engine/productivity/vibe-tax-calculator.d.ts.map +1 -0
  56. package/dist/engine/productivity/vibe-tax-calculator.js +63 -0
  57. package/dist/engine/productivity/vibe-tax-calculator.js.map +1 -0
  58. package/dist/engine/quality-gates/gate-catalog.d.ts +6 -0
  59. package/dist/engine/quality-gates/gate-catalog.d.ts.map +1 -0
  60. package/dist/engine/quality-gates/gate-catalog.js +351 -0
  61. package/dist/engine/quality-gates/gate-catalog.js.map +1 -0
  62. package/dist/engine/quality-gates/gate-evaluator.d.ts +3 -0
  63. package/dist/engine/quality-gates/gate-evaluator.d.ts.map +1 -0
  64. package/dist/engine/quality-gates/gate-evaluator.js +25 -0
  65. package/dist/engine/quality-gates/gate-evaluator.js.map +1 -0
  66. package/dist/engine/quality-gates/gate-injector.d.ts +20 -0
  67. package/dist/engine/quality-gates/gate-injector.d.ts.map +1 -0
  68. package/dist/engine/quality-gates/gate-injector.js +75 -0
  69. package/dist/engine/quality-gates/gate-injector.js.map +1 -0
  70. package/dist/index.js +10 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/storage/compliance-audit-store.d.ts +12 -0
  73. package/dist/storage/compliance-audit-store.d.ts.map +1 -0
  74. package/dist/storage/compliance-audit-store.js +40 -0
  75. package/dist/storage/compliance-audit-store.js.map +1 -0
  76. package/dist/storage/mcp-hub-store.d.ts +9 -0
  77. package/dist/storage/mcp-hub-store.d.ts.map +1 -0
  78. package/dist/storage/mcp-hub-store.js +28 -0
  79. package/dist/storage/mcp-hub-store.js.map +1 -0
  80. package/dist/storage/spec-store.d.ts +2 -0
  81. package/dist/storage/spec-store.d.ts.map +1 -1
  82. package/dist/storage/spec-store.js +17 -1
  83. package/dist/storage/spec-store.js.map +1 -1
  84. package/dist/storage/time-tracking-store.d.ts +6 -0
  85. package/dist/storage/time-tracking-store.d.ts.map +1 -0
  86. package/dist/storage/time-tracking-store.js +34 -0
  87. package/dist/storage/time-tracking-store.js.map +1 -0
  88. package/dist/tools/compliance-gap-handler.d.ts +5 -0
  89. package/dist/tools/compliance-gap-handler.d.ts.map +1 -0
  90. package/dist/tools/compliance-gap-handler.js +64 -0
  91. package/dist/tools/compliance-gap-handler.js.map +1 -0
  92. package/dist/tools/distribution-readiness-handler.d.ts +3 -0
  93. package/dist/tools/distribution-readiness-handler.d.ts.map +1 -0
  94. package/dist/tools/distribution-readiness-handler.js +24 -0
  95. package/dist/tools/distribution-readiness-handler.js.map +1 -0
  96. package/dist/tools/generate-cost-estimate-handler.d.ts +3 -0
  97. package/dist/tools/generate-cost-estimate-handler.d.ts.map +1 -0
  98. package/dist/tools/generate-cost-estimate-handler.js +29 -0
  99. package/dist/tools/generate-cost-estimate-handler.js.map +1 -0
  100. package/dist/tools/generate-deployment-diagram-handler.d.ts +3 -0
  101. package/dist/tools/generate-deployment-diagram-handler.d.ts.map +1 -0
  102. package/dist/tools/generate-deployment-diagram-handler.js +26 -0
  103. package/dist/tools/generate-deployment-diagram-handler.js.map +1 -0
  104. package/dist/tools/generate-runbook-handler.d.ts +3 -0
  105. package/dist/tools/generate-runbook-handler.d.ts.map +1 -0
  106. package/dist/tools/generate-runbook-handler.js +18 -0
  107. package/dist/tools/generate-runbook-handler.js.map +1 -0
  108. package/dist/tools/inject-quality-gates-handler.d.ts +7 -0
  109. package/dist/tools/inject-quality-gates-handler.d.ts.map +1 -0
  110. package/dist/tools/inject-quality-gates-handler.js +59 -0
  111. package/dist/tools/inject-quality-gates-handler.js.map +1 -0
  112. package/dist/tools/mcp-hub-handler.d.ts +7 -0
  113. package/dist/tools/mcp-hub-handler.d.ts.map +1 -0
  114. package/dist/tools/mcp-hub-handler.js +73 -0
  115. package/dist/tools/mcp-hub-handler.js.map +1 -0
  116. package/dist/tools/productivity-report-handler.d.ts +4 -0
  117. package/dist/tools/productivity-report-handler.d.ts.map +1 -0
  118. package/dist/tools/productivity-report-handler.js +98 -0
  119. package/dist/tools/productivity-report-handler.js.map +1 -0
  120. package/dist/tools/register-distribution.d.ts +3 -0
  121. package/dist/tools/register-distribution.d.ts.map +1 -0
  122. package/dist/tools/register-distribution.js +103 -0
  123. package/dist/tools/register-distribution.js.map +1 -0
  124. package/dist/tools/register-enterprise-compliance.d.ts +3 -0
  125. package/dist/tools/register-enterprise-compliance.d.ts.map +1 -0
  126. package/dist/tools/register-enterprise-compliance.js +30 -0
  127. package/dist/tools/register-enterprise-compliance.js.map +1 -0
  128. package/dist/tools/register-mcp-hub.d.ts +3 -0
  129. package/dist/tools/register-mcp-hub.d.ts.map +1 -0
  130. package/dist/tools/register-mcp-hub.js +47 -0
  131. package/dist/tools/register-mcp-hub.js.map +1 -0
  132. package/dist/tools/register-productivity.d.ts +3 -0
  133. package/dist/tools/register-productivity.d.ts.map +1 -0
  134. package/dist/tools/register-productivity.js +25 -0
  135. package/dist/tools/register-productivity.js.map +1 -0
  136. package/dist/tools/register-quality-gates.d.ts +3 -0
  137. package/dist/tools/register-quality-gates.d.ts.map +1 -0
  138. package/dist/tools/register-quality-gates.js +47 -0
  139. package/dist/tools/register-quality-gates.js.map +1 -0
  140. package/dist/types/analysis.d.ts +30 -0
  141. package/dist/types/analysis.d.ts.map +1 -1
  142. package/dist/types/docs.d.ts +43 -0
  143. package/dist/types/docs.d.ts.map +1 -1
  144. package/dist/types/env.d.ts +23 -0
  145. package/dist/types/env.d.ts.map +1 -1
  146. package/dist/types/estimation.d.ts +30 -0
  147. package/dist/types/estimation.d.ts.map +1 -1
  148. package/dist/types/orchestration/index.d.ts +1 -0
  149. package/dist/types/orchestration/index.d.ts.map +1 -1
  150. package/dist/types/orchestration/mcp-hub.d.ts +29 -0
  151. package/dist/types/orchestration/mcp-hub.d.ts.map +1 -0
  152. package/dist/types/orchestration/mcp-hub.js +3 -0
  153. package/dist/types/orchestration/mcp-hub.js.map +1 -0
  154. package/dist/types/orchestration.d.ts +1 -1
  155. package/dist/types/orchestration.d.ts.map +1 -1
  156. package/package.json +1 -1
  157. package/src/config/license-plans.json +5 -0
@@ -0,0 +1,73 @@
1
+ import { getHubConfig, saveHubConfig, updateHubConfig } from '../storage/mcp-hub-store.js';
2
+ import { routeEvent, buildHubStatus } from '../engine/mcp-hub/event-router.js';
3
+ import { listAdapters } from '../engine/mcp-hub/adapter-registry.js';
4
+ // Import adapters to trigger registration side-effects
5
+ import '../engine/mcp-hub/adapters/github-adapter.js';
6
+ import '../engine/mcp-hub/adapters/supabase-adapter.js';
7
+ export async function handleMcpHubStatus(projectId) {
8
+ const config = await getHubConfig(projectId);
9
+ const status = buildHubStatus(config);
10
+ return {
11
+ content: [
12
+ {
13
+ type: 'text',
14
+ text: JSON.stringify({
15
+ ...status,
16
+ enabledAdapterIds: config.enabledAdapters,
17
+ lastSyncAt: config.lastSyncAt ?? null,
18
+ message: `MCP Hub: ${status.enabledAdapters}/${status.totalAdapters} adapters enabled`,
19
+ }, null, 2),
20
+ },
21
+ ],
22
+ };
23
+ }
24
+ export async function handleConfigureMcpHub(projectId, adapterId, enabled, adapterConfig) {
25
+ const current = await getHubConfig(projectId);
26
+ const enabledAdapters = enabled
27
+ ? [...new Set([...current.enabledAdapters, adapterId])]
28
+ : current.enabledAdapters.filter((id) => id !== adapterId);
29
+ const adapterConfigs = { ...current.adapterConfigs };
30
+ if (adapterConfig) {
31
+ adapterConfigs[adapterId] = {
32
+ ...(adapterConfigs[adapterId] ?? {}),
33
+ ...adapterConfig,
34
+ };
35
+ }
36
+ await saveHubConfig(projectId, { ...current, enabledAdapters, adapterConfigs });
37
+ return {
38
+ content: [
39
+ {
40
+ type: 'text',
41
+ text: JSON.stringify({
42
+ adapterId,
43
+ enabled,
44
+ enabledAdapters,
45
+ message: `Adapter '${adapterId}' ${enabled ? 'enabled' : 'disabled'} in MCP hub`,
46
+ }, null, 2),
47
+ },
48
+ ],
49
+ };
50
+ }
51
+ export async function handleSyncMcpEvent(projectId, event, specId) {
52
+ const config = await getHubConfig(projectId);
53
+ const result = await routeEvent(event, specId, config);
54
+ await updateHubConfig(projectId, { lastSyncAt: new Date().toISOString() });
55
+ return {
56
+ content: [
57
+ {
58
+ type: 'text',
59
+ text: JSON.stringify({
60
+ event,
61
+ specId,
62
+ successCount: result.successCount,
63
+ failureCount: result.failureCount,
64
+ results: result.results,
65
+ message: `Event '${event}' routed: ${result.successCount} success, ${result.failureCount} failure`,
66
+ }, null, 2),
67
+ },
68
+ ],
69
+ };
70
+ }
71
+ // Keep listAdapters available but suppress unused warning via void usage
72
+ void listAdapters;
73
+ //# sourceMappingURL=mcp-hub-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-hub-handler.js","sourceRoot":"","sources":["../../src/tools/mcp-hub-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ToolResult } from '../types/index.js';
2
+ export declare function handleProductivityReport(projectId: string): Promise<ToolResult>;
3
+ export declare function handleVelocityIntelligence(projectId: string): Promise<ToolResult>;
4
+ //# sourceMappingURL=productivity-report-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productivity-report-handler.d.ts","sourceRoot":"","sources":["../../src/tools/productivity-report-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAqErF;AAED,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiDvF"}
@@ -0,0 +1,98 @@
1
+ import { specStore } from '../storage/index.js';
2
+ import { listTimeRecords } from '../storage/time-tracking-store.js';
3
+ import { calculateVibeTax, summarizeVibeTax } from '../engine/productivity/vibe-tax-calculator.js';
4
+ import { computeCalibration } from '../engine/productivity/calibration-engine.js';
5
+ import { computeActualHours } from '../engine/productivity/time-tracker.js';
6
+ export async function handleProductivityReport(projectId) {
7
+ const [specs, timeRecords] = await Promise.all([
8
+ specStore.listSpecs(projectId),
9
+ listTimeRecords(projectId),
10
+ ]);
11
+ const doneSpecs = specs.filter((s) => s.status === 'done');
12
+ const recordMap = new Map(timeRecords.map((r) => [r.specId, r]));
13
+ const vibeTaxResults = doneSpecs
14
+ .map((spec) => {
15
+ const record = recordMap.get(spec.id);
16
+ const estimated = spec.estimation.devHours;
17
+ const actual = record
18
+ ? (computeActualHours(record) ?? record.actualHours ?? estimated)
19
+ : estimated;
20
+ if (actual === 0) {
21
+ return null;
22
+ }
23
+ return calculateVibeTax(spec.id, estimated, actual, record?.debugHours ?? 0, record?.scopeCreepCriteria ?? 0, record?.validateFailures ?? 0);
24
+ })
25
+ .filter((r) => r !== null);
26
+ const summary = summarizeVibeTax(vibeTaxResults);
27
+ const calibrationPoints = vibeTaxResults.map((r) => ({
28
+ specId: r.specId,
29
+ estimatedHours: r.estimatedHours,
30
+ actualHours: r.actualHours,
31
+ completedAt: recordMap.get(r.specId)?.doneAt ?? new Date().toISOString(),
32
+ }));
33
+ const calibration = computeCalibration(calibrationPoints);
34
+ return {
35
+ content: [
36
+ {
37
+ type: 'text',
38
+ text: JSON.stringify({
39
+ specCount: summary.specCount,
40
+ averageVariancePct: summary.averageVariancePct,
41
+ totalDebugHours: summary.totalDebugHours,
42
+ totalVibeTaxHours: summary.totalVibeTaxHours,
43
+ overallAssessment: summary.overallAssessment,
44
+ worstSpecs: summary.worstSpecs,
45
+ bestSpecs: summary.bestSpecs,
46
+ calibration: {
47
+ factor: calibration.calibrationFactor,
48
+ accuracy: calibration.accuracy,
49
+ recommendation: calibration.recommendation,
50
+ trendDirection: calibration.trendDirection,
51
+ },
52
+ totalSpecs: specs.length,
53
+ doneSpecs: doneSpecs.length,
54
+ message: `Productivity report: ${summary.specCount} specs analyzed. ${summary.overallAssessment}`,
55
+ }, null, 2),
56
+ },
57
+ ],
58
+ };
59
+ }
60
+ export async function handleVelocityIntelligence(projectId) {
61
+ const [specs, timeRecords] = await Promise.all([
62
+ specStore.listSpecs(projectId),
63
+ listTimeRecords(projectId),
64
+ ]);
65
+ const doneSpecs = specs.filter((s) => s.status === 'done');
66
+ const implementingSpecs = specs.filter((s) => s.status === 'implementing');
67
+ const approvedSpecs = specs.filter((s) => s.status === 'approved');
68
+ const recordMap = new Map(timeRecords.map((r) => [r.specId, r]));
69
+ const specsWithActuals = doneSpecs.filter((s) => recordMap.has(s.id));
70
+ const successRate = doneSpecs.length > 0
71
+ ? Math.round((specsWithActuals.filter((s) => {
72
+ const r = recordMap.get(s.id);
73
+ return (r?.validateFailures ?? 0) === 0;
74
+ }).length /
75
+ doneSpecs.length) *
76
+ 100)
77
+ : 0;
78
+ return {
79
+ content: [
80
+ {
81
+ type: 'text',
82
+ text: JSON.stringify({
83
+ totalSpecs: specs.length,
84
+ done: doneSpecs.length,
85
+ implementing: implementingSpecs.length,
86
+ approved: approvedSpecs.length,
87
+ successRate,
88
+ specsWithTimeData: specsWithActuals.length,
89
+ velocityNote: doneSpecs.length > 0
90
+ ? `${doneSpecs.length} specs completed — ${successRate}% with zero validate failures`
91
+ : 'No completed specs yet',
92
+ message: `Velocity intelligence: ${specs.length} total specs, ${doneSpecs.length} done (${successRate}% success rate)`,
93
+ }, null, 2),
94
+ },
95
+ ],
96
+ };
97
+ }
98
+ //# sourceMappingURL=productivity-report-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productivity-report-handler.js","sourceRoot":"","sources":["../../src/tools/productivity-report-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDistributionTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-distribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-distribution.d.ts","sourceRoot":"","sources":["../../src/tools/register-distribution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyHjE"}
@@ -0,0 +1,103 @@
1
+ import { z } from 'zod';
2
+ import { safeLicensed } from './safe-handler.js';
3
+ import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
4
+ import { handleDistributionReadiness } from './distribution-readiness-handler.js';
5
+ import { handleGenerateDeploymentDiagram } from './generate-deployment-diagram-handler.js';
6
+ import { handleGenerateRunbook } from './generate-runbook-handler.js';
7
+ import { handleGenerateCostEstimate } from './generate-cost-estimate-handler.js';
8
+ export function registerDistributionTools(server) {
9
+ server.registerTool('distribution_readiness', {
10
+ description: 'Analyzes all project specs to assess distribution readiness — returns a score 0-100, ' +
11
+ 'which critical specs are present/missing, and recommendations for gaps.',
12
+ annotations: { title: 'Distribution Readiness', readOnlyHint: true },
13
+ inputSchema: {
14
+ projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
15
+ projectPath: z
16
+ .string()
17
+ .max(4096)
18
+ .optional()
19
+ .describe('Absolute path to project root. Derives projectId automatically.'),
20
+ },
21
+ }, safeLicensed('distribution_readiness', async (args) => {
22
+ const pid = resolveProjectId(args);
23
+ if (!pid) {
24
+ return missingProjectIdError;
25
+ }
26
+ return handleDistributionReadiness(pid);
27
+ }));
28
+ server.registerTool('generate_deployment_diagram', {
29
+ description: 'Generates a C4 architecture diagram in Mermaid format from the project spec set — ' +
30
+ 'shows services, databases, caches, and external dependencies.',
31
+ annotations: { title: 'Generate Deployment Diagram', readOnlyHint: true },
32
+ inputSchema: {
33
+ projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
34
+ projectPath: z
35
+ .string()
36
+ .max(4096)
37
+ .optional()
38
+ .describe('Absolute path to project root. Derives projectId automatically.'),
39
+ },
40
+ }, safeLicensed('generate_deployment_diagram', async (args) => {
41
+ const pid = resolveProjectId(args);
42
+ if (!pid) {
43
+ return missingProjectIdError;
44
+ }
45
+ return handleGenerateDeploymentDiagram(pid);
46
+ }));
47
+ server.registerTool('generate_runbook', {
48
+ description: 'Generates an operational runbook for the project — deploy steps, rollback procedure, ' +
49
+ 'health checks, alerting thresholds. Provider auto-detected from project knowledge.',
50
+ annotations: { title: 'Generate Runbook', readOnlyHint: true },
51
+ inputSchema: {
52
+ projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
53
+ projectPath: z
54
+ .string()
55
+ .max(4096)
56
+ .optional()
57
+ .describe('Absolute path to project root. Derives projectId automatically.'),
58
+ projectName: z
59
+ .string()
60
+ .max(200)
61
+ .optional()
62
+ .describe('Project name (auto-detected if not provided)'),
63
+ },
64
+ }, safeLicensed('generate_runbook', async (args) => {
65
+ const pid = resolveProjectId(args);
66
+ if (!pid) {
67
+ return missingProjectIdError;
68
+ }
69
+ const { projectName } = args;
70
+ return handleGenerateRunbook(pid, projectName);
71
+ }));
72
+ server.registerTool('generate_cost_estimate', {
73
+ description: 'Estimates monthly cloud infrastructure costs for the project based on the stack and provider. ' +
74
+ 'Returns per-resource breakdown with monthly and yearly totals.',
75
+ annotations: { title: 'Generate Cost Estimate', readOnlyHint: true },
76
+ inputSchema: {
77
+ projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
78
+ projectPath: z
79
+ .string()
80
+ .max(4096)
81
+ .optional()
82
+ .describe('Absolute path to project root. Derives projectId automatically.'),
83
+ provider: z
84
+ .enum(['aws', 'gcp', 'railway', 'vercel', 'fly', 'generic'])
85
+ .optional()
86
+ .describe('Cloud provider — auto-detected from project stack if not provided. ' +
87
+ 'Valid values: aws | gcp | railway | vercel | fly | generic'),
88
+ resources: z
89
+ .array(z.enum(['compute', 'database', 'cache', 'cdn', 'storage', 'monitoring']))
90
+ .optional()
91
+ .describe('Resource types to estimate. Defaults to compute+database+monitoring. ' +
92
+ 'Valid values: compute | database | cache | cdn | storage | monitoring'),
93
+ },
94
+ }, safeLicensed('generate_cost_estimate', async (args) => {
95
+ const pid = resolveProjectId(args);
96
+ if (!pid) {
97
+ return missingProjectIdError;
98
+ }
99
+ const { provider, resources } = args;
100
+ return handleGenerateCostEstimate(pid, resources, provider);
101
+ }));
102
+ }
103
+ //# sourceMappingURL=register-distribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-distribution.js","sourceRoot":"","sources":["../../src/tools/register-distribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerEnterpriseComplianceTools(s: McpServer): void;
3
+ //# sourceMappingURL=register-enterprise-compliance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-enterprise-compliance.d.ts","sourceRoot":"","sources":["../../src/tools/register-enterprise-compliance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAgCpE"}
@@ -0,0 +1,30 @@
1
+ // Planu — Enterprise compliance tool registration (SPEC-402)
2
+ import { z } from 'zod';
3
+ import { handleComplianceGapAnalysis, handleGenerateAttestationEnhanced, } from './compliance-gap-handler.js';
4
+ import { hashProjectPath } from '../storage/base-store.js';
5
+ const frameworkEnum = z
6
+ .enum(['soc2-type2', 'gdpr', 'hipaa', 'iso27001', 'pci-dss'])
7
+ .describe('Compliance framework: soc2-type2 | gdpr | hipaa | iso27001 | pci-dss');
8
+ export function registerEnterpriseComplianceTools(s) {
9
+ s.registerTool('compliance_gap_analyzer', {
10
+ description: 'Analyzes project specs against a compliance framework (SOC2/GDPR/HIPAA/ISO27001/PCI-DSS) — returns control matrix showing which controls are covered, partial, or missing.',
11
+ inputSchema: {
12
+ projectPath: z.string().describe('Absolute path to the project root'),
13
+ framework: frameworkEnum,
14
+ },
15
+ }, async ({ projectPath, framework }) => {
16
+ const projectId = hashProjectPath(projectPath);
17
+ return handleComplianceGapAnalysis(projectId, framework);
18
+ });
19
+ s.registerTool('generate_compliance_report', {
20
+ description: 'Generates a compliance evidence package for a framework — includes control matrix, change management evidence from audit trail, and gap analysis.',
21
+ inputSchema: {
22
+ projectPath: z.string().describe('Absolute path to the project root'),
23
+ framework: frameworkEnum,
24
+ },
25
+ }, async ({ projectPath, framework }) => {
26
+ const projectId = hashProjectPath(projectPath);
27
+ return handleGenerateAttestationEnhanced(projectId, framework);
28
+ });
29
+ }
30
+ //# sourceMappingURL=register-enterprise-compliance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-enterprise-compliance.js","sourceRoot":"","sources":["../../src/tools/register-enterprise-compliance.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,aAAa,GAAG,CAAC;KACpB,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;KAC5D,QAAQ,CAAC,sEAAsE,CAAC,CAAC;AAEpF,MAAM,UAAU,iCAAiC,CAAC,CAAY;IAC5D,CAAC,CAAC,YAAY,CACZ,yBAAyB,EACzB;QACE,WAAW,EACT,4KAA4K;QAC9K,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACrE,SAAS,EAAE,aAAa;SACzB;KACF,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAC/C,OAAO,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC,CACF,CAAC;IAEF,CAAC,CAAC,YAAY,CACZ,4BAA4B,EAC5B;QACE,WAAW,EACT,mJAAmJ;QACrJ,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACrE,SAAS,EAAE,aAAa;SACzB;KACF,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAC/C,OAAO,iCAAiC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerMcpHubTools(s: McpServer): void;
3
+ //# sourceMappingURL=register-mcp-hub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-mcp-hub.d.ts","sourceRoot":"","sources":["../../src/tools/register-mcp-hub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CA4DtD"}
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ import { handleMcpHubStatus, handleConfigureMcpHub, handleSyncMcpEvent, } from './mcp-hub-handler.js';
3
+ export function registerMcpHubTools(s) {
4
+ s.registerTool('mcp_hub_status', {
5
+ description: 'Lists all registered MCP adapter integrations with their status (connected/not-configured/disabled) and the events each handles.',
6
+ inputSchema: {
7
+ projectPath: z.string().describe('Absolute path to the project root'),
8
+ },
9
+ }, async ({ projectPath }) => {
10
+ const { createHash } = await import('node:crypto');
11
+ const projectId = createHash('sha256').update(projectPath).digest('hex').slice(0, 16);
12
+ return handleMcpHubStatus(projectId);
13
+ });
14
+ s.registerTool('configure_mcp_hub', {
15
+ description: 'Enable or disable an MCP adapter integration and configure its credentials. Adapters: github (token, repo), supabase (projectRef).',
16
+ inputSchema: {
17
+ projectPath: z.string().describe('Absolute path to the project root'),
18
+ adapterId: z
19
+ .enum(['github', 'supabase', 'linear', 'slack', 'jira'])
20
+ .describe('Adapter ID: github | supabase | linear | slack | jira'),
21
+ enabled: z.boolean().describe('Enable or disable this adapter'),
22
+ config: z
23
+ .record(z.string(), z.unknown())
24
+ .optional()
25
+ .describe('Adapter-specific config (e.g. { token, repo } for GitHub)'),
26
+ },
27
+ }, async ({ projectPath, adapterId, enabled, config }) => {
28
+ const { createHash } = await import('node:crypto');
29
+ const projectId = createHash('sha256').update(projectPath).digest('hex').slice(0, 16);
30
+ return handleConfigureMcpHub(projectId, adapterId, enabled, config);
31
+ });
32
+ s.registerTool('sync_mcp_event', {
33
+ description: 'Manually trigger a spec lifecycle event to all enabled MCP adapters — useful for bulk sync after adding a new adapter.',
34
+ inputSchema: {
35
+ projectPath: z.string().describe('Absolute path to the project root'),
36
+ event: z
37
+ .enum(['spec:created', 'spec:approved', 'spec:implementing', 'spec:done', 'spec:updated'])
38
+ .describe('Spec lifecycle event to trigger'),
39
+ specId: z.string().describe('Spec ID to sync'),
40
+ },
41
+ }, async ({ projectPath, event, specId }) => {
42
+ const { createHash } = await import('node:crypto');
43
+ const projectId = createHash('sha256').update(projectPath).digest('hex').slice(0, 16);
44
+ return handleSyncMcpEvent(projectId, event, specId);
45
+ });
46
+ }
47
+ //# sourceMappingURL=register-mcp-hub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-mcp-hub.js","sourceRoot":"","sources":["../../src/tools/register-mcp-hub.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerProductivityTools(s: McpServer): void;
3
+ //# sourceMappingURL=register-productivity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-productivity.d.ts","sourceRoot":"","sources":["../../src/tools/register-productivity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CA8B5D"}
@@ -0,0 +1,25 @@
1
+ // tools/register-productivity.ts — SPEC-404: Register productivity intelligence tools
2
+ import { createHash } from 'node:crypto';
3
+ import { z } from 'zod';
4
+ import { handleProductivityReport, handleVelocityIntelligence, } from './productivity-report-handler.js';
5
+ export function registerProductivityTools(s) {
6
+ s.registerTool('productivity_report', {
7
+ description: 'Analyzes completed specs to measure actual vs estimated hours, vibe coding tax, and estimation accuracy. Shows best/worst performing specs and calibration factor.',
8
+ inputSchema: {
9
+ projectPath: z.string().describe('Absolute path to the project root'),
10
+ },
11
+ }, async ({ projectPath }) => {
12
+ const projectId = createHash('sha256').update(projectPath).digest('hex').slice(0, 16);
13
+ return handleProductivityReport(projectId);
14
+ });
15
+ s.registerTool('velocity_intelligence', {
16
+ description: 'Shows spec velocity metrics: success rate (zero validate failures), specs in each lifecycle stage, and time-to-done trends.',
17
+ inputSchema: {
18
+ projectPath: z.string().describe('Absolute path to the project root'),
19
+ },
20
+ }, async ({ projectPath }) => {
21
+ const projectId = createHash('sha256').update(projectPath).digest('hex').slice(0, 16);
22
+ return handleVelocityIntelligence(projectId);
23
+ });
24
+ }
25
+ //# sourceMappingURL=register-productivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-productivity.js","sourceRoot":"","sources":["../../src/tools/register-productivity.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,kCAAkC,CAAC;AAE1C,MAAM,UAAU,yBAAyB,CAAC,CAAY;IACpD,CAAC,CAAC,YAAY,CACZ,qBAAqB,EACrB;QACE,WAAW,EACT,oKAAoK;QACtK,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SACtE;KACF,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACxB,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtF,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CACF,CAAC;IAEF,CAAC,CAAC,YAAY,CACZ,uBAAuB,EACvB;QACE,WAAW,EACT,6HAA6H;QAC/H,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SACtE;KACF,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACxB,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtF,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerQualityGatesTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-quality-gates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-quality-gates.d.ts","sourceRoot":"","sources":["../../src/tools/register-quality-gates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsDjE"}
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ import { safeLicensed } from './safe-handler.js';
3
+ import { handleInjectQualityGates } from './inject-quality-gates-handler.js';
4
+ import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
5
+ export function registerQualityGatesTools(server) {
6
+ server.registerTool('inject_quality_gates', {
7
+ description: 'Inject security, testing, architecture, and performance quality gate criteria ' +
8
+ 'into a spec automatically based on the project stack and spec risk level. ' +
9
+ 'Gates are appended as a "## Quality Gates [AUTO]" section in the spec.md file. ' +
10
+ 'Use profile to control which categories are injected: ' +
11
+ 'strict (all 4 categories), standard (security+testing+architecture), ' +
12
+ 'minimal (security+testing only). ' +
13
+ 'Gates are filtered by spec type, risk level, and detected stack (typescript/python/java/go/generic).',
14
+ annotations: { readOnlyHint: false },
15
+ inputSchema: {
16
+ projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
17
+ projectPath: z
18
+ .string()
19
+ .max(4096)
20
+ .optional()
21
+ .describe('Absolute path to project root. Derives projectId automatically.'),
22
+ specId: z
23
+ .string()
24
+ .min(1)
25
+ .max(500)
26
+ .describe('Spec ID to inject quality gates into (e.g. SPEC-042)'),
27
+ profile: z
28
+ .enum(['strict', 'standard', 'minimal'])
29
+ .optional()
30
+ .describe('Gate profile: strict (all categories), standard (security+testing+architecture), ' +
31
+ 'minimal (security+testing only). Defaults to standard.'),
32
+ categories: z
33
+ .array(z.enum(['security', 'testing', 'architecture', 'performance']))
34
+ .optional()
35
+ .describe('Override gate categories to inject. Valid values: security, testing, architecture, performance. ' +
36
+ 'If omitted, profile is used.'),
37
+ },
38
+ }, safeLicensed('inject_quality_gates', async (args) => {
39
+ const pid = resolveProjectId(args);
40
+ if (!pid) {
41
+ return missingProjectIdError;
42
+ }
43
+ const { specId, profile, categories } = args;
44
+ return handleInjectQualityGates(pid, specId, { profile, categories });
45
+ }));
46
+ }
47
+ //# sourceMappingURL=register-quality-gates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-quality-gates.js","sourceRoot":"","sources":["../../src/tools/register-quality-gates.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,gFAAgF;YAChF,4EAA4E;YAC5E,iFAAiF;YACjF,wDAAwD;YACxD,uEAAuE;YACvE,mCAAmC;YACnC,sGAAsG;QACxG,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;QACpC,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1F,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,sDAAsD,CAAC;YACnE,OAAO,EAAE,CAAC;iBACP,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;iBACvC,QAAQ,EAAE;iBACV,QAAQ,CACP,mFAAmF;gBACjF,wDAAwD,CAC3D;YACH,UAAU,EAAE,CAAC;iBACV,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;iBACrE,QAAQ,EAAE;iBACV,QAAQ,CACP,kGAAkG;gBAChG,8BAA8B,CACjC;SACJ;KACF,EACD,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAIvC,CAAC;QACF,OAAO,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -286,4 +286,34 @@ export interface DeepCheckConfig {
286
286
  exclude?: string;
287
287
  expected: number;
288
288
  }
289
+ export interface QualityGate {
290
+ id: string;
291
+ category: 'security' | 'testing' | 'architecture' | 'performance';
292
+ title: string;
293
+ stacks: string[];
294
+ riskLevels: string[];
295
+ specTypes: string[];
296
+ }
297
+ export interface QualityGateInjectionResult {
298
+ gates: QualityGate[];
299
+ markdownSection: string;
300
+ count: number;
301
+ categoryCounts: {
302
+ security: number;
303
+ testing: number;
304
+ architecture: number;
305
+ performance: number;
306
+ };
307
+ }
308
+ export interface QualityGateEvaluation {
309
+ total: number;
310
+ passed: number;
311
+ failed: number;
312
+ failedGates: {
313
+ id: string;
314
+ title: string;
315
+ category: string;
316
+ }[];
317
+ score: number;
318
+ }
289
319
  //# sourceMappingURL=analysis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/types/analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/types/analysis.ts"],"names":[],"mappings":"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"}