@miller-tech/uap 1.133.2 → 1.134.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/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +4 -1
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/config-command.d.ts +49 -0
- package/dist/cli/config-command.d.ts.map +1 -0
- package/dist/cli/config-command.js +465 -0
- package/dist/cli/config-command.js.map +1 -0
- package/dist/cli/config-wizard.d.ts +13 -0
- package/dist/cli/config-wizard.d.ts.map +1 -0
- package/dist/cli/config-wizard.js +134 -0
- package/dist/cli/config-wizard.js.map +1 -0
- package/dist/cli/guided-setup.d.ts.map +1 -1
- package/dist/cli/guided-setup.js +11 -0
- package/dist/cli/guided-setup.js.map +1 -1
- package/dist/cli/policy.d.ts.map +1 -1
- package/dist/cli/policy.js +34 -0
- package/dist/cli/policy.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +22 -0
- package/dist/cli/setup.js.map +1 -1
- package/dist/config/policy-recommendations.d.ts +29 -0
- package/dist/config/policy-recommendations.d.ts.map +1 -0
- package/dist/config/policy-recommendations.js +108 -0
- package/dist/config/policy-recommendations.js.map +1 -0
- package/dist/config/settings-registry.d.ts +65 -0
- package/dist/config/settings-registry.d.ts.map +1 -0
- package/dist/config/settings-registry.js +334 -0
- package/dist/config/settings-registry.js.map +1 -0
- package/docs/INDEX.md +2 -0
- package/docs/guides/POLICY_SELECTION.md +98 -0
- package/docs/reference/CONFIGURATION_REFERENCE.md +688 -0
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
- package/tools/agents/scripts/anthropic_proxy.py +137 -12
|
@@ -0,0 +1,688 @@
|
|
|
1
|
+
# UAP Configuration Reference
|
|
2
|
+
|
|
3
|
+
> **Generated from the settings registry** (`src/config/settings-registry.ts`) via `uap config docs`. Do not edit by hand — change the registry and regenerate.
|
|
4
|
+
|
|
5
|
+
Every UAP setting, what it does, its default, and a recommendation. Inspect and change any of these with **`uap config`**:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
uap config list # all settings + current values
|
|
9
|
+
uap config explain <key> # learn one setting
|
|
10
|
+
uap config set <key> <value> # change it (.uap.json / .uap/proxy.env)
|
|
11
|
+
uap config doctor # flag risky / sub-optimal settings
|
|
12
|
+
uap config wizard # interactive expert configurator (also: uap setup --profile custom)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Where each setting lives:** `json` settings persist to `.uap.json`; `proxy.env` settings persist to `.uap/proxy.env` (loaded by the inference proxy); `shell` settings are runtime environment variables read by the hooks/CLI.
|
|
16
|
+
|
|
17
|
+
## Categories
|
|
18
|
+
|
|
19
|
+
- [Delivery & enforcement](#delivery) — Whether coding routes through `uap deliver` and how hard the gates block.
|
|
20
|
+
- [Verification gates](#verification) — Proving generated code actually builds and runs before "done".
|
|
21
|
+
- [Model routing](#routing) — Which model handles planning, execution, and review.
|
|
22
|
+
- [Serving recipes & escalation](#recipes) — Confidence/fusion recipes and the judge model that grades a local model.
|
|
23
|
+
- [Memory](#memory) — Short-term recall, long-term semantic memory, and pattern RAG.
|
|
24
|
+
- [Concurrency & model slots](#concurrency) — How many agents/inference slots run in parallel before backpressure.
|
|
25
|
+
- [Multi-agent collaboration](#collaboration) — The shared coordination board and file-overlap protection.
|
|
26
|
+
- [Orchestrator & hands-free](#orchestration) — Long-task autonomy: decompose, resume, and loop-to-100%.
|
|
27
|
+
- [Reactor (auto-apply)](#reactor) — Per-prompt injection of the matching experts, skills, and patterns.
|
|
28
|
+
- [Design system](#design) — DESIGN.md interrogation and the hard token gate for UI work.
|
|
29
|
+
- [Worktree workflow](#worktree) — Branch-per-feature isolation and auto-cleanup.
|
|
30
|
+
- [Inference proxy tuning](#proxy) — Guardrails and context limits for a local model behind the proxy.
|
|
31
|
+
- [Dashboard](#dashboard) — The live analytics server and its mutation token.
|
|
32
|
+
- [Token & time optimization](#optimization) — Context budgets, caching, batching, and parallelism.
|
|
33
|
+
- [General](#general) — Project metadata and CLI behavior.
|
|
34
|
+
|
|
35
|
+
## Delivery & enforcement
|
|
36
|
+
|
|
37
|
+
<a id="delivery"></a>Whether coding routes through `uap deliver` and how hard the gates block.
|
|
38
|
+
|
|
39
|
+
### `delivery.enforcement`
|
|
40
|
+
|
|
41
|
+
| | |
|
|
42
|
+
|---|---|
|
|
43
|
+
| **Where** | `.uap.json` |
|
|
44
|
+
| **Type** | enum (block \| advisory \| off) |
|
|
45
|
+
| **Default** | `block` |
|
|
46
|
+
|
|
47
|
+
How the delivery gate treats a direct source edit outside `uap deliver`. `block` refuses it (exit 2), `advisory` warns but allows, `off` disables the gate. (The `UAP_ENFORCE_DELIVERY` env var overrides this at runtime.)
|
|
48
|
+
|
|
49
|
+
**Recommendation:** `block` for hands-free/local-model work so every change is gated and verified; `advisory` when a capable human/Opus is driving and you want warnings without friction.
|
|
50
|
+
|
|
51
|
+
### `delivery.localMode`
|
|
52
|
+
|
|
53
|
+
| | |
|
|
54
|
+
|---|---|
|
|
55
|
+
| **Where** | `.uap.json` |
|
|
56
|
+
| **Type** | enum (advisory \| deliver \| block) |
|
|
57
|
+
| **Default** | `advisory` |
|
|
58
|
+
|
|
59
|
+
How local-model sessions are routed through delivery. `deliver` runs builds through the convergence loop; `block` forbids raw edits; `advisory` warns.
|
|
60
|
+
|
|
61
|
+
**Recommendation:** `deliver` when a local model does the writing (routes it through the verified loop); `advisory` for exploratory work.
|
|
62
|
+
|
|
63
|
+
### `UAP_ENFORCE_DELIVERY`
|
|
64
|
+
|
|
65
|
+
| | |
|
|
66
|
+
|---|---|
|
|
67
|
+
| **Where** | shell env |
|
|
68
|
+
| **Type** | enum (block \| advisory \| off) |
|
|
69
|
+
| **Default** | `block` |
|
|
70
|
+
|
|
71
|
+
Runtime override of the delivery gate read by the hooks/enforcers from the shell env. Takes precedence over `delivery.enforcement`.
|
|
72
|
+
|
|
73
|
+
**Recommendation:** Leave UNSET so it defaults to `block`. Exporting `advisory` globally leaks into every shell and silently disables the gate + the delivery-enforcement tests — set it inline per-command if you must.
|
|
74
|
+
|
|
75
|
+
### `UAP_DELIVER_BYPASS`
|
|
76
|
+
|
|
77
|
+
| | |
|
|
78
|
+
|---|---|
|
|
79
|
+
| **Where** | shell env |
|
|
80
|
+
| **Type** | boolean |
|
|
81
|
+
| **Default** | `false` |
|
|
82
|
+
|
|
83
|
+
When set to 1 for a single command, exempts that one sanctioned manual edit from the delivery gate.
|
|
84
|
+
|
|
85
|
+
**Recommendation:** Use inline (`UAP_DELIVER_BYPASS=1 <cmd>`) for a one-off edit; never export it.
|
|
86
|
+
|
|
87
|
+
## Verification gates
|
|
88
|
+
|
|
89
|
+
<a id="verification"></a>Proving generated code actually builds and runs before "done".
|
|
90
|
+
|
|
91
|
+
### `delivery.runtimeVerify`
|
|
92
|
+
|
|
93
|
+
| | |
|
|
94
|
+
|---|---|
|
|
95
|
+
| **Where** | `.uap.json` |
|
|
96
|
+
| **Type** | boolean |
|
|
97
|
+
| **Default** | `false` |
|
|
98
|
+
|
|
99
|
+
Installs the runtime-verify Stop-hook: at end of turn it actually runs the changed code (headless / vm-dom / child-process) and blocks stopping on a genuine runtime failure.
|
|
100
|
+
|
|
101
|
+
**Recommendation:** Enable for any project with a runnable artifact — it catches "declared done but never ran". Safe on empty projects (it skips when nothing is runnable).
|
|
102
|
+
|
|
103
|
+
### `UAP_VERIFY_ON_STOP`
|
|
104
|
+
|
|
105
|
+
| | |
|
|
106
|
+
|---|---|
|
|
107
|
+
| **Where** | shell env |
|
|
108
|
+
| **Type** | boolean |
|
|
109
|
+
| **Default** | `true` |
|
|
110
|
+
|
|
111
|
+
Master switch for the runtime execution gate in the Stop hook. `0` bypasses it.
|
|
112
|
+
|
|
113
|
+
**Recommendation:** Leave on (default). Set `0` only to unblock a session where the runtime gate misfires.
|
|
114
|
+
|
|
115
|
+
## Model routing
|
|
116
|
+
|
|
117
|
+
<a id="routing"></a>Which model handles planning, execution, and review.
|
|
118
|
+
|
|
119
|
+
### `multiModel.enabled`
|
|
120
|
+
|
|
121
|
+
| | |
|
|
122
|
+
|---|---|
|
|
123
|
+
| **Where** | `.uap.json` |
|
|
124
|
+
| **Type** | boolean |
|
|
125
|
+
| **Default** | `false` |
|
|
126
|
+
|
|
127
|
+
Turns on multi-model routing (distinct planner/executor/reviewer models) instead of a single model for everything.
|
|
128
|
+
|
|
129
|
+
**Recommendation:** Enable to pair a cheap local executor with a strong cloud reviewer. Configure via `uap model routing use <preset>`.
|
|
130
|
+
|
|
131
|
+
### `multiModel.routingStrategy`
|
|
132
|
+
|
|
133
|
+
| | |
|
|
134
|
+
|---|---|
|
|
135
|
+
| **Where** | `.uap.json` |
|
|
136
|
+
| **Type** | enum (cost-optimized \| performance-first \| balanced \| adaptive) |
|
|
137
|
+
| **Default** | `balanced` |
|
|
138
|
+
|
|
139
|
+
How the router trades cost against capability when picking a model per task.
|
|
140
|
+
|
|
141
|
+
**Recommendation:** `cost-optimized` for local-first setups, `performance-first` for all-cloud hot paths, `balanced`/`adaptive` otherwise.
|
|
142
|
+
|
|
143
|
+
### `ANTHROPIC_PASSTHROUGH_MODELS`
|
|
144
|
+
|
|
145
|
+
| | |
|
|
146
|
+
|---|---|
|
|
147
|
+
| **Where** | `.uap/proxy.env` |
|
|
148
|
+
| **Type** | string |
|
|
149
|
+
| **Default** | `` |
|
|
150
|
+
|
|
151
|
+
Comma-separated model IDs the proxy forwards to Anthropic instead of serving locally. The sentinel `__local_only__` forces every model ID onto the local Qwen.
|
|
152
|
+
|
|
153
|
+
**Recommendation:** Set automatically by `uap model routing use`. Use `__local_only__` for a fully offline setup; list cloud IDs for a hybrid local+cloud routing preset.
|
|
154
|
+
|
|
155
|
+
## Serving recipes & escalation
|
|
156
|
+
|
|
157
|
+
<a id="recipes"></a>Confidence/fusion recipes and the judge model that grades a local model.
|
|
158
|
+
|
|
159
|
+
### `recipes.enabled`
|
|
160
|
+
|
|
161
|
+
| | |
|
|
162
|
+
|---|---|
|
|
163
|
+
| **Where** | `.uap.json` |
|
|
164
|
+
| **Type** | boolean |
|
|
165
|
+
| **Default** | `false` |
|
|
166
|
+
|
|
167
|
+
Enables serving-layer recipes (confidence escalation, fusion, ratings) in front of the local model.
|
|
168
|
+
|
|
169
|
+
**Recommendation:** Enable for a local model when you have a stronger judge model available — it materially lifts output quality.
|
|
170
|
+
|
|
171
|
+
### `recipes.recipe`
|
|
172
|
+
|
|
173
|
+
| | |
|
|
174
|
+
|---|---|
|
|
175
|
+
| **Where** | `.uap.json` |
|
|
176
|
+
| **Type** | enum (auto \| single \| confidence \| fusion \| ratings \| remom) |
|
|
177
|
+
| **Default** | `auto` |
|
|
178
|
+
|
|
179
|
+
Which recipe to apply. `confidence` escalates only low-confidence turns to the judge; `fusion` samples N and judges; `auto` picks per-signal.
|
|
180
|
+
|
|
181
|
+
**Recommendation:** `auto` is the safe default; `confidence` for the best cost/quality trade when the judge is expensive.
|
|
182
|
+
|
|
183
|
+
### `recipes.confidenceThreshold`
|
|
184
|
+
|
|
185
|
+
| | |
|
|
186
|
+
|---|---|
|
|
187
|
+
| **Where** | `.uap.json` |
|
|
188
|
+
| **Type** | number |
|
|
189
|
+
| **Default** | `0.5` |
|
|
190
|
+
|
|
191
|
+
Below this confidence, a turn is escalated to the judge model.
|
|
192
|
+
|
|
193
|
+
**Recommendation:** 0.5 to start; raise toward 0.7 to escalate more often (higher quality, higher cost).
|
|
194
|
+
|
|
195
|
+
### `recipes.fusionN`
|
|
196
|
+
|
|
197
|
+
| | |
|
|
198
|
+
|---|---|
|
|
199
|
+
| **Where** | `.uap.json` |
|
|
200
|
+
| **Type** | number |
|
|
201
|
+
| **Default** | `3` |
|
|
202
|
+
|
|
203
|
+
How many candidate samples the fusion recipe generates before the judge picks/merges.
|
|
204
|
+
|
|
205
|
+
**Recommendation:** 3 balances quality and cost; 5 for hard tasks if you can afford the samples.
|
|
206
|
+
|
|
207
|
+
### `recipes.allowSelfJudge`
|
|
208
|
+
|
|
209
|
+
| | |
|
|
210
|
+
|---|---|
|
|
211
|
+
| **Where** | `.uap.json` |
|
|
212
|
+
| **Type** | boolean |
|
|
213
|
+
| **Default** | `false` |
|
|
214
|
+
|
|
215
|
+
Allows the generating model to also act as its own judge (generator == evaluator).
|
|
216
|
+
|
|
217
|
+
**Recommendation:** Keep `false` — a distinct, stronger judge is what adds the lift. Only allow self-judge if no separate judge is available.
|
|
218
|
+
|
|
219
|
+
### `recipes.judge.model`
|
|
220
|
+
|
|
221
|
+
| | |
|
|
222
|
+
|---|---|
|
|
223
|
+
| **Where** | `.uap.json` |
|
|
224
|
+
| **Type** | string |
|
|
225
|
+
| **Default** | `null` |
|
|
226
|
+
|
|
227
|
+
The model ID used to grade/escalate. Must be distinct from and stronger than the executor to help.
|
|
228
|
+
|
|
229
|
+
**Recommendation:** Point at your strongest available model (e.g. an Opus/Sonnet cloud ID) even if the executor is local.
|
|
230
|
+
|
|
231
|
+
### `PROXY_ESCALATE_API_KEY`
|
|
232
|
+
|
|
233
|
+
| | |
|
|
234
|
+
|---|---|
|
|
235
|
+
| **Where** | `.uap/proxy.env` |
|
|
236
|
+
| **Type** | string |
|
|
237
|
+
| **Default** | `null` |
|
|
238
|
+
| **Secret** | yes — never store in `.uap.json` |
|
|
239
|
+
|
|
240
|
+
API key for the judge/escalation model endpoint.
|
|
241
|
+
|
|
242
|
+
**Recommendation:** Store only in `.uap/proxy.env` (chmod 600) — never in `.uap.json`. `uap config set` writes it there.
|
|
243
|
+
|
|
244
|
+
## Memory
|
|
245
|
+
|
|
246
|
+
<a id="memory"></a>Short-term recall, long-term semantic memory, and pattern RAG.
|
|
247
|
+
|
|
248
|
+
### `memory.longTerm.enabled`
|
|
249
|
+
|
|
250
|
+
| | |
|
|
251
|
+
|---|---|
|
|
252
|
+
| **Where** | `.uap.json` |
|
|
253
|
+
| **Type** | boolean |
|
|
254
|
+
| **Default** | `true` |
|
|
255
|
+
|
|
256
|
+
Enables long-term semantic memory (vector recall across sessions) via Qdrant.
|
|
257
|
+
|
|
258
|
+
**Recommendation:** Keep on — cross-session recall is a core value. Requires a running Qdrant (`uap memory start`).
|
|
259
|
+
|
|
260
|
+
### `memory.longTerm.provider`
|
|
261
|
+
|
|
262
|
+
| | |
|
|
263
|
+
|---|---|
|
|
264
|
+
| **Where** | `.uap.json` |
|
|
265
|
+
| **Type** | enum (qdrant \| chroma \| pinecone \| github \| qdrant-cloud \| serverless \| none) |
|
|
266
|
+
| **Default** | `qdrant` |
|
|
267
|
+
|
|
268
|
+
The long-term memory backend.
|
|
269
|
+
|
|
270
|
+
**Recommendation:** `qdrant` (local) for privacy/speed; `qdrant-cloud` or `github` if you want memory to follow you across machines.
|
|
271
|
+
|
|
272
|
+
### `memory.shortTerm.maxEntries`
|
|
273
|
+
|
|
274
|
+
| | |
|
|
275
|
+
|---|---|
|
|
276
|
+
| **Where** | `.uap.json` |
|
|
277
|
+
| **Type** | number |
|
|
278
|
+
| **Default** | `50` |
|
|
279
|
+
|
|
280
|
+
How many recent short-term entries are retained/injected per session.
|
|
281
|
+
|
|
282
|
+
**Recommendation:** 50 is a good default; raise for long, context-heavy sessions if token budget allows.
|
|
283
|
+
|
|
284
|
+
### `memory.patternRag.enabled`
|
|
285
|
+
|
|
286
|
+
| | |
|
|
287
|
+
|---|---|
|
|
288
|
+
| **Where** | `.uap.json` |
|
|
289
|
+
| **Type** | boolean |
|
|
290
|
+
| **Default** | `false` |
|
|
291
|
+
|
|
292
|
+
Enables pattern RAG — semantic retrieval of the 23 execution patterns to steer the agent.
|
|
293
|
+
|
|
294
|
+
**Recommendation:** Enable for local models (patterns compensate for weaker planning); optional for frontier models.
|
|
295
|
+
|
|
296
|
+
### `QDRANT_URL`
|
|
297
|
+
|
|
298
|
+
| | |
|
|
299
|
+
|---|---|
|
|
300
|
+
| **Where** | shell env |
|
|
301
|
+
| **Type** | string |
|
|
302
|
+
| **Default** | `http://localhost:6333` |
|
|
303
|
+
|
|
304
|
+
Qdrant endpoint for long-term/pattern memory.
|
|
305
|
+
|
|
306
|
+
**Recommendation:** Leave default for local Qdrant; point at your cloud cluster URL for `qdrant-cloud`.
|
|
307
|
+
|
|
308
|
+
### `QDRANT_API_KEY`
|
|
309
|
+
|
|
310
|
+
| | |
|
|
311
|
+
|---|---|
|
|
312
|
+
| **Where** | shell env |
|
|
313
|
+
| **Type** | string |
|
|
314
|
+
| **Default** | `null` |
|
|
315
|
+
| **Secret** | yes — never store in `.uap.json` |
|
|
316
|
+
|
|
317
|
+
API key for a cloud Qdrant cluster.
|
|
318
|
+
|
|
319
|
+
**Recommendation:** Only needed for `qdrant-cloud`. Keep it in your shell env / secret store, not in `.uap.json`.
|
|
320
|
+
|
|
321
|
+
## Concurrency & model slots
|
|
322
|
+
|
|
323
|
+
<a id="concurrency"></a>How many agents/inference slots run in parallel before backpressure.
|
|
324
|
+
|
|
325
|
+
### `modelConcurrency.slots`
|
|
326
|
+
|
|
327
|
+
| | |
|
|
328
|
+
|---|---|
|
|
329
|
+
| **Where** | `.uap.json` |
|
|
330
|
+
| **Type** | number |
|
|
331
|
+
| **Default** | `null` |
|
|
332
|
+
|
|
333
|
+
How many inference slots the local server exposes; the lease system caps parallel agents to this.
|
|
334
|
+
|
|
335
|
+
**Recommendation:** Set to your llama.cpp `--parallel` value so fan-out never exhausts the server. Leave null to auto-probe.
|
|
336
|
+
|
|
337
|
+
### `modelConcurrency.headroom`
|
|
338
|
+
|
|
339
|
+
| | |
|
|
340
|
+
|---|---|
|
|
341
|
+
| **Where** | `.uap.json` |
|
|
342
|
+
| **Type** | number |
|
|
343
|
+
| **Default** | `null` |
|
|
344
|
+
|
|
345
|
+
Slots to hold back from the budget so the interactive session never starves behind background agents.
|
|
346
|
+
|
|
347
|
+
**Recommendation:** Reserve 1 on small servers so foreground work stays responsive.
|
|
348
|
+
|
|
349
|
+
### `modelConcurrency.adaptive`
|
|
350
|
+
|
|
351
|
+
| | |
|
|
352
|
+
|---|---|
|
|
353
|
+
| **Where** | `.uap.json` |
|
|
354
|
+
| **Type** | boolean |
|
|
355
|
+
| **Default** | `true` |
|
|
356
|
+
|
|
357
|
+
AIMD backpressure: shrinks the effective slot budget on exhaustion signals (429/timeouts) and recovers over time.
|
|
358
|
+
|
|
359
|
+
**Recommendation:** Keep on — it prevents overload cascades when many agents run at once.
|
|
360
|
+
|
|
361
|
+
### `UAP_MAX_PARALLEL`
|
|
362
|
+
|
|
363
|
+
| | |
|
|
364
|
+
|---|---|
|
|
365
|
+
| **Where** | shell env |
|
|
366
|
+
| **Type** | number |
|
|
367
|
+
| **Default** | `4` |
|
|
368
|
+
|
|
369
|
+
Upper bound on parallel agent/tool fan-out regardless of slot budget.
|
|
370
|
+
|
|
371
|
+
**Recommendation:** Match to CPU/GPU capacity; 4 is a safe default, lower it on constrained hosts.
|
|
372
|
+
|
|
373
|
+
## Multi-agent collaboration
|
|
374
|
+
|
|
375
|
+
<a id="collaboration"></a>The shared coordination board and file-overlap protection.
|
|
376
|
+
|
|
377
|
+
### `collaboration.mode`
|
|
378
|
+
|
|
379
|
+
| | |
|
|
380
|
+
|---|---|
|
|
381
|
+
| **Where** | `.uap.json` |
|
|
382
|
+
| **Type** | enum (auto \| always \| off) |
|
|
383
|
+
| **Default** | `auto` |
|
|
384
|
+
|
|
385
|
+
The shared coordination board + live file-overlap protection. `always` injects the board every turn; `auto` only when peers are active; `off` disables it.
|
|
386
|
+
|
|
387
|
+
**Recommendation:** `auto` for solo work, `always` when multiple agents/worktrees run concurrently so they compound instead of colliding.
|
|
388
|
+
|
|
389
|
+
### `coordination.deployBatching`
|
|
390
|
+
|
|
391
|
+
| | |
|
|
392
|
+
|---|---|
|
|
393
|
+
| **Where** | `.uap.json` |
|
|
394
|
+
| **Type** | boolean |
|
|
395
|
+
| **Default** | `true` |
|
|
396
|
+
|
|
397
|
+
Batches git/deploy actions across agents to avoid conflicting concurrent pushes.
|
|
398
|
+
|
|
399
|
+
**Recommendation:** Keep on for multi-agent setups.
|
|
400
|
+
|
|
401
|
+
## Orchestrator & hands-free
|
|
402
|
+
|
|
403
|
+
<a id="orchestration"></a>Long-task autonomy: decompose, resume, and loop-to-100%.
|
|
404
|
+
|
|
405
|
+
### `handsfree.enabled`
|
|
406
|
+
|
|
407
|
+
| | |
|
|
408
|
+
|---|---|
|
|
409
|
+
| **Where** | `.uap.json` |
|
|
410
|
+
| **Type** | boolean |
|
|
411
|
+
| **Default** | `false` |
|
|
412
|
+
|
|
413
|
+
Forces any model to keep working until a multi-epic completion ledger is 100% done, instead of stopping early.
|
|
414
|
+
|
|
415
|
+
**Recommendation:** Enable for large autonomous builds; leave off for interactive/exploratory sessions.
|
|
416
|
+
|
|
417
|
+
### `handsfree.intensity`
|
|
418
|
+
|
|
419
|
+
| | |
|
|
420
|
+
|---|---|
|
|
421
|
+
| **Where** | `.uap.json` |
|
|
422
|
+
| **Type** | enum (gentle \| normal \| aggressive) |
|
|
423
|
+
| **Default** | `normal` |
|
|
424
|
+
|
|
425
|
+
How hard hands-free pushes back against early stops before the ledger is complete.
|
|
426
|
+
|
|
427
|
+
**Recommendation:** `normal` for most work; `aggressive` for unattended overnight runs; `gentle` if the model over-persists on dead ends.
|
|
428
|
+
|
|
429
|
+
### `UAP_HANDSFREE_STAGNATION_LIMIT`
|
|
430
|
+
|
|
431
|
+
| | |
|
|
432
|
+
|---|---|
|
|
433
|
+
| **Where** | shell env |
|
|
434
|
+
| **Type** | number |
|
|
435
|
+
| **Default** | `8` |
|
|
436
|
+
|
|
437
|
+
Consecutive no-progress turns before hands-free breaks the loop instead of pushing on.
|
|
438
|
+
|
|
439
|
+
**Recommendation:** Lower (e.g. 5) if runs waste turns stuck; raise for genuinely long-horizon tasks.
|
|
440
|
+
|
|
441
|
+
## Reactor (auto-apply)
|
|
442
|
+
|
|
443
|
+
<a id="reactor"></a>Per-prompt injection of the matching experts, skills, and patterns.
|
|
444
|
+
|
|
445
|
+
### `reactor.enabled`
|
|
446
|
+
|
|
447
|
+
| | |
|
|
448
|
+
|---|---|
|
|
449
|
+
| **Where** | `.uap.json` |
|
|
450
|
+
| **Type** | boolean |
|
|
451
|
+
| **Default** | `true` |
|
|
452
|
+
|
|
453
|
+
Per-prompt injection of the experts, skills, and patterns that match what you just asked — so relevant capability is on the bench before the agent starts.
|
|
454
|
+
|
|
455
|
+
**Recommendation:** Keep on. Disable only to debug prompt bloat or measure the reactor's own contribution.
|
|
456
|
+
|
|
457
|
+
## Design system
|
|
458
|
+
|
|
459
|
+
<a id="design"></a>DESIGN.md interrogation and the hard token gate for UI work.
|
|
460
|
+
|
|
461
|
+
### `design.enabled`
|
|
462
|
+
|
|
463
|
+
| | |
|
|
464
|
+
|---|---|
|
|
465
|
+
| **Where** | `.uap.json` |
|
|
466
|
+
| **Type** | boolean |
|
|
467
|
+
| **Default** | `false` |
|
|
468
|
+
|
|
469
|
+
Turns on DESIGN.md: the agent interrogates and lints UI work against your design brief.
|
|
470
|
+
|
|
471
|
+
**Recommendation:** Enable for any project with a UI so design work starts from intent, not a guess.
|
|
472
|
+
|
|
473
|
+
### `design.tokenGate`
|
|
474
|
+
|
|
475
|
+
| | |
|
|
476
|
+
|---|---|
|
|
477
|
+
| **Where** | `.uap.json` |
|
|
478
|
+
| **Type** | boolean |
|
|
479
|
+
| **Default** | `false` |
|
|
480
|
+
|
|
481
|
+
Hard-blocks UI edits that hardcode off-token colors or off-scale spacing.
|
|
482
|
+
|
|
483
|
+
**Recommendation:** Enable once your DESIGN.md tokens are stable — it keeps the UI on-system automatically.
|
|
484
|
+
|
|
485
|
+
## Worktree workflow
|
|
486
|
+
|
|
487
|
+
<a id="worktree"></a>Branch-per-feature isolation and auto-cleanup.
|
|
488
|
+
|
|
489
|
+
### `worktrees.enabled`
|
|
490
|
+
|
|
491
|
+
| | |
|
|
492
|
+
|---|---|
|
|
493
|
+
| **Where** | `.uap.json` |
|
|
494
|
+
| **Type** | boolean |
|
|
495
|
+
| **Default** | `true` |
|
|
496
|
+
|
|
497
|
+
Branch-per-feature isolation: edits happen in `.worktrees/NNN-slug/`, never the working tree, with auto-PR.
|
|
498
|
+
|
|
499
|
+
**Recommendation:** Keep on for any team or multi-agent workflow; it is the safety net against clobbering `main`.
|
|
500
|
+
|
|
501
|
+
### `worktrees.branchPrefix`
|
|
502
|
+
|
|
503
|
+
| | |
|
|
504
|
+
|---|---|
|
|
505
|
+
| **Where** | `.uap.json` |
|
|
506
|
+
| **Type** | string |
|
|
507
|
+
| **Default** | `feature/` |
|
|
508
|
+
|
|
509
|
+
Prefix for auto-created worktree branches.
|
|
510
|
+
|
|
511
|
+
**Recommendation:** Match your team's branch convention (e.g. `feat/`, `fix/`).
|
|
512
|
+
|
|
513
|
+
### `worktrees.autoCleanup`
|
|
514
|
+
|
|
515
|
+
| | |
|
|
516
|
+
|---|---|
|
|
517
|
+
| **Where** | `.uap.json` |
|
|
518
|
+
| **Type** | boolean |
|
|
519
|
+
| **Default** | `true` |
|
|
520
|
+
|
|
521
|
+
Removes a worktree automatically once its branch is merged/unchanged.
|
|
522
|
+
|
|
523
|
+
**Recommendation:** Keep on to avoid a pile of stale worktrees.
|
|
524
|
+
|
|
525
|
+
## Inference proxy tuning
|
|
526
|
+
|
|
527
|
+
<a id="proxy"></a>Guardrails and context limits for a local model behind the proxy.
|
|
528
|
+
|
|
529
|
+
### `PROXY_CONTEXT_WINDOW`
|
|
530
|
+
|
|
531
|
+
| | |
|
|
532
|
+
|---|---|
|
|
533
|
+
| **Where** | `.uap/proxy.env` |
|
|
534
|
+
| **Type** | number |
|
|
535
|
+
| **Default** | `65536` |
|
|
536
|
+
|
|
537
|
+
The context window the proxy advertises/enforces for the local model. Must match the server's KV allocation.
|
|
538
|
+
|
|
539
|
+
**Recommendation:** Set to your llama.cpp per-slot context size. Too high overflows KV; too low truncates history.
|
|
540
|
+
|
|
541
|
+
### `PROXY_CONCURRENCY_LIMIT`
|
|
542
|
+
|
|
543
|
+
| | |
|
|
544
|
+
|---|---|
|
|
545
|
+
| **Where** | `.uap/proxy.env` |
|
|
546
|
+
| **Type** | number |
|
|
547
|
+
| **Default** | `null` |
|
|
548
|
+
|
|
549
|
+
Max concurrent upstream generations the proxy admits before queuing.
|
|
550
|
+
|
|
551
|
+
**Recommendation:** Match to the server's parallel slots so the proxy queues instead of overloading the model.
|
|
552
|
+
|
|
553
|
+
### `PROXY_LOOP_BREAKER`
|
|
554
|
+
|
|
555
|
+
| | |
|
|
556
|
+
|---|---|
|
|
557
|
+
| **Where** | `.uap/proxy.env` |
|
|
558
|
+
| **Type** | boolean |
|
|
559
|
+
| **Default** | `true` |
|
|
560
|
+
|
|
561
|
+
Breaks no-progress generation loops by forcing a single non-streaming call.
|
|
562
|
+
|
|
563
|
+
**Recommendation:** Keep on for local models — it is a core reliability guardrail.
|
|
564
|
+
|
|
565
|
+
### `PROXY_STUCK_BREAK`
|
|
566
|
+
|
|
567
|
+
| | |
|
|
568
|
+
|---|---|
|
|
569
|
+
| **Where** | `.uap/proxy.env` |
|
|
570
|
+
| **Type** | boolean |
|
|
571
|
+
| **Default** | `true` |
|
|
572
|
+
|
|
573
|
+
When the model self-reports "stuck" but keeps repeating the same failing tool, releases it to a prose exit.
|
|
574
|
+
|
|
575
|
+
**Recommendation:** Keep on for local models; harmless for cloud models (rarely triggers).
|
|
576
|
+
|
|
577
|
+
### `PROXY_RECON_CONVERGENCE_THRESHOLD`
|
|
578
|
+
|
|
579
|
+
| | |
|
|
580
|
+
|---|---|
|
|
581
|
+
| **Where** | `.uap/proxy.env` |
|
|
582
|
+
| **Type** | number |
|
|
583
|
+
| **Default** | `40` |
|
|
584
|
+
|
|
585
|
+
After this many read-only (no-write) turns, the proxy forces synthesis/`deliver` so the model stops exploring forever.
|
|
586
|
+
|
|
587
|
+
**Recommendation:** 40 is balanced; lower it (e.g. 20) if local sessions over-explore before writing.
|
|
588
|
+
|
|
589
|
+
### `PROXY_RECIPE`
|
|
590
|
+
|
|
591
|
+
| | |
|
|
592
|
+
|---|---|
|
|
593
|
+
| **Where** | `.uap/proxy.env` |
|
|
594
|
+
| **Type** | enum (auto \| single \| confidence \| fusion \| ratings \| remom) |
|
|
595
|
+
| **Default** | `auto` |
|
|
596
|
+
|
|
597
|
+
The serving recipe the proxy applies (mirror of `recipes.recipe`, consumed by the proxy process).
|
|
598
|
+
|
|
599
|
+
**Recommendation:** Keep in sync with `recipes.recipe`; `uap setup`/`uap config` write both.
|
|
600
|
+
|
|
601
|
+
## Dashboard
|
|
602
|
+
|
|
603
|
+
<a id="dashboard"></a>The live analytics server and its mutation token.
|
|
604
|
+
|
|
605
|
+
### `UAP_DASHBOARD_TOKEN`
|
|
606
|
+
|
|
607
|
+
| | |
|
|
608
|
+
|---|---|
|
|
609
|
+
| **Where** | shell env |
|
|
610
|
+
| **Type** | string |
|
|
611
|
+
| **Default** | `null` |
|
|
612
|
+
| **Secret** | yes — never store in `.uap.json` |
|
|
613
|
+
|
|
614
|
+
The token required for dashboard policy-mutation routes (enable/disable/stage/level). Read routes stay open.
|
|
615
|
+
|
|
616
|
+
**Recommendation:** Set a strong token if the dashboard binds beyond localhost (`--host 0.0.0.0`); otherwise a generated per-session token is used.
|
|
617
|
+
|
|
618
|
+
### `UAP_DASH_REFRESH_MS`
|
|
619
|
+
|
|
620
|
+
| | |
|
|
621
|
+
|---|---|
|
|
622
|
+
| **Where** | shell env |
|
|
623
|
+
| **Type** | number |
|
|
624
|
+
| **Default** | `2000` |
|
|
625
|
+
|
|
626
|
+
Dashboard data refresh interval in milliseconds (floor 250).
|
|
627
|
+
|
|
628
|
+
**Recommendation:** 2000 is fine; lower for a more live feel at higher CPU cost.
|
|
629
|
+
|
|
630
|
+
## Token & time optimization
|
|
631
|
+
|
|
632
|
+
<a id="optimization"></a>Context budgets, caching, batching, and parallelism.
|
|
633
|
+
|
|
634
|
+
### `costOptimization.enabled`
|
|
635
|
+
|
|
636
|
+
| | |
|
|
637
|
+
|---|---|
|
|
638
|
+
| **Where** | `.uap.json` |
|
|
639
|
+
| **Type** | boolean |
|
|
640
|
+
| **Default** | `true` |
|
|
641
|
+
|
|
642
|
+
Enables token budgets, response caching, and embedding batching to cut token spend.
|
|
643
|
+
|
|
644
|
+
**Recommendation:** Keep on — it is free savings with no quality cost.
|
|
645
|
+
|
|
646
|
+
### `timeOptimization.parallelExecution.maxParallelDroids`
|
|
647
|
+
|
|
648
|
+
| | |
|
|
649
|
+
|---|---|
|
|
650
|
+
| **Where** | `.uap.json` |
|
|
651
|
+
| **Type** | number |
|
|
652
|
+
| **Default** | `4` |
|
|
653
|
+
|
|
654
|
+
Max expert droids run in parallel during a task.
|
|
655
|
+
|
|
656
|
+
**Recommendation:** Match to host capacity; 4 is a safe default.
|
|
657
|
+
|
|
658
|
+
## General
|
|
659
|
+
|
|
660
|
+
<a id="general"></a>Project metadata and CLI behavior.
|
|
661
|
+
|
|
662
|
+
### `project.defaultBranch`
|
|
663
|
+
|
|
664
|
+
| | |
|
|
665
|
+
|---|---|
|
|
666
|
+
| **Where** | `.uap.json` |
|
|
667
|
+
| **Type** | string |
|
|
668
|
+
| **Default** | `main` |
|
|
669
|
+
|
|
670
|
+
The branch PRs target and worktrees branch from.
|
|
671
|
+
|
|
672
|
+
**Recommendation:** Set to your repo's default branch (`main` or `master`).
|
|
673
|
+
|
|
674
|
+
### `UAP_NO_SELF_UPDATE`
|
|
675
|
+
|
|
676
|
+
| | |
|
|
677
|
+
|---|---|
|
|
678
|
+
| **Where** | shell env |
|
|
679
|
+
| **Type** | boolean |
|
|
680
|
+
| **Default** | `false` |
|
|
681
|
+
|
|
682
|
+
Disables the automatic global-CLI version check/self-update on `uap setup`.
|
|
683
|
+
|
|
684
|
+
**Recommendation:** Set in CI or pinned environments where you manage the UAP version yourself.
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
*Not every environment variable UAP reads is a first-class setting — the inference proxy alone exposes ~130 `PROXY_*` tuning knobs. The registry surfaces the high-impact, commonly-tuned ones; see the proxy source (`tools/agents/scripts/anthropic_proxy.py`) for the full set.*
|
package/package.json
CHANGED
|
Binary file
|