iclavue 10.5.13 → 10.5.16

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.
@@ -7,7 +7,7 @@ import { createInterface } from 'node:readline/promises'
7
7
  import { stdin, stdout } from 'node:process'
8
8
  import { fileURLToPath } from 'node:url'
9
9
 
10
- const APP_VERSION = '10.5.13'
10
+ const APP_VERSION = '10.5.16'
11
11
  const APP_NPM_PACKAGE_NAME = 'clavue'
12
12
  export const CURRENT_PROVIDER_PROFILE_ID = '__current_provider__'
13
13
  const SUPPORTED_LANGUAGES = new Set(['en', 'zh'])
@@ -89,7 +89,7 @@ Full engine conversation restore remains `/rewind` (agent). Esc×2 is local re-e
89
89
  | Enter | Send (or run local `/`); **empty** + Needs Input open → `/parallel needs` panel |
90
90
  | ↑ ↓ | Move caret by **soft-wrap display row** when draft has >1 display row; else history (↑ from top) |
91
91
  | Ctrl+Y (prompt focus) | Copy **selection** if any, else entire draft |
92
- | Mouse drag on prompt | **App-level** select → release copies (native select cannot survive TUI redraw) |
92
+ | Mouse drag on prompt | **App-level** select → release copies, then clears highlight (native select cannot survive TUI redraw) |
93
93
  | Tab | Toggle prompt ↔ scrollback |
94
94
  | ↑ ↓ (history) | Prompt history only when caret cannot move within draft display rows |
95
95
  | Ctrl+P / ? | Searchable command palette |
@@ -139,6 +139,20 @@ Full engine conversation restore remains `/rewind` (agent). Esc×2 is local re-e
139
139
  | Panel row `worker:…` Enter | Resolve / ack worker gate (not a permission y/a/n) |
140
140
  | Permission modal **y / a / n** | Session tool permission only — never worker reply |
141
141
 
142
+ ## Session · Structured questions
143
+
144
+ `AskUserQuestion` uses the same live permission channel but renders its options
145
+ instead of the generic y/a/n modal. `↑↓` or number keys choose, `Space` toggles
146
+ multi-select rows, `Enter` submits the current question, and `Esc` declines.
147
+ The synthetic `Other` row accepts typed or pasted free-form text. Answers from
148
+ every question are returned to the engine in `updatedInput.answers`.
149
+
150
+ MCP `elicitation` requests share this owner-bound modal. Form mode renders the
151
+ restricted primitive JSON Schema fields and returns typed `content`; URL mode
152
+ shows the validated HTTP(S) URL and opens it after acceptance. `Esc` reports
153
+ `cancel`, while the visible Decline row reports `decline`. Unsupported or
154
+ invalid schemas fail closed instead of leaving the agent waiting.
155
+
142
156
  ---
143
157
 
144
158
  ## Session · History search (Ctrl+R)
@@ -171,9 +185,9 @@ Full engine conversation restore remains `/rewind` (agent). Esc×2 is local re-e
171
185
  | Alt+T | Thinking toggle |
172
186
  | Alt+O | Fast model toggle |
173
187
  | Ctrl+L | Collapse last tool group |
174
- | Mouse drag | Select → copy |
188
+ | Mouse drag | Select → copy, then clear highlight |
175
189
 
176
- Terminal-family running-turn overrides follow Grok 0.2.93: Apple Terminal uses
190
+ Terminal-family running-turn overrides follow the Grok 0.2.101 guide: Apple Terminal uses
177
191
  `Ctrl+O` for send-now; VS Code, Cursor, Windsurf, and Zed use `Ctrl+L`.
178
192
  Outside a running prompt these keys retain always-approve and collapse behavior.
179
193
 
@@ -126,7 +126,26 @@ Best practice:
126
126
  - Change provider and slot routing through `/provider`, not by hand-editing environment variables.
127
127
  - Run `clavue provider validate <profile>` after every model or gateway change.
128
128
  - Run `clavue provider matrix <profile>` when deciding which GPT/Codex route is safe.
129
- - Treat a route as production-safe only when it validates native tool/function calling, not just chat completion.
129
+
130
+ ### Product policy: open tools first, health may narrow
131
+
132
+ Clavue's runtime coding route policy is **open-tools first**:
133
+
134
+ - Any **user-configured** provider route keeps a full coding surface by default.
135
+ Capability snapshots may choose transport (messages / responses / chat
136
+ completions) and inform warnings, but they must **not** hide tools or force a
137
+ chat-only workflow solely because function calling is unvalidated.
138
+ - **Permission mode** (`/permissions`) is the operator's explicit execution
139
+ boundary — not capability probes.
140
+ - **Provider health** (ledger: degraded / broken) *is* allowed to narrow
141
+ workflow tools, force strict recovery, and surface `qualityTier` as
142
+ `degraded` / `blocked` so orchestration can enter `fallback_chain`.
143
+
144
+ Validation (`provider validate` / matrix) remains the recommended gate before
145
+ **trusting a new gateway for production workloads**, but missing validation no
146
+ longer means Clavue refuses the coding surface. Prefer validate-then-use for
147
+ new endpoints; treat runtime health demotions as the safety net for
148
+ already-configured routes.
130
149
 
