@miller-tech/uap 1.163.13 → 1.165.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 +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +5 -4
- package/dist/bin/cli.js.map +1 -1
- package/dist/browser/web-browser.d.ts +7 -0
- package/dist/browser/web-browser.d.ts.map +1 -1
- package/dist/browser/web-browser.js +15 -0
- package/dist/browser/web-browser.js.map +1 -1
- package/dist/cli/deliver.d.ts +32 -3
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +198 -31
- package/dist/cli/deliver.js.map +1 -1
- package/dist/cli/guided-setup.d.ts.map +1 -1
- package/dist/cli/guided-setup.js +13 -1
- package/dist/cli/guided-setup.js.map +1 -1
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +9 -1
- package/dist/cli/model.js.map +1 -1
- package/dist/cli/proxy-lifecycle.d.ts +66 -13
- package/dist/cli/proxy-lifecycle.d.ts.map +1 -1
- package/dist/cli/proxy-lifecycle.js +116 -49
- package/dist/cli/proxy-lifecycle.js.map +1 -1
- package/dist/cli/proxy.d.ts +46 -0
- package/dist/cli/proxy.d.ts.map +1 -1
- package/dist/cli/proxy.js +353 -23
- package/dist/cli/proxy.js.map +1 -1
- package/dist/cli/verify.d.ts +6 -0
- package/dist/cli/verify.d.ts.map +1 -1
- package/dist/cli/verify.js +64 -0
- package/dist/cli/verify.js.map +1 -1
- package/dist/cli/wizard-config.d.ts +4 -0
- package/dist/cli/wizard-config.d.ts.map +1 -1
- package/dist/cli/wizard-config.js +14 -3
- package/dist/cli/wizard-config.js.map +1 -1
- package/dist/config/settings-registry.d.ts.map +1 -1
- package/dist/config/settings-registry.js +25 -0
- package/dist/config/settings-registry.js.map +1 -1
- package/dist/coordination/effort-profile.d.ts +39 -0
- package/dist/coordination/effort-profile.d.ts.map +1 -0
- package/dist/coordination/effort-profile.js +74 -0
- package/dist/coordination/effort-profile.js.map +1 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +68 -10
- package/dist/dashboard/server.js.map +1 -1
- package/dist/delivery/agentic-executor.d.ts +15 -0
- package/dist/delivery/agentic-executor.d.ts.map +1 -1
- package/dist/delivery/agentic-executor.js +64 -3
- package/dist/delivery/agentic-executor.js.map +1 -1
- package/dist/delivery/convergence-loop.d.ts +76 -1
- package/dist/delivery/convergence-loop.d.ts.map +1 -1
- package/dist/delivery/convergence-loop.js +71 -6
- package/dist/delivery/convergence-loop.js.map +1 -1
- package/dist/delivery/critic.d.ts +7 -0
- package/dist/delivery/critic.d.ts.map +1 -1
- package/dist/delivery/critic.js.map +1 -1
- package/dist/delivery/decompose.d.ts +9 -0
- package/dist/delivery/decompose.d.ts.map +1 -1
- package/dist/delivery/decompose.js +11 -0
- package/dist/delivery/decompose.js.map +1 -1
- package/dist/delivery/execution-gate.d.ts +4 -0
- package/dist/delivery/execution-gate.d.ts.map +1 -1
- package/dist/delivery/execution-gate.js +194 -2
- package/dist/delivery/execution-gate.js.map +1 -1
- package/dist/delivery/graph-safety.d.ts +75 -0
- package/dist/delivery/graph-safety.d.ts.map +1 -0
- package/dist/delivery/graph-safety.js +98 -0
- package/dist/delivery/graph-safety.js.map +1 -0
- package/dist/delivery/mission-acceptance.d.ts.map +1 -1
- package/dist/delivery/mission-acceptance.js +69 -21
- package/dist/delivery/mission-acceptance.js.map +1 -1
- package/dist/delivery/per-phase-escalation-controller.d.ts +37 -0
- package/dist/delivery/per-phase-escalation-controller.d.ts.map +1 -0
- package/dist/delivery/per-phase-escalation-controller.js +68 -0
- package/dist/delivery/per-phase-escalation-controller.js.map +1 -0
- package/dist/delivery/per-phase-escalation.d.ts +53 -0
- package/dist/delivery/per-phase-escalation.d.ts.map +1 -0
- package/dist/delivery/per-phase-escalation.js +57 -0
- package/dist/delivery/per-phase-escalation.js.map +1 -0
- package/dist/delivery/reflect.d.ts +56 -0
- package/dist/delivery/reflect.d.ts.map +1 -0
- package/dist/delivery/reflect.js +79 -0
- package/dist/delivery/reflect.js.map +1 -0
- package/dist/delivery/user-paths.d.ts +42 -0
- package/dist/delivery/user-paths.d.ts.map +1 -1
- package/dist/delivery/user-paths.js +254 -6
- package/dist/delivery/user-paths.js.map +1 -1
- package/dist/delivery/user-validation.d.ts.map +1 -1
- package/dist/delivery/user-validation.js +21 -1
- package/dist/delivery/user-validation.js.map +1 -1
- package/dist/delivery/verification-provenance.d.ts +47 -0
- package/dist/delivery/verification-provenance.d.ts.map +1 -0
- package/dist/delivery/verification-provenance.js +48 -0
- package/dist/delivery/verification-provenance.js.map +1 -0
- package/dist/delivery/vision-judge.d.ts.map +1 -1
- package/dist/delivery/vision-judge.js +8 -1
- package/dist/delivery/vision-judge.js.map +1 -1
- package/dist/models/complexity.d.ts +36 -0
- package/dist/models/complexity.d.ts.map +1 -0
- package/dist/models/complexity.js +75 -0
- package/dist/models/complexity.js.map +1 -0
- package/dist/models/openai-compat-client.d.ts +26 -0
- package/dist/models/openai-compat-client.d.ts.map +1 -1
- package/dist/models/openai-compat-client.js +60 -8
- package/dist/models/openai-compat-client.js.map +1 -1
- package/dist/models/router.d.ts.map +1 -1
- package/dist/models/router.js +39 -10
- package/dist/models/router.js.map +1 -1
- package/dist/models/types.d.ts +60 -10
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js +128 -11
- package/dist/models/types.js.map +1 -1
- package/dist/self-tuning/prompt-variants.d.ts +93 -0
- package/dist/self-tuning/prompt-variants.d.ts.map +1 -0
- package/dist/self-tuning/prompt-variants.js +143 -0
- package/dist/self-tuning/prompt-variants.js.map +1 -0
- package/dist/tasks/types.d.ts +2 -2
- package/dist/types/config.d.ts +8 -0
- package/dist/types/config.d.ts.map +1 -1
- package/docs/INDEX.md +1 -1
- package/docs/benchmarks/COMPREHENSIVE_BENCHMARKS.md +47 -53
- package/docs/benchmarks/VALIDATION_RESULTS.md +0 -2
- package/docs/guides/COORDINATION.md +1 -1
- package/docs/guides/DEPLOY_BATCHING.md +1 -1
- package/docs/guides/DROIDS_AND_SKILLS.md +3 -2
- package/docs/guides/LOCAL_MODELS.md +1 -1
- package/docs/guides/MCP_ROUTER.md +1 -1
- package/docs/guides/MEMORY.md +2 -2
- package/docs/guides/MULTI_MODEL.md +1 -1
- package/docs/guides/POLICIES.md +1 -1
- package/docs/guides/PROXY.md +47 -4
- package/docs/guides/SANDBOX.md +1 -1
- package/docs/guides/WORKTREE_WORKFLOW.md +1 -1
- package/docs/reference/CLI.md +16 -3
- package/docs/reference/CONFIGURATION.md +1 -1
- package/docs/reference/FEATURES.md +1 -1
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/src/policies/enforcers/iac_plan_destruction_check.py +32 -4
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/templates/hooks/session-end.sh +9 -0
- package/templates/hooks/session-start.sh +10 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
|
@@ -50,6 +50,28 @@ def branch_touches_iac() -> bool:
|
|
|
50
50
|
return rc == 0 and "infra/terraform/" in out
|
|
51
51
|
|
|
52
52
|
|
|
53
|
+
def repo_selector(cmd: str) -> list[str]:
|
|
54
|
+
"""The `--repo` args to reuse when looking up the PR, mirroring whatever
|
|
55
|
+
repo the merge command itself targets.
|
|
56
|
+
|
|
57
|
+
`gh pr merge <N> --repo owner/name` merges in THAT repo, but a bare
|
|
58
|
+
`gh pr view <N>` resolves against the local checkout. Without mirroring the
|
|
59
|
+
selector, a cross-repo merge looks the number up in the wrong repo; that
|
|
60
|
+
miss then falls back to branch_touches_iac(), which scans a local tree with
|
|
61
|
+
nothing to do with the PR — so an unrelated untracked infra/terraform tf
|
|
62
|
+
file in the current checkout blocks a merge that touches no infrastructure
|
|
63
|
+
at all. Observed blocking every cross-repo merge from pay2u.
|
|
64
|
+
"""
|
|
65
|
+
m = re.search(r"(?:--repo|-R)[=\s]+([\w.-]+/[\w.-]+)", cmd)
|
|
66
|
+
if m:
|
|
67
|
+
return ["--repo", m.group(1)]
|
|
68
|
+
# A `gh api` merge call carries owner/name in its path instead of a flag.
|
|
69
|
+
m = re.search(r"repos/([\w.-]+/[\w.-]+)/pulls/\d+/merge", cmd)
|
|
70
|
+
if m:
|
|
71
|
+
return ["--repo", m.group(1)]
|
|
72
|
+
return []
|
|
73
|
+
|
|
74
|
+
|
|
53
75
|
def merge_touches_iac(cmd: str) -> bool:
|
|
54
76
|
"""Decide whether a `gh pr merge`/`gh api .../merge` command touches IaC by
|
|
55
77
|
inspecting the FILES OF THE PR BEING MERGED — not the local working tree.
|
|
@@ -61,13 +83,16 @@ def merge_touches_iac(cmd: str) -> bool:
|
|
|
61
83
|
own file list instead, and only fall back to the local check when no PR
|
|
62
84
|
number can be parsed or the lookup fails.
|
|
63
85
|
"""
|
|
64
|
-
m = re.search(r"gh\s+pr\s+merge\s+(\d+)", cmd) or re.search(
|
|
86
|
+
m = re.search(r"gh\s+pr\s+merge\s+(\d+)", cmd, re.I) or re.search(
|
|
87
|
+
r"/pulls/(\d+)/merge", cmd
|
|
88
|
+
)
|
|
65
89
|
if not m:
|
|
66
90
|
# e.g. `gh pr merge` on the current branch with no number — use local diff.
|
|
67
91
|
return branch_touches_iac()
|
|
68
92
|
pr = m.group(1)
|
|
69
93
|
rc, out, _ = run(
|
|
70
|
-
["gh", "pr", "view", pr, "--json", "files", "-q", ".files[].path"],
|
|
94
|
+
["gh", "pr", "view", pr, *repo_selector(cmd), "--json", "files", "-q", ".files[].path"],
|
|
95
|
+
timeout=20,
|
|
71
96
|
)
|
|
72
97
|
if rc != 0:
|
|
73
98
|
# Lookup failed (offline / auth) — fail safe by keeping the gate on.
|
|
@@ -91,7 +116,10 @@ def main() -> None:
|
|
|
91
116
|
op, args = parse_cli()
|
|
92
117
|
if op not in ("Bash", "bash"):
|
|
93
118
|
emit(True, "not a bash op")
|
|
94
|
-
|
|
119
|
+
raw_cmd = args.get("command") or ""
|
|
120
|
+
# Markers are matched case-insensitively, but repo_selector() needs the
|
|
121
|
+
# original case of an owner/name argument — so keep both forms.
|
|
122
|
+
cmd = raw_cmd.lower()
|
|
95
123
|
|
|
96
124
|
is_tf_apply = any(m in cmd for m in APPLY_MARKERS)
|
|
97
125
|
is_wf_apply = any(m in cmd for m in WORKFLOW_APPLY) and "iac-terraform" in cmd and "apply" in cmd
|
|
@@ -104,7 +132,7 @@ def main() -> None:
|
|
|
104
132
|
# Merges/pushes only gated when IaC is actually touched. For `gh pr merge`
|
|
105
133
|
# inspect the PR's own files; for local pushes use the working-tree diff.
|
|
106
134
|
if (is_merge or is_push_main) and not (is_tf_apply or is_wf_apply):
|
|
107
|
-
touches = merge_touches_iac(
|
|
135
|
+
touches = merge_touches_iac(raw_cmd) if is_merge else branch_touches_iac()
|
|
108
136
|
if not touches:
|
|
109
137
|
emit(True, "merge/push does not touch infra/terraform")
|
|
110
138
|
|
|
Binary file
|
|
@@ -58,4 +58,13 @@ if [ -d "$BACKUP_DIR" ]; then
|
|
|
58
58
|
find "$BACKUP_DIR" -maxdepth 1 -mindepth 1 -type d -mtime +7 -exec rm -rf {} \; 2>/dev/null || true
|
|
59
59
|
fi
|
|
60
60
|
|
|
61
|
+
# Session-scoped proxy + dashboard release: stop them ONLY if THIS session
|
|
62
|
+
# started them and no other client remains (adopted/externally-managed services
|
|
63
|
+
# are never killed; other active clients keep them alive). Fail-open; never
|
|
64
|
+
# blocks exit.
|
|
65
|
+
if command -v uap >/dev/null 2>&1; then
|
|
66
|
+
_uap_pc="${CLAUDE_SESSION_ID:-${FACTORY_SESSION_ID:-${CURSOR_SESSION_ID:-${UAP_SESSION_ID:-ppid-$PPID}}}}"
|
|
67
|
+
( cd "$PROJECT_DIR" 2>/dev/null && timeout 20 uap proxy release --if-enabled --quiet --client "$_uap_pc" --client-pid "$PPID" ) >/dev/null 2>&1 || true
|
|
68
|
+
fi
|
|
69
|
+
|
|
61
70
|
exit 0
|
|
@@ -250,6 +250,16 @@ if command -v uap >/dev/null 2>&1; then
|
|
|
250
250
|
fi
|
|
251
251
|
fi
|
|
252
252
|
|
|
253
|
+
# Session-scoped proxy autostart (opt-in via .uap.json proxy.autostart). Starts
|
|
254
|
+
# the proxy if none is running, or ADOPTS an already-running one, and brings the
|
|
255
|
+
# operational dashboard up with it (http://localhost:3847 — opt out with
|
|
256
|
+
# `uap proxy dashboard off`). Reference-counted: released only when the last
|
|
257
|
+
# client leaves. Fail-open, never blocks.
|
|
258
|
+
if command -v uap >/dev/null 2>&1; then
|
|
259
|
+
_uap_pc="${CLAUDE_SESSION_ID:-${FACTORY_SESSION_ID:-${CURSOR_SESSION_ID:-${UAP_SESSION_ID:-ppid-$PPID}}}}"
|
|
260
|
+
( cd "$PROJECT_DIR" 2>/dev/null && timeout 30 uap proxy ensure --if-enabled --quiet --client "$_uap_pc" --client-pid "$PPID" ) >/dev/null 2>&1 || true
|
|
261
|
+
fi
|
|
262
|
+
|
|
253
263
|
if [ -n "$output" ]; then
|
|
254
264
|
echo "$output"
|
|
255
265
|
fi
|