argus-decision-mcp 1.9.0 → 1.10.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.
@@ -8,6 +8,7 @@ import { z } from 'zod';
8
8
  import { tunedStandingSense } from '../lib/ambient-prefs.js';
9
9
  import { envelope } from '../lib/envelope.js';
10
10
  import { canElicit } from '../lib/elicit.js';
11
+ import { packageMeta } from '../lib/package-meta.js';
11
12
  import { ENVELOPE_OUTPUT_SCHEMA, zArgusDir, zDate } from './tool-types.js';
12
13
  import { handleToolException } from './errors.js';
13
14
  import { briefDivergence, readV2Brief } from '../v2/mirror.js';
@@ -28,6 +29,19 @@ const anchorMirrorShownFor = new Set();
28
29
  export function resetCheckInSession() {
29
30
  anchorMirrorShownFor.clear();
30
31
  }
32
+ /**
33
+ * The wire facts a session can see about ITSELF. `picker` answers "does this host
34
+ * show real pickers"; `server_version` answers "which build am I actually talking
35
+ * to" — the gap that let a founder dogfood 1.2.0 for twelve days while seven
36
+ * releases sat on npm (npx reuses a cached install whenever the spec is a RANGE,
37
+ * so `argus-decision-mcp@^1` never upgrades on its own). CI gates the repo and
38
+ * npm holds the latest; neither can see what a live session actually launched.
39
+ * Reported on every check_in so `/doctor` — and the user — can compare it to the
40
+ * version the plugin pins, instead of inferring staleness from missing behavior.
41
+ */
42
+ function wireFacts() {
43
+ return { picker: canElicit() ? 'one_tap' : 'text_fallback', server_version: packageMeta().version };
44
+ }
31
45
  const inputSchema = z.strictObject({
32
46
  argus_dir: zArgusDir,
33
47
  // max(365), not max(30): the handler clamps the WINDOW to 30 days, but the
@@ -272,14 +286,14 @@ export const checkIn = {
272
286
  ok: true, tool: 'argus_check_in',
273
287
  surface: S.first_run,
274
288
  next_actions: ['argus_capture'],
275
- data: { due: [], due_count: 0, due_premises: [], due_premise_count: 0, due_open_questions: [], due_open_question_count: 0, first_run: true, today, picker: canElicit() ? 'one_tap' : 'text_fallback' },
289
+ data: { due: [], due_count: 0, due_premises: [], due_premise_count: 0, due_open_questions: [], due_open_question_count: 0, first_run: true, today, ...wireFacts() },
276
290
  });
277
291
  }
278
292
  return envelope({
279
293
  ok: true, tool: 'argus_check_in',
280
294
  surface: mirrorLine + S.nothing_due + accountHint + upcomingLine + fleetLine + integrityLine,
281
295
  next_actions: ['stop'],
282
- data: { due: [], due_count: 0, due_premises: [], due_premise_count: 0, due_open_questions: [], due_open_question_count: 0, picker: canElicit() ? 'one_tap' : 'text_fallback', ...(openWatch.length ? { open_predictions: openWatch, standing_sense: tunedStandingSense() } : {}), ...(upDays > 0 ? { upcoming } : {}), ...(a['fleet'] === true ? { fleet: fleetRows } : {}), ...watchData, today, integrity: ledger.integrity, ...(process.env['ARGUS_V2_DEBUG'] === '1' ? { capture_status: captureStatus, v2_brief: readV2Brief(dir, today), v2_divergence: briefDivergence([], readV2Brief(dir, today)) } : {}) },
296
+ data: { due: [], due_count: 0, due_premises: [], due_premise_count: 0, due_open_questions: [], due_open_question_count: 0, ...wireFacts(), ...(openWatch.length ? { open_predictions: openWatch, standing_sense: tunedStandingSense() } : {}), ...(upDays > 0 ? { upcoming } : {}), ...(a['fleet'] === true ? { fleet: fleetRows } : {}), ...watchData, today, integrity: ledger.integrity, ...(process.env['ARGUS_V2_DEBUG'] === '1' ? { capture_status: captureStatus, v2_brief: readV2Brief(dir, today), v2_divergence: briefDivergence([], readV2Brief(dir, today)) } : {}) },
283
297
  });
284
298
  }
285
299
  const parts = [];
@@ -313,7 +327,7 @@ export const checkIn = {
313
327
  surface: mirrorLine + parts.join(' ') + upcomingLine + fleetLine + integrityLine,
314
328
  next_actions: next,
315
329
  data: {
316
- picker: canElicit() ? 'one_tap' : 'text_fallback',
330
+ ...wireFacts(),
317
331
  due: dueEnriched, due_count: dueAll.length,
318
332
  ...(dueTruncated > 0 ? { due_truncated: `${dueAll.length} due, showing ${DUE_TOP} oldest` } : {}),
319
333
  due_premises: duePrem, due_premise_count: premiseGroups.length,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "argus-decision-mcp",
3
- "version": "1.9.0",
3
+ "version": "1.10.0",
4
4
  "description": "Argus decision-accountability MCP server — clarify a decision, save a falsifiable prediction, and record what reality did. The model never grades you.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",