@lannguyensi/harness 0.6.0 → 0.8.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 (139) hide show
  1. package/CHANGELOG.md +255 -0
  2. package/README.md +189 -148
  3. package/dist/cli/apply/apply.d.ts +13 -0
  4. package/dist/cli/apply/apply.js +59 -3
  5. package/dist/cli/apply/apply.js.map +1 -1
  6. package/dist/cli/apply/generate-codex-config.d.ts +6 -0
  7. package/dist/cli/apply/generate-codex-config.js +149 -0
  8. package/dist/cli/apply/generate-codex-config.js.map +1 -0
  9. package/dist/cli/apply/generate-settings.d.ts +15 -1
  10. package/dist/cli/apply/generate-settings.js +16 -1
  11. package/dist/cli/apply/generate-settings.js.map +1 -1
  12. package/dist/cli/apply/index.d.ts +2 -1
  13. package/dist/cli/apply/index.js +2 -1
  14. package/dist/cli/apply/index.js.map +1 -1
  15. package/dist/cli/approve/understanding.d.ts +39 -0
  16. package/dist/cli/approve/understanding.js +122 -0
  17. package/dist/cli/approve/understanding.js.map +1 -0
  18. package/dist/cli/describe.d.ts +1 -1
  19. package/dist/cli/describe.js +2 -0
  20. package/dist/cli/describe.js.map +1 -1
  21. package/dist/cli/doctor/codex.d.ts +34 -0
  22. package/dist/cli/doctor/codex.js +331 -0
  23. package/dist/cli/doctor/codex.js.map +1 -0
  24. package/dist/cli/doctor/format.js +29 -1
  25. package/dist/cli/doctor/format.js.map +1 -1
  26. package/dist/cli/doctor/index.d.ts +13 -1
  27. package/dist/cli/doctor/index.js +49 -1
  28. package/dist/cli/doctor/index.js.map +1 -1
  29. package/dist/cli/doctor/types.d.ts +35 -1
  30. package/dist/cli/doctor/types.js +12 -1
  31. package/dist/cli/doctor/types.js.map +1 -1
  32. package/dist/cli/explain.d.ts +10 -1
  33. package/dist/cli/explain.js +44 -18
  34. package/dist/cli/explain.js.map +1 -1
  35. package/dist/cli/index.js +315 -8
  36. package/dist/cli/index.js.map +1 -1
  37. package/dist/cli/list.d.ts +1 -1
  38. package/dist/cli/list.js +17 -0
  39. package/dist/cli/list.js.map +1 -1
  40. package/dist/cli/pack/add.d.ts +13 -0
  41. package/dist/cli/pack/add.js +71 -0
  42. package/dist/cli/pack/add.js.map +1 -0
  43. package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +30 -0
  44. package/dist/cli/pack/hook-codex-pre-tool-use.js +149 -0
  45. package/dist/cli/pack/hook-codex-pre-tool-use.js.map +1 -0
  46. package/dist/cli/pack/hook-codex-stop.d.ts +31 -0
  47. package/dist/cli/pack/hook-codex-stop.js +332 -0
  48. package/dist/cli/pack/hook-codex-stop.js.map +1 -0
  49. package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +18 -0
  50. package/dist/cli/pack/hook-codex-user-prompt-submit.js +92 -0
  51. package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +1 -0
  52. package/dist/cli/pack/hook-pre-tool-use.d.ts +32 -0
  53. package/dist/cli/pack/hook-pre-tool-use.js +181 -0
  54. package/dist/cli/pack/hook-pre-tool-use.js.map +1 -0
  55. package/dist/cli/pack/index.d.ts +4 -0
  56. package/dist/cli/pack/index.js +5 -0
  57. package/dist/cli/pack/index.js.map +1 -0
  58. package/dist/cli/pack/list.d.ts +10 -0
  59. package/dist/cli/pack/list.js +43 -0
  60. package/dist/cli/pack/list.js.map +1 -0
  61. package/dist/cli/pack/mutate.d.ts +14 -0
  62. package/dist/cli/pack/mutate.js +76 -0
  63. package/dist/cli/pack/mutate.js.map +1 -0
  64. package/dist/cli/pack/remove.d.ts +15 -0
  65. package/dist/cli/pack/remove.js +153 -0
  66. package/dist/cli/pack/remove.js.map +1 -0
  67. package/dist/cli/session-export/index.d.ts +46 -0
  68. package/dist/cli/session-export/index.js +169 -0
  69. package/dist/cli/session-export/index.js.map +1 -0
  70. package/dist/cli/session-export/redact.d.ts +22 -0
  71. package/dist/cli/session-export/redact.js +47 -0
  72. package/dist/cli/session-export/redact.js.map +1 -0
  73. package/dist/cli/session-export/transcript.d.ts +24 -0
  74. package/dist/cli/session-export/transcript.js +162 -0
  75. package/dist/cli/session-export/transcript.js.map +1 -0
  76. package/dist/cli/validate/checks.js +32 -0
  77. package/dist/cli/validate/checks.js.map +1 -1
  78. package/dist/policies/ledger-client.js +2 -1
  79. package/dist/policies/ledger-client.js.map +1 -1
  80. package/dist/policy-packs/builtin/permission-profiles.d.ts +11 -0
  81. package/dist/policy-packs/builtin/permission-profiles.js +74 -0
  82. package/dist/policy-packs/builtin/permission-profiles.js.map +1 -0
  83. package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +56 -0
  84. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +186 -0
  85. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +1 -0
  86. package/dist/policy-packs/builtin/understanding-before-execution.d.ts +15 -0
  87. package/dist/policy-packs/builtin/understanding-before-execution.js +254 -0
  88. package/dist/policy-packs/builtin/understanding-before-execution.js.map +1 -0
  89. package/dist/policy-packs/expand.d.ts +4 -0
  90. package/dist/policy-packs/expand.js +90 -0
  91. package/dist/policy-packs/expand.js.map +1 -0
  92. package/dist/policy-packs/index.d.ts +5 -0
  93. package/dist/policy-packs/index.js +5 -0
  94. package/dist/policy-packs/index.js.map +1 -0
  95. package/dist/policy-packs/permission-translator.d.ts +9 -0
  96. package/dist/policy-packs/permission-translator.js +76 -0
  97. package/dist/policy-packs/permission-translator.js.map +1 -0
  98. package/dist/policy-packs/registry.d.ts +11 -0
  99. package/dist/policy-packs/registry.js +20 -0
  100. package/dist/policy-packs/registry.js.map +1 -0
  101. package/dist/policy-packs/runtime.d.ts +8 -0
  102. package/dist/policy-packs/runtime.js +30 -0
  103. package/dist/policy-packs/runtime.js.map +1 -0
  104. package/dist/policy-packs/source.d.ts +6 -0
  105. package/dist/policy-packs/source.js +10 -0
  106. package/dist/policy-packs/source.js.map +1 -0
  107. package/dist/policy-packs/types.d.ts +41 -0
  108. package/dist/policy-packs/types.js +11 -0
  109. package/dist/policy-packs/types.js.map +1 -0
  110. package/dist/probes/mcp.js +2 -1
  111. package/dist/probes/mcp.js.map +1 -1
  112. package/dist/runtime/index.d.ts +1 -0
  113. package/dist/runtime/index.js +1 -0
  114. package/dist/runtime/index.js.map +1 -1
  115. package/dist/runtime/ledger-add.d.ts +16 -0
  116. package/dist/runtime/ledger-add.js +139 -0
  117. package/dist/runtime/ledger-add.js.map +1 -0
  118. package/dist/runtime/ledger-record.js +2 -1
  119. package/dist/runtime/ledger-record.js.map +1 -1
  120. package/dist/schema/audit.d.ts +71 -0
  121. package/dist/schema/audit.js +32 -0
  122. package/dist/schema/audit.js.map +1 -0
  123. package/dist/schema/index.d.ts +1893 -10
  124. package/dist/schema/index.js +27 -0
  125. package/dist/schema/index.js.map +1 -1
  126. package/dist/schema/permission-profiles.d.ts +2161 -0
  127. package/dist/schema/permission-profiles.js +60 -0
  128. package/dist/schema/permission-profiles.js.map +1 -0
  129. package/dist/schema/policy-packs.d.ts +52 -0
  130. package/dist/schema/policy-packs.js +35 -0
  131. package/dist/schema/policy-packs.js.map +1 -0
  132. package/dist/schema/tools.d.ts +8 -8
  133. package/dist/schema/workflows.d.ts +519 -0
  134. package/dist/schema/workflows.js +81 -0
  135. package/dist/schema/workflows.js.map +1 -0
  136. package/dist/version.d.ts +1 -0
  137. package/dist/version.js +3 -0
  138. package/dist/version.js.map +1 -0
  139. package/package.json +1 -1
