procsi 0.2.6 → 0.3.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.
- package/README.md +264 -148
- package/dist/cli/commands/completions.d.ts +9 -0
- package/dist/cli/commands/completions.d.ts.map +1 -0
- package/dist/cli/commands/completions.js +170 -0
- package/dist/cli/commands/completions.js.map +1 -0
- package/dist/cli/commands/helpers.d.ts +9 -0
- package/dist/cli/commands/helpers.d.ts.map +1 -1
- package/dist/cli/commands/helpers.js +19 -1
- package/dist/cli/commands/helpers.js.map +1 -1
- package/dist/cli/commands/interceptors.d.ts.map +1 -1
- package/dist/cli/commands/interceptors.js +142 -0
- package/dist/cli/commands/interceptors.js.map +1 -1
- package/dist/cli/commands/off.d.ts +0 -5
- package/dist/cli/commands/off.d.ts.map +1 -1
- package/dist/cli/commands/off.js +24 -23
- package/dist/cli/commands/off.js.map +1 -1
- package/dist/cli/commands/on.d.ts +27 -0
- package/dist/cli/commands/on.d.ts.map +1 -1
- package/dist/cli/commands/on.js +71 -17
- package/dist/cli/commands/on.js.map +1 -1
- package/dist/cli/commands/request.d.ts +6 -0
- package/dist/cli/commands/request.d.ts.map +1 -0
- package/dist/cli/commands/request.js +160 -0
- package/dist/cli/commands/request.js.map +1 -0
- package/dist/cli/commands/requests.d.ts +6 -0
- package/dist/cli/commands/requests.d.ts.map +1 -0
- package/dist/cli/commands/requests.js +282 -0
- package/dist/cli/commands/requests.js.map +1 -0
- package/dist/cli/commands/sessions.d.ts +6 -0
- package/dist/cli/commands/sessions.d.ts.map +1 -0
- package/dist/cli/commands/sessions.js +39 -0
- package/dist/cli/commands/sessions.js.map +1 -0
- package/dist/cli/formatters/colour.d.ts +17 -0
- package/dist/cli/formatters/colour.d.ts.map +1 -0
- package/dist/cli/formatters/colour.js +23 -0
- package/dist/cli/formatters/colour.js.map +1 -0
- package/dist/cli/formatters/detail.d.ts +17 -0
- package/dist/cli/formatters/detail.d.ts.map +1 -0
- package/dist/cli/formatters/detail.js +128 -0
- package/dist/cli/formatters/detail.js.map +1 -0
- package/dist/cli/formatters/hints.d.ts +17 -0
- package/dist/cli/formatters/hints.d.ts.map +1 -0
- package/dist/cli/formatters/hints.js +29 -0
- package/dist/cli/formatters/hints.js.map +1 -0
- package/dist/cli/formatters/table.d.ts +17 -0
- package/dist/cli/formatters/table.d.ts.map +1 -0
- package/dist/cli/formatters/table.js +75 -0
- package/dist/cli/formatters/table.js.map +1 -0
- package/dist/cli/index.js +12 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/tui/App.d.ts.map +1 -1
- package/dist/cli/tui/App.js +24 -5
- package/dist/cli/tui/App.js.map +1 -1
- package/dist/cli/tui/components/EventFilterBar.d.ts +27 -0
- package/dist/cli/tui/components/EventFilterBar.d.ts.map +1 -0
- package/dist/cli/tui/components/EventFilterBar.js +145 -0
- package/dist/cli/tui/components/EventFilterBar.js.map +1 -0
- package/dist/cli/tui/components/HelpModal.d.ts.map +1 -1
- package/dist/cli/tui/components/HelpModal.js +1 -0
- package/dist/cli/tui/components/HelpModal.js.map +1 -1
- package/dist/cli/tui/components/InfoBar.d.ts +15 -0
- package/dist/cli/tui/components/InfoBar.d.ts.map +1 -0
- package/dist/cli/tui/components/InfoBar.js +45 -0
- package/dist/cli/tui/components/InfoBar.js.map +1 -0
- package/dist/cli/tui/components/InfoModal.js +1 -1
- package/dist/cli/tui/components/InfoModal.js.map +1 -1
- package/dist/cli/tui/components/InterceptorLogModal.d.ts +16 -0
- package/dist/cli/tui/components/InterceptorLogModal.d.ts.map +1 -0
- package/dist/cli/tui/components/InterceptorLogModal.js +229 -0
- package/dist/cli/tui/components/InterceptorLogModal.js.map +1 -0
- package/dist/cli/tui/components/RequestList.js +1 -1
- package/dist/cli/tui/components/RequestList.js.map +1 -1
- package/dist/cli/tui/components/StatusBar.d.ts +7 -2
- package/dist/cli/tui/components/StatusBar.d.ts.map +1 -1
- package/dist/cli/tui/components/StatusBar.js +11 -6
- package/dist/cli/tui/components/StatusBar.js.map +1 -1
- package/dist/cli/tui/hooks/useInterceptorEvents.d.ts +33 -0
- package/dist/cli/tui/hooks/useInterceptorEvents.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useInterceptorEvents.js +88 -0
- package/dist/cli/tui/hooks/useInterceptorEvents.js.map +1 -0
- package/dist/cli/tui/hooks/useRequests.js +2 -2
- package/dist/cli/tui/hooks/useRequests.js.map +1 -1
- package/dist/cli/utils/parse-time.d.ts +22 -0
- package/dist/cli/utils/parse-time.d.ts.map +1 -0
- package/dist/cli/utils/parse-time.js +160 -0
- package/dist/cli/utils/parse-time.js.map +1 -0
- package/dist/daemon/control.d.ts +2 -0
- package/dist/daemon/control.d.ts.map +1 -1
- package/dist/daemon/control.js +41 -1
- package/dist/daemon/control.js.map +1 -1
- package/dist/daemon/index.js +5 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/interceptor-event-log.d.ts +37 -0
- package/dist/daemon/interceptor-event-log.d.ts.map +1 -0
- package/dist/daemon/interceptor-event-log.js +163 -0
- package/dist/daemon/interceptor-event-log.js.map +1 -0
- package/dist/daemon/interceptor-loader.d.ts +3 -0
- package/dist/daemon/interceptor-loader.d.ts.map +1 -1
- package/dist/daemon/interceptor-loader.js +29 -2
- package/dist/daemon/interceptor-loader.js.map +1 -1
- package/dist/daemon/interceptor-runner.d.ts +3 -0
- package/dist/daemon/interceptor-runner.d.ts.map +1 -1
- package/dist/daemon/interceptor-runner.js +112 -8
- package/dist/daemon/interceptor-runner.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +51 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/shared/control-client.d.ts +22 -1
- package/dist/shared/control-client.d.ts.map +1 -1
- package/dist/shared/control-client.js +12 -0
- package/dist/shared/control-client.js.map +1 -1
- package/dist/shared/types.d.ts +14 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/skills/procsi/SKILL.md +2 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.js","sourceRoot":"","sources":["../../../src/cli/commands/completions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
import { ControlClient } from "../../shared/control-client.js";
|
|
2
3
|
export interface GlobalOptions {
|
|
3
4
|
verbose: number;
|
|
4
5
|
dir?: string;
|
|
@@ -15,4 +16,12 @@ export declare function requireProjectRoot(override?: string): string;
|
|
|
15
16
|
* Extract a human-readable message from an unknown error value.
|
|
16
17
|
*/
|
|
17
18
|
export declare function getErrorMessage(err: unknown): string;
|
|
19
|
+
/**
|
|
20
|
+
* Connect to the running daemon and return a ControlClient.
|
|
21
|
+
* Exits with error if the daemon is not running.
|
|
22
|
+
*/
|
|
23
|
+
export declare function connectToDaemon(command: Command): Promise<{
|
|
24
|
+
client: ControlClient;
|
|
25
|
+
projectRoot: string;
|
|
26
|
+
}>;
|
|
18
27
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAMhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAW5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEpD"}
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAMhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAW5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/D,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAaD"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { findProjectRoot } from "../../shared/project.js";
|
|
1
|
+
import { findProjectRoot, getProcsiPaths } from "../../shared/project.js";
|
|
2
|
+
import { isDaemonRunning } from "../../shared/daemon.js";
|
|
3
|
+
import { ControlClient } from "../../shared/control-client.js";
|
|
2
4
|
/**
|
|
3
5
|
* Validate and extract global CLI options from a Commander command.
|
|
4
6
|
*/
|
|
@@ -31,4 +33,20 @@ export function requireProjectRoot(override) {
|
|
|
31
33
|
export function getErrorMessage(err) {
|
|
32
34
|
return err instanceof Error ? err.message : "Unknown error";
|
|
33
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Connect to the running daemon and return a ControlClient.
|
|
38
|
+
* Exits with error if the daemon is not running.
|
|
39
|
+
*/
|
|
40
|
+
export async function connectToDaemon(command) {
|
|
41
|
+
const globalOpts = getGlobalOptions(command);
|
|
42
|
+
const projectRoot = requireProjectRoot(globalOpts.dir);
|
|
43
|
+
const paths = getProcsiPaths(projectRoot);
|
|
44
|
+
const running = await isDaemonRunning(projectRoot);
|
|
45
|
+
if (!running) {
|
|
46
|
+
console.error("Daemon is not running. Start it with: procsi on");
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
const client = new ControlClient(paths.controlSocketFile);
|
|
50
|
+
return { client, projectRoot };
|
|
51
|
+
}
|
|
34
52
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/cli/commands/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/cli/commands/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO/D;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,EAA6B,CAAC;IACjE,OAAO;QACL,OAAO,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,GAAG,EAAE,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;KAC7D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAiB;IAClD,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,wBAAwB,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB;IAIpD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE1C,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/interceptors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/interceptors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+UpC,eAAO,MAAM,mBAAmB,SAS5B,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { ControlClient } from "../../shared/control-client.js";
|
|
|
5
5
|
import { getProcsiPaths } from "../../shared/project.js";
|
|
6
6
|
import { isDaemonRunning } from "../../shared/daemon.js";
|
|
7
7
|
import { requireProjectRoot, getErrorMessage, getGlobalOptions } from "./helpers.js";
|
|
8
|
+
import { formatInterceptorEventTable } from "../formatters/detail.js";
|
|
8
9
|
const EXAMPLE_INTERCEPTOR_FILENAME = "example.ts";
|
|
9
10
|
const EXAMPLE_INTERCEPTOR_CONTENT = `// Example procsi interceptor
|
|
10
11
|
// Uncomment and modify one of the patterns below to get started.
|
|
@@ -151,11 +152,152 @@ const initSubcommand = new Command("init")
|
|
|
151
152
|
console.log(" - Restart the daemon (procsi daemon restart)");
|
|
152
153
|
console.log(" - Run: procsi interceptors reload");
|
|
153
154
|
});
|
|
155
|
+
const FOLLOW_POLL_INTERVAL_MS = 1000;
|
|
156
|
+
const EVENT_LOG_LEVELS = ["info", "warn", "error"];
|
|
157
|
+
const logsClearSubcommand = new Command("clear")
|
|
158
|
+
.description("Clear interceptor event log")
|
|
159
|
+
.action(async (_, command) => {
|
|
160
|
+
const globalOpts = getGlobalOptions(command);
|
|
161
|
+
const projectRoot = requireProjectRoot(globalOpts.dir);
|
|
162
|
+
const paths = getProcsiPaths(projectRoot);
|
|
163
|
+
const running = await isDaemonRunning(projectRoot);
|
|
164
|
+
if (!running) {
|
|
165
|
+
console.log("Daemon is not running");
|
|
166
|
+
process.exit(0);
|
|
167
|
+
}
|
|
168
|
+
const client = new ControlClient(paths.controlSocketFile);
|
|
169
|
+
try {
|
|
170
|
+
await client.clearInterceptorEvents();
|
|
171
|
+
console.log(" Interceptor events cleared");
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
console.error(`Error clearing events: ${getErrorMessage(err)}`);
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
177
|
+
finally {
|
|
178
|
+
client.close();
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
const logsSubcommand = new Command("logs")
|
|
182
|
+
.description("View interceptor event log")
|
|
183
|
+
.option("--name <interceptor>", "filter by interceptor name")
|
|
184
|
+
.option("--level <level>", `filter by level (${EVENT_LOG_LEVELS.join(", ")})`)
|
|
185
|
+
.option("--limit <n>", "max events", "50")
|
|
186
|
+
.option("--follow", "live tail — poll for new events")
|
|
187
|
+
.option("--json", "JSON output")
|
|
188
|
+
.addCommand(logsClearSubcommand)
|
|
189
|
+
.action(async (opts, command) => {
|
|
190
|
+
const globalOpts = getGlobalOptions(command);
|
|
191
|
+
const projectRoot = requireProjectRoot(globalOpts.dir);
|
|
192
|
+
const paths = getProcsiPaths(projectRoot);
|
|
193
|
+
const running = await isDaemonRunning(projectRoot);
|
|
194
|
+
if (!running) {
|
|
195
|
+
console.log("Daemon is not running");
|
|
196
|
+
process.exit(0);
|
|
197
|
+
}
|
|
198
|
+
const client = new ControlClient(paths.controlSocketFile);
|
|
199
|
+
const parsedLimit = parseInt(opts.limit ?? "50", 10);
|
|
200
|
+
if (isNaN(parsedLimit) || parsedLimit < 0) {
|
|
201
|
+
console.error(`Invalid --limit value: "${opts.limit}"`);
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}
|
|
204
|
+
const limit = parsedLimit;
|
|
205
|
+
const validLevels = ["info", "warn", "error"];
|
|
206
|
+
if (opts.level && !validLevels.includes(opts.level)) {
|
|
207
|
+
console.error(`Invalid --level: "${opts.level}". Use: ${validLevels.join(", ")}`);
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
const level = opts.level;
|
|
211
|
+
try {
|
|
212
|
+
const result = await client.getInterceptorEvents({
|
|
213
|
+
limit,
|
|
214
|
+
level,
|
|
215
|
+
interceptor: opts.name,
|
|
216
|
+
});
|
|
217
|
+
if (opts.json && !opts.follow) {
|
|
218
|
+
console.log(JSON.stringify(result, null, 2));
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (!opts.follow) {
|
|
222
|
+
if (result.events.length === 0) {
|
|
223
|
+
console.log(" No interceptor events");
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
console.log(formatInterceptorEventTable(result.events));
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
// --follow: print initial batch then poll for new events
|
|
230
|
+
if (result.events.length > 0) {
|
|
231
|
+
if (opts.json) {
|
|
232
|
+
for (const event of result.events) {
|
|
233
|
+
console.log(JSON.stringify(event));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
console.log(formatInterceptorEventTable(result.events));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!opts.json) {
|
|
241
|
+
console.log(" --- following events (Ctrl+C to stop) ---");
|
|
242
|
+
}
|
|
243
|
+
const lastInitialEvent = result.events[result.events.length - 1];
|
|
244
|
+
let lastSeq = lastInitialEvent?.seq ?? 0;
|
|
245
|
+
// Graceful shutdown on Ctrl+C
|
|
246
|
+
let stopping = false;
|
|
247
|
+
const cleanup = () => {
|
|
248
|
+
stopping = true;
|
|
249
|
+
client.close();
|
|
250
|
+
};
|
|
251
|
+
process.on("SIGINT", cleanup);
|
|
252
|
+
process.on("SIGTERM", cleanup);
|
|
253
|
+
while (!stopping) {
|
|
254
|
+
await new Promise((resolve) => setTimeout(resolve, FOLLOW_POLL_INTERVAL_MS));
|
|
255
|
+
if (stopping)
|
|
256
|
+
break;
|
|
257
|
+
try {
|
|
258
|
+
const newResult = await client.getInterceptorEvents({
|
|
259
|
+
afterSeq: lastSeq,
|
|
260
|
+
level,
|
|
261
|
+
interceptor: opts.name,
|
|
262
|
+
});
|
|
263
|
+
if (newResult.events.length > 0) {
|
|
264
|
+
if (opts.json) {
|
|
265
|
+
for (const event of newResult.events) {
|
|
266
|
+
console.log(JSON.stringify(event));
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
console.log(formatInterceptorEventTable(newResult.events));
|
|
271
|
+
}
|
|
272
|
+
const lastNewEvent = newResult.events[newResult.events.length - 1];
|
|
273
|
+
if (lastNewEvent) {
|
|
274
|
+
lastSeq = lastNewEvent.seq;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
// Connection lost — stop polling
|
|
280
|
+
if (!stopping) {
|
|
281
|
+
console.error(" Lost connection to daemon");
|
|
282
|
+
}
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
console.error(`Error fetching events: ${getErrorMessage(err)}`);
|
|
289
|
+
process.exit(1);
|
|
290
|
+
}
|
|
291
|
+
finally {
|
|
292
|
+
client.close();
|
|
293
|
+
}
|
|
294
|
+
});
|
|
154
295
|
export const interceptorsCommand = new Command("interceptors")
|
|
155
296
|
.description("Manage request interceptors")
|
|
156
297
|
.addCommand(listSubcommand)
|
|
157
298
|
.addCommand(reloadSubcommand)
|
|
158
299
|
.addCommand(initSubcommand)
|
|
300
|
+
.addCommand(logsSubcommand)
|
|
159
301
|
.action(async (_, command) => {
|
|
160
302
|
// Default action when no subcommand is specified — behaves like `list`
|
|
161
303
|
await listAction(command);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../../src/cli/commands/interceptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../../src/cli/commands/interceptors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
/**
|
|
3
|
-
* Format environment variable unset statements for shell evaluation.
|
|
4
|
-
* Each line is an unset statement for one variable.
|
|
5
|
-
*/
|
|
6
|
-
export declare function formatUnsetVars(vars: string[]): string;
|
|
7
2
|
export declare const offCommand: Command;
|
|
8
3
|
//# sourceMappingURL=off.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"off.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/off.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"off.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/off.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,eAAO,MAAM,UAAU,SAmBnB,CAAC"}
|
package/dist/cli/commands/off.js
CHANGED
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
import { formatUnsetVars, formatNodeOptionsRestore } from "./on.js";
|
|
3
|
+
// Environment variables managed by procsi
|
|
4
|
+
const PROCSI_ENV_VARS = [
|
|
5
|
+
"HTTP_PROXY",
|
|
6
|
+
"HTTPS_PROXY",
|
|
7
|
+
"http_proxy",
|
|
8
|
+
"https_proxy",
|
|
9
|
+
"SSL_CERT_FILE",
|
|
10
|
+
"REQUESTS_CA_BUNDLE",
|
|
11
|
+
"NODE_EXTRA_CA_CERTS",
|
|
12
|
+
"GLOBAL_AGENT_HTTP_PROXY",
|
|
13
|
+
"GLOBAL_AGENT_HTTPS_PROXY",
|
|
14
|
+
"NODE_USE_ENV_PROXY",
|
|
15
|
+
"PROCSI_SESSION_ID",
|
|
16
|
+
"PROCSI_LABEL",
|
|
17
|
+
];
|
|
9
18
|
export const offCommand = new Command("off")
|
|
10
|
-
.description("
|
|
11
|
-
.action(() => {
|
|
12
|
-
// If stdout is a TTY, user ran directly
|
|
19
|
+
.description("Output shell unset statements to stop intercepting HTTP traffic")
|
|
20
|
+
.action(async () => {
|
|
21
|
+
// If stdout is a TTY, user ran directly — show instructions instead
|
|
13
22
|
if (process.stdout.isTTY) {
|
|
14
23
|
console.log("To stop intercepting HTTP traffic, run:");
|
|
15
24
|
console.log("");
|
|
16
|
-
console.log(
|
|
25
|
+
console.log(' eval "$(procsi off)"');
|
|
17
26
|
return;
|
|
18
27
|
}
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
"HTTP_PROXY",
|
|
22
|
-
"HTTPS_PROXY",
|
|
23
|
-
"SSL_CERT_FILE",
|
|
24
|
-
"REQUESTS_CA_BUNDLE",
|
|
25
|
-
"NODE_EXTRA_CA_CERTS",
|
|
26
|
-
"HTPX_SESSION_ID",
|
|
27
|
-
"HTPX_LABEL",
|
|
28
|
-
];
|
|
28
|
+
// Restore NODE_OPTIONS before standard unsets
|
|
29
|
+
console.log(formatNodeOptionsRestore());
|
|
29
30
|
// Output unset statements for eval
|
|
30
|
-
console.log(formatUnsetVars(
|
|
31
|
+
console.log(formatUnsetVars(PROCSI_ENV_VARS));
|
|
31
32
|
// Output confirmation as a comment (shown but not executed)
|
|
32
|
-
console.log("#
|
|
33
|
+
console.log("# procsi: interception stopped");
|
|
33
34
|
});
|
|
34
35
|
//# sourceMappingURL=off.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"off.js","sourceRoot":"","sources":["../../../src/cli/commands/off.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"off.js","sourceRoot":"","sources":["../../../src/cli/commands/off.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEpE,0CAA0C;AAC1C,MAAM,eAAe,GAAG;IACtB,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,aAAa;IACb,eAAe;IACf,oBAAoB;IACpB,qBAAqB;IACrB,yBAAyB;IACzB,0BAA0B;IAC1B,oBAAoB;IACpB,mBAAmB;IACnB,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,oEAAoE;IACpE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,8CAA8C;IAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAExC,mCAAmC;IACnC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;IAE9C,4DAA4D;IAC5D,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC"}
|
|
@@ -5,5 +5,32 @@ import { Command } from "commander";
|
|
|
5
5
|
* safe use in double-quoted context.
|
|
6
6
|
*/
|
|
7
7
|
export declare function formatEnvVars(vars: Record<string, string>): string;
|
|
8
|
+
/**
|
|
9
|
+
* Format environment variable unset statements for shell evaluation.
|
|
10
|
+
* Each line is an unset statement for one variable.
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatUnsetVars(vars: string[]): string;
|
|
13
|
+
/**
|
|
14
|
+
* Generate shell statements that save the current NODE_OPTIONS value
|
|
15
|
+
* and append a --require flag for the preload script.
|
|
16
|
+
*
|
|
17
|
+
* Uses PROCSI_ORIG_NODE_OPTIONS as a guard — only saves the original
|
|
18
|
+
* value on the first call, so repeated `procsi on` invocations are
|
|
19
|
+
* idempotent.
|
|
20
|
+
*
|
|
21
|
+
* This must be raw shell (not through formatEnvVars) because it needs
|
|
22
|
+
* `${}` variable expansion.
|
|
23
|
+
*
|
|
24
|
+
* Uses `${param-word}` (without colon) for the guard: expands to
|
|
25
|
+
* `word` only when `param` is truly unset, preserving an empty string
|
|
26
|
+
* if the user had no NODE_OPTIONS originally. This avoids if/then/fi
|
|
27
|
+
* which breaks inside `eval $(...)` in zsh.
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatNodeOptionsExport(preloadPath: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Generate shell statements that restore NODE_OPTIONS to its original
|
|
32
|
+
* value (or unset it if it was empty before procsi set it).
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatNodeOptionsRestore(): string;
|
|
8
35
|
export declare const onCommand: Command;
|
|
9
36
|
//# sourceMappingURL=on.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/on.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"on.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/on.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAIlE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEtD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CASnE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAMjD;AAED,eAAO,MAAM,SAAS,SA+GlB,CAAC"}
|
package/dist/cli/commands/on.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import { findOrCreateProjectRoot,
|
|
2
|
+
import { findOrCreateProjectRoot, ensureProcsiDir, getProcsiPaths } from "../../shared/project.js";
|
|
3
3
|
import { startDaemon } from "../../shared/daemon.js";
|
|
4
4
|
import { ControlClient } from "../../shared/control-client.js";
|
|
5
5
|
import { parseVerbosity } from "../../shared/logger.js";
|
|
6
6
|
import { getErrorMessage, getGlobalOptions } from "./helpers.js";
|
|
7
|
+
import { writeNodePreloadScript, getNodeEnvVars } from "../../overrides/node.js";
|
|
7
8
|
/**
|
|
8
9
|
* Escape a string for safe use inside double-quoted shell context.
|
|
9
10
|
* Within double quotes, `\`, `"`, `$`, `` ` ``, and `!` are interpreted by the shell.
|
|
@@ -26,16 +27,60 @@ export function formatEnvVars(vars) {
|
|
|
26
27
|
.map(([key, value]) => `export ${key}="${escapeDoubleQuoted(value)}"`)
|
|
27
28
|
.join("\n");
|
|
28
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Format environment variable unset statements for shell evaluation.
|
|
32
|
+
* Each line is an unset statement for one variable.
|
|
33
|
+
*/
|
|
34
|
+
export function formatUnsetVars(vars) {
|
|
35
|
+
return vars.map((key) => `unset ${key}`).join("\n");
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Generate shell statements that save the current NODE_OPTIONS value
|
|
39
|
+
* and append a --require flag for the preload script.
|
|
40
|
+
*
|
|
41
|
+
* Uses PROCSI_ORIG_NODE_OPTIONS as a guard — only saves the original
|
|
42
|
+
* value on the first call, so repeated `procsi on` invocations are
|
|
43
|
+
* idempotent.
|
|
44
|
+
*
|
|
45
|
+
* This must be raw shell (not through formatEnvVars) because it needs
|
|
46
|
+
* `${}` variable expansion.
|
|
47
|
+
*
|
|
48
|
+
* Uses `${param-word}` (without colon) for the guard: expands to
|
|
49
|
+
* `word` only when `param` is truly unset, preserving an empty string
|
|
50
|
+
* if the user had no NODE_OPTIONS originally. This avoids if/then/fi
|
|
51
|
+
* which breaks inside `eval $(...)` in zsh.
|
|
52
|
+
*/
|
|
53
|
+
export function formatNodeOptionsExport(preloadPath) {
|
|
54
|
+
const escaped = escapeDoubleQuoted(preloadPath);
|
|
55
|
+
return [
|
|
56
|
+
// Save original NODE_OPTIONS on first invocation only (${param-word} keeps existing value when set)
|
|
57
|
+
`export PROCSI_ORIG_NODE_OPTIONS="\${PROCSI_ORIG_NODE_OPTIONS-\${NODE_OPTIONS:-}}"`,
|
|
58
|
+
// Append --require to NODE_OPTIONS, preserving any existing value
|
|
59
|
+
// No inner quotes needed — the entire RHS is double-quoted so the shell won't word-split
|
|
60
|
+
`export NODE_OPTIONS="\${PROCSI_ORIG_NODE_OPTIONS:+\${PROCSI_ORIG_NODE_OPTIONS} }--require ${escaped}"`,
|
|
61
|
+
].join("\n");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate shell statements that restore NODE_OPTIONS to its original
|
|
65
|
+
* value (or unset it if it was empty before procsi set it).
|
|
66
|
+
*/
|
|
67
|
+
export function formatNodeOptionsRestore() {
|
|
68
|
+
return [
|
|
69
|
+
// Restore to saved value; unset if the original was empty
|
|
70
|
+
`test -n "\${PROCSI_ORIG_NODE_OPTIONS:-}" && export NODE_OPTIONS="\${PROCSI_ORIG_NODE_OPTIONS}" || unset NODE_OPTIONS 2>/dev/null`,
|
|
71
|
+
"unset PROCSI_ORIG_NODE_OPTIONS 2>/dev/null",
|
|
72
|
+
].join("\n");
|
|
73
|
+
}
|
|
29
74
|
export const onCommand = new Command("on")
|
|
30
|
-
.description("
|
|
75
|
+
.description("Output shell export statements to start intercepting HTTP traffic")
|
|
31
76
|
.option("-l, --label <label>", "Label for this session")
|
|
32
77
|
.option("--no-restart", "Do not auto-restart daemon on version mismatch")
|
|
33
78
|
.action(async (options, command) => {
|
|
34
|
-
// If stdout is a TTY, user ran directly
|
|
79
|
+
// If stdout is a TTY, user ran directly — show instructions instead
|
|
35
80
|
if (process.stdout.isTTY) {
|
|
36
81
|
console.log("To intercept HTTP traffic, run:");
|
|
37
82
|
console.log("");
|
|
38
|
-
console.log(
|
|
83
|
+
console.log(' eval "$(procsi on)"');
|
|
39
84
|
console.log("");
|
|
40
85
|
console.log("This sets the required environment variables in your shell.");
|
|
41
86
|
return;
|
|
@@ -45,10 +90,10 @@ export const onCommand = new Command("on")
|
|
|
45
90
|
const globalOpts = getGlobalOptions(command);
|
|
46
91
|
const verbosity = globalOpts.verbose;
|
|
47
92
|
const logLevel = parseVerbosity(verbosity);
|
|
48
|
-
// Find project root (auto-creates .
|
|
93
|
+
// Find project root (auto-creates .procsi if needed)
|
|
49
94
|
const projectRoot = findOrCreateProjectRoot(undefined, globalOpts.dir);
|
|
50
|
-
|
|
51
|
-
const paths =
|
|
95
|
+
ensureProcsiDir(projectRoot);
|
|
96
|
+
const paths = getProcsiPaths(projectRoot);
|
|
52
97
|
try {
|
|
53
98
|
// Start daemon if not already running
|
|
54
99
|
const proxyPort = await startDaemon(projectRoot, {
|
|
@@ -56,15 +101,17 @@ export const onCommand = new Command("on")
|
|
|
56
101
|
autoRestart,
|
|
57
102
|
onVersionMismatch: (running, cli) => {
|
|
58
103
|
if (autoRestart) {
|
|
59
|
-
console.log(`#
|
|
104
|
+
console.log(`# procsi: restarting daemon (version mismatch: ${running} -> ${cli})`);
|
|
60
105
|
}
|
|
61
106
|
else {
|
|
62
|
-
console.log(`#
|
|
63
|
-
console.log(`# Use '
|
|
107
|
+
console.log(`# procsi warning: daemon version mismatch (running: ${running}, CLI: ${cli})`);
|
|
108
|
+
console.log(`# Use 'procsi daemon restart' to update.`);
|
|
64
109
|
}
|
|
65
110
|
},
|
|
66
111
|
});
|
|
67
112
|
const proxyUrl = `http://127.0.0.1:${proxyPort}`;
|
|
113
|
+
// Write the Node.js preload script to .procsi/
|
|
114
|
+
writeNodePreloadScript(paths.proxyPreloadFile);
|
|
68
115
|
// Register session with daemon
|
|
69
116
|
const client = new ControlClient(paths.controlSocketFile);
|
|
70
117
|
try {
|
|
@@ -73,16 +120,21 @@ export const onCommand = new Command("on")
|
|
|
73
120
|
const envVars = {
|
|
74
121
|
HTTP_PROXY: proxyUrl,
|
|
75
122
|
HTTPS_PROXY: proxyUrl,
|
|
123
|
+
// Lowercase variants — many Unix tools check lowercase only
|
|
124
|
+
http_proxy: proxyUrl,
|
|
125
|
+
https_proxy: proxyUrl,
|
|
76
126
|
// Python requests library
|
|
77
127
|
SSL_CERT_FILE: paths.caCertFile,
|
|
78
128
|
REQUESTS_CA_BUNDLE: paths.caCertFile,
|
|
79
129
|
// Node.js
|
|
80
130
|
NODE_EXTRA_CA_CERTS: paths.caCertFile,
|
|
81
|
-
//
|
|
82
|
-
|
|
131
|
+
// Node.js runtime overrides (global-agent + undici)
|
|
132
|
+
...getNodeEnvVars(proxyUrl),
|
|
133
|
+
// procsi session tracking
|
|
134
|
+
PROCSI_SESSION_ID: session.id,
|
|
83
135
|
};
|
|
84
136
|
if (label) {
|
|
85
|
-
envVars["
|
|
137
|
+
envVars["PROCSI_LABEL"] = label;
|
|
86
138
|
}
|
|
87
139
|
// Report interceptor status
|
|
88
140
|
try {
|
|
@@ -91,10 +143,10 @@ export const onCommand = new Command("on")
|
|
|
91
143
|
const errorCount = interceptors.filter((i) => i.error).length;
|
|
92
144
|
const loadedCount = interceptors.length - errorCount;
|
|
93
145
|
if (errorCount > 0) {
|
|
94
|
-
console.log(`# Loaded ${loadedCount} interceptors (${errorCount} failed) from .
|
|
146
|
+
console.log(`# Loaded ${loadedCount} interceptors (${errorCount} failed) from .procsi/interceptors/`);
|
|
95
147
|
}
|
|
96
148
|
else {
|
|
97
|
-
console.log(`# Loaded ${loadedCount} interceptors from .
|
|
149
|
+
console.log(`# Loaded ${loadedCount} interceptors from .procsi/interceptors/`);
|
|
98
150
|
}
|
|
99
151
|
}
|
|
100
152
|
}
|
|
@@ -103,9 +155,11 @@ export const onCommand = new Command("on")
|
|
|
103
155
|
}
|
|
104
156
|
// Output env vars for eval
|
|
105
157
|
console.log(formatEnvVars(envVars));
|
|
158
|
+
// NODE_OPTIONS requires raw shell expansion, output separately
|
|
159
|
+
console.log(formatNodeOptionsExport(paths.proxyPreloadFile));
|
|
106
160
|
// Output confirmation as a comment (shown but not executed)
|
|
107
161
|
const labelInfo = label ? ` (label: ${label})` : "";
|
|
108
|
-
console.log(`#
|
|
162
|
+
console.log(`# procsi: intercepting traffic${labelInfo}`);
|
|
109
163
|
console.log(`# Proxy: ${proxyUrl}`);
|
|
110
164
|
console.log(`# Session: ${session.id}`);
|
|
111
165
|
}
|
|
@@ -114,7 +168,7 @@ export const onCommand = new Command("on")
|
|
|
114
168
|
}
|
|
115
169
|
}
|
|
116
170
|
catch (err) {
|
|
117
|
-
console.error(`#
|
|
171
|
+
console.error(`# procsi error: ${getErrorMessage(err)}`);
|
|
118
172
|
process.exit(1);
|
|
119
173
|
}
|
|
120
174
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on.js","sourceRoot":"","sources":["../../../src/cli/commands/on.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"on.js","sourceRoot":"","sources":["../../../src/cli/commands/on.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/request.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0IpC,eAAO,MAAM,cAAc,SAiCvB,CAAC"}
|