@interf/compiler 0.18.0 → 0.21.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 (129) hide show
  1. package/README.md +87 -73
  2. package/dist/cli/commands/mcp.d.ts +0 -34
  3. package/dist/cli/commands/mcp.js +246 -45
  4. package/dist/cli/commands/method.js +261 -15
  5. package/dist/cli/commands/prep.js +61 -16
  6. package/dist/cli/commands/runs.js +103 -9
  7. package/dist/cli/commands/status.js +4 -2
  8. package/dist/cli/commands/test.d.ts +10 -0
  9. package/dist/cli/commands/{verify.js → test.js} +16 -18
  10. package/dist/cli/commands/web.js +82 -8
  11. package/dist/cli/commands/wizard.js +36 -37
  12. package/dist/cli/index.d.ts +2 -2
  13. package/dist/cli/index.js +3 -3
  14. package/dist/compiler-ui/404.html +1 -1
  15. package/dist/compiler-ui/__next.__PAGE__.txt +5 -5
  16. package/dist/compiler-ui/__next._full.txt +13 -12
  17. package/dist/compiler-ui/__next._head.txt +3 -3
  18. package/dist/compiler-ui/__next._index.txt +5 -4
  19. package/dist/compiler-ui/__next._tree.txt +4 -3
  20. package/dist/compiler-ui/_next/static/chunks/01646j7yi.w5a.css +1 -0
  21. package/dist/compiler-ui/_next/static/chunks/{0n51hrfoufc7g.js → 02f_.8.ebn556.js} +1 -1
  22. package/dist/compiler-ui/_next/static/chunks/02r7siaw-_p5w.js +1 -0
  23. package/dist/compiler-ui/_next/static/chunks/{08m7vf5asqlsm.js → 04d0ly-7xb~-j.js} +10 -10
  24. package/dist/compiler-ui/_next/static/chunks/0fhs9psnxqd8s.js +1 -0
  25. package/dist/compiler-ui/_next/static/chunks/0mssmhpbifj15.css +2 -0
  26. package/dist/compiler-ui/_next/static/chunks/0nypu~ddwxari.js +116 -0
  27. package/dist/compiler-ui/_next/static/chunks/0p3s8iyhgcww2.js +31 -0
  28. package/dist/compiler-ui/_next/static/chunks/0tjf-vu_rz8s0.css +1 -0
  29. package/dist/compiler-ui/_next/static/chunks/0u6p3fpbbfgtl.js +1 -0
  30. package/dist/compiler-ui/_next/static/chunks/0wpx5..8dnh0w.js +1 -0
  31. package/dist/compiler-ui/_next/static/chunks/0y0uj160p0ts~.js +1 -0
  32. package/dist/compiler-ui/_next/static/chunks/10t8l~_oenf.c.js +1 -0
  33. package/dist/compiler-ui/_next/static/chunks/13gz9e7z~imx1.js +5 -0
  34. package/dist/compiler-ui/_next/static/chunks/156xed-b6czaw.js +1 -0
  35. package/dist/compiler-ui/_next/static/chunks/{turbopack-0.uq1k8c0j4s..js → turbopack-02-3e_c-yz~5g.js} +1 -1
  36. package/dist/compiler-ui/_next/static/chunks/{turbopack-10e~t1yzi4svj.js → turbopack-0apv8vb-nczuy.js} +1 -1
  37. package/dist/compiler-ui/_not-found/__next._full.txt +10 -9
  38. package/dist/compiler-ui/_not-found/__next._head.txt +3 -3
  39. package/dist/compiler-ui/_not-found/__next._index.txt +5 -4
  40. package/dist/compiler-ui/_not-found/__next._not-found.__PAGE__.txt +2 -2
  41. package/dist/compiler-ui/_not-found/__next._not-found.txt +3 -3
  42. package/dist/compiler-ui/_not-found/__next._tree.txt +3 -2
  43. package/dist/compiler-ui/_not-found.html +1 -1
  44. package/dist/compiler-ui/_not-found.txt +10 -9
  45. package/dist/compiler-ui/index.html +1 -1
  46. package/dist/compiler-ui/index.txt +13 -12
  47. package/dist/packages/contracts/lib/schema.d.ts +4 -0
  48. package/dist/packages/contracts/lib/schema.js +2 -1
  49. package/dist/packages/engine/action-definitions.d.ts +174 -13
  50. package/dist/packages/engine/action-definitions.js +125 -122
  51. package/dist/packages/engine/action-planner.js +4 -11
  52. package/dist/packages/engine/agents/lib/shells.d.ts +3 -1
  53. package/dist/packages/engine/agents/lib/shells.js +8 -4
  54. package/dist/packages/engine/agents/role-executors.js +1 -1
  55. package/dist/packages/engine/compile/compiled-paths.js +6 -6
  56. package/dist/packages/engine/connection-config.js +1 -1
  57. package/dist/packages/engine/execution/lib/schema.d.ts +10 -0
  58. package/dist/packages/engine/instance-paths.d.ts +15 -9
  59. package/dist/packages/engine/instance-paths.js +15 -9
  60. package/dist/packages/engine/lib/schema.d.ts +686 -30
  61. package/dist/packages/engine/lib/schema.js +48 -21
  62. package/dist/packages/engine/native-run-handlers.js +10 -8
  63. package/dist/packages/engine/preparation-store.d.ts +9 -13
  64. package/dist/packages/engine/preparation-store.js +12 -0
  65. package/dist/packages/engine/requested-artifacts.d.ts +5 -0
  66. package/dist/packages/engine/requested-artifacts.js +36 -0
  67. package/dist/packages/engine/routes.d.ts +1 -1
  68. package/dist/packages/engine/routes.js +1 -1
  69. package/dist/packages/engine/run-observability.js +3 -2
  70. package/dist/packages/engine/runtime-proposal-helpers.d.ts +2 -2
  71. package/dist/packages/engine/runtime-proposal-helpers.js +5 -7
  72. package/dist/packages/engine/runtime-resource-builders.d.ts +5 -0
  73. package/dist/packages/engine/runtime-resource-builders.js +13 -2
  74. package/dist/packages/engine/runtime.d.ts +3 -1
  75. package/dist/packages/engine/runtime.js +146 -21
  76. package/dist/packages/engine/server.js +104 -52
  77. package/dist/packages/engine/verify/verify-execution.js +1 -1
  78. package/dist/packages/engine/wire-schemas.d.ts +5 -1
  79. package/dist/packages/engine/wire-schemas.js +1 -1
  80. package/dist/packages/methods/authoring/method-authoring.d.ts +3 -1
  81. package/dist/packages/methods/authoring/method-authoring.js +5 -36
  82. package/dist/packages/methods/package/builtin-compiled-method.js +1 -1
  83. package/dist/packages/methods/package/local-methods.d.ts +1 -0
  84. package/dist/packages/methods/package/local-methods.js +19 -4
  85. package/dist/packages/methods/package/method-definitions.js +1 -1
  86. package/dist/packages/project/interf-detect.js +6 -6
  87. package/dist/packages/project/lib/schema.d.ts +193 -0
  88. package/dist/packages/project/lib/schema.js +46 -1
  89. package/dist/packages/project/source-config.js +4 -0
  90. package/dist/packages/project/source-folders.js +1 -1
  91. package/package.json +7 -8
  92. package/public-repo/CONTRIBUTING.md +47 -0
  93. package/public-repo/LICENSE.md +1 -0
  94. package/public-repo/README.md +325 -0
  95. package/public-repo/SECURITY.md +67 -0
  96. package/public-repo/TRADEMARKS.md +8 -0
  97. package/{builtin-methods → public-repo/methods}/interf-default/README.md +4 -0
  98. package/{builtin-methods → public-repo/methods}/interf-default/compile/stages/shape/SKILL.md +4 -8
  99. package/{builtin-methods → public-repo/methods}/interf-default/method.json +1 -1
  100. package/public-repo/methods/interf-default/use/query/SKILL.md +23 -0
  101. package/public-repo/plugins/README.md +9 -0
  102. package/public-repo/plugins/interf/.claude-plugin/plugin.json +21 -0
  103. package/public-repo/plugins/interf/.mcp.json +12 -0
  104. package/public-repo/plugins/interf/README.md +29 -0
  105. package/public-repo/plugins/interf/skills/interf/SKILL.md +477 -0
  106. package/public-repo/skills/interf/SKILL.md +477 -0
  107. package/agent-skills/interf-actions/SKILL.md +0 -185
  108. package/agent-skills/interf-actions/references/cli.md +0 -243
  109. package/builtin-methods/interf-default/use/query/SKILL.md +0 -28
  110. package/dist/cli/commands/verify.d.ts +0 -10
  111. package/dist/compiler-ui/_next/static/chunks/06yhdspx~ca5-.js +0 -5
  112. package/dist/compiler-ui/_next/static/chunks/06z~l3kwb891e.js +0 -1
  113. package/dist/compiler-ui/_next/static/chunks/08g7lvje.te.u.js +0 -1
  114. package/dist/compiler-ui/_next/static/chunks/0_c_tvh-cukjz.css +0 -3
  115. package/dist/compiler-ui/_next/static/chunks/0_i-3_5l9t2qe.js +0 -1
  116. package/dist/compiler-ui/_next/static/chunks/0b-ywny_j0g~0.js +0 -1
  117. package/dist/compiler-ui/_next/static/chunks/0b52v41o1gixx.js +0 -1
  118. package/dist/compiler-ui/_next/static/chunks/0f_geuwdesg_c.js +0 -114
  119. package/dist/compiler-ui/_next/static/chunks/0gpzgsv0w.q~m.js +0 -31
  120. package/dist/compiler-ui/_next/static/chunks/0ilwfezfvu6~-.js +0 -1
  121. package/dist/compiler-ui/_next/static/chunks/0xxmf45eskdt~.css +0 -1
  122. package/dist/compiler-ui/_next/static/chunks/14wtz~vq25~qq.js +0 -1
  123. /package/dist/compiler-ui/_next/static/{6qyE1u9m_oBUkvAhhoCmO → tYHMLL9oKds1yDoNYgkPV}/_buildManifest.js +0 -0
  124. /package/dist/compiler-ui/_next/static/{6qyE1u9m_oBUkvAhhoCmO → tYHMLL9oKds1yDoNYgkPV}/_clientMiddlewareManifest.js +0 -0
  125. /package/dist/compiler-ui/_next/static/{6qyE1u9m_oBUkvAhhoCmO → tYHMLL9oKds1yDoNYgkPV}/_ssgManifest.js +0 -0
  126. /package/{builtin-methods → public-repo/methods}/interf-default/compile/stages/structure/SKILL.md +0 -0
  127. /package/{builtin-methods → public-repo/methods}/interf-default/compile/stages/summarize/SKILL.md +0 -0
  128. /package/{builtin-methods → public-repo/methods}/interf-default/improve/SKILL.md +0 -0
  129. /package/{builtin-methods → public-repo/methods}/interf-default/method.schema.json +0 -0