131
150
  ## `/model` Is A Main-Session Override
132
151
 
@@ -78,6 +78,7 @@ Every message:
78
78
  | `session.prefs` | `compact?`, `verbose?`, `vimMode?`, `multiline?`, `stickyUserHeaders?`, `alwaysAllowCount?`, `theme?` |
79
79
  | `prompt.queue.snapshot` | `items[{id,text}]` |
80
80
  | `session.started` | `sessionId`, `cwd` |
81
+ | `session.focus` | `sessionId`, `alreadyOpen?` — already-open session focus (no duplicate spawn) |
81
82
  | `session.ended` | `reason` |
82
83
  | `agent.running` | `prompt?` — turn in flight (pager shows Executing) |
83
84
  | `agent.idle` | `{}` — turn finished / cancelled |
@@ -103,7 +104,7 @@ Every message:
103
104
  | `parallel.roster` | `runId`, `goal`, `line`, `counts{needs_input,working,queued,done,failed}`, `workers[]` — worker state machine chrome |
104
105
  | `parallel.needs_input` | `total`, `line`, `items[{id,source,label,reason,kind}]` — engineering gates hub (perms + workers) |
105
106
  | `parallel.merge` | `runId`, `goal`, `ok`, `ready[]`, `failed[]`, `pending[]`, `steps[]`, `summary`, `body`, `agentPrompt` — multi-agent merge suggestion card (L1 present; apply via agent = L2) |
106
- | `permission.request` | `requestId`, `tool`, `summary`, `risk` |
107
+ | `permission.request` | `requestId`, `tool`, `summary`, `risk`, optional `input` for structured interaction |
107
108
  | `permission.resolved` | `requestId`, `outcome` (`allowed`\|`denied`\|`cancelled`), `reason?`, `taskId?` |
108
109
  | `background.task.started` | `taskId`, `sessionId?` |
109
110
  | `background.task.permission` | `taskId`, `requestId`, `tool`, `summary` — observability event; the actionable modal remains `permission.request` |
@@ -131,7 +132,7 @@ The `hello` handshake is also valid in the `a2p` direction.
131
132
  | `prompt.queue.open` | `{}` — request the latest snapshot |
132
133
  | `prompt.queue.remove` | `id` |
133
134
  | `prompt.queue.move` | `id`, `direction` (negative = earlier, positive = later) |
134
- | `permission.respond` | `requestId`, `allow`, `always?` |
135
+ | `permission.respond` | `requestId`, `allow`, `always?`, `responseAction?` (`accept`\|`decline`\|`cancel`), `updatedInput?` — structured tools and MCP elicitations return answers/edits instead of a bare approval |
135
136
  | `permission.toggle_always` | `{}` |
136
137
  | `permission.cycle` | `{}` |
137
138
  | `prefs.toggle_fast` | `{}` |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iclavue",
3
- "version": "10.5.13",
3
+ "version": "10.5.16",
4
4
  "description": "Clavue: execution-first AI coding CLI with direct repo tools, provider routing, native workflows, MCP integration, and long-session recovery",
5
5
  "keywords": [
6
6
  "iclavue",
@@ -72,6 +72,7 @@
72
72
  ],
73
73
  "scripts": {
74
74
  "postinstall": "node scripts/postinstall-pager.mjs",
75
+ "prepublishOnly": "npm run check:pager-native-publish",
75
76
  "build": "npm run check:release && npm pack --dry-run",
76
77
  "build:knowledge": "node scripts/build-project-knowledge.mjs",
77
78
  "vendor:ripgrep": "node scripts/vendor-ripgrep.mjs",
@@ -106,6 +107,7 @@
106
107
  "check:pager-release": "cargo fmt --manifest-path pager/Cargo.toml -- --check && cargo test --locked --manifest-path pager/Cargo.toml && npm run pager:test && npm run check:pager-surface-catalog && npm run check:ui-protocol-registry && npm run check:pager-ui",
107
108
  "pager:check": "npm run pager:stage && npm run pager:test",
108
109
  "check:pager-ui": "node scripts/check-pager-ui-quality.mjs",
110
+ "check:pager-native-publish": "node scripts/check-pager-native-publish.mjs",
109
111
  "restore:authored-source": "node scripts/restore-authored-source.mjs",
110
112
  "test": "node --loader ./tests/ts-esm-loader.mjs --test tests/*.test.mjs",
111
113
  "test:fast": "node scripts/run-fast-tests.mjs",