@praxis.guard/auditor-cli 0.0.45 → 0.0.47

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 (114) hide show
  1. package/README.md +11 -4
  2. package/dist/adapters/claude-code/adapter.d.ts +28 -0
  3. package/dist/adapters/claude-code/adapter.d.ts.map +1 -0
  4. package/dist/adapters/claude-code/adapter.js +141 -0
  5. package/dist/adapters/claude-code/adapter.js.map +1 -0
  6. package/dist/adapters/claude-code/config-detect.d.ts +4 -0
  7. package/dist/adapters/claude-code/config-detect.d.ts.map +1 -0
  8. package/dist/adapters/claude-code/config-detect.js +44 -0
  9. package/dist/adapters/claude-code/config-detect.js.map +1 -0
  10. package/dist/adapters/claude-code/config-io.d.ts +8 -0
  11. package/dist/adapters/claude-code/config-io.d.ts.map +1 -0
  12. package/dist/adapters/claude-code/config-io.js +41 -0
  13. package/dist/adapters/claude-code/config-io.js.map +1 -0
  14. package/dist/adapters/claude-code/index.d.ts +3 -0
  15. package/dist/adapters/claude-code/index.d.ts.map +1 -0
  16. package/dist/adapters/claude-code/index.js +3 -0
  17. package/dist/adapters/claude-code/index.js.map +1 -0
  18. package/dist/adapters/claude-code/paths.d.ts +17 -0
  19. package/dist/adapters/claude-code/paths.d.ts.map +1 -0
  20. package/dist/adapters/claude-code/paths.js +32 -0
  21. package/dist/adapters/claude-code/paths.js.map +1 -0
  22. package/dist/adapters/claude-code.d.ts +1 -33
  23. package/dist/adapters/claude-code.d.ts.map +1 -1
  24. package/dist/adapters/claude-code.js +1 -246
  25. package/dist/adapters/claude-code.js.map +1 -1
  26. package/dist/adapters/codex.d.ts +11 -0
  27. package/dist/adapters/codex.d.ts.map +1 -0
  28. package/dist/adapters/codex.js +52 -0
  29. package/dist/adapters/codex.js.map +1 -0
  30. package/dist/adapters/registry.d.ts.map +1 -1
  31. package/dist/adapters/registry.js +2 -0
  32. package/dist/adapters/registry.js.map +1 -1
  33. package/dist/adapters/select-targets.js +3 -3
  34. package/dist/adapters/select-targets.js.map +1 -1
  35. package/dist/adapters/types.d.ts +9 -2
  36. package/dist/adapters/types.d.ts.map +1 -1
  37. package/dist/bridge/execution-ticket-consume.d.ts +12 -0
  38. package/dist/bridge/execution-ticket-consume.d.ts.map +1 -0
  39. package/dist/bridge/execution-ticket-consume.js +105 -0
  40. package/dist/bridge/execution-ticket-consume.js.map +1 -0
  41. package/dist/bridge/execution-ticket-match.d.ts +4 -0
  42. package/dist/bridge/execution-ticket-match.d.ts.map +1 -0
  43. package/dist/bridge/execution-ticket-match.js +40 -0
  44. package/dist/bridge/execution-ticket-match.js.map +1 -0
  45. package/dist/bridge/execution-ticket-record.d.ts +14 -0
  46. package/dist/bridge/execution-ticket-record.d.ts.map +1 -0
  47. package/dist/bridge/execution-ticket-record.js +51 -0
  48. package/dist/bridge/execution-ticket-record.js.map +1 -0
  49. package/dist/bridge/execution-ticket.d.ts +2 -23
  50. package/dist/bridge/execution-ticket.d.ts.map +1 -1
  51. package/dist/bridge/execution-ticket.js +2 -179
  52. package/dist/bridge/execution-ticket.js.map +1 -1
  53. package/dist/cli/doctor.d.ts.map +1 -1
  54. package/dist/cli/doctor.js +17 -13
  55. package/dist/cli/doctor.js.map +1 -1
  56. package/dist/cli/help.js +4 -4
  57. package/dist/cli/setup-all.d.ts.map +1 -1
  58. package/dist/cli/setup-all.js +6 -2
  59. package/dist/cli/setup-all.js.map +1 -1
  60. package/dist/cli/setup-codex.d.ts.map +1 -1
  61. package/dist/cli/setup-codex.js +4 -3
  62. package/dist/cli/setup-codex.js.map +1 -1
  63. package/dist/cli/setup-doctor.d.ts.map +1 -1
  64. package/dist/cli/setup-doctor.js +22 -7
  65. package/dist/cli/setup-doctor.js.map +1 -1
  66. package/dist/cli/setup-mcp.d.ts +1 -0
  67. package/dist/cli/setup-mcp.d.ts.map +1 -1
  68. package/dist/cli/setup-mcp.js +15 -2
  69. package/dist/cli/setup-mcp.js.map +1 -1
  70. package/dist/codex/config.d.ts +1 -0
  71. package/dist/codex/config.d.ts.map +1 -1
  72. package/dist/codex/config.js +23 -1
  73. package/dist/codex/config.js.map +1 -1
  74. package/dist/codex/evaluate-tool-audit.d.ts +29 -0
  75. package/dist/codex/evaluate-tool-audit.d.ts.map +1 -0
  76. package/dist/codex/evaluate-tool-audit.js +58 -0
  77. package/dist/codex/evaluate-tool-audit.js.map +1 -0
  78. package/dist/codex/evaluate-tool-bash.d.ts +3 -0
  79. package/dist/codex/evaluate-tool-bash.d.ts.map +1 -0
  80. package/dist/codex/evaluate-tool-bash.js +50 -0
  81. package/dist/codex/evaluate-tool-bash.js.map +1 -0
  82. package/dist/codex/evaluate-tool-mcp.d.ts +3 -0
  83. package/dist/codex/evaluate-tool-mcp.d.ts.map +1 -0
  84. package/dist/codex/evaluate-tool-mcp.js +55 -0
  85. package/dist/codex/evaluate-tool-mcp.js.map +1 -0
  86. package/dist/codex/evaluate-tool-types.d.ts +27 -0
  87. package/dist/codex/evaluate-tool-types.d.ts.map +1 -0
  88. package/dist/codex/evaluate-tool-types.js +15 -0
  89. package/dist/codex/evaluate-tool-types.js.map +1 -0
  90. package/dist/codex/evaluate-tool.d.ts +3 -26
  91. package/dist/codex/evaluate-tool.d.ts.map +1 -1
  92. package/dist/codex/evaluate-tool.js +3 -167
  93. package/dist/codex/evaluate-tool.js.map +1 -1
  94. package/dist/policy/classify.d.ts +9 -0
  95. package/dist/policy/classify.d.ts.map +1 -0
  96. package/dist/policy/classify.js +97 -0
  97. package/dist/policy/classify.js.map +1 -0
  98. package/dist/policy/index.d.ts +5 -54
  99. package/dist/policy/index.d.ts.map +1 -1
  100. package/dist/policy/index.js +4 -213
  101. package/dist/policy/index.js.map +1 -1
  102. package/dist/policy/load.d.ts +8 -0
  103. package/dist/policy/load.d.ts.map +1 -0
  104. package/dist/policy/load.js +52 -0
  105. package/dist/policy/load.js.map +1 -0
  106. package/dist/policy/paths.d.ts +9 -0
  107. package/dist/policy/paths.d.ts.map +1 -0
  108. package/dist/policy/paths.js +42 -0
  109. package/dist/policy/paths.js.map +1 -0
  110. package/dist/policy/schema.d.ts +35 -0
  111. package/dist/policy/schema.d.ts.map +1 -0
  112. package/dist/policy/schema.js +30 -0
  113. package/dist/policy/schema.js.map +1 -0
  114. package/package.json +1 -1
