prismalens 0.1.0 → 0.2.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 (59) hide show
  1. package/README.md +40 -8
  2. package/dist/bin/prismalens.js +24 -10
  3. package/dist/bin/prismalens.js.map +1 -1
  4. package/dist/src/cli/auth.d.ts +3 -0
  5. package/dist/src/cli/auth.d.ts.map +1 -0
  6. package/dist/src/cli/auth.js +108 -0
  7. package/dist/src/cli/auth.js.map +1 -0
  8. package/dist/src/cli/doctor.d.ts +1 -0
  9. package/dist/src/cli/doctor.d.ts.map +1 -1
  10. package/dist/src/cli/doctor.js +1 -1
  11. package/dist/src/cli/doctor.js.map +1 -1
  12. package/dist/src/cli/flags.d.ts.map +1 -1
  13. package/dist/src/cli/flags.js +4 -0
  14. package/dist/src/cli/flags.js.map +1 -1
  15. package/dist/src/cli/grouping.d.ts.map +1 -1
  16. package/dist/src/cli/grouping.js +66 -8
  17. package/dist/src/cli/grouping.js.map +1 -1
  18. package/dist/src/cli/init.d.ts.map +1 -1
  19. package/dist/src/cli/init.js +3 -2
  20. package/dist/src/cli/init.js.map +1 -1
  21. package/dist/src/cli/investigate.d.ts.map +1 -1
  22. package/dist/src/cli/investigate.js +5 -4
  23. package/dist/src/cli/investigate.js.map +1 -1
  24. package/dist/src/cli/listen.d.ts +7 -1
  25. package/dist/src/cli/listen.d.ts.map +1 -1
  26. package/dist/src/cli/listen.js +67 -11
  27. package/dist/src/cli/listen.js.map +1 -1
  28. package/dist/src/cli/report.d.ts +6 -1
  29. package/dist/src/cli/report.d.ts.map +1 -1
  30. package/dist/src/cli/report.js +15 -2
  31. package/dist/src/cli/report.js.map +1 -1
  32. package/dist/src/cli/serve.js +1 -1
  33. package/dist/src/cli/serve.js.map +1 -1
  34. package/dist/src/cli/status.d.ts +6 -1
  35. package/dist/src/cli/status.d.ts.map +1 -1
  36. package/dist/src/cli/status.js +12 -2
  37. package/dist/src/cli/status.js.map +1 -1
  38. package/dist/src/config/loader.d.ts.map +1 -1
  39. package/dist/src/config/loader.js +19 -7
  40. package/dist/src/config/loader.js.map +1 -1
  41. package/dist/src/config/schema.d.ts +11 -5
  42. package/dist/src/config/schema.d.ts.map +1 -1
  43. package/dist/src/config/schema.js +12 -1
  44. package/dist/src/config/schema.js.map +1 -1
  45. package/dist/src/core/db.d.ts.map +1 -1
  46. package/dist/src/core/db.js +40 -6
  47. package/dist/src/core/db.js.map +1 -1
  48. package/dist/src/core/parse-stdin.d.ts.map +1 -1
  49. package/dist/src/core/parse-stdin.js +3 -12
  50. package/dist/src/core/parse-stdin.js.map +1 -1
  51. package/dist/src/core/run-investigation.d.ts +2 -0
  52. package/dist/src/core/run-investigation.d.ts.map +1 -1
  53. package/dist/src/core/run-investigation.js +1 -0
  54. package/dist/src/core/run-investigation.js.map +1 -1
  55. package/dist/src/http/server.d.ts +5 -0
  56. package/dist/src/http/server.d.ts.map +1 -1
  57. package/dist/src/http/server.js +14 -1
  58. package/dist/src/http/server.js.map +1 -1
  59. package/package.json +4 -4
package/README.md CHANGED
@@ -5,7 +5,7 @@ published on npm as the unscoped [`prismalens`](https://www.npmjs.com/package/pr
5
5
 
6
6
  Per **ADR-0010**, the engine *is* a CLI: the desktop app and web API drive it
7
7
  rather than embedding it. The CLI is a thin **Tier-1 supervisor** that rents a
8
- **Tier-2 agent harness** (ADR-0008) to do the read-only legwork, then reduces the
8
+ **Tier-2 agent harness** (ADR-0008) to do the investigative legwork, then reduces the
9
9
  harness's canonical event stream into an **ordered-evidence report** (ADR-0002 —
10
10
  hypotheses ranked most-to-least plausible, with supporting/contradicting
11
11
  evidence; no numeric confidence scores).
