@interf/compiler 0.16.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/LICENSE.md +1 -0
- package/README.md +90 -73
- package/TRADEMARKS.md +4 -4
- 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 +116 -15
- 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} +24 -17
- package/dist/cli/commands/web.js +82 -8
- package/dist/cli/commands/wizard.js +158 -51
- 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/index.d.ts +2 -2
- package/dist/packages/contracts/index.js +1 -1
- package/dist/packages/contracts/lib/schema.d.ts +275 -72
- package/dist/packages/contracts/lib/schema.js +244 -83
- 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 +15 -5
- package/dist/packages/engine/agents/lib/shells.js +134 -123
- package/dist/packages/engine/agents/role-executors.js +1 -1
- package/dist/packages/engine/cloud-seams.d.ts +115 -0
- package/dist/packages/engine/cloud-seams.js +84 -0
- package/dist/packages/engine/compile/artifact-counts.d.ts +1 -1
- package/dist/packages/engine/compile/artifact-counts.js +3 -3
- package/dist/packages/engine/compile/artifact-status.d.ts +41 -0
- package/dist/packages/engine/compile/artifact-status.js +166 -0
- package/dist/packages/engine/compile/billing-events.d.ts +89 -0
- package/dist/packages/engine/compile/billing-events.js +74 -0
- package/dist/packages/engine/compile/check-evaluator.d.ts +66 -0
- package/dist/packages/engine/compile/check-evaluator.js +298 -0
- package/dist/packages/engine/compile/compiled-paths.js +6 -6
- package/dist/packages/engine/compile/compiled-schema.d.ts +7 -17
- package/dist/packages/engine/compile/compiled-schema.js +55 -70
- package/dist/packages/engine/compile/compiled-stage-plan.d.ts +1 -0
- package/dist/packages/engine/compile/compiled-stage-plan.js +32 -15
- package/dist/packages/engine/compile/compiled-stage-runner.js +1 -1
- package/dist/packages/engine/compile/index.d.ts +0 -1
- package/dist/packages/engine/compile/index.js +0 -1
- package/dist/packages/engine/compile/lib/schema.d.ts +111 -92
- package/dist/packages/engine/compile/lib/schema.js +35 -39
- package/dist/packages/engine/compile/method-primitives.d.ts +2 -2
- package/dist/packages/engine/compile/method-primitives.js +1 -1
- package/dist/packages/engine/compile/reset.js +4 -4
- package/dist/packages/engine/compile/runtime-contracts.js +2 -1
- package/dist/packages/engine/compile/runtime-prompt.js +3 -2
- package/dist/packages/engine/compile/runtime-reconcile.js +35 -35
- package/dist/packages/engine/compile/runtime-runs.js +0 -1
- package/dist/packages/engine/compile/runtime-types.d.ts +7 -8
- package/dist/packages/engine/compile/runtime.d.ts +1 -2
- package/dist/packages/engine/compile/runtime.js +0 -1
- package/dist/packages/engine/compile/state-health.js +6 -6
- package/dist/packages/engine/compile/state-view.js +7 -6
- package/dist/packages/engine/compile/validate-compiled.js +61 -30
- package/dist/packages/engine/compile/validate.js +26 -24
- package/dist/packages/engine/connection-config.js +1 -1
- package/dist/packages/engine/execution/lib/schema.d.ts +89 -33
- package/dist/packages/engine/execution/lib/schema.js +13 -5
- package/dist/packages/engine/index.d.ts +2 -2
- package/dist/packages/engine/index.js +1 -1
- 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 +1316 -351
- package/dist/packages/engine/lib/schema.js +99 -36
- package/dist/packages/engine/native-run-handlers.js +25 -15
- package/dist/packages/engine/preparation-store.d.ts +9 -7
- package/dist/packages/engine/preparation-store.js +20 -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 +7 -1
- package/dist/packages/engine/routes.js +7 -1
- package/dist/packages/engine/run-observability.js +4 -4
- package/dist/packages/engine/runtime-event-applier.js +7 -0
- package/dist/packages/engine/runtime-proposal-helpers.d.ts +2 -2
- package/dist/packages/engine/runtime-proposal-helpers.js +6 -8
- package/dist/packages/engine/runtime-resource-builders.d.ts +11 -6
- package/dist/packages/engine/runtime-resource-builders.js +18 -6
- package/dist/packages/engine/runtime.d.ts +70 -8
- package/dist/packages/engine/runtime.js +304 -49
- package/dist/packages/engine/server.d.ts +25 -0
- package/dist/packages/engine/server.js +161 -50
- package/dist/packages/engine/verify/index.d.ts +10 -10
- package/dist/packages/engine/verify/index.js +8 -8
- package/dist/packages/engine/verify/readiness-check-run.d.ts +27 -4
- package/dist/packages/engine/verify/readiness-check-run.js +92 -24
- package/dist/packages/engine/verify/{test-execution.d.ts → verify-execution.d.ts} +2 -2
- package/dist/packages/engine/verify/{test-execution.js → verify-execution.js} +3 -3
- package/dist/packages/engine/verify/{test-paths.d.ts → verify-paths.d.ts} +1 -1
- package/dist/packages/engine/verify/{test-sandbox.d.ts → verify-sandbox.d.ts} +1 -1
- package/dist/packages/engine/verify/{test-specs.d.ts → verify-specs.d.ts} +1 -1
- package/dist/packages/engine/verify/{test-specs.js → verify-specs.js} +1 -1
- package/dist/packages/engine/verify/{test-targets.d.ts → verify-targets.d.ts} +1 -1
- package/dist/packages/engine/verify/{test.d.ts → verify.d.ts} +4 -4
- package/dist/packages/engine/verify/{test.js → verify.js} +3 -3
- package/dist/packages/engine/wire-schemas.d.ts +549 -0
- package/dist/packages/engine/wire-schemas.js +59 -0
- package/dist/packages/methods/authoring/method-authoring.d.ts +5 -1
- package/dist/packages/methods/authoring/method-authoring.js +68 -18
- package/dist/packages/methods/authoring/method-edit-session.js +5 -5
- package/dist/packages/methods/authoring/method-improvement.js +1 -1
- package/dist/packages/methods/package/builtin-compiled-method.d.ts +12 -12
- package/dist/packages/methods/package/builtin-compiled-method.js +26 -23
- package/dist/packages/methods/package/context-interface.d.ts +39 -26
- package/dist/packages/methods/package/context-interface.js +48 -39
- package/dist/packages/methods/package/interf-method-package.js +28 -47
- package/dist/packages/methods/package/local-methods.d.ts +4 -4
- package/dist/packages/methods/package/local-methods.js +53 -66
- package/dist/packages/methods/package/method-definitions.d.ts +4 -6
- package/dist/packages/methods/package/method-definitions.js +1 -5
- package/dist/packages/methods/package/method-helpers.d.ts +0 -2
- package/dist/packages/methods/package/method-helpers.js +0 -4
- package/dist/packages/project/interf-detect.js +6 -6
- package/dist/packages/project/interf-scaffold.js +12 -12
- 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 +6 -1
- package/dist/packages/project/source-folders.js +1 -1
- package/package.json +12 -23
- 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 +10 -7
- 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 +8 -69
- package/public-repo/methods/interf-default/method.schema.json +75 -0
- 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/method.schema.json +0 -73
- package/builtin-methods/interf-default/use/query/SKILL.md +0 -28
- package/dist/cli/commands/verify.d.ts +0 -8
- 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_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/0gpzgsv0w.q~m.js +0 -31
- package/dist/compiler-ui/_next/static/chunks/0ilwfezfvu6~-.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0jipmpez3_ehh.js +0 -89
- package/dist/compiler-ui/_next/static/chunks/0xxmf45eskdt~.css +0 -1
- package/dist/compiler-ui/_next/static/chunks/13awzu4tooflw.css +0 -3
- package/dist/compiler-ui/_next/static/chunks/14wtz~vq25~qq.js +0 -1
- package/dist/packages/engine/compile/runtime-acceptance.d.ts +0 -9
- package/dist/packages/engine/compile/runtime-acceptance.js +0 -265
- /package/dist/compiler-ui/_next/static/{a3UiUF0DiMEbfWy_0gihg → tYHMLL9oKds1yDoNYgkPV}/_buildManifest.js +0 -0
- /package/dist/compiler-ui/_next/static/{a3UiUF0DiMEbfWy_0gihg → tYHMLL9oKds1yDoNYgkPV}/_clientMiddlewareManifest.js +0 -0
- /package/dist/compiler-ui/_next/static/{a3UiUF0DiMEbfWy_0gihg → tYHMLL9oKds1yDoNYgkPV}/_ssgManifest.js +0 -0
- /package/dist/packages/engine/verify/{test-paths.js → verify-paths.js} +0 -0
- /package/dist/packages/engine/verify/{test-profile-presets.d.ts → verify-profile-presets.d.ts} +0 -0
- /package/dist/packages/engine/verify/{test-profile-presets.js → verify-profile-presets.js} +0 -0
- /package/dist/packages/engine/verify/{test-sandbox.js → verify-sandbox.js} +0 -0
- /package/dist/packages/engine/verify/{test-targets.js → verify-targets.js} +0 -0
- /package/dist/packages/engine/verify/{test-types.d.ts → verify-types.d.ts} +0 -0
- /package/dist/packages/engine/verify/{test-types.js → verify-types.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/LICENSE.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
© 2026 Interf Inc. All rights reserved. Use is subject to Interf's [Commercial Terms of Service](https://interf.com/legal/commercial-terms).
|
package/README.md
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
# Interf
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Context compiler for agents.**
|
|
4
|
+
|
|
5
|
+
Interf prepares data for agent work by compiling source files into verifiable Artifacts and writing portable context that agents can read, so agents work from a verified full picture instead of guessing.
|
|
4
6
|
|
|
5
7
|
**Hallucinations aren't an agent problem. They're a data preparation problem.**
|
|
6
8
|
|
|
7
9
|
When agents start from source files, they have to discover the full picture while they work. That discovery is hidden: you cannot see which files were processed, which evidence was used, or which connections were found.
|
|
8
10
|
|
|
9
|
-
Interf replaces that hidden discovery with
|
|
11
|
+
Interf replaces that hidden discovery with visible compilation. Your agent can ask for the Artifacts it needs — an atlas, index, timeline, summaries, or a custom file — and Interf drafts a Build Plan for you to review before compile. The draft says what should be built; the compile run proves what was actually processed. Under the hood, Interf saves that request as a Preparation, runs a Build Plan locally, records source references, and writes verifiable Artifacts agents can read. Today a Build Plan is implemented by a Method package.
|
|
10
12
|
|
|
11
13
|
```text
|
|
12
|
-
Source
|
|
14
|
+
Source files Portable context agents read
|
|
13
15
|
|
|
14
|
-
bristol-office-market/
|
|
16
|
+
bristol-office-market/ <portable-context-locator>/
|
|
15
17
|
q4-market-report.pdf AGENTS.md
|
|
16
18
|
lease-comps.xlsx .interf/runtime/source-snapshot.json
|
|
17
19
|
planning-notes.md home.md
|
|
@@ -19,15 +21,16 @@ bristol-office-market/ ~/.interf/preparations/bristol/portable-cont
|
|
|
19
21
|
knowledge/
|
|
20
22
|
```
|
|
21
23
|
|
|
22
|
-
## What a
|
|
24
|
+
## What a Compile Run Produces
|
|
23
25
|
|
|
24
|
-
A
|
|
26
|
+
A compile run produces portable context plus proof of work. The portable context is the folder agents read. The proof shows which source files were assigned, which Build Plan stages ran, what each stage wrote, and whether required artifacts exist.
|
|
25
27
|
|
|
26
|
-
For the built-in `interf-default`
|
|
28
|
+
For the built-in `interf-default` Build Plan, a compile run looks like this:
|
|
27
29
|
|
|
28
30
|
```text
|
|
29
|
-
Source
|
|
30
|
-
|
|
31
|
+
Source: bristol-office-market
|
|
32
|
+
Build Plan: interf-default
|
|
33
|
+
Requested Artifacts: atlas, summaries, knowledge, claims, indexes
|
|
31
34
|
|
|
32
35
|
compile run
|
|
33
36
|
record source references
|
|
@@ -36,34 +39,34 @@ compile run
|
|
|
36
39
|
shape -> home.md and agent entrypoints
|
|
37
40
|
record proof -> processed files, stage outputs, required artifacts
|
|
38
41
|
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
portable context
|
|
43
|
+
locator -> { kind: "local-path", value: "<local-path-returned-by-interf>" }
|
|
41
44
|
```
|
|
42
45
|
|
|
43
|
-
The output is not an answer. It is a prepared local folder with routes,
|
|
46
|
+
The output is not an answer. It is a prepared local folder with routes, artifacts, source snapshots, and agent instructions. Your runtime agent reads that folder when it does the actual agent work.
|
|
44
47
|
|
|
45
48
|
## Design Choices
|
|
46
49
|
|
|
47
|
-
- `
|
|
48
|
-
- `Deterministic`: Interf runs each stage, an ordered phase of a
|
|
50
|
+
- `Preparation-scoped`: every Preparation starts from a specific Source, requested Artifacts, and agent job, not a generic index over all your files.
|
|
51
|
+
- `Deterministic`: Interf runs each stage, an ordered phase of a Build Plan, and shows stage-by-stage proof of work: which files were processed, what each stage produced, and whether required outputs exist. Agents do not have to rebuild the full picture while they work.
|
|
49
52
|
- `Local-first and private`: your files, readiness checks, and agent runs stay on your machine. No cloud, no uploads, no telemetry.
|
|
50
53
|
- `Bring your own AI`: use Claude Code, Codex, or another local agent.
|
|
51
|
-
- `File over app`: the portable context is a
|
|
54
|
+
- `File over app`: the portable context is a local folder owned by the instance — no hidden store, no hidden index. Inspect it, diff it, version it.
|
|
52
55
|
- `Readiness checks you control`: every build can be checked against gates you wrote from the files. If the portable context is `not ready`, `interf test` shows the readiness evidence behind that status.
|
|
53
56
|
|
|
54
57
|
## Why Not Just Ask Your Agent?
|
|
55
58
|
|
|
56
59
|
You can. Interf can use Claude Code, Codex, or another local agent while it builds the portable context.
|
|
57
60
|
|
|
58
|
-
A one-off preprocessing prompt gives you another agent answer to trust. Interf puts that work inside a
|
|
61
|
+
A one-off preprocessing prompt gives you another agent answer to trust. Interf puts that work inside a Build Plan you can inspect: requested artifacts, declared stages, stage-by-stage proof of work, and readiness checks that decide whether the portable context is `ready` or `not ready`.
|
|
59
62
|
|
|
60
|
-
The agent can still
|
|
63
|
+
The agent can still execute the stages. Interf shows what ran, which files were processed, what artifacts and evidence were produced, and whether the result is ready for the agent work.
|
|
61
64
|
|
|
62
65
|
## Install
|
|
63
66
|
|
|
64
67
|
```bash
|
|
65
68
|
npm install -g @interf/compiler
|
|
66
|
-
interf # opens the wizard
|
|
69
|
+
interf # opens the wizard; start or connect an engine when needed
|
|
67
70
|
```
|
|
68
71
|
|
|
69
72
|
Requires Node.js 20+ and a local coding agent such as Claude Code or Codex. Run `interf doctor --live` if the executor is not detected.
|
|
@@ -72,34 +75,39 @@ Requires Node.js 20+ and a local coding agent such as Claude Code or Codex. Run
|
|
|
72
75
|
|
|
73
76
|
```bash
|
|
74
77
|
interf web # terminal 1: start the local engine
|
|
75
|
-
interf prep create bristol \ # terminal 2:
|
|
78
|
+
interf prep create bristol \ # terminal 2: save the source + requested Artifacts
|
|
76
79
|
--source ./bristol-office-market \
|
|
77
|
-
--
|
|
80
|
+
--about "Bristol annual take-up and availability chart lookup" \
|
|
81
|
+
--requested-artifacts-json '[{"title":"Guide to the report","checks":["Every page or file is listed.","Pages about Bristol and annual take-up are marked."]},{"title":"Annual take-up figures","checks":["Every figure has a source reference."]}]'
|
|
82
|
+
interf method draft bristol \ # draft the Build Plan for review
|
|
83
|
+
--task "Bristol annual take-up and availability chart lookup"
|
|
78
84
|
interf compile bristol # build portable context, returns the locator
|
|
79
85
|
interf test bristol # check readiness
|
|
80
86
|
```
|
|
81
87
|
|
|
82
|
-
`interf web` starts the engine in the foreground and writes
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
88
|
+
`interf web` starts the engine in the foreground and writes the active
|
|
89
|
+
connection record so subsequent CLI commands can connect. Agents can use
|
|
90
|
+
`interf web start` for an explicit managed background engine, then
|
|
91
|
+
`interf web stop` when their work is done. Mutating commands never implicitly
|
|
92
|
+
auto-start an engine — if no instance is connected, they exit with a hint
|
|
93
|
+
pointing at `interf web` / `interf web start` (local) or `interf login`
|
|
94
|
+
(future cloud).
|
|
87
95
|
|
|
88
96
|
`interf compile` returns the artifact locator on success — for a local
|
|
89
97
|
engine that's a `local-path` you can open with any tool. Point your agent at
|
|
90
98
|
that path. There's no `--out` flag, no implicit copy, no hidden store: the
|
|
91
99
|
instance owns the bytes and the API tells you where they are.
|
|
92
100
|
|
|
93
|
-
If you want a baseline before
|
|
101
|
+
If you want a baseline before compile, run `interf test bristol --target source-files`. It is optional proof, not the main path.
|
|
94
102
|
|
|
95
103
|
## Portable Context
|
|
96
104
|
|
|
97
|
-
The portable context is the local folder Interf writes from your files.
|
|
105
|
+
The portable context is the local folder Interf writes from your files. Do not hardcode its location. The API returns a typed locator (`{ kind: "local-path" | "remote-url", value }`); your agent reads from there.
|
|
98
106
|
|
|
99
107
|
It gives agents evidence, structure, and cross-file connections for navigating the files. It is not a replacement for your files. For the built-in `interf-default`, it includes:
|
|
100
108
|
|
|
101
109
|
```text
|
|
102
|
-
|
|
110
|
+
<portable-context-locator>/
|
|
103
111
|
AGENTS.md # agent-facing entry point and source-checking rules
|
|
104
112
|
CLAUDE.md # same guidance for Claude Code
|
|
105
113
|
.interf/
|
|
@@ -111,7 +119,7 @@ It gives agents evidence, structure, and cross-file connections for navigating t
|
|
|
111
119
|
knowledge/ # linked notes built from the files
|
|
112
120
|
```
|
|
113
121
|
|
|
114
|
-
The source files stay the source of truth. Interf writes portable context inside the instance's data dir; it does not modify the
|
|
122
|
+
The source files stay the source of truth. Interf writes portable context inside the instance's data dir; it does not modify the source.
|
|
115
123
|
|
|
116
124
|
`AGENTS.md` tells agents how to use the portable context: start from the prepared outputs, follow the prepared routes, and use the recorded source references when exact source evidence matters.
|
|
117
125
|
|
|
@@ -119,15 +127,17 @@ Interf also records stage-by-stage proof of work: which files were processed, wh
|
|
|
119
127
|
|
|
120
128
|
The portable context carries source references, not a mandatory copy of every source file. The source files remain where you keep them; Interf records which sources were assigned and what artifacts were produced from them.
|
|
121
129
|
|
|
122
|
-
##
|
|
130
|
+
## Build Plans and Method Packages
|
|
131
|
+
|
|
132
|
+
A Build Plan tells Interf how to compile requested Artifacts from your source files for the job agents need to do. It can start as a draft inside one Preparation, based on the user's instructions, the agent goal, and the described Source. If it works, save it as a Method package and reuse it on another Source.
|
|
123
133
|
|
|
124
|
-
|
|
134
|
+
Today saved Build Plans are implemented as Method packages. The built-in `interf-default` Method package ships with `@interf/compiler`. Install your own with `interf method install <path>`; draft new ones with `interf method draft <prep-id>`.
|
|
125
135
|
|
|
126
136
|
```text
|
|
127
|
-
|
|
128
|
-
method.json #
|
|
137
|
+
<method-package>/
|
|
138
|
+
method.json # Build Plan: artifacts, stages, compile rules
|
|
129
139
|
method.schema.json # output contract: required portable-context files and folders
|
|
130
|
-
README.md # what this
|
|
140
|
+
README.md # what this Build Plan is for
|
|
131
141
|
compile/
|
|
132
142
|
stages/
|
|
133
143
|
summarize/ # stage instructions Interf runs during compile
|
|
@@ -135,20 +145,20 @@ A Method tells Interf how to process your files for the job agents need to do. W
|
|
|
135
145
|
shape/
|
|
136
146
|
use/
|
|
137
147
|
query/ # how agents read the portable context
|
|
138
|
-
improve/ # how Interf revises this
|
|
148
|
+
improve/ # how Interf revises this plan if readiness checks still fail
|
|
139
149
|
```
|
|
140
150
|
|
|
141
|
-
- `method.json` describes the
|
|
151
|
+
- `method.json` describes the Build Plan: source data, requested artifacts, stages, and how the files should be compiled.
|
|
142
152
|
- `method.schema.json` describes the output contract: what the portable context must contain. Interf enforces it when you run `interf compile`.
|
|
143
153
|
- `compile/stages/<stage>/` is where you author one folder per stage — a small, specific phase like `summarize` or `structure`. You write the instructions; Interf runs them during compile.
|
|
144
154
|
- `use/query/` holds the instructions agents follow when they read the portable context for live agent work.
|
|
145
|
-
- `improve/` holds the instructions Interf follows when the first build misses and the
|
|
155
|
+
- `improve/` holds the instructions Interf follows when the first build misses and the Build Plan itself needs editing.
|
|
146
156
|
|
|
147
|
-
A
|
|
157
|
+
A Build Plan defines the stages, output contract, proof requirements, and improvement instructions Interf runs on your files. Technically, a saved/reusable Build Plan is stored as a Method package with `method.json` and `method.schema.json`. The result is portable context your agents can read.
|
|
148
158
|
|
|
149
|
-
##
|
|
159
|
+
## Build Plan Improvement
|
|
150
160
|
|
|
151
|
-
When the first compile run still misses readiness checks, Interf edits the
|
|
161
|
+
When the first compile run still misses readiness checks, Interf edits the Build Plan and compiles again. Same files, same checks, improved plan and portable context. Run `interf method improve <prep-id>` to invoke that loop manually.
|
|
152
162
|
|
|
153
163
|
Interf saves every readiness-check run inside the preparation's portable context under `.interf/tests/`. You can inspect what changed and why a later compile run did better.
|
|
154
164
|
|
|
@@ -156,7 +166,7 @@ Interf saves every readiness-check run inside the preparation's portable context
|
|
|
156
166
|
|
|
157
167
|
You don't need to think about roles. By default Interf uses your active agent for every stage of every compile run, the same way 0.14 did. Roles are available for advanced users who want different agents per stage; defaults are good and stable.
|
|
158
168
|
|
|
159
|
-
Interf treats connected agents as a first-class primitive and uses a small role taxonomy internally to route stages between them. The default behavior is single-active-agent — one installed agent runs everything — but you can opt into per-role specialization without changing any
|
|
169
|
+
Interf treats connected agents as a first-class primitive and uses a small role taxonomy internally to route stages between them. The default behavior is single-active-agent — one installed agent runs everything — but you can opt into per-role specialization without changing any Build Plan.
|
|
160
170
|
|
|
161
171
|
```text
|
|
162
172
|
Connected agents Role map (per-instance)
|
|
@@ -166,16 +176,16 @@ Connected agents Role map (per-instance)
|
|
|
166
176
|
verifier → claude-code
|
|
167
177
|
general → claude-code
|
|
168
178
|
|
|
169
|
-
A
|
|
170
|
-
for each stage in the
|
|
179
|
+
A Build Plan compile run
|
|
180
|
+
for each stage in the Build Plan
|
|
171
181
|
look up the stage's role in the role map
|
|
172
182
|
invoke the mapped agent on the prepared shell
|
|
173
183
|
record which agent ran which stage
|
|
174
184
|
```
|
|
175
185
|
|
|
176
|
-
|
|
186
|
+
Build Plans declare an optional `role` per stage — one of `extractor`, `summarizer`, `structurer`, `verifier`, or `general`. Custom role names are allowed; unknown roles fall through to `general`.
|
|
177
187
|
|
|
178
|
-
The role map lives in
|
|
188
|
+
The role map lives in the instance's agent settings. On a fresh install with one agent installed, every role maps to that agent and you get the same single-active-agent behavior 0.14 had. To change which agent runs which role:
|
|
179
189
|
|
|
180
190
|
```bash
|
|
181
191
|
interf agents ls
|
|
@@ -185,23 +195,23 @@ interf agents use claude-code # set the active agent
|
|
|
185
195
|
interf agents unmap structurer # fall back to active
|
|
186
196
|
```
|
|
187
197
|
|
|
188
|
-
Or use the **Agents** tab in Interf Compiler UI. Either surface mutates the same
|
|
198
|
+
Or use the **Agents** tab in Interf Compiler UI. Either surface mutates the same instance agent settings through the local service.
|
|
189
199
|
|
|
190
|
-
|
|
200
|
+
Readiness-check runs always resolve to the `verifier` role. Build Plan authoring runs ask the authoring agent to propose a `role` per stage based on the prompt content; missing roles default to `general`.
|
|
191
201
|
|
|
192
202
|
## How the Pieces Fit
|
|
193
203
|
|
|
194
|
-
The instance owns preparation state. A preparation declares a source binding (`{ kind: "local-folder", locator: <path> }`) and a
|
|
204
|
+
The instance owns preparation state. A preparation declares a source binding (`{ kind: "local-folder", locator: <path> }`), requested artifacts, and a selected Build Plan. The current local engine still stores the selected Build Plan as `method_id` while the schema catches up. It stores preparation state and generated bytes in the instance data directory. A compile run processes the selected source files and produces the artifact locator the API returns. `interf test` checks source files and portable context against the same readiness checks.
|
|
195
205
|
|
|
196
|
-
Readiness is one `ready` / `not ready` status, not a separate score. Interf builds it from evidence primitives:
|
|
206
|
+
Readiness is one `ready` / `not ready` status, not a separate score. Interf builds it from evidence primitives: Build Plan Artifact checks, proof records, file coverage, artifact validation, and readiness checks.
|
|
197
207
|
|
|
198
|
-
`interf web` runs the local Interf instance and serves Interf Compiler UI. The UI reads local-service resources: Source
|
|
208
|
+
`interf web` runs the local Interf instance and serves Interf Compiler UI. The UI reads local-service resources: Source, Preparations, Build Plans, Method packages, compile runs, stages, proof, artifacts, readiness checks, and whether portable context is `ready` or `not ready`. It renders local instance state; it does not own compiler, Build Plan, Method-package, or readiness semantics.
|
|
199
209
|
|
|
200
|
-
Everywhere Interf shows a resource — Source
|
|
210
|
+
Everywhere Interf shows a resource — Source, portable context, Build Plan files, run artifacts — the API returns a single locator shape: `{ kind, value }`. `local-path` means the engine has filesystem access to the same host as the user; `remote-url` is a signed URL the UI opens in a browser tab; `api-served` is a relative API route the UI fetches and renders inline. Local engines today return `local-path`; the same shape carries forward unchanged when a remote instance fronts the API.
|
|
201
211
|
|
|
202
212
|
## CLI Connection
|
|
203
213
|
|
|
204
|
-
The CLI is a thin authorized client of one connected instance. It carries one
|
|
214
|
+
The CLI is a thin authorized client of one connected instance. It carries one active connection record:
|
|
205
215
|
|
|
206
216
|
```text
|
|
207
217
|
{
|
|
@@ -210,24 +220,24 @@ The CLI is a thin authorized client of one connected instance. It carries one pi
|
|
|
210
220
|
}
|
|
211
221
|
```
|
|
212
222
|
|
|
213
|
-
`interf web`
|
|
223
|
+
`interf web` and `interf web start` write that record on startup. `interf login --url <remote>` writes a remote one (the cloud backend ships in a future release; the wire shape and config layer ship now). `interf logout` clears it.
|
|
214
224
|
|
|
215
225
|
If the connection is unreachable, every mutating command exits non-zero with:
|
|
216
226
|
|
|
217
227
|
```text
|
|
218
228
|
Not connected to any Interf instance.
|
|
219
|
-
Start one with `interf web`, or set --url / `interf login` for a remote one.
|
|
229
|
+
Start one with `interf web` or `interf web start`, or set --url / `interf login` for a remote one.
|
|
220
230
|
```
|
|
221
231
|
|
|
222
|
-
There is no auto-start. There is no per-folder pointer file. One mental model: client connects to instance, or doesn't.
|
|
232
|
+
There is no implicit auto-start. There is no per-folder pointer file. One mental model: client connects to instance, explicitly starts one, or doesn't.
|
|
223
233
|
|
|
224
234
|
## Readiness Checks
|
|
225
235
|
|
|
226
236
|
There are two checks in the system, and they answer different questions.
|
|
227
237
|
|
|
228
|
-
|
|
238
|
+
Build Plan Artifact checks check the build: did the plan produce the files, folders, Artifacts, and stage outputs it promised? Interf checks those while it compiles.
|
|
229
239
|
|
|
230
|
-
Readiness checks check the
|
|
240
|
+
Readiness checks check the portable context: is this Preparation good enough for the specific agent work? They are the confidence layer on top of the portable context, not the product output.
|
|
231
241
|
|
|
232
242
|
In the setup flow, readiness checks often look like plain question-and-answer pairs. On the API, they live under each preparation's `checks[]`. They help define whether the portable context is `ready` or `not ready`. A check should be a small, verifiable fact or condition you already know from the files:
|
|
233
243
|
|
|
@@ -235,7 +245,7 @@ In the setup flow, readiness checks often look like plain question-and-answer pa
|
|
|
235
245
|
- one short statement that should be true or false
|
|
236
246
|
- one comparison across years, files, or sections
|
|
237
247
|
|
|
238
|
-
Interf proposes an initial set from the files and the description of the job agents need to do. You confirm, edit, or replace them. `interf test` runs those checks through the configured local agent against
|
|
248
|
+
Interf proposes an initial set from the files and the description of the job agents need to do. You confirm, edit, or replace them. `interf test` runs those checks through the configured local agent against source files, portable context, or both. The portable context itself does not answer; the agent answers while using it.
|
|
239
249
|
|
|
240
250
|
A maintained readiness example in this repo uses one market report, two readiness checks, and two agents:
|
|
241
251
|
|
|
@@ -246,7 +256,7 @@ A maintained readiness example in this repo uses one market report, two readines
|
|
|
246
256
|
| Claude Code (Claude Opus 4.6, max) | `0/2` | `2/2` |
|
|
247
257
|
<!-- PUBLIC_BENCHMARK_TABLE:END -->
|
|
248
258
|
|
|
249
|
-
Codex passed from the
|
|
259
|
+
Codex passed from the source files; Claude Code only passed when working from Interf's portable context. Both numbers come from the same readiness-check pass. That is evidence about whether this portable context is `ready` for this agent work.
|
|
250
260
|
|
|
251
261
|
A maintained public test example uses this preparation:
|
|
252
262
|
|
|
@@ -257,6 +267,16 @@ A maintained public test example uses this preparation:
|
|
|
257
267
|
"source": { "kind": "local-folder", "locator": "./task-files" },
|
|
258
268
|
"method_id": "interf-default",
|
|
259
269
|
"about": "Bristol historical take-up and availability chart lookup.",
|
|
270
|
+
"requested_artifacts": [
|
|
271
|
+
{
|
|
272
|
+
"title": "Guide to the report",
|
|
273
|
+
"checks": ["Every page is listed.", "Pages about Bristol charts are marked."]
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"title": "Annual take-up and availability figures",
|
|
277
|
+
"checks": ["Every figure has a page reference.", "Approximate chart-derived reads are labelled."]
|
|
278
|
+
}
|
|
279
|
+
],
|
|
260
280
|
"checks": [
|
|
261
281
|
{
|
|
262
282
|
"question": "What were Bristol's annual take-up values in 2018 and 2016?",
|
|
@@ -276,33 +296,30 @@ A maintained public test example uses this preparation:
|
|
|
276
296
|
- Not a second brain or memory product. One preparation per agent job; nothing global.
|
|
277
297
|
- Not a vector store or RAG server. The portable context is plain files.
|
|
278
298
|
- Not a hosted data platform. The local instance runs on your machine; your bytes never leave it.
|
|
279
|
-
- Not an agent harness. Interf
|
|
299
|
+
- Not an agent harness. Interf compiles the context; your existing agent reads the portable context.
|
|
280
300
|
|
|
281
301
|
## Useful Commands
|
|
282
302
|
|
|
283
303
|
- `interf web` — run the local engine in the foreground (Compiler UI + API)
|
|
304
|
+
- `interf web start` — start a managed background local engine for agent sessions
|
|
284
305
|
- `interf web stop` — kill the running local engine
|
|
285
306
|
- `interf prep ls / create / show / rm` — manage preparations
|
|
286
307
|
- `interf compile <prep-id>` — build portable context, returns the artifact locator
|
|
287
308
|
- `interf test <prep-id>` — run readiness checks against source files and/or portable context
|
|
288
|
-
- `interf method ls / install / draft / improve` — manage Method packages
|
|
309
|
+
- `interf method ls / show / install / draft / improve` — manage Build Plans / Method packages
|
|
289
310
|
- `interf agents ls / use / register / unregister / map / unmap` — manage connected agents and the role map
|
|
290
|
-
- `interf runs ls / status /
|
|
291
|
-
- `interf login / logout` — manage
|
|
311
|
+
- `interf runs ls / status / cancel / fetch` — inspect runs
|
|
312
|
+
- `interf login / logout` — manage the active connection record (remote backend ships in a future release)
|
|
292
313
|
- `interf status` — show the active connection and a preparation summary
|
|
293
|
-
- `interf doctor --live` —
|
|
314
|
+
- `interf doctor --live` — check the local executor
|
|
294
315
|
|
|
295
|
-
##
|
|
316
|
+
## Public Assets
|
|
296
317
|
|
|
297
|
-
- [
|
|
298
|
-
- [
|
|
299
|
-
- [
|
|
300
|
-
- [apps/compiler-ui/README.md](./apps/compiler-ui/README.md) - Interf Compiler UI
|
|
301
|
-
- [apps/compiler-ui/DESIGN.md](./apps/compiler-ui/DESIGN.md) - UI design source of truth
|
|
302
|
-
- [scripts/README.md](./scripts/README.md) - maintainer automation
|
|
303
|
-
- [AGENTS.md](./AGENTS.md) / [CLAUDE.md](./CLAUDE.md) - maintainer compass + navigation index for agent sessions
|
|
318
|
+
- [skills/interf](./skills/interf/) — bundled agent Skill for Interf.
|
|
319
|
+
- [plugins/interf](./plugins/interf/) — local MCP host bundle for agents that support local MCP servers.
|
|
320
|
+
- [methods/interf-default](./methods/interf-default/) — default Method package that ships with `@interf/compiler`.
|
|
304
321
|
|
|
305
322
|
Contributors: see [CONTRIBUTING.md](./CONTRIBUTING.md).
|
|
306
323
|
|
|
307
|
-
|
|
324
|
+
License: see [LICENSE.md](./LICENSE.md). © 2026 Interf Inc. All rights reserved.
|
|
308
325
|
Name and branding: see [TRADEMARKS.md](./TRADEMARKS.md).
|
package/TRADEMARKS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Trademarks
|
|
2
2
|
|
|
3
|
-
`Interf`, the Interf word mark, and related logos are trademarks of Interf
|
|
3
|
+
`Interf`, the Interf word mark, and related logos are trademarks of Interf Inc.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
not
|
|
5
|
+
The Interf marks are not licensed for public use. Public visibility of any
|
|
6
|
+
Interf code, docs, or package does not grant trademark or branding rights.
|
|
7
7
|
|
|
8
|
-
If you need official brand usage permission, contact Interf
|
|
8
|
+
If you need official brand usage permission, contact Interf Inc.
|
|
@@ -1,37 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `interf mcp` — Model Context Protocol server.
|
|
3
|
-
*
|
|
4
|
-
* Wraps the local-service HTTP API as a typed agent surface so coding
|
|
5
|
-
* agents can interact with Interf the same way they call other MCP tools
|
|
6
|
-
* (instead of shelling out to the CLI).
|
|
7
|
-
*
|
|
8
|
-
* interf mcp # stdio transport (default)
|
|
9
|
-
* interf mcp --transport=http --port=4889 # advanced: HTTP transport
|
|
10
|
-
*
|
|
11
|
-
* The server reads `~/.interf/connection.json` (the same file every other
|
|
12
|
-
* client uses) and exits non-zero with the connect-or-error hint if no
|
|
13
|
-
* instance is reachable. Tools call straight through to the API; the
|
|
14
|
-
* server itself holds no state. The transport options are intentionally
|
|
15
|
-
* minimal — agents speaking MCP today are stdio-first.
|
|
16
|
-
*
|
|
17
|
-
* Tool list mirrors the API verbatim:
|
|
18
|
-
* prep_list GET /v1/preparations
|
|
19
|
-
* prep_create POST /v1/preparations
|
|
20
|
-
* prep_show GET /v1/preparations/{id}
|
|
21
|
-
* prep_set_method PATCH /v1/preparations/{id}
|
|
22
|
-
* prep_remove DELETE /v1/preparations/{id}
|
|
23
|
-
* prep_compile POST /v1/preparations/{id}/compile-runs
|
|
24
|
-
* prep_verify POST /v1/preparations/{id}/verify-runs
|
|
25
|
-
* method_list GET /v1/methods
|
|
26
|
-
* method_install POST /v1/methods (preparation-scoped via `prep_id`)
|
|
27
|
-
* method_draft POST /v1/preparations/{id}/method-authoring-runs
|
|
28
|
-
* method_improve POST /v1/preparations/{id}/method-improvement-runs
|
|
29
|
-
* runs_status GET /v1/runs/{run-id}
|
|
30
|
-
* runs_watch GET /v1/runs/{run-id}/events (snapshot, not SSE)
|
|
31
|
-
* runs_cancel POST /v1/runs/{run-id}/cancel
|
|
32
|
-
* runs_fetch GET /v1/runs/{run-id}/artifacts
|
|
33
|
-
* instance_status GET /v1/instance
|
|
34
|
-
*/
|
|
35
1
|
import type { CommandModule } from "yargs";
|
|
36
2
|
interface McpArgs {
|
|
37
3
|
transport?: "stdio" | "http";
|