@@ -1,14 +1,13 @@
1
1
  /**
2
- * `interf verify <prep-id>` — verify a preparation's claim-checks via a
3
- * judge against the latest compiled portable context (default) or
4
- * against the source folder baseline (`--target source-files`). The
5
- * source-files target reveals how much value the Method actually adds.
6
- * Together with the method's structural checks (auto-run on every
7
- * `interf compile`), this feeds the preparation's overall readiness
8
- * state.
2
+ * `interf test <prep-id>` — run readiness checks for a Preparation via a
3
+ * judge against the latest portable context (default) or against the source
4
+ * baseline (`--target source-files`). The source-files target reveals how
5
+ * much value the Method adds. Together with Method Artifact checks
6
+ * (auto-run on every `interf compile`), this feeds the Preparation's
7
+ * overall readiness state.
9
8
  *
10
- * interf verify bristol
11
- * interf verify bristol --target source-files
9
+ * interf test bristol
10
+ * interf test bristol --target source-files
12
11
  */
13
12
  import chalk from "chalk";
14
13
  import { CONNECT_OR_ERROR_HINT, readActiveConnection } from "../../packages/engine/connection-config.js";
@@ -42,27 +41,26 @@ async function callJson(url, token, init = {}) {
42
41
  }
43
42
  return { status: response.status, body, raw };