@@ -18,8 +18,27 @@ evidence; no numeric confidence scores).
18
18
  - `claude-code` — driven over the **Claude Agent SDK**,
19
19
  - `codex` — **stubbed** (not implemented; selecting it throws).
20
20
 
21
- The harness investigates **read-only**. Provider credentials are **BYO-key**
22
- (ADR-0006) and come from the environment — never hard-bound in the CLI.
21
+ ## How the harness is contained
22
+
23
+ By default prismalens removes the harness's edit tools (`Edit`, `Write`,
24
+ `MultiEdit`, `NotebookEdit`). That is a **guardrail, not a security boundary**
25
+ (ADR-0017): the shell is untouched, so writes remain possible via `Bash`. It is
26
+ there to stop a *helpful* agent from editing the repo it was asked to investigate
27
+ — it will not stop a determined one.
28
+
29
+ **Without a sandbox, the harness runs as you** — your machine, your credentials,
30
+ your shell — exactly as if you had invoked the agent CLI yourself. prismalens
31
+ makes no safety claim in this mode, and none of the above should be read as one.
32
+
33
+ The **only** real boundary is an enforced sandbox (`--sandbox srt` or `e2b`,
34
+ ADR-0020): an OS-level box in which your host and credentials are read-only, the
35
+ harness gets a read-write **workspace**, and network egress is **allowlisted**.
36
+ Note that this is *confined writes*, not "read-only" — an investigation has to be
37
+ able to clone a repo and download artifacts. `--sandbox auto` is not yet an
38
+ enforced default; it can degrade to an unenforced floor.
39
+
40
+ Provider credentials are **BYO-key** (ADR-0006), resolved from the environment or
41
+ the local auth store — never hard-bound in the CLI.
23
42
 
24
43
  Every run is persisted to a durable workspace under `~/.prismalens/runs/<runId>/`
25
44
  (`events.jsonl` + `report.json` + `session.json`), regardless of how it was
@@ -83,6 +102,7 @@ prismalens <command> [flags] # alias: pl
83
102
  serve Run the JSON-RPC 2.0 server over stdio (the LIVE channel for apps).
84
103
  doctor Preflight-check the investigation environment.
85
104
  init Scaffold a prismalens.config.yaml in the current directory.
