@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
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: interf
|
|
3
|
+
description: "Use when an agent needs to operate Interf from natural language: install or connect to the local Interf engine, manage Preparations, review Build Plans, compile source files into verifiable Artifacts, and read portable context for agent work."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Interf
|
|
7
|
+
|
|
8
|
+
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. It runs locally, shows evidence that the data is ready, and writes portable context that agents can read.
|
|
9
|
+
|
|
10
|
+
The model is **Instance + Preparation + Artifacts + Build Plan**:
|
|
11
|
+
|
|
12
|
+
- **Instance** = the engine (a local `interf web` process, or a future cloud endpoint). Owns all preparation state. Same wire shape both ends.
|
|
13
|
+
- **Source** = input files or data. A local folder is the current binding shape; Interf scans it by reference, not by copy.
|
|
14
|
+
- **Preparation** = the durable wrapper for a Source, agent goal, user instructions, requested Artifacts, Build Plan, connected agents, compile runs, readiness evidence, and portable-context location. Lives inside an instance.
|
|
15
|
+
- **Build Plan** = the user-facing plan for how Interf will compile the requested Artifacts from the Source. It can be a draft candidate, selected for one Preparation, or saved/promoted for reuse. The current CLI/API still stores this through `method_id`.
|
|
16
|
+
- **Method package** = the saved reusable Build Plan implementation (`method.json` + Artifact declarations + stage docs). It can be applied to different Sources and Preparations when installed or promoted.
|
|
17
|
+
- **Artifact** = a Build Plan output agents need, such as an atlas, index, timeline, summary set, claim set, or custom file.
|
|
18
|
+
- **Compile run** = one execution of a Preparation. Append-only. Produces portable context.
|
|
19
|
+
|
|
20
|
+
Agents should think in Artifacts: "what files do I need Interf to compile from this Source so I can do the user's job reliably?"
|
|
21
|
+
|
|
22
|
+
There is **no workspace concept**. The CLI carries one piece of state: the active connection record.
|
|
23
|
+
|
|
24
|
+
When Interf MCP tools are available, prefer them over shelling out to the CLI.
|
|
25
|
+
They are API-backed and, in Cowork, can run from the user's device instead of
|
|
26
|
+
the isolated VM shell. Use the CLI examples below as the fallback and as the
|
|
27
|
+
source of command semantics.
|
|
28
|
+
|
|
29
|
+
## Connection model
|
|
30
|
+
|
|
31
|
+
The CLI is a thin authorized client of one connected instance. Every mutating command requires a reachable connection. If the active connection is missing or unreachable, the command exits non-zero with:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
Not connected to any Interf instance.
|
|
35
|
+
Start one with `interf web` or `interf web start`, or set --url / `interf login` for a remote one.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
There is no hidden auto-start inside mutating commands. Agents must verify a
|
|
39
|
+
connection exists before running mutating commands.
|
|
40
|
+
|
|
41
|
+
Use `interf` when it is installed. If the command is missing, try
|
|
42
|
+
`npx -y @interf/compiler@latest` for this session. If neither works, stop
|
|
43
|
+
before mutating work and say plainly that this runtime can inspect the source
|
|
44
|
+
and propose Artifacts, but cannot create a Preparation or run Interf until the
|
|
45
|
+
CLI is installed or a reachable Interf instance is connected. Do not probe
|
|
46
|
+
machine-specific install paths in the skill flow.
|
|
47
|
+
|
|
48
|
+
Be explicit about which runtime you are using:
|
|
49
|
+
|
|
50
|
+
- **Claude Code local / local terminal**: shell commands run on the user's
|
|
51
|
+
machine. This is the best current path for full Interf execution.
|
|
52
|
+
- **Claude Code remote / cloud session**: shell commands run in the provider's
|
|
53
|
+
cloud environment. It can run Interf only if the Source, CLI, engine, and
|
|
54
|
+
compile-time agent executor are available inside that environment.
|
|
55
|
+
- **Claude Cowork**: shell/code execution may run inside an isolated VM.
|
|
56
|
+
`127.0.0.1` from that shell may refer to the VM, not the Mac/Windows host.
|
|
57
|
+
Do not treat VM shell failure as proof that the user's local Interf engine is
|
|
58
|
+
down. Use a local Interf MCP bridge only when the host has actually launched
|
|
59
|
+
it on the user's device; otherwise use a local Claude Code / Codex session
|
|
60
|
+
for execution.
|
|
61
|
+
- **Computer use**: Claude may be able to operate the user's actual desktop
|
|
62
|
+
apps with permission, but do not rely on screen automation as the primary
|
|
63
|
+
Interf execution path.
|
|
64
|
+
|
|
65
|
+
In Cowork, a plain Skill is guidance only. It can teach Claude when to use
|
|
66
|
+
Interf and how to explain requested Artifacts, but it does not by itself give
|
|
67
|
+
Claude a host-level Interf tool. For full Cowork execution, the host must launch
|
|
68
|
+
a local MCP server or desktop extension whose tools call the Interf service on
|
|
69
|
+
the user's machine. The local tool surface should be `interf mcp`, which
|
|
70
|
+
forwards to the same Interf service API as the CLI and UI. A remote connector is
|
|
71
|
+
useful for Interf Cloud or public HTTPS endpoints; it is not the default way to
|
|
72
|
+
reach `127.0.0.1` on the user's machine.
|
|
73
|
+
|
|
74
|
+
When Interf is unavailable in the current runtime, do not create helper
|
|
75
|
+
scripts, driver files, shell files, or command files for the user to run later.
|
|
76
|
+
Do not write anything into the Source folder. The Source is read-only input.
|
|
77
|
+
Give a short limitation message and the smallest next action instead, such as
|
|
78
|
+
continuing in a local Claude Code / Codex session that can reach the Interf
|
|
79
|
+
engine.
|
|
80
|
+
|
|
81
|
+
For local or containerized agent sessions:
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
interf web # local: foreground server in another terminal
|
|
85
|
+
interf web start # local: managed background server for agent sessions
|
|
86
|
+
interf login --url <...> # remote: writes connection.json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
When using the `npx` fallback, replace `interf` in examples with
|
|
90
|
+
`npx -y @interf/compiler@latest`.
|
|
91
|
+
|
|
92
|
+
## Agent flow
|
|
93
|
+
|
|
94
|
+
1. **Confirm a connection** — call `interf status` or `interf prep ls`. If the
|
|
95
|
+
command is missing, try the `npx` fallback once. If the command returns
|
|
96
|
+
`Not connected...`, start a managed local engine with `interf web start`,
|
|
97
|
+
then call `interf status` again. If the user already has a visible
|
|
98
|
+
`interf web` terminal running, do not start another engine; just connect to
|
|
99
|
+
it. Track whether you started the engine in this turn. Before ending the
|
|
100
|
+
session, run `interf web stop` if you started it and no compile/test run is
|
|
101
|
+
still active. Do not run foreground `interf web` inside the agent loop
|
|
102
|
+
because it blocks.
|
|
103
|
+
In Cowork, only start or stop Interf from a trusted host-level Interf MCP
|
|
104
|
+
tool or local desktop extension. Do not ask the VM shell to start a local
|
|
105
|
+
Mac/Windows engine and then expect the VM's `127.0.0.1` to reach it.
|
|
106
|
+
2. **Propose requested Artifacts in human language** — first inspect what you
|
|
107
|
+
can about the Source the user gave you: filenames, file types, obvious page
|
|
108
|
+
counts, section names, and anything that affects the user's question. Treat
|
|
109
|
+
that as an advisory source profile, not proof that Interf processed the
|
|
110
|
+
files. Then propose the Artifacts you need before answering.
|
|
111
|
+
|
|
112
|
+
Focus on what the agent needs Interf to prepare so it does not miss
|
|
113
|
+
important source evidence. Do not turn normal analysis choices into blocking
|
|
114
|
+
questions. If a term is ambiguous but the Source gives reasonable candidates,
|
|
115
|
+
state the assumption and record the ambiguity as an Artifact check. Ask a
|
|
116
|
+
clarification only when the Source or task cannot be identified, or when the
|
|
117
|
+
ambiguity makes the Artifact request impossible to draft.
|
|
118
|
+
|
|
119
|
+
If the user invoked `/interf` or explicitly said to use Interf for this
|
|
120
|
+
task, that is permission to inspect the Source and propose requested
|
|
121
|
+
Artifacts only. Stop after the proposal. Do not create the Preparation,
|
|
122
|
+
draft the Build Plan, or compile until the user explicitly says to create,
|
|
123
|
+
draft, proceed, or do the flow end-to-end.
|
|
124
|
+
|
|
125
|
+
Do not show JSON to the user. Do not copy example wording from this skill.
|
|
126
|
+
Do not use technical labels such as "scope resolver", "evidence map",
|
|
127
|
+
"market page relevance map", or "comparison evidence". Use short names a
|
|
128
|
+
knowledge worker understands. Prefer a few meaningful Artifacts, but do not
|
|
129
|
+
invent a fixed maximum.
|
|
130
|
+
|
|
131
|
+
Keep the first proposal compact enough to fit on one screen:
|
|
132
|
+
|
|
133
|
+
- one sentence naming the source and what you know about it
|
|
134
|
+
- one short sentence explaining why Interf helps for this task
|
|
135
|
+
- one short sentence for any important ambiguity, phrased as an assumption
|
|
136
|
+
- a compact numbered list of Artifacts
|
|
137
|
+
- one final line asking the user to approve or edit
|
|
138
|
+
|
|
139
|
+
Do not use markdown tables; some chat surfaces collapse them into unreadable
|
|
140
|
+
text. Do not write Artifact entries as paragraphs. For each Artifact, use a
|
|
141
|
+
readable mini-card:
|
|
142
|
+
|
|
143
|
+
- Artifact name as the numbered line, in bold
|
|
144
|
+
- `Why it helps:` one short sentence
|
|
145
|
+
- `Checks:` followed by two or three plain-English bullet points
|
|
146
|
+
|
|
147
|
+
Each check must be a complete human-readable sentence, not compressed
|
|
148
|
+
shorthand. Keep checks concrete enough that a user can say "yes, that is
|
|
149
|
+
what I wanted." Do not include extracted numbers, chart readings, JSON
|
|
150
|
+
fields, stage names, or commands in the human proposal. Detailed numbers
|
|
151
|
+
belong in the compiled Artifacts, not in the proposal.
|
|
152
|
+
|
|
153
|
+
Format shape. Replace the placeholders with the actual source and task; do
|
|
154
|
+
not output angle-bracket placeholders.
|
|
155
|
+
|
|
156
|
+
```text
|
|
157
|
+
I found <source summary>. For <task>, I should prepare the source first because <risk>.
|
|
158
|
+
<Optional ambiguity or assumption in one sentence.>
|
|
159
|
+
|
|
160
|
+
1. **<Plain-English name>**
|
|
161
|
+
Why it helps: <short sentence>
|
|
162
|
+
Checks:
|
|
163
|
+
- <human-readable check>
|
|
164
|
+
- <human-readable check>
|
|
165
|
+
|
|
166
|
+
If this looks right, tell me to create the Preparation and draft the Build Plan for review. I will stop here until you approve it.
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Store the same proposal as structured
|
|
170
|
+
`requested_artifacts[]` on the Preparation. Store the advisory source
|
|
171
|
+
interpretation as `source_profile` when useful. `requested_artifacts[]`
|
|
172
|
+
requires only a `title`; include `purpose`, `checks[]`, and stable `id`
|
|
173
|
+
values when you know them. Only include exact `output.shape` / typed output
|
|
174
|
+
checks when you already know the required Build Plan output contract.
|
|
175
|
+
3. **List or create a preparation after the user approves the Artifact proposal** —
|
|
176
|
+
```sh
|
|
177
|
+
interf prep ls # see what exists
|
|
178
|
+
interf prep create <id> --source <path> [--about "<agent job>"] \
|
|
179
|
+
--requested-artifacts-json '<json-array>' \
|
|
180
|
+
--source-profile-json '<json-object>'
|
|
181
|
+
interf prep set-method <id> <method-id> # select later if needed
|
|
182
|
+
```
|
|
183
|
+
Keep JSON out of the human proposal. Use compact JSON only in the command
|
|
184
|
+
or API request after the user confirms.
|
|
185
|
+
4. **Draft the Build Plan after the user approves the Artifact proposal unless the user chose a saved one** — for real
|
|
186
|
+
analytical work, the recommended path is a custom Build Plan for this
|
|
187
|
+
Preparation. Do not silently bind `interf-default` as the final plan just
|
|
188
|
+
because it exists. Use `interf-default` only when the user explicitly asks
|
|
189
|
+
for the default/smoke-test flow or when you need a temporary fallback.
|
|
190
|
+
|
|
191
|
+
If the user has not chosen an existing Build Plan, say plainly:
|
|
192
|
+
|
|
193
|
+
```text
|
|
194
|
+
I'll create the Preparation and draft a custom Build Plan for review. This may take a few minutes. I'll send the review link when the plan is ready; I will not compile until you approve it.
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Then run:
|
|
198
|
+
|
|
199
|
+
```sh
|
|
200
|
+
interf method draft <prep-id> \
|
|
201
|
+
--task "<agent job>" \
|
|
202
|
+
--artifacts "<optional extra Artifact notes or change request>" \
|
|
203
|
+
--ready-when "<proof and coverage the user should trust>"
|
|
204
|
+
interf runs status <run-id> # poll until the draft run is terminal
|
|
205
|
+
interf method show <method-id> # summarize the drafted Build Plan headlessly
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Do not generate custom shell polling loops. In Cowork or any MCP-enabled
|
|
209
|
+
host, use the Interf MCP `runs_status` tool for status checks. In CLI-only
|
|
210
|
+
hosts, run `interf runs status <run-id>` as a single command when you need a
|
|
211
|
+
fresh status, or share the run link and continue without blocking. Avoid
|
|
212
|
+
asking the user to approve repeated polling commands.
|
|
213
|
+
|
|
214
|
+
`interf method draft` automatically receives saved `requested_artifacts[]`
|
|
215
|
+
and `source_profile` from the Preparation. If you already resolved exact
|
|
216
|
+
Build Plan output constraints, pass them with
|
|
217
|
+
`--artifact-requirements-json '<json-array>'`; otherwise let the Build Plan
|
|
218
|
+
draft agent decide the output paths and checks from the requested Artifacts.
|
|
219
|
+
|
|
220
|
+
While the Build Plan is being drafted, do not show the Preparation review
|
|
221
|
+
link as if the plan is ready. You may show the run link so the user can see
|
|
222
|
+
activity, but the review link comes after the draft run finishes and the
|
|
223
|
+
candidate Build Plan is available. After the draft finishes, show the user a
|
|
224
|
+
short text summary of the Build Plan Artifacts and stages from
|
|
225
|
+
`interf method show <method-id>` so review works even when they do not open
|
|
226
|
+
the UI.
|
|
227
|
+
5. **Show the review link before compile by default** — after the Build Plan is
|
|
228
|
+
drafted, selected, or materially changed, send the user to the Preparation
|
|
229
|
+
Build Plan review:
|
|
230
|
+
```text
|
|
231
|
+
http://127.0.0.1:4873/?section=preparations&preparation=<prep-id>&preparationTab=build-plan
|
|
232
|
+
```
|
|
233
|
+
Build Plan drafting creates or updates a candidate plan with its own Activity
|
|
234
|
+
record. A successful draft run selects that Build Plan on the Preparation so
|
|
235
|
+
the review page is concrete; it still does not mean the user approved a
|
|
236
|
+
compile run.
|
|
237
|
+
The thing to review is the requested Artifacts and the Build Plan: which
|
|
238
|
+
Artifacts will be compiled, why the agent needs them, which stages will
|
|
239
|
+
build them, and what proof should show the Source was fully processed.
|
|
240
|
+
Include the same information in the chat as a compact summary: requested
|
|
241
|
+
Artifacts, stage names, and what each stage writes.
|
|
242
|
+
Unless the user explicitly asked you to handle the whole flow autonomously,
|
|
243
|
+
pause here so they can select, remove, or ask you to change the proposed
|
|
244
|
+
Artifacts, then select the candidate Build Plan for the Preparation before
|
|
245
|
+
you start a compile run. If the plan should be reused, save/promote it as a
|
|
246
|
+
Method package. If they ask for changes, draft/improve the Build Plan and
|
|
247
|
+
show the review link again. If they already granted autonomy, you may select
|
|
248
|
+
the candidate Build Plan and compile, but still print the Artifacts review
|
|
249
|
+
link and the compile run link so the user can inspect what happened.
|
|
250
|
+
6. **Compile** — preparation id is positional:
|
|
251
|
+
```sh
|
|
252
|
+
interf compile <prep-id> [--watch] [--quiet] [--idempotency-key <key>]
|
|
253
|
+
```
|
|
254
|
+
Default is async-return: prints `run id`, the artifact `locator`, and current readiness. With `--quiet`, only the locator is printed. With `--watch`, the CLI tails events until the run reaches a terminal state.
|
|
255
|
+
7. **Inspect runs** —
|
|
256
|
+
```sh
|
|
257
|
+
interf runs status <run-id>
|
|
258
|
+
interf runs ls [--prep <id>]
|
|
259
|
+
interf runs fetch <run-id> --to <abs-path>
|
|
260
|
+
interf runs cancel <run-id>
|
|
261
|
+
```
|
|
262
|
+
8. **Read the portable context** — for a local engine the locator is a `local-path` you can open directly with any tool. For a remote engine it is a signed `remote-url`; `interf runs fetch` localizes it.
|
|
263
|
+
9. **On `not ready`**, propose Build Plan improvement:
|
|
264
|
+
```sh
|
|
265
|
+
interf method improve <prep-id> \
|
|
266
|
+
--task "<what needs to change>" \
|
|
267
|
+
--artifacts "<Artifact changes, if any>" \
|
|
268
|
+
--ready-when "<proof or coverage changes, if any>"
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Connected agents and the role map
|
|
272
|
+
|
|
273
|
+
Interf treats the agents it can shell out to (Claude Code, Codex, custom CLIs) as a first-class primitive. `GET /v1/instance` reports `agent_count` and `default_agent`; if `agent_count` is `0`, **`interf compile` and `interf test` will hard-error** — install one or register a custom CLI before retrying.
|
|
274
|
+
|
|
275
|
+
```sh
|
|
276
|
+
interf agents ls # list registered + detected agents
|
|
277
|
+
interf agents use <name> # set the active agent (sweeps role map)
|
|
278
|
+
interf agents register <name> --command "<cmd>" # register a custom CLI
|
|
279
|
+
interf agents unregister <name> # remove a custom CLI
|
|
280
|
+
interf agents map <role> <agent> # pin a role to an agent
|
|
281
|
+
interf agents unmap <role> # fall back to the active agent
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Roles are: `extractor`, `summarizer`, `structurer`, `verifier`, `general` (Build Plans / Method packages may declare custom names; the engine treats unknown roles as `general`). Default behavior is single-active-agent — every role maps to the same agent — so existing agent flows do not change unless the user opts into per-role specialization.
|
|
285
|
+
|
|
286
|
+
## Agent contract — flags every CLI run uses
|
|
287
|
+
|
|
288
|
+
| Flag | What it controls | When the agent passes it |
|
|
289
|
+
|---|---|---|
|
|
290
|
+
| `--url <url>` | Override the active connection URL for one call. | When the user has multiple instances and wants to target a specific one without changing the active connection record. |
|
|
291
|
+
| `--token <token>` | Override the active bearer token for one call. | Cloud / non-loopback connections only. |
|
|
292
|
+
| `--watch` | Block until the run finishes and tail stages. | Only when the agent must wait inline. Default is async return-with-id. |
|
|
293
|
+
| `--quiet` | Print only the artifact locator on success. | Scripting and agent handoff. |
|
|
294
|
+
| `--idempotency-key <key>` | Sent as `X-Interf-Idempotency-Key`. The instance caches the key for an hour and returns the original run id on retries instead of starting a fresh run. | Whenever the agent might retry the same compile. |
|
|
295
|
+
| `--to <abs-path>` | (`interf runs fetch`) Absolute destination to copy portable context into. | When the agent needs portable context outside the instance. |
|
|
296
|
+
|
|
297
|
+
## Operating rules
|
|
298
|
+
|
|
299
|
+
- Use exact preparation ids and Build Plan / Method-package ids returned by the API. Do not invent ids.
|
|
300
|
+
- Always confirm a connection exists before running mutating commands. If no
|
|
301
|
+
instance is connected, explicitly run `interf web start` for an agent-owned
|
|
302
|
+
local/container session, ask the user to start foreground `interf web` when
|
|
303
|
+
they want to own the engine, or connect a remote instance. Do not call
|
|
304
|
+
foreground `interf web` inside the agent loop because it blocks.
|
|
305
|
+
- For long-running work, use the async default and check status by id (`interf runs status <id>`). Only use `--watch` when the agent must wait inline.
|
|
306
|
+
- Do not call the local HTTP API directly unless Interf explicitly gives an API-integration task. Use CLI commands for normal agent work.
|
|
307
|
+
- If the user invoked `/interf` or explicitly asked to use Interf for a data
|
|
308
|
+
task, stop after the concise Artifact proposal. Do not create the
|
|
309
|
+
Preparation or start the Build Plan draft run until the user explicitly
|
|
310
|
+
approves the proposal or grants autonomy. Print run links only after a run
|
|
311
|
+
actually starts.
|
|
312
|
+
- Do not create shell scripts or handoff files when the CLI is unavailable.
|
|
313
|
+
Never write helper files into the Source folder. If you cannot run Interf,
|
|
314
|
+
say that directly and stop after the Artifact proposal.
|
|
315
|
+
- Treat requested-Artifact and Build Plan review as the default human trust
|
|
316
|
+
gate. Do not bury the proposed Artifacts in prose; link the user to the
|
|
317
|
+
Preparation Build Plan review before compile when the Build Plan was newly drafted or
|
|
318
|
+
materially changed. Drafted Build Plans are candidates until they are selected
|
|
319
|
+
for the Preparation by the user or by an agent acting under explicit autonomy.
|
|
320
|
+
Save/promote a useful plan as a Method package when reuse matters.
|
|
321
|
+
- When the user asks for a new analysis over their data, prefer “create
|
|
322
|
+
Preparation → draft custom Build Plan → show review link → compile after
|
|
323
|
+
approval.” Only use `interf-default` as the selected Build Plan when the user
|
|
324
|
+
explicitly asks for the default, asks for a fast smoke test, or accepts that
|
|
325
|
+
fallback after you explain the tradeoff.
|
|
326
|
+
- When drafting or improving a Build Plan, pass the user's requested Artifact
|
|
327
|
+
shape and change request in the UI/action form when available. From CLI,
|
|
328
|
+
pass the request through `--task`, `--artifacts`, and `--ready-when` so the
|
|
329
|
+
Build Plan run has the actual user intent, not just the Preparation id.
|
|
330
|
+
- Separate proposal from proof. Before compile, you can say what Interf plans
|
|
331
|
+
to build and what coverage/proof it will check. After compile, you can say
|
|
332
|
+
which files/pages were processed, what evidence was produced, and whether
|
|
333
|
+
portable context is ready.
|
|
334
|
+
- In review copy, lead with proposed Artifacts and the stage plan that will
|
|
335
|
+
build them. The Method package is the technical container; the user's decision
|
|
336
|
+
is whether those Artifacts and the Build Plan are the right portable context
|
|
337
|
+
for the agent work.
|
|
338
|
+
- Ask one concise clarification only when the Source or agent goal is missing,
|
|
339
|
+
or when the ambiguity makes the requested Artifacts impossible to draft. For
|
|
340
|
+
normal domain ambiguity, state the assumption and make it a check in the
|
|
341
|
+
requested Artifacts / Build Plan.
|
|
342
|
+
|
|
343
|
+
## Show your work — always print the run URL
|
|
344
|
+
|
|
345
|
+
Interf Compiler UI is the user's verification surface. The agent does
|
|
346
|
+
the work; the user clicks a URL to see live trace, events, readiness,
|
|
347
|
+
and proof. **Whenever you kick off a run, print a deep-link to the run
|
|
348
|
+
page in the same message as the run id.** The user should never have
|
|
349
|
+
to navigate the UI manually to find what you just started.
|
|
350
|
+
|
|
351
|
+
The base URL is whatever `interf status` reports as the connected
|
|
352
|
+
instance (e.g. `http://127.0.0.1:4873` for a local engine,
|
|
353
|
+
`https://api.interf.cloud/...` for cloud). Append query params:
|
|
354
|
+
|
|
355
|
+
| Param | Value |
|
|
356
|
+
|---|---|
|
|
357
|
+
| `preparation` | the preparation id |
|
|
358
|
+
| `run` | the run id returned by the CLI |
|
|
359
|
+
| `runTab` | optional: `trace` (default), `events`, or `readiness` |
|
|
360
|
+
|
|
361
|
+
**Example output after `interf compile <prep-id>`:**
|
|
362
|
+
|
|
363
|
+
```text
|
|
364
|
+
Started compile run <run-id>.
|
|
365
|
+
Watch live: http://127.0.0.1:4873/?preparation=<prep-id>&run=<run-id>
|
|
366
|
+
|
|
367
|
+
I'll check status in a moment with `interf runs status <run-id>`.
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
The same pattern applies to readiness-check, Build Plan improvement, and
|
|
371
|
+
Build Plan authoring runs. When a run finishes, print the same URL with
|
|
372
|
+
`runTab=readiness` so the user can click through to the readiness summary.
|
|
373
|
+
|
|
374
|
+
The agent stays the executor; the URL is the user's "I can see what's
|
|
375
|
+
happening" handle. It also makes failures self-explanatory — when a run
|
|
376
|
+
errors, the user clicks through to the same trace the agent is reading.
|
|
377
|
+
|
|
378
|
+
## Reading the artifact locator
|
|
379
|
+
|
|
380
|
+
`interf compile <prep-id>` prints a short multi-line block by default. The portable-context locator looks like one of:
|
|
381
|
+
|
|
382
|
+
```text
|
|
383
|
+
Portable context: <local-path-returned-by-interf>
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
```text
|
|
387
|
+
Portable context: https://api.interf.cloud/v1/runs/run_2x4abc.../portable-context
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
For `local-path`, use the agent's filesystem tools to read the directory. For `remote-url`, use HTTP or `interf runs fetch <run-id> --to <path>`.
|
|
391
|
+
|
|
392
|
+
## Interf Compiler UI freeform proposal mode
|
|
393
|
+
|
|
394
|
+
When Interf Compiler UI asks for a proposal, do not run CLI commands. Write a single JSON object to the requested output path. Structured UI controls call the local service directly; this mode is only for freeform planning.
|
|
395
|
+
|
|
396
|
+
Use these action types:
|
|
397
|
+
|
|
398
|
+
- `compile`
|
|
399
|
+
- `test`
|
|
400
|
+
- `readiness-check-draft`
|
|
401
|
+
- `method-authoring`
|
|
402
|
+
- `method-improvement`
|
|
403
|
+
- `clarification`
|
|
404
|
+
|
|
405
|
+
Use `compile` when the user asks to prepare data, build artifacts, refresh portable context, or compile source files for agent work. Set `method` to the selected Build Plan id, and, if the request named one, `preparation` to the preparation id. CLI equivalent: `interf compile <prep-id>`.
|
|
406
|
+
|
|
407
|
+
Readiness-check proposals always run against the compiled portable context in 0.15+. The legacy `values.mode` field is gone — omit it from `test` proposals.
|
|
408
|
+
|
|
409
|
+
Return this shape:
|
|
410
|
+
|
|
411
|
+
```json
|
|
412
|
+
{
|
|
413
|
+
"action_type": "compile",
|
|
414
|
+
"method": "method-id",
|
|
415
|
+
"preparation": "prep-id",
|
|
416
|
+
"title": "short approval card title",
|
|
417
|
+
"summary": "one sentence describing which artifacts will be compiled",
|
|
418
|
+
"assistant_message": "concise explanation for the user",
|
|
419
|
+
"command_preview": "interf compile prep-id"
|
|
420
|
+
}
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
For Build Plan drafting proposals, keep requested Artifacts structured in
|
|
424
|
+
`values.requested_artifacts[]` and keep the advisory source summary in
|
|
425
|
+
`values.source_profile`. Do not flatten them into prose only:
|
|
426
|
+
|
|
427
|
+
```json
|
|
428
|
+
{
|
|
429
|
+
"action_type": "method-authoring",
|
|
430
|
+
"preparation": "prep-id",
|
|
431
|
+
"method": "prep-id-build-plan",
|
|
432
|
+
"title": "Draft Build Plan",
|
|
433
|
+
"summary": "Drafts the Build Plan for the requested Artifacts.",
|
|
434
|
+
"values": {
|
|
435
|
+
"method_id": "prep-id-build-plan",
|
|
436
|
+
"task_prompt": "London versus South West annual take-up",
|
|
437
|
+
"requested_artifacts": [
|
|
438
|
+
{
|
|
439
|
+
"title": "Guide to the report",
|
|
440
|
+
"purpose": "A short note for each page, so the agent knows what is where.",
|
|
441
|
+
"checks": ["Every page is listed.", "Each page has a plain-English summary."]
|
|
442
|
+
}
|
|
443
|
+
],
|
|
444
|
+
"source_profile": {
|
|
445
|
+
"summary": "One 26-page office market report.",
|
|
446
|
+
"observations": ["No obvious section is called South West."]
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
Use `clarification` only when the request cannot be mapped safely to one Interf action.
|
|
453
|
+
|
|
454
|
+
## Reference
|
|
455
|
+
|
|
456
|
+
For exact CLI syntax, run the installed command's help:
|
|
457
|
+
|
|
458
|
+
```sh
|
|
459
|
+
interf --help
|
|
460
|
+
interf <command> --help
|
|
461
|
+
interf <command> <subcommand> --help
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
The installed `interf` command is the source of truth. Do not rely on a copied
|
|
465
|
+
command reference when the CLI is available.
|
|
466
|
+
|
|
467
|
+
Use CLI read commands before asking the user to inspect the UI:
|
|
468
|
+
|
|
469
|
+
```sh
|
|
470
|
+
interf status
|
|
471
|
+
interf prep show <prep-id>
|
|
472
|
+
interf method show <method-id>
|
|
473
|
+
interf runs status <run-id>
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
The UI link is for visual proof. The CLI output is for agent-readable status,
|
|
477
|
+
Build Plan review, Artifact status, run errors, proof, and readiness summaries.
|