@melra/cli 0.3.0-alpha.12 → 0.3.0-alpha.13

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.
@@ -20,10 +20,14 @@
20
20
  * Read `notProven` before quoting a result. This is a black-box check of one
21
21
  * endpoint: it can show that the endpoint governs the effects it is asked for,
22
22
  * and it cannot show that the harness on the other side has no second way to
23
- * reach the same disk.
23
+ * reach the same disk. One exception: against an enforced endpoint it spawned,
24
+ * the suite approves out of band through the shared data directory, because
25
+ * the agent's side may not approve anything there.
24
26
  */
27
+ import { execFile } from "node:child_process";
25
28
  import { randomBytes } from "node:crypto";
26
29
  import { isSea } from "node:sea";
30
+ import { promisify } from "node:util";
27
31
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
28
32
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
29
33
  import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
@@ -61,7 +65,7 @@ const KERNEL_TOOLS = [
61
65
  */
62
66
  function bypassCaveat(mode) {
63
67
  return mode === "enforced"
64
- ? "That the operator's enforced-mode claim is true. The endpoint reports enforced mode and this suite verified the refusals MELRA owns, but whether the harness above it is really sandboxed is a fact about the deployment, not about this endpoint."
68
+ ? "That the operator's enforced-mode claim is true. The endpoint reports enforced mode and this suite verified the refusals MELRA owns, but whether the harness above it is really sandboxed is a fact about the deployment, not about this endpoint. That includes the approvals: `melra approve` counts as out of band because it runs as a process with OS access to the data directory, which is only an operator if the agent has no such access."
65
69
  : "That the harness has no second, ungoverned path to the same systems. A harness holding both a MELRA terminal and a native one makes the kernel optional, and an optional boundary is not a trust boundary. Nothing observable from this side distinguishes the two.";
66
70
  }
67
71
  const NOT_PROVEN = [
@@ -119,7 +123,7 @@ export async function runConformance(options = {}) {
119
123
  name: "melra-conformance",
120
124
  version: PRODUCT_VERSION,
121
125
  });
122
- const target = await connect(client, options);
126
+ const { target, approve } = await connect(client, options);
123
127
  const call = caller(client);
124
128
  const checks = [];
125
129
  const check = async (level, name, run) => {
@@ -147,7 +151,27 @@ export async function runConformance(options = {}) {
147
151
  let mode = "developer";
148
152
  let approvalId;
149
153
  let phrase;
154
+ let actionDigest;
150
155
  let writeTaskId;
156
+ let planReply;
157
+ /**
158
+ * What `melra_execute` needs beside the task id to run an approved effect:
159
+ * the echoed phrase in developer mode, and in enforced mode nothing at all,
160
+ * once an operator has said yes out of band.
161
+ */
162
+ const approveFor = async (reply) => {
163
+ if (mode !== "enforced") {
164
+ return {
165
+ approval: {
166
+ approvalId: field(reply.value, "approval.approvalId"),
167
+ phrase: field(reply.value, "approval.phrase"),
168
+ },
169
+ };
170
+ }
171
+ must(approve !== undefined, "enforced mode needs an out-of-band approver; run without --url, or pass `approve`");
172
+ await approve(field(reply.value, "id"));
173
+ return {};
174
+ };
151
175
  await check(1, "kernel-tools-present", async () => {
152
176
  const listed = (await client.listTools()).tools.map((tool) => tool.name);
153
177
  const missing = KERNEL_TOOLS.filter((tool) => !listed.includes(tool));
@@ -216,8 +240,11 @@ export async function runConformance(options = {}) {
216
240
  // that would.
217
241
  const guarantee = field(reply.value, "contract.executionGuarantee");
218
242
  must(guarantee === "at-most-once", `a gated mutation published the guarantee ${guarantee}`);
243
+ planReply = reply;
219
244
  approvalId = field(reply.value, "approval.approvalId");
220
- phrase = field(reply.value, "approval.phrase");
245
+ actionDigest = field(reply.value, "approval.actionDigest");
246
+ if (mode !== "enforced")
247
+ phrase = field(reply.value, "approval.phrase");
221
248
  must(field(reply.value, "approval.taskId") === writeTaskId, "the approval challenge is not scoped to this task");
222
249
  must(/^[a-f0-9]{64}$/.test(field(reply.value, "approval.actionDigest")), "the approval challenge carries no action digest");
223
250
  return "planning a mutation produced a task-scoped approval challenge";
@@ -228,16 +255,48 @@ export async function runConformance(options = {}) {
228
255
  must(!reply.ok, "a gated mutation executed with no approval at all");
229
256
  return `refused: ${reply.text}`;
230
257
  });
231
- await check(2, "wrong-phrase-is-refused", async () => {
232
- must(writeTaskId !== undefined, "no planned mutation to execute");
233
- must(phrase !== undefined && approvalId !== undefined, "no challenge issued");
234
- const reply = await call("melra_execute", {
235
- taskId: writeTaskId,
236
- approval: { approvalId, phrase: `${phrase} and also this` },
258
+ if (mode !== "enforced") {
259
+ await check(2, "wrong-phrase-is-refused", async () => {
260
+ must(writeTaskId !== undefined, "no planned mutation to execute");
261
+ must(phrase !== undefined && approvalId !== undefined, "no challenge issued");
262
+ const reply = await call("melra_execute", {
263
+ taskId: writeTaskId,
264
+ approval: { approvalId, phrase: `${phrase} and also this` },
265
+ });
266
+ must(!reply.ok, "a gated mutation executed on a phrase that was not the one issued");
267
+ return `refused: ${reply.text}`;
237
268
  });
238
- must(!reply.ok, "a gated mutation executed on a phrase that was not the one issued");
239
- return `refused: ${reply.text}`;
240
- });
269
+ }
270
+ else {
271
+ // A credential the agent is handed proves only that the agent echoed it,
272
+ // so in enforced mode there must be none to echo.
273
+ await check(2, "approval-credential-withheld", async () => {
274
+ must(writeTaskId !== undefined && planReply !== undefined, "no planned mutation");
275
+ const status = await call("melra_task_status", { taskId: writeTaskId });
276
+ must(status.ok, status.text);
277
+ for (const reply of [planReply, status]) {
278
+ must(!hasKey(reply.value, "phrase"), "a reply carries an approval phrase");
279
+ must(!/APPROVE [a-f0-9]{12}/.test(reply.text), "a reply carries an approval phrase by value");
280
+ }
281
+ return "no phrase in the plan or the task record";
282
+ });
283
+ // The phrase MELRA would have issued is computable from the challenge, so
284
+ // an endpoint that still accepted it would be accepting the agent's word.
285
+ await check(2, "in-band-approval-refused", async () => {
286
+ must(writeTaskId !== undefined && approvalId !== undefined && actionDigest !== undefined, "no challenge issued");
287
+ const reply = await call("melra_execute", {
288
+ taskId: writeTaskId,
289
+ approval: { approvalId, phrase: `APPROVE ${actionDigest.slice(0, 12)}` },
290
+ });
291
+ // An endpoint that ran it wrote the probe, and the report has to say so.
292
+ if (reply.ok)
293
+ probeWritten = true;
294
+ must(!reply.ok, "a gated mutation executed on a phrase the agent derived itself");
295
+ const status = await call("melra_task_status", { taskId: writeTaskId });
296
+ must(field(status.value, "status") === "awaiting_approval", "the refused task is no longer awaiting approval");
297
+ return `refused: ${reply.text}`;
298
+ });
299
+ }
241
300
  await check(2, "refused-effects-did-not-happen", async () => {
242
301
  const reply = await call("melra_plan", {
243
302
  goal: "Conformance: confirm the refused write left nothing behind",
@@ -272,10 +331,10 @@ export async function runConformance(options = {}) {
272
331
  });
273
332
  await check(3, "approved-mutation-verifies", async () => {
274
333
  must(writeTaskId !== undefined, "no planned mutation to execute");
275
- must(phrase !== undefined && approvalId !== undefined, "no challenge issued");
334
+ must(planReply !== undefined, "no challenge issued");
276
335
  const reply = await call("melra_execute", {
277
336
  taskId: writeTaskId,
278
- approval: { approvalId, phrase },
337
+ ...(await approveFor(planReply)),
279
338
  });
280
339
  must(reply.ok, reply.text);
281
340
  probeWritten = true;
@@ -322,6 +381,22 @@ export async function runConformance(options = {}) {
322
381
  must(field(reply.value, "certificate.result") === "VERIFIED_SUCCESS", "no verified certificate survived the call");
323
382
  return `receipt ${receipts[0]?.receiptId} for ${receipts[0]?.capability}, still readable after other tasks ran`;
324
383
  });
384
+ // Enforced mode only: in developer mode every approval is in band by
385
+ // definition, and an endpoint older than approval provenance has no field to
386
+ // say so, so the check would only mark it down for its age.
387
+ if (mode === "enforced") {
388
+ await check(3, "approval-provenance-recorded", async () => {
389
+ must(writeTaskId !== undefined, "no executed mutation to read back");
390
+ const reply = await call("melra_receipt", { taskId: writeTaskId });
391
+ must(reply.ok, reply.text);
392
+ const receipts = field(reply.value, "receipts");
393
+ const channel = receipts[0]?.policyDecision?.approval?.channel;
394
+ must(channel === "out_of_band", `the receipt says the approval came ${channel ?? "from nowhere"}, not out_of_band`);
395
+ const certified = field(reply.value, "certificate.approvalChannel");
396
+ must(certified === "out_of_band", `the certificate says ${certified}, not out_of_band`);
397
+ return "receipt and certificate both say out_of_band";
398
+ });
399
+ }
325
400
  // Last, because it is also the cleanup: a destructive effect gated by its own
326
401
  // approval, verified by the file being gone.
327
402
  await check(3, "destructive-effects-are-gated-and-verified", async () => {
@@ -337,10 +412,7 @@ export async function runConformance(options = {}) {
337
412
  must(field(reply.value, "status") === "awaiting_approval", "a destructive effect was not gated");
338
413
  const executed = await call("melra_execute", {
339
414
  taskId: field(reply.value, "id"),
340
- approval: {
341
- approvalId: field(reply.value, "approval.approvalId"),
342
- phrase: field(reply.value, "approval.phrase"),
343
- },
415
+ ...(await approveFor(reply)),
344
416
  });
345
417
  must(executed.ok, executed.text);
346
418
  must(field(executed.value, "task.status") === "verified_success", "the delete did not verify");
@@ -376,11 +448,26 @@ export async function runConformance(options = {}) {
376
448
  failed: level < claim,
377
449
  };
378
450
  }
451
+ /** Whether a key appears anywhere in a reply, however deep. */
452
+ function hasKey(value, key) {
453
+ if (Array.isArray(value))
454
+ return value.some((item) => hasKey(item, key));
455
+ if (value === null || typeof value !== "object")
456
+ return false;
457
+ return Object.entries(value).some(([name, item]) => name === key || hasKey(item, key));
458
+ }
379
459
  async function connect(client, options) {
380
460
  if (options.url !== undefined) {
381
461
  // Forgiving about the one thing people get wrong: `serve --http` prints both
382
- // the console URL and the MCP URL, and only one of them is an endpoint.
383
- const url = new URL(options.url.endsWith("/mcp") ? options.url : `${options.url.replace(/\/$/, "")}/mcp`);
462
+ // the console URL and the MCP URL, and only one of them is an endpoint. The
463
+ // console URL carries `?token=`, so the path is edited as a path and the
464
+ // token, when --token is not given, is taken from the query.
465
+ const url = new URL(options.url);
466
+ if (!url.pathname.endsWith("/mcp"))
467
+ url.pathname = `${url.pathname.replace(/\/$/, "")}/mcp`;
468
+ const token = options.token ?? url.searchParams.get("token") ?? undefined;
469
+ url.search = "";
470
+ options = { ...options, ...(token === undefined ? {} : { token }) };
384
471
  await client.connect(
385
472
  // ponytail: the SDK declares `sessionId?: string` on this transport, which
386
473
  // `exactOptionalPropertyTypes` reads as incompatible with the `Transport`
@@ -394,26 +481,41 @@ async function connect(client, options) {
394
481
  },
395
482
  }),
396
483
  }));
397
- return { transport: "http", url: url.href, authenticated: options.token !== undefined };
484
+ return {
485
+ target: { transport: "http", url: url.href, authenticated: options.token !== undefined },
486
+ ...(options.approve === undefined ? {} : { approve: options.approve }),
487
+ };
398
488
  }
399
489
  const command = options.command ?? process.execPath;
400
- const args = options.args ??
401
- (options.command === undefined && !isSea()
402
- ? // Reproduce how this process was started, loaders included, so the same
403
- // command works from `dist/bin.js` and from `tsx src/index.ts`.
404
- [...process.execArgv, process.argv[1] ?? "", "serve"]
405
- : // A single executable is its own entry point: it takes `serve` directly.
406
- ["serve"]);
490
+ // Reproduce how this process was started, loaders included, so the same
491
+ // command works from `dist/bin.js` and from `tsx src/index.ts`. A single
492
+ // executable is its own entry point and takes the subcommand directly.
493
+ const self = isSea() ? [] : [...process.execArgv, process.argv[1] ?? ""];
494
+ const args = options.args ?? (options.command === undefined ? [...self, "serve"] : ["serve"]);
495
+ const env = options.env ?? inheritedEnvironment();
407
496
  await client.connect(new StdioClientTransport({
408
497
  command,
409
498
  args,
410
499
  // The SDK forwards a small allowlist by default, which would drop every
411
500
  // MELRA_* variable and quietly check a server configured differently from
412
501
  // the one the operator runs. The point is to check *their* endpoint.
413
- env: options.env ?? inheritedEnvironment(),
502
+ env,
414
503
  stderr: "pipe",
415
504
  }));
416
- return { transport: "stdio", command, args };
505
+ // Only a server this suite started is known to share this CLI's data
506
+ // directory, so only then can its own `approve` answer for it. Always in
507
+ // enforced mode, so it can never spend the task's one decision in band, and
508
+ // under the suite's name, so the receipt says who said yes.
509
+ const ownServer = options.command === undefined && options.args === undefined;
510
+ const approve = options.approve ??
511
+ (ownServer
512
+ ? async (taskId) => {
513
+ await promisify(execFile)(process.execPath, [...self, "approve", taskId, "--yes", "--mode", "enforced"], {
514
+ env: { ...env, MELRA_APPROVER: "melra-conformance" },
515
+ });
516
+ }
517
+ : undefined);
518
+ return { target: { transport: "stdio", command, args }, ...(approve === undefined ? {} : { approve }) };
417
519
  }
418
520
  function inheritedEnvironment() {
419
521
  return Object.fromEntries(Object.entries(process.env).filter((entry) => entry[1] !== undefined));
@@ -1 +1 @@
1
- {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,17 @@
1
1
  import type { DeploymentMode } from "@melra/protocol";
2
2
  export interface CliEnvironment {
3
3
  workspaceRoot: string;
4
+ /** MELRA_WORKSPACE was set, so no policy file's `workspaceRoot` replaces it. */
5
+ workspaceSet?: boolean;
4
6
  dataDirectory: string;
7
+ /**
8
+ * `MELRA_APPROVER`, as set: the name `melra approve` records as the
9
+ * approver, as `cli:<name>`. Receipts carry it and an agent can read
10
+ * receipts, so it is a label the operator chooses, never the OS account
11
+ * name. Checked by `approverLabel` only where it is used, so a bad value
12
+ * cannot stop `serve` or `help`.
13
+ */
14
+ approver: string;
5
15
  unhinged: boolean;
6
16
  mode: DeploymentMode;
7
17
  policyPath?: string;
@@ -22,5 +32,7 @@ export declare function serverLaunch(moduleDirectory: string, version: string, s
22
32
  command: string;
23
33
  args: string[];
24
34
  };
35
+ /** The approver as receipts record it: `cli:` and a label nothing can disguise. */
36
+ export declare function approverLabel(env: CliEnvironment): string;
25
37
  export declare function parseCliEnvironment(source: NodeJS.ProcessEnv, defaults?: CliEnvironmentDefaults): CliEnvironment;
26
38
  //# sourceMappingURL=environment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAWD,wBAAgB,YAAY,CAC1B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,gBAAgB,UAAU,GACzB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKrC;AA0CD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,QAAQ,GAAE,sBAGT,GACA,cAAc,CA8DhB"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKtD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAWD,wBAAgB,YAAY,CAC1B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,gBAAgB,UAAU,GACzB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKrC;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAKzD;AA0CD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,QAAQ,GAAE,sBAGT,GACA,cAAc,CAgEhB"}
@@ -5,6 +5,7 @@ import { isAbsolute, join, resolve } from "node:path";
5
5
  import { isSea } from "node:sea";
6
6
  import { deploymentMode } from "@melra/protocol";
7
7
  import { unhingedFromEnvironment } from "@melra/server";
8
+ import { printable } from "./approval-screen.js";
8
9
  // A generated client config has to name a command the client can actually
9
10
  // spawn. `npx` runs the CLI out of its own cache and leaves nothing on PATH,
10
11
  // so `melra` would fail to start for exactly the users who took the shortest
@@ -21,6 +22,13 @@ export function serverLaunch(moduleDirectory, version, singleExecutable = isSea(
21
22
  ? { command: "npx", args: ["-y", `@melra/cli@${version}`, "serve"] }
22
23
  : { command: "melra", args: ["serve"] };
23
24
  }
25
+ /** The approver as receipts record it: `cli:` and a label nothing can disguise. */
26
+ export function approverLabel(env) {
27
+ if (!/^[\p{L}\p{N}_.@-]{1,64}$/u.test(env.approver) || printable(env.approver) !== env.approver) {
28
+ throw new Error("MELRA_APPROVER must be 1 to 64 letters, digits, '.', '_', '@' or '-'");
29
+ }
30
+ return `cli:${env.approver}`;
31
+ }
24
32
  function cdpEndpoint(value) {
25
33
  if (value === undefined)
26
34
  return undefined;
@@ -92,11 +100,17 @@ export function parseCliEnvironment(source, defaults = {
92
100
  throw new Error("browser_cdp_context_requires_endpoint");
93
101
  }
94
102
  return {
95
- workspaceRoot: resolve(source.MELRA_WORKSPACE ?? defaults.cwd),
96
- dataDirectory: resolve(source.MELRA_HOME ?? join(defaults.home, ".melra")),
103
+ // Empty counts as unset for these too: `MELRA_POLICY=${P}` with P unset
104
+ // otherwise names the working directory as the policy file.
105
+ workspaceRoot: resolve(source.MELRA_WORKSPACE?.trim() || defaults.cwd),
106
+ workspaceSet: (source.MELRA_WORKSPACE ?? "").trim() !== "",
107
+ // Empty is unset here too, or the database and payload key would land in
108
+ // the working directory, inside the workspace a confined agent can write.
109
+ dataDirectory: resolve(source.MELRA_HOME?.trim() || join(defaults.home, ".melra")),
110
+ approver: source.MELRA_APPROVER?.trim() || "operator",
97
111
  unhinged: unhingedFromEnvironment(source),
98
112
  mode: deploymentMode(source.MELRA_MODE),
99
- ...(source.MELRA_POLICY === undefined
113
+ ...(source.MELRA_POLICY === undefined || source.MELRA_POLICY.trim() === ""
100
114
  ? {}
101
115
  : { policyPath: resolve(source.MELRA_POLICY) }),
102
116
  // Empty counts as unset, so `MELRA_SOCKET=` in a unit file turns it off
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"human.d.ts","sourceRoot":"","sources":["../src/human.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd;AAmBD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAiDjE;AAoCD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQzD;AAUD,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAuBrD;AAID,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAQ5E;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,CA4DzD;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAyBnE"}
1
+ {"version":3,"file":"human.d.ts","sourceRoot":"","sources":["../src/human.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd;AAqBD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAuDjE;AAoCD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQzD;AAUD,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAuBrD;AAID,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAQ5E;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,CA4DzD;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAyBnE"}
package/dist/human.js CHANGED
@@ -4,6 +4,7 @@
4
4
  // question `setup` asks when nobody named a client. Kept out of `index.ts`
5
5
  // because importing that runs the CLI, and every piece here needs a test.
6
6
  import { createInterface } from "node:readline/promises";
7
+ import { printable } from "./approval-screen.js";
7
8
  import { CLIENTS } from "./clients.js";
8
9
  import { mark, paint, table } from "./output.js";
9
10
  const plural = (count, word) => `${count} ${word}${count === 1 ? "" : "s"}`;
@@ -13,8 +14,10 @@ function clientLine(status) {
13
14
  : status.state === "configured"
14
15
  ? mark("pass")
15
16
  : paint.dim("·");
17
+ // A workspace config file the agent can write names the command these
18
+ // describe, so they are spelled out before they reach the terminal.
16
19
  const extra = [...(status.note === undefined ? [] : [status.note]), ...status.problems];
17
- return [symbol, status.client, status.state, paint.dim(extra.join("; "))];
20
+ return [symbol, status.client, status.state, paint.dim(printable(extra.join("; ")))];
18
21
  }
19
22
  // The one thing to do next, or undefined when there is nothing to fix or the
20
23
  // fix is outside MELRA's reach (a platform without a computer adapter). Fails
@@ -32,12 +35,18 @@ export function nextStep(report) {
32
35
  return "point MELRA_WORKSPACE at a directory you can read and write";
33
36
  case "data-directory":
34
37
  return "point MELRA_HOME at a directory you can write";
38
+ case "data-location":
39
+ return check.detail.startsWith("could not resolve the workspace")
40
+ ? "point MELRA_WORKSPACE at a directory you can read and write"
41
+ : "move MELRA_HOME outside MELRA_WORKSPACE";
35
42
  case "policy":
36
43
  return "fix the policy file's JSON, or unset MELRA_POLICY to use the defaults";
37
44
  case "socket":
38
45
  return "fix or unset MELRA_SOCKET (see the socket line above)";
39
46
  case "isolation":
40
47
  return "run MELRA in the hardened container (https://github.com/XAGI-Lab/melra/blob/main/docs/INSTALLATION.md#docker), or another OS sandbox";
48
+ case "mode":
49
+ return 'drop --unsafe-local, MELRA_UNHINGED and "unhinged" in the policy file, or run in developer mode';
41
50
  case "guardrails":
42
51
  return "unset MELRA_UNHINGED and drop --unsafe-local to turn the guardrails back on";
43
52
  case "browser":
@@ -84,7 +93,7 @@ function summary(report) {
84
93
  ? `${mark("warn")} ${paint.bold(`Ready, with ${plural(warns, "warning")}`)}`
85
94
  : `${mark("pass")} ${paint.bold("Ready")}`;
86
95
  const next = nextStep(report);
87
- return [verdict, ...(next === undefined ? [] : [`Next: ${paint.bold(next)}`])];
96
+ return [verdict, ...(next === undefined ? [] : [`Next: ${paint.bold(printable(next))}`])];
88
97
  }
89
98
  function checkRows(checks, report) {
90
99
  const lines = [];
@@ -133,7 +142,7 @@ export function renderInit(result) {
133
142
  rows.push(["", "", paint.dim(`previous file saved as ${result.backup}`)]);
134
143
  }
135
144
  const next = CLIENTS[result.client]?.next ?? `Restart ${label}, then ask it to use the melra tools.`;
136
- return [table(rows, { indent: 2 }), "", `Next: ${paint.bold(next)}`].join("\n");
145
+ return [table(rows, { indent: 2 }), "", `Next: ${paint.bold(printable(next))}`].join("\n");
137
146
  }
138
147
  const where = result.configPath === undefined
139
148
  ? "Add this to your MCP client's configuration:"
package/dist/human.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"human.js","sourceRoot":"","sources":["../src/human.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,sCAAsC;AAEtC,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAe,MAAM,aAAa,CAAC;AA+B9D,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAE5F,SAAS,UAAU,CAAC,MAAoB;IACtC,MAAM,MAAM,GACV,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACd,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY;YAC7B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxF,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,gDAAgD;AAChD,MAAM,UAAU,QAAQ,CAAC,MAAoB;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,CAAC,KAAkB,EAAsB,EAAE;QACtD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,OAAO,6BAA6B,CAAC;YACvC,KAAK,QAAQ;gBACX,OAAO,qDAAqD,CAAC;YAC/D,KAAK,WAAW;gBACd,OAAO,6DAA6D,CAAC;YACvE,KAAK,gBAAgB;gBACnB,OAAO,+CAA+C,CAAC;YACzD,KAAK,QAAQ;gBACX,OAAO,uEAAuE,CAAC;YACjF,KAAK,QAAQ;gBACX,OAAO,uDAAuD,CAAC;YACjE,KAAK,WAAW;gBACd,OAAO,sIAAsI,CAAC;YAChJ,KAAK,YAAY;gBACf,OAAO,6EAA6E,CAAC;YACvF,KAAK,SAAS;gBACZ,OAAO,gFAAgF,CAAC;YAC1F,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,SAAS,CAAC;gBAC3C,IAAI,MAAM,CAAC,KAAK,KAAK,YAAY;oBAAE,OAAO,4BAA4B,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpF,oEAAoE;gBACpE,wEAAwE;gBACxE,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9F,IAAI,GAAG,KAAK,SAAS;oBAAE,OAAO,GAAG,CAAC;gBAClC,OAAO,MAAM,CAAC,OAAO,KAAK,OAAO;oBAC/B,CAAC,CAAC,sDAAsD;oBACxD,CAAC,CAAC,SAAS,MAAM,CAAC,OAAO,IAAI,wBAAwB,sBAAsB,CAAC;YAChF,CAAC;YACD;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG;QACd,GAAG,KAAK;QACR,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;QACpD,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kEAAkE;AAClE,SAAS,OAAO,CAAC,MAAoB;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,OAAO,GACX,KAAK,GAAG,CAAC;QACP,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;QACnF,CAAC,CAAC,KAAK,GAAG,CAAC;YACT,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;YAC5E,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,SAAS,CAAC,MAAqB,EAAE,MAAoB;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAChC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;QAC7E,OAAO;YACL,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,CAAC,IAAI;YACV,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,EAAE;SAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,OAAO,CAAC;QACvF,EAAE;QACF,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAChC,EAAE;QACF,GAAG,OAAO,CAAC,MAAM,CAAC;KACnB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,MAAwC;IACvD,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7F,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;SAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;IAC7D,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,WAAW,KAAK,uCAAuC,CAAC;QACrG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,KAAK,GACT,MAAM,CAAC,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,8CAA8C;QAChD,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;IACtD,MAAM,OAAO,GACX,MAAM,CAAC,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,8CAA8C,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE;YACzF,YAAY,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,6BAA6B;QACpE,CAAC,CAAC,qCAAqC,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,MAAM,UAAU,CAAC,EAAE,CAAC;IACzG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrG,CAAC;AAED,wEAAwE;AACxE,uEAAuE;AACvE,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,MAAoB;IAClE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC3E,OAAO;QACL,UAAU,CAAC,MAAM,CAAC;QAClB,EAAE;QACF,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,GAAG,OAAO,CAAC,MAAM,CAAC;KACnB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAOD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAY,EACZ,OAAuB;IAEvB,MAAM,OAAO,GAAmB;QAC9B,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;QAC5D,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;QAC5D,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,iCAAiC,EAAE;KAChE,CAAC;IACF,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,2EAA2E;IAC3E,6EAA6E;IAC7E,yBAAyB;IACzB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACtC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,KAAK,EAAE,MAAc,EAA+B,EAAE;QAChE,IAAI,MAAM,EAAE,CAAC;YACX,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,yEAAyE;YACzE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACrB,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClF,CAAC,CAAC;IACF,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,yCAAyC,KAAK,CAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1C,GAAG,KAAK,GAAG,CAAC,GAAG;YACf,KAAK;YACL,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,QAAQ,EAAE,CAAC;SAChE,CAAC,EACF,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,MAAM,CACR,CAAC;QACF,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,MAAgC,CAAC;QACrC,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YAChG,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC3C,MAAM;gBACJ,MAAM,KAAK,EAAE;oBACX,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC;YACvF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9E,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC;YACjE,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC3C,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACrF,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACjF,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAeD,0EAA0E;AAC1E,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACpC,IAAI,KAAK,CAAC,KAAK,EAAE;QACjB,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACvE,MAAM,OAAO,GACX,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO;QAC5B,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE;QAC9B,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,mBAAmB,MAAM,CAAC,OAAO,UAAU,CAAC;IAC5E,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,OAAO,CAAC;QACrF,EAAE;QACF,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC1B,EAAE;QACF,GAAG,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,EAAE;QACtE,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,4BAA4B,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACjF,EAAE;QACF,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC;QACtC,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;KAC5D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"human.js","sourceRoot":"","sources":["../src/human.ts"],"names":[],"mappings":"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"}