105
+ auth Manage stored BYO-key credentials for providers.
86
106
  ```
87
107
 
88
108
  ### `investigate`
@@ -138,7 +158,10 @@ Preflight checklist that gates a run. Prints pass/fail per check; exits non-zero
138
158
  `claude-code` → `claude`, `codex` → `codex` (for the harness from config).
139
159
  - **HARD — an LLM credential:** any of `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` /
140
160
  `GOOGLE_API_KEY` / `OLLAMA_API_KEY` / `GROQ_API_KEY` / `CUSTOM_LLM_API_KEY`,
141
- or, for `claude-code`, a signed-in `~/.claude/.credentials.json`. (Performs a live provider model ping by default, while `--no-ping` skips it.)
161
+ a credential stored via `pl auth login` (`auth.json`), or, for `claude-code`,
162
+ a signed-in `~/.claude/.credentials.json`. Doctor reports which layer supplied
163
+ the credential (`source: env | file | stored | none`). (Performs a live
164
+ provider model ping by default, while `--no-ping` skips it.)
142
165
  - **SOFT — workspace writable:** `workspace.base_dir` can be created/written.
143
166
 
144
167
  ### `init`
@@ -289,8 +312,8 @@ workspace:
289
312
  # Per-harness native passthrough (ADR-0017) — untyped, forwarded straight to the
290
313
  # rented harness. For `deepagents` (the npm `deepagents-acp` binary, driven over
291
314
  # ACP), `args` is appended verbatim to the CLI invocation. The binary has no
292
- # shell-allowlist or sandbox flags — read-only is cooperative until the Sandbox
293
- # port's enforced providers land (ADR-0020/B.1).
315
+ # shell-allowlist or sandbox flags — so the harness is unsandboxed (runs as you)
316
+ # until the Sandbox port's enforced providers land (ADR-0020/B.1).
294
317
  harnesses:
295
318
  deepagents:
296
319
  native:
@@ -309,7 +332,16 @@ Notes:
309
332
 
310
333
  ### BYO-key environment (ADR-0006)
311
334
 
312
- Credentials are read from the environment, never stored by the CLI.
335
+ Credentials are BYO-key and never hard-bound in the CLI. They can be read from the environment or stored locally via the `auth` command.
336
+
337
+ The resolution precedence for any credential is: **env** (`PROVIDER_API_KEY`) → **_FILE** (`PROVIDER_API_KEY_FILE`) → **stored** (from `auth.json`) → **none**.
338
+
339
+ **Auth commands:**
340
+ - `pl auth login <provider> [--api-key <key>]` — save a credential (prompts securely if `--api-key` is omitted).
341
+ - `pl auth list` — view saved providers.
342
+ - `pl auth logout <provider>` — remove a saved credential.
343
+
344
+ Stored credentials live in `auth.json` inside the app-data dir (`~/.prismalens` by default, honors `PRISMALENS_USER_FOLDER`), enforced to mode `0600`.
313
345
 
314
346
  - **Tier-1 reduce + the `deepagents` harness** use an OpenAI-compatible endpoint:
315
347
  - `OLLAMA_API_KEY` or `OPENAI_API_KEY` (the API key),
@@ -318,5 +350,5 @@ Credentials are read from the environment, never stored by the CLI.
318
350
  - **The `claude-code` harness** uses your signed-in `~/.claude` session, or
319
351
  `ANTHROPIC_API_KEY`.
320
352
 
321
- If no `OLLAMA_API_KEY` / `OPENAI_API_KEY` is set, the reduce (synthesis) call will
353
+ If no matching credential is found across the resolution chain, the reduce (synthesis) call will
322
354
  likely fail — `investigate` warns up front, and `doctor` checks for a credential.
@@ -6,22 +6,22 @@
6
6
  * app + API drive it). Command bodies live in ../src/cli/* and are loaded lazily so
7
7
  * a fast `--help` doesn't pull in the engine. Bodies are implemented separately.
8
8
  */
9
- import { defineCommand, runMain } from "citty";
9
+ import { defineCommand, runMain, showUsage } from "citty";
10
+ import consola from "consola";
10
11
  import { cliVersion } from "../src/version.js";
11
12
  // The AI SDK's one-time "AI SDK Warning System" banner prints via console.info
12
13
  // (STDOUT) mid-run — noise in the live timeline and corruption in piped JSON.
13
14
  // Off for the whole CLI; real per-warning notices still reach stderr via
14
15
  // process.emitWarning.
15
16
  globalThis.AI_SDK_LOG_WARNINGS = false;
16
- const originalWarningListeners = process.listeners("warning");
17
- process.removeAllListeners("warning");
18
- process.on("warning", (warning) => {
19
- if (warning.name === "ExperimentalWarning" &&
20
- warning.message.includes("SQLite"))
21
- return;
22
- for (const listener of originalWarningListeners) {
23
- listener(warning);
17
+ const originalEmit = process.emit;
18
+ process.emit = ((name, ...args) => {
19
+ if (name === "warning" &&
20
+ args[0]?.name === "ExperimentalWarning" &&
21
+ args[0]?.message?.includes("SQLite")) {
22
+ return false;
24
23
  }
24
+ return originalEmit.apply(process, [name, ...args]);
25
25
  });
26
26
  /** Lazily import a command body's default export from src/cli. */
27
27
  const lazy = (name) => () => import(`../src/cli/${name}.js`).then((m) => m.default);
@@ -39,7 +39,21 @@ const main = defineCommand({
39
39
  init: lazy("init"),
40
40
  status: lazy("status"),
41
41
  report: lazy("report"),
42
+ auth: lazy("auth"),
43
+ },
44
+ });
45
+ runMain(main, {
46
+ showUsage: async (cmd, parent) => {
47
+ const rawArgs = process.argv.slice(2);
48
+ if (rawArgs.includes("--help") ||
49
+ rawArgs.includes("-h") ||
50
+ rawArgs.length === 0) {
51
+ await showUsage(cmd, parent);
52
+ }
53
+ else {
54
+ const cmdName = `pl${rawArgs[0] && !rawArgs[0].startsWith("-") ? ` ${rawArgs[0]}` : ""}`;
55
+ consola.info(`See \`${cmdName} --help\` for usage.`);
56
+ }
42
57
  },
43
58
  });
