@planu/cli 1.3.0 → 1.5.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.
- package/dist/config/license-plans.json +18 -1
- package/dist/engine/audit-trail/formatter.d.ts +13 -0
- package/dist/engine/audit-trail/formatter.d.ts.map +1 -0
- package/dist/engine/audit-trail/formatter.js +43 -0
- package/dist/engine/audit-trail/formatter.js.map +1 -0
- package/dist/engine/audit-trail/hasher.d.ts +18 -0
- package/dist/engine/audit-trail/hasher.d.ts.map +1 -0
- package/dist/engine/audit-trail/hasher.js +46 -0
- package/dist/engine/audit-trail/hasher.js.map +1 -0
- package/dist/engine/audit-trail/index.d.ts +2 -0
- package/dist/engine/audit-trail/index.d.ts.map +1 -1
- package/dist/engine/audit-trail/index.js +4 -1
- package/dist/engine/audit-trail/index.js.map +1 -1
- package/dist/engine/auto-promoter.d.ts +14 -0
- package/dist/engine/auto-promoter.d.ts.map +1 -0
- package/dist/engine/auto-promoter.js +40 -0
- package/dist/engine/auto-promoter.js.map +1 -0
- package/dist/engine/compliance-test-generator/control-mapper.d.ts +4 -0
- package/dist/engine/compliance-test-generator/control-mapper.d.ts.map +1 -0
- package/dist/engine/compliance-test-generator/control-mapper.js +41 -0
- package/dist/engine/compliance-test-generator/control-mapper.js.map +1 -0
- package/dist/engine/compliance-test-generator/frameworks/iso42001.d.ts +3 -0
- package/dist/engine/compliance-test-generator/frameworks/iso42001.d.ts.map +1 -0
- package/dist/engine/compliance-test-generator/frameworks/iso42001.js +55 -0
- package/dist/engine/compliance-test-generator/frameworks/iso42001.js.map +1 -0
- package/dist/engine/compliance-test-generator/frameworks/pci-dss.d.ts +3 -0
- package/dist/engine/compliance-test-generator/frameworks/pci-dss.d.ts.map +1 -0
- package/dist/engine/compliance-test-generator/frameworks/pci-dss.js +55 -0
- package/dist/engine/compliance-test-generator/frameworks/pci-dss.js.map +1 -0
- package/dist/engine/compliance-test-generator/frameworks/soc2.d.ts +3 -0
- package/dist/engine/compliance-test-generator/frameworks/soc2.d.ts.map +1 -0
- package/dist/engine/compliance-test-generator/frameworks/soc2.js +47 -0
- package/dist/engine/compliance-test-generator/frameworks/soc2.js.map +1 -0
- package/dist/engine/compliance-test-generator/index.d.ts +3 -0
- package/dist/engine/compliance-test-generator/index.d.ts.map +1 -0
- package/dist/engine/compliance-test-generator/index.js +64 -0
- package/dist/engine/compliance-test-generator/index.js.map +1 -0
- package/dist/engine/compliance-test-generator/test-formatter.d.ts +6 -0
- package/dist/engine/compliance-test-generator/test-formatter.d.ts.map +1 -0
- package/dist/engine/compliance-test-generator/test-formatter.js +33 -0
- package/dist/engine/compliance-test-generator/test-formatter.js.map +1 -0
- package/dist/engine/cost-guardrails.d.ts +11 -0
- package/dist/engine/cost-guardrails.d.ts.map +1 -0
- package/dist/engine/cost-guardrails.js +39 -0
- package/dist/engine/cost-guardrails.js.map +1 -0
- package/dist/engine/doc-compliance-checker.d.ts +23 -0
- package/dist/engine/doc-compliance-checker.d.ts.map +1 -0
- package/dist/engine/doc-compliance-checker.js +168 -0
- package/dist/engine/doc-compliance-checker.js.map +1 -0
- package/dist/engine/dogfood-analyzer.d.ts +6 -0
- package/dist/engine/dogfood-analyzer.d.ts.map +1 -0
- package/dist/engine/dogfood-analyzer.js +59 -0
- package/dist/engine/dogfood-analyzer.js.map +1 -0
- package/dist/engine/drift-watcher/criteria-checker.d.ts +16 -0
- package/dist/engine/drift-watcher/criteria-checker.d.ts.map +1 -0
- package/dist/engine/drift-watcher/criteria-checker.js +81 -0
- package/dist/engine/drift-watcher/criteria-checker.js.map +1 -0
- package/dist/engine/drift-watcher/file-watcher.d.ts +8 -0
- package/dist/engine/drift-watcher/file-watcher.d.ts.map +1 -0
- package/dist/engine/drift-watcher/file-watcher.js +24 -0
- package/dist/engine/drift-watcher/file-watcher.js.map +1 -0
- package/dist/engine/drift-watcher/index.d.ts +19 -0
- package/dist/engine/drift-watcher/index.d.ts.map +1 -0
- package/dist/engine/drift-watcher/index.js +70 -0
- package/dist/engine/drift-watcher/index.js.map +1 -0
- package/dist/engine/mcp-gateway/gateway-registry.d.ts +19 -0
- package/dist/engine/mcp-gateway/gateway-registry.d.ts.map +1 -0
- package/dist/engine/mcp-gateway/gateway-registry.js +33 -0
- package/dist/engine/mcp-gateway/gateway-registry.js.map +1 -0
- package/dist/engine/mcp-gateway/gateway-scanner.d.ts +17 -0
- package/dist/engine/mcp-gateway/gateway-scanner.d.ts.map +1 -0
- package/dist/engine/mcp-gateway/gateway-scanner.js +62 -0
- package/dist/engine/mcp-gateway/gateway-scanner.js.map +1 -0
- package/dist/engine/mcp-gateway/index.d.ts +3 -0
- package/dist/engine/mcp-gateway/index.d.ts.map +1 -0
- package/dist/engine/mcp-gateway/index.js +4 -0
- package/dist/engine/mcp-gateway/index.js.map +1 -0
- package/dist/engine/multi-repo/companion-spec-builder.d.ts +9 -0
- package/dist/engine/multi-repo/companion-spec-builder.d.ts.map +1 -0
- package/dist/engine/multi-repo/companion-spec-builder.js +22 -0
- package/dist/engine/multi-repo/companion-spec-builder.js.map +1 -0
- package/dist/engine/multi-repo/consumer-scanner.d.ts +12 -0
- package/dist/engine/multi-repo/consumer-scanner.d.ts.map +1 -0
- package/dist/engine/multi-repo/consumer-scanner.js +48 -0
- package/dist/engine/multi-repo/consumer-scanner.js.map +1 -0
- package/dist/engine/multi-repo/index.d.ts +4 -0
- package/dist/engine/multi-repo/index.d.ts.map +1 -0
- package/dist/engine/multi-repo/index.js +5 -0
- package/dist/engine/multi-repo/index.js.map +1 -0
- package/dist/engine/multi-repo/refactor-tracker.d.ts +7 -0
- package/dist/engine/multi-repo/refactor-tracker.d.ts.map +1 -0
- package/dist/engine/multi-repo/refactor-tracker.js +22 -0
- package/dist/engine/multi-repo/refactor-tracker.js.map +1 -0
- package/dist/engine/skill-generator/sections-docs.d.ts +13 -0
- package/dist/engine/skill-generator/sections-docs.d.ts.map +1 -0
- package/dist/engine/skill-generator/sections-docs.js +59 -0
- package/dist/engine/skill-generator/sections-docs.js.map +1 -0
- package/dist/engine/skill-generator/skills-content.d.ts +1 -1
- package/dist/engine/skill-generator/skills-content.d.ts.map +1 -1
- package/dist/engine/skill-generator/skills-content.js +3 -2
- package/dist/engine/skill-generator/skills-content.js.map +1 -1
- package/dist/engine/skill-generator/skills.d.ts +1 -0
- package/dist/engine/skill-generator/skills.d.ts.map +1 -1
- package/dist/engine/skill-generator/skills.js +1 -0
- package/dist/engine/skill-generator/skills.js.map +1 -1
- package/dist/engine/skill-generator.d.ts.map +1 -1
- package/dist/engine/skill-generator.js +21 -2
- package/dist/engine/skill-generator.js.map +1 -1
- package/dist/engine/web-fetcher/docs-intelligence.d.ts +8 -0
- package/dist/engine/web-fetcher/docs-intelligence.d.ts.map +1 -0
- package/dist/engine/web-fetcher/docs-intelligence.js +154 -0
- package/dist/engine/web-fetcher/docs-intelligence.js.map +1 -0
- package/dist/engine/web-fetcher/registry-auto-discovery.d.ts +20 -0
- package/dist/engine/web-fetcher/registry-auto-discovery.d.ts.map +1 -0
- package/dist/engine/web-fetcher/registry-auto-discovery.js +184 -0
- package/dist/engine/web-fetcher/registry-auto-discovery.js.map +1 -0
- package/dist/engine/web-fetcher/stack-detector.d.ts +4 -0
- package/dist/engine/web-fetcher/stack-detector.d.ts.map +1 -0
- package/dist/engine/web-fetcher/stack-detector.js +155 -0
- package/dist/engine/web-fetcher/stack-detector.js.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/storage/audit-trail-store.d.ts +20 -0
- package/dist/storage/audit-trail-store.d.ts.map +1 -0
- package/dist/storage/audit-trail-store.js +98 -0
- package/dist/storage/audit-trail-store.js.map +1 -0
- package/dist/storage/auto-promoter-config-store.d.ts +11 -0
- package/dist/storage/auto-promoter-config-store.d.ts.map +1 -0
- package/dist/storage/auto-promoter-config-store.js +23 -0
- package/dist/storage/auto-promoter-config-store.js.map +1 -0
- package/dist/storage/budget-store.d.ts +19 -0
- package/dist/storage/budget-store.d.ts.map +1 -0
- package/dist/storage/budget-store.js +64 -0
- package/dist/storage/budget-store.js.map +1 -0
- package/dist/storage/gateway-store.d.ts +23 -0
- package/dist/storage/gateway-store.d.ts.map +1 -0
- package/dist/storage/gateway-store.js +52 -0
- package/dist/storage/gateway-store.js.map +1 -0
- package/dist/storage/refactor-registry-store.d.ts +21 -0
- package/dist/storage/refactor-registry-store.d.ts.map +1 -0
- package/dist/storage/refactor-registry-store.js +77 -0
- package/dist/storage/refactor-registry-store.js.map +1 -0
- package/dist/tools/auto-promoter-handler.d.ts +13 -0
- package/dist/tools/auto-promoter-handler.d.ts.map +1 -0
- package/dist/tools/auto-promoter-handler.js +50 -0
- package/dist/tools/auto-promoter-handler.js.map +1 -0
- package/dist/tools/compliance-test-handler.d.ts +5 -0
- package/dist/tools/compliance-test-handler.d.ts.map +1 -0
- package/dist/tools/compliance-test-handler.js +66 -0
- package/dist/tools/compliance-test-handler.js.map +1 -0
- package/dist/tools/cost-guardrails-handler.d.ts +15 -0
- package/dist/tools/cost-guardrails-handler.d.ts.map +1 -0
- package/dist/tools/cost-guardrails-handler.js +72 -0
- package/dist/tools/cost-guardrails-handler.js.map +1 -0
- package/dist/tools/create-spec/spec-builder.d.ts.map +1 -1
- package/dist/tools/create-spec/spec-builder.js +20 -0
- package/dist/tools/create-spec/spec-builder.js.map +1 -1
- package/dist/tools/create-spec-hu/docs-criteria-adapter.d.ts +14 -0
- package/dist/tools/create-spec-hu/docs-criteria-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/docs-criteria-adapter.js +50 -0
- package/dist/tools/create-spec-hu/docs-criteria-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu.d.ts +1 -1
- package/dist/tools/create-spec-hu.d.ts.map +1 -1
- package/dist/tools/create-spec-hu.js +5 -1
- package/dist/tools/create-spec-hu.js.map +1 -1
- package/dist/tools/create-spec.d.ts.map +1 -1
- package/dist/tools/create-spec.js +2 -2
- package/dist/tools/create-spec.js.map +1 -1
- package/dist/tools/doc-compliance-handler.d.ts +3 -0
- package/dist/tools/doc-compliance-handler.d.ts.map +1 -0
- package/dist/tools/doc-compliance-handler.js +48 -0
- package/dist/tools/doc-compliance-handler.js.map +1 -0
- package/dist/tools/docs-registry-handler.d.ts +6 -0
- package/dist/tools/docs-registry-handler.d.ts.map +1 -0
- package/dist/tools/docs-registry-handler.js +73 -0
- package/dist/tools/docs-registry-handler.js.map +1 -0
- package/dist/tools/dogfood-status-handler.d.ts +3 -0
- package/dist/tools/dogfood-status-handler.d.ts.map +1 -0
- package/dist/tools/dogfood-status-handler.js +28 -0
- package/dist/tools/dogfood-status-handler.js.map +1 -0
- package/dist/tools/drift-watcher-handler.d.ts +7 -0
- package/dist/tools/drift-watcher-handler.d.ts.map +1 -0
- package/dist/tools/drift-watcher-handler.js +65 -0
- package/dist/tools/drift-watcher-handler.js.map +1 -0
- package/dist/tools/export-audit-trail-handler.d.ts +9 -0
- package/dist/tools/export-audit-trail-handler.d.ts.map +1 -0
- package/dist/tools/export-audit-trail-handler.js +103 -0
- package/dist/tools/export-audit-trail-handler.js.map +1 -0
- package/dist/tools/mcp-gateway-handler.d.ts +13 -0
- package/dist/tools/mcp-gateway-handler.d.ts.map +1 -0
- package/dist/tools/mcp-gateway-handler.js +60 -0
- package/dist/tools/mcp-gateway-handler.js.map +1 -0
- package/dist/tools/multi-repo-handler.d.ts +15 -0
- package/dist/tools/multi-repo-handler.d.ts.map +1 -0
- package/dist/tools/multi-repo-handler.js +86 -0
- package/dist/tools/multi-repo-handler.js.map +1 -0
- package/dist/tools/register-audit-trail-tools.d.ts.map +1 -1
- package/dist/tools/register-audit-trail-tools.js +38 -0
- package/dist/tools/register-audit-trail-tools.js.map +1 -1
- package/dist/tools/register-auto-promoter-tools.d.ts +3 -0
- package/dist/tools/register-auto-promoter-tools.d.ts.map +1 -0
- package/dist/tools/register-auto-promoter-tools.js +43 -0
- package/dist/tools/register-auto-promoter-tools.js.map +1 -0
- package/dist/tools/register-compliance-test-tools.d.ts +3 -0
- package/dist/tools/register-compliance-test-tools.d.ts.map +1 -0
- package/dist/tools/register-compliance-test-tools.js +55 -0
- package/dist/tools/register-compliance-test-tools.js.map +1 -0
- package/dist/tools/register-cost-guardrails-tools.d.ts +3 -0
- package/dist/tools/register-cost-guardrails-tools.d.ts.map +1 -0
- package/dist/tools/register-cost-guardrails-tools.js +61 -0
- package/dist/tools/register-cost-guardrails-tools.js.map +1 -0
- package/dist/tools/register-doc-compliance-tools.d.ts +3 -0
- package/dist/tools/register-doc-compliance-tools.d.ts.map +1 -0
- package/dist/tools/register-doc-compliance-tools.js +18 -0
- package/dist/tools/register-doc-compliance-tools.js.map +1 -0
- package/dist/tools/register-docs-registry-tools.d.ts +3 -0
- package/dist/tools/register-docs-registry-tools.d.ts.map +1 -0
- package/dist/tools/register-docs-registry-tools.js +35 -0
- package/dist/tools/register-docs-registry-tools.js.map +1 -0
- package/dist/tools/register-dogfood-tools.d.ts +3 -0
- package/dist/tools/register-dogfood-tools.d.ts.map +1 -0
- package/dist/tools/register-dogfood-tools.js +21 -0
- package/dist/tools/register-dogfood-tools.js.map +1 -0
- package/dist/tools/register-drift-watcher-tools.d.ts +3 -0
- package/dist/tools/register-drift-watcher-tools.d.ts.map +1 -0
- package/dist/tools/register-drift-watcher-tools.js +28 -0
- package/dist/tools/register-drift-watcher-tools.js.map +1 -0
- package/dist/tools/register-mcp-gateway-tools.d.ts +3 -0
- package/dist/tools/register-mcp-gateway-tools.d.ts.map +1 -0
- package/dist/tools/register-mcp-gateway-tools.js +35 -0
- package/dist/tools/register-mcp-gateway-tools.js.map +1 -0
- package/dist/tools/register-multi-repo-tools.d.ts +8 -0
- package/dist/tools/register-multi-repo-tools.d.ts.map +1 -0
- package/dist/tools/register-multi-repo-tools.js +52 -0
- package/dist/tools/register-multi-repo-tools.js.map +1 -0
- package/dist/tools/safe-handler.d.ts.map +1 -1
- package/dist/tools/safe-handler.js +50 -1
- package/dist/tools/safe-handler.js.map +1 -1
- package/dist/types/audit.d.ts +64 -0
- package/dist/types/audit.d.ts.map +1 -0
- package/dist/types/audit.js +3 -0
- package/dist/types/audit.js.map +1 -0
- package/dist/types/auto-promoter.d.ts +26 -0
- package/dist/types/auto-promoter.d.ts.map +1 -0
- package/dist/types/auto-promoter.js +3 -0
- package/dist/types/auto-promoter.js.map +1 -0
- package/dist/types/compliance-tests.d.ts +41 -0
- package/dist/types/compliance-tests.d.ts.map +1 -0
- package/dist/types/compliance-tests.js +3 -0
- package/dist/types/compliance-tests.js.map +1 -0
- package/dist/types/cost-guardrails.d.ts +41 -0
- package/dist/types/cost-guardrails.d.ts.map +1 -0
- package/dist/types/cost-guardrails.js +3 -0
- package/dist/types/cost-guardrails.js.map +1 -0
- package/dist/types/docs.d.ts +70 -0
- package/dist/types/docs.d.ts.map +1 -1
- package/dist/types/dogfood.d.ts +22 -0
- package/dist/types/dogfood.d.ts.map +1 -0
- package/dist/types/dogfood.js +3 -0
- package/dist/types/dogfood.js.map +1 -0
- package/dist/types/drift-watcher.d.ts +35 -0
- package/dist/types/drift-watcher.d.ts.map +1 -0
- package/dist/types/drift-watcher.js +3 -0
- package/dist/types/drift-watcher.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/mcp-gateway.d.ts +34 -0
- package/dist/types/mcp-gateway.d.ts.map +1 -0
- package/dist/types/mcp-gateway.js +3 -0
- package/dist/types/mcp-gateway.js.map +1 -0
- package/dist/types/mcp.d.ts +17 -0
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/multi-repo.d.ts +39 -0
- package/dist/types/multi-repo.d.ts.map +1 -0
- package/dist/types/multi-repo.js +5 -0
- package/dist/types/multi-repo.js.map +1 -0
- package/dist/types/spec/core.d.ts +2 -0
- package/dist/types/spec/core.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/config/license-plans.json +18 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { checkRegistryHealth, discoverDocsUrl, } from '../engine/web-fetcher/registry-auto-discovery.js';
|
|
2
|
+
import { loadDocsRegistry } from '../engine/web-fetcher/registry-loader.js';
|
|
3
|
+
/** Flatten all docs-registry categories into a single { key: base-url } map. */
|
|
4
|
+
async function flattenRegistryUrls() {
|
|
5
|
+
const registry = await loadDocsRegistry();
|
|
6
|
+
const result = new Map();
|
|
7
|
+
for (const [key, entry] of Object.entries(registry.frameworks)) {
|
|
8
|
+
result.set(key, entry.base);
|
|
9
|
+
}
|
|
10
|
+
for (const [key, entry] of Object.entries(registry.languages)) {
|
|
11
|
+
result.set(key, entry.base);
|
|
12
|
+
}
|
|
13
|
+
for (const [key, entry] of Object.entries(registry.services)) {
|
|
14
|
+
result.set(key, entry.base);
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
/** Handle validate_docs_registry tool call. */
|
|
19
|
+
export async function handleValidateDocsRegistry(_input) {
|
|
20
|
+
const urlMap = await flattenRegistryUrls();
|
|
21
|
+
const entries = {};
|
|
22
|
+
for (const [key, base] of urlMap.entries()) {
|
|
23
|
+
entries[key] = { base };
|
|
24
|
+
}
|
|
25
|
+
const total = urlMap.size;
|
|
26
|
+
const health = await checkRegistryHealth(entries);
|
|
27
|
+
const lines = [
|
|
28
|
+
`Docs registry health check complete.`,
|
|
29
|
+
`Total entries: ${total}`,
|
|
30
|
+
`Healthy: ${health.healthy.length}`,
|
|
31
|
+
`Slow (>2s): ${health.slow.length}`,
|
|
32
|
+
`Broken: ${health.broken.length}`,
|
|
33
|
+
];
|
|
34
|
+
if (health.broken.length > 0) {
|
|
35
|
+
lines.push(`\nBroken entries:\n${health.broken.map((b) => ` - ${b}`).join('\n')}`);
|
|
36
|
+
}
|
|
37
|
+
if (health.slow.length > 0) {
|
|
38
|
+
lines.push(`\nSlow entries:\n${health.slow.map((s) => ` - ${s}`).join('\n')}`);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
42
|
+
total,
|
|
43
|
+
healthy: health.healthy.length,
|
|
44
|
+
broken: health.broken.map((key) => ({ key, url: urlMap.get(key) ?? '' })),
|
|
45
|
+
slowMs: health.slow.map((key) => ({ key, url: urlMap.get(key) ?? '' })),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** Handle discover_docs_url tool call. */
|
|
49
|
+
export async function handleDiscoverDocsUrl(input) {
|
|
50
|
+
const { tech } = input;
|
|
51
|
+
const entry = await discoverDocsUrl(tech);
|
|
52
|
+
if (!entry) {
|
|
53
|
+
return {
|
|
54
|
+
content: [
|
|
55
|
+
{
|
|
56
|
+
type: 'text',
|
|
57
|
+
text: `No docs URL found for "${tech}" in npm, PyPI, or crates.io registries.`,
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const verifiedLabel = entry.verified ? 'verified alive' : 'unverified';
|
|
63
|
+
const text = [
|
|
64
|
+
`Found docs for "${tech}" via ${entry.source} (${verifiedLabel}):`,
|
|
65
|
+
` URL: ${entry.docsUrl}`,
|
|
66
|
+
` Discovered at: ${entry.discoveredAt}`,
|
|
67
|
+
].join('\n');
|
|
68
|
+
return {
|
|
69
|
+
content: [{ type: 'text', text }],
|
|
70
|
+
entry,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=docs-registry-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-registry-handler.js","sourceRoot":"","sources":["../../src/tools/docs-registry-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dogfood-status-handler.d.ts","sourceRoot":"","sources":["../../src/tools/dogfood-status-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOxE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,CA2BzE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getRecentCommitMessages, detectToolUsageFromMessages, buildDogfoodReport, } from '../engine/dogfood-analyzer.js';
|
|
2
|
+
export function handleDogfoodStatus(input) {
|
|
3
|
+
const sinceDays = input.since
|
|
4
|
+
? Math.ceil((Date.now() - new Date(input.since).getTime()) / 86400000)
|
|
5
|
+
: 30;
|
|
6
|
+
const period = `Last ${String(sinceDays)} days`;
|
|
7
|
+
const messages = getRecentCommitMessages(input.projectPath, sinceDays);
|
|
8
|
+
const usedTools = detectToolUsageFromMessages(messages);
|
|
9
|
+
const report = buildDogfoodReport(usedTools, period, messages);
|
|
10
|
+
const lines = [
|
|
11
|
+
`## Planu Dogfood Status — ${report.period}`,
|
|
12
|
+
`**Score**: ${String(report.dogfoodScore)}/100`,
|
|
13
|
+
`**Tools used**: ${report.usedTools.join(', ') || 'none'}`,
|
|
14
|
+
`**Missing**: ${report.missingTools.join(', ') || 'none'}`,
|
|
15
|
+
'',
|
|
16
|
+
`### Metrics`,
|
|
17
|
+
`- Specs created: ${String(report.metrics.specCreated)}`,
|
|
18
|
+
`- Specs validated: ${String(report.metrics.specValidated)}`,
|
|
19
|
+
`- Specs challenged: ${String(report.metrics.specChallenged)}`,
|
|
20
|
+
`- Readiness checked: ${String(report.metrics.readinessChecked)}`,
|
|
21
|
+
`- Status updates: ${String(report.metrics.statusUpdated)}`,
|
|
22
|
+
'',
|
|
23
|
+
`### Recommendation`,
|
|
24
|
+
report.recommendation,
|
|
25
|
+
];
|
|
26
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=dogfood-status-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dogfood-status-handler.js","sourceRoot":"","sources":["../../src/tools/dogfood-status-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,UAAU,mBAAmB,CAAC,KAAyB;IAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK;QAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;QACtE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAAG,QAAQ,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;IAChD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAG;QACZ,6BAA6B,MAAM,CAAC,MAAM,EAAE;QAC5C,cAAc,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM;QAC/C,mBAAmB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;QAC1D,gBAAgB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;QAC1D,EAAE;QACF,aAAa;QACb,oBAAoB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QACxD,sBAAsB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QAC5D,uBAAuB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;QAC9D,wBAAwB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QACjE,qBAAqB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QAC3D,EAAE;QACF,oBAAoB;QACpB,MAAM,CAAC,cAAc;KACtB,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ToolResult, WatchSpecDriftInput } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Handle the watch_spec_drift tool invocation.
|
|
4
|
+
* Routes to start/stop/status based on the action field.
|
|
5
|
+
*/
|
|
6
|
+
export declare function handleWatchSpecDrift(input: WatchSpecDriftInput): Promise<ToolResult>;
|
|
7
|
+
//# sourceMappingURL=drift-watcher-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift-watcher-handler.d.ts","sourceRoot":"","sources":["../../src/tools/drift-watcher-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAKzE;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CA+D1F"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { hashProjectPath } from '../storage/base-store.js';
|
|
2
|
+
import { listSpecs } from '../storage/spec-store.js';
|
|
3
|
+
import { startWatcher, stopWatcher, getWatcherState } from '../engine/drift-watcher/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Handle the watch_spec_drift tool invocation.
|
|
6
|
+
* Routes to start/stop/status based on the action field.
|
|
7
|
+
*/
|
|
8
|
+
export async function handleWatchSpecDrift(input) {
|
|
9
|
+
const { projectPath, specId, action } = input;
|
|
10
|
+
if (action === 'status') {
|
|
11
|
+
const state = getWatcherState(specId);
|
|
12
|
+
if (!state) {
|
|
13
|
+
return {
|
|
14
|
+
content: [{ type: 'text', text: `No active watcher for spec ${specId}.` }],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
content: [
|
|
19
|
+
{
|
|
20
|
+
type: 'text',
|
|
21
|
+
text: JSON.stringify(state, null, 2),
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if (action === 'stop') {
|
|
27
|
+
const stopped = stopWatcher(specId);
|
|
28
|
+
return {
|
|
29
|
+
content: [
|
|
30
|
+
{
|
|
31
|
+
type: 'text',
|
|
32
|
+
text: stopped
|
|
33
|
+
? `Watcher stopped for spec ${specId}.`
|
|
34
|
+
: `No active watcher found for spec ${specId}.`,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// action === 'start'
|
|
40
|
+
const projectId = hashProjectPath(projectPath);
|
|
41
|
+
const specs = await listSpecs(projectId);
|
|
42
|
+
const spec = specs.find((s) => s.id === specId);
|
|
43
|
+
if (!spec) {
|
|
44
|
+
return {
|
|
45
|
+
content: [{ type: 'text', text: `Spec ${specId} not found in project ${projectPath}.` }],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const specPath = spec.specPath;
|
|
49
|
+
const watchedPaths = [projectPath];
|
|
50
|
+
const state = startWatcher({
|
|
51
|
+
specId,
|
|
52
|
+
projectPath,
|
|
53
|
+
specPath,
|
|
54
|
+
watchedPaths,
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
content: [
|
|
58
|
+
{
|
|
59
|
+
type: 'text',
|
|
60
|
+
text: JSON.stringify(state, null, 2),
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=drift-watcher-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift-watcher-handler.js","sourceRoot":"","sources":["../../src/tools/drift-watcher-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAE9F;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAA0B;IACnE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAE9C,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,MAAM,GAAG,EAAE,CAAC;aAC3E,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;iBACrC;aACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO;wBACX,CAAC,CAAC,4BAA4B,MAAM,GAAG;wBACvC,CAAC,CAAC,oCAAoC,MAAM,GAAG;iBAClD;aACF;SACF,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IAEhD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,MAAM,yBAAyB,WAAW,GAAG,EAAE,CAAC;SACzF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,YAAY,CAAC;QACzB,MAAM;QACN,WAAW;QACX,QAAQ;QACR,YAAY;KACb,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACrC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ToolResult } from '../types/index.js';
|
|
2
|
+
import type { AuditTrailExportInput } from '../types/audit.js';
|
|
3
|
+
/**
|
|
4
|
+
* Handle export_audit_trail tool invocation.
|
|
5
|
+
* Reads the global audit trail, applies filters, verifies chain integrity,
|
|
6
|
+
* and returns formatted output in the requested format.
|
|
7
|
+
*/
|
|
8
|
+
export declare function handleExportAuditTrail(input: AuditTrailExportInput): ToolResult;
|
|
9
|
+
//# sourceMappingURL=export-audit-trail-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-audit-trail-handler.d.ts","sourceRoot":"","sources":["../../src/tools/export-audit-trail-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAEV,qBAAqB,EAEtB,MAAM,mBAAmB,CAAC;AA4E3B;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU,CAuC/E"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// tools/export-audit-trail-handler.ts — Handler for export_audit_trail tool (SPEC-387)
|
|
2
|
+
import { readEntries } from '../storage/audit-trail-store.js';
|
|
3
|
+
import { verifyChain } from '../engine/audit-trail/hasher.js';
|
|
4
|
+
import { formatSuccess, toolResult } from './response-helpers.js';
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Formatters
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
function formatJson(entries) {
|
|
9
|
+
return JSON.stringify(entries, null, 2);
|
|
10
|
+
}
|
|
11
|
+
function formatJsonLd(entries) {
|
|
12
|
+
const graph = entries.map((e) => ({
|
|
13
|
+
'@type': 'prov:Activity',
|
|
14
|
+
'@id': `urn:planu:audit:${e.id}`,
|
|
15
|
+
'prov:startedAtTime': e.timestamp,
|
|
16
|
+
'prov:endedAtTime': e.timestamp,
|
|
17
|
+
'planu:toolName': e.toolName,
|
|
18
|
+
'planu:inputSummary': e.inputSummary,
|
|
19
|
+
'planu:outputType': e.outputType,
|
|
20
|
+
'planu:durationMs': e.durationMs,
|
|
21
|
+
'planu:hash': e.hash,
|
|
22
|
+
'planu:prevHash': e.prevHash,
|
|
23
|
+
...(e.specId !== undefined ? { 'planu:specId': e.specId } : {}),
|
|
24
|
+
...(e.projectPath !== undefined ? { 'planu:projectPath': e.projectPath } : {}),
|
|
25
|
+
}));
|
|
26
|
+
const doc = {
|
|
27
|
+
'@context': {
|
|
28
|
+
prov: 'http://www.w3.org/ns/prov#',
|
|
29
|
+
planu: 'https://planu.dev/vocab#',
|
|
30
|
+
},
|
|
31
|
+
'@graph': graph,
|
|
32
|
+
};
|
|
33
|
+
return JSON.stringify(doc, null, 2);
|
|
34
|
+
}
|
|
35
|
+
function formatCsv(entries) {
|
|
36
|
+
const header = 'id,timestamp,toolName,outputType,durationMs,specId,projectPath,hash,prevHash,inputSummary';
|
|
37
|
+
const rows = entries.map((e) => {
|
|
38
|
+
const cols = [
|
|
39
|
+
e.id,
|
|
40
|
+
e.timestamp,
|
|
41
|
+
e.toolName,
|
|
42
|
+
e.outputType,
|
|
43
|
+
String(e.durationMs),
|
|
44
|
+
e.specId ?? '',
|
|
45
|
+
e.projectPath ?? '',
|
|
46
|
+
e.hash,
|
|
47
|
+
e.prevHash,
|
|
48
|
+
`"${e.inputSummary.replace(/"/g, '""')}"`,
|
|
49
|
+
];
|
|
50
|
+
return cols.join(',');
|
|
51
|
+
});
|
|
52
|
+
return [header, ...rows].join('\n');
|
|
53
|
+
}
|
|
54
|
+
function renderFormat(format, entries) {
|
|
55
|
+
switch (format) {
|
|
56
|
+
case 'json':
|
|
57
|
+
return formatJson(entries);
|
|
58
|
+
case 'json-ld':
|
|
59
|
+
return formatJsonLd(entries);
|
|
60
|
+
case 'csv':
|
|
61
|
+
return formatCsv(entries);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// Handler
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
/**
|
|
68
|
+
* Handle export_audit_trail tool invocation.
|
|
69
|
+
* Reads the global audit trail, applies filters, verifies chain integrity,
|
|
70
|
+
* and returns formatted output in the requested format.
|
|
71
|
+
*/
|
|
72
|
+
export function handleExportAuditTrail(input) {
|
|
73
|
+
const format = input.format ?? 'json';
|
|
74
|
+
const allEntries = readEntries({
|
|
75
|
+
fromDate: input.fromDate,
|
|
76
|
+
toDate: input.toDate,
|
|
77
|
+
specId: input.specId,
|
|
78
|
+
projectPath: input.projectPath,
|
|
79
|
+
limit: input.limit,
|
|
80
|
+
});
|
|
81
|
+
// Verify chain on the full unfiltered set for accurate integrity reporting
|
|
82
|
+
const fullEntries = readEntries();
|
|
83
|
+
const integrityValid = verifyChain(fullEntries);
|
|
84
|
+
const formatted = renderFormat(format, allEntries);
|
|
85
|
+
const exportedAt = new Date().toISOString();
|
|
86
|
+
const result = {
|
|
87
|
+
entries: allEntries,
|
|
88
|
+
totalCount: allEntries.length,
|
|
89
|
+
format,
|
|
90
|
+
exportedAt,
|
|
91
|
+
integrityValid,
|
|
92
|
+
};
|
|
93
|
+
const summary = [
|
|
94
|
+
`Audit Trail Export — SPEC-387 (EU AI Act Article 12)`,
|
|
95
|
+
`Entries: ${String(allEntries.length)} | Format: ${format}`,
|
|
96
|
+
`Chain integrity: ${integrityValid ? 'VALID' : 'BROKEN'}`,
|
|
97
|
+
`Exported at: ${exportedAt}`,
|
|
98
|
+
'',
|
|
99
|
+
formatted,
|
|
100
|
+
].join('\n');
|
|
101
|
+
return toolResult(formatSuccess('Audit Trail Export', summary), result);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=export-audit-trail-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-audit-trail-handler.js","sourceRoot":"","sources":["../../src/tools/export-audit-trail-handler.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAQvF,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAElE,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,SAAS,UAAU,CAAC,OAA0B;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY,CAAC,OAA0B;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,EAAE;QAChC,oBAAoB,EAAE,CAAC,CAAC,SAAS;QACjC,kBAAkB,EAAE,CAAC,CAAC,SAAS;QAC/B,gBAAgB,EAAE,CAAC,CAAC,QAAQ;QAC5B,oBAAoB,EAAE,CAAC,CAAC,YAAY;QACpC,kBAAkB,EAAE,CAAC,CAAC,UAAU;QAChC,kBAAkB,EAAE,CAAC,CAAC,UAAU;QAChC,YAAY,EAAE,CAAC,CAAC,IAAI;QACpB,gBAAgB,EAAE,CAAC,CAAC,QAAQ;QAC5B,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC,CAAC,CAAC;IAEJ,MAAM,GAAG,GAAG;QACV,UAAU,EAAE;YACV,IAAI,EAAE,4BAA4B;YAClC,KAAK,EAAE,0BAA0B;SAClC;QACD,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAAC,OAA0B;IAC3C,MAAM,MAAM,GACV,2FAA2F,CAAC;IAC9F,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG;YACX,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,UAAU;YACZ,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;YACpB,CAAC,CAAC,MAAM,IAAI,EAAE;YACd,CAAC,CAAC,WAAW,IAAI,EAAE;YACnB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,QAAQ;YACV,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;SAC1C,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,YAAY,CAAC,MAAkC,EAAE,OAA0B;IAClF,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAA4B;IACjE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC;IAEtC,MAAM,UAAU,GAAG,WAAW,CAAC;QAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAC;IAEH,2EAA2E;IAC3E,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC;IAClC,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE5C,MAAM,MAAM,GAA2B;QACrC,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,UAAU,CAAC,MAAM;QAC7B,MAAM;QACN,UAAU;QACV,cAAc;KACf,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,sDAAsD;QACtD,YAAY,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,MAAM,EAAE;QAC3D,oBAAoB,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;QACzD,gBAAgB,UAAU,EAAE;QAC5B,EAAE;QACF,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,UAAU,CACf,aAAa,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAC5C,MAA4C,CAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ToolResult } from '../types/index.js';
|
|
2
|
+
import type { DiscoverMcpGatewaysInput, FederationDiscoveryStatusInput } from '../types/mcp-gateway.js';
|
|
3
|
+
/**
|
|
4
|
+
* Handle discover_mcp_gateways tool call.
|
|
5
|
+
* Runs a discovery pass and returns a summary of found gateways.
|
|
6
|
+
*/
|
|
7
|
+
export declare function handleDiscoverMcpGateways(input: DiscoverMcpGatewaysInput): Promise<ToolResult>;
|
|
8
|
+
/**
|
|
9
|
+
* Handle federation_discovery_status tool call.
|
|
10
|
+
* Returns all known gateways from the registry with their current status.
|
|
11
|
+
*/
|
|
12
|
+
export declare function handleFederationDiscoveryStatus(input: FederationDiscoveryStatusInput): Promise<ToolResult>;
|
|
13
|
+
//# sourceMappingURL=mcp-gateway-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-gateway-handler.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-gateway-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EACV,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,yBAAyB,CAAC;AAGjC;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,UAAU,CAAC,CA0BrB;AAED;;;GAGG;AACH,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,UAAU,CAAC,CAiCrB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { discoverGateways, getGatewayStatus } from '../engine/mcp-gateway/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Handle discover_mcp_gateways tool call.
|
|
4
|
+
* Runs a discovery pass and returns a summary of found gateways.
|
|
5
|
+
*/
|
|
6
|
+
export async function handleDiscoverMcpGateways(input) {
|
|
7
|
+
const { urls = [], includeLocalhost = true } = input;
|
|
8
|
+
const found = await discoverGateways(urls, includeLocalhost);
|
|
9
|
+
if (found.length === 0) {
|
|
10
|
+
return {
|
|
11
|
+
content: [
|
|
12
|
+
{
|
|
13
|
+
type: 'text',
|
|
14
|
+
text: 'No MCP gateways discovered. Make sure target servers expose /.well-known/mcp.',
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const lines = [`Discovered ${found.length} MCP gateway(s):`, ''];
|
|
20
|
+
for (const gw of found) {
|
|
21
|
+
const compat = gw.planuCompatible ? ' [Planu-compatible]' : '';
|
|
22
|
+
lines.push(` ${gw.name} (${gw.url})${compat}`);
|
|
23
|
+
if (gw.tools.length > 0) {
|
|
24
|
+
lines.push(` Tools: ${gw.tools.join(', ')}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Handle federation_discovery_status tool call.
|
|
31
|
+
* Returns all known gateways from the registry with their current status.
|
|
32
|
+
*/
|
|
33
|
+
export async function handleFederationDiscoveryStatus(input) {
|
|
34
|
+
// projectPath is required by the tool schema but the registry is global
|
|
35
|
+
void input.projectPath;
|
|
36
|
+
const { registry, active } = await getGatewayStatus();
|
|
37
|
+
const all = registry.gateways;
|
|
38
|
+
if (all.length === 0) {
|
|
39
|
+
return {
|
|
40
|
+
content: [
|
|
41
|
+
{
|
|
42
|
+
type: 'text',
|
|
43
|
+
text: 'No gateways in registry. Run discover_mcp_gateways to start discovery.',
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const lines = [`Gateway registry: ${all.length} known, ${active.length} active`];
|
|
49
|
+
if (registry.lastDiscoveryAt) {
|
|
50
|
+
lines.push(`Last discovery: ${registry.lastDiscoveryAt}`);
|
|
51
|
+
}
|
|
52
|
+
lines.push('');
|
|
53
|
+
for (const gw of all) {
|
|
54
|
+
const compat = gw.planuCompatible ? ' [Planu]' : '';
|
|
55
|
+
lines.push(` [${gw.status}] ${gw.name} (${gw.url})${compat}`);
|
|
56
|
+
lines.push(` Last seen: ${gw.lastSeenAt}`);
|
|
57
|
+
}
|
|
58
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=mcp-gateway-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-gateway-handler.js","sourceRoot":"","sources":["../../src/tools/mcp-gateway-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolResult } from '../types/index.js';
|
|
2
|
+
import type { CoordinateRefactorInput, SyncRefactorStatusInput } from '../types/multi-repo.js';
|
|
3
|
+
/**
|
|
4
|
+
* Initiate a multi-repo refactor session.
|
|
5
|
+
* 1. Loads the source spec to verify it exists.
|
|
6
|
+
* 2. Discovers all registered projects (excluding source).
|
|
7
|
+
* 3. Scans each project for symbol usage.
|
|
8
|
+
* 4. Persists a RefactorSession and returns summary.
|
|
9
|
+
*/
|
|
10
|
+
export declare function handleCoordinateRefactor(input: CoordinateRefactorInput): Promise<ToolResult>;
|
|
11
|
+
/**
|
|
12
|
+
* Returns the current progress report for a refactor session.
|
|
13
|
+
*/
|
|
14
|
+
export declare function handleSyncRefactorStatus(input: SyncRefactorStatusInput): Promise<ToolResult>;
|
|
15
|
+
//# sourceMappingURL=multi-repo-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-repo-handler.d.ts","sourceRoot":"","sources":["../../src/tools/multi-repo-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EAGxB,MAAM,wBAAwB,CAAC;AAehC;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,UAAU,CAAC,CAoDrB;AAMD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,UAAU,CAAC,CAqBrB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// tools/multi-repo-handler.ts — SPEC-389: Handlers for multi-repo refactoring coordination
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { hashProjectPath } from '../storage/base-store.js';
|
|
4
|
+
import { getSpec } from '../storage/spec-store.js';
|
|
5
|
+
import { createSession, getSession } from '../storage/refactor-registry-store.js';
|
|
6
|
+
import { scanProjectForSymbols, getRegisteredProjectPaths, buildStatusReport, } from '../engine/multi-repo/index.js';
|
|
7
|
+
import { textResult, errText } from './response-helpers.js';
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// coordinate_refactor
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
/**
|
|
12
|
+
* Initiate a multi-repo refactor session.
|
|
13
|
+
* 1. Loads the source spec to verify it exists.
|
|
14
|
+
* 2. Discovers all registered projects (excluding source).
|
|
15
|
+
* 3. Scans each project for symbol usage.
|
|
16
|
+
* 4. Persists a RefactorSession and returns summary.
|
|
17
|
+
*/
|
|
18
|
+
export async function handleCoordinateRefactor(input) {
|
|
19
|
+
const { projectPath, specId, affectedSymbols } = input;
|
|
20
|
+
if (affectedSymbols.length === 0) {
|
|
21
|
+
return errText('affectedSymbols must contain at least one symbol name.');
|
|
22
|
+
}
|
|
23
|
+
const projectId = hashProjectPath(projectPath);
|
|
24
|
+
const spec = await getSpec(projectId, specId);
|
|
25
|
+
if (!spec) {
|
|
26
|
+
return errText(`Spec "${specId}" not found in project "${projectPath}".`);
|
|
27
|
+
}
|
|
28
|
+
const consumerPaths = await getRegisteredProjectPaths(projectPath);
|
|
29
|
+
const consumerProjects = [];
|
|
30
|
+
for (const consumerPath of consumerPaths) {
|
|
31
|
+
const usageLocations = await scanProjectForSymbols(consumerPath, affectedSymbols);
|
|
32
|
+
if (usageLocations.length > 0) {
|
|
33
|
+
consumerProjects.push({
|
|
34
|
+
projectPath: consumerPath,
|
|
35
|
+
projectId: hashProjectPath(consumerPath),
|
|
36
|
+
usageLocations,
|
|
37
|
+
status: 'pending',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const session = {
|
|
42
|
+
id: randomUUID(),
|
|
43
|
+
sourceSpecId: specId,
|
|
44
|
+
sourceProjectPath: projectPath,
|
|
45
|
+
affectedSymbols,
|
|
46
|
+
consumerProjects,
|
|
47
|
+
startedAt: new Date().toISOString(),
|
|
48
|
+
status: 'scanning',
|
|
49
|
+
};
|
|
50
|
+
await createSession(session);
|
|
51
|
+
const lines = [
|
|
52
|
+
`Refactor session created: ${session.id}`,
|
|
53
|
+
`Source spec: ${specId}`,
|
|
54
|
+
`Affected symbols: ${affectedSymbols.join(', ')}`,
|
|
55
|
+
`Consumer projects with usages: ${consumerProjects.length}`,
|
|
56
|
+
];
|
|
57
|
+
for (const cp of consumerProjects) {
|
|
58
|
+
lines.push(` - ${cp.projectPath}: ${cp.usageLocations.length} file(s)`);
|
|
59
|
+
}
|
|
60
|
+
return textResult(lines.join('\n'));
|
|
61
|
+
}
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
// sync_refactor_status
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
/**
|
|
66
|
+
* Returns the current progress report for a refactor session.
|
|
67
|
+
*/
|
|
68
|
+
export async function handleSyncRefactorStatus(input) {
|
|
69
|
+
const { refactorId } = input;
|
|
70
|
+
const session = await getSession(refactorId);
|
|
71
|
+
if (!session) {
|
|
72
|
+
return errText(`Refactor session "${refactorId}" not found.`);
|
|
73
|
+
}
|
|
74
|
+
const report = buildStatusReport(session);
|
|
75
|
+
const lines = [
|
|
76
|
+
`Refactor: ${report.refactorId}`,
|
|
77
|
+
`Source spec: ${report.sourceSpec}`,
|
|
78
|
+
`Total consumers: ${report.totalConsumers}`,
|
|
79
|
+
`Completed: ${report.completed}`,
|
|
80
|
+
`In progress: ${report.inProgress}`,
|
|
81
|
+
`Pending: ${report.pending}`,
|
|
82
|
+
`Overall progress: ${report.overallProgress}%`,
|
|
83
|
+
];
|
|
84
|
+
return textResult(lines.join('\n'));
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=multi-repo-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-repo-handler.js","sourceRoot":"","sources":["../../src/tools/multi-repo-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-audit-trail-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-audit-trail-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-audit-trail-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-audit-trail-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoI/D"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { safeLicensed } from './safe-handler.js';
|
|
4
4
|
import { handleAuditTrail, handleGenerateAttestation } from './audit-trail-handler.js';
|
|
5
|
+
import { handleExportAuditTrail } from './export-audit-trail-handler.js';
|
|
5
6
|
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
6
7
|
const AUDIT_EVENT_TYPES = [
|
|
7
8
|
'spec.created',
|
|
@@ -81,5 +82,42 @@ export function registerAuditTrailTools(server) {
|
|
|
81
82
|
}
|
|
82
83
|
return handleGenerateAttestation({ ...args, projectId: pid });
|
|
83
84
|
}));
|
|
85
|
+
// export_audit_trail — SPEC-387 (EU AI Act Article 12)
|
|
86
|
+
server.registerTool('export_audit_trail', {
|
|
87
|
+
description: 'Export the EU AI Act Article 12 immutable audit trail for every Planu tool invocation. ' +
|
|
88
|
+
'Supports filtering by project, date range, or spec. Verifies SHA-256 chain integrity. ' +
|
|
89
|
+
'Formats: json (default), json-ld (W3C PROV-O), csv.',
|
|
90
|
+
annotations: { readOnlyHint: true },
|
|
91
|
+
inputSchema: {
|
|
92
|
+
projectPath: z
|
|
93
|
+
.string()
|
|
94
|
+
.max(4096)
|
|
95
|
+
.describe('Absolute path to project root. Used to filter entries for this project.'),
|
|
96
|
+
fromDate: z
|
|
97
|
+
.string()
|
|
98
|
+
.optional()
|
|
99
|
+
.describe('ISO-8601 start date (inclusive). Example: 2026-01-01T00:00:00Z'),
|
|
100
|
+
toDate: z
|
|
101
|
+
.string()
|
|
102
|
+
.optional()
|
|
103
|
+
.describe('ISO-8601 end date (inclusive). Example: 2026-12-31T23:59:59Z'),
|
|
104
|
+
specId: z
|
|
105
|
+
.string()
|
|
106
|
+
.max(500)
|
|
107
|
+
.optional()
|
|
108
|
+
.describe('Filter entries by spec ID (e.g. SPEC-001).'),
|
|
109
|
+
format: z
|
|
110
|
+
.enum(['json', 'json-ld', 'csv'])
|
|
111
|
+
.optional()
|
|
112
|
+
.describe('Output format. Valid values: json (default), json-ld (W3C PROV-O), csv.'),
|
|
113
|
+
limit: z
|
|
114
|
+
.number()
|
|
115
|
+
.int()
|
|
116
|
+
.min(1)
|
|
117
|
+
.max(10000)
|
|
118
|
+
.optional()
|
|
119
|
+
.describe('Maximum number of entries to return.'),
|
|
120
|
+
},
|
|
121
|
+
}, safeLicensed('export_audit_trail', (args) => Promise.resolve(handleExportAuditTrail(args))));
|
|
84
122
|
}
|
|
85
123
|
//# sourceMappingURL=register-audit-trail-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-audit-trail-tools.js","sourceRoot":"","sources":["../../src/tools/register-audit-trail-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"register-audit-trail-tools.js","sourceRoot":"","sources":["../../src/tools/register-audit-trail-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-auto-promoter-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-auto-promoter-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoDjE"}
|