44
43
  }
45
- export const verifyCommand = {
46
- command: "verify <prep-id>",
47
- describe: "Verify a preparation's claim-checks against its portable context (or source-files baseline)",
44
+ export const testCommand = {
45
+ command: "test <prep-id>",
46
+ describe: "Run readiness checks against a Preparation's portable context (or source-files baseline)",
48
47
  builder: (yargs) => yargs
49
48
  .positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id" })
50
49
  .option("target", {
51
50
  type: "string",
52
51
  choices: ["compiled", "source-files"],
53
52
  default: "compiled",
54
- describe: "Judge target: 'compiled' (default) checks the portable context, 'source-files' checks the raw source folder baseline",
53
+ describe: "Judge target: 'compiled' (default) checks the portable context, 'source-files' checks the raw Source baseline",
55
54
  })
56
55
  .option("url", { type: "string", describe: "Override the active connection URL" })
57
56
  .option("token", { type: "string", describe: "Override the active bearer token" }),
58
57
  handler: async (args) => {
59
58
  const { url, token } = resolveConnection(args);
60
- // 0.15 hard-error: refuse to start a verify run if the engine has
61
- // zero connected agents — verifier-role stages can't run without
62
- // one.
59
+ // 0.15 hard-error: refuse to start a readiness-check run if the engine
60
+ // has zero connected agents — verifier-role stages can't run without one.
63
61
  const instance = await callJson(`${url}/v1/instance`, token);
64
62
  if (instance.body && instance.body.agent_count === 0) {
65
- console.error(chalk.red(" Cannot verify — no agents available."));
63
+ console.error(chalk.red(" Cannot run readiness checks — no agents available."));
66
64
  console.error(" Install Claude Code, Codex, Gemini, or another agent CLI, or");
67
65
  console.error(" register a custom CLI: `interf agents register <name> --command <cmd>`.");
68
66
  process.exit(1);
@@ -70,7 +68,7 @@ export const verifyCommand = {
70
68
  const target = args.target ?? "compiled";
71
69
  const { status, body, raw } = await callJson(`${url}/v1/preparations/${encodeURIComponent(args.prepId)}/verify-runs`, token, { method: "POST", body: JSON.stringify({ target }) });
72
70
  if (status !== 201 && status !== 200) {
73
- console.error(chalk.red(`Failed to start verify run for ${args.prepId} (HTTP ${status}).`));
71
+ console.error(chalk.red(`Failed to start readiness-check run for ${args.prepId} (HTTP ${status}).`));
74
72
  if (raw)
75
73
  console.error(raw);
76
74
  process.exit(1);
@@ -2,6 +2,7 @@
2
2
  * `interf web` — start the engine in the foreground until Ctrl-C.
3
3
  *
4
4
  * interf web # start on default port; hard error if port busy
5
+ * interf web start # start the engine in the background
5
6
  * interf web stop # send SIGTERM to the running engine
6
7
  * interf web status # print engine info via the connected URL
7
8
  *
@@ -10,11 +11,13 @@
10
11
  * connect without a pointer file.
11
12
  */
12
13
  import chalk from "chalk";
13
- import { readFileSync } from "node:fs";
14
+ import { closeSync, mkdirSync, openSync, readFileSync } from "node:fs";
15
+ import { spawn } from "node:child_process";
16
+ import { dirname } from "node:path";
14
17
  import { LOCAL_SERVICE_DEFAULT_HOST, LOCAL_SERVICE_DEFAULT_PORT, buildLocalServiceUrl, } from "../../packages/engine/routes.js";
15
18
  import { startLocalService } from "../../packages/engine/server.js";
16
19
  import { createNativeLocalServiceRunHandlers } from "../../packages/engine/native-run-handlers.js";
17
- import { CONNECT_OR_ERROR_HINT, clearConnection, readActiveConnection, } from "../../packages/engine/connection-config.js";
20
+ import { CONNECT_OR_ERROR_HINT, clearConnection, readActiveConnection, writeConnection, } from "../../packages/engine/connection-config.js";
18
21
  import { serviceRegistryPath } from "../../packages/engine/instance-paths.js";
19
22
  function packageVersionFromManifest() {
20
23
  try {
@@ -53,12 +56,6 @@ async function runWebForeground(args) {
53
56
  }
54
57
  throw error;
55
58
  }
56
- console.log();
57
- console.log(` Interf engine: ${chalk.bold(service.url)}`);
58
- console.log(` Compiler UI: ${service.url}/`);
59
- console.log(` Health: ${service.url}/health`);
60
- console.log(chalk.dim(" Press Ctrl-C to stop."));
61
- console.log();
62
59
  const shutdown = async () => {
63
60
  try {
64
61
  await service.close();
@@ -68,12 +65,84 @@ async function runWebForeground(args) {
68
65
  }
69
66
  process.exit(0);
70
67
  };
68
+ console.log();
69
+ console.log(` Interf engine: ${chalk.bold(service.url)}`);
70
+ console.log(` Compiler UI: ${service.url}/`);
71
+ console.log(` Health: ${service.url}/health`);
72
+ console.log(chalk.dim(" Press Ctrl-C to stop."));
73
+ console.log();
71
74
  process.on("SIGINT", shutdown);
72
75
  process.on("SIGTERM", shutdown);
73
76
  await new Promise(() => {
74
77
  /* block forever; signals trigger shutdown */
75
78
  });
76
79
  }
80
+ async function isEngineReachable(url) {
81
+ try {
82
+ const response = await fetch(`${url}/health`);
83
+ return response.status === 200;
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }
89
+ async function waitForEngine(url, timeoutMs) {
90
+ const started = Date.now();
91
+ while (Date.now() - started < timeoutMs) {
92
+ if (await isEngineReachable(url))
93
+ return true;
94
+ await new Promise((resolveWait) => setTimeout(resolveWait, 150));
95
+ }
96
+ return false;
97
+ }
98
+ function managedWebLogPath(port) {
99
+ return `${dirname(serviceRegistryPath())}/interf-web-${port}.log`;
100
+ }
101
+ async function runWebStart(args) {
102
+ const host = args.host ?? LOCAL_SERVICE_DEFAULT_HOST;
103
+ const port = args.port ?? LOCAL_SERVICE_DEFAULT_PORT;
104
+ const url = buildLocalServiceUrl({ host, port });
105
+ if (await isEngineReachable(url)) {
106
+ writeConnection({ url, auth_token: null });
107
+ console.log(chalk.green(`Interf engine already running at ${chalk.bold(url)}.`));
108
+ console.log(`Compiler UI: ${url}/`);
109
+ return;
110
+ }
111
+ const binPath = process.argv[1];
112
+ if (!binPath) {
113
+ console.error(chalk.red("Cannot locate the Interf CLI entrypoint for managed start."));
114
+ console.error(`Try running \`interf web\` in a separate terminal instead.`);
115
+ process.exit(1);
116
+ }
117
+ const logPath = args.log ?? managedWebLogPath(port);
118
+ mkdirSync(dirname(logPath), { recursive: true });
119
+ const stdoutFd = openSync(logPath, "a");
120
+ const stderrFd = openSync(logPath, "a");
121
+ let child;
122
+ try {
123
+ child = spawn(process.execPath, [binPath, "web", "--host", host, "--port", String(port)], {
124
+ detached: true,
125
+ stdio: ["ignore", stdoutFd, stderrFd],
126
+ env: process.env,
127
+ });
128
+ child.unref();
129
+ }
130
+ finally {
131
+ closeSync(stdoutFd);
132
+ closeSync(stderrFd);
133
+ }
134
+ const ready = await waitForEngine(url, args.timeoutMs ?? 5000);
135
+ if (!ready) {
136
+ console.error(chalk.red(`Timed out waiting for Interf engine at ${url}.`));
137
+ console.error(`Log: ${logPath}`);
138
+ process.exit(1);
139
+ }
140
+ writeConnection({ url, auth_token: null });
141
+ console.log(chalk.green(`Started Interf engine at ${chalk.bold(url)}.`));
142
+ console.log(`Compiler UI: ${url}/`);
143
+ console.log(`Log: ${logPath}`);
144
+ console.log(chalk.dim(`Stop it with \`interf web stop\`.`));
145
+ }
77
146
  function findEnginePidByUrl(url) {
78
147
  try {
79
148
  const raw = readFileSync(serviceRegistryPath(), "utf8");
@@ -196,6 +265,11 @@ export const webCommand = {
196
265
  command: "web [subcommand]",
197
266
  describe: "Start / stop / inspect the Interf engine",
198
267
  builder: (yargs) => yargs
268
+ .command("start", "Start the engine in the background", (y) => y
269
+ .option("host", { type: "string", default: LOCAL_SERVICE_DEFAULT_HOST, describe: "Host to bind" })
270
+ .option("port", { type: "number", default: LOCAL_SERVICE_DEFAULT_PORT, describe: "Port to bind" })
271
+ .option("timeout-ms", { type: "number", default: 5000, describe: "How long to wait for startup" })
272
+ .option("log", { type: "string", describe: "Path to write background engine logs" }), runWebStart)
199
273
  .command("stop", "Stop the connected engine", (y) => y
200
274
  .option("url", { type: "string", describe: "Override the active connection URL" })
201
275
  .option("token", { type: "string", describe: "Override the active bearer token" }), runWebStop)
@@ -246,7 +246,7 @@ async function promptSourcePath() {
246
246
  }
247
247
  options.push({ value: "__custom__", label: chalk.dim("Type a custom path…") });
248
248
  const choice = await p.select({
249
- message: "Where's the source folder?",
249
+ message: "Where are the source files?",
250
250
  options,
251
251
  initialValue: resolve(cwd),
252
252
  });
@@ -254,7 +254,7 @@ async function promptSourcePath() {
254
254
  return null;
255
255
  if (choice === "__custom__") {
256
256
  const typed = await p.text({
257
- message: "Custom source folder path",
257
+ message: "Custom source path",
258
258
  placeholder: cwd,
259
259
  initialValue: cwd,
260
260
  validate: validateSourcePath,
@@ -283,23 +283,22 @@ async function flowCreatePreparation(conn) {
283
283
  const sourcePath = await promptSourcePath();
284
284
  if (!sourcePath)
285
285
  return null;
286
- // Offer the methods that the connected instance knows about. Method
287
- // binding is OPTIONAL at create time the agent first creates the
288
- // preparation (the unit of agent work) and may pick or draft a method
289
- // for it later.
286
+ // Offer saved Build Plans, but keep selection optional. The agent-first
287
+ // path usually creates the Preparation from requested Artifacts first,
288
+ // then drafts a custom Build Plan for review.
290
289
  const methodsResp = await callJson(`${conn.url}/v1/methods`, conn.token);
291
290
  const methods = methodsResp.body?.methods ?? [];
292
291
  const methodOptions = methods
293
292
  .map((m) => ({ value: m.method_id ?? m.id ?? "", label: `${m.method_id ?? m.id ?? "(?)"}${m.label ? ` — ${m.label}` : ""}` }))
294
293
  .filter((opt) => opt.value !== "");
295
294
  let methodId = null;
296
- const skipOption = { value: "__skip__", label: chalk.dim("Skip — pick or draft a method later") };
297
- const customOption = { value: "__custom__", label: "Other (type a method id)" };
295
+ const skipOption = { value: "__skip__", label: chalk.dim("Skip — pick or draft a Build Plan later") };
296
+ const customOption = { value: "__custom__", label: "Other (type a Build Plan / Method id)" };
298
297
  if (methodOptions.length > 0) {
299
298
  const chosen = await p.select({
300
- message: "Pick a method (optional — you can do this later)",
301
- options: [...methodOptions, customOption, skipOption],
302
- initialValue: methodOptions.find((o) => o.value === "interf-default")?.value ?? methodOptions[0]?.value,
299
+ message: "Select a Build Plan (optional — you can do this later)",
300
+ options: [skipOption, ...methodOptions, customOption],
301
+ initialValue: skipOption.value,
303
302
  });
304
303
  if (p.isCancel(chosen))
305
304
  return null;
@@ -308,7 +307,7 @@ async function flowCreatePreparation(conn) {
308
307
  }
309
308
  else if (chosen === "__custom__") {
310
309
  const typed = await p.text({
311
- message: "Method id",
310
+ message: "Build Plan / Method id",
312
311
  placeholder: "interf-default",
313
312
  });
314
313
  if (p.isCancel(typed))
@@ -321,17 +320,17 @@ async function flowCreatePreparation(conn) {
321
320
  }
322
321
  else {
323
322
  const choose = await p.select({
324
- message: "No methods registered yet — pick a method id?",
323
+ message: "No saved Build Plans registered yet — pick an id?",
325
324
  options: [
326
- { value: "__type__", label: "Type a method id" },
327
325
  skipOption,
326
+ { value: "__type__", label: "Type a Build Plan / Method id" },
328
327
  ],
329
328
  });
330
329
  if (p.isCancel(choose))
331
330
  return null;
332
331
  if (choose === "__type__") {
333
332
  const typed = await p.text({
334
- message: "Method id",
333
+ message: "Build Plan / Method id",
335
334
  initialValue: "interf-default",
336
335
  });
337
336
  if (p.isCancel(typed))
@@ -363,20 +362,20 @@ async function pickPreparation(conn, message) {
363
362
  message,
364
363
  options: list.map((prep) => ({
365
364
  value: prep.id,
366
- label: `${prep.id} ${chalk.dim(`(${prep.method_id} · ${prep.readiness?.status ?? "—"})`)}`,
365
+ label: `${prep.id} ${chalk.dim(`(${prep.method_id ?? "no Build Plan"} · ${prep.readiness?.status ?? "—"})`)}`,
367
366
  })),
368
367
  });
369
368
  if (p.isCancel(choice))
370
369
  return null;
371
370
  return String(choice);
372
371
  }
373
- async function showActionMenu(conn, options = { allowCompileVerify: true }) {
374
- const compileLabel = options.allowCompileVerify
372
+ async function showActionMenu(conn, options = { allowAgentRuns: true }) {
373
+ const compileLabel = options.allowAgentRuns
375
374
  ? "Compile a preparation"
376
375
  : chalk.dim("Compile a preparation (no agents available)");
377
- const verifyLabel = options.allowCompileVerify
378
- ? "Verify a preparation's claim-checks"
379
- : chalk.dim("Verify (no agents available)");
376
+ const testLabel = options.allowAgentRuns
377
+ ? "Run readiness checks"
378
+ : chalk.dim("Readiness checks (no agents available)");
380
379
  const action = await p.select({
381
380
  message: "What do you want to do?",
382
381
  options: [
@@ -385,7 +384,7 @@ async function showActionMenu(conn, options = { allowCompileVerify: true }) {
385
384
  { value: "create", label: "Create a new preparation" },
386
385
  { value: "agents", label: "Manage agents (list / register / role-map)" },
387
386
  { value: "compile", label: compileLabel },
388
- { value: "verify", label: verifyLabel },
387
+ { value: "test", label: testLabel },
389
388
  { value: "stop", label: "Stop the local engine" },
390
389
  { value: "quit", label: "Quit" },
391
390
  ],
@@ -403,7 +402,7 @@ async function showActionMenu(conn, options = { allowCompileVerify: true }) {
403
402
  if (action === "create") {
404
403
  const newId = await flowCreatePreparation(conn);
405
404
  if (newId) {
406
- if (!options.allowCompileVerify) {
405
+ if (!options.allowAgentRuns) {
407
406
  console.log(chalk.dim(" Skipping compile prompt — no agents available. Install one then run `interf compile " +
408
407
  newId +
409
408
  "`."));
@@ -418,7 +417,7 @@ async function showActionMenu(conn, options = { allowCompileVerify: true }) {
418
417
  return "continue";
419
418
  }
420
419
  if (action === "compile") {
421
- if (!options.allowCompileVerify) {
420
+ if (!options.allowAgentRuns) {
422
421
  console.log(chalk.yellow(" Cannot compile — no agents available."));
423
422
  console.log(" Install Claude Code, Codex, Gemini, or another agent CLI, or");
424
423
  console.log(" register a custom CLI: `interf agents register <name> --command <cmd>`.");
@@ -429,14 +428,14 @@ async function showActionMenu(conn, options = { allowCompileVerify: true }) {
429
428
  await spawnInterf(["compile", id]);
430
429
  return "continue";
431
430
  }
432
- if (action === "verify") {
433
- if (!options.allowCompileVerify) {
434
- console.log(chalk.yellow(" Cannot verify — no agents available."));
431
+ if (action === "test") {
432
+ if (!options.allowAgentRuns) {
433
+ console.log(chalk.yellow(" Cannot run readiness checks — no agents available."));
435
434
  return "continue";
436
435
  }
437
- const id = await pickPreparation(conn, "Which preparation to verify?");
436
+ const id = await pickPreparation(conn, "Which preparation should Interf test?");
438
437
  if (id)
439
- await spawnInterf(["verify", id]);
438
+ await spawnInterf(["test", id]);
440
439
  return "continue";
441
440
  }
442
441
  if (action === "ui") {
@@ -471,14 +470,14 @@ async function showActionMenu(conn, options = { allowCompileVerify: true }) {
471
470
  * Agent install-cards menu shown when the connected engine has zero
472
471
  * detected + registered agents. Returns:
473
472
  * - "rerun" → user installed an agent and wants to retry detection
474
- * - "skip" → continue in UI-only mode (no compile/verify)
473
+ * - "skip" → continue in UI-only mode (no compile/test)
475
474
  * - "quit" → exit
476
475
  */
477
476
  async function showAgentInstallCards() {
478
477
  console.log();
479
478
  console.log(chalk.yellow(" No agents detected."));
480
479
  console.log();
481
- console.log(" Interf needs at least one agent to compile and verify preparations.");
480
+ console.log(" Interf needs at least one agent to compile source files and run readiness checks.");
482
481
  console.log();
483
482
  const choice = await p.select({
484
483
  message: "How do you want to proceed?",
@@ -657,7 +656,7 @@ async function runWizard(args) {
657
656
  }
658
657
  // 0.15 — surface the connected agents up front. When zero are
659
658
  // detected, run the install-cards menu before letting the user
660
- // try to compile / verify.
659
+ // try to compile or run readiness checks.
661
660
  let agents = await fetchAgentSnapshot(conn);
662
661
  if (agents && !agents.engineSupportsAgents) {
663
662
  console.log();
@@ -668,7 +667,7 @@ async function runWizard(args) {
668
667
  message: "Restart the engine now to pick up new features?",
669
668
  options: [
670
669
  { value: "restart", label: "Yes — stop old engine, start new one" },
671
- { value: "continue", label: chalk.dim("No — continue with limited features (no agents UI / compile / verify)") },
670
+ { value: "continue", label: chalk.dim("No — continue with limited features (no agents UI / compile / test)") },
672
671
  { value: "quit", label: "Quit" },
673
672
  ],
674
673
  initialValue: "restart",
@@ -700,7 +699,7 @@ async function runWizard(args) {
700
699
  return 0;
701
700
  return snapshot.agents.filter((agent) => agent.available !== false).length;
702
701
  }
703
- let allowCompileVerify = installedAgentCount(agents) > 0;
702
+ let allowAgentRuns = installedAgentCount(agents) > 0;
704
703
  while (agents &&
705
704
  agents.engineSupportsAgents &&
706
705
  installedAgentCount(agents) === 0) {
@@ -710,12 +709,12 @@ async function runWizard(args) {
710
709
  return;
711
710
  }
712
711
  if (decision === "skip") {
713
- allowCompileVerify = false;
712
+ allowAgentRuns = false;
714
713
  break;
715
714
  }
716
715
  // decision === "rerun"
717
716
  agents = await fetchAgentSnapshot(conn);
718
- allowCompileVerify = installedAgentCount(agents) > 0;
717
+ allowAgentRuns = installedAgentCount(agents) > 0;
719
718
  }
720
719
  if (agents && agents.engineSupportsAgents && installedAgentCount(agents) > 0) {
721
720
  // Always confirm the active agent before the action menu. Pre-select
@@ -772,7 +771,7 @@ async function runWizard(args) {
772
771
  }
773
772
  for (;;) {
774
773
  console.log();
775
- const next = await showActionMenu(conn, { allowCompileVerify });
774
+ const next = await showActionMenu(conn, { allowAgentRuns });
776
775
  if (next === "exit")
777
776
  break;
778
777
  }
@@ -1,6 +1,6 @@
1
1
  import { agentsCommand } from "./commands/agents.js";
2
2
  import { compileCommand } from "./commands/compile.js";
3
- import { verifyCommand } from "./commands/verify.js";
3
+ import { testCommand } from "./commands/test.js";
4
4
  import { doctorCommand } from "./commands/doctor.js";
5
5
  import { methodCommand } from "./commands/method.js";
6
6
  import { mcpCommand } from "./commands/mcp.js";
@@ -22,4 +22,4 @@ export declare function runCli(argv?: string[]): {
22
22
  _: (string | number)[];
23
23
  $0: string;
24
24
  }>;
25
- export { initCommand, compileCommand, verifyCommand, agentsCommand, doctorCommand, methodCommand, mcpCommand, runsCommand, statusCommand, resetCommand, webCommand, prepCommand, loginCommand, logoutCommand, wizardCommand, };
25
+ export { initCommand, compileCommand, testCommand, agentsCommand, doctorCommand, methodCommand, mcpCommand, runsCommand, statusCommand, resetCommand, webCommand, prepCommand, loginCommand, logoutCommand, wizardCommand, };
package/dist/cli/index.js CHANGED
@@ -2,7 +2,7 @@ import yargs from "yargs";
2
2
  import { hideBin } from "yargs/helpers";
3
3
  import { agentsCommand } from "./commands/agents.js";
4
4
  import { compileCommand } from "./commands/compile.js";
5
- import { verifyCommand } from "./commands/verify.js";
5
+ import { testCommand } from "./commands/test.js";
6
6
  import { doctorCommand } from "./commands/doctor.js";
7
7
  import { methodCommand } from "./commands/method.js";
8
8
  import { mcpCommand } from "./commands/mcp.js";
@@ -20,7 +20,7 @@ export function buildCli(argv = hideBin(process.argv)) {
20
20
  .command(wizardCommand)
21
21
  .command(initCommand)
22
22
  .command(compileCommand)
23
- .command(verifyCommand)
23
+ .command(testCommand)
24
24
  .command(agentsCommand)
25
25
  .command(doctorCommand)
26
26
  .command(methodCommand)
@@ -39,4 +39,4 @@ export function buildCli(argv = hideBin(process.argv)) {
39
39
  export function runCli(argv = hideBin(process.argv)) {
40
40
  return buildCli(argv).parse();
41
41
  }
42
- export { initCommand, compileCommand, verifyCommand, agentsCommand, doctorCommand, methodCommand, mcpCommand, runsCommand, statusCommand, resetCommand, webCommand, prepCommand, loginCommand, logoutCommand, wizardCommand, };
42
+ export { initCommand, compileCommand, testCommand, agentsCommand, doctorCommand, methodCommand, mcpCommand, runsCommand, statusCommand, resetCommand, webCommand, prepCommand, loginCommand, logoutCommand, wizardCommand, };
@@ -1 +1 @@
1
- <!DOCTYPE html><html class="dark geistsans_d5a4f12f-module__iZqIaq__variable geistmono_157ca88a-module__uNhmwG__variable" lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0_c_tvh-cukjz.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0gpzgsv0w.q~m.js"/><script src="/_next/static/chunks/06yhdspx~ca5-.js" async=""></script><script src="/_next/static/chunks/0ilwfezfvu6~-.js" async=""></script><script src="/_next/static/chunks/turbopack-0.uq1k8c0j4s..js" async=""></script><script src="/_next/static/chunks/06z~l3kwb891e.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Interf Compiler</title><meta name="description" content="Local Interf workspace for Preparations, Methods, runs, readiness checks, and portable context."/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/0gpzgsv0w.q~m.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[26439,[\"/_next/static/chunks/06z~l3kwb891e.js\"],\"default\"]\n3:I[99569,[\"/_next/static/chunks/06z~l3kwb891e.js\"],\"default\"]\n4:I[26890,[\"/_next/static/chunks/06z~l3kwb891e.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[26890,[\"/_next/static/chunks/06z~l3kwb891e.js\"],\"ViewportBoundary\"]\na:I[26890,[\"/_next/static/chunks/06z~l3kwb891e.js\"],\"MetadataBoundary\"]\nc:I[28946,[\"/_next/static/chunks/06z~l3kwb891e.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0_c_tvh-cukjz.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0_c_tvh-cukjz.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/06z~l3kwb891e.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"className\":\"dark geistsans_d5a4f12f-module__iZqIaq__variable geistmono_157ca88a-module__uNhmwG__variable\",\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0_c_tvh-cukjz.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"6qyE1u9m_oBUkvAhhoCmO\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Interf Compiler\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Local Interf workspace for Preparations, Methods, runs, readiness checks, and portable context.\"}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html class="dark geistsans_d5a4f12f-module__aLrMWa__variable geistmono_157ca88a-module__emspPq__variable" lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0mssmhpbifj15.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/0tjf-vu_rz8s0.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0p3s8iyhgcww2.js"/><script src="/_next/static/chunks/13gz9e7z~imx1.js" async=""></script><script src="/_next/static/chunks/02r7siaw-_p5w.js" async=""></script><script src="/_next/static/chunks/turbopack-02-3e_c-yz~5g.js" async=""></script><script src="/_next/static/chunks/0y0uj160p0ts~.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Interf Compiler</title><meta name="description" content="Local Interf instance for Preparations, Methods, runs, readiness checks, and portable context."/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/0p3s8iyhgcww2.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[6181,[\"/_next/static/chunks/0y0uj160p0ts~.js\"],\"default\"]\n3:I[81209,[\"/_next/static/chunks/0y0uj160p0ts~.js\"],\"default\"]\n4:I[99198,[\"/_next/static/chunks/0y0uj160p0ts~.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[99198,[\"/_next/static/chunks/0y0uj160p0ts~.js\"],\"ViewportBoundary\"]\na:I[99198,[\"/_next/static/chunks/0y0uj160p0ts~.js\"],\"MetadataBoundary\"]\nc:I[87374,[\"/_next/static/chunks/0y0uj160p0ts~.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0mssmhpbifj15.css\",\"style\"]\n:HL[\"/_next/static/chunks/0tjf-vu_rz8s0.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0mssmhpbifj15.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0tjf-vu_rz8s0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0y0uj160p0ts~.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"className\":\"dark geistsans_d5a4f12f-module__aLrMWa__variable geistmono_157ca88a-module__emspPq__variable\",\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0mssmhpbifj15.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0tjf-vu_rz8s0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"tYHMLL9oKds1yDoNYgkPV\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Interf Compiler\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Local Interf instance for Preparations, Methods, runs, readiness checks, and portable context.\"}]]\n"])</script></body></html>
@@ -1,10 +1,10 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[419,["/_next/static/chunks/06z~l3kwb891e.js"],"ClientPageRoot"]
3
- 3:I[12562,["/_next/static/chunks/06z~l3kwb891e.js","/_next/static/chunks/0b-ywny_j0g~0.js","/_next/static/chunks/0_i-3_5l9t2qe.js","/_next/static/chunks/0f_geuwdesg_c.js","/_next/static/chunks/08m7vf5asqlsm.js"],"default"]
4
- 6:I[26890,["/_next/static/chunks/06z~l3kwb891e.js"],"OutletBoundary"]
2
+ 2:I[87802,["/_next/static/chunks/0y0uj160p0ts~.js"],"ClientPageRoot"]
3
+ 3:I[98878,["/_next/static/chunks/0y0uj160p0ts~.js","/_next/static/chunks/156xed-b6czaw.js","/_next/static/chunks/0wpx5..8dnh0w.js","/_next/static/chunks/0nypu~ddwxari.js","/_next/static/chunks/04d0ly-7xb~-j.js"],"default"]
4
+ 6:I[99198,["/_next/static/chunks/0y0uj160p0ts~.js"],"OutletBoundary"]
5
5
  7:"$Sreact.suspense"
6
- :HL["/_next/static/chunks/0xxmf45eskdt~.css","style"]
7
- 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0xxmf45eskdt~.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/0b-ywny_j0g~0.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0_i-3_5l9t2qe.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/0f_geuwdesg_c.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/08m7vf5asqlsm.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"6qyE1u9m_oBUkvAhhoCmO"}
6
+ :HL["/_next/static/chunks/01646j7yi.w5a.css","style"]
7
+ 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/01646j7yi.w5a.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/156xed-b6czaw.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0wpx5..8dnh0w.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/0nypu~ddwxari.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04d0ly-7xb~-j.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"tYHMLL9oKds1yDoNYgkPV"}
8
8
  4:{}
9
9
  5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
10
10
  8:null
@@ -1,20 +1,21 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[26439,["/_next/static/chunks/06z~l3kwb891e.js"],"default"]
3
- 3:I[99569,["/_next/static/chunks/06z~l3kwb891e.js"],"default"]
4
- 4:I[419,["/_next/static/chunks/06z~l3kwb891e.js"],"ClientPageRoot"]
5
- 5:I[12562,["/_next/static/chunks/06z~l3kwb891e.js","/_next/static/chunks/0b-ywny_j0g~0.js","/_next/static/chunks/0_i-3_5l9t2qe.js","/_next/static/chunks/0f_geuwdesg_c.js","/_next/static/chunks/08m7vf5asqlsm.js"],"default"]
6
- 8:I[26890,["/_next/static/chunks/06z~l3kwb891e.js"],"OutletBoundary"]
2
+ 2:I[6181,["/_next/static/chunks/0y0uj160p0ts~.js"],"default"]
3
+ 3:I[81209,["/_next/static/chunks/0y0uj160p0ts~.js"],"default"]
4
+ 4:I[87802,["/_next/static/chunks/0y0uj160p0ts~.js"],"ClientPageRoot"]
5
+ 5:I[98878,["/_next/static/chunks/0y0uj160p0ts~.js","/_next/static/chunks/156xed-b6czaw.js","/_next/static/chunks/0wpx5..8dnh0w.js","/_next/static/chunks/0nypu~ddwxari.js","/_next/static/chunks/04d0ly-7xb~-j.js"],"default"]
6
+ 8:I[99198,["/_next/static/chunks/0y0uj160p0ts~.js"],"OutletBoundary"]
7
7
  9:"$Sreact.suspense"
8
- b:I[26890,["/_next/static/chunks/06z~l3kwb891e.js"],"ViewportBoundary"]
9
- d:I[26890,["/_next/static/chunks/06z~l3kwb891e.js"],"MetadataBoundary"]
10
- f:I[28946,["/_next/static/chunks/06z~l3kwb891e.js"],"default",1]
11
- :HL["/_next/static/chunks/0_c_tvh-cukjz.css","style"]
8
+ b:I[99198,["/_next/static/chunks/0y0uj160p0ts~.js"],"ViewportBoundary"]
9
+ d:I[99198,["/_next/static/chunks/0y0uj160p0ts~.js"],"MetadataBoundary"]
10
+ f:I[87374,["/_next/static/chunks/0y0uj160p0ts~.js"],"default",1]
11
+ :HL["/_next/static/chunks/0mssmhpbifj15.css","style"]
12
+ :HL["/_next/static/chunks/0tjf-vu_rz8s0.css","style"]
12
13
  :HL["/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
13
14
  :HL["/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
- :HL["/_next/static/chunks/0xxmf45eskdt~.css","style"]
15
- 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0_c_tvh-cukjz.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06z~l3kwb891e.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"className":"dark geistsans_d5a4f12f-module__iZqIaq__variable geistmono_157ca88a-module__uNhmwG__variable","lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0xxmf45eskdt~.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/0b-ywny_j0g~0.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0_i-3_5l9t2qe.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/0f_geuwdesg_c.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/08m7vf5asqlsm.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0_c_tvh-cukjz.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"6qyE1u9m_oBUkvAhhoCmO"}
15
+ :HL["/_next/static/chunks/01646j7yi.w5a.css","style"]
16
+ 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0mssmhpbifj15.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/chunks/0tjf-vu_rz8s0.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/0y0uj160p0ts~.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"className":"dark geistsans_d5a4f12f-module__aLrMWa__variable geistmono_157ca88a-module__emspPq__variable","lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/01646j7yi.w5a.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/156xed-b6czaw.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0wpx5..8dnh0w.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/0nypu~ddwxari.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04d0ly-7xb~-j.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0mssmhpbifj15.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/chunks/0tjf-vu_rz8s0.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"tYHMLL9oKds1yDoNYgkPV"}
16
17
  6:{}
17
18
  7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
18
19
  c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
19
20
  a:null
20
- e:[["$","title","0",{"children":"Interf Compiler"}],["$","meta","1",{"name":"description","content":"Local Interf workspace for Preparations, Methods, runs, readiness checks, and portable context."}]]
21
+ e:[["$","title","0",{"children":"Interf Compiler"}],["$","meta","1",{"name":"description","content":"Local Interf instance for Preparations, Methods, runs, readiness checks, and portable context."}]]
@@ -1,5 +1,5 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[26890,["/_next/static/chunks/06z~l3kwb891e.js"],"ViewportBoundary"]
3
- 3:I[26890,["/_next/static/chunks/06z~l3kwb891e.js"],"MetadataBoundary"]
2
+ 2:I[99198,["/_next/static/chunks/0y0uj160p0ts~.js"],"ViewportBoundary"]
3
+ 3:I[99198,["/_next/static/chunks/0y0uj160p0ts~.js"],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
- 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Interf Compiler"}],["$","meta","1",{"name":"description","content":"Local Interf workspace for Preparations, Methods, runs, readiness checks, and portable context."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"6qyE1u9m_oBUkvAhhoCmO"}
5
+ 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Interf Compiler"}],["$","meta","1",{"name":"description","content":"Local Interf instance for Preparations, Methods, runs, readiness checks, and portable context."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"tYHMLL9oKds1yDoNYgkPV"}