@mmnto/mcp 1.17.1 → 1.18.1
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 +16 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +88 -2
- package/dist/context.js.map +1 -1
- package/dist/context.test.js +47 -1
- package/dist/context.test.js.map +1 -1
- package/dist/schemas/describe-project.d.ts +94 -19
- package/dist/schemas/describe-project.d.ts.map +1 -1
- package/dist/schemas/describe-project.js +30 -6
- package/dist/schemas/describe-project.js.map +1 -1
- package/dist/schemas/describe-project.test.js +94 -6
- package/dist/schemas/describe-project.test.js.map +1 -1
- package/dist/state-extractors.d.ts +15 -1
- package/dist/state-extractors.d.ts.map +1 -1
- package/dist/state-extractors.js +22 -8
- package/dist/state-extractors.js.map +1 -1
- package/dist/state-extractors.test.js +41 -5
- package/dist/state-extractors.test.js.map +1 -1
- package/dist/tools/describe-project.d.ts.map +1 -1
- package/dist/tools/describe-project.js +19 -9
- package/dist/tools/describe-project.js.map +1 -1
- package/dist/tools/describe-project.test.js +4 -0
- package/dist/tools/describe-project.test.js.map +1 -1
- package/package.json +2 -2
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
|
*/
|
package/dist/context.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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
|
package/dist/context.js.map
CHANGED
|
@@ -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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"}
|
package/dist/context.test.js
CHANGED
|
@@ -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
|
package/dist/context.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.test.js","sourceRoot":"","sources":["../src/context.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAGzE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
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
|
-
|
|
37
|
-
|
|
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
|
|
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
|
-
}, "
|
|
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
|
-
|
|
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
|
|
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
|
-
}, "
|
|
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
|
-
|
|
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
|
|
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
|
-
}, "
|
|
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
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACxD,CAAC,CAAC;AAIH,8EAA8E;AAE9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;
|
|
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: {
|
|
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('
|
|
92
|
-
const parsed = StrategyPointerSchema.parse({
|
|
93
|
-
|
|
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":"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,EAAE,GAAG,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"describe-project.test.js","sourceRoot":"","sources":["../../src/schemas/describe-project.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
package/dist/state-extractors.js
CHANGED
|
@@ -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
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
|
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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,
|
|
1
|
+
{"version":3,"file":"state-extractors.js","sourceRoot":"","sources":["../src/state-extractors.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,20 +35,56 @@ describe('extractGitState', () => {
|
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
|
-
describe('extractStrategyPointer', () => {
|
|
39
|
-
|
|
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.
|
|
44
|
-
|
|
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
|
|
74
|
+
it('returns the resolved branch with a 7-char SHA and journal filename on the live repo', (ctx) => {
|
|
51
75
|
const ptr = extractStrategyPointer(REPO_ROOT);
|
|
76
|
+
// Integration assertion only runs when strategy is reachable on the
|
|
77
|
+
// running host. After the `.strategy` submodule retirement
|
|
78
|
+
// (mmnto-ai/totem#1749), the resolver legitimately returns
|
|
79
|
+
// `unresolved` on CI runners that have no env override, no
|
|
80
|
+
// `TotemConfig.strategyRoot`, and no sibling `../totem-strategy/`
|
|
81
|
+
// clone. The unresolved branch is covered by the prior test; the
|
|
82
|
+
// shape of the resolved branch is covered by the resolver's own
|
|
83
|
+
// unit tests in `packages/core/src/strategy-resolver.test.ts`.
|
|
84
|
+
if (!ptr.resolved) {
|
|
85
|
+
ctx.skip();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
52
88
|
if (ptr.sha !== null) {
|
|
53
89
|
expect(ptr.sha).toMatch(/^[0-9a-f]{7}$/);
|
|
54
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-extractors.test.js","sourceRoot":"","sources":["../src/state-extractors.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAErE,4DAA4D;AAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,yEAAyE;QACzE,yEAAyE;QACzE,kEAAkE;QAClE,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QACjF,wDAAwD;QACxD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,
|
|
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;
|
|
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
|
-
//
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
//
|
|
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,
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E,IAAI,eAAoE,CAAC;AAEzE,EAAE,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE,CAAC,CAAC;IACxD,SAAS,EAAE;KAAQ;CACpB,CAAC,CAAC,CAAC;AAEJ,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,gBAAgB;IAC7B,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC,+BAA+B,CAAC;IAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACxC,KAAK,EAAE,CAAC,UAAU,CAAC;CACpB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,YAAY,EAAE,CAAC,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC;IAC1E,eAAe,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE;IAC5C,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,EAAE;IAC/C,UAAU,EAAE,KAAM,SAAQ,KAAK;QAC7B,YAAY,CAAU;KACvB;IACD,uEAAuE;IACvE,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;IAC1B,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;IAClB,YAAY,EAAE,GAAG,EAAE;QACjB,uEAAuE;QACvE,wBAAwB;QACxB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,EAAE;CACtD,CAAC,CAAC,CAAC;AAEJ,IAAI,YAAY,GAAiB,IAAI,CAAC;AAEtC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;QAC3B,IAAI,YAAY;YAAE,MAAM,YAAY,CAAC;QACrC,OAAO;YACL,WAAW,EAAE,eAAe;YAC5B,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;SAC5C,CAAC;IACJ,CAAC,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,UAAU;IACjB,OAAO;QACL,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,KAAa,EAAE,OAAgB,EAAE,OAA+B,EAAE,EAAE;YACvF,eAAe,GAAG,OAAO,CAAC;QAC5B,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,GAAG,IAAI,CAAC;QACpB,mBAAmB,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,uBAAuB,CAAC,MAAe,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,uBAAuB,CAAC,MAAe,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,CAAC,MAAM,eAAe,CAAC,EAAE,CAAC,CAAoC,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,uBAAuB,CAAC,MAAe,CAAC,CAAC;QAEzC,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,YAAY,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAEpD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,iCAAiC,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,uBAAuB,CAAC,MAAe,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,CAAC,MAAM,eAAe,CAAC,EAAE,CAAC,CAGxC,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,uBAAuB,CAAC,MAAe,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,CAAC,MAAM,eAAe,CAAC,EAAE,CAAC,CAAoC,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;QACzC,gEAAgE;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,OAAO,EAAE,cAAc;YACvB,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC,+BAA+B,CAAC;YAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACxC,KAAK,EAAE,CAAC,UAAU,CAAC;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,uBAAuB,CAAC,MAAe,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,CAAC,MAAM,eAAe,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAEjE,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,uBAAuB,CAAC,MAAe,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,CAAC,MAAM,eAAe,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAEhE,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,qDAAqD;QACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,sFAAsF;QACtF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACrD,mCAAmC;QACnC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9C,uCAAuC;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
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.
|
|
3
|
+
"version": "1.18.1",
|
|
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.
|
|
22
|
+
"@mmnto/totem": "1.18.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "^22.0.0",
|