procsi 0.2.7 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +341 -214
  2. package/dist/cli/commands/completions.d.ts +9 -0
  3. package/dist/cli/commands/completions.d.ts.map +1 -0
  4. package/dist/cli/commands/completions.js +170 -0
  5. package/dist/cli/commands/completions.js.map +1 -0
  6. package/dist/cli/commands/helpers.d.ts +9 -0
  7. package/dist/cli/commands/helpers.d.ts.map +1 -1
  8. package/dist/cli/commands/helpers.js +19 -1
  9. package/dist/cli/commands/helpers.js.map +1 -1
  10. package/dist/cli/commands/interceptors.d.ts.map +1 -1
  11. package/dist/cli/commands/interceptors.js +142 -0
  12. package/dist/cli/commands/interceptors.js.map +1 -1
  13. package/dist/cli/commands/off.d.ts.map +1 -1
  14. package/dist/cli/commands/off.js +1 -0
  15. package/dist/cli/commands/off.js.map +1 -1
  16. package/dist/cli/commands/on.d.ts.map +1 -1
  17. package/dist/cli/commands/on.js +3 -1
  18. package/dist/cli/commands/on.js.map +1 -1
  19. package/dist/cli/commands/request.d.ts +6 -0
  20. package/dist/cli/commands/request.d.ts.map +1 -0
  21. package/dist/cli/commands/request.js +216 -0
  22. package/dist/cli/commands/request.js.map +1 -0
  23. package/dist/cli/commands/requests.d.ts +6 -0
  24. package/dist/cli/commands/requests.d.ts.map +1 -0
  25. package/dist/cli/commands/requests.js +290 -0
  26. package/dist/cli/commands/requests.js.map +1 -0
  27. package/dist/cli/commands/sessions.d.ts +6 -0
  28. package/dist/cli/commands/sessions.d.ts.map +1 -0
  29. package/dist/cli/commands/sessions.js +39 -0
  30. package/dist/cli/commands/sessions.js.map +1 -0
  31. package/dist/cli/formatters/colour.d.ts +17 -0
  32. package/dist/cli/formatters/colour.d.ts.map +1 -0
  33. package/dist/cli/formatters/colour.js +23 -0
  34. package/dist/cli/formatters/colour.js.map +1 -0
  35. package/dist/cli/formatters/detail.d.ts +17 -0
  36. package/dist/cli/formatters/detail.d.ts.map +1 -0
  37. package/dist/cli/formatters/detail.js +135 -0
  38. package/dist/cli/formatters/detail.js.map +1 -0
  39. package/dist/cli/formatters/hints.d.ts +17 -0
  40. package/dist/cli/formatters/hints.d.ts.map +1 -0
  41. package/dist/cli/formatters/hints.js +29 -0
  42. package/dist/cli/formatters/hints.js.map +1 -0
  43. package/dist/cli/formatters/table.d.ts +17 -0
  44. package/dist/cli/formatters/table.d.ts.map +1 -0
  45. package/dist/cli/formatters/table.js +85 -0
  46. package/dist/cli/formatters/table.js.map +1 -0
  47. package/dist/cli/index.js +8 -0
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/cli/tui/App.d.ts.map +1 -1
  50. package/dist/cli/tui/App.js +67 -6
  51. package/dist/cli/tui/App.js.map +1 -1
  52. package/dist/cli/tui/components/AccordionPanel.d.ts.map +1 -1
  53. package/dist/cli/tui/components/AccordionPanel.js +1 -1
  54. package/dist/cli/tui/components/AccordionPanel.js.map +1 -1
  55. package/dist/cli/tui/components/EventFilterBar.d.ts +27 -0
  56. package/dist/cli/tui/components/EventFilterBar.d.ts.map +1 -0
  57. package/dist/cli/tui/components/EventFilterBar.js +145 -0
  58. package/dist/cli/tui/components/EventFilterBar.js.map +1 -0
  59. package/dist/cli/tui/components/FilterBar.d.ts.map +1 -1
  60. package/dist/cli/tui/components/FilterBar.js +34 -3
  61. package/dist/cli/tui/components/FilterBar.js.map +1 -1
  62. package/dist/cli/tui/components/HelpModal.d.ts.map +1 -1
  63. package/dist/cli/tui/components/HelpModal.js +3 -0
  64. package/dist/cli/tui/components/HelpModal.js.map +1 -1
  65. package/dist/cli/tui/components/InfoBar.d.ts +15 -0
  66. package/dist/cli/tui/components/InfoBar.d.ts.map +1 -0
  67. package/dist/cli/tui/components/InfoBar.js +45 -0
  68. package/dist/cli/tui/components/InfoBar.js.map +1 -0
  69. package/dist/cli/tui/components/InterceptorLogModal.d.ts +16 -0
  70. package/dist/cli/tui/components/InterceptorLogModal.d.ts.map +1 -0
  71. package/dist/cli/tui/components/InterceptorLogModal.js +229 -0
  72. package/dist/cli/tui/components/InterceptorLogModal.js.map +1 -0
  73. package/dist/cli/tui/components/RequestListItem.d.ts.map +1 -1
  74. package/dist/cli/tui/components/RequestListItem.js +3 -2
  75. package/dist/cli/tui/components/RequestListItem.js.map +1 -1
  76. package/dist/cli/tui/components/StatusBar.d.ts +7 -2
  77. package/dist/cli/tui/components/StatusBar.d.ts.map +1 -1
  78. package/dist/cli/tui/components/StatusBar.js +13 -6
  79. package/dist/cli/tui/components/StatusBar.js.map +1 -1
  80. package/dist/cli/tui/hooks/useInterceptorEvents.d.ts +33 -0
  81. package/dist/cli/tui/hooks/useInterceptorEvents.d.ts.map +1 -0
  82. package/dist/cli/tui/hooks/useInterceptorEvents.js +88 -0
  83. package/dist/cli/tui/hooks/useInterceptorEvents.js.map +1 -0
  84. package/dist/cli/tui/hooks/useRequests.d.ts +4 -0
  85. package/dist/cli/tui/hooks/useRequests.d.ts.map +1 -1
  86. package/dist/cli/tui/hooks/useRequests.js +36 -0
  87. package/dist/cli/tui/hooks/useRequests.js.map +1 -1
  88. package/dist/cli/tui/utils/filters.d.ts.map +1 -1
  89. package/dist/cli/tui/utils/filters.js +3 -1
  90. package/dist/cli/tui/utils/filters.js.map +1 -1
  91. package/dist/cli/utils/parse-time.d.ts +22 -0
  92. package/dist/cli/utils/parse-time.d.ts.map +1 -0
  93. package/dist/cli/utils/parse-time.js +160 -0
  94. package/dist/cli/utils/parse-time.js.map +1 -0
  95. package/dist/daemon/control.d.ts +2 -0
  96. package/dist/daemon/control.d.ts.map +1 -1
  97. package/dist/daemon/control.js +64 -2
  98. package/dist/daemon/control.js.map +1 -1
  99. package/dist/daemon/index.js +6 -1
  100. package/dist/daemon/index.js.map +1 -1
  101. package/dist/daemon/interceptor-event-log.d.ts +37 -0
  102. package/dist/daemon/interceptor-event-log.d.ts.map +1 -0
  103. package/dist/daemon/interceptor-event-log.js +163 -0
  104. package/dist/daemon/interceptor-event-log.js.map +1 -0
  105. package/dist/daemon/interceptor-loader.d.ts +3 -0
  106. package/dist/daemon/interceptor-loader.d.ts.map +1 -1
  107. package/dist/daemon/interceptor-loader.js +34 -2
  108. package/dist/daemon/interceptor-loader.js.map +1 -1
  109. package/dist/daemon/interceptor-runner.d.ts +3 -0
  110. package/dist/daemon/interceptor-runner.d.ts.map +1 -1
  111. package/dist/daemon/interceptor-runner.js +112 -8
  112. package/dist/daemon/interceptor-runner.js.map +1 -1
  113. package/dist/daemon/proxy.d.ts.map +1 -1
  114. package/dist/daemon/proxy.js +99 -4
  115. package/dist/daemon/proxy.js.map +1 -1
  116. package/dist/daemon/storage.d.ts +18 -4
  117. package/dist/daemon/storage.d.ts.map +1 -1
  118. package/dist/daemon/storage.js +111 -25
  119. package/dist/daemon/storage.js.map +1 -1
  120. package/dist/mcp/server.d.ts +3 -0
  121. package/dist/mcp/server.d.ts.map +1 -1
  122. package/dist/mcp/server.js +116 -3
  123. package/dist/mcp/server.js.map +1 -1
  124. package/dist/overrides/node.d.ts.map +1 -1
  125. package/dist/overrides/node.js +62 -0
  126. package/dist/overrides/node.js.map +1 -1
  127. package/dist/shared/constants.d.ts +10 -0
  128. package/dist/shared/constants.d.ts.map +1 -0
  129. package/dist/shared/constants.js +10 -0
  130. package/dist/shared/constants.js.map +1 -0
  131. package/dist/shared/control-client.d.ts +36 -3
  132. package/dist/shared/control-client.d.ts.map +1 -1
  133. package/dist/shared/control-client.js +27 -3
  134. package/dist/shared/control-client.js.map +1 -1
  135. package/dist/shared/process-name.d.ts +10 -0
  136. package/dist/shared/process-name.d.ts.map +1 -0
  137. package/dist/shared/process-name.js +27 -0
  138. package/dist/shared/process-name.js.map +1 -0
  139. package/dist/shared/types.d.ts +24 -0
  140. package/dist/shared/types.d.ts.map +1 -1
  141. package/package.json +2 -1
  142. package/skills/procsi/SKILL.md +5 -4
