slaunt 0.1.17 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -122
- package/bin/slaunt-hooks.js +96 -0
- package/package.json +9 -59
- package/release/SlauntKillBar.zip +0 -0
- package/release/manifest.json +7 -0
- package/scripts/killbar-portability-check.js +67 -0
- package/scripts/package-killbar-macos.sh +38 -0
- package/src/approval-manager.js +53 -0
- package/src/cli-auth.js +230 -0
- package/src/compact-wordmark.js +13 -0
- package/src/desktop/broker-daemon.js +18 -0
- package/src/desktop/broker-grants.js +37 -0
- package/src/desktop/broker-hook-command.js +23 -0
- package/src/desktop/broker-keychain.js +29 -0
- package/src/desktop/broker-launch-agent.js +34 -0
- package/src/desktop/broker-service.js +40 -0
- package/src/desktop/chat-capture-command.js +7 -0
- package/src/desktop/chat-hook-capture.js +445 -0
- package/src/desktop/claude-lifecycle.js +143 -0
- package/src/desktop/client-identity.js +19 -0
- package/src/desktop/native-claude-broker.js +34 -0
- package/src/desktop/native-claude-connection.js +42 -0
- package/src/desktop/tool-guard-command.js +13 -0
- package/src/desktop/tool-guard.js +225 -0
- package/src/discovery/catalog.js +734 -0
- package/src/full-screen.js +88 -0
- package/src/helper-release.js +27 -0
- package/src/hidden-oauth.js +70 -0
- package/src/independent-grants.js +38 -0
- package/src/install-flow.js +71 -0
- package/src/killbar-background-install.js +47 -0
- package/src/killbar-enrollment.js +74 -0
- package/src/killbar-launch-agent.js +10 -0
- package/src/mcp-identity.js +6 -0
- package/src/native-config.js +150 -0
- package/src/native-oauth.js +33 -0
- package/src/oauth-cohort.js +43 -0
- package/src/pty-wrapper.py +57 -0
- package/src/read-json.js +8 -0
- package/src/setup/client-installer.js +93 -0
- package/src/setup/codex-guard-supervisor.js +34 -0
- package/src/setup/hook-installer.js +496 -0
- package/src/setup/managed-policy.js +26 -0
- package/src/setup/mcp-config-installer.js +204 -0
- package/src/setup-flow.js +66 -0
- package/src/tui.js +205 -0
- package/test/approval-manager.test.js +27 -0
- package/test/broker-grants.test.js +14 -0
- package/test/broker-keychain.test.js +14 -0
- package/test/broker-launch-agent.test.js +15 -0
- package/test/broker-service.test.js +42 -0
- package/test/cli-auth-recovery.test.js +15 -0
- package/test/codex-guard-supervisor.test.js +25 -0
- package/test/full-screen.test.js +49 -0
- package/test/helper-release.test.js +22 -0
- package/test/hidden-oauth.test.js +44 -0
- package/test/hook-installer.test.js +232 -0
- package/test/independent-grants.test.js +16 -0
- package/test/install-flow.test.js +24 -0
- package/test/killbar-background-install.test.js +15 -0
- package/test/killbar-enrollment.test.js +115 -0
- package/test/killbar-launch-agent.test.js +12 -0
- package/test/killbar-portability.test.js +17 -0
- package/test/managed-policy.test.js +18 -0
- package/test/native-claude-broker.test.js +19 -0
- package/test/native-claude-connection.test.js +17 -0
- package/test/native-claude-hooks.test.js +9 -0
- package/test/native-config.test.js +3 -0
- package/test/native-integration.cjs +29 -0
- package/test/native-oauth.test.js +23 -0
- package/test/oauth-cohort.test.js +26 -0
- package/test/tui.test.js +100 -0
- package/LICENSE +0 -201
- package/dist/audit/risk-engine.d.ts +0 -4
- package/dist/audit/risk-engine.d.ts.map +0 -1
- package/dist/audit/risk-engine.js +0 -174
- package/dist/audit/risk-engine.js.map +0 -1
- package/dist/audit/run.d.ts +0 -18
- package/dist/audit/run.d.ts.map +0 -1
- package/dist/audit/run.js +0 -68
- package/dist/audit/run.js.map +0 -1
- package/dist/classification/builtin-catalog.d.ts +0 -3
- package/dist/classification/builtin-catalog.d.ts.map +0 -1
- package/dist/classification/builtin-catalog.js +0 -283
- package/dist/classification/builtin-catalog.js.map +0 -1
- package/dist/classification/catalog.d.ts +0 -10
- package/dist/classification/catalog.d.ts.map +0 -1
- package/dist/classification/catalog.js +0 -194
- package/dist/classification/catalog.js.map +0 -1
- package/dist/classification/classifier.d.ts +0 -3
- package/dist/classification/classifier.d.ts.map +0 -1
- package/dist/classification/classifier.js +0 -64
- package/dist/classification/classifier.js.map +0 -1
- package/dist/classification/public-catalog-config.d.ts +0 -3
- package/dist/classification/public-catalog-config.d.ts.map +0 -1
- package/dist/classification/public-catalog-config.js +0 -5
- package/dist/classification/public-catalog-config.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -239
- package/dist/cli.js.map +0 -1
- package/dist/config/discover.d.ts +0 -8
- package/dist/config/discover.d.ts.map +0 -1
- package/dist/config/discover.js +0 -163
- package/dist/config/discover.js.map +0 -1
- package/dist/config/install.d.ts +0 -10
- package/dist/config/install.d.ts.map +0 -1
- package/dist/config/install.js +0 -143
- package/dist/config/install.js.map +0 -1
- package/dist/config/paths.d.ts +0 -24
- package/dist/config/paths.d.ts.map +0 -1
- package/dist/config/paths.js +0 -90
- package/dist/config/paths.js.map +0 -1
- package/dist/demo.d.ts +0 -4
- package/dist/demo.d.ts.map +0 -1
- package/dist/demo.js +0 -99
- package/dist/demo.js.map +0 -1
- package/dist/explanation/local.d.ts +0 -24
- package/dist/explanation/local.d.ts.map +0 -1
- package/dist/explanation/local.js +0 -696
- package/dist/explanation/local.js.map +0 -1
- package/dist/mcp/introspect.d.ts +0 -18
- package/dist/mcp/introspect.d.ts.map +0 -1
- package/dist/mcp/introspect.js +0 -236
- package/dist/mcp/introspect.js.map +0 -1
- package/dist/mcp/oauth.d.ts +0 -14
- package/dist/mcp/oauth.d.ts.map +0 -1
- package/dist/mcp/oauth.js +0 -257
- package/dist/mcp/oauth.js.map +0 -1
- package/dist/presentation/plain-language.d.ts +0 -12
- package/dist/presentation/plain-language.d.ts.map +0 -1
- package/dist/presentation/plain-language.js +0 -120
- package/dist/presentation/plain-language.js.map +0 -1
- package/dist/privacy/redaction.d.ts +0 -2
- package/dist/privacy/redaction.d.ts.map +0 -1
- package/dist/privacy/redaction.js +0 -50
- package/dist/privacy/redaction.js.map +0 -1
- package/dist/report/html.d.ts +0 -4
- package/dist/report/html.d.ts.map +0 -1
- package/dist/report/html.js +0 -101
- package/dist/report/html.js.map +0 -1
- package/dist/tui/analysis-path.d.ts +0 -17
- package/dist/tui/analysis-path.d.ts.map +0 -1
- package/dist/tui/analysis-path.js +0 -112
- package/dist/tui/analysis-path.js.map +0 -1
- package/dist/tui/render.d.ts +0 -4
- package/dist/tui/render.d.ts.map +0 -1
- package/dist/tui/render.js +0 -262
- package/dist/tui/render.js.map +0 -1
- package/dist/tui/splash.d.ts +0 -15
- package/dist/tui/splash.d.ts.map +0 -1
- package/dist/tui/splash.js +0 -130
- package/dist/tui/splash.js.map +0 -1
- package/dist/tui/stream.d.ts +0 -6
- package/dist/tui/stream.d.ts.map +0 -1
- package/dist/tui/stream.js +0 -56
- package/dist/tui/stream.js.map +0 -1
- package/dist/types.d.ts +0 -132
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -8
- package/dist/version.js.map +0 -1
- package/models/APACHE-2.0.txt +0 -202
- package/models/MODEL.json +0 -29
- package/models/NOTICE.md +0 -23
package/dist/mcp/oauth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/mcp/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Capability, ClientId, Finding, Severity } from '../types.js';
|
|
2
|
-
export interface PlainFinding {
|
|
3
|
-
label: string;
|
|
4
|
-
title: string;
|
|
5
|
-
why: string;
|
|
6
|
-
recommendation: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function plainCapability(capability: Capability): string;
|
|
9
|
-
export declare function plainClient(client: ClientId): string;
|
|
10
|
-
export declare function plainSeverity(severity: Severity): string;
|
|
11
|
-
export declare function plainFinding(item: Finding): PlainFinding;
|
|
12
|
-
//# sourceMappingURL=plain-language.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plain-language.d.ts","sourceRoot":"","sources":["../../src/presentation/plain-language.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB;AAoCD,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAE9D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAEpD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAuFxD"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
const severityLabels = {
|
|
2
|
-
critical: 'Critical',
|
|
3
|
-
high: 'High',
|
|
4
|
-
medium: 'Medium',
|
|
5
|
-
low: 'Low',
|
|
6
|
-
info: 'Info',
|
|
7
|
-
};
|
|
8
|
-
const capabilityLabels = {
|
|
9
|
-
'read-data': 'Read data',
|
|
10
|
-
'write-data': 'Write data',
|
|
11
|
-
'read-files': 'Read files',
|
|
12
|
-
'write-files': 'Write files',
|
|
13
|
-
'delete-data': 'Delete data',
|
|
14
|
-
'execute-code': 'Execute code',
|
|
15
|
-
'execute-shell': 'Execute shell commands',
|
|
16
|
-
'read-secrets': 'Read credentials',
|
|
17
|
-
'manage-auth': 'Manage authentication',
|
|
18
|
-
'network-access': 'Access the network',
|
|
19
|
-
'deploy-production': 'Deploy to production',
|
|
20
|
-
'edit-code': 'Edit code',
|
|
21
|
-
'create-pull-request': 'Create pull requests',
|
|
22
|
-
'merge-pull-request': 'Merge pull requests',
|
|
23
|
-
'administer-system': 'Administer systems',
|
|
24
|
-
'control-browser': 'Control browsers',
|
|
25
|
-
'send-message': 'Send messages',
|
|
26
|
-
};
|
|
27
|
-
const clientLabels = {
|
|
28
|
-
'claude-code': 'Claude Code',
|
|
29
|
-
'claude-desktop': 'Claude Desktop',
|
|
30
|
-
codex: 'Codex',
|
|
31
|
-
};
|
|
32
|
-
export function plainCapability(capability) {
|
|
33
|
-
return capabilityLabels[capability];
|
|
34
|
-
}
|
|
35
|
-
export function plainClient(client) {
|
|
36
|
-
return clientLabels[client];
|
|
37
|
-
}
|
|
38
|
-
export function plainSeverity(severity) {
|
|
39
|
-
return severityLabels[severity];
|
|
40
|
-
}
|
|
41
|
-
export function plainFinding(item) {
|
|
42
|
-
const label = plainSeverity(item.severity);
|
|
43
|
-
const title = item.title;
|
|
44
|
-
if (/deploy without an external approval boundary/i.test(title)) {
|
|
45
|
-
const assistant = plainClient(item.clients[0] || 'claude-code');
|
|
46
|
-
return {
|
|
47
|
-
label,
|
|
48
|
-
title: `${assistant} can deploy to production without an approval boundary`,
|
|
49
|
-
why: 'The exposed deployment tool can change the live environment before a person reviews the action.',
|
|
50
|
-
recommendation: 'Require human approval for production deployments and restrict the environments this agent can change.',
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
if (/execute shell commands and access secrets/i.test(title)) {
|
|
54
|
-
const assistant = plainClient(item.clients[0] || 'codex');
|
|
55
|
-
return {
|
|
56
|
-
label,
|
|
57
|
-
title: `${assistant} can chain credential access with shell execution`,
|
|
58
|
-
why: 'A tool chain could read passwords or tokens and then use them from an operating-system command.',
|
|
59
|
-
recommendation: 'Separate credential access from shell execution, or require approval at both capability boundaries.',
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
if (/share broad GitHub permissions/i.test(title)) {
|
|
63
|
-
return {
|
|
64
|
-
label,
|
|
65
|
-
title: 'Claude Code and Codex share broad GitHub permissions',
|
|
66
|
-
why: 'Shared credentials remove role separation, so either agent can use the same code-changing permissions.',
|
|
67
|
-
recommendation: 'Give each agent role-scoped GitHub credentials limited to the repositories and actions it needs.',
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
if (/cleartext HTTP/i.test(title)) {
|
|
71
|
-
const assistant = plainClient(item.clients[0] || 'codex');
|
|
72
|
-
return {
|
|
73
|
-
label,
|
|
74
|
-
title: `${assistant} sends MCP traffic over unencrypted HTTP`,
|
|
75
|
-
why: 'A network observer could read or alter requests and responses sent through this MCP connection.',
|
|
76
|
-
recommendation: 'Use HTTPS with certificate verification before enabling the MCP server.',
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
if (/invalid MCP server URL/i.test(title)) {
|
|
80
|
-
const assistant = plainClient(item.clients[0] || 'codex');
|
|
81
|
-
return {
|
|
82
|
-
label,
|
|
83
|
-
title: `${assistant} has an invalid MCP server URL`,
|
|
84
|
-
why: 'Slaunt cannot safely determine the network destination from the configured address.',
|
|
85
|
-
recommendation: 'Replace it with a reviewed HTTPS URL.',
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
if (/stores credential material in an MCP configuration/i.test(title)) {
|
|
89
|
-
const assistant = plainClient(item.clients[0] || 'codex');
|
|
90
|
-
return {
|
|
91
|
-
label,
|
|
92
|
-
title: `${assistant} stores credentials directly in an MCP configuration`,
|
|
93
|
-
why: 'Plaintext configuration values may be readable through local file access, backups, or diagnostic output.',
|
|
94
|
-
recommendation: 'Reference a protected environment variable or operating-system credential store instead.',
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
if (/unpinned package at startup/i.test(title)) {
|
|
98
|
-
return {
|
|
99
|
-
label,
|
|
100
|
-
title: 'An MCP server can execute an unpinned package at startup',
|
|
101
|
-
why: 'The package version is not fixed, so different code may run without a configuration change.',
|
|
102
|
-
recommendation: 'Pin the package to an exact reviewed version and preserve its lockfile or integrity value.',
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
if (/unclassified tools appear state-changing/i.test(title)) {
|
|
106
|
-
return {
|
|
107
|
-
label,
|
|
108
|
-
title: 'Some unclassified tools appear state-changing',
|
|
109
|
-
why: 'Their names suggest execution or administrative behavior, but no reviewed classification rule matched them.',
|
|
110
|
-
recommendation: 'Manually classify these tools before leaving them exposed to an agent.',
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
return {
|
|
114
|
-
label,
|
|
115
|
-
title,
|
|
116
|
-
why: item.why,
|
|
117
|
-
recommendation: item.recommendation,
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=plain-language.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plain-language.js","sourceRoot":"","sources":["../../src/presentation/plain-language.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../src/privacy/redaction.ts"],"names":[],"mappings":"AA4BA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAyB5D"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
const SENSITIVE_NAME = /(?:token|secret|password|passwd|pass|key|auth|authorization|credential)/iu;
|
|
2
|
-
const SENSITIVE_HEADER = /^(?:authorization|proxy-authorization|cookie|set-cookie|x-api-key|api-key)\s*:/iu;
|
|
3
|
-
function hasSensitiveName(value) {
|
|
4
|
-
return SENSITIVE_NAME.test(value);
|
|
5
|
-
}
|
|
6
|
-
function redactInlineAssignments(value) {
|
|
7
|
-
const assignment = /(^|[?&\s=])(-{0,2}[A-Za-z][A-Za-z0-9_.-]*)\s*=\s*([^&\s]*)/gu;
|
|
8
|
-
return value.replace(assignment, (match, prefix, key, assignedValue) => {
|
|
9
|
-
if (hasSensitiveName(key))
|
|
10
|
-
return `${prefix}${key}=[redacted]`;
|
|
11
|
-
if (!assignedValue.includes('='))
|
|
12
|
-
return match;
|
|
13
|
-
const nested = redactInlineAssignments(assignedValue);
|
|
14
|
-
return nested === assignedValue ? match : `${prefix}${key}=${nested}`;
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
function redactEmbeddedCredentials(value) {
|
|
18
|
-
return redactInlineAssignments(value)
|
|
19
|
-
.replace(/\b(Bearer|Basic|Token)\s+[^\s,;]+/giu, '$1 [redacted]')
|
|
20
|
-
.replace(/(authorization|proxy-authorization|cookie|set-cookie|x-api-key|api-key)\s*:\s*[^\s,;]+/giu, '$1: [redacted]');
|
|
21
|
-
}
|
|
22
|
-
function isSensitiveFlag(value) {
|
|
23
|
-
const match = /^-{1,2}([^=]+)(?:=.*)?$/u.exec(value);
|
|
24
|
-
return Boolean(match && hasSensitiveName(match[1] || ''));
|
|
25
|
-
}
|
|
26
|
-
export function sanitizeCommandArgs(args) {
|
|
27
|
-
const sanitized = [];
|
|
28
|
-
let redactNext = false;
|
|
29
|
-
let inspectNextHeader = false;
|
|
30
|
-
for (const arg of args) {
|
|
31
|
-
if (redactNext) {
|
|
32
|
-
sanitized.push('[redacted]');
|
|
33
|
-
redactNext = false;
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
if (inspectNextHeader) {
|
|
37
|
-
sanitized.push(SENSITIVE_HEADER.test(arg) ? `${arg.split(':', 1)[0]}: [redacted]` : redactEmbeddedCredentials(arg));
|
|
38
|
-
inspectNextHeader = false;
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
const redacted = redactEmbeddedCredentials(arg);
|
|
42
|
-
sanitized.push(redacted);
|
|
43
|
-
if (isSensitiveFlag(arg) && !arg.includes('='))
|
|
44
|
-
redactNext = true;
|
|
45
|
-
if (/^(?:--header|-H)$/iu.test(arg))
|
|
46
|
-
inspectNextHeader = true;
|
|
47
|
-
}
|
|
48
|
-
return sanitized;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=redaction.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../src/privacy/redaction.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,2EAA2E,CAAC;AACnG,MAAM,gBAAgB,GAAG,kFAAkF,CAAC;AAE5G,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,MAAM,UAAU,GAAG,8DAA8D,CAAC;IAClF,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAc,EAAE,GAAW,EAAE,aAAqB,EAAE,EAAE;QAC7F,IAAI,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,MAAM,GAAG,GAAG,aAAa,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,MAAM,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACtD,OAAO,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAa;IAC9C,OAAO,uBAAuB,CAAC,KAAK,CAAC;SAClC,OAAO,CAAC,sCAAsC,EAAE,eAAe,CAAC;SAChE,OAAO,CAAC,2FAA2F,EAAE,gBAAgB,CAAC,CAAC;AAC5H,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7B,UAAU,GAAG,KAAK,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,iBAAiB,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;YACpH,iBAAiB,GAAG,KAAK,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAChD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,UAAU,GAAG,IAAI,CAAC;QAClE,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,iBAAiB,GAAG,IAAI,CAAC;IAChE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/report/html.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA+B/C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAyC5D;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B/F"}
|
package/dist/report/html.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { randomBytes } from 'node:crypto';
|
|
2
|
-
import { access, link, mkdir, unlink, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { dirname, resolve } from 'node:path';
|
|
4
|
-
import { plainCapability, plainClient, plainFinding } from '../presentation/plain-language.js';
|
|
5
|
-
function escapeHtml(value) {
|
|
6
|
-
return String(value)
|
|
7
|
-
.replaceAll('&', '&')
|
|
8
|
-
.replaceAll('<', '<')
|
|
9
|
-
.replaceAll('>', '>')
|
|
10
|
-
.replaceAll('"', '"')
|
|
11
|
-
.replaceAll("'", ''');
|
|
12
|
-
}
|
|
13
|
-
function accessOverview(result) {
|
|
14
|
-
const explanations = new Map(result.explanations.map((explanation) => [explanation.serverId, explanation]));
|
|
15
|
-
return result.discovery.clients.filter((client) => client.detected).map((client) => {
|
|
16
|
-
const servers = result.discovery.servers.filter((server) => server.client === client.id);
|
|
17
|
-
const rows = servers.map((server) => {
|
|
18
|
-
const capabilities = [...new Set(result.tools
|
|
19
|
-
.filter((tool) => tool.serverId === server.id)
|
|
20
|
-
.flatMap((tool) => tool.classification.capabilities))];
|
|
21
|
-
const explanation = explanations.get(server.id);
|
|
22
|
-
const source = explanation?.source === 'local-llm'
|
|
23
|
-
? `Local 1B model${explanation.model ? ` ${explanation.model}` : ''}`
|
|
24
|
-
: 'Deterministic local evidence fallback';
|
|
25
|
-
const serverLabel = `${server.name} (${server.scope}/${server.transport})`;
|
|
26
|
-
return `<tr><td>${escapeHtml(serverLabel)}</td><td>${escapeHtml(capabilities.map(plainCapability).join(', ') || 'Permissions could not be read')}</td><td>${escapeHtml(explanation?.text || 'Explanation unavailable')}<br><small>${escapeHtml(source)}</small></td></tr>`;
|
|
27
|
-
}).join('');
|
|
28
|
-
return `<section class="client"><h3>${escapeHtml(client.label)}</h3><table><thead><tr><th>Server</th><th>Declared access</th><th>Explanation</th></tr></thead><tbody>${rows}</tbody></table></section>`;
|
|
29
|
-
}).join('');
|
|
30
|
-
}
|
|
31
|
-
export function renderHtmlReport(result) {
|
|
32
|
-
const summary = result.summary;
|
|
33
|
-
const findings = result.findings.map((item) => {
|
|
34
|
-
const copy = plainFinding(item);
|
|
35
|
-
const assistants = item.clients.map(plainClient).join(', ');
|
|
36
|
-
return `
|
|
37
|
-
<article class="finding ${escapeHtml(item.severity)}">
|
|
38
|
-
<div class="severity">${escapeHtml(copy.label)}</div>
|
|
39
|
-
<h3>${escapeHtml(copy.title)}</h3>
|
|
40
|
-
${assistants ? `<p><strong>Agent client:</strong> ${escapeHtml(assistants)}</p>` : ''}
|
|
41
|
-
${item.serverNames.length ? `<p><strong>MCP server:</strong> ${escapeHtml(item.serverNames.join(', '))}</p>` : ''}
|
|
42
|
-
${item.toolNames.length ? `<p><strong>Tool:</strong> ${escapeHtml(item.toolNames.join(', '))}</p>` : ''}
|
|
43
|
-
${item.access.length ? `<p><strong>Capabilities:</strong> ${escapeHtml(item.access.join(', '))}</p>` : ''}
|
|
44
|
-
<p><strong>Why this matters:</strong> ${escapeHtml(copy.why)}</p>
|
|
45
|
-
<p><strong>Recommended control:</strong> ${escapeHtml(copy.recommendation)}</p>
|
|
46
|
-
</article>`;
|
|
47
|
-
}).join('');
|
|
48
|
-
const unknown = result.tools.filter((tool) => tool.classification.source === 'unknown');
|
|
49
|
-
const unavailable = result.probes.filter((probe) => probe.status !== 'ok').length;
|
|
50
|
-
const scoreAvailable = summary.tools > 0 || unavailable === 0;
|
|
51
|
-
const scoreClass = !scoreAvailable ? 'warn' : summary.postureScore >= 80 ? 'good' : summary.postureScore >= 55 ? 'warn' : 'bad';
|
|
52
|
-
const scoreValue = scoreAvailable ? summary.postureScore : 0;
|
|
53
|
-
return `<!doctype html>
|
|
54
|
-
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
|
|
55
|
-
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'; img-src data:">
|
|
56
|
-
<title>Slaunt MCP Agent Access Audit</title><style>
|
|
57
|
-
:root{color-scheme:light dark;--bg:#0b0d12;--card:#141821;--ink:#f4f6fb;--muted:#9ba6b8;--line:#293142;--accent:#8b5cf6;--critical:#ff4d6d;--high:#ff8a4c;--medium:#f7c948;--low:#48cae4}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 15% 0,#24164a 0,transparent 32%),var(--bg);color:var(--ink);font:15px/1.55 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}main{width:min(1060px,calc(100% - 32px));margin:0 auto;padding:64px 0 96px}header{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:end;padding-bottom:36px;border-bottom:1px solid var(--line)}.eyebrow{color:#b69cff;text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:800}h1{font-size:clamp(34px,6vw,64px);line-height:1;margin:.18em 0}.sub{color:var(--muted);max-width:640px}.score{width:136px;height:136px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--accent) calc(var(--score)*1%),#252b38 0);position:relative}.score:before{content:"";position:absolute;inset:9px;border-radius:50%;background:var(--card)}.score span{position:relative;font-size:38px;font-weight:850}.score small{display:block;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.metrics{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:28px 0}.metric{padding:18px;background:color-mix(in srgb,var(--card) 92%,transparent);border:1px solid var(--line);border-radius:14px}.metric b{display:block;font-size:28px}.metric span{color:var(--muted);font-size:12px}h2{margin:52px 0 18px;font-size:24px}.finding{border:1px solid var(--line);border-left-width:4px;border-radius:14px;background:var(--card);padding:22px;margin:14px 0}.finding.critical{border-left-color:var(--critical)}.finding.high{border-left-color:var(--high)}.finding.medium{border-left-color:var(--medium)}.finding.low{border-left-color:var(--low)}.finding h3{margin:4px 0 12px}.finding p{margin:7px 0;color:#cbd3df}.severity{text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:900}.critical .severity{color:var(--critical)}.high .severity{color:var(--high)}.medium .severity{color:var(--medium)}.low .severity{color:var(--low)}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.client{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px}.client h3{margin:0 0 12px}table{width:100%;border-collapse:collapse}td{padding:9px 0;border-top:1px solid var(--line);vertical-align:top}td:first-child{font-weight:750;width:32%}td:last-child{color:var(--muted)}code{background:#202635;padding:.15em .38em;border-radius:5px}.notice{padding:18px;border:1px solid #4c3a86;background:#171229;border-radius:14px;color:#d9cffc}.unknown{columns:2;margin:0;padding-left:22px}.unknown li{break-inside:avoid;padding:3px}.cta{margin-top:52px;padding:30px;border-radius:18px;background:linear-gradient(130deg,#5b21b6,#312e81);box-shadow:0 22px 70px #5b21b633}.cta h2{margin:0 0 8px}.cta a{display:inline-block;margin-top:12px;background:white;color:#28145d;text-decoration:none;font-weight:850;padding:11px 16px;border-radius:9px}.fine{font-size:12px;color:var(--muted);margin-top:42px}@media(max-width:800px){header{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}.unknown{columns:1}}
|
|
58
|
-
</style></head><body><main>
|
|
59
|
-
<header><div><div class="eyebrow">Slaunt MCP audit</div><h1>Agent access, explained.</h1><p class="sub">A local audit of MCP servers—the services that expose tools to Claude and Codex. No tool was called and no audit payload was uploaded.</p></div><div class="score ${scoreClass}" style="--score:${scoreValue}"><span>${scoreAvailable ? summary.postureScore : '?'}<small>${scoreAvailable ? 'security posture' : 'insufficient coverage'}</small></span></div></header>
|
|
60
|
-
<section class="metrics">
|
|
61
|
-
<div class="metric"><b>${summary.clientsDetected}</b><span>Agent clients</span></div><div class="metric"><b>${summary.serverBindings}</b><span>MCP server bindings</span></div><div class="metric"><b>${summary.tools}</b><span>Tools exposed</span></div><div class="metric"><b>${summary.sensitiveCapabilities}</b><span>Sensitive tools</span></div><div class="metric"><b>${summary.highRiskFindings}</b><span>High-risk findings</span></div><div class="metric"><b>${summary.unclassified}</b><span>Unclassified tools</span></div>
|
|
62
|
-
</section>
|
|
63
|
-
<div class="notice">Classification source: <strong>${escapeHtml(result.privacy.catalogSource)}</strong>. Tool names, descriptions, schemas, configuration values, findings, and server explanations stayed on this machine. Explanations use a loopback-only local 1B model when available and otherwise fall back to deterministic evidence.</div>
|
|
64
|
-
<h2>High-priority findings</h2>${findings || '<p>No correlated high-risk access paths were identified from the available tool declarations.</p>'}
|
|
65
|
-
<h2>Access overview</h2><p>Capabilities describe what each MCP server allows an agent to do. The <strong>Server explanations</strong> column grounds every row in retrieved tools/list evidence or a deterministic local fallback.</p><div class="grid">${accessOverview(result)}</div>
|
|
66
|
-
<h2>Classification coverage</h2><p><strong>${summary.classified}</strong> tools matched a reviewed catalog rule. <strong>${summary.unclassified}</strong> did not match and require manual review.</p>
|
|
67
|
-
${unknown.length ? `<ul class="unknown">${unknown.map((tool) => `<li><code>${escapeHtml(tool.name)}</code> <span>(${escapeHtml(tool.serverName)})</span></li>`).join('')}</ul>` : '<p>Every retrieved tool matched a reviewed classification rule.</p>'}
|
|
68
|
-
<section class="cta"><h2>Apply controls to the access paths you found.</h2><p>Slaunt can add role-scoped capabilities, approval policies, continuous monitoring, and remote shutdown around the MCP servers you already use. You choose when to connect.</p><a href="https://slaunt.ai/setup">Set up Slaunt →</a></section>
|
|
69
|
-
<p class="fine">Scope: configured MCP servers and their declared tools. This audit did not call tools or inspect prompts, file contents, credentials, non-MCP agents, or tool-use history. Generated ${escapeHtml(result.generatedAt)}.</p>
|
|
70
|
-
</main></body></html>`;
|
|
71
|
-
}
|
|
72
|
-
export async function writeHtmlReport(result, outputPath) {
|
|
73
|
-
const date = result.generatedAt.slice(0, 10);
|
|
74
|
-
const requested = resolve(outputPath || `slaunt-audit-${date}.html`);
|
|
75
|
-
let path = requested;
|
|
76
|
-
if (outputPath) {
|
|
77
|
-
await access(path).then(() => { throw new Error(`refusing to overwrite existing report: ${path}`); }, () => undefined);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
for (let suffix = 2; suffix < 1_000; suffix += 1) {
|
|
81
|
-
try {
|
|
82
|
-
await access(path);
|
|
83
|
-
path = resolve(`slaunt-audit-${date}-${suffix}.html`);
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
const temporary = `${path}.${randomBytes(10).toString('hex')}.tmp`;
|
|
91
|
-
await mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
92
|
-
try {
|
|
93
|
-
await writeFile(temporary, renderHtmlReport(result), { encoding: 'utf8', mode: 0o600, flag: 'wx' });
|
|
94
|
-
await link(temporary, path);
|
|
95
|
-
}
|
|
96
|
-
finally {
|
|
97
|
-
await unlink(temporary).catch(() => undefined);
|
|
98
|
-
}
|
|
99
|
-
return path;
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=html.js.map
|
package/dist/report/html.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { AuditResult } from '../types.js';
|
|
2
|
-
export type AnalysisBeatTone = 'success' | 'warning';
|
|
3
|
-
export interface AnalysisBeat {
|
|
4
|
-
active: string;
|
|
5
|
-
complete: string;
|
|
6
|
-
delayMs: number;
|
|
7
|
-
tone: AnalysisBeatTone;
|
|
8
|
-
}
|
|
9
|
-
export interface PlayAnalysisPathOptions {
|
|
10
|
-
durationMs?: number;
|
|
11
|
-
silent?: boolean;
|
|
12
|
-
sleep?: (milliseconds: number) => Promise<void>;
|
|
13
|
-
}
|
|
14
|
-
export declare const DEFAULT_INSPECTION_WINDOW_MS = 12000;
|
|
15
|
-
export declare function buildAnalysisPath(result: AuditResult): AnalysisBeat[];
|
|
16
|
-
export declare function playAnalysisPath(result: AuditResult, options?: PlayAnalysisPathOptions): Promise<void>;
|
|
17
|
-
//# sourceMappingURL=analysis-path.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-path.d.ts","sourceRoot":"","sources":["../../src/tui/analysis-path.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,eAAO,MAAM,4BAA4B,QAAS,CAAC;AA4BnD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE,CAyDrE;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAkCf"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import ora from 'ora';
|
|
3
|
-
export const DEFAULT_INSPECTION_WINDOW_MS = 12_000;
|
|
4
|
-
const wait = (milliseconds) => new Promise((resolve) => {
|
|
5
|
-
setTimeout(resolve, milliseconds);
|
|
6
|
-
});
|
|
7
|
-
function plural(value, singular, pluralForm = `${singular}s`) {
|
|
8
|
-
return value === 1 ? singular : pluralForm;
|
|
9
|
-
}
|
|
10
|
-
function formatRemaining(milliseconds) {
|
|
11
|
-
const seconds = Math.max(0, Math.ceil(milliseconds / 1_000));
|
|
12
|
-
if (seconds < 60)
|
|
13
|
-
return `~${seconds}s left`;
|
|
14
|
-
const minutes = Math.floor(seconds / 60);
|
|
15
|
-
const remainder = seconds % 60;
|
|
16
|
-
return `~${minutes}m ${remainder}s left`;
|
|
17
|
-
}
|
|
18
|
-
function progressRail(completed, total, length = 18) {
|
|
19
|
-
const ratio = total > 0 ? Math.max(0, Math.min(1, completed / total)) : 1;
|
|
20
|
-
const filled = Math.round(ratio * length);
|
|
21
|
-
return `${chalk.hex('#a78bfa')('━'.repeat(filled))}${chalk.gray('╌'.repeat(length - filled))}`;
|
|
22
|
-
}
|
|
23
|
-
function phaseGlyph(index) {
|
|
24
|
-
return ['◌', '◍', '◎', '◉'][index % 4] || '◌';
|
|
25
|
-
}
|
|
26
|
-
export function buildAnalysisPath(result) {
|
|
27
|
-
const { summary } = result;
|
|
28
|
-
const successfulInventories = result.probes.filter((probe) => probe.status === 'ok').length;
|
|
29
|
-
const unavailableInventories = result.probes.filter((probe) => probe.status !== 'ok').length;
|
|
30
|
-
const configSources = new Set(result.discovery.clients.flatMap((client) => client.sources)).size;
|
|
31
|
-
const confidence = summary.tools > 0 ? Math.round((summary.classified / summary.tools) * 100) : 0;
|
|
32
|
-
const postureAvailable = summary.tools > 0;
|
|
33
|
-
const coverage = result.discovery.servers.length > 0
|
|
34
|
-
? Math.round((successfulInventories / result.discovery.servers.length) * 100)
|
|
35
|
-
: 100;
|
|
36
|
-
const localExplanations = result.explanations.filter((explanation) => explanation.source === 'local-llm').length;
|
|
37
|
-
const evidenceExplanations = result.explanations.length - localExplanations;
|
|
38
|
-
const stateChangingTools = result.tools.filter((tool) => tool.classification.capabilities.some((capability) => (['write-data', 'write-files', 'delete-data', 'execute-code', 'execute-shell', 'deploy-production',
|
|
39
|
-
'edit-code', 'merge-pull-request', 'administer-system', 'send-message'].includes(capability)))).length;
|
|
40
|
-
return [
|
|
41
|
-
{
|
|
42
|
-
active: 'Discovering Claude and Codex MCP configurations',
|
|
43
|
-
complete: `${summary.clientsDetected} agent ${plural(summary.clientsDetected, 'client')} · ${configSources} configuration ${plural(configSources, 'source')}`,
|
|
44
|
-
delayMs: 1_800,
|
|
45
|
-
tone: 'success',
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
active: 'Requesting declared tools/list inventories',
|
|
49
|
-
complete: `${successfulInventories}/${result.discovery.servers.length} server inventories · ${summary.tools} tools`,
|
|
50
|
-
delayMs: 2_200,
|
|
51
|
-
tone: unavailableInventories > 0 ? 'warning' : 'success',
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
active: 'Explaining every server with the bundled local 1B model',
|
|
55
|
-
complete: `${localExplanations} model explanations · ${evidenceExplanations} evidence summaries`,
|
|
56
|
-
delayMs: 2_000,
|
|
57
|
-
tone: 'success',
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
active: 'Classifying tools against the reviewed capability catalog',
|
|
61
|
-
complete: `${summary.classified} classified · ${summary.unclassified} unclassified · ${confidence}% coverage`,
|
|
62
|
-
delayMs: 2_000,
|
|
63
|
-
tone: summary.unclassified > 0 ? 'warning' : 'success',
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
active: 'Correlating sensitive, state-changing, and cross-server access',
|
|
67
|
-
complete: `${summary.sensitiveCapabilities} sensitive · ${stateChangingTools} state-changing · ${summary.highRiskFindings} high-risk`,
|
|
68
|
-
delayMs: 1_800,
|
|
69
|
-
tone: summary.highRiskFindings > 0 ? 'warning' : 'success',
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
active: 'Building the local audit report',
|
|
73
|
-
complete: postureAvailable
|
|
74
|
-
? `security posture ${summary.postureScore}/100 · inventory ${coverage}%`
|
|
75
|
-
: 'security posture unavailable · inventory incomplete',
|
|
76
|
-
delayMs: 2_200,
|
|
77
|
-
tone: !postureAvailable || unavailableInventories > 0 ? 'warning' : 'success',
|
|
78
|
-
},
|
|
79
|
-
];
|
|
80
|
-
}
|
|
81
|
-
export async function playAnalysisPath(result, options = {}) {
|
|
82
|
-
const sleep = options.sleep || wait;
|
|
83
|
-
const beats = buildAnalysisPath(result);
|
|
84
|
-
const first = beats[0];
|
|
85
|
-
if (!first)
|
|
86
|
-
return;
|
|
87
|
-
const requestedDuration = Math.max(0, options.durationMs ?? DEFAULT_INSPECTION_WINDOW_MS);
|
|
88
|
-
const nominalDuration = beats.reduce((total, beat) => total + beat.delayMs, 0);
|
|
89
|
-
const scale = nominalDuration > 0 ? requestedDuration / nominalDuration : 0;
|
|
90
|
-
let remainingMs = requestedDuration;
|
|
91
|
-
const spinner = ora({
|
|
92
|
-
color: 'magenta',
|
|
93
|
-
...(options.silent !== undefined ? { isSilent: options.silent } : {}),
|
|
94
|
-
spinner: 'dots12',
|
|
95
|
-
text: first.active,
|
|
96
|
-
}).start();
|
|
97
|
-
for (const [index, beat] of beats.entries()) {
|
|
98
|
-
const phaseDuration = beat.delayMs * scale;
|
|
99
|
-
const analysisDuration = Math.round(phaseDuration * 0.82);
|
|
100
|
-
const evidenceDuration = Math.max(0, Math.round(phaseDuration) - analysisDuration);
|
|
101
|
-
const position = chalk.gray(`${String(index + 1).padStart(2, '0')}/${beats.length}`);
|
|
102
|
-
spinner.text = `${position} ${progressRail(index + 0.25, beats.length)} ${phaseGlyph(index)} ${beat.active} ${chalk.gray(`· ${formatRemaining(remainingMs)}`)}`;
|
|
103
|
-
await sleep(analysisDuration);
|
|
104
|
-
remainingMs = Math.max(0, remainingMs - analysisDuration);
|
|
105
|
-
const marker = beat.tone === 'warning' ? chalk.yellow('·') : chalk.green('✓');
|
|
106
|
-
spinner.text = `${position} ${progressRail(index + 1, beats.length)} ${marker} ${beat.complete}`;
|
|
107
|
-
await sleep(evidenceDuration);
|
|
108
|
-
remainingMs = Math.max(0, remainingMs - evidenceDuration);
|
|
109
|
-
}
|
|
110
|
-
spinner.succeed(`${chalk.bold('Audit analysis complete')} ${chalk.gray('·')} ${result.summary.highRiskFindings} high-risk ${chalk.gray('·')} ${result.summary.unclassified} unclassified`);
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=analysis-path.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-path.js","sourceRoot":"","sources":["../../src/tui/analysis-path.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/render.d.ts
DELETED
package/dist/tui/render.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/tui/render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAiF,MAAM,aAAa,CAAC;AA6O9H,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAkDvD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAKrC"}
|