@theronap/agnoclast-mcp 0.9.170 → 0.9.171

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.
Files changed (2) hide show
  1. package/lib/server.mjs +18 -1
  2. package/package.json +1 -1
package/lib/server.mjs CHANGED
@@ -2165,7 +2165,24 @@ function renderNudge(payload) {
2165
2165
  // managed to list these rows for weeks without making one of them actionable.
2166
2166
  lines.push(` ${a.stagedId}`)
2167
2167
  lines.push(` ${a.title ?? '(no subject)'} · ${a.sourceType} · ${a.occurredAt?.slice(0, 10) ?? ''}`)
2168
- if (a.blockingIdentifiers?.length) {
2168
+ // 🔴 A QUESTION IS ALREADY OUT — say so FIRST, before any "held because" reason.
2169
+ //
2170
+ // Caught by using the feature once on real data, 2026-09-24, minutes after shipping it:
2171
+ // `staged_defer` wrote the question, `intake_cleanup_status` showed it to the owner, and
2172
+ // this listing rendered the arrival IDENTICALLY to three nobody had ever looked at. So the
2173
+ // next session would judge it from scratch and hit the same wall — which is the exact
2174
+ // failure the defer verb was built to end.
2175
+ //
2176
+ // ⚠ AND IT WAS IN THE API RESPONSE THE WHOLE TIME. `listStagedArrivals` returns
2177
+ // `deferredQuestion`, with an engine test asserting it. The test passed. What was missing
2178
+ // was a reader — the eighth instance of that shape this week, written into the very change
2179
+ // whose stated purpose was avoiding it. An engine-level test cannot catch it, because the
2180
+ // engine is not the surface anyone reads.
2181
+ if (a.deferredQuestion) {
2182
+ const asked = String(a.deferredQuestion.askedAt ?? '').slice(0, 10)
2183
+ lines.push(` ⏸ ASKED THE OWNER${asked ? ` on ${asked}` : ''} — do not re-judge this one: "${a.deferredQuestion.prompt}"`)
2184
+ lines.push(' Still pending on purpose: it needs placing once they answer. Their answer is in `intake_cleanup_status.openQuestions`.')
2185
+ } else if (a.blockingIdentifiers?.length) {
2169
2186
  lines.push(` blocked by: ${a.blockingIdentifiers.join(', ')}`)
2170
2187
  } else {
2171
2188
  lines.push(' held because no brain could be determined (no unknown identifiers)')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theronap/agnoclast-mcp",
3
- "version": "0.9.170",
3
+ "version": "0.9.171",
4
4
  "description": "Connect your AI assistant to Cortex — your org's projects, activity, gaps, and directives, scoped to you.",
5
5
  "type": "module",
6
6
  "bin": {