@mmnto/mcp 1.17.0 → 1.18.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.
package/dist/context.d.ts CHANGED
@@ -69,6 +69,22 @@ export interface ServerContext {
69
69
  */
70
70
  export declare function _reconnectOnContext(ctx: ServerContext): Promise<void>;
71
71
  export declare function reconnectStore(): Promise<void>;
72
+ export interface EffectiveLinkCandidate {
73
+ path: string;
74
+ nameOverride?: string;
75
+ }
76
+ /**
77
+ * Dedupe a list of effective linkedIndex candidates by their RESOLVED
78
+ * absolute path. First-wins so the auto-injected strategy entry (with its
79
+ * stable `'strategy'` link name) takes precedence over a legacy literal in
80
+ * `config.linkedIndexes` pointing at the same physical store
81
+ * (mmnto-ai/totem#1710 R2 / CR R2).
82
+ *
83
+ * Pure function — exported so unit tests can exercise the dedup contract
84
+ * without standing up the full `initContext` pipeline (LanceStore +
85
+ * embedder + jiti config loader).
86
+ */
87
+ export declare function dedupeEffectiveLinks(projectRoot: string, candidates: ReadonlyArray<EffectiveLinkCandidate>): EffectiveLinkCandidate[];
72
88
  /**
73
89
  * Load environment variables from .env file (does not override existing).
74
90
  */
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAEL,UAAU,EAIX,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC;;;;;;;;;OASG;IACH,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAKD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B3E;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpD;AAuBD;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKzC;AA0ND;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CASzD"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAEL,UAAU,EAKX,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC;;;;;;;;;OASG;IACH,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAKD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B3E;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpD;AAuBD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAChD,sBAAsB,EAAE,CAU1B;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKzC;AA6RD;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CASzD"}
package/dist/context.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as fs from 'node:fs';
2
2
  import * as path from 'node:path';
3
3
  import dotenv from 'dotenv';
4
- import { createEmbedder, LanceStore, requireEmbedding, TotemConfigError, TotemConfigSchema, } from '@mmnto/totem';
4
+ import { createEmbedder, LanceStore, requireEmbedding, resolveStrategyRoot, TotemConfigError, TotemConfigSchema, } from '@mmnto/totem';
5
5
  let cached;
6
6
  let initPromise;
7
7
  /**
@@ -91,6 +91,29 @@ function deriveLinkName(linkedPath, cwd) {
91
91
  const base = path.basename(resolved);
92
92
  return base.replace(/^\./, '');
93
93
  }
94
+ /**
95
+ * Dedupe a list of effective linkedIndex candidates by their RESOLVED
96
+ * absolute path. First-wins so the auto-injected strategy entry (with its
97
+ * stable `'strategy'` link name) takes precedence over a legacy literal in
98
+ * `config.linkedIndexes` pointing at the same physical store
99
+ * (mmnto-ai/totem#1710 R2 / CR R2).
100
+ *
101
+ * Pure function — exported so unit tests can exercise the dedup contract
102
+ * without standing up the full `initContext` pipeline (LanceStore +
103
+ * embedder + jiti config loader).
104
+ */
105
+ export function dedupeEffectiveLinks(projectRoot, candidates) {
106
+ const seen = new Set();
107
+ const out = [];
108
+ for (const candidate of candidates) {
109
+ const resolvedAbs = path.resolve(projectRoot, candidate.path);
110
+ if (seen.has(resolvedAbs))
111
+ continue;
112
+ seen.add(resolvedAbs);
113
+ out.push(candidate);
114
+ }
115
+ return out;
116
+ }
94
117
  /**
95
118
  * Load environment variables from .env file (does not override existing).
96
119
  */
