convene-cli 1.10.0 → 1.11.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.
@@ -147,6 +147,10 @@ function codexCwdFromStdin() {
147
147
  function toRenderMessages(arr) {
148
148
  return Array.isArray(arr) ? arr : [];
149
149
  }
150
+ /** Server-relevance-filtered directed halts (inert tokens) → the channel block. */
151
+ function toRenderHalts(arr) {
152
+ return Array.isArray(arr) ? arr : [];
153
+ }
150
154
  /**
151
155
  * Front-of-session auto-announce: the FIRST authenticated `fetch` of a session
152
156
  * spawns a DETACHED, fire-and-forget `convene announce` so the bus learns who is
@@ -322,6 +326,9 @@ async function runFetch(opts = {}) {
322
326
  lookbackMin: ctx.lookback,
323
327
  openItems: toRenderMessages(data?.inbox ?? []),
324
328
  recent: toRenderMessages(data?.messages ?? []),
329
+ // Directed halts → the !! INTERRUPTS section (a fresh ok payload, incl. the
330
+ // <3s cache hit; the DEGRADED branch passes none — structural suppression).
331
+ halts: toRenderHalts(data?.halts ?? []),
325
332
  presence: toRenderPresence(data?.presence ?? [], data?.server_time),
326
333
  health: { state: 'ok', syncedAgoSec: ctx.syncedAgoSec, openCount: Number(data?.open_for_you ?? (data?.inbox?.length ?? 0)) },
327
334
  }), opts.codexHook);
package/dist/render.js CHANGED
@@ -115,6 +115,15 @@ function renderRecentLine(m) {
115
115
  return `${t} [ACK] ${from} [id: ${m.short_id}]`;
116
116
  case 'feature_feedback':
117
117
  return `${t} [FEEDBACK] ${from} [id: ${m.short_id}] ${m.body ?? ''}`.trimEnd();
118
+ case 'halt':
119
+ case 'interrupt': {
120
+ // A directed control signal. Render the type + routing + id as inert tokens
121
+ // (the high-priority call-to-action lives in the !! INTERRUPTS section); the
122
+ // UNTRUSTED reason in `body` is NEVER inlined into the feed.
123
+ const verb = m.type === 'interrupt' ? 'INTERRUPT' : 'HALT';
124
+ const to = inertToken(m.to_session_glob ?? m.to_handle ?? 'you', 64);
125
+ return `${t} [${verb}] ${from} [to: ${to}] [id: ${m.short_id}] — STOP and surface to the human.`;
126
+ }
118
127
  default:
119
128
  // Unknown/future message type (e.g. a server newer than this CLI).
120
129
  // Render a generic, inert one-liner — never undefined, never throw.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "convene-cli",
3
- "version": "1.10.0",
3
+ "version": "1.11.0",
4
4
  "description": "Convene CLI — AI development coordination bus client + UserPromptSubmit hook. Install: npm i -g convene-cli; then `convene setup`.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://dev.convene.live",