@@ -4,6 +4,9 @@ import * as path from "node:path";
4
4
  import { inspectMemory } from "../../probes/memory.js";
5
5
  import { RealMcpProbe, probeAll, } from "../../probes/mcp.js";
6
6
  import { loadManifest } from "../loader.js";
7
+ import { countCodexDiagnostics, runCodexTargetChecks, } from "./codex.js";
8
+ import { isDoctorTarget, KNOWN_DOCTOR_TARGETS, } from "./types.js";
9
+ export { isDoctorTarget, KNOWN_DOCTOR_TARGETS };
7
10
  const HOME_PLACEHOLDER = "~";
8
11
  function expandHome(p, home) {
9
12
  if (p === HOME_PLACEHOLDER)
@@ -184,8 +187,35 @@ function buildPolicies(manifest) {
184
187
  caveat: "schema valid; last-evaluated tracking ships in Phase 4",
185
188
  }));
186
189
  }
190
+ function buildWorkflows(manifest) {
191
+ const entries = manifest.workflows.map((wf) => {
192
+ const review = wf.steps.find((s) => s.kind === "review_subagent");
193
+ const merge = wf.steps.find((s) => s.kind === "merge");
194
+ return {
195
+ name: wf.name,
196
+ steps: wf.steps.length,
197
+ reviewSpawn: review?.kind === "review_subagent" ? review.spawn : null,
198
+ reviewTemplate: review?.kind === "review_subagent" ? (review.template ?? null) : null,
199
+ mergeGate: merge?.kind === "merge" ? merge.gate : null,
200
+ taskLabels: wf.when.task_label ?? [],
201
+ };
202
+ });
203
+ return {
204
+ declared: manifest.workflows.length,
205
+ templates: Object.keys(manifest.review_templates).length,
206
+ entries,
207
+ };
208
+ }
187
209
  function manifestSection(manifest) {
188
- const topLevelKeys = ["grounding", "tools", "memory", "hooks", "policies"];
210
+ const topLevelKeys = [
211
+ "grounding",
212
+ "tools",
213
+ "memory",
214
+ "hooks",
215
+ "policies",
216
+ "workflows",
217
+ "review_templates",
218
+ ];
189
219
  const present = topLevelKeys.filter((k) => manifest[k] !== undefined).length;
190
220
  // Note: a corrupt manifest never reaches this point; loadManifest exits
191
221
  // EX_NOINPUT (66) before doctor() returns. The previous syntaxValid /
@@ -232,6 +262,11 @@ function countDiagnostics(report) {
232
262
  }
233
263
  if (report.memory.staleMemories.length > 0)
234
264
  warningCount++;
265
+ if (report.codexTarget) {
266
+ const codexCounts = countCodexDiagnostics(report.codexTarget);
267
+ errorCount += codexCounts.errorCount;
268
+ warningCount += codexCounts.warningCount;
269
+ }
235
270
  return { errorCount, warningCount };
236
271
  }