@@ -0,0 +1,52 @@
1
+ import { existsSync } from "node:fs";
2
+ import { copyFile, mkdir, readFile, rename, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { parsePoliciesV1Json } from "./schema.js";
5
+ import { policiesV1MetaPathFor, resolveBundledPoliciesPath, resolvedPoliciesV1Path } from "./paths.js";
6
+ export async function readPoliciesV1Revision(opts) {
7
+ const policyPath = resolvedPoliciesV1Path(opts);
8
+ const metaPath = policiesV1MetaPathFor(policyPath);
9
+ try {
10
+ const raw = await readFile(metaPath, "utf8");
11
+ const parsed = JSON.parse(raw);
12
+ const r = Number(parsed.revision);
13
+ return Number.isFinite(r) ? r : null;
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ async function bootstrapPoliciesIfMissing(policyPath) {
20
+ if (existsSync(policyPath))
21
+ return;
22
+ const bundledPath = resolveBundledPoliciesPath();
23
+ const dir = path.dirname(policyPath);
24
+ await mkdir(dir, { recursive: true });
25
+ const tmpPolicy = `${policyPath}.tmp.${process.pid}`;
26
+ await copyFile(bundledPath, tmpPolicy);
27
+ await rename(tmpPolicy, policyPath);
28
+ const metaPath = policiesV1MetaPathFor(policyPath);
29
+ if (!existsSync(metaPath)) {
30
+ const bootstrapMeta = {
31
+ revision: 0,
32
+ syncedAt: new Date().toISOString(),
33
+ source: "bundled-bootstrap",
34
+ };
35
+ const tmpMeta = `${metaPath}.tmp.${process.pid}`;
36
+ await writeFile(tmpMeta, `${JSON.stringify(bootstrapMeta, null, 2)}\n`, "utf8");
37
+ await rename(tmpMeta, metaPath);
38
+ }
39
+ }
40
+ export async function loadPoliciesV1(opts) {
41
+ const policyPath = resolvedPoliciesV1Path(opts);
42
+ await bootstrapPoliciesIfMissing(policyPath);
43
+ const raw = await readFile(policyPath, "utf8");
44
+ try {
45
+ return parsePoliciesV1Json(JSON.parse(raw));
46
+ }
47
+ catch (e) {
48
+ const msg = e instanceof Error ? e.message : String(e);
49
+ throw new Error(`Invalid policies file at ${policyPath}: ${msg}`);
50
+ }
51
+ }
52
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/policy/load.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare function resolveBundledPoliciesPath(): string;
2
+ export declare function defaultPoliciesV1Path(): string;
3
+ /** Effective path when `opts.policyPath` is omitted (env override matches `auditor doctor` / help). */
4
+ export declare function resolvedPoliciesV1Path(opts?: {
5
+ policyPath?: string;
6
+ }): string;
7
+ export declare function policiesV1MetaPathFor(policyFilePath: string): string;
8
+ export declare function defaultPoliciesMetaPath(): string;
9
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/policy/paths.ts"],"names":[],"mappings":"AAaA,wBAAgB,0BAA0B,IAAI,MAAM,CAOnD;AAMD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,uGAAuG;AACvG,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAK7E;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
@@ -0,0 +1,42 @@
1
+ import { existsSync } from "node:fs";
2
+ import { fileURLToPath } from "node:url";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ function bundledPoliciesCandidates() {
6
+ const here = path.dirname(fileURLToPath(import.meta.url));
7
+ return [
8
+ path.resolve(here, "../policies.v1.json"),
9
+ path.resolve(here, "../../../auditor/policies.v1.json"),
10
+ ];
11
+ }
12
+ export function resolveBundledPoliciesPath() {
13
+ for (const candidate of bundledPoliciesCandidates()) {
14
+ if (existsSync(candidate))
15
+ return candidate;
16
+ }
17
+ throw new Error(`No bundled policies.v1.json found. Tried:\n${bundledPoliciesCandidates().map((p) => ` - ${p}`).join("\n")}`);
18
+ }
19
+ function defaultPraxisDir() {
20
+ return path.join(os.homedir(), ".praxis");
21
+ }
22
+ export function defaultPoliciesV1Path() {
23
+ return path.join(defaultPraxisDir(), "policies.v1.json");
24
+ }
25
+ /** Effective path when `opts.policyPath` is omitted (env override matches `auditor doctor` / help). */
26
+ export function resolvedPoliciesV1Path(opts) {
27
+ if (opts?.policyPath?.trim())
28
+ return opts.policyPath.trim();
29
+ const fromEnv = process.env.PRAXIS_POLICIES_V1_PATH?.trim();
30
+ if (fromEnv)
31
+ return fromEnv;
32
+ return defaultPoliciesV1Path();
33
+ }
34
+ export function policiesV1MetaPathFor(policyFilePath) {
35
+ const dir = path.dirname(policyFilePath);
36
+ const base = path.basename(policyFilePath, ".json");
37
+ return path.join(dir, `${base}.meta.json`);
38
+ }
39
+ export function defaultPoliciesMetaPath() {
40
+ return policiesV1MetaPathFor(defaultPoliciesV1Path());
41
+ }
42
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/policy/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,SAAS,yBAAyB;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,mCAAmC,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,KAAK,MAAM,SAAS,IAAI,yBAAyB,EAAE,EAAE,CAAC;QACpD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,MAAM,IAAI,KAAK,CACb,8CAA8C,yBAAyB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9G,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC3D,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,sBAAsB,CAAC,IAA8B;IACnE,IAAI,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,qBAAqB,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ export declare const TierSchema: z.ZodEnum<{
3
+ READ: "READ";
4
+ MUTATE: "MUTATE";
5
+ DESTRUCTIVE: "DESTRUCTIVE";
6
+ }>;
7
+ export type Tier = z.infer<typeof TierSchema>;
8
+ export declare const PoliciesV1Schema: z.ZodObject<{
9
+ tiers: z.ZodArray<z.ZodEnum<{
10
+ READ: "READ";
11
+ MUTATE: "MUTATE";
12
+ DESTRUCTIVE: "DESTRUCTIVE";
13
+ }>>;
14
+ dangerous_flags: z.ZodArray<z.ZodString>;
15
+ policies: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodEnum<{
16
+ READ: "READ";
17
+ MUTATE: "MUTATE";
18
+ DESTRUCTIVE: "DESTRUCTIVE";
19
+ }>>>>;
20
+ shell: z.ZodOptional<z.ZodObject<{
21
+ prelude_verbs: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
+ privilege_verbs: z.ZodOptional<z.ZodArray<z.ZodString>>;
23
+ }, z.core.$strip>>;
24
+ }, z.core.$strip>;
25
+ export type PoliciesV1 = z.infer<typeof PoliciesV1Schema>;
26
+ export type Classification = {
27
+ tool: string | null;
28
+ command_path: string | null;
29
+ verb: string | null;
30
+ tier: Tier;
31
+ matched: boolean;
32
+ };
33
+ export declare function ensureTiersComplete(tiers: readonly Tier[]): void;
34
+ export declare function parsePoliciesV1Json(raw: unknown): PoliciesV1;
35
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/policy/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU;;;;EAA4C,CAAC;AACpE,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;iBAU3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,QAOzD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAO5D"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ export const TierSchema = z.enum(["READ", "MUTATE", "DESTRUCTIVE"]);
3
+ export const PoliciesV1Schema = z.object({
4
+ tiers: z.array(TierSchema).nonempty(),
5
+ dangerous_flags: z.array(z.string()),
6
+ policies: z.record(z.string(), z.record(z.string(), z.record(z.string(), TierSchema))),
7
+ shell: z
8
+ .object({
9
+ prelude_verbs: z.array(z.string()).optional(),
10
+ privilege_verbs: z.array(z.string()).optional(),
11
+ })
12
+ .optional(),
13
+ });
14
+ export function ensureTiersComplete(tiers) {
15
+ const s = new Set(tiers);
16
+ for (const required of ["READ", "MUTATE", "DESTRUCTIVE"]) {
17
+ if (!s.has(required)) {
18
+ throw new Error(`policies.v1.json tiers missing: ${required}`);
19
+ }
20
+ }
21
+ }
22
+ export function parsePoliciesV1Json(raw) {
23
+ const parsed = PoliciesV1Schema.safeParse(raw);
24
+ if (!parsed.success) {
25
+ throw new Error(`Invalid policies: ${parsed.error.message}`);
26
+ }
27
+ ensureTiersComplete(parsed.data.tiers);
28
+ return parsed.data;
29
+ }
30
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/policy/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;AAGpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;IACrC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IACtF,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC7C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAChD,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAYH,MAAM,UAAU,mBAAmB,CAAC,KAAsB;IACxD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,KAAK,MAAM,QAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAU,EAAE,CAAC;QAClE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxis.guard/auditor-cli",
3
- "version": "0.0.45",
3
+ "version": "0.0.47",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "MIT",