44
- runMain(main);
45
59
  //# sourceMappingURL=prismalens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prismalens.js","sourceRoot":"","sources":["../../bin/prismalens.ts"],"names":[],"mappings":";AACA,sCAAsC;AACtC,6BAA6B;AAE7B;;;;GAIG;AACH,OAAO,EAAmB,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,+EAA+E;AAC/E,8EAA8E;AAC9E,yEAAyE;AACzE,uBAAuB;AACtB,UAAgD,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAE9E,MAAM,wBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC9D,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AACtC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAc,EAAE,EAAE;IACxC,IACC,OAAO,CAAC,IAAI,KAAK,qBAAqB;QACtC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAElC,OAAO;IACR,KAAK,MAAM,QAAQ,IAAI,wBAAwB,EAAE,CAAC;QACjD,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;AACF,CAAC,CAAC,CAAC;AAEH,kEAAkE;AAClE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAwB,EAAE,CACxD,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAqB,CAAC,CAAC;AAEtE,MAAM,IAAI,GAAG,aAAa,CAAC;IAC1B,IAAI,EAAE;QACL,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,UAAU,EAAE;QACrB,WAAW,EACV,mFAAmF;KACpF;IACD,WAAW,EAAE;QACZ,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACtB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;QACpB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACtB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;KACtB;CACD,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"prismalens.js","sourceRoot":"","sources":["../../bin/prismalens.ts"],"names":[],"mappings":";AACA,sCAAsC;AACtC,6BAA6B;AAE7B;;;;GAIG;AACH,OAAO,EAAmB,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3E,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,+EAA+E;AAC/E,8EAA8E;AAC9E,yEAAyE;AACzE,uBAAuB;AACtB,UAAgD,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAE9E,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAY,EAAE,GAAG,IAAe,EAAE,EAAE;IACpD,IACC,IAAI,KAAK,SAAS;QACjB,IAAI,CAAC,CAAC,CAAW,EAAE,IAAI,KAAK,qBAAqB;QACjD,IAAI,CAAC,CAAC,CAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC9C,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAEhD,CAAC,CAAC;AACJ,CAAC,CAAwB,CAAC;AAE1B,kEAAkE;AAClE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAwB,EAAE,CACxD,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAqB,CAAC,CAAC;AAEtE,MAAM,IAAI,GAAG,aAAa,CAAC;IAC1B,IAAI,EAAE;QACL,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,UAAU,EAAE;QACrB,WAAW,EACV,mFAAmF;KACpF;IACD,WAAW,EAAE;QACZ,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACtB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;QACpB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACtB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;KAClB;CACD,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,EAAE;IACb,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IACC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,OAAO,CAAC,MAAM,KAAK,CAAC,EACnB,CAAC;YACF,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACzF,OAAO,CAAC,IAAI,CAAC,SAAS,OAAO,sBAAsB,CAAC,CAAC;QACtD,CAAC;IACF,CAAC;CACD,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ export default _default;