237
272
  export async function doctor(opts = {}) {
@@ -269,6 +304,7 @@ export async function doctor(opts = {}) {
269
304
  });
270
305
  const hooks = checkHooks(manifest, home);
271
306
  const policies = buildPolicies(manifest);
307
+ const workflows = buildWorkflows(manifest);
272
308
  const manifestSec = manifestSection(manifest);
273
309
  const partial = {
274
310
  manifestPath: resolved.base,
@@ -280,7 +316,19 @@ export async function doctor(opts = {}) {
280
316
  memory,
281
317
  hooks,
282
318
  policies,
319
+ workflows,
283
320
  };
321
+ if (opts.target === "codex") {
322
+ const manifestDir = path.dirname(resolved.base);
323
+ const codexOpts = {
324
+ manifestDir,
325
+ ...(opts.codexCheckOptions ?? {}),
326
+ };
327
+ if (codexOpts.pathEnv === undefined && opts.pathEnv !== undefined) {
328
+ codexOpts.pathEnv = opts.pathEnv;
329
+ }
330
+ partial.codexTarget = runCodexTargetChecks(manifest, codexOpts);
331
+ }
284
332
  const counts = countDiagnostics(partial);
285
333
  return { ...partial, ...counts };
286
334
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/doctor/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/doctor/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,18 @@
1
1
  import type { McpProbeResult } from "../../probes/mcp.js";
2
2
  import type { MemoryReport, StaleMemory } from "../../probes/memory.js";
3
3
  import type { Manifest } from "../../schema/index.js";
4
+ import type { CodexTargetReport } from "./codex.js";
5
+ /**
6
+ * Phase 6 #6 follow-up — doctor target identifier. Distinct from
7
+ * `Runtime` (which gates `harness apply --runtime`): doctor only adds
8
+ * a target when the corresponding adapter-health check module exists.
9
+ * Reusing the apply Runtime enum here would silently accept
10
+ * `--target claude-code` and do nothing, since there is no
11
+ * claude-code-specific doctor module today.
12
+ */
13
+ export declare const KNOWN_DOCTOR_TARGETS: readonly ["codex"];
14
+ export type DoctorTarget = (typeof KNOWN_DOCTOR_TARGETS)[number];
15
+ export declare function isDoctorTarget(value: unknown): value is DoctorTarget;
4
16
  export interface ManifestSection {
5
17
  topLevelKeysPresent: number;
6
18
  warnings: string[];
@@ -28,6 +40,19 @@ export interface PolicyEntryReport {
28
40
  schemaValid: boolean;
29
41
  caveat: string;
30
42
  }
43
+ export interface WorkflowEntryReport {
44
+ name: string;
45
+ steps: number;
46
+ reviewSpawn: "required" | "optional" | "skip" | null;
47
+ reviewTemplate: string | null;
48
+ mergeGate: "solo" | "agent_tasks_label" | "none" | null;
49
+ taskLabels: string[];
50
+ }
51
+ export interface WorkflowsSectionReport {
52
+ declared: number;
53
+ templates: number;
54
+ entries: WorkflowEntryReport[];
55
+ }
31
56
  export interface DoctorReport {
32
57
  manifestPath: string;
33
58
  manifestVersion: number;
@@ -38,7 +63,16 @@ export interface DoctorReport {
38
63
  memory: MemoryReport;
39
64
  hooks: HookEntryReport[];
40
65
  policies: PolicyEntryReport[];
66
+ workflows: WorkflowsSectionReport;
67
+ /**
68
+ * Phase 6 #6 follow-up: present when `--target codex` is passed.
69
+ * Aggregates harness-side codex adapter health checks (binary
70
+ * resolution, generated config presence, hook command resolution,
71
+ * persisted-report dir writability). Counts roll into the top-level
72
+ * errorCount / warningCount.
73
+ */
74
+ codexTarget?: CodexTargetReport;
41
75
  errorCount: number;
42
76
  warningCount: number;
43
77
  }
44
- export type { Manifest, McpProbeResult, MemoryReport, StaleMemory };
78
+ export type { Manifest, McpProbeResult, MemoryReport, StaleMemory, CodexTargetReport };
@@ -1,2 +1,13 @@
1
- export {};
1
+ /**
2
+ * Phase 6 #6 follow-up — doctor target identifier. Distinct from
3
+ * `Runtime` (which gates `harness apply --runtime`): doctor only adds
4
+ * a target when the corresponding adapter-health check module exists.
5
+ * Reusing the apply Runtime enum here would silently accept
6
+ * `--target claude-code` and do nothing, since there is no
7
+ * claude-code-specific doctor module today.
8
+ */
9
+ export const KNOWN_DOCTOR_TARGETS = ["codex"];
10
+ export function isDoctorTarget(value) {
11
+ return typeof value === "string" && KNOWN_DOCTOR_TARGETS.includes(value);
12
+ }
2
13
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/doctor/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/doctor/types.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,CAAU,CAAC;AAGvD,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,oBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClG,CAAC"}
@@ -1,14 +1,23 @@
1
1
  import { type LedgerQueryResult } from "../policies/index.js";
2
+ import { type PolicyDecisionPayload } from "../runtime/ledger-record.js";
2
3
  import { type LoaderOptions } from "./loader.js";
4
+ export type ExplainDecisionFilter = PolicyDecisionPayload["outcome"];
3
5
  export interface ExplainOptions extends LoaderOptions {
4
6
  json?: boolean;
5
7
  trace?: boolean;
6
8
  /** Session whose audit log to inspect for `--trace`. */
7
9
  sessionId?: string;
10
+ /**
11
+ * When true, ignore the policy-name argument and trace the most recent
12
+ * decision recorded in the ledger (any policy). Implies --trace.
13
+ */
14
+ last?: boolean;
15
+ /** When `last` is set, only consider decisions of this outcome. */
16
+ decisionFilter?: ExplainDecisionFilter;
8
17
  /** Override the ledger fetcher (tests). */
9
18
  fetchLedger?: (sessionId: string) => Promise<LedgerQueryResult>;
10
19
  }
11
20
  export interface ExplainResult {
12
21
  output: string;
13
22
  }
14
- export declare function explain(policyName: string, opts?: ExplainOptions): Promise<ExplainResult>;
23
+ export declare function explain(policyName: string | undefined, opts?: ExplainOptions): Promise<ExplainResult>;
@@ -22,17 +22,25 @@ function defaultFetcher(opts) {
22
22
  });
23
23
  };
24
24
  }
