@theronap/agnoclast-mcp 0.9.246 → 0.9.248

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.
@@ -90,6 +90,12 @@ export function formatPressing(pressing) {
90
90
  const when = !Number.isFinite(m) ? 'Starting soon' : m > 0 ? `In ${mins(m)}` : m === 0 ? 'Starting now' : `Started ${mins(-m)} ago`
91
91
  const where = p.location ? ` · ${String(p.location).replace(/\s+/g, ' ').trim().slice(0, 80)}` : ''
92
92
  lines.push(`⏰ ${when}: ${named(p.title)}${p.at ? ` — ${p.at}` : ''}${where}`)
93
+ } else if (p?.kind === 'record_offer') {
94
+ // Theron, 2026-10-20: "offer to record for me right as an event is starting". An OFFER: ask, and
95
+ // only point them at it — a session cannot hear the room.
96
+ const m = Number(p.minutes)
97
+ const when = Number.isFinite(m) && m < 0 ? `started ${mins(-m)} ago` : 'is starting now'
98
+ lines.push(`🎙 ${named(p.title)} ${when} — OFFER TO RECORD IT: ask if they want it recorded; if yes, Record now in Agnoclast's meeting pill (desktop app or web console) captures it.`)
93
99
  } else if (p?.kind === 'due_soon') {
94
100
  const m = Number(p.minutes)
95
101
  // ⚠ A record may already have discharged this. Then the session must ASK: telling someone they
@@ -165,7 +171,7 @@ export function pressingAcks(pressing) {
165
171
  const handoff = p.kind === 'asked' || p.kind === 'given' || p.kind === 'declined' || p.kind === 'lapsed'
166
172
  || p.kind === 'meeting_missing' || p.kind === 'meeting_waiting'
167
173
  const rollup = (p.kind === 'due_today' || p.kind === 'work_now') && Number(p.count) > 0
168
- if (p.kind === 'event' || p.kind === 'due_soon' || handoff || rollup) {
174
+ if (p.kind === 'event' || p.kind === 'record_offer' || p.kind === 'due_soon' || handoff || rollup) {
169
175
  out.push({ subject: p.subject, bucket: p.bucket })
170
176
  }
171
177
  }
package/lib/server.mjs CHANGED
@@ -6491,7 +6491,11 @@ function renderNudge(payload) {
6491
6491
  const out = await res.json().catch(() => null)
6492
6492
  if (!res.ok) return toolError(`Could not ${action}: ${out?.error ?? res.status}`)
6493
6493
  const verb = { granted: 'now has access to', already_granted: 'already had access to', revoked: 'no longer has access to', not_granted: 'had no grant on' }[out.action]
6494
- return { content: [{ type: 'text', text: `Done — ${out.grantee} ${verb} the ${out.tier} page.` }] }
6494
+ // Agent oversight (2026-10-20): a confidential page shared with an AI agent is shared with its creator and
6495
+ // manager too. The sharer must be told who else can now read it.
6496
+ const also = Array.isArray(out.alsoGranted) && out.alsoGranted.length
6497
+ ? ` Because ${out.grantee} is an AI agent, its overseers can read it too: ${out.alsoGranted.join(', ')}.` : ''
6498
+ return { content: [{ type: 'text', text: `Done — ${out.grantee} ${verb} the ${out.tier} page.${also}` }] }
6495
6499
  },
6496
6500
  )
6497
6501
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theronap/agnoclast-mcp",
3
- "version": "0.9.246",
3
+ "version": "0.9.248",
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": {