3
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/cli/auth.ts"],"names":[],"mappings":";AA+GA,wBAUG"}
@@ -0,0 +1,108 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright 2026 Sumit Patel
3
+ import { removeStoredCredential, setStoredCredential, } from "@prismalens/config/auth";
4
+ import { resolveCredentials } from "@prismalens/config/credentials";
5
+ import { LLM_PROVIDERS } from "@prismalens/config/llm";
6
+ import { defineCommand } from "citty";
7
+ import consola from "consola";
8
+ const login = defineCommand({
9
+ meta: {
10
+ name: "login",
11
+ description: "Log in to a model provider",
12
+ },
13
+ args: {
14
+ provider: {
15
+ type: "positional",
16
+ description: "Provider ID (e.g. openai, anthropic)",
17
+ required: true,
18
+ },
19
+ "api-key": {
20
+ type: "string",
21
+ description: "API key",
22
+ },
23
+ },
24
+ async run({ args }) {
25
+ const provider = args.provider;
26
+ if (!Object.hasOwn(LLM_PROVIDERS, provider)) {
27
+ consola.error(`Unknown provider: ${provider}`);
28
+ process.exit(1);
29
+ }
30
+ let apiKey = args["api-key"];
31
+ if (!apiKey) {
32
+ if (process.stdin.isTTY) {
33
+ apiKey = (await consola.prompt(`Enter API key for ${LLM_PROVIDERS[provider].name}:`, {
34
+ // @ts-expect-error type password passes through to clack
35
+ type: "password",
36
+ }));
37
+ }
38
+ else {
39
+ consola.error("--api-key is required in non-interactive mode");
40
+ process.exit(1);
41
+ }
42
+ }
43
+ if (!apiKey || typeof apiKey !== "string" || !apiKey.trim()) {
44
+ consola.error("API key is required");
45
+ process.exit(1);
46
+ }
47
+ setStoredCredential(provider, apiKey.trim());
48
+ consola.success(`Saved credential for ${LLM_PROVIDERS[provider].name}`);
49
+ },
50
+ });
51
+ const list = defineCommand({
52
+ meta: {
53
+ name: "list",
54
+ description: "List configured providers",
55
+ },
56
+ async run() {
57
+ for (const provider of Object.values(LLM_PROVIDERS)) {
58
+ const creds = resolveCredentials(provider.id);
59
+ if (creds.source !== "none") {
60
+ const key = creds.apiKey ?? "";
61
+ const masked = key.length > 4 ? `...${key.slice(-4)}` : "<set>";
62
+ consola.log(`${provider.name} (${provider.id})`);
63
+ consola.log(` Source: ${creds.source}`);
64
+ consola.log(` Key: ${masked}`);
65
+ consola.log("");
66
+ }
67
+ else {
68
+ consola.log(`${provider.name} (${provider.id})`);
69
+ consola.log(` Source: none`);
70
+ consola.log("");
71
+ }
72
+ }
73
+ },
74
+ });
75
+ const logout = defineCommand({
76
+ meta: {
77
+ name: "logout",
78
+ description: "Remove stored credential",
79
+ },
80
+ args: {
81
+ provider: {
82
+ type: "positional",
83
+ description: "Provider ID",
84
+ required: true,
85
+ },
86
+ },
87
+ async run({ args }) {
88
+ const provider = args.provider;
89
+ if (!Object.hasOwn(LLM_PROVIDERS, provider)) {
90
+ consola.error(`Unknown provider: ${provider}`);
91
+ process.exit(1);
92
+ }
93
+ removeStoredCredential(provider);
94
+ consola.success(`Removed stored credential for ${LLM_PROVIDERS[provider].name}`);
95
+ },
96
+ });
97
+ export default defineCommand({
98
+ meta: {
99
+ name: "auth",
100
+ description: "Manage provider credentials",
101
+ },
102
+ subCommands: {
103
+ login,
104
+ list,
105
+ logout,
106
+ },
107
+ });
108
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/auth.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ interface Check {
5
5
  detail: string;
6
6
  hard: boolean;
7
7
  }
8
+ export declare function checkCredential(config: PlConfig, noPing: boolean): Promise<Check>;
8
9
  export declare function checkListenToken(config: PlConfig): Check;
9
10
  declare const _default: import("citty").CommandDef<{
10
11
  readonly ping: {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/doctor.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAMpD,UAAU,KAAK;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACd;AA8HD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,CAgBxD;;;;;;;;AAED,wBAoDG"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/doctor.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAMpD,UAAU,KAAK;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACd;AAmCD,wBAAsB,eAAe,CACpC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,CAAC,CAiEhB;AAuBD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,CAgBxD;;;;;;;;AAED,wBAoDG"}
@@ -59,7 +59,7 @@ function checkHarness(harness) {
59
59
  hard: true,
60
60
  };
61
61
  }
