@miller-tech/uap 1.48.0 → 1.48.1

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/docs/INDEX.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # UAP Documentation
2
2
 
3
- The complete documentation for the **Universal Agent Protocol** (`@miller-tech/uap` v1.40.0) — a layer that gives AI coding agents memory, judgment, and the discipline to finish the job.
3
+ The complete documentation for the **Universal Agent Protocol** (`@miller-tech/uap` v1.48.0) — a layer that gives AI coding agents memory, judgment, and the discipline to finish the job.
4
4
 
5
5
  New here? Start with the [project README](../README.md), then [Getting Started](getting-started/).
6
6
 
@@ -19,7 +19,7 @@ New here? Start with the [project README](../README.md), then [Getting Started](
19
19
  | Doc | What it covers |
20
20
  |---|---|
21
21
  | [**What UAP Does Automatically**](guides/AUTOMATIC_FEATURES.md) | Every feature in benefit / when-it-kicks-in terms — install once, it all self-applies ⭐ |
22
- | [**`uap deliver`**](guides/DELIVER.md) | The delivery harness — verified changes via convergence loop |ess convergence loop to verified completion ⭐ |
22
+ | [**`uap deliver`**](guides/DELIVER.md) | The delivery harness — convergence loop to verified completion, with tiered gates (fast integration deploy-dev) and a CI/deploy feedback loop ⭐ |
23
23
  | [Memory](guides/MEMORY.md) | The 4-tier memory system, write-gates, semantic recall |
24
24
  | [MCP Router](guides/MCP_ROUTER.md) | Token-optimizing tool proxy + FTS5 output compression |
25
25
  | [Worktree Workflow](guides/WORKTREE_WORKFLOW.md) | Branch-per-feature isolation, auto-PR, enforcement |
@@ -2,7 +2,7 @@
2
2
 
3
3
  The Universal Agent Protocol (UAP) is an autonomous AI agent memory system with
4
4
  CLAUDE.md protocol enforcement. It ships as a single npm package
5
- (`@miller-tech/uap`, v1.40.0) that installs the `uap` CLI.
5
+ (`@miller-tech/uap`, v1.48.0) that installs the `uap` CLI.
6
6
 
7
7
  ## Prerequisites
8
8
 
@@ -32,7 +32,7 @@ npm install -g @miller-tech/uap
32
32
  uap --version
33
33
  ```
34
34
 
35
- This prints the installed package version (e.g. `1.40.0`).
35
+ This prints the installed package version (e.g. `1.48.0`).
36
36
 
37
37
  ## One-command setup
38
38
 
@@ -45,6 +45,14 @@ uap setup
45
45
  `uap setup` chains the individual commands so the whole system "just works". It
46
46
  runs the following steps in order:
47
47
 
48
+ 0. **Self-update the CLI** — before anything else, `setup` checks npm and
49
+ **auto-updates the globally-installed `uap` to the latest published version**
50
+ if it is behind, so every setup runs against current behaviour. It is
51
+ non-fatal and self-limiting: only a real global install is updated (a source
52
+ checkout or a local/monorepo dependency is left alone), it is downgrade-proof,
53
+ and it is **skipped in CI** for reproducibility (`UAP_SELF_UPDATE=1` forces
54
+ it). The update applies on the next `uap` invocation. Disable with
55
+ `--no-self-update` or `UAP_NO_SELF_UPDATE=1`.
48
56
  1. **Initialize the project** (`uap init` under the hood) — creates `.uap.json`,
49
57
  the `agents/data/memory` directory structure, the short-term memory database,
50
58
  a `CLAUDE.md` (or `AGENT.md`), the worktree workflow scaffold, and the Python
@@ -68,11 +76,12 @@ runs the following steps in order:
68
76
  ### Useful `uap setup` flags
69
77
 
70
78
  ```bash
71
- uap setup --no-memory # init only, skip Qdrant/memory services
72
- uap setup --no-patterns # skip pattern RAG setup and indexing
73
- uap setup -i # interactive wizard with feature toggles
74
- uap setup --verbose # detailed output
75
- uap setup -d <path> # set up a project directory other than the cwd
79
+ uap setup --no-memory # init only, skip Qdrant/memory services
80
+ uap setup --no-patterns # skip pattern RAG setup and indexing
81
+ uap setup --no-self-update # do not auto-update the global CLI
82
+ uap setup -i # interactive wizard with feature toggles
83
+ uap setup --verbose # detailed output
84
+ uap setup -d <path> # set up a project directory other than the cwd
76
85
  ```
77
86
 
78
87
  ### Init only
@@ -68,6 +68,13 @@ Install UAP (`npm i -g universal-agent-protocol`) and every feature below activa
68
68
 
69
69
  **Why it matters:** This is the single biggest uplift for small local models. A Qwen3.6-35B-A3B running locally with ~18GB VRAM will produce broken code on first try — but after 2-3 convergence iterations through real compiler feedback, it produces working code that matches what opus-4.8 would produce. The model learns from its mistakes in real-time.
70
70
 
71
+ ### `uap deliver` — Tiered Gates & CI/Deploy Feedback
72
+ **What it does:** Gates are grouped into cheap-first tiers — `fast` (build/typecheck/test/lint) → `integration` (test:integration/e2e, pytest markers) → `deploy-dev` (local compose-up + smoke + teardown) — and only promote to the next, more expensive tier once the prior one is green. With `--watch-ci`/`--until-deployed`, once local tiers pass the loop commits + pushes the worktree branch, watches the CI run, and re-converges on CI/staging/prod deploy failure using the sanitized failure logs.
73
+
74
+ **When it kicks in:** The integration tier auto-enables when a suite is detected; `--optimize` also turns on `deploy-dev`. The CI watch boundary is opt-in (`--watch-ci`/`--until-deployed`) since it pushes.
75
+
76
+ **Why it matters:** "Delivered" comes to mean *integrates and deploys*, not just "unit tests pass locally" — and the loop gets real dev/staging/prod feedback to converge on, while never paying for expensive tiers until the cheap ones are green.
77
+
71
78
  ### Model Presets
72
79
  **What it does:** Pre-configured model profiles in `src/models/types.ts` that set optimal parameters (temperature, max tokens, reasoning effort) per model.
73
80
 
@@ -129,6 +136,13 @@ Install UAP (`npm i -g universal-agent-protocol`) and every feature below activa
129
136
 
130
137
  **Why it matters:** You describe the goal, not the steps. HALO figures out the plan and executes it.
131
138
 
139
+ ### CLI Self-Update on Setup
140
+ **What it does:** `uap setup` checks npm and auto-updates the globally-installed `uap` CLI to the latest published version before configuring a project.
141
+
142
+ **When it kicks in:** At the start of every `uap setup`. Only a real global install is updated (source checkouts and local/monorepo deps are left alone), it is downgrade-proof, and it is skipped in CI for reproducibility (`UAP_SELF_UPDATE=1` forces). Opt out with `--no-self-update` / `UAP_NO_SELF_UPDATE=1`.
143
+
144
+ **Why it matters:** Install once; every subsequent setup self-applies the latest behaviour without a manual `npm install -g`. The update takes effect on the next `uap` invocation.
145
+
132
146
  ---
133
147
 
134
148
  ## Local Model Setup
@@ -51,7 +51,46 @@ uap deliver "big refactor across modules" --optimize # enable every aid
51
51
  uap deliver "trivial typo fix" --no-auto # disable dynamic optimization
52
52
  ```
53
53
 
54
- `--optimize` enables exploration, critic, practices, escalation, ideation, HALO spans, and coordination together.
54
+ `--optimize` enables exploration, critic, practices, escalation, ideation, HALO spans, and coordination together. It also turns on the local **integration** and **deploy-dev** gate tiers (below); the commit/push boundary (`--watch-ci`) stays opt-in.
55
+
56
+ ---
57
+
58
+ ## Tiered validation gates (cheap-first)
59
+
60
+ Real delivery is more than unit tests — it also has to integrate and deploy. `deliver` groups gates into **tiers** and runs them **cheapest-first**, only promoting to the next, more expensive tier once the prior one is green:
61
+
62
+ ```
63
+ fast → integration → deploy-dev → │ commit │ → ci → deploy-staging → deploy-prod
64
+ └──────── run locally ───────────┘ └──── verified by CI (the watcher) ────┘
65
+ ```
66
+
67
+ - **`fast`** — build, typecheck, unit tests, lint (the original ladder). Always on.
68
+ - **`integration`** — `test:integration` / `test:e2e` scripts, or a pytest `integration` marker. **Auto-detected and on by default** (like lint); disable with `--no-integration`.
69
+ - **`deploy-dev`** — a local dev deploy + smoke check: brings a `docker compose` stack up (or runs a `deploy:dev` / `smoke` script), health-checks it, then **always tears it down**. Opt-in with `--deploy-dev`. If docker is unavailable the tier is *skipped*, never failed.
70
+
71
+ Because promotion is cheap-first, a turn that fails the build never pays for integration or deploy — the expensive tiers run only once the cheap ones pass.
72
+
73
+ ### CI / deploy feedback loop
74
+
75
+ The `ci`, `deploy-staging`, and `deploy-prod` tiers are **never run locally** — they are verified by CI after commit. With `--watch-ci`, once the local tiers are green `deliver`:
76
+
77
+ 1. commits the applied files and **pushes the current worktree branch** (never `master`/`main`, never force-push);
78
+ 2. resolves the CI run for that exact commit (matched by SHA) and watches it;
79
+ 3. on CI / deploy failure, feeds the **sanitized failure logs back into a fresh convergence pass** and re-converges (bounded by `--ci-passes`).
80
+
81
+ `--until-deployed` implies `--watch-ci` and additionally requires the `deploy-staging` and `deploy-prod` jobs to be green before exiting 0 — so "delivered" means *deployed and verified*, not just "tests pass locally".
82
+
83
+ The bundled workflow [`.github/workflows/deploy-verify.yml`](../../.github/workflows/deploy-verify.yml) provides the `deploy-dev` / `deploy-staging` / `deploy-prod` jobs the watcher reads. Add `deploy:dev` / `deploy:staging` / `deploy:prod` and `smoke` npm scripts to your project and the no-op verification steps become real.
84
+
85
+ ```bash
86
+ # iterate locally through fast → integration → local dev deploy+smoke
87
+ uap deliver "add the orders endpoint" --deploy-dev
88
+
89
+ # …then push, watch CI, and re-converge until staging + prod deploy verify green
90
+ uap deliver "add the orders endpoint" --until-deployed
91
+ ```
92
+
93
+ > Gate inputs are protected like tests: the model cannot "pass" by editing `docker-compose.yml`, `Dockerfile`, `*.tf`, CI workflows, or runner configs (`--no-protect-tests` lifts this).
55
94
 
56
95
  ---
57
96
 
@@ -67,6 +106,13 @@ uap deliver "trivial typo fix" --no-auto # disable dynamic optimiz
67
106
  | `--escalate-model <preset>` | Stronger model for escalation (default `$UAP_ESCALATE_MODEL`) |
68
107
  | `--temperature <t>` | Sampling temperature (default: execution-profile value) |
69
108
  | `--gates <ids>` | Gate subset: `build,typecheck,test,lint` |
109
+ | `--tiers <list>` | Explicit local tiers to run, e.g. `fast,integration,deploy-dev` (overrides auto-detection) |
110
+ | `--integration` / `--no-integration` | Run the integration tier (on by default when a suite is detected) |
111
+ | `--deploy-dev` / `--no-deploy-dev` | Run a local dev deploy + smoke tier (compose up → smoke → teardown) |
112
+ | `--watch-ci` | After local-green, commit + push the worktree branch and watch CI; re-converge on failure |
113
+ | `--until-deployed` | Imply `--watch-ci` and require CI + staging/prod deploy jobs green before exiting 0 |
114
+ | `--ci-passes <n>` | Max CI re-converge passes on failure (1–10, default `2`) |
115
+ | `--ci-timeout <minutes>` | CI watch budget in minutes (1–120, default `20`) |
70
116
  | `--candidates <n>` | Best-of-N exploration: candidates per turn (2–8) |
71
117
  | `--critic` | Structured critique of failed turns |
72
118
  | `--practices` / `--no-semantic` | Inject/record best-practice cards (keyword retrieval with `--no-semantic`) |
@@ -1,7 +1,7 @@
1
1
  # UAP CLI Reference
2
2
 
3
3
  > Complete command reference for the Universal Agent Protocol command-line interface (`uap`).
4
- > Version v1.40.0.
4
+ > Version v1.48.0.
5
5
 
6
6
  The `uap` binary is the single entry point for every UAP capability: project
7
7
  initialization, the tiered memory system, git worktree workflow, multi-agent
@@ -97,13 +97,23 @@ uap setup [options]
97
97
  | `-p, --platform <platforms...>` | Targets: `claude`, `factory`, `vscode`, `opencode`, `omp`, `cline`, `codex`, `aider`, `continue`, `windsurf`, `zed`, `copilot`, `jetbrains`, `swe-agent`, `all` (default `all`) |
98
98
  | `--no-patterns` | Skip pattern RAG setup |
99
99
  | `--no-memory` | Skip memory system setup |
100
+ | `--no-self-update` | Skip the automatic UAP CLI version check / self-update (also `UAP_NO_SELF_UPDATE=1`) |
100
101
  | `--systemd-services` | Scaffold user systemd services for llama.cpp + anthropic proxy |
101
102
  | `-d, --project-dir <path>` | Target project directory (defaults to cwd) |
102
103
  | `-i, --interactive` | Run the interactive setup wizard with feature toggles |
103
104
 
105
+ Before configuring the project, `setup` ensures the **globally-installed UAP CLI
106
+ is at the latest published npm version** and self-updates if it is behind. It is
107
+ safe and non-fatal: it only updates a real global install (a source checkout or a
108
+ local/monorepo dependency is left untouched), is downgrade-proof, and is
109
+ **skipped in CI** for reproducibility (`UAP_SELF_UPDATE=1` forces it). The update
110
+ takes effect on the next `uap` invocation. Disable with `--no-self-update` or
111
+ `UAP_NO_SELF_UPDATE=1`.
112
+
104
113
  ```bash
105
114
  uap setup -i
106
115
  uap setup -p claude -d ~/projects/myapp
116
+ uap setup --no-self-update # configure without touching the global CLI
107
117
  ```
108
118
 
109
119
  ---
@@ -293,6 +303,13 @@ uap deliver <instruction...> [options]
293
303
  | `--endpoint <url>` | Override the model endpoint (OpenAI-compatible `/v1`) |
294
304
  | `--temperature <t>` | Sampling temperature (default: execution-profile value) |
295
305
  | `--gates <ids>` | Comma-separated gate subset: `build,typecheck,test,lint` |
306
+ | `--tiers <list>` | Local tiers to run: `fast,integration,deploy-dev` (overrides auto-detection) |
307
+ | `--integration` / `--no-integration` | Run the integration tier (on by default when `test:integration`/`test:e2e`/pytest marker is detected) |
308
+ | `--deploy-dev` / `--no-deploy-dev` | Run a local dev deploy + smoke tier (compose up -> smoke -> teardown) |
309
+ | `--watch-ci` | After local-green, commit + push the worktree branch and watch CI; re-converge on CI/deploy failure (never pushes master/main) |
310
+ | `--until-deployed` | Imply `--watch-ci` and require CI + staging/prod deploy jobs green before exiting 0 |
311
+ | `--ci-passes <n>` | Max CI re-converge passes on failure (1-10, default 2) |
312
+ | `--ci-timeout <minutes>` | CI watch budget in minutes (1-120, default 20) |
296
313
  | `--candidates <n>` | Best-of-N exploration: candidates per turn (2-8) |
297
314
  | `--critic` | Structured critique of failed turns (extra model call per failure) |
298
315
  | `--practices` | Inject learned best-practice cards; record new ones on success |
@@ -316,9 +333,14 @@ uap deliver <instruction...> [options]
316
333
  ```bash
317
334
  uap deliver "add a /healthz endpoint with a test" --gates build,test
318
335
  uap deliver "refactor the auth module" --optimize --ceiling 20
336
+ uap deliver "add the orders endpoint" --deploy-dev # incl. local dev deploy+smoke
337
+ uap deliver "add the orders endpoint" --until-deployed # push, watch CI, verify staging/prod
319
338
  uap deliver "fix the failing CI" --dry-run
320
339
  ```
321
340
 
341
+ See the [deliver guide](../guides/DELIVER.md#tiered-validation-gates-cheap-first)
342
+ for the tiered gate model and the CI/deploy feedback loop.
343
+
322
344
  ---
323
345
 
324
346
  ## `harness`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miller-tech/uap",
3
- "version": "1.48.0",
3
+ "version": "1.48.1",
4
4
  "description": "Autonomous AI agent memory system with CLAUDE.md protocol enforcement",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",