agent-hitch 0.1.1 → 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.
- package/README.md +229 -132
- package/README.zh-CN.md +330 -0
- package/dist/bin/hitch.js +9 -0
- package/dist/bin/hitch.js.map +1 -0
- package/dist/scripts/check-release.js +25 -0
- package/dist/scripts/check-release.js.map +1 -0
- package/dist/scripts/check-syntax.js +32 -0
- package/dist/scripts/check-syntax.js.map +1 -0
- package/dist/src/adapters.js +461 -0
- package/dist/src/adapters.js.map +1 -0
- package/dist/src/artifacts.js +1081 -0
- package/dist/src/artifacts.js.map +1 -0
- package/dist/src/cli.js +699 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.js +53 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/controller-runtime/hash.js +353 -0
- package/dist/src/controller-runtime/hash.js.map +1 -0
- package/dist/src/controller-runtime/store.js +323 -0
- package/dist/src/controller-runtime/store.js.map +1 -0
- package/dist/src/daemon.js +461 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/domain/types.js +10 -0
- package/dist/src/domain/types.js.map +1 -0
- package/dist/src/domain/validate.js +240 -0
- package/dist/src/domain/validate.js.map +1 -0
- package/dist/src/engine.js +465 -0
- package/dist/src/engine.js.map +1 -0
- package/dist/src/errors.js +14 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/eval-tools.js +318 -0
- package/dist/src/eval-tools.js.map +1 -0
- package/dist/src/evals.js +313 -0
- package/dist/src/evals.js.map +1 -0
- package/dist/src/events.js +80 -0
- package/dist/src/events.js.map +1 -0
- package/dist/src/feedback/service.js +315 -0
- package/dist/src/feedback/service.js.map +1 -0
- package/dist/src/fs.js +45 -0
- package/dist/src/fs.js.map +1 -0
- package/dist/src/harbor-backend.js +280 -0
- package/dist/src/harbor-backend.js.map +1 -0
- package/dist/src/harness-reference.js +83 -0
- package/dist/src/harness-reference.js.map +1 -0
- package/dist/src/line-stream.js +20 -0
- package/dist/src/line-stream.js.map +1 -0
- package/dist/src/locks.js +38 -0
- package/dist/src/locks.js.map +1 -0
- package/dist/src/package-root.js +40 -0
- package/dist/src/package-root.js.map +1 -0
- package/dist/src/process.js +50 -0
- package/dist/src/process.js.map +1 -0
- package/dist/src/registry.js +81 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/scheduler.js +162 -0
- package/dist/src/scheduler.js.map +1 -0
- package/dist/src/trajectories/contract.js +17 -0
- package/dist/src/trajectories/contract.js.map +1 -0
- package/dist/src/trajectories/format.js +127 -0
- package/dist/src/trajectories/format.js.map +1 -0
- package/dist/src/trajectories/projector.js +385 -0
- package/dist/src/trajectories/projector.js.map +1 -0
- package/dist/src/trajectories/store.js +281 -0
- package/dist/src/trajectories/store.js.map +1 -0
- package/dist/src/workspaces.js +858 -0
- package/dist/src/workspaces.js.map +1 -0
- package/docs/schemas/controller-runtime-manifest.schema.json +57 -0
- package/docs/schemas/controller-runtime-ref.schema.json +16 -0
- package/docs/schemas/message-feedback.schema.json +37 -0
- package/docs/schemas/trajectory-ref.schema.json +30 -0
- package/integrations/harbor/hitch_harbor_agent.py +176 -4
- package/package.json +19 -11
- package/bin/hitch.js +0 -9
- package/src/adapters.js +0 -435
- package/src/artifacts.js +0 -949
- package/src/cli.js +0 -505
- package/src/config.js +0 -51
- package/src/daemon.js +0 -416
- package/src/engine.js +0 -400
- package/src/errors.js +0 -12
- package/src/eval-tools.js +0 -334
- package/src/evals.js +0 -276
- package/src/events.js +0 -69
- package/src/fs.js +0 -43
- package/src/harbor-backend.js +0 -285
- package/src/harness-reference.js +0 -78
- package/src/line-stream.js +0 -17
- package/src/locks.js +0 -33
- package/src/process.js +0 -49
- package/src/registry.js +0 -84
- package/src/scheduler.js +0 -156
- package/src/workspaces.js +0 -893
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Controller runtime store: staging, promotion, cache lookup, and verified
|
|
3
|
+
* use of shared read-only controller runtime bundles (spec §4).
|
|
4
|
+
*
|
|
5
|
+
* New eval directories do not contain a complete Hitch runtime; they hold a
|
|
6
|
+
* durable `runtime.ref.json` reference. The shared bundle lives under
|
|
7
|
+
* `<hitch-root>/store/controller-runtimes/sha256/<64-hex>/`.
|
|
8
|
+
*/
|
|
9
|
+
import { randomBytes } from "node:crypto";
|
|
10
|
+
import { createHash } from "node:crypto";
|
|
11
|
+
import { cp, mkdir, readFile, readdir, rename, rm, stat, chmod, open } from "node:fs/promises";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
import { statePaths, SCHEMA_VERSION } from "../config.js";
|
|
14
|
+
import { HitchError } from "../errors.js";
|
|
15
|
+
import { atomicWriteJSON, ensureDir, readJSON, removeIfExists } from "../fs.js";
|
|
16
|
+
import { delay } from "../process.js";
|
|
17
|
+
import { reclaimStaleLock } from "../locks.js";
|
|
18
|
+
import { packageRoot } from "../package-root.js";
|
|
19
|
+
import { ControllerRuntimeIntegrityError, RUNTIME_PAYLOAD_RULES, canonicalEncodeManifest, hashRuntimePayload, verifyRuntimePayload, } from "./hash.js";
|
|
20
|
+
import { validateControllerRuntimeManifest } from "../domain/validate.js";
|
|
21
|
+
/** The Hitch package root whose compiled payload is packaged as a controller runtime. */
|
|
22
|
+
export const PACKAGE_ROOT = packageRoot();
|
|
23
|
+
/**
|
|
24
|
+
* Ensure the shared controller runtime bundle for the current Hitch payload
|
|
25
|
+
* exists and is verified; returns its cache path and identity.
|
|
26
|
+
*/
|
|
27
|
+
export async function ensureControllerRuntime({ root, payloadRoot = PACKAGE_ROOT, rules = RUNTIME_PAYLOAD_RULES }) {
|
|
28
|
+
if (!root)
|
|
29
|
+
throw new HitchError("a Hitch state root is required for the controller runtime", { code: "invalid_input", exitCode: 2 });
|
|
30
|
+
const paths = statePaths(root);
|
|
31
|
+
// Stage inside the state root's tmp/ directory so promotion is a same-
|
|
32
|
+
// filesystem atomic rename (spec §4.2 `tmp/runtime-staging-*`, §4.5).
|
|
33
|
+
const stagingBase = path.join(paths.temporary, "controller-runtime");
|
|
34
|
+
// Stage a fresh copy, hash it, and promote under a runtime-id lock.
|
|
35
|
+
const staging = await stagePayload(payloadRoot, rules, stagingBase);
|
|
36
|
+
try {
|
|
37
|
+
return await withRuntimeLock(paths, staging.runtimeId, async () => {
|
|
38
|
+
return promoteStagedRuntime(paths, staging);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
await rm(staging.directory, { recursive: true, force: true }).catch(() => { });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async function stagePayload(payloadRoot, rules, stagingBase) {
|
|
46
|
+
const payloadRootReal = path.resolve(payloadRoot);
|
|
47
|
+
const hashResult = await hashRuntimePayload({ payloadRoot: payloadRootReal, rules });
|
|
48
|
+
const runtimeId = hashResult.runtimeId.replace("sha256:", "");
|
|
49
|
+
await ensureDir(stagingBase);
|
|
50
|
+
const staging = path.join(stagingBase, `runtime-staging-${runtimeId.slice(0, 12)}-${randomBytes(6).toString("hex")}`);
|
|
51
|
+
await mkdir(staging, { recursive: true });
|
|
52
|
+
// Copy the allowlisted payload into staging. Never hardlink from the
|
|
53
|
+
// development or installed package tree (spec §4.5).
|
|
54
|
+
const payloadDestination = path.join(staging, "payload");
|
|
55
|
+
await mkdir(payloadDestination, { recursive: true });
|
|
56
|
+
await copyPayload(payloadRootReal, payloadDestination, rules);
|
|
57
|
+
// Hash the staged payload and write its manifest; the complete tree is
|
|
58
|
+
// verified a second time during promotion.
|
|
59
|
+
const stagedHash = await hashRuntimePayload({ payloadRoot: payloadDestination, rules });
|
|
60
|
+
if (stagedHash.runtimeId !== hashResult.runtimeId) {
|
|
61
|
+
throw new ControllerRuntimeIntegrityError("staged runtime payload hash changed during staging");
|
|
62
|
+
}
|
|
63
|
+
await atomicWriteJSON(path.join(staging, "manifest.json"), stagedHash.manifest);
|
|
64
|
+
return { directory: staging, runtimeId };
|
|
65
|
+
}
|
|
66
|
+
async function copyPayload(sourceRoot, destinationRoot, rules) {
|
|
67
|
+
for (const rule of rules) {
|
|
68
|
+
const relative = rule.path || rule.directory || "";
|
|
69
|
+
const source = path.join(sourceRoot, ...relative.split("/"));
|
|
70
|
+
const destination = path.join(destinationRoot, ...relative.split("/"));
|
|
71
|
+
await ensureDir(path.dirname(destination));
|
|
72
|
+
await cp(source, destination, { recursive: true, force: false, errorOnExist: true });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async function promoteStagedRuntime(paths, staging) {
|
|
76
|
+
await ensureDir(paths.controllerRuntimes);
|
|
77
|
+
const destination = path.join(paths.controllerRuntimes, staging.runtimeId);
|
|
78
|
+
// If a valid bundle already exists, discard staging and return the cache hit
|
|
79
|
+
// (spec §4.5). Check first so a same-filesystem rename is never attempted
|
|
80
|
+
// onto an existing directory (POSIX rejects it).
|
|
81
|
+
if (await pathExists(destination)) {
|
|
82
|
+
try {
|
|
83
|
+
return await useControllerRuntimeById(paths, staging.runtimeId);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (error?.code !== "controller_runtime_integrity_mismatch")
|
|
87
|
+
throw error;
|
|
88
|
+
// The destination is corrupt: quarantine it before promoting the fresh
|
|
89
|
+
// staged bundle with the same runtime id (spec §4.5). The replacement
|
|
90
|
+
// carries the exact same bytes, so the id is never relabeled.
|
|
91
|
+
await quarantineInvalidRuntime(paths, destination, staging.runtimeId);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
let promoted = false;
|
|
95
|
+
try {
|
|
96
|
+
await rename(staging.directory, destination);
|
|
97
|
+
promoted = true;
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (error?.code !== "ENOTEMPTY" && error?.code !== "EEXIST")
|
|
101
|
+
throw error;
|
|
102
|
+
// A concurrent first use promoted first; validate the existing bundle.
|
|
103
|
+
}
|
|
104
|
+
if (promoted) {
|
|
105
|
+
const manifest = await loadManifest(destination);
|
|
106
|
+
await applyReadOnlyPermissions(destination, manifest.entrypoints.cli.path);
|
|
107
|
+
// Verify the promoted tree a second time before it can be used.
|
|
108
|
+
await verifyRuntimePayload(path.join(destination, "payload"), manifest);
|
|
109
|
+
return {
|
|
110
|
+
runtime_id: `sha256:${staging.runtimeId}`,
|
|
111
|
+
directory: destination,
|
|
112
|
+
manifest,
|
|
113
|
+
cache_hit: false,
|
|
114
|
+
manifest_digest: manifestDigest(manifest),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return useControllerRuntimeById(paths, staging.runtimeId);
|
|
118
|
+
}
|
|
119
|
+
async function quarantineInvalidRuntime(paths, destination, runtimeId) {
|
|
120
|
+
const quarantine = path.join(paths.temporary, `invalid-runtime-${runtimeId}-${randomBytes(6).toString("hex")}`);
|
|
121
|
+
await ensureDir(path.dirname(quarantine));
|
|
122
|
+
await rm(quarantine, { recursive: true, force: true }).catch(() => { });
|
|
123
|
+
try {
|
|
124
|
+
// The promoted bundle tree is read-only (0555/0444); make the root
|
|
125
|
+
// writable so the rename into quarantine is permitted on all platforms.
|
|
126
|
+
await chmod(destination, 0o755).catch(() => { });
|
|
127
|
+
await rename(destination, quarantine);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (error?.code === "ENOENT")
|
|
131
|
+
return;
|
|
132
|
+
throw error;
|
|
133
|
+
}
|
|
134
|
+
// Do not remove the quarantine eagerly; keep the corrupt bytes for
|
|
135
|
+
// diagnostics. A future GC command may reclaim it.
|
|
136
|
+
}
|
|
137
|
+
async function pathExists(file) {
|
|
138
|
+
try {
|
|
139
|
+
await stat(file);
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
if (error?.code === "ENOENT")
|
|
144
|
+
return false;
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async function applyReadOnlyPermissions(directory, cliEntrypoint) {
|
|
149
|
+
if (process.platform === "win32")
|
|
150
|
+
return;
|
|
151
|
+
const stack = [directory];
|
|
152
|
+
while (stack.length > 0) {
|
|
153
|
+
const current = stack.pop();
|
|
154
|
+
const entries = await readdir(current, { withFileTypes: true });
|
|
155
|
+
for (const entry of entries) {
|
|
156
|
+
const absolute = path.join(current, entry.name);
|
|
157
|
+
if (entry.isDirectory()) {
|
|
158
|
+
stack.push(absolute);
|
|
159
|
+
}
|
|
160
|
+
else if (entry.isFile()) {
|
|
161
|
+
const payloadRelative = relativeToPayload(directory, absolute);
|
|
162
|
+
// Only the declared CLI entrypoint becomes executable (0555); sibling
|
|
163
|
+
// files such as .map sources stay read-only (0444) (spec §4.5).
|
|
164
|
+
const isEntrypoint = payloadRelative === cliEntrypoint;
|
|
165
|
+
await chmod(absolute, isEntrypoint ? 0o555 : 0o444);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
await chmod(current, 0o555);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function relativeToPayload(directory, absolute) {
|
|
172
|
+
return path.relative(path.join(directory, "payload"), absolute);
|
|
173
|
+
}
|
|
174
|
+
async function withRuntimeLock(paths, runtimeId, operation) {
|
|
175
|
+
await ensureDir(paths.controllerRuntimeLocks);
|
|
176
|
+
const file = path.join(paths.controllerRuntimeLocks, `${runtimeId}.lock`);
|
|
177
|
+
const owner = randomBytes(12).toString("hex");
|
|
178
|
+
let handle;
|
|
179
|
+
for (let attempt = 0; attempt < 3_000; attempt += 1) {
|
|
180
|
+
try {
|
|
181
|
+
handle = await open(file, "wx", 0o600);
|
|
182
|
+
try {
|
|
183
|
+
await handle.writeFile(`${JSON.stringify({ owner, pid: process.pid, created_at: new Date().toISOString() })}\n`);
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
await handle.close().catch(() => { });
|
|
187
|
+
handle = undefined;
|
|
188
|
+
await removeIfExists(file);
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
if (error?.code !== "EEXIST")
|
|
195
|
+
throw error;
|
|
196
|
+
if (await staleRuntimeLock(file)) {
|
|
197
|
+
if (!await reclaimStaleLock(file, staleRuntimeLock))
|
|
198
|
+
await delay(100);
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
await delay(100);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (!handle) {
|
|
205
|
+
throw new HitchError("timed out waiting for controller runtime lock", {
|
|
206
|
+
code: "controller_runtime_locked",
|
|
207
|
+
exitCode: 5,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
try {
|
|
211
|
+
return await operation();
|
|
212
|
+
}
|
|
213
|
+
finally {
|
|
214
|
+
await handle.close().catch(() => { });
|
|
215
|
+
const current = await readJSON(file, null).catch(() => null);
|
|
216
|
+
if (current?.owner === owner)
|
|
217
|
+
await removeIfExists(file);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
async function staleRuntimeLock(file) {
|
|
221
|
+
let lock;
|
|
222
|
+
try {
|
|
223
|
+
lock = JSON.parse(await readFile(file, "utf8"));
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
try {
|
|
227
|
+
return Date.now() - (await stat(file)).mtimeMs > 2_000;
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (!Number.isInteger(lock?.pid))
|
|
234
|
+
return true;
|
|
235
|
+
try {
|
|
236
|
+
process.kill(lock.pid, 0);
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
return error?.code === "ESRCH";
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
async function loadManifest(directory) {
|
|
244
|
+
const raw = await readJSON(path.join(directory, "manifest.json"), null);
|
|
245
|
+
if (raw === null) {
|
|
246
|
+
throw new ControllerRuntimeIntegrityError(`controller runtime bundle is missing its manifest: ${directory}`);
|
|
247
|
+
}
|
|
248
|
+
return validateControllerRuntimeManifest(raw);
|
|
249
|
+
}
|
|
250
|
+
function manifestDigest(manifest) {
|
|
251
|
+
const encoding = canonicalEncodeManifest({ entrypoints: manifest.entrypoints, files: manifest.files });
|
|
252
|
+
return `sha256:${createHash("sha256").update(encoding).digest("hex")}`;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Verify and return a controller runtime bundle by id. A missing or corrupt
|
|
256
|
+
* expected runtime must not silently fall back to the installed Hitch version
|
|
257
|
+
* (spec §4.6) — it fails with `controller_runtime_integrity_mismatch`.
|
|
258
|
+
*
|
|
259
|
+
* The canonical manifest digest must equal BOTH the manifest's declared
|
|
260
|
+
* `runtime_id` and the directory id, so a runtime id can never be rebound to a
|
|
261
|
+
* different payload: editing the payload and rewriting the manifest's digest
|
|
262
|
+
* field is rejected because the recomputed digest no longer matches the
|
|
263
|
+
* declared `runtime_id` (spec §4.4, §11.1).
|
|
264
|
+
*/
|
|
265
|
+
export async function useControllerRuntimeById(paths, runtimeId) {
|
|
266
|
+
const directory = path.join(paths.controllerRuntimes, runtimeId);
|
|
267
|
+
const manifest = await loadManifest(directory).catch(() => {
|
|
268
|
+
throw new HitchError(`controller runtime integrity mismatch for ${runtimeId}`, {
|
|
269
|
+
code: "controller_runtime_integrity_mismatch",
|
|
270
|
+
exitCode: 5,
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
const expectedId = `sha256:${runtimeId}`;
|
|
274
|
+
const recomputedDigest = manifestDigest(manifest);
|
|
275
|
+
if (manifest.runtime_id !== expectedId || recomputedDigest !== expectedId || recomputedDigest !== manifest.runtime_id) {
|
|
276
|
+
throw new HitchError(`controller runtime integrity mismatch for ${runtimeId}: manifest runtime_id ${manifest.runtime_id} does not match the recomputed identity ${recomputedDigest}`, { code: "controller_runtime_integrity_mismatch", exitCode: 5 });
|
|
277
|
+
}
|
|
278
|
+
try {
|
|
279
|
+
await verifyRuntimePayload(path.join(directory, "payload"), manifest);
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
throw new HitchError(`controller runtime integrity mismatch for ${runtimeId}: ${error.message}`, {
|
|
283
|
+
code: "controller_runtime_integrity_mismatch",
|
|
284
|
+
exitCode: 5,
|
|
285
|
+
cause: error,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
return {
|
|
289
|
+
runtime_id: `sha256:${runtimeId}`,
|
|
290
|
+
directory,
|
|
291
|
+
manifest,
|
|
292
|
+
cache_hit: true,
|
|
293
|
+
manifest_digest: manifestDigest(manifest),
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
export async function writeRuntimeReference(evalDirectory, use) {
|
|
297
|
+
const ref = {
|
|
298
|
+
schema_version: SCHEMA_VERSION,
|
|
299
|
+
storage: "controller-runtime-ref-v1",
|
|
300
|
+
runtime_id: use.runtime_id,
|
|
301
|
+
manifest_digest: use.manifest_digest,
|
|
302
|
+
created_at: new Date().toISOString(),
|
|
303
|
+
};
|
|
304
|
+
const file = path.join(evalDirectory, "runtime.ref.json");
|
|
305
|
+
await atomicWriteJSON(file, ref);
|
|
306
|
+
return file;
|
|
307
|
+
}
|
|
308
|
+
/** Detect which runtime storage kind an eval record uses (spec §4.7, §9). */
|
|
309
|
+
export async function inspectEvalRuntimeKind(evalDirectory) {
|
|
310
|
+
const ref = await readJSON(path.join(evalDirectory, "runtime.ref.json"), null);
|
|
311
|
+
if (ref?.storage === "controller-runtime-ref-v1")
|
|
312
|
+
return "controller-runtime-ref-v1";
|
|
313
|
+
try {
|
|
314
|
+
const info = await stat(path.join(evalDirectory, "runtime"));
|
|
315
|
+
if (info.isDirectory())
|
|
316
|
+
return "embedded-runtime-v1";
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
// Not an embedded runtime.
|
|
320
|
+
}
|
|
321
|
+
return "none";
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/controller-runtime/store.ts"],"names":[],"mappings":"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"}
|