62
- async function checkCredential(config, noPing) {
62
+ export async function checkCredential(config, noPing) {
63
63
  let providerId = config.synth.provider;
64
64
  let creds;
65
65
  if (providerId) {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/cli/flags.ts"],"names":[],"mappings":"AASA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,QAmB3E"}
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/cli/flags.ts"],"names":[],"mappings":"AAaA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,QAoB3E"}
@@ -4,6 +4,9 @@ import consola from "consola";
4
4
  function kebabToCamel(str) {
5
5
  return str.replace(/-([a-z])/g, (_, g) => g.toUpperCase());
6
6
  }
7
+ function camelToKebab(str) {
8
+ return str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
9
+ }
7
10
  export function assertKnownFlags(args, cmd) {
8
11
  const declaredArgs = cmd?.args || {};
9
12
  const allowedKeys = new Set(["_"]);
@@ -11,6 +14,7 @@ export function assertKnownFlags(args, cmd) {
11
14
  if (Object.hasOwn(declaredArgs, key)) {
12
15
  allowedKeys.add(key);
13
16
  allowedKeys.add(kebabToCamel(key));
17
+ allowedKeys.add(camelToKebab(key));
14
18
  }
15
19
  }
16
20
  for (const key in args) {
@@ -1 +1 @@
1
- {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../../src/cli/flags.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6BAA6B;AAE7B,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,SAAS,YAAY,CAAC,GAAW;IAChC,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA6B,EAAE,GAAY;IAC3E,MAAM,YAAY,GAAI,GAA0C,EAAE,IAAI,IAAI,EAAE,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;YACtC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../../src/cli/flags.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6BAA6B;AAE7B,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,SAAS,YAAY,CAAC,GAAW;IAChC,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAChC,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA6B,EAAE,GAAY;IAC3E,MAAM,YAAY,GAAI,GAA0C,EAAE,IAAI,IAAI,EAAE,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;YACtC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../src/cli/grouping.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC5B,aAAa,CACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC;IACV,aAAa,IAAI,MAAM,CAAC;IACxB,KAAK,CACJ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,IAAI,CAAC;IACR,QAAQ,IAAI,IAAI,CAAC;IACjB,cAAc,IAAI,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,CACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CA8BR;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAetE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,CAqJ1E"}
1
+ {"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../src/cli/grouping.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC5B,aAAa,CACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC;IACV,aAAa,IAAI,MAAM,CAAC;IACxB,KAAK,CACJ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,IAAI,CAAC;IACR,QAAQ,IAAI,IAAI,CAAC;IACjB,cAAc,IAAI,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,CACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CA8BR;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAetE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,CA6N1E"}
@@ -52,6 +52,7 @@ export function createGroupingLayer(options) {
52
52
  let shuttingDown = false;
53
53
  const windows = new Map();
54
54
  const running = new Map();
55
+ const activeAlerts = new Map();
55
56
  return {
56
57
  isShuttingDown() {
57
58
  return shuttingDown;
@@ -77,23 +78,59 @@ export function createGroupingLayer(options) {
77
78
  for (const alert of firing) {
78
79
  const groupKey = deriveGroupKey(alert, payload);
79
80
  const dedupeKey = deriveDedupeKey(alert);
81
+ // 1. Fingerprint-level suppression (Issue #137)
82
+ // If this exact fingerprint is already in-flight anywhere, attach the re-page
83
+ // to its existing investigation and suppress dispatch.
84
+ if (activeAlerts.has(dedupeKey)) {
85
+ const active = activeAlerts.get(dedupeKey);
86
+ if (active && active.phase === "running" && active.runId) {
87
+ const state = running.get(active.groupKey);
88
+ /* v8 ignore next */
89
+ if (state) {
90
+ // Note the re-page on the existing run
91
+ state.writeQueue = state.writeQueue
92
+ .then(() => options.sessions.appendGroupAlert(state.runId, alert))
93
+ /* v8 ignore start */
94
+ .catch((err) => {
95
+ options.log(`Failed to attach re-page to group ${active.groupKey} (run ${state.runId}): ${err}`);
96
+ });
97
+ /* v8 ignore stop */
98
+ }
99
+ else {
100
+ options.log(`Suppression lookup hit but run vanished for dedupeKey ${dedupeKey}`);
101
+ }
102
+ }
103
+ // If phase === "window", it's buffered; no action needed.
104
+ continue;
105
+ }
106
+ // 2. Group-level attachment (AC2)
107
+ // If the group is already running, attach this NEW alert (different dedupeKey) to it.
80
108
  if (running.has(groupKey)) {
81
109
  const state = running.get(groupKey);
82
- if (state && !state.seenKeys.has(dedupeKey)) {
83
- state.seenKeys.add(dedupeKey);
84
- // ATTACH
110
+ /* v8 ignore next */
111
+ if (state) {
112
+ // Note: we don't need seenKeys here because activeAlerts handles exact dupes above.
113
+ activeAlerts.set(dedupeKey, {
114
+ phase: "running",
115
+ groupKey,
116
+ runId: state.runId,
117
+ });
118
+ state.dedupeKeys.add(dedupeKey);
85
119
  state.writeQueue = state.writeQueue
86
120
  .then(() => options.sessions.appendGroupAlert(state.runId, alert))
121
+ /* v8 ignore start */
87
122
  .catch((err) => {
88
123
  options.log(`Failed to attach late alert to group ${groupKey} (run ${state.runId}): ${err}`);
89
124
  });
125
+ /* v8 ignore stop */
90
126
  }
91
127
  continue;
92
128
  }
93
129
  if (windows.has(groupKey)) {
94
130
  const state = windows.get(groupKey);
95
- if (state && !state.seenKeys.has(dedupeKey)) {
96
- state.seenKeys.add(dedupeKey);
131
+ /* v8 ignore next */
132
+ if (state) {
133
+ activeAlerts.set(dedupeKey, { phase: "window", groupKey });
97
134
  state.alerts.push(alert);
98
135
  }
99
136
  continue;
@@ -101,13 +138,22 @@ export function createGroupingLayer(options) {
101
138
  // IDLE -> WINDOW_OPEN
102
139
  const state = {
103
140
  alerts: [alert],
104
- seenKeys: new Set([dedupeKey]),
105
141
  timer: setTimeout(() => {
106
142
  // timer fires -> RUNNING
107
143
  const alertsToRun = state.alerts;
108
- const seenKeys = state.seenKeys;
109
144
  windows.delete(groupKey);
110
145
  const runId = randomUUID();
146
+ const dedupeKeys = new Set();
147
+ // Move all these dedupe keys to the running phase
148
+ for (const a of alertsToRun) {
149
+ const dkey = deriveDedupeKey(a);
150
+ activeAlerts.set(dkey, {
151
+ phase: "running",
152
+ groupKey,
153
+ runId,
154
+ });
155
+ dedupeKeys.add(dkey);
156
+ }
111
157
  // synchronously set up the record
112
158
  const rec = {
113
159
  groupKey,
@@ -122,8 +168,8 @@ export function createGroupingLayer(options) {
122
168
  });
123
169
  running.set(groupKey, {
124
170
  runId,
125
- seenKeys,
126
171
  writeQueue: writePromise,
172
+ dedupeKeys,
127
173
  });
128
174
  writePromise
129
175
  .then(async () => {
@@ -131,6 +177,9 @@ export function createGroupingLayer(options) {
131
177
  // resolving; don't start a new investigation while closing.
132
178
  if (shuttingDown) {
133
179
  running.delete(groupKey);
180
+ for (const key of dedupeKeys) {
181
+ activeAlerts.delete(key);
182
+ }
134
183
  return;
135
184
  }
136
185
  try {
@@ -141,14 +190,22 @@ export function createGroupingLayer(options) {
141
190
  }
142
191
  finally {
143
192
  running.delete(groupKey);
193
+ // Clean up global fingerprint registry for this run
194
+ for (const key of dedupeKeys) {
195
+ activeAlerts.delete(key);
196
+ }
144
197
  }
145
198
  })
146
199
  .catch((err) => {
147
200
  options.log(`Investigation for group ${groupKey} failed: ${err}`);
148
201
  running.delete(groupKey);
202
+ for (const key of dedupeKeys) {
203
+ activeAlerts.delete(key);
204
+ }
149
205
  });
150
206
  }, options.windowMs),
151
207
  };
208
+ activeAlerts.set(dedupeKey, { phase: "window", groupKey });
152
209
  windows.set(groupKey, state);
153
210
  }
154
211
  },
@@ -160,6 +217,7 @@ export function createGroupingLayer(options) {
160
217
  dropped++;
161
218
  }
162
219
  windows.clear();
220
+ activeAlerts.clear();
163
221
  if (dropped > 0) {
164
222
  options.log(`Shutdown: dropped ${dropped} pending grouping windows`);
165
223
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../src/cli/grouping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../src/cli/grouping.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":";AAiFA,wBA8BG"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":";AAkFA,wBA8BG"}
@@ -64,8 +64,9 @@ workspace:
64
64
  base_dir: ${d.workspace.base_dir}
65
65
 
66
66
  # \`pl listen\` — token-authed local webhook intake (Alertmanager). The token is
67
- # REQUIRED to start listening; keep it out of the file via env interpolation.
67
+ # REQUIRED to start listening regardless of bind address; keep it out of the file via env interpolation.
68
68
  # listen:
69
+ # host: ${d.listen.host}
69
70
  # port: ${d.listen.port}
70
71
  # token: "\${PRISMALENS_LISTEN_TOKEN}"
71
72
  # max_pending: ${d.listen.max_pending}
@@ -74,7 +75,7 @@ workspace:
74
75
  export default defineCommand({
75
76
  meta: {
76
77
  name: "init",
77
- description: `Scaffold a ${CONFIG_FILENAME} in the current directory`,
78
+ description: `Scaffold a ${CONFIG_FILENAME} in the current directory\n\nExamples:\n $ pl init\n $ pl init --force`,
78
79
  },
79
80
  async run({ args, cmd }) {
80
81
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6BAA6B;AAE7B;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACN,iBAAiB,EAEjB,cAAc,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAEjD,oFAAoF;AACpF,SAAS,mBAAmB,CAAC,CAAW;IACvC,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO;SACpD,aAAa,EAAE;SACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO;;;;;;;;;;mCAU2B,cAAc;aACpC,CAAC,CAAC,KAAK,CAAC,OAAO;;;;;;;;mBAQT,sBAAsB,CAAC,SAAS,CAAC,aAAa;qBAC5C,sBAAsB,CAAC,SAAS,CAAC,eAAe;YACzD,sBAAsB,CAAC,SAAS,CAAC,MAAM;;;;;;;;;;;;;;;;;;cAkBrC,CAAC,CAAC,SAAS,CAAC,QAAQ;;;;;YAKtB,CAAC,CAAC,MAAM,CAAC,IAAI;;mBAEN,CAAC,CAAC,MAAM,CAAC,WAAW;CACtC,CAAC;AACF,CAAC;AAED,eAAe,aAAa,CAAC;IAC5B,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,cAAc,eAAe,2BAA2B;KACrE;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;QACtB,IAAI,CAAC;YACJ,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;YAC3D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CACX,GAAG,eAAe,sBAAsB,UAAU,0BAA0B,CAC5E,CAAC;gBACF,OAAO;YACR,CAAC;YAED,2EAA2E;YAC3E,iEAAiE;YACjE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YAEpE,OAAO,CAAC,OAAO,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CACX,kFAAkF,CAClF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6BAA6B;AAE7B;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACN,iBAAiB,EAEjB,cAAc,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAEjD,oFAAoF;AACpF,SAAS,mBAAmB,CAAC,CAAW;IACvC,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO;SACpD,aAAa,EAAE;SACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO;;;;;;;;;;mCAU2B,cAAc;aACpC,CAAC,CAAC,KAAK,CAAC,OAAO;;;;;;;;mBAQT,sBAAsB,CAAC,SAAS,CAAC,aAAa;qBAC5C,sBAAsB,CAAC,SAAS,CAAC,eAAe;YACzD,sBAAsB,CAAC,SAAS,CAAC,MAAM;;;;;;;;;;;;;;;;;;cAkBrC,CAAC,CAAC,SAAS,CAAC,QAAQ;;;;;YAKtB,CAAC,CAAC,MAAM,CAAC,IAAI;YACb,CAAC,CAAC,MAAM,CAAC,IAAI;;mBAEN,CAAC,CAAC,MAAM,CAAC,WAAW;CACtC,CAAC;AACF,CAAC;AAED,eAAe,aAAa,CAAC;IAC5B,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,cAAc,eAAe,0EAA0E;KACpH;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;QACtB,IAAI,CAAC;YACJ,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;YAC3D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CACX,GAAG,eAAe,sBAAsB,UAAU,0BAA0B,CAC5E,CAAC;gBACF,OAAO;YACR,CAAC;YAED,2EAA2E;YAC3E,iEAAiE;YACjE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YAEpE,OAAO,CAAC,OAAO,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CACX,kFAAkF,CAClF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;CACD,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../../src/cli/investigate.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,KAAK,EACX,cAAc,EAKd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIN,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWpD,wBAyQG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,CA0BhE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,QAAQ,GACd,OAAO,CAAC;IACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gFAAgF;IAChF,eAAe,EAAE,OAAO,CAAC;CACzB,CAAC,CAyBD;AA2BD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,WAAW,GACf;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAI7C;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAkBtE"}
1
+ {"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../../src/cli/investigate.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,KAAK,EACX,cAAc,EAKd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIN,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWpD,wBAyQG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,CA0BhE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,QAAQ,GACd,OAAO,CAAC;IACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gFAAgF;IAChF,eAAe,EAAE,OAAO,CAAC;CACzB,CAAC,CAyBD;AA2BD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,WAAW,GACf;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAI7C;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAkBtE"}