@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.
- package/README.md +87 -73
- package/dist/cli/commands/mcp.d.ts +0 -34
- package/dist/cli/commands/mcp.js +246 -45
- package/dist/cli/commands/method.js +261 -15
- package/dist/cli/commands/prep.js +61 -16
- package/dist/cli/commands/runs.js +103 -9
- package/dist/cli/commands/status.js +4 -2
- package/dist/cli/commands/test.d.ts +10 -0
- package/dist/cli/commands/{verify.js → test.js} +16 -18
- package/dist/cli/commands/web.js +82 -8
- package/dist/cli/commands/wizard.js +36 -37
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +3 -3
- package/dist/compiler-ui/404.html +1 -1
- package/dist/compiler-ui/__next.__PAGE__.txt +5 -5
- package/dist/compiler-ui/__next._full.txt +13 -12
- package/dist/compiler-ui/__next._head.txt +3 -3
- package/dist/compiler-ui/__next._index.txt +5 -4
- package/dist/compiler-ui/__next._tree.txt +4 -3
- package/dist/compiler-ui/_next/static/chunks/01646j7yi.w5a.css +1 -0
- package/dist/compiler-ui/_next/static/chunks/{0n51hrfoufc7g.js → 02f_.8.ebn556.js} +1 -1
- package/dist/compiler-ui/_next/static/chunks/02r7siaw-_p5w.js +1 -0
- package/dist/compiler-ui/_next/static/chunks/{08m7vf5asqlsm.js → 04d0ly-7xb~-j.js} +10 -10
- package/dist/compiler-ui/_next/static/chunks/0fhs9psnxqd8s.js +1 -0
- package/dist/compiler-ui/_next/static/chunks/0mssmhpbifj15.css +2 -0
- package/dist/compiler-ui/_next/static/chunks/0nypu~ddwxari.js +116 -0
- package/dist/compiler-ui/_next/static/chunks/0p3s8iyhgcww2.js +31 -0
- package/dist/compiler-ui/_next/static/chunks/0tjf-vu_rz8s0.css +1 -0
- package/dist/compiler-ui/_next/static/chunks/0u6p3fpbbfgtl.js +1 -0
- package/dist/compiler-ui/_next/static/chunks/0wpx5..8dnh0w.js +1 -0
- package/dist/compiler-ui/_next/static/chunks/0y0uj160p0ts~.js +1 -0
- package/dist/compiler-ui/_next/static/chunks/10t8l~_oenf.c.js +1 -0
- package/dist/compiler-ui/_next/static/chunks/13gz9e7z~imx1.js +5 -0
- package/dist/compiler-ui/_next/static/chunks/156xed-b6czaw.js +1 -0
- package/dist/compiler-ui/_next/static/chunks/{turbopack-0.uq1k8c0j4s..js → turbopack-02-3e_c-yz~5g.js} +1 -1
- package/dist/compiler-ui/_next/static/chunks/{turbopack-10e~t1yzi4svj.js → turbopack-0apv8vb-nczuy.js} +1 -1
- package/dist/compiler-ui/_not-found/__next._full.txt +10 -9
- package/dist/compiler-ui/_not-found/__next._head.txt +3 -3
- package/dist/compiler-ui/_not-found/__next._index.txt +5 -4
- package/dist/compiler-ui/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/dist/compiler-ui/_not-found/__next._not-found.txt +3 -3
- package/dist/compiler-ui/_not-found/__next._tree.txt +3 -2
- package/dist/compiler-ui/_not-found.html +1 -1
- package/dist/compiler-ui/_not-found.txt +10 -9
- package/dist/compiler-ui/index.html +1 -1
- package/dist/compiler-ui/index.txt +13 -12
- package/dist/packages/contracts/lib/schema.d.ts +4 -0
- package/dist/packages/contracts/lib/schema.js +2 -1
- package/dist/packages/engine/action-definitions.d.ts +174 -13
- package/dist/packages/engine/action-definitions.js +125 -122
- package/dist/packages/engine/action-planner.js +4 -11
- package/dist/packages/engine/agents/lib/shells.d.ts +3 -1
- package/dist/packages/engine/agents/lib/shells.js +8 -4
- package/dist/packages/engine/agents/role-executors.js +1 -1
- package/dist/packages/engine/compile/compiled-paths.js +6 -6
- package/dist/packages/engine/connection-config.js +1 -1
- package/dist/packages/engine/execution/lib/schema.d.ts +10 -0
- package/dist/packages/engine/instance-paths.d.ts +15 -9
- package/dist/packages/engine/instance-paths.js +15 -9
- package/dist/packages/engine/lib/schema.d.ts +686 -30
- package/dist/packages/engine/lib/schema.js +48 -21
- package/dist/packages/engine/native-run-handlers.js +10 -8
- package/dist/packages/engine/preparation-store.d.ts +9 -13
- package/dist/packages/engine/preparation-store.js +12 -0
- package/dist/packages/engine/requested-artifacts.d.ts +5 -0
- package/dist/packages/engine/requested-artifacts.js +36 -0
- package/dist/packages/engine/routes.d.ts +1 -1
- package/dist/packages/engine/routes.js +1 -1
- package/dist/packages/engine/run-observability.js +3 -2
- package/dist/packages/engine/runtime-proposal-helpers.d.ts +2 -2
- package/dist/packages/engine/runtime-proposal-helpers.js +5 -7
- package/dist/packages/engine/runtime-resource-builders.d.ts +5 -0
- package/dist/packages/engine/runtime-resource-builders.js +13 -2
- package/dist/packages/engine/runtime.d.ts +3 -1
- package/dist/packages/engine/runtime.js +146 -21
- package/dist/packages/engine/server.js +104 -52
- package/dist/packages/engine/verify/verify-execution.js +1 -1
- package/dist/packages/engine/wire-schemas.d.ts +5 -1
- package/dist/packages/engine/wire-schemas.js +1 -1
- package/dist/packages/methods/authoring/method-authoring.d.ts +3 -1
- package/dist/packages/methods/authoring/method-authoring.js +5 -36
- package/dist/packages/methods/package/builtin-compiled-method.js +1 -1
- package/dist/packages/methods/package/local-methods.d.ts +1 -0
- package/dist/packages/methods/package/local-methods.js +19 -4
- package/dist/packages/methods/package/method-definitions.js +1 -1
- package/dist/packages/project/interf-detect.js +6 -6
- package/dist/packages/project/lib/schema.d.ts +193 -0
- package/dist/packages/project/lib/schema.js +46 -1
- package/dist/packages/project/source-config.js +4 -0
- package/dist/packages/project/source-folders.js +1 -1
- package/package.json +7 -8
- package/public-repo/CONTRIBUTING.md +47 -0
- package/public-repo/LICENSE.md +1 -0
- package/public-repo/README.md +325 -0
- package/public-repo/SECURITY.md +67 -0
- package/public-repo/TRADEMARKS.md +8 -0
- package/{builtin-methods → public-repo/methods}/interf-default/README.md +4 -0
- package/{builtin-methods → public-repo/methods}/interf-default/compile/stages/shape/SKILL.md +4 -8
- package/{builtin-methods → public-repo/methods}/interf-default/method.json +1 -1
- package/public-repo/methods/interf-default/use/query/SKILL.md +23 -0
- package/public-repo/plugins/README.md +9 -0
- package/public-repo/plugins/interf/.claude-plugin/plugin.json +21 -0
- package/public-repo/plugins/interf/.mcp.json +12 -0
- package/public-repo/plugins/interf/README.md +29 -0
- package/public-repo/plugins/interf/skills/interf/SKILL.md +477 -0
- package/public-repo/skills/interf/SKILL.md +477 -0
- package/agent-skills/interf-actions/SKILL.md +0 -185
- package/agent-skills/interf-actions/references/cli.md +0 -243
- package/builtin-methods/interf-default/use/query/SKILL.md +0 -28
- package/dist/cli/commands/verify.d.ts +0 -10
- package/dist/compiler-ui/_next/static/chunks/06yhdspx~ca5-.js +0 -5
- package/dist/compiler-ui/_next/static/chunks/06z~l3kwb891e.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/08g7lvje.te.u.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0_c_tvh-cukjz.css +0 -3
- package/dist/compiler-ui/_next/static/chunks/0_i-3_5l9t2qe.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0b-ywny_j0g~0.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0b52v41o1gixx.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0f_geuwdesg_c.js +0 -114
- package/dist/compiler-ui/_next/static/chunks/0gpzgsv0w.q~m.js +0 -31
- package/dist/compiler-ui/_next/static/chunks/0ilwfezfvu6~-.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0xxmf45eskdt~.css +0 -1
- package/dist/compiler-ui/_next/static/chunks/14wtz~vq25~qq.js +0 -1
- /package/dist/compiler-ui/_next/static/{6qyE1u9m_oBUkvAhhoCmO → tYHMLL9oKds1yDoNYgkPV}/_buildManifest.js +0 -0
- /package/dist/compiler-ui/_next/static/{6qyE1u9m_oBUkvAhhoCmO → tYHMLL9oKds1yDoNYgkPV}/_clientMiddlewareManifest.js +0 -0
- /package/dist/compiler-ui/_next/static/{6qyE1u9m_oBUkvAhhoCmO → tYHMLL9oKds1yDoNYgkPV}/_ssgManifest.js +0 -0
- /package/{builtin-methods → public-repo/methods}/interf-default/compile/stages/structure/SKILL.md +0 -0
- /package/{builtin-methods → public-repo/methods}/interf-default/compile/stages/summarize/SKILL.md +0 -0
- /package/{builtin-methods → public-repo/methods}/interf-default/improve/SKILL.md +0 -0
- /package/{builtin-methods → public-repo/methods}/interf-default/method.schema.json +0 -0
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `interf
|
|
3
|
-
* judge against the latest
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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
|
|
11
|
-
* interf
|
|
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
|
|
46
|
-
command: "
|
|
47
|
-
describe: "
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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);
|
package/dist/cli/commands/web.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
287
|
-
//
|
|
288
|
-
//
|
|
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
|
|
297
|
-
const customOption = { value: "__custom__", label: "Other (type a
|
|
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: "
|
|
301
|
-
options: [...methodOptions, customOption
|
|
302
|
-
initialValue:
|
|
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
|
|
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 = {
|
|
374
|
-
const compileLabel = options.
|
|
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
|
|
378
|
-
? "
|
|
379
|
-
: chalk.dim("
|
|
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: "
|
|
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.
|
|
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.
|
|
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 === "
|
|
433
|
-
if (!options.
|
|
434
|
-
console.log(chalk.yellow(" Cannot
|
|
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
|
|
436
|
+
const id = await pickPreparation(conn, "Which preparation should Interf test?");
|
|
438
437
|
if (id)
|
|
439
|
-
await spawnInterf(["
|
|
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/
|
|
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
|
|
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
|
|
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 /
|
|
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
|
|
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
|
-
|
|
712
|
+
allowAgentRuns = false;
|
|
714
713
|
break;
|
|
715
714
|
}
|
|
716
715
|
// decision === "rerun"
|
|
717
716
|
agents = await fetchAgentSnapshot(conn);
|
|
718
|
-
|
|
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, {
|
|
774
|
+
const next = await showActionMenu(conn, { allowAgentRuns });
|
|
776
775
|
if (next === "exit")
|
|
777
776
|
break;
|
|
778
777
|
}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { agentsCommand } from "./commands/agents.js";
|
|
2
2
|
import { compileCommand } from "./commands/compile.js";
|
|
3
|
-
import {
|
|
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,
|
|
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 {
|
|
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(
|
|
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,
|
|
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-
|
|
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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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[
|
|
3
|
-
3:I[
|
|
4
|
-
6:I[
|
|
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/
|
|
7
|
-
0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/
|
|
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[
|
|
3
|
-
3:I[
|
|
4
|
-
4:I[
|
|
5
|
-
5:I[
|
|
6
|
-
8:I[
|
|
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[
|
|
9
|
-
d:I[
|
|
10
|
-
f:I[
|
|
11
|
-
:HL["/_next/static/chunks/
|
|
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/
|
|
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/
|
|
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
|
|
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[
|
|
3
|
-
3:I[
|
|
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
|
|
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"}
|