@@ -0,0 +1,216 @@
1
+ /**
2
+ * `procsi request <id>` — view a single request in detail, dump body, or export.
3
+ */
4
+ import { Command } from "commander";
5
+ import { getErrorMessage, connectToDaemon } from "./helpers.js";
6
+ import { formatRequestDetail } from "../formatters/detail.js";
7
+ import { formatHint } from "../formatters/hints.js";
8
+ import { generateCurl } from "../tui/utils/curl.js";
9
+ import { generateHarString } from "../tui/utils/har.js";
10
+ import { SHORT_ID_LENGTH } from "../formatters/table.js";
11
+ const EXPORT_FORMATS = ["curl", "har"];
12
+ /** Max requests to fetch when searching by ID prefix. */
13
+ const PREFIX_MATCH_SEARCH_LIMIT = 1000;
14
+ /**
15
+ * Resolve a potentially abbreviated ID to a full request.
16
+ * Tries exact match first, then prefix match.
17
+ */
18
+ async function resolveRequest(client, idPrefix) {
19
+ // Try exact match first
20
+ const exact = await client.getRequest(idPrefix);
21
+ if (exact)
22
+ return exact;
23
+ // Prefix match — fetch all requests and filter client-side
24
+ // (the control API doesn't have a prefix-search endpoint,
25
+ // so we use search with the ID as a substring match on url
26
+ // ... actually we need to list and filter by ID prefix)
27
+ const summaries = await client.listRequestsSummary({ limit: PREFIX_MATCH_SEARCH_LIMIT });
28
+ const matches = summaries.filter((s) => s.id.startsWith(idPrefix));
29
+ if (matches.length === 0) {
30
+ console.error(` No request found matching "${idPrefix}"`);
31
+ console.error(" Run 'procsi requests' to see captured requests");
32
+ process.exit(1);
33
+ }
34
+ if (matches.length > 1) {
35
+ console.error(` Ambiguous ID "${idPrefix}" matches ${matches.length} requests:`);
36
+ for (const m of matches.slice(0, 10)) {
37
+ console.error(` ${m.id.slice(0, SHORT_ID_LENGTH)} ${m.method} ${m.path}`);
38
+ }
39
+ if (matches.length > 10) {
40
+ console.error(` ... and ${matches.length - 10} more`);
41
+ }
42
+ console.error(" Use a longer prefix to narrow down");
43
+ process.exit(1);
44
+ }
45
+ // Exactly one match — fetch full detail
46
+ const matchedId = matches[0]?.id ?? idPrefix;
47
+ const full = await client.getRequest(matchedId);
48
+ if (!full) {
49
+ console.error(` Request ${matchedId} not found`);
50
+ process.exit(1);
51
+ }
52
+ return full;
53
+ }
54
+ // --- Subcommands ---
55
+ const bodySubcommand = new Command("body")
56
+ .description("Dump request or response body (raw, pipeable)")
57
+ .option("--request", "dump request body instead of response body")
58
+ .action(async (opts, command) => {
59
+ const parentOpts = command.parent?.args ?? [];
60
+ const idPrefix = parentOpts[0];
61
+ if (!idPrefix || typeof idPrefix !== "string") {
62
+ console.error("Usage: procsi request <id> body");
63
+ process.exit(1);
64
+ }
65
+ const { client } = await connectToDaemon(command);
66
+ try {
67
+ const request = await resolveRequest(client, idPrefix);
68
+ const body = opts.request ? request.requestBody : request.responseBody;
69
+ if (!body || body.length === 0) {
70
+ // Write nothing — consistent with piping (empty output, not an error message)
71
+ return;
72
+ }
73
+ // Warn when writing likely-binary data to a terminal
74
+ if (process.stdout.isTTY) {
75
+ const hasNullBytes = body.includes(0x00);
76
+ if (hasNullBytes) {
77
+ console.error("Binary body detected — pipe to a file instead:");
78
+ console.error(` procsi request ${idPrefix} body > output.bin`);
79
+ return;
80
+ }
81
+ }
82
+ // Write raw bytes to stdout, bypassing any encoding
83
+ process.stdout.write(body);
84
+ }
85
+ catch (err) {
86
+ console.error(`Error: ${getErrorMessage(err)}`);
87
+ process.exit(1);
88
+ }
89
+ finally {
90
+ client.close();
91
+ }
92
+ });
93
+ const exportSubcommand = new Command("export")
94
+ .description("Export request in various formats")
95
+ .argument("<format>", `output format (${EXPORT_FORMATS.join(", ")})`)
96
+ .action(async (format, _opts, command) => {
97
+ if (!EXPORT_FORMATS.includes(format)) {
98
+ console.error(`Unknown export format: "${format}"`);
99
+ console.error(`Supported formats: ${EXPORT_FORMATS.join(", ")}`);
100
+ process.exit(1);
101
+ }
102
+ const parentOpts = command.parent?.args ?? [];
103
+ const idPrefix = parentOpts[0];
104
+ if (!idPrefix || typeof idPrefix !== "string") {
105
+ console.error("Usage: procsi request <id> export <format>");
106
+ process.exit(1);
107
+ }
108
+ const { client } = await connectToDaemon(command);
109
+ try {
110
+ const request = await resolveRequest(client, idPrefix);
111
+ if (format === "curl") {
112
+ console.log(generateCurl(request));
113
+ }
114
+ else if (format === "har") {
115
+ console.log(generateHarString([request]));
116
+ }
117
+ }
118
+ catch (err) {
119
+ console.error(`Error: ${getErrorMessage(err)}`);
120
+ process.exit(1);
121
+ }
122
+ finally {
123
+ client.close();
124
+ }
125
+ });
126
+ const saveSubcommand = new Command("save")
127
+ .description("Save (bookmark) a request so it persists across clear operations")
128
+ .action(async (_opts, command) => {
129
+ const parentOpts = command.parent?.args ?? [];
130
+ const idPrefix = parentOpts[0];
131
+ if (!idPrefix || typeof idPrefix !== "string") {
132
+ console.error("Usage: procsi request <id> save");
133
+ process.exit(1);
134
+ }
135
+ const { client } = await connectToDaemon(command);
136
+ try {
137
+ const request = await resolveRequest(client, idPrefix);
138
+ const result = await client.saveRequest(request.id);
139
+ if (result.success) {
140
+ console.log(` Request ${request.id.slice(0, SHORT_ID_LENGTH)} saved`);
141
+ }
142
+ else {
143
+ console.error(` Failed to save request`);
144
+ process.exit(1);
145
+ }
146
+ }
147
+ catch (err) {
148
+ console.error(`Error: ${getErrorMessage(err)}`);
149
+ process.exit(1);
150
+ }
151
+ finally {
152
+ client.close();
153
+ }
154
+ });
155
+ const unsaveSubcommand = new Command("unsave")
156
+ .description("Remove the saved/bookmark flag from a request")
157
+ .action(async (_opts, command) => {
158
+ const parentOpts = command.parent?.args ?? [];
159
+ const idPrefix = parentOpts[0];
160
+ if (!idPrefix || typeof idPrefix !== "string") {
161
+ console.error("Usage: procsi request <id> unsave");
162
+ process.exit(1);
163
+ }
164
+ const { client } = await connectToDaemon(command);
165
+ try {
166
+ const request = await resolveRequest(client, idPrefix);
167
+ const result = await client.unsaveRequest(request.id);
168
+ if (result.success) {
169
+ console.log(` Request ${request.id.slice(0, SHORT_ID_LENGTH)} unsaved`);
170
+ }
171
+ else {
172
+ console.error(` Failed to unsave request`);
173
+ process.exit(1);
174
+ }
175
+ }
176
+ catch (err) {
177
+ console.error(`Error: ${getErrorMessage(err)}`);
178
+ process.exit(1);
179
+ }
180
+ finally {
181
+ client.close();
182
+ }
183
+ });
184
+ // --- Main `request` command ---
185
+ export const requestCommand = new Command("request")
186
+ .description("View a single request in detail")
187
+ .argument("<id>", "request ID (full or abbreviated prefix)")
188
+ .option("--json", "JSON output")
189
+ .addCommand(bodySubcommand)
190
+ .addCommand(exportSubcommand)
191
+ .addCommand(saveSubcommand)
192
+ .addCommand(unsaveSubcommand)
193
+ .action(async (id, opts, command) => {
194
+ const { client } = await connectToDaemon(command);
195
+ try {
196
+ const request = await resolveRequest(client, id);
197
+ if (opts.json) {
198
+ console.log(JSON.stringify(request, null, 2));
199
+ return;
200
+ }
201
+ console.log(formatRequestDetail(request));
202
+ const hint = formatHint(["body for full body", "export curl|har", "save|unsave to bookmark"]);
203
+ if (hint) {
204
+ console.log("");
205
+ console.log(hint);
206
+ }
207
+ }
208
+ catch (err) {
209
+ console.error(`Error: ${getErrorMessage(err)}`);
210
+ process.exit(1);
211
+ }
212
+ finally {
213
+ client.close();
214
+ }
215
+ });
216
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/cli/commands/request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `procsi requests` — list, search, query, count, and clear captured requests.
3
+ */
4
+ import { Command } from "commander";
5
+ export declare const requestsCommand: Command;
6
+ //# sourceMappingURL=requests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/requests.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsTpC,eAAO,MAAM,eAAe,SAQE,CAAC"}
@@ -0,0 +1,290 @@
1
+ /**
2
+ * `procsi requests` — list, search, query, count, and clear captured requests.
3
+ */
4
+ import { Command } from "commander";
5
+ import { getErrorMessage, connectToDaemon } from "./helpers.js";
6
+ import { formatRequestTable } from "../formatters/table.js";
7
+ import { formatHint } from "../formatters/hints.js";
8
+ import { parseTime } from "../utils/parse-time.js";
9
+ const DEFAULT_LIMIT = 50;
10
+ const HTTP_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"];
11
+ const STATUS_RANGES = ["1xx", "2xx", "3xx", "4xx", "5xx"];
12
+ /**
13
+ * Parse a numeric CLI flag, exiting with an error if the value is not a valid non-negative integer.
14
+ */
15
+ function parseIntFlag(value, flagName) {
16
+ const parsed = parseInt(value, 10);
17
+ if (isNaN(parsed) || parsed < 0) {
18
+ console.error(`Invalid ${flagName} value: "${value}"`);
19
+ process.exit(1);
20
+ }
21
+ return parsed;
22
+ }
23
+ /**
24
+ * Build a RequestFilter from CLI flags.
25
+ */
26
+ function buildFilter(opts) {
27
+ const filter = {};
28
+ if (opts.method) {
29
+ filter.methods = opts.method.split(",").map((m) => m.trim().toUpperCase());
30
+ }
31
+ if (opts.status) {
32
+ filter.statusRange = opts.status;
33
+ }
34
+ if (opts.host) {
35
+ filter.host = opts.host;
36
+ }
37
+ if (opts.path) {
38
+ filter.pathPrefix = opts.path;
39
+ }
40
+ if (opts.search) {
41
+ filter.search = opts.search;
42
+ }
43
+ if (opts.since) {
44
+ filter.since = parseTime(opts.since);
45
+ }
46
+ if (opts.before) {
47
+ filter.before = parseTime(opts.before);
48
+ }
49
+ if (opts.header) {
50
+ const colonIdx = opts.header.indexOf(":");
51
+ if (colonIdx > 0) {
52
+ filter.headerName = opts.header.slice(0, colonIdx);
53
+ filter.headerValue = opts.header.slice(colonIdx + 1);
54
+ }
55
+ else {
56
+ filter.headerName = opts.header;
57
+ }
58
+ }
59
+ if (opts.headerTarget) {
60
+ const validTargets = ["request", "response", "both"];
61
+ if (!validTargets.includes(opts.headerTarget)) {
62
+ console.error(`Invalid --header-target: "${opts.headerTarget}". Use: ${validTargets.join(", ")}`);
63
+ process.exit(1);
64
+ }
65
+ filter.headerTarget = opts.headerTarget;
66
+ }
67
+ if (opts.interceptedBy) {
68
+ filter.interceptedBy = opts.interceptedBy;
69
+ }
70
+ if (opts.saved) {
71
+ filter.saved = true;
72
+ }
73
+ if (opts.source) {
74
+ filter.source = opts.source;
75
+ }
76
+ return filter;
77
+ }
78
+ /**
79
+ * Add common filter flags to a command.
80
+ */
81
+ function addFilterFlags(cmd) {
82
+ return cmd
83
+ .option("--method <methods>", `filter by HTTP method (comma-separated: ${HTTP_METHODS.join(",")})`)
84
+ .option("--status <range>", `filter by status range (${STATUS_RANGES.join(", ")}, or exact e.g. 401)`)
85
+ .option("--host <host>", "filter by hostname")
86
+ .option("--path <prefix>", "filter by path prefix")
87
+ .option("--search <text>", "substring match on URL")
88
+ .option("--since <time>", "filter from time (e.g. 5m, 2h, 10am, yesterday, 2024-01-01)")
89
+ .option("--before <time>", "filter before time (same formats as --since)")
90
+ .option("--header <spec>", "filter by header name or name:value")
91
+ .option("--header-target <target>", "which headers to search (request, response, both)", "both")
92
+ .option("--intercepted-by <name>", "filter by interceptor name")
93
+ .option("--saved", "show only saved/bookmarked requests")
94
+ .option("--source <name>", "filter by request source (e.g. node, python)");
95
+ }
96
+ // --- Subcommands ---
97
+ const searchSubcommand = new Command("search")
98
+ .description("Full-text search through request/response bodies")
99
+ .argument("<query>", "search string")
100
+ .option("--limit <n>", "max results", String(DEFAULT_LIMIT))
101
+ .option("--offset <n>", "skip results", "0")
102
+ .option("--json", "JSON output");
103
+ addFilterFlags(searchSubcommand);
104
+ searchSubcommand.action(async (query, opts, command) => {
105
+ const { client } = await connectToDaemon(command);
106
+ try {
107
+ const filter = buildFilter(opts);
108
+ const limit = parseIntFlag(opts.limit ?? String(DEFAULT_LIMIT), "--limit");
109
+ const offset = parseIntFlag(opts.offset ?? "0", "--offset");
110
+ const results = await client.searchBodies({ query, limit, offset, filter });
111
+ if (opts.json) {
112
+ console.log(JSON.stringify(results, null, 2));
113
+ return;
114
+ }
115
+ if (results.length === 0) {
116
+ console.log(` No requests found matching "${query}"`);
117
+ return;
118
+ }
119
+ console.log(formatRequestTable(results, results.length));
120
+ const hint = formatHint(["procsi request <id> for detail", "--json for JSON output"]);
121
+ if (hint)
122
+ console.log(hint);
123
+ }
124
+ catch (err) {
125
+ console.error(`Error searching requests: ${getErrorMessage(err)}`);
126
+ process.exit(1);
127
+ }
128
+ finally {
129
+ client.close();
130
+ }
131
+ });
132
+ const querySubcommand = new Command("query")
133
+ .description("Query JSON bodies using JSONPath")
134
+ .argument("<jsonpath>", "JSONPath expression (e.g. $.data.id)")
135
+ .option("--value <v>", "filter by extracted value")
136
+ .option("--target <target>", "request, response, or both", "both")
137
+ .option("--limit <n>", "max results", String(DEFAULT_LIMIT))
138
+ .option("--offset <n>", "skip results", "0")
139
+ .option("--json", "JSON output");
140
+ addFilterFlags(querySubcommand);
141
+ querySubcommand.action(async (jsonPath, opts, command) => {
142
+ const { client } = await connectToDaemon(command);
143
+ try {
144
+ const filter = buildFilter(opts);
145
+ const limit = parseIntFlag(opts.limit ?? String(DEFAULT_LIMIT), "--limit");
146
+ const offset = parseIntFlag(opts.offset ?? "0", "--offset");
147
+ const validTargets = ["request", "response", "both"];
148
+ const target = opts.target ?? "both";
149
+ if (!validTargets.includes(target)) {
150
+ console.error(`Invalid --target: "${target}". Use: ${validTargets.join(", ")}`);
151
+ process.exit(1);
152
+ }
153
+ const results = await client.queryJsonBodies({
154
+ jsonPath,
155
+ value: opts.value,
156
+ target: target,
157
+ limit,
158
+ offset,
159
+ filter,
160
+ });
161
+ if (opts.json) {
162
+ console.log(JSON.stringify(results, null, 2));
163
+ return;
164
+ }
165
+ if (results.length === 0) {
166
+ console.log(` No results for JSONPath "${jsonPath}"`);
167
+ return;
168
+ }
169
+ // Show table with extracted values
170
+ for (const result of results) {
171
+ const shortId = result.id.slice(0, 7);
172
+ const value = JSON.stringify(result.extractedValue);
173
+ console.log(` ${shortId} ${result.method} ${result.path} → ${value}`);
174
+ }
175
+ }
176
+ catch (err) {
177
+ console.error(`Error querying requests: ${getErrorMessage(err)}`);
178
+ process.exit(1);
179
+ }
180
+ finally {
181
+ client.close();
182
+ }
183
+ });
184
+ const countSubcommand = new Command("count")
185
+ .description("Count requests matching filters")
186
+ .option("--json", "JSON output");
187
+ addFilterFlags(countSubcommand);
188
+ countSubcommand.action(async (opts, command) => {
189
+ const { client } = await connectToDaemon(command);
190
+ try {
191
+ const filter = buildFilter(opts);
192
+ const count = await client.countRequests({ filter });
193
+ if (opts.json) {
194
+ console.log(JSON.stringify({ count }));
195
+ return;
196
+ }
197
+ console.log(` ${count} request${count === 1 ? "" : "s"}`);
198
+ }
199
+ catch (err) {
200
+ console.error(`Error counting requests: ${getErrorMessage(err)}`);
201
+ process.exit(1);
202
+ }
203
+ finally {
204
+ client.close();
205
+ }
206
+ });
207
+ const clearSubcommand = new Command("clear")
208
+ .description("Clear all captured requests")
209
+ .option("--yes", "skip confirmation prompt")
210
+ .action(async (opts, command) => {
211
+ const { client } = await connectToDaemon(command);
212
+ try {
213
+ if (!opts.yes && process.stdout.isTTY) {
214
+ // Simple confirmation via stdin
215
+ const readline = await import("node:readline");
216
+ const rl = readline.createInterface({
217
+ input: process.stdin,
218
+ output: process.stdout,
219
+ });
220
+ const answer = await new Promise((resolve) => {
221
+ rl.question(" Clear all captured requests? [y/N] ", resolve);
222
+ });
223
+ rl.close();
224
+ if (answer.toLowerCase() !== "y") {
225
+ console.log(" Cancelled");
226
+ return;
227
+ }
228
+ }
229
+ await client.clearRequests();
230
+ console.log(" Requests cleared");
231
+ }
232
+ catch (err) {
233
+ console.error(`Error clearing requests: ${getErrorMessage(err)}`);
234
+ process.exit(1);
235
+ }
236
+ finally {
237
+ client.close();
238
+ }
239
+ });
240
+ // --- Main `requests` command ---
241
+ export const requestsCommand = new Command("requests")
242
+ .description("List and filter captured requests")
243
+ .option("--limit <n>", "max results", String(DEFAULT_LIMIT))
244
+ .option("--offset <n>", "skip results", "0")
245
+ .option("--json", "JSON output")
246
+ .addCommand(searchSubcommand)
247
+ .addCommand(querySubcommand)
248
+ .addCommand(countSubcommand)
249
+ .addCommand(clearSubcommand);
250
+ addFilterFlags(requestsCommand);
251
+ requestsCommand.action(async (opts, command) => {
252
+ const { client } = await connectToDaemon(command);
253
+ try {
254
+ const filter = buildFilter(opts);
255
+ const limit = parseIntFlag(opts.limit ?? String(DEFAULT_LIMIT), "--limit");
256
+ const offset = parseIntFlag(opts.offset ?? "0", "--offset");
257
+ // Fetch summaries and count in parallel
258
+ const [summaries, total] = await Promise.all([
259
+ client.listRequestsSummary({ limit, offset, filter }),
260
+ client.countRequests({ filter }),
261
+ ]);
262
+ if (opts.json) {
263
+ console.log(JSON.stringify({ requests: summaries, total, limit, offset }, null, 2));
264
+ return;
265
+ }
266
+ if (summaries.length === 0) {
267
+ console.log(" No requests captured");
268
+ const hint = formatHint(["make HTTP requests while procsi is intercepting"]);
269
+ if (hint)
270
+ console.log(hint);
271
+ return;
272
+ }
273
+ console.log(formatRequestTable(summaries, total));
274
+ const hint = formatHint([
275
+ "procsi request <id>",
276
+ "--method, --status, --host, --since to filter",
277
+ "--json for JSON",
278
+ ]);
279
+ if (hint)
280
+ console.log(hint);
281
+ }
282
+ catch (err) {
283
+ console.error(`Error listing requests: ${getErrorMessage(err)}`);
284
+ process.exit(1);
285
+ }
286
+ finally {
287
+ client.close();
288
+ }
289
+ });
290
+ //# sourceMappingURL=requests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../src/cli/commands/requests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `procsi sessions` — list active proxy sessions.
3
+ */
4
+ import { Command } from "commander";
5
+ export declare const sessionsCommand: Command;
6
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,eAAe,SA+BxB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * `procsi sessions` — list active proxy sessions.
3
+ */
4
+ import { Command } from "commander";
5
+ import { getErrorMessage, connectToDaemon } from "./helpers.js";
6
+ import { formatSessionTable } from "../formatters/detail.js";
7
+ import { formatHint } from "../formatters/hints.js";
8
+ export const sessionsCommand = new Command("sessions")
9
+ .description("List active proxy sessions")
10
+ .option("--json", "JSON output")
11
+ .action(async (opts, command) => {
12
+ const { client } = await connectToDaemon(command);
13
+ try {
14
+ const sessions = await client.listSessions();
15
+ if (opts.json) {
16
+ console.log(JSON.stringify(sessions, null, 2));
17
+ return;
18
+ }
19
+ if (sessions.length === 0) {
20
+ console.log(" No active sessions");
21
+ return;
22
+ }
23
+ console.log(formatSessionTable(sessions));
24
+ const hint = formatHint([
25
+ "procsi requests to see captured traffic",
26
+ "--json for JSON output",
27
+ ]);
28
+ if (hint)
29
+ console.log(hint);
30
+ }
31
+ catch (err) {
32
+ console.error(`Error listing sessions: ${getErrorMessage(err)}`);
33
+ process.exit(1);
34
+ }
35
+ finally {
36
+ client.close();
37
+ }
38
+ });
39
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/cli/commands/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,OAAgB,EAAE,EAAE;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAE7C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE1C,MAAM,IAAI,GAAG,UAAU,CAAC;YACtB,yCAAyC;YACzC,wBAAwB;SACzB,CAAC,CAAC;QACH,IAAI,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Shared ANSI colour constants and helpers for CLI formatters.
3
+ * Centralised to prevent duplication and ensure consistent NO_COLOR handling.
4
+ */
5
+ export declare const GREEN = "\u001B[32m";
6
+ export declare const YELLOW = "\u001B[33m";
7
+ export declare const RED = "\u001B[31m";
8
+ export declare const CYAN = "\u001B[36m";
9
+ export declare const BOLD = "\u001B[1m";
10
+ export declare const DIM = "\u001B[2m";
11
+ export declare const RESET = "\u001B[0m";
12
+ /**
13
+ * Whether colour output is enabled.
14
+ * Returns false when NO_COLOR is set or stdout is not a TTY.
15
+ */
16
+ export declare function useColour(): boolean;
17
+ //# sourceMappingURL=colour.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colour.d.ts","sourceRoot":"","sources":["../../../src/cli/formatters/colour.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,KAAK,eAAa,CAAC;AAChC,eAAO,MAAM,MAAM,eAAa,CAAC;AACjC,eAAO,MAAM,GAAG,eAAa,CAAC;AAC9B,eAAO,MAAM,IAAI,eAAa,CAAC;AAC/B,eAAO,MAAM,IAAI,cAAY,CAAC;AAC9B,eAAO,MAAM,GAAG,cAAY,CAAC;AAC7B,eAAO,MAAM,KAAK,cAAY,CAAC;AAE/B;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAInC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shared ANSI colour constants and helpers for CLI formatters.
3
+ * Centralised to prevent duplication and ensure consistent NO_COLOR handling.
4
+ */
5
+ export const GREEN = "\x1b[32m";
6
+ export const YELLOW = "\x1b[33m";
7
+ export const RED = "\x1b[31m";
8
+ export const CYAN = "\x1b[36m";
9
+ export const BOLD = "\x1b[1m";
10
+ export const DIM = "\x1b[2m";
11
+ export const RESET = "\x1b[0m";
12
+ /**
13
+ * Whether colour output is enabled.
14
+ * Returns false when NO_COLOR is set or stdout is not a TTY.
15
+ */
16
+ export function useColour() {
17
+ if (process.env["NO_COLOR"] !== undefined)
18
+ return false;
19
+ if (!process.stdout.isTTY)
20
+ return false;
21
+ return true;
22
+ }
23
+ //# sourceMappingURL=colour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colour.js","sourceRoot":"","sources":["../../../src/cli/formatters/colour.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;AAChC,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AACjC,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC;AAC9B,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;AAC7B,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAE/B;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC"}