proofscan 0.5.11 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/cli.js +9 -7
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/index.d.ts +1 -0
  4. package/dist/commands/index.d.ts.map +1 -1
  5. package/dist/commands/index.js +2 -0
  6. package/dist/commands/index.js.map +1 -1
  7. package/dist/commands/shell.d.ts +6 -0
  8. package/dist/commands/shell.d.ts.map +1 -0
  9. package/dist/commands/shell.js +33 -0
  10. package/dist/commands/shell.js.map +1 -0
  11. package/dist/shell/completer.d.ts +18 -0
  12. package/dist/shell/completer.d.ts.map +1 -0
  13. package/dist/shell/completer.js +136 -0
  14. package/dist/shell/completer.js.map +1 -0
  15. package/dist/shell/history.d.ts +20 -0
  16. package/dist/shell/history.d.ts.map +1 -0
  17. package/dist/shell/history.js +75 -0
  18. package/dist/shell/history.js.map +1 -0
  19. package/dist/shell/index.d.ts +11 -0
  20. package/dist/shell/index.d.ts.map +1 -0
  21. package/dist/shell/index.js +10 -0
  22. package/dist/shell/index.js.map +1 -0
  23. package/dist/shell/prompt.d.ts +34 -0
  24. package/dist/shell/prompt.d.ts.map +1 -0
  25. package/dist/shell/prompt.js +87 -0
  26. package/dist/shell/prompt.js.map +1 -0
  27. package/dist/shell/repl.d.ts +76 -0
  28. package/dist/shell/repl.d.ts.map +1 -0
  29. package/dist/shell/repl.js +486 -0
  30. package/dist/shell/repl.js.map +1 -0
  31. package/dist/shell/selector.d.ts +23 -0
  32. package/dist/shell/selector.d.ts.map +1 -0
  33. package/dist/shell/selector.js +86 -0
  34. package/dist/shell/selector.js.map +1 -0
  35. package/dist/shell/types.d.ts +47 -0
  36. package/dist/shell/types.d.ts.map +1 -0
  37. package/dist/shell/types.js +71 -0
  38. package/dist/shell/types.js.map +1 -0
  39. package/package.json +1 -1
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Interactive selector for missing arguments
3
+ */
4
+ import * as readline from 'readline';
5
+ import { supportsColor, printInfo, printError } from './prompt.js';
6
+ const COLORS = {
7
+ reset: '\x1b[0m',
8
+ cyan: '\x1b[36m',
9
+ dim: '\x1b[2m',
10
+ reverse: '\x1b[7m',
11
+ };
12
+ /**
13
+ * Check if interactive selection is available
14
+ */
15
+ export function canInteract() {
16
+ return process.stdin.isTTY === true && process.stdout.isTTY === true;
17
+ }
18
+ /**
19
+ * Show a simple numbered list and get selection
20
+ */
21
+ export async function selectFromList(items, prompt) {
22
+ if (!canInteract()) {
23
+ return null;
24
+ }
25
+ if (items.length === 0) {
26
+ printError('No items available to select');
27
+ return null;
28
+ }
29
+ // Show numbered list
30
+ console.log();
31
+ printInfo(prompt);
32
+ console.log();
33
+ const useColors = supportsColor();
34
+ items.forEach((item, index) => {
35
+ const num = `[${index + 1}]`;
36
+ if (useColors) {
37
+ console.log(` ${COLORS.cyan}${num}${COLORS.reset} ${item}`);
38
+ }
39
+ else {
40
+ console.log(` ${num} ${item}`);
41
+ }
42
+ });
43
+ console.log();
44
+ // Get user input
45
+ const rl = readline.createInterface({
46
+ input: process.stdin,
47
+ output: process.stdout,
48
+ });
49
+ return new Promise((resolve) => {
50
+ rl.question('Enter number (or q to cancel): ', (answer) => {
51
+ rl.close();
52
+ const trimmed = answer.trim().toLowerCase();
53
+ if (trimmed === 'q' || trimmed === '') {
54
+ resolve(null);
55
+ return;
56
+ }
57
+ const num = parseInt(trimmed, 10);
58
+ if (isNaN(num) || num < 1 || num > items.length) {
59
+ printError(`Invalid selection: ${trimmed}`);
60
+ resolve(null);
61
+ return;
62
+ }
63
+ resolve(items[num - 1]);
64
+ });
65
+ });
66
+ }
67
+ /**
68
+ * Show connector selection UI
69
+ */
70
+ export async function selectConnector(connectors) {
71
+ return selectFromList(connectors, 'Select a connector:');
72
+ }
73
+ /**
74
+ * Show session selection UI
75
+ */
76
+ export async function selectSession(sessions) {
77
+ const items = sessions.map(s => `${s.id.slice(0, 8)} (${s.connector_id})`);
78
+ const selected = await selectFromList(items, 'Select a session:');
79
+ if (!selected) {
80
+ return null;
81
+ }
82
+ // Extract session ID from selection
83
+ const match = selected.match(/^([a-f0-9]+)/);
84
+ return match ? sessions.find(s => s.id.startsWith(match[1]))?.id || null : null;
85
+ }
86
+ //# sourceMappingURL=selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/shell/selector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Shell types and interfaces
3
+ */
4
+ /**
5
+ * Shell context - current connector/session state
6
+ */
7
+ export interface ShellContext {
8
+ connector?: string;
9
+ session?: string;
10
+ }
11
+ /**
12
+ * Shell completion result
13
+ */
14
+ export interface CompletionResult {
15
+ completions: string[];
16
+ prefix: string;
17
+ }
18
+ /**
19
+ * Shell command definition for internal commands
20
+ */
21
+ export interface ShellCommand {
22
+ name: string;
23
+ aliases?: string[];
24
+ description: string;
25
+ action: (args: string[], context: ShellContext) => Promise<void>;
26
+ }
27
+ /**
28
+ * Top-level commands available in shell
29
+ */
30
+ export declare const TOP_LEVEL_COMMANDS: string[];
31
+ /**
32
+ * Commands with subcommands
33
+ */
34
+ export declare const COMMAND_SUBCOMMANDS: Record<string, string[]>;
35
+ /**
36
+ * Common options for commands
37
+ */
38
+ export declare const COMMON_OPTIONS: string[];
39
+ /**
40
+ * Command-specific options
41
+ */
42
+ export declare const COMMAND_OPTIONS: Record<string, string[]>;
43
+ /**
44
+ * Shell built-in commands
45
+ */
46
+ export declare const SHELL_BUILTINS: string[];
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shell/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,UAiB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAUxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAM1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAcpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAA2D,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Shell types and interfaces
3
+ */
4
+ /**
5
+ * Top-level commands available in shell
6
+ */
7
+ export const TOP_LEVEL_COMMANDS = [
8
+ 'view', 'v',
9
+ 'tree', 't',
10
+ 'explore', 'e',
11
+ 'scan', 's',
12
+ 'status', 'st',
13
+ 'archive', 'a',
14
+ 'config', 'c',
15
+ 'connectors', 'connector',
16
+ 'sessions',
17
+ 'monitor',
18
+ 'events',
19
+ 'rpc',
20
+ 'summary',
21
+ 'permissions',
22
+ 'record',
23
+ 'doctor',
24
+ ];
25
+ /**
26
+ * Commands with subcommands
27
+ */
28
+ export const COMMAND_SUBCOMMANDS = {
29
+ scan: ['start'],
30
+ config: ['init', 'show', 'validate', 'path', 'ls', 'list', 'snapshot', 'restore'],
31
+ connectors: ['list', 'show', 'add', 'enable', 'disable', 'remove', 'import'],
32
+ connector: ['list', 'show', 'add', 'enable', 'disable', 'remove', 'import'],
33
+ sessions: ['list', 'use', 'current', 'clear'],
34
+ archive: ['run', 'status'],
35
+ events: ['ls', 'export'],
36
+ rpc: ['list', 'show'],
37
+ record: ['dry-run'],
38
+ };
39
+ /**
40
+ * Common options for commands
41
+ */
42
+ export const COMMON_OPTIONS = [
43
+ '--json',
44
+ '--verbose',
45
+ '-v',
46
+ '--help',
47
+ '-h',
48
+ ];
49
+ /**
50
+ * Command-specific options
51
+ */
52
+ export const COMMAND_OPTIONS = {
53
+ view: ['--limit', '--since', '--errors', '--method', '--connector', '--session', '--fulltime', '--full-time', '--time-full', '--with-sessions', '--pairs', '--pair'],
54
+ tree: ['--sessions', '--rpc', '--session', '--rpc-all', '--method', '--status', '--compact', '--ids-only', '--since'],
55
+ scan: ['--id', '--timeout', '--dry-run'],
56
+ 'scan start': ['--id', '--timeout', '--dry-run'],
57
+ rpc: ['--session', '--id', '--format', '--copy'],
58
+ 'rpc list': ['--session', '--format'],
59
+ 'rpc show': ['--session', '--id', '--format', '--copy'],
60
+ summary: ['--session', '--format'],
61
+ permissions: ['--session', '--category'],
62
+ connectors: ['--id', '--from', '--file', '--stdin', '--name'],
63
+ sessions: ['--limit'],
64
+ archive: ['--older-than', '--dry-run'],
65
+ record: ['--output'],
66
+ };
67
+ /**
68
+ * Shell built-in commands
69
+ */
70
+ export const SHELL_BUILTINS = ['use', 'reset', 'pwd', 'help', 'exit', 'quit', 'clear'];
71
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shell/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4BH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;IACb,YAAY,EAAE,WAAW;IACzB,UAAU;IACV,SAAS;IACT,QAAQ;IACR,KAAK;IACL,SAAS;IACT,aAAa;IACb,QAAQ;IACR,QAAQ;CACT,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA6B;IAC3D,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;IACjF,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC5E,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC3E,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC;IAC7C,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,SAAS,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ;IACR,WAAW;IACX,IAAI;IACJ,QAAQ;IACR,IAAI;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,CAAC;IACpK,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;IACrH,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;IAChD,GAAG,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC;IAChD,UAAU,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;IACrC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC;IACvD,OAAO,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;IAClC,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACxC,UAAU,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;IAC7D,QAAQ,EAAE,CAAC,SAAS,CAAC;IACrB,OAAO,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;IACtC,MAAM,EAAE,CAAC,UAAU,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proofscan",
3
- "version": "0.5.11",
3
+ "version": "0.6.1",
4
4
  "description": "MCP Server scanner - eliminate black boxes by capturing JSON-RPC from connection to tools/list",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",