25
- function selectLatestForPolicy(entries, policyName) {
26
- const matches = entries
27
- .map((e) => {
28
- const payload = decodeLedgerContent(e.content);
25
+ function decodeAll(entries) {
26
+ const out = [];
27
+ for (const entry of entries) {
28
+ const payload = decodeLedgerContent(entry.content);
29
29
  if (!payload)
30
- return null;
31
- if (payload.name !== policyName)
32
- return null;
33
- return { entry: e, payload };
34
- })
35
- .filter((x) => x !== null);
30
+ continue;
31
+ out.push({ entry, payload });
32
+ }
33
+ return out;
34
+ }
35
+ function selectLatestForPolicy(entries, policyName) {
36
+ const matches = decodeAll(entries).filter((d) => d.payload.name === policyName);
37
+ if (matches.length === 0)
38
+ return null;
39
+ matches.sort((a, b) => decisionSortKey(b.entry, b.payload) - decisionSortKey(a.entry, a.payload));
40
+ return matches[0];
41
+ }
42
+ function selectLatestAny(entries, decisionFilter) {
43
+ const matches = decodeAll(entries).filter((d) => decisionFilter === undefined || d.payload.outcome === decisionFilter);
36
44
  if (matches.length === 0)
37
45
  return null;
38
46
  matches.sort((a, b) => decisionSortKey(b.entry, b.payload) - decisionSortKey(a.entry, a.payload));
@@ -40,6 +48,23 @@ function selectLatestForPolicy(entries, policyName) {
40
48
  }
41
49
  export async function explain(policyName, opts = {}) {
42
50
  const { manifest } = loadManifest(opts);
51
+ if (opts.last) {
52
+ const sessionId = resolveSessionId(opts.sessionId);
53
+ const fetch = opts.fetchLedger ?? defaultFetcher(opts);
54
+ const result = await fetch(sessionId);
55
+ if (result.kind === "degraded") {
56
+ throw new HarnessExitError(`cannot read audit log: ${result.reason}`, EX_FAIL);
57
+ }
58
+ const latest = selectLatestAny(result.entries, opts.decisionFilter);
59
+ if (!latest) {
60
+ const filterSuffix = opts.decisionFilter ? ` with outcome \`${opts.decisionFilter}\`` : "";
61
+ throw new HarnessExitError(`no recorded policy decisions${filterSuffix} for session \`${sessionId}\`; the ledger may be empty or grounding-mcp is unreachable`, EX_FAIL);
62
+ }
63
+ return { output: renderTrace(latest, manifest, sessionId, opts.json) };
64
+ }
65
+ if (policyName === undefined) {
66
+ throw new HarnessExitError("policy name is required (or pass --last to trace the most recent decision)", EX_USAGE);
67
+ }
43
68
  const policy = manifest.policies.find((p) => p.name === policyName);
44
69
  if (!policy) {
45
70
  const available = manifest.policies.map((p) => p.name).join(", ") || "(none)";
@@ -70,6 +95,11 @@ export async function explain(policyName, opts = {}) {
70
95
  if (!latest) {
71
96
  throw new HarnessExitError(`no recorded evaluations for policy \`${policyName}\`; the policy may not have fired yet, or grounding-mcp is unreachable`, EX_FAIL);
72
97
  }
98
+ return { output: renderTrace(latest, manifest, sessionId, opts.json) };
99
+ }
100
+ function renderTrace(latest, manifest, sessionId, json) {
101
+ const policy = manifest.policies.find((p) => p.name === latest.payload.name);
102
+ const trigger = policy?.trigger;
73
103
  const projection = {
74
104
  name: latest.payload.name,
75
105
  decision: latest.payload.outcome,
@@ -78,20 +108,16 @@ export async function explain(policyName, opts = {}) {
78
108
  ledgerTag: latest.payload.ledgerTag,
79
109
  evaluatedAt: latest.payload.evaluatedAt,
80
110
  triggerMatched: {
81
- event: policy.trigger.event,
82
- ...(policy.trigger.match !== undefined && { match: policy.trigger.match }),
83
- ...(policy.trigger.bash_match !== undefined && {
84
- bashMatch: policy.trigger.bash_match,
85
- }),
111
+ event: trigger?.event ?? "(unknown: policy not declared in current manifest)",
112
+ ...(trigger?.match !== undefined && { match: trigger.match }),
113
+ ...(trigger?.bash_match !== undefined && { bashMatch: trigger.bash_match }),
86
114
  },
87
115
  extract: latest.payload.extractValues,
88
116
  ...(latest.payload.requiresEval && { requiresEval: latest.payload.requiresEval }),
89
- // sessionId is resolved via runtime/session-id.ts: explicit > env > "default".
90
117
  ledgerQuery: { verb: "ledger_summary", sessionId },
91
118
  };
92
- const output = opts.json
119
+ return json
93
120
  ? `${JSON.stringify(projection, null, 2)}\n`
94
121
  : stringifyYaml(projection, { lineWidth: 0 });
95
- return { output };
96
122
  }
97
123
  //# sourceMappingURL=explain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/cli/explain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/cli/explain.ts"],"names":[],"mappings":"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"}