@@ -155,8 +178,71 @@ async function initContext() {
155
178
  // separate per-query warning path (see `search-knowledge.ts`).
156
179
  const linkedStores = new Map();
157
180
  const linkedStoreInitErrors = new Map();
181
+ // Auto-inject the strategy linkedIndex via the strategy-root resolver
182
+ // (mmnto-ai/totem#1710). Stable link name `'strategy'` regardless of
183
+ // physical source so `boundary: 'strategy'` queries route the same way
184
+ // whether the repo lives in `.strategy/`, `../totem-strategy/`, or
185
+ // wherever `TOTEM_STRATEGY_ROOT` points. Surface an init-time warning
186
+ // ONLY when the user explicitly signaled a strategy expectation (env or
187
+ // config); zero-config projects without a strategy repo skip silently.
188
+ // Validate env values for non-whitespace content rather than testing
189
+ // for `!== undefined` — the project-local lint rule wants whitespace
190
+ // validation (`/\S/.test`) so a `TOTEM_STRATEGY_ROOT=" "` accident
191
+ // doesn't trigger the warning slot. `Object.hasOwn` was rejected in
192
+ // R4 because it adds no safety beyond the trim-and-length check and
193
+ // breaks Windows' case-insensitive env-var resolution.
194
+ //
195
+ // Dedupe by RESOLVED ABSOLUTE PATH (mmnto-ai/totem#1710 R2 / CR R2): if a
196
+ // legacy config still lists `'.strategy'` (or `'../totem-strategy'`) AND
197
+ // the resolver auto-injects the same physical store under name
198
+ // `'strategy'`, we must not queue the same LanceStore twice — federated
199
+ // search would return duplicate hits. The existing collision guard below
200
+ // catches name collisions but not path-via-different-name collisions, so
201
+ // we dedupe candidates upfront.
202
+ const candidates = [];
203
+ // Mirror `resolveStrategyRoot`'s whitespace-as-unset rule (R3 / CR R3):
204
+ // `TOTEM_STRATEGY_ROOT=" "` or `strategyRoot: ' '` would otherwise
205
+ // mark `strategyExpected=true` while the resolver sees nothing,
206
+ // surfacing a "Strategy root expected but not resolvable" warning that
207
+ // never goes away.
208
+ const envHas = (key) => {
209
+ const v = process.env[key];
210
+ return typeof v === 'string' && v.trim().length > 0;
211
+ };
212
+ const strategyExpected = envHas('TOTEM_STRATEGY_ROOT') ||
213
+ envHas('STRATEGY_ROOT') ||
214
+ (typeof config.strategyRoot === 'string' && config.strategyRoot.trim().length > 0);
215
+ const strategyStatus = resolveStrategyRoot(projectRoot, { config });
216
+ if (strategyStatus.resolved) {
217
+ candidates.push({ path: strategyStatus.path, nameOverride: 'strategy' });
218
+ }
219
+ else if (strategyExpected) {
220
+ // `strategyStatus.reason` carries env/config-derived path text
221
+ // verbatim. The downstream consumer (`search-knowledge` Case 3)
222
+ // wraps this string in `formatSystemWarning` → returns as text
223
+ // content to the agent. An MCP client that renders the text in a
224
+ // terminal would interpret embedded ANSI/CR/newlines/tabs. Strip
225
+ // ANSI/CR + collapse \n/\t to single spaces before persisting
226
+ // (mmnto-ai/totem#1710 R6 / CR R6 Major + R7 / CR R7 Major). The
227
+ // ANSI/CR strip matches the canonical `terminal-sanitize.ts`
228
+ // regex in `packages/cli/src/`; the \n/\t flatten matches the
229
+ // doctor.ts pattern. mmnto-ai/totem#1744 consolidates both into
230
+ // a single shared helper in @mmnto/totem core.
231
+ const safeReason = strategyStatus.reason
232
+ // totem-context: inlined canonical `sanitizeForTerminal` regex — cross-package import deferred to mmnto-ai/totem#1744 (sanitizer consolidation into @mmnto/totem core).
233
+ .replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, '')
234
+ .replace(/[\x00-\x08\x0b-\x0d\x0e-\x1f\x7f-\x9f]/g, ' ')
235
+ .replace(/[\t\n]+/g, ' ')
236
+ .replace(/ {2,}/g, ' ')
237
+ .trim();
238
+ linkedStoreInitErrors.set('strategy', `Strategy root expected but not resolvable: ${safeReason}`);
239
+ }
158
240
  for (const linkedPath of config.linkedIndexes ?? []) {
159
- const name = deriveLinkName(linkedPath, projectRoot);
241
+ candidates.push({ path: linkedPath });
242
+ }
243
+ const effectiveLinks = dedupeEffectiveLinks(projectRoot, candidates);
244
+ for (const { path: linkedPath, nameOverride } of effectiveLinks) {
245
+ const name = nameOverride ?? deriveLinkName(linkedPath, projectRoot);
160
246
  // Collision detection — the first-wins so downstream lookups are stable.
161
247
  //
162
248
  // Key the error under the BARE `name`, not a descriptive composite, so
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import * as fs from 'node:fs';
2
2
  import * as os from 'node:os';
3
3
  import * as path from 'node:path';
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
- import { _reconnectOnContext, loadEnv } from './context.js';
5
+ import { _reconnectOnContext, dedupeEffectiveLinks, loadEnv } from './context.js';
6
6
  describe('loadEnv', () => {
7
7
  let tmpDir;
8
8
  const injectedKeys = [];
@@ -172,4 +172,50 @@ describe('_reconnectOnContext', () => {
172
172
  expect(ctx.linkedStoreInitErrors.size).toBe(0);
173
173
  });
174
174
  });
175
+ describe('dedupeEffectiveLinks (mmnto-ai/totem#1710 R2)', () => {
176
+ const projectRoot = path.resolve('/fake/project');
177
+ it('keeps a single entry untouched', () => {
178
+ const out = dedupeEffectiveLinks(projectRoot, [
179
+ { path: '/abs/path/strategy', nameOverride: 'strategy' },
180
+ ]);
181
+ expect(out).toHaveLength(1);
182
+ expect(out[0]?.nameOverride).toBe('strategy');
183
+ });
184
+ it('drops a literal entry whose resolved path matches an earlier auto-injected entry', () => {
185
+ // Auto-inject (first) carries the override; literal '../totem-strategy'
186
+ // resolves to the same physical path. The dedup must keep the FIRST
187
+ // entry (with the stable 'strategy' name override) and drop the literal.
188
+ const siblingAbs = path.resolve(projectRoot, '..', 'totem-strategy');
189
+ const out = dedupeEffectiveLinks(projectRoot, [
190
+ { path: siblingAbs, nameOverride: 'strategy' },
191
+ { path: '../totem-strategy' },
192
+ ]);
193
+ expect(out).toHaveLength(1);
194
+ expect(out[0]?.nameOverride).toBe('strategy');
195
+ expect(out[0]?.path).toBe(siblingAbs);
196
+ });
197
+ it('keeps two entries pointing at distinct paths', () => {
198
+ const out = dedupeEffectiveLinks(projectRoot, [
199
+ { path: '/abs/path/strategy', nameOverride: 'strategy' },
200
+ { path: '../sibling-other' },
201
+ ]);
202
+ expect(out).toHaveLength(2);
203
+ });
204
+ it('drops a duplicate caused by `.strategy` literal aliasing the same submodule path', () => {
205
+ const submoduleAbs = path.resolve(projectRoot, '.strategy');
206
+ const out = dedupeEffectiveLinks(projectRoot, [
207
+ { path: submoduleAbs, nameOverride: 'strategy' },
208
+ { path: '.strategy' },
209
+ ]);
210
+ expect(out).toHaveLength(1);
211
+ expect(out[0]?.nameOverride).toBe('strategy');
212
+ });
213
+ it('treats different absolute paths as distinct even if basenames collide', () => {
214
+ const out = dedupeEffectiveLinks(projectRoot, [
215
+ { path: '/abs/repo-a/strategy', nameOverride: 'strategy' },
216
+ { path: '/abs/repo-b/strategy' },
217
+ ]);
218
+ expect(out).toHaveLength(2);
219
+ });
220
+ });
175
221
  //# sourceMappingURL=context.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.test.js","sourceRoot":"","sources":["../src/context.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.test.js","sourceRoot":"","sources":["../src/context.test.ts"],"names":[],"mappings":"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"}
@@ -33,18 +33,43 @@ export declare const DescribeProjectInputSchema: z.ZodObject<{
33
33
  includeRichState?: boolean | undefined;
34
34
  }>;
35
35
  export type DescribeProjectInput = z.infer<typeof DescribeProjectInputSchema>;
36
- export declare const StrategyPointerSchema: z.ZodObject<{
37
- /** Short-form 7-char SHA of the strategy submodule HEAD. Null when no submodule. */
36
+ /**
37
+ * Strategy-pointer payload (mmnto-ai/totem#1710).
38
+ *
39
+ * Discriminated union on the `resolved` flag so consumers can pattern-match
40
+ * without inferring intent from null fields. The `resolved: false` branch
41
+ * surfaces the resolver's `reason` string so an agent reading the rich-state
42
+ * payload can render an actionable message instead of an empty pointer.
43
+ *
44
+ * Pre-1710 callers received `{ sha, latestJournal }` directly. The new shape
45
+ * is a breaking change to the MCP `describe_project` rich-state output;
46
+ * documented in CHANGELOG.
47
+ */
48
+ export declare const StrategyPointerSchema: z.ZodDiscriminatedUnion<"resolved", [z.ZodObject<{
49
+ resolved: z.ZodLiteral<true>;
50
+ /** Short-form 7-char SHA of the resolved strategy HEAD. Null when git rev-parse fails inside the strategy dir. */
38
51
  sha: z.ZodNullable<z.ZodString>;
39
- /** Filename of the most recent `.strategy/.journal/*.md` entry, no path. */
52
+ /** Filename of the most recent `<strategyRoot>/.journal/*.md` entry, no path. Null when `.journal/` is missing or empty. */
40
53
  latestJournal: z.ZodNullable<z.ZodString>;
41
- }, "strip", z.ZodTypeAny, {
54
+ }, "strict", z.ZodTypeAny, {
55
+ resolved: true;
42
56
  sha: string | null;
43
57
  latestJournal: string | null;
44
58
  }, {
59
+ resolved: true;
45
60
  sha: string | null;
46
61
  latestJournal: string | null;
47
- }>;
62
+ }>, z.ZodObject<{
63
+ resolved: z.ZodLiteral<false>;
64
+ /** Human-readable reason from the strategy-root resolver. */
65
+ reason: z.ZodString;
66
+ }, "strict", z.ZodTypeAny, {
67
+ resolved: false;
68
+ reason: string;
69
+ }, {
70
+ resolved: false;
71
+ reason: string;
72
+ }>]>;
48
73
  export type StrategyPointer = z.infer<typeof StrategyPointerSchema>;
49
74
  export declare const GitStateSchema: z.ZodObject<{
50
75
  /** Current branch name. Null when running outside a git repo or in detached HEAD. */
@@ -116,18 +141,31 @@ export declare const MilestoneStateSchema: z.ZodObject<{
116
141
  }>;
117
142
  export type MilestoneState = z.infer<typeof MilestoneStateSchema>;
118
143
  export declare const RichProjectStateSchema: z.ZodObject<{
119
- strategyPointer: z.ZodObject<{
120
- /** Short-form 7-char SHA of the strategy submodule HEAD. Null when no submodule. */
144
+ strategyPointer: z.ZodDiscriminatedUnion<"resolved", [z.ZodObject<{
145
+ resolved: z.ZodLiteral<true>;
146
+ /** Short-form 7-char SHA of the resolved strategy HEAD. Null when git rev-parse fails inside the strategy dir. */
121
147
  sha: z.ZodNullable<z.ZodString>;
122
- /** Filename of the most recent `.strategy/.journal/*.md` entry, no path. */
148
+ /** Filename of the most recent `<strategyRoot>/.journal/*.md` entry, no path. Null when `.journal/` is missing or empty. */
123
149
  latestJournal: z.ZodNullable<z.ZodString>;
124
- }, "strip", z.ZodTypeAny, {
150
+ }, "strict", z.ZodTypeAny, {
151
+ resolved: true;
125
152
  sha: string | null;
126
153
  latestJournal: string | null;
127
154
  }, {
155
+ resolved: true;
128
156
  sha: string | null;
129
157
  latestJournal: string | null;
130
- }>;
158
+ }>, z.ZodObject<{
159
+ resolved: z.ZodLiteral<false>;
160
+ /** Human-readable reason from the strategy-root resolver. */
161
+ reason: z.ZodString;
162
+ }, "strict", z.ZodTypeAny, {
163
+ resolved: false;
164
+ reason: string;
165
+ }, {
166
+ resolved: false;
167
+ reason: string;
168
+ }>]>;
131
169
  gitState: z.ZodObject<{
132
170
  /** Current branch name. Null when running outside a git repo or in detached HEAD. */
133
171
  branch: z.ZodNullable<z.ZodString>;
@@ -204,8 +242,12 @@ export declare const RichProjectStateSchema: z.ZodObject<{
204
242
  }>, "many">;
205
243
  }, "strip", z.ZodTypeAny, {
206
244
  strategyPointer: {
245
+ resolved: true;
207
246
  sha: string | null;
208
247
  latestJournal: string | null;
248
+ } | {
249
+ resolved: false;
250
+ reason: string;
209
251
  };
210
252
  gitState: {
211
253
  branch: string | null;
@@ -232,8 +274,12 @@ export declare const RichProjectStateSchema: z.ZodObject<{
232
274
  }[];
233
275
  }, {
234
276
  strategyPointer: {
277
+ resolved: true;
235
278
  sha: string | null;
236
279
  latestJournal: string | null;
280
+ } | {
281
+ resolved: false;
282
+ reason: string;
237
283
  };
238
284
  gitState: {
239
285
  branch: string | null;
@@ -275,20 +321,20 @@ export declare const LegacyProjectDescriptionSchema: z.ZodObject<{
275
321
  partitions: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>;
276
322
  hooks: z.ZodArray<z.ZodString, "many">;
277
323
  }, "strip", z.ZodTypeAny, {
324
+ targets: string[];
278
325
  lessons: number;
279
326
  project: string;
280
327
  tier: "lite" | "standard" | "full";
281
328
  rules: number;
282
- targets: string[];
283
329
  partitions: Record<string, string[]>;
284
330
  hooks: string[];
285
331
  description?: string | undefined;
286
332
  }, {
333
+ targets: string[];
287
334
  lessons: number;
288
335
  project: string;
289
336
  tier: "lite" | "standard" | "full";
290
337
  rules: number;
291
- targets: string[];
292
338
  partitions: Record<string, string[]>;
293
339
  hooks: string[];
294
340
  description?: string | undefined;
@@ -309,18 +355,31 @@ export declare const DescribeProjectOutputSchema: z.ZodObject<{
309
355
  hooks: z.ZodArray<z.ZodString, "many">;
310
356
  } & {
311
357
  richState: z.ZodOptional<z.ZodObject<{
312
- strategyPointer: z.ZodObject<{
313
- /** Short-form 7-char SHA of the strategy submodule HEAD. Null when no submodule. */
358
+ strategyPointer: z.ZodDiscriminatedUnion<"resolved", [z.ZodObject<{
359
+ resolved: z.ZodLiteral<true>;
360
+ /** Short-form 7-char SHA of the resolved strategy HEAD. Null when git rev-parse fails inside the strategy dir. */
314
361
  sha: z.ZodNullable<z.ZodString>;
315
- /** Filename of the most recent `.strategy/.journal/*.md` entry, no path. */
362
+ /** Filename of the most recent `<strategyRoot>/.journal/*.md` entry, no path. Null when `.journal/` is missing or empty. */
316
363
  latestJournal: z.ZodNullable<z.ZodString>;
317
- }, "strip", z.ZodTypeAny, {
364
+ }, "strict", z.ZodTypeAny, {
365
+ resolved: true;
318
366
  sha: string | null;
319
367
  latestJournal: string | null;
320
368
  }, {
369
+ resolved: true;
321
370
  sha: string | null;
322
371
  latestJournal: string | null;
323
- }>;
372
+ }>, z.ZodObject<{
373
+ resolved: z.ZodLiteral<false>;
374
+ /** Human-readable reason from the strategy-root resolver. */
375
+ reason: z.ZodString;
376
+ }, "strict", z.ZodTypeAny, {
377
+ resolved: false;
378
+ reason: string;
379
+ }, {
380
+ resolved: false;
381
+ reason: string;
382
+ }>]>;
324
383
  gitState: z.ZodObject<{
325
384
  /** Current branch name. Null when running outside a git repo or in detached HEAD. */
326
385
  branch: z.ZodNullable<z.ZodString>;
@@ -397,8 +456,12 @@ export declare const DescribeProjectOutputSchema: z.ZodObject<{
397
456
  }>, "many">;
398
457
  }, "strip", z.ZodTypeAny, {
399
458
  strategyPointer: {
459
+ resolved: true;
400
460
  sha: string | null;
401
461
  latestJournal: string | null;
462
+ } | {
463
+ resolved: false;
464
+ reason: string;
402
465
  };
403
466
  gitState: {
404
467
  branch: string | null;
@@ -425,8 +488,12 @@ export declare const DescribeProjectOutputSchema: z.ZodObject<{
425
488
  }[];
426
489
  }, {
427
490
  strategyPointer: {
491
+ resolved: true;
428
492
  sha: string | null;
429
493
  latestJournal: string | null;
494
+ } | {
495
+ resolved: false;
496
+ reason: string;
430
497
  };
431
498
  gitState: {
432
499
  branch: string | null;
@@ -453,18 +520,22 @@ export declare const DescribeProjectOutputSchema: z.ZodObject<{
453
520
  }[];
454
521
  }>>;
455
522
  }, "strip", z.ZodTypeAny, {
523
+ targets: string[];
456
524
  lessons: number;
457
525
  project: string;
458
526
  tier: "lite" | "standard" | "full";
459
527
  rules: number;
460
- targets: string[];
461
528
  partitions: Record<string, string[]>;
462
529
  hooks: string[];
463
530
  description?: string | undefined;
464
531
  richState?: {
465
532
  strategyPointer: {
533
+ resolved: true;
466
534
  sha: string | null;
467
535
  latestJournal: string | null;
536
+ } | {
537
+ resolved: false;
538
+ reason: string;
468
539
  };
469
540
  gitState: {
470
541
  branch: string | null;
@@ -491,18 +562,22 @@ export declare const DescribeProjectOutputSchema: z.ZodObject<{
491
562
  }[];
492
563
  } | undefined;
493
564
  }, {
565
+ targets: string[];
494
566
  lessons: number;
495
567
  project: string;
496
568
  tier: "lite" | "standard" | "full";
497
569
  rules: number;
498
- targets: string[];
499
570
  partitions: Record<string, string[]>;
500
571
  hooks: string[];
501
572
  description?: string | undefined;
502
573
  richState?: {
503
574
  strategyPointer: {
575
+ resolved: true;
504
576
  sha: string | null;
505
577
  latestJournal: string | null;
578
+ } | {
579
+ resolved: false;
580
+ reason: string;
506
581
  };
507
582
  gitState: {
508
583
  branch: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"describe-project.d.ts","sourceRoot":"","sources":["../../src/schemas/describe-project.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAIlC;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAI9E,eAAO,MAAM,qBAAqB;IAChC,oFAAoF;;IAEpF,4EAA4E;;;;;;;;EAE5E,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,cAAc;IACzB,qFAAqF;;IAErF,8EAA8E;;IAE9E,2EAA2E;;;;;;;;;;EAE3E,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc;IACzB,mEAAmE;;IAEnE,4BAA4B;;IAE5B,oCAAoC;;;;;;;;;;EAEpC,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAI3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB;IAC/B,mFAAmF;;IAEnF,uFAAuF;;IAEvF;;;;OAIG;;;;;;;;;;EAEH,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,sBAAsB;;QAhDjC,oFAAoF;;QAEpF,4EAA4E;;;;;;;;;;QAM5E,qFAAqF;;QAErF,8EAA8E;;QAE9E,2EAA2E;;;;;;;;;;;IAuC3E,6GAA6G;;;;;;;;;;;;;;;IAG7G,8EAA8E;;IAE9E;;;OAGG;;;QAxBH,mFAAmF;;QAEnF,uFAAuF;;QAEvF;;;;WAIG;;;;;;;;;;;;QAzBH,mEAAmE;;QAEnE,4BAA4B;;QAE5B,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCpC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;EASzC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;YA1FtC,oFAAoF;;YAEpF,4EAA4E;;;;;;;;;;YAM5E,qFAAqF;;YAErF,8EAA8E;;YAE9E,2EAA2E;;;;;;;;;;;QAuC3E,6GAA6G;;;;;;;;;;;;;;;QAG7G,8EAA8E;;QAE9E;;;WAGG;;;YAxBH,mFAAmF;;YAEnF,uFAAuF;;YAEvF;;;;eAIG;;;;;;;;;;;;YAzBH,mEAAmE;;YAEnE,4BAA4B;;YAE5B,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsEpC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"describe-project.d.ts","sourceRoot":"","sources":["../../src/schemas/describe-project.ts"],"names":[],"mappings":"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"}
@@ -30,12 +30,36 @@ export const DescribeProjectInputSchema = z.object({
30
30
  includeRichState: z.boolean().optional().default(false),
31
31
  });
32
32
  // ─── Rich state sub-schemas ────────────────────────────────────────────────
33
- export const StrategyPointerSchema = z.object({
34
- /** Short-form 7-char SHA of the strategy submodule HEAD. Null when no submodule. */
35
- sha: z.string().nullable(),
36
- /** Filename of the most recent `.strategy/.journal/*.md` entry, no path. */
37
- latestJournal: z.string().nullable(),
38
- });
33
+ /**
34
+ * Strategy-pointer payload (mmnto-ai/totem#1710).
35
+ *
36
+ * Discriminated union on the `resolved` flag so consumers can pattern-match
37
+ * without inferring intent from null fields. The `resolved: false` branch
38
+ * surfaces the resolver's `reason` string so an agent reading the rich-state
39
+ * payload can render an actionable message instead of an empty pointer.
40
+ *
41
+ * Pre-1710 callers received `{ sha, latestJournal }` directly. The new shape
42
+ * is a breaking change to the MCP `describe_project` rich-state output;
43
+ * documented in CHANGELOG.
44
+ */
45
+ export const StrategyPointerSchema = z.discriminatedUnion('resolved', [
46
+ z
47
+ .object({
48
+ resolved: z.literal(true),
49
+ /** Short-form 7-char SHA of the resolved strategy HEAD. Null when git rev-parse fails inside the strategy dir. */
50
+ sha: z.string().nullable(),
51
+ /** Filename of the most recent `<strategyRoot>/.journal/*.md` entry, no path. Null when `.journal/` is missing or empty. */
52
+ latestJournal: z.string().nullable(),
53
+ })
54
+ .strict(),
55
+ z
56
+ .object({
57
+ resolved: z.literal(false),
58
+ /** Human-readable reason from the strategy-root resolver. */
59
+ reason: z.string(),
60
+ })
61
+ .strict(),
62
+ ]);
39
63
  export const GitStateSchema = z.object({
40
64
  /** Current branch name. Null when running outside a git repo or in detached HEAD. */
41
65
  branch: z.string().nullable(),
@@ -1 +1 @@
1
- {"version":3,"file":"describe-project.js","sourceRoot":"","sources":["../../src/schemas/describe-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"describe-project.js","sourceRoot":"","sources":["../../src/schemas/describe-project.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,11 @@ describe('DescribeProjectOutputSchema backward compatibility', () => {
33
33
  });
34
34
  it('accepts legacy shape with richState populated', () => {
35
35
  const rich = {
36
- strategyPointer: { sha: 'abc1234', latestJournal: '2026-04-16-session.md' },
36
+ strategyPointer: {
37
+ resolved: true,
38
+ sha: 'abc1234',
39
+ latestJournal: '2026-04-16-session.md',
40
+ },
37
41
  gitState: { branch: 'main', uncommittedFiles: [], truncated: false },
38
42
  packageVersions: { '@mmnto/cli': '1.14.10' },
39
43
  ruleCounts: { active: 10, archived: 2, nonCompilable: 3 },
@@ -87,16 +91,85 @@ describe('MilestoneStateSchema', () => {
87
91
  expect(parsed.name).toBeNull();
88
92
  });
89
93
  });
90
- describe('StrategyPointerSchema', () => {
91
- it('allows both fields null (no submodule)', () => {
92
- const parsed = StrategyPointerSchema.parse({ sha: null, latestJournal: null });
93
- expect(parsed.sha).toBeNull();
94
+ describe('StrategyPointerSchema (mmnto-ai/totem#1710)', () => {
95
+ it('accepts the resolved branch with both git fields null', () => {
96
+ const parsed = StrategyPointerSchema.parse({
97
+ resolved: true,
98
+ sha: null,
99
+ latestJournal: null,
100
+ });
101
+ if (parsed.resolved) {
102
+ expect(parsed.sha).toBeNull();
103
+ expect(parsed.latestJournal).toBeNull();
104
+ }
105
+ else {
106
+ expect.fail('expected resolved branch');
107
+ }
108
+ });
109
+ it('accepts the resolved branch with non-null git fields', () => {
110
+ const parsed = StrategyPointerSchema.parse({
111
+ resolved: true,
112
+ sha: 'd387716',
113
+ latestJournal: 'claude-0006-pattern-history-overlay-1.17.1.md',
114
+ });
115
+ if (parsed.resolved) {
116
+ expect(parsed.sha).toBe('d387716');
117
+ expect(parsed.latestJournal).toBe('claude-0006-pattern-history-overlay-1.17.1.md');
118
+ }
119
+ });
120
+ it('accepts the unresolved branch with a reason string', () => {
121
+ const parsed = StrategyPointerSchema.parse({
122
+ resolved: false,
123
+ reason: 'No strategy root resolvable: cwd is outside a git repository.',
124
+ });
125
+ if (!parsed.resolved) {
126
+ expect(parsed.reason).toMatch(/strategy/);
127
+ }
128
+ else {
129
+ expect.fail('expected unresolved branch');
130
+ }
131
+ });
132
+ it('rejects malformed mixes (resolved=true without sha)', () => {
133
+ const result = StrategyPointerSchema.safeParse({
134
+ resolved: true,
135
+ latestJournal: null,
136
+ });
137
+ expect(result.success).toBe(false);
138
+ });
139
+ it('rejects malformed mixes (resolved=false with sha)', () => {
140
+ const result = StrategyPointerSchema.safeParse({
141
+ resolved: false,
142
+ sha: 'abc1234',
143
+ latestJournal: null,
144
+ });
145
+ expect(result.success).toBe(false);
146
+ });
147
+ it('rejects extra keys on the resolved branch (R3 — strict mode)', () => {
148
+ // Without .strict(), Zod silently strips unknown keys. .strict() makes
149
+ // the discriminated union catch a producer-side bug where the wrong
150
+ // branch fields leak into a payload (e.g., a `reason` accidentally
151
+ // emitted alongside a successful resolution).
152
+ const result = StrategyPointerSchema.safeParse({
153
+ resolved: true,
154
+ sha: 'abc1234',
155
+ latestJournal: null,
156
+ reason: 'should not appear',
157
+ });
158
+ expect(result.success).toBe(false);
159
+ });
160
+ it('rejects extra keys on the unresolved branch (R3 — strict mode)', () => {
161
+ const result = StrategyPointerSchema.safeParse({
162
+ resolved: false,
163
+ reason: 'No strategy root resolvable.',
164
+ latestJournal: 'should-not-appear.md',
165
+ });
166
+ expect(result.success).toBe(false);
94
167
  });
95
168
  });
96
169
  describe('RichProjectStateSchema', () => {
97
170
  it('allows testCount: null explicitly', () => {
98
171
  const parsed = RichProjectStateSchema.parse({
99
- strategyPointer: { sha: null, latestJournal: null },
172
+ strategyPointer: { resolved: true, sha: null, latestJournal: null },
100
173
  gitState: { branch: null, uncommittedFiles: [], truncated: false },
101
174
  packageVersions: {},
102
175
  ruleCounts: { active: 0, archived: 0, nonCompilable: 0 },
@@ -107,6 +180,21 @@ describe('RichProjectStateSchema', () => {
107
180
  });
108
181
  expect(parsed.testCount).toBeNull();
109
182
  });
183
+ it('embeds the unresolved strategy-pointer branch (#1710)', () => {
184
+ const parsed = RichProjectStateSchema.parse({
185
+ strategyPointer: { resolved: false, reason: 'no sibling, no submodule' },
186
+ gitState: { branch: 'main', uncommittedFiles: [], truncated: false },
187
+ packageVersions: {},
188
+ ruleCounts: { active: 0, archived: 0, nonCompilable: 0 },
189
+ lessonCount: 0,
190
+ testCount: null,
191
+ milestone: { name: null, gateTickets: [], bestEffort: true },
192
+ recentPrs: [],
193
+ });
194
+ if (!parsed.strategyPointer.resolved) {
195
+ expect(parsed.strategyPointer.reason).toBe('no sibling, no submodule');
196
+ }
197
+ });
110
198
  });
111
199
  describe('constants', () => {
112
200
  it('caps match the design doc', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"describe-project.test.js","sourceRoot":"","sources":["../../src/schemas/describe-project.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"describe-project.test.js","sourceRoot":"","sources":["../../src/schemas/describe-project.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACxF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,UAAmB;QACzB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC,+BAA+B,CAAC;QAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE;QACxC,KAAK,EAAE,CAAC,UAAU,CAAC;KACpB,CAAC;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,IAAI,GAAG;YACX,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAa;gBACvB,GAAG,EAAE,SAAS;gBACd,aAAa,EAAE,uBAAuB;aACvC;YACD,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YACpE,eAAe,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;YAC5C,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;YACzD,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAa,EAAE;YAChF,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;SAC7F,CAAC;QACF,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,GAAG,EAAE,CACV,2BAA2B,CAAC,KAAK,CAAC;YAChC,GAAG,WAAW;YACd,SAAS,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE;SAChD,CAAC,CACH,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;YAClC,MAAM,EAAE,MAAM;YACd,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;YAClC,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,EAAE,CACV,oBAAoB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAC/E,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC;YACxC,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;YACzC,QAAQ,EAAE,IAAI;YACd,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;YACzC,QAAQ,EAAE,IAAI;YACd,GAAG,EAAE,SAAS;YACd,aAAa,EAAE,+CAA+C;SAC/D,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QACrF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;YACzC,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,+DAA+D;SACxE,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC;YAC7C,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC;YAC7C,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,SAAS;YACd,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,mEAAmE;QACnE,8CAA8C;QAC9C,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC;YAC7C,QAAQ,EAAE,IAAI;YACd,GAAG,EAAE,SAAS;YACd,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,mBAAmB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC;YAC7C,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,8BAA8B;YACtC,aAAa,EAAE,sBAAsB;SACtC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;YAC1C,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;YACnE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAClE,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;YACxD,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;YAC5D,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;YAC1C,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE;YACxE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YACpE,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;YACxD,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;YAC5D,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -9,9 +9,23 @@
9
9
  * ADR-090 substrate invariant: no LLM calls, no live npm/github registry
10
10
  * calls. Every function reads only from disk or local git state.
11
11
  */
12
+ import { type StrategyResolverConfig } from '@mmnto/totem';
12
13
  import { type GitState, type MilestoneState, type RecentPr, type RuleCounts, type StrategyPointer } from './schemas/describe-project.js';
13
14
  export declare function extractGitState(cwd: string): GitState;
14
- export declare function extractStrategyPointer(cwd: string): StrategyPointer;
15
+ /**
16
+ * Resolve the strategy root via `resolveStrategyRoot` and return the rich-state
17
+ * pointer for the MCP `describe_project` payload (mmnto-ai/totem#1710).
18
+ *
19
+ * Two outcomes:
20
+ * - **Resolved:** `{ resolved: true, sha, latestJournal }`. `sha` and
21
+ * `latestJournal` follow the existing graceful-degrade contract — null when
22
+ * `git rev-parse` fails or `.journal/` is missing/empty inside the resolved
23
+ * directory. The agent gets a real pointer when one exists.
24
+ * - **Unresolved:** `{ resolved: false, reason }`. The agent reads the
25
+ * resolver's actionable reason instead of seeing an empty pointer that
26
+ * could be confused with a present-but-uninitialized submodule.
27
+ */
28
+ export declare function extractStrategyPointer(cwd: string, config?: StrategyResolverConfig): StrategyPointer;
15
29
  export declare function extractPackageVersions(cwd: string): Record<string, string>;
16
30
  export declare function extractRuleCounts(cwd: string, totemDir: string): RuleCounts;
17
31
  export declare function extractLessonCount(cwd: string, totemDir: string): number;
@@ -1 +1 @@
1
- {"version":3,"file":"state-extractors.d.ts","sourceRoot":"","sources":["../src/state-extractors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EAEnB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,eAAe,EAErB,MAAM,+BAA+B,CAAC;AAYvC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CA+BrD;AAID,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CA+BnE;AAID,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkC1E;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAuB3E;AAID,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASxE;AAID;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAoCjE;AAID;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5D;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAmB,GAAG,QAAQ,EAAE,CAyClF"}
1
+ {"version":3,"file":"state-extractors.d.ts","sourceRoot":"","sources":["../src/state-extractors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAML,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EAEnB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,eAAe,EAErB,MAAM,+BAA+B,CAAC;AAYvC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CA+BrD;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,sBAAsB,GAC9B,eAAe,CAgCjB;AAID,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkC1E;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAuB3E;AAID,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASxE;AAID;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAoCjE;AAID;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5D;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAmB,GAAG,QAAQ,EAAE,CAyClF"}
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import * as fs from 'node:fs';
13
13
  import * as path from 'node:path';
14
- import { CompiledRulesFileSchema, readJsonSafe, resolveGitRoot, safeExec } from '@mmnto/totem';
14
+ import { CompiledRulesFileSchema, readJsonSafe, resolveGitRoot, resolveStrategyRoot, safeExec, } from '@mmnto/totem';
15
15
  import { RECENT_PRS_COUNT, UNCOMMITTED_FILES_CAP, } from './schemas/describe-project.js';
16
16
  /** Fixed-group package names whose versions show in the briefing. */
17
17
  const FIXED_GROUP_PACKAGES = [
@@ -52,17 +52,31 @@ export function extractGitState(cwd) {
52
52
  const uncommittedFiles = truncated ? allFiles.slice(0, UNCOMMITTED_FILES_CAP) : allFiles;
53
53
  return { branch, uncommittedFiles, truncated };
54
54
  }
55
- // ─── Strategy submodule pointer ────────────────────────────────────────────
56
- export function extractStrategyPointer(cwd) {
57
- const strategyDir = path.join(cwd, '.strategy');
58
- if (!fs.existsSync(strategyDir)) {
59
- return { sha: null, latestJournal: null };
55
+ // ─── Strategy pointer ──────────────────────────────────────────────────────
56
+ /**
57
+ * Resolve the strategy root via `resolveStrategyRoot` and return the rich-state
58
+ * pointer for the MCP `describe_project` payload (mmnto-ai/totem#1710).
59
+ *
60
+ * Two outcomes:
61
+ * - **Resolved:** `{ resolved: true, sha, latestJournal }`. `sha` and
62
+ * `latestJournal` follow the existing graceful-degrade contract — null when
63
+ * `git rev-parse` fails or `.journal/` is missing/empty inside the resolved
64
+ * directory. The agent gets a real pointer when one exists.
65
+ * - **Unresolved:** `{ resolved: false, reason }`. The agent reads the
66
+ * resolver's actionable reason instead of seeing an empty pointer that
67
+ * could be confused with a present-but-uninitialized submodule.
68
+ */
69
+ export function extractStrategyPointer(cwd, config) {
70
+ const status = resolveStrategyRoot(cwd, { config });
71
+ if (!status.resolved) {
72
+ return { resolved: false, reason: status.reason };
60
73
  }
74
+ const strategyDir = status.path;
61
75
  let sha = null;
62
76
  try {
63
77
  const full = safeExec('git', ['rev-parse', 'HEAD'], { cwd: strategyDir });
64
78
  sha = full.length >= 7 ? full.slice(0, 7) : null;
65
- // totem-context: ADR-090 substrate graceful degradation — null sha on uninitialized submodule.
79
+ // totem-context: ADR-090 substrate graceful degradation — null sha on uninitialized strategy.
66
80
  }
67
81
  catch {
68
82
  sha = null;
@@ -82,7 +96,7 @@ export function extractStrategyPointer(cwd) {
82
96
  catch {
83
97
  latestJournal = null;
84
98
  }
85
- return { sha, latestJournal };
99
+ return { resolved: true, sha, latestJournal };
86
100
  }
87
101
  // ─── Package versions (fixed group only) ───────────────────────────────────
88
102
  export function extractPackageVersions(cwd) {
@@ -1 +1 @@
1
- {"version":3,"file":"state-extractors.js","sourceRoot":"","sources":["../src/state-extractors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-extractors.js","sourceRoot":"","sources":["../src/state-extractors.ts"],"names":[],"mappings":"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"}
@@ -35,25 +35,52 @@ describe('extractGitState', () => {
35
35
  }
36
36
  });
37
37
  });
38
- describe('extractStrategyPointer', () => {
39
- it('returns null/null when .strategy/ is absent', () => {
38
+ describe('extractStrategyPointer (mmnto-ai/totem#1710)', () => {
39
+ let prevEnvPrimary;
40
+ let prevEnvAlias;
41
+ beforeEach(() => {
42
+ // Isolate the resolver from any developer-shell env override so the
43
+ // "absent strategy" test can reach the unresolved branch deterministically.
44
+ prevEnvPrimary = process.env.TOTEM_STRATEGY_ROOT;
45
+ prevEnvAlias = process.env.STRATEGY_ROOT;
46
+ delete process.env.TOTEM_STRATEGY_ROOT;
47
+ delete process.env.STRATEGY_ROOT;
48
+ });
49
+ afterEach(() => {
50
+ // Symmetric restore: when prev was undefined, the env var was unset
51
+ // before this suite ran — DELETE rather than leak the test's value.
52
+ if (prevEnvPrimary === undefined)
53
+ delete process.env.TOTEM_STRATEGY_ROOT;
54
+ else
55
+ process.env.TOTEM_STRATEGY_ROOT = prevEnvPrimary;
56
+ if (prevEnvAlias === undefined)
57
+ delete process.env.STRATEGY_ROOT;
58
+ else
59
+ process.env.STRATEGY_ROOT = prevEnvAlias;
60
+ });
61
+ it('returns the unresolved branch when no strategy root is reachable', () => {
40
62
  const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-mcp-nostrat-'));
41
63
  try {
42
64
  const ptr = extractStrategyPointer(tmp);
43
- expect(ptr.sha).toBeNull();
44
- expect(ptr.latestJournal).toBeNull();
65
+ expect(ptr.resolved).toBe(false);
66
+ if (!ptr.resolved) {
67
+ expect(ptr.reason).toMatch(/strategy/i);
68
+ }
45
69
  }
46
70
  finally {
47
71
  fs.rmSync(tmp, { recursive: true, force: true });
48
72
  }
49
73
  });
50
- it('returns a 7-char SHA and a journal filename on the live repo', () => {
74
+ it('returns the resolved branch with a 7-char SHA and journal filename on the live repo', () => {
51
75
  const ptr = extractStrategyPointer(REPO_ROOT);
52
- if (ptr.sha !== null) {
53
- expect(ptr.sha).toMatch(/^[0-9a-f]{7}$/);
54
- }
55
- if (ptr.latestJournal !== null) {
56
- expect(ptr.latestJournal).toMatch(/\.md$/);
76
+ expect(ptr.resolved).toBe(true);
77
+ if (ptr.resolved) {
78
+ if (ptr.sha !== null) {
79
+ expect(ptr.sha).toMatch(/^[0-9a-f]{7}$/);
80
+ }
81
+ if (ptr.latestJournal !== null) {
82
+ expect(ptr.latestJournal).toMatch(/\.md$/);
83
+ }
57
84
  }
58
85
  });
59
86
  });
@@ -1 +1 @@
1
- {"version":3,"file":"state-extractors.test.js","sourceRoot":"","sources":["../src/state-extractors.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-extractors.test.js","sourceRoot":"","sources":["../src/state-extractors.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"describe-project.d.ts","sourceRoot":"","sources":["../../src/tools/describe-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwGzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqC/D"}
1
+ {"version":3,"file":"describe-project.d.ts","sourceRoot":"","sources":["../../src/tools/describe-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwHzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsC/D"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { CONFIG_FILES, describeProject, TotemConfigSchema, TotemError, } from '@mmnto/totem';
3
- import { getContext } from '../context.js';
3
+ import { getContext, loadEnv } from '../context.js';
4
4
  import { extractGitState, extractLessonCount, extractMilestoneState, extractPackageVersions, extractRecentPrs, extractRuleCounts, extractStrategyPointer, extractTestCount, } from '../state-extractors.js';
5
5
  /**
6
6
  * Lightweight config loader for describe — avoids requiring embedder.
@@ -19,6 +19,7 @@ async function getLegacyContext() {
19
19
  legacy: describeProject(ctx.config, ctx.projectRoot),
20
20
  projectRoot: ctx.projectRoot,
21
21
  totemDir: ctx.config.totemDir,
22
+ config: ctx.config,
22
23
  };
23
24
  }
24
25
  catch {
@@ -28,6 +29,13 @@ async function getLegacyContext() {
28
29
  // Only .ts configs are supported here — jiti cannot parse YAML/TOML.
29
30
  // YAML/TOML users will have getContext() succeed since those configs
30
31
  // still define an embedding provider (Standard/Full tier).
32
+ //
33
+ // Load `.env` before reading config so env-derived fields (e.g.,
34
+ // `TOTEM_STRATEGY_ROOT` consumed by the strategy-root resolver inside
35
+ // `extractStrategyPointer`) match the main `getContext()` path. Without
36
+ // this, the Lite-tier `describe_project` payload could disagree with
37
+ // the rich-state path on the same repo (mmnto-ai/totem#1710 R3 / CR R3).
38
+ loadEnv(projectRoot);
31
39
  let configPath = null;
32
40
  for (const file of CONFIG_FILES) {
33
41
  const candidate = path.join(projectRoot, file);
@@ -53,11 +61,12 @@ async function getLegacyContext() {
53
61
  legacy: describeProject(config, configRoot),
54
62
  projectRoot: configRoot,
55
63
  totemDir: config.totemDir,
64
+ config,
56
65
  };
57
66
  }
58
- function buildRichState(projectRoot, totemDir) {
67
+ function buildRichState(projectRoot, totemDir, config) {
59
68
  return {
60
- strategyPointer: extractStrategyPointer(projectRoot),
69
+ strategyPointer: extractStrategyPointer(projectRoot, config),
61
70
  gitState: extractGitState(projectRoot),
62
71
  packageVersions: extractPackageVersions(projectRoot),
63
72
  ruleCounts: extractRuleCounts(projectRoot, totemDir),
@@ -70,10 +79,11 @@ function buildRichState(projectRoot, totemDir) {
70
79
  export function registerDescribeProject(server) {
71
80
  server.registerTool('describe_project', {
72
81
  description: 'Returns a structured JSON summary of the project governance scope: rules, lessons, config tier, partitions, targets, and hooks. Pass `includeRichState: true` to append a session-briefing payload (git state, strategy pointer, package versions, rule/lesson counts, milestone, recent PRs). Fast, deterministic, no LLM required.',
73
- // totem-context: MCP SDK's registerTool accepts a Zod raw shape, not a
74
- // JSON Schema object. This matches the convention already used in
75
- // search-knowledge.ts and add-lesson.ts. The SDK converts the shape to
76
- // JSON Schema internally before exposing the tool to clients.
82
+ // MCP SDK's registerTool accepts a Zod raw shape, not a JSON Schema
83
+ // object same convention as search-knowledge.ts and add-lesson.ts.
84
+ // The SDK converts the shape to JSON Schema internally before
85
+ // exposing the tool to clients.
86
+ // totem-context: MCP SDK registerTool accepts a Zod raw shape, not a JSON Schema object.
77
87
  inputSchema: {
78
88
  includeRichState: z.boolean().optional(),
79
89
  },
@@ -82,9 +92,9 @@ export function registerDescribeProject(server) {
82
92
  },
83
93
  }, async (args) => {
84
94
  try {
85
- const { legacy, projectRoot, totemDir } = await getLegacyContext();
95
+ const { legacy, projectRoot, totemDir, config } = await getLegacyContext();
86
96
  const output = args.includeRichState
87
- ? { ...legacy, richState: buildRichState(projectRoot, totemDir) }
97
+ ? { ...legacy, richState: buildRichState(projectRoot, totemDir, config) }
88
98
  : { ...legacy };
89
99
  return {
90
100
  content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
@@ -1 +1 @@
1
- {"version":3,"file":"describe-project.js","sourceRoot":"","sources":["../../src/tools/describe-project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,eAAe,EAEf,iBAAiB,EACjB,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAQhC;;;GAGG;AACH,KAAK,UAAU,gBAAgB;IAC7B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,uDAAuD;IACvD,qEAAqE;IACrE,0EAA0E;IAC1E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC;YACpD,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ;SAC9B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;IAC/D,CAAC;IAED,kDAAkD;IAClD,qEAAqE;IACrE,qEAAqE;IACrE,2DAA2D;IAC3D,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,UAAU,GAAG,SAAS,CAAC;YACvB,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,yEAAyE;YACvE,mEAAmE,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAA4B,CAAC;IACvE,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;IAClC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE5C,OAAO;QACL,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC;QAC3C,WAAW,EAAE,UAAU;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,WAAmB,EAAE,QAAgB;IAC3D,OAAO;QACL,eAAe,EAAE,sBAAsB,CAAC,WAAW,CAAC;QACpD,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC;QACtC,eAAe,EAAE,sBAAsB,CAAC,WAAW,CAAC;QACpD,UAAU,EAAE,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC;QACpD,WAAW,EAAE,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC;QACtD,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC;QACxC,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC;QAC7C,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,sUAAsU;QACxU,uEAAuE;QACvE,kEAAkE;QAClE,uEAAuE;QACvE,8DAA8D;QAC9D,WAAW,EAAE;YACX,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SACzC;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;SACnB;KACF,EACD,KAAK,EAAE,IAAoC,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACnE,MAAM,MAAM,GAA0B,IAAI,CAAC,gBAAgB;gBACzD,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE;gBACjE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;gBAC1C,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"describe-project.js","sourceRoot":"","sources":["../../src/tools/describe-project.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,10 @@ vi.mock('@mmnto/totem', () => ({
26
26
  },
27
27
  // Stubs used by state-extractors (imported transitively via the tool).
28
28
  resolveGitRoot: () => null,
29
+ resolveStrategyRoot: () => ({
30
+ resolved: false,
31
+ reason: 'mock state-extractors test: no strategy root',
32
+ }),
29
33
  safeExec: () => '',
30
34
  readJsonSafe: () => {
31
35
  // Prefixed to match Totem's error convention so the lint rule does not
@@ -1 +1 @@
1
- {"version":3,"file":"describe-project.test.js","sourceRoot":"","sources":["../../src/tools/describe-project.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"describe-project.test.js","sourceRoot":"","sources":["../../src/tools/describe-project.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmnto/mcp",
3
- "version": "1.17.0",
3
+ "version": "1.18.0",
4
4
  "description": "MCP server for Totem — AI persistent memory and context layer",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,7 +19,7 @@
19
19
  "dotenv": "^16.4.0",
20
20
  "jiti": "^2.4.0",
21
21
  "zod": "^3.24.0",
22
- "@mmnto/totem": "1.17.0"
22
+ "@mmnto/totem": "1.18.0"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.0.0",