@theronap/cortex-mcp 0.9.134 → 0.9.135
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/lib/server.mjs +14 -2
- package/package.json +1 -1
package/lib/server.mjs
CHANGED
|
@@ -2418,7 +2418,7 @@ function renderNudge(payload) {
|
|
|
2418
2418
|
'capture_meeting',
|
|
2419
2419
|
{
|
|
2420
2420
|
title: 'Capture a meeting transcript, joined to its calendar event',
|
|
2421
|
-
description: "Capture a meeting transcript you were given — a paste, an export, notes — as a real record joined to the calendar event it came from. ⚠ CALL IT TWICE. Without `calendar_record_id` it WRITES NOTHING and returns candidate calendar events near that time; you pick one and call again. Overlap alone is not an answer — 90 of 120 calendar records are recurring birthdays and an all-day event overlaps its whole day, so each candidate carries `caveats` saying why it might be wrong. Read them before choosing. WHY THE JOIN MATTERS: a pasted transcript has no attendee list, so on its own it is reachable from nobody. The calendar event's attendee list is authoritative, and the captured meeting inherits it — that is what makes the transcript findable from the people who were in it. The brain follows from the matched event; you never pick one. Attendees who have no page come back as `unclaimed` — each is a person in the room nobody has authored, and authoring one reaches
|
|
2421
|
+
description: "Capture a meeting transcript you were given — a paste, an export, notes — as a real record joined to the calendar event it came from. ⚠ CALL IT TWICE. Without `calendar_record_id` it WRITES NOTHING and returns candidate calendar events near that time; you pick one and call again. Overlap alone is not an answer — 90 of 120 calendar records are recurring birthdays and an all-day event overlaps its whole day, so each candidate carries `caveats` saying why it might be wrong. Read them before choosing. WHY THE JOIN MATTERS: a pasted transcript has no attendee list, so on its own it is reachable from nobody. The calendar event's attendee list is authoritative, and the captured meeting inherits it — that is what makes the transcript findable from the people who were in it. The brain follows from the matched event; you never pick one. Attendees who have no page come back as `unclaimed` — each is a person in the room nobody has authored, and authoring one reaches their EXISTING records too, not only future meetings: claiming their identifier heals history in the same statement. Measured 2026-09-03 — ten calendar records spanning two months attached 49ms after the claim. ⚠ THE CONFIRMATION DOES NOT TELL YOU THAT. It says only that future events will attach, so a heal that just moved ten records is indistinguishable from one that did nothing. Verify by reading the page, never by trusting the reply. Meetings are stored `scoped`, never org-wide.",
|
|
2422
2422
|
inputSchema: {
|
|
2423
2423
|
occurred_at: z.string().describe('when the meeting STARTED, ISO 8601. Required for both the proposal and the capture.'),
|
|
2424
2424
|
ends_at: z.string().optional().describe('when it ended, ISO 8601. Omit and the calendar event\'s end is inherited. NEVER guess one — unknown must stay unknown.'),
|
|
@@ -3339,7 +3339,19 @@ function renderNudge(payload) {
|
|
|
3339
3339
|
const out = await res.json().catch(() => null)
|
|
3340
3340
|
if (!res.ok) return toolError(`Could not set routing identifier: ${out?.error ?? res.status}`)
|
|
3341
3341
|
const set = out?.set?.join(', ') ?? identifier
|
|
3342
|
-
|
|
3342
|
+
// ⚠ SAY WHAT ALREADY HAPPENED, NOT ONLY WHAT WILL. The claim heals history in the same
|
|
3343
|
+
// statement, so by the time this renders, existing records are ALREADY attached. The previous
|
|
3344
|
+
// wording mentioned only future events — true, and load-bearingly incomplete, which is harder
|
|
3345
|
+
// to catch than a false statement because checking it confirms it.
|
|
3346
|
+
// A ZERO IS EXPLAINED, not printed bare: an unexplained 0 recreates the same ambiguity one
|
|
3347
|
+
// level down, and identity claims (email:, thread:) attach only the CLAIMANT'S OWN records.
|
|
3348
|
+
const healed = typeof out?.attachedExisting === 'number' ? out.attachedExisting : null
|
|
3349
|
+
const healedLine = healed === null
|
|
3350
|
+
? ''
|
|
3351
|
+
: healed > 0
|
|
3352
|
+
? ` ${healed} existing record(s) ALREADY attached to this page as a result.`
|
|
3353
|
+
: ' 0 existing records attached — either nothing carries this identifier yet, or records do but belong to another owner (an identity claim only attaches your own).'
|
|
3354
|
+
return { content: [{ type: 'text', text: `Routing identifier set on document ${out?.documentId ?? '?'}: ${set}.${healedLine} Future matching events will attach here too (body mentions alone will not).` }] }
|
|
3343
3355
|
},
|
|
3344
3356
|
)
|
|
3345
3357
|
|
package/package.json
CHANGED