@mmnto/cli 1.94.0 → 1.96.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/build-lite.test.d.ts +14 -0
- package/dist/build-lite.test.d.ts.map +1 -0
- package/dist/build-lite.test.js +61 -0
- package/dist/build-lite.test.js.map +1 -0
- package/dist/commands/compile-cloud-model.test.d.ts +2 -0
- package/dist/commands/compile-cloud-model.test.d.ts.map +1 -0
- package/dist/commands/compile-cloud-model.test.js +91 -0
- package/dist/commands/compile-cloud-model.test.js.map +1 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +10 -1
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/docs.test.js +1 -0
- package/dist/commands/docs.test.js.map +1 -1
- package/dist/commands/init-detect.d.ts +39 -1
- package/dist/commands/init-detect.d.ts.map +1 -1
- package/dist/commands/init-detect.js +102 -77
- package/dist/commands/init-detect.js.map +1 -1
- package/dist/commands/init-detect.test.d.ts +2 -0
- package/dist/commands/init-detect.test.d.ts.map +1 -0
- package/dist/commands/init-detect.test.js +183 -0
- package/dist/commands/init-detect.test.js.map +1 -0
- package/dist/commands/mail.d.ts.map +1 -1
- package/dist/commands/mail.js +29 -3
- package/dist/commands/mail.js.map +1 -1
- package/dist/commands/mail.test.js +53 -0
- package/dist/commands/mail.test.js.map +1 -1
- package/dist/commands/shield-learn.test.js +1 -0
- package/dist/commands/shield-learn.test.js.map +1 -1
- package/dist/description.d.ts +14 -0
- package/dist/description.d.ts.map +1 -0
- package/dist/description.js +14 -0
- package/dist/description.js.map +1 -0
- package/dist/description.test.d.ts +2 -0
- package/dist/description.test.d.ts.map +1 -0
- package/dist/description.test.js +28 -0
- package/dist/description.test.js.map +1 -0
- package/dist/git.d.ts +7 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +31 -3
- package/dist/git.js.map +1 -1
- package/dist/git.test.js +49 -0
- package/dist/git.test.js.map +1 -1
- package/dist/help-freeze.d.ts +40 -0
- package/dist/help-freeze.d.ts.map +1 -0
- package/dist/help-freeze.js +53 -0
- package/dist/help-freeze.js.map +1 -0
- package/dist/help-freeze.test.d.ts +2 -0
- package/dist/help-freeze.test.d.ts.map +1 -0
- package/dist/help-freeze.test.js +67 -0
- package/dist/help-freeze.test.js.map +1 -0
- package/dist/help.d.ts +26 -7
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +93 -64
- package/dist/help.js.map +1 -1
- package/dist/help.test.js +78 -54
- package/dist/help.test.js.map +1 -1
- package/dist/index.js +79 -3
- package/dist/index.js.map +1 -1
- package/dist/orchestrators/anthropic-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/anthropic-orchestrator.js +21 -3
- package/dist/orchestrators/anthropic-orchestrator.js.map +1 -1
- package/dist/orchestrators/anthropic-orchestrator.test.js +43 -0
- package/dist/orchestrators/anthropic-orchestrator.test.js.map +1 -1
- package/dist/orchestrators/openai-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/openai-orchestrator.js +17 -3
- package/dist/orchestrators/openai-orchestrator.js.map +1 -1
- package/dist/orchestrators/openai-orchestrator.test.js +37 -0
- package/dist/orchestrators/openai-orchestrator.test.js.map +1 -1
- package/dist/utils/pilot.test.js +1 -0
- package/dist/utils/pilot.test.js.map +1 -1
- package/dist/utils.test.js +1 -0
- package/dist/utils.test.js.map +1 -1
- package/package.json +3 -3
|
@@ -53,9 +53,47 @@ export declare function detectAiTools(cwd: string): AiToolInfo[];
|
|
|
53
53
|
* Checks for API keys in env and .env, and optionally for a running Ollama instance.
|
|
54
54
|
*/
|
|
55
55
|
export declare function detectEmbeddingTier(cwd: string): EmbeddingTier;
|
|
56
|
+
/**
|
|
57
|
+
* Every LLM-backed role tag (lowercased `runOrchestrator` tag) a generated
|
|
58
|
+
* config names explicitly. Emitted configs assign a model per role instead of
|
|
59
|
+
* committing an ambient `orchestrator.defaultModel` — config names roles, not
|
|
60
|
+
* one ambient vendor default (Tenet-16 corollary, mmnto-ai/totem-strategy#800
|
|
61
|
+
* item 1). A role absent from this list fails loud at invocation ("No model
|
|
62
|
+
* specified") instead of silently riding a vendor default.
|
|
63
|
+
*/
|
|
64
|
+
export declare const INIT_ORCHESTRATOR_ROLES: readonly ["compile", "docs", "spec", "shield", "triage", "extract", "reviewlearn"];
|
|
65
|
+
/**
|
|
66
|
+
* Model IDs stamped into generated consumer configs, one per detection branch
|
|
67
|
+
* (docs/reference/supported-models.md § Updating Defaults, location 3).
|
|
68
|
+
* `claudeCli` is the claude CLI's own tier alias, which tracks that CLI's
|
|
69
|
+
* current Sonnet instead of pinning a dated ID.
|
|
70
|
+
*/
|
|
71
|
+
export declare const INIT_ORCHESTRATOR_MODELS: {
|
|
72
|
+
readonly geminiCli: "gemini-3.5-flash";
|
|
73
|
+
readonly claudeCli: "sonnet";
|
|
74
|
+
readonly gemini: "gemini-3.5-flash";
|
|
75
|
+
readonly anthropic: "claude-sonnet-5";
|
|
76
|
+
readonly openai: "gpt-5.6-terra";
|
|
77
|
+
readonly ollama: "gemma4";
|
|
78
|
+
};
|
|
79
|
+
/** Map every emitted role to the same model ID (uniform per-provider default). */
|
|
80
|
+
export declare function buildRoleOverrides(model: string): Record<string, string>;
|
|
81
|
+
/**
|
|
82
|
+
* Render the TS-template orchestrator block from the same object that gets
|
|
83
|
+
* serialized into YAML/TOML configs, so the two surfaces cannot drift.
|
|
84
|
+
* Handles every JSON-shaped value type; `null`/`undefined` render as an
|
|
85
|
+
* absent key (optional-key semantics, matching the YAML/TOML serializers).
|
|
86
|
+
*/
|
|
87
|
+
export declare function renderOrchestratorBlock(config: Record<string, unknown>): string;
|
|
56
88
|
/**
|
|
57
89
|
* Auto-detect the best orchestrator from the environment.
|
|
58
|
-
* Priority: gemini CLI → claude CLI → API keys (GEMINI → ANTHROPIC → OPENAI) → null.
|
|
90
|
+
* Priority: gemini CLI → claude CLI → API keys (GEMINI → ANTHROPIC → OPENAI) → ollama → null.
|
|
91
|
+
*
|
|
92
|
+
* Detection resolves the consumer's local environment at genesis; the emitted
|
|
93
|
+
* block names a model per role rather than committing an ambient
|
|
94
|
+
* `defaultModel`. Note `totem lesson compile --cloud` deliberately resolves
|
|
95
|
+
* from `--model` / `defaultModel` only (mmnto-ai/totem#2357), so it stays
|
|
96
|
+
* fail-loud under this shape.
|
|
59
97
|
*/
|
|
60
98
|
export declare function detectOrchestrator(cwd: string): DetectedOrchestrator | null;
|
|
61
99
|
export declare function buildTargets(detected: DetectedProject): IngestTarget[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-detect.d.ts","sourceRoot":"","sources":["../../src/commands/init-detect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAOjD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAInF;AAID,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAClD,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,EAAE,YAAY,CAAC;IACpC,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEpG,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;2EAEuE;IACvE,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,aAAa,CAAC,EAAE,CACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,KACnC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACrC;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAeD,6FAA6F;AAC7F,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAQzE;AAMD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,UAAU,EA+BhC,CAAC;AAIF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CA0C1D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CAqBvD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAiB9D;
|
|
1
|
+
{"version":3,"file":"init-detect.d.ts","sourceRoot":"","sources":["../../src/commands/init-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -156,9 +156,89 @@ export function detectEmbeddingTier(cwd) {
|
|
|
156
156
|
return 'openai';
|
|
157
157
|
return 'none';
|
|
158
158
|
}
|
|
159
|
+
// ─── Orchestrator emission (Tenet-16 corollary) ──────────
|
|
160
|
+
/**
|
|
161
|
+
* Every LLM-backed role tag (lowercased `runOrchestrator` tag) a generated
|
|
162
|
+
* config names explicitly. Emitted configs assign a model per role instead of
|
|
163
|
+
* committing an ambient `orchestrator.defaultModel` — config names roles, not
|
|
164
|
+
* one ambient vendor default (Tenet-16 corollary, mmnto-ai/totem-strategy#800
|
|
165
|
+
* item 1). A role absent from this list fails loud at invocation ("No model
|
|
166
|
+
* specified") instead of silently riding a vendor default.
|
|
167
|
+
*/
|
|
168
|
+
export const INIT_ORCHESTRATOR_ROLES = [
|
|
169
|
+
'compile',
|
|
170
|
+
'docs',
|
|
171
|
+
'spec',
|
|
172
|
+
'shield',
|
|
173
|
+
'triage',
|
|
174
|
+
'extract',
|
|
175
|
+
'reviewlearn',
|
|
176
|
+
];
|
|
177
|
+
/**
|
|
178
|
+
* Model IDs stamped into generated consumer configs, one per detection branch
|
|
179
|
+
* (docs/reference/supported-models.md § Updating Defaults, location 3).
|
|
180
|
+
* `claudeCli` is the claude CLI's own tier alias, which tracks that CLI's
|
|
181
|
+
* current Sonnet instead of pinning a dated ID.
|
|
182
|
+
*/
|
|
183
|
+
export const INIT_ORCHESTRATOR_MODELS = {
|
|
184
|
+
geminiCli: 'gemini-3.5-flash',
|
|
185
|
+
claudeCli: 'sonnet',
|
|
186
|
+
gemini: 'gemini-3.5-flash',
|
|
187
|
+
anthropic: 'claude-sonnet-5',
|
|
188
|
+
openai: 'gpt-5.6-terra',
|
|
189
|
+
ollama: 'gemma4',
|
|
190
|
+
};
|
|
191
|
+
/** Map every emitted role to the same model ID (uniform per-provider default). */
|
|
192
|
+
export function buildRoleOverrides(model) {
|
|
193
|
+
return Object.fromEntries(INIT_ORCHESTRATOR_ROLES.map((role) => [role, model]));
|
|
194
|
+
}
|
|
195
|
+
/** Escape a value for embedding in a single-quoted TS string literal, so a
|
|
196
|
+
* future model ID or shell command containing `'` or `\` cannot emit a
|
|
197
|
+
* syntactically broken consumer config (mmnto-ai/totem#2360 review round). */
|
|
198
|
+
function escapeTsString(value) {
|
|
199
|
+
return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Render the TS-template orchestrator block from the same object that gets
|
|
203
|
+
* serialized into YAML/TOML configs, so the two surfaces cannot drift.
|
|
204
|
+
* Handles every JSON-shaped value type; `null`/`undefined` render as an
|
|
205
|
+
* absent key (optional-key semantics, matching the YAML/TOML serializers).
|
|
206
|
+
*/
|
|
207
|
+
export function renderOrchestratorBlock(config) {
|
|
208
|
+
const lines = [' orchestrator: {'];
|
|
209
|
+
for (const [key, value] of Object.entries(config)) {
|
|
210
|
+
if (typeof value === 'string') {
|
|
211
|
+
lines.push(` ${key}: '${escapeTsString(value)}',`);
|
|
212
|
+
}
|
|
213
|
+
else if (typeof value === 'boolean' || typeof value === 'number') {
|
|
214
|
+
lines.push(` ${key}: ${String(value)},`);
|
|
215
|
+
}
|
|
216
|
+
else if (Array.isArray(value)) {
|
|
217
|
+
lines.push(` ${key}: ${JSON.stringify(value)},`);
|
|
218
|
+
}
|
|
219
|
+
else if (value && typeof value === 'object') {
|
|
220
|
+
lines.push(` ${key}: {`);
|
|
221
|
+
for (const [role, model] of Object.entries(value)) {
|
|
222
|
+
lines.push(` ${role}: '${escapeTsString(model)}',`);
|
|
223
|
+
}
|
|
224
|
+
lines.push(' },');
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
lines.push(' },');
|
|
228
|
+
return lines.join('\n');
|
|
229
|
+
}
|
|
230
|
+
function orchestratorResult(config) {
|
|
231
|
+
return { config, block: renderOrchestratorBlock(config) };
|
|
232
|
+
}
|
|
159
233
|
/**
|
|
160
234
|
* Auto-detect the best orchestrator from the environment.
|
|
161
|
-
* Priority: gemini CLI → claude CLI → API keys (GEMINI → ANTHROPIC → OPENAI) → null.
|
|
235
|
+
* Priority: gemini CLI → claude CLI → API keys (GEMINI → ANTHROPIC → OPENAI) → ollama → null.
|
|
236
|
+
*
|
|
237
|
+
* Detection resolves the consumer's local environment at genesis; the emitted
|
|
238
|
+
* block names a model per role rather than committing an ambient
|
|
239
|
+
* `defaultModel`. Note `totem lesson compile --cloud` deliberately resolves
|
|
240
|
+
* from `--model` / `defaultModel` only (mmnto-ai/totem#2357), so it stays
|
|
241
|
+
* fail-loud under this shape.
|
|
162
242
|
*/
|
|
163
243
|
export function detectOrchestrator(cwd) {
|
|
164
244
|
// Read .env file once (loadEnv may not have run yet)
|
|
@@ -173,100 +253,45 @@ export function detectOrchestrator(cwd) {
|
|
|
173
253
|
}
|
|
174
254
|
// 1. Gemini CLI on PATH → shell provider
|
|
175
255
|
if (cliExists('gemini')) {
|
|
176
|
-
|
|
256
|
+
return orchestratorResult({
|
|
177
257
|
provider: 'shell',
|
|
178
258
|
command: 'gemini --model {model} -o json -e none < {file}',
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
spec: 'gemini-3.1-pro-preview',
|
|
182
|
-
shield: 'gemini-3.1-pro-preview',
|
|
183
|
-
triage: 'gemini-3.1-pro-preview',
|
|
184
|
-
},
|
|
185
|
-
};
|
|
186
|
-
return {
|
|
187
|
-
config,
|
|
188
|
-
block: ` orchestrator: {
|
|
189
|
-
provider: 'shell',
|
|
190
|
-
command: 'gemini --model {model} -o json -e none < {file}',
|
|
191
|
-
defaultModel: 'gemini-3-flash-preview',
|
|
192
|
-
overrides: {
|
|
193
|
-
'spec': 'gemini-3.1-pro-preview',
|
|
194
|
-
'shield': 'gemini-3.1-pro-preview',
|
|
195
|
-
'triage': 'gemini-3.1-pro-preview',
|
|
196
|
-
},
|
|
197
|
-
},`,
|
|
198
|
-
};
|
|
259
|
+
overrides: buildRoleOverrides(INIT_ORCHESTRATOR_MODELS.geminiCli),
|
|
260
|
+
});
|
|
199
261
|
}
|
|
200
262
|
// 2. Claude CLI on PATH → shell provider (anthropic)
|
|
201
263
|
if (cliExists('claude')) {
|
|
202
|
-
|
|
264
|
+
return orchestratorResult({
|
|
203
265
|
provider: 'shell',
|
|
204
266
|
command: 'claude -p {file} --model {model} --output-format json',
|
|
205
|
-
|
|
206
|
-
};
|
|
207
|
-
return {
|
|
208
|
-
config,
|
|
209
|
-
block: ` orchestrator: {
|
|
210
|
-
provider: 'shell',
|
|
211
|
-
command: 'claude -p {file} --model {model} --output-format json',
|
|
212
|
-
defaultModel: 'sonnet',
|
|
213
|
-
},`,
|
|
214
|
-
};
|
|
267
|
+
overrides: buildRoleOverrides(INIT_ORCHESTRATOR_MODELS.claudeCli),
|
|
268
|
+
});
|
|
215
269
|
}
|
|
216
270
|
// 3. API keys → native SDK providers
|
|
217
271
|
if (hasKey(envContent, 'GEMINI_API_KEY', 'GOOGLE_API_KEY')) {
|
|
218
|
-
|
|
272
|
+
return orchestratorResult({
|
|
219
273
|
provider: 'gemini',
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
spec: 'gemini-3.1-pro-preview',
|
|
223
|
-
shield: 'gemini-3.1-pro-preview',
|
|
224
|
-
triage: 'gemini-3.1-pro-preview',
|
|
225
|
-
},
|
|
226
|
-
};
|
|
227
|
-
return {
|
|
228
|
-
config,
|
|
229
|
-
block: ` orchestrator: {
|
|
230
|
-
provider: 'gemini',
|
|
231
|
-
defaultModel: 'gemini-3-flash-preview',
|
|
232
|
-
overrides: {
|
|
233
|
-
'spec': 'gemini-3.1-pro-preview',
|
|
234
|
-
'shield': 'gemini-3.1-pro-preview',
|
|
235
|
-
'triage': 'gemini-3.1-pro-preview',
|
|
236
|
-
},
|
|
237
|
-
},`,
|
|
238
|
-
};
|
|
274
|
+
overrides: buildRoleOverrides(INIT_ORCHESTRATOR_MODELS.gemini),
|
|
275
|
+
});
|
|
239
276
|
}
|
|
240
277
|
if (hasKey(envContent, 'ANTHROPIC_API_KEY')) {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
provider: 'anthropic',
|
|
246
|
-
defaultModel: 'claude-sonnet-4-6',
|
|
247
|
-
},`,
|
|
248
|
-
};
|
|
278
|
+
return orchestratorResult({
|
|
279
|
+
provider: 'anthropic',
|
|
280
|
+
overrides: buildRoleOverrides(INIT_ORCHESTRATOR_MODELS.anthropic),
|
|
281
|
+
});
|
|
249
282
|
}
|
|
250
283
|
if (hasKey(envContent, 'OPENAI_API_KEY')) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
provider: 'openai',
|
|
256
|
-
defaultModel: 'gpt-5.4-mini',
|
|
257
|
-
},`,
|
|
258
|
-
};
|
|
284
|
+
return orchestratorResult({
|
|
285
|
+
provider: 'openai',
|
|
286
|
+
overrides: buildRoleOverrides(INIT_ORCHESTRATOR_MODELS.openai),
|
|
287
|
+
});
|
|
259
288
|
}
|
|
260
289
|
// 4. Ollama running locally → use gemma4 (free, fast, air-gappable)
|
|
261
290
|
if (cliExists('ollama')) {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
provider: 'ollama',
|
|
267
|
-
defaultModel: 'gemma4',
|
|
268
|
-
},`,
|
|
269
|
-
};
|
|
291
|
+
return orchestratorResult({
|
|
292
|
+
provider: 'ollama',
|
|
293
|
+
overrides: buildRoleOverrides(INIT_ORCHESTRATOR_MODELS.ollama),
|
|
294
|
+
});
|
|
270
295
|
}
|
|
271
296
|
// 5. Nothing found → omit orchestrator (Lite/Standard tier)
|
|
272
297
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-detect.js","sourceRoot":"","sources":["../../src/commands/init-detect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init-detect.js","sourceRoot":"","sources":["../../src/commands/init-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-detect.test.d.ts","sourceRoot":"","sources":["../../src/commands/init-detect.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as os from 'node:os';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
|
+
// Mock the CLI-probe seam (cliExists → safeExec) so branch selection is
|
|
6
|
+
// host-independent: no real `where`/`which` spawns, no PATH sensitivity.
|
|
7
|
+
vi.mock('@mmnto/totem', async (importOriginal) => {
|
|
8
|
+
const actual = await importOriginal();
|
|
9
|
+
return {
|
|
10
|
+
...actual,
|
|
11
|
+
safeExec: vi.fn(() => {
|
|
12
|
+
throw new Error('not on PATH');
|
|
13
|
+
}),
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
import { safeExec } from '@mmnto/totem';
|
|
17
|
+
import { buildRoleOverrides, detectOrchestrator, INIT_ORCHESTRATOR_MODELS, INIT_ORCHESTRATOR_ROLES, renderOrchestratorBlock, } from './init-detect.js';
|
|
18
|
+
const API_KEY_VARS = ['GEMINI_API_KEY', 'GOOGLE_API_KEY', 'ANTHROPIC_API_KEY', 'OPENAI_API_KEY'];
|
|
19
|
+
// Independent contract fixtures (mmnto-ai/totem#2360 review round): pinned as
|
|
20
|
+
// literals so an accidental edit to the production constants fails here
|
|
21
|
+
// instead of flowing through derived expectations and staying green.
|
|
22
|
+
const EXPECTED_ROLES = [
|
|
23
|
+
'compile',
|
|
24
|
+
'docs',
|
|
25
|
+
'spec',
|
|
26
|
+
'shield',
|
|
27
|
+
'triage',
|
|
28
|
+
'extract',
|
|
29
|
+
'reviewlearn',
|
|
30
|
+
];
|
|
31
|
+
const EXPECTED_MODELS = {
|
|
32
|
+
geminiCli: 'gemini-3.5-flash',
|
|
33
|
+
claudeCli: 'sonnet',
|
|
34
|
+
gemini: 'gemini-3.5-flash',
|
|
35
|
+
anthropic: 'claude-sonnet-5',
|
|
36
|
+
openai: 'gpt-5.6-terra',
|
|
37
|
+
ollama: 'gemma4',
|
|
38
|
+
};
|
|
39
|
+
/** Make cliExists() succeed only for the given binary names. */
|
|
40
|
+
function stubCliOnPath(...names) {
|
|
41
|
+
vi.mocked(safeExec).mockImplementation(((_cmd, args) => {
|
|
42
|
+
if (args && names.includes(args[0]))
|
|
43
|
+
return '';
|
|
44
|
+
throw new Error('not on PATH');
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
describe('detectOrchestrator emission shape (Tenet-16 corollary)', () => {
|
|
48
|
+
let tmpDir;
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-initdetect-'));
|
|
51
|
+
// Neutralize host API keys so only per-test .env content drives detection.
|
|
52
|
+
for (const v of API_KEY_VARS)
|
|
53
|
+
vi.stubEnv(v, '');
|
|
54
|
+
});
|
|
55
|
+
afterEach(() => {
|
|
56
|
+
vi.unstubAllEnvs();
|
|
57
|
+
vi.mocked(safeExec).mockImplementation(() => {
|
|
58
|
+
throw new Error('not on PATH');
|
|
59
|
+
});
|
|
60
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
61
|
+
});
|
|
62
|
+
function writeEnv(content) {
|
|
63
|
+
fs.writeFileSync(path.join(tmpDir, '.env'), content);
|
|
64
|
+
}
|
|
65
|
+
it('returns null when no CLI or API key is present', () => {
|
|
66
|
+
expect(detectOrchestrator(tmpDir)).toBeNull();
|
|
67
|
+
});
|
|
68
|
+
it('production constants match the pinned contract fixtures', () => {
|
|
69
|
+
expect([...INIT_ORCHESTRATOR_ROLES]).toEqual([...EXPECTED_ROLES]);
|
|
70
|
+
expect(INIT_ORCHESTRATOR_MODELS).toEqual(EXPECTED_MODELS);
|
|
71
|
+
});
|
|
72
|
+
it.each([
|
|
73
|
+
['GEMINI_API_KEY', 'gemini', EXPECTED_MODELS.gemini],
|
|
74
|
+
['GOOGLE_API_KEY', 'gemini', EXPECTED_MODELS.gemini],
|
|
75
|
+
['ANTHROPIC_API_KEY', 'anthropic', EXPECTED_MODELS.anthropic],
|
|
76
|
+
['OPENAI_API_KEY', 'openai', EXPECTED_MODELS.openai],
|
|
77
|
+
])('%s → provider %s with every role on %s', (envKey, provider, model) => {
|
|
78
|
+
writeEnv(`${envKey}=test-key\n`);
|
|
79
|
+
const result = detectOrchestrator(tmpDir);
|
|
80
|
+
expect(result).not.toBeNull();
|
|
81
|
+
expect(result.config['provider']).toBe(provider);
|
|
82
|
+
expect(result.config['overrides']).toEqual(Object.fromEntries(EXPECTED_ROLES.map((role) => [role, model])));
|
|
83
|
+
});
|
|
84
|
+
it('gemini CLI on PATH wins over API keys and emits the shell provider', () => {
|
|
85
|
+
stubCliOnPath('gemini');
|
|
86
|
+
writeEnv('ANTHROPIC_API_KEY=test-key\n');
|
|
87
|
+
const result = detectOrchestrator(tmpDir);
|
|
88
|
+
expect(result.config['provider']).toBe('shell');
|
|
89
|
+
expect(result.config['command']).toContain('gemini --model {model}');
|
|
90
|
+
expect(result.config['overrides']).toEqual(Object.fromEntries(EXPECTED_ROLES.map((role) => [role, EXPECTED_MODELS.geminiCli])));
|
|
91
|
+
});
|
|
92
|
+
it('claude CLI branch emits the tier alias, not a dated pin', () => {
|
|
93
|
+
stubCliOnPath('claude');
|
|
94
|
+
const result = detectOrchestrator(tmpDir);
|
|
95
|
+
expect(result.config['provider']).toBe('shell');
|
|
96
|
+
expect(result.config['command']).toContain('claude -p {file}');
|
|
97
|
+
expect(result.config['overrides']).toEqual(Object.fromEntries(EXPECTED_ROLES.map((role) => [role, 'sonnet'])));
|
|
98
|
+
});
|
|
99
|
+
it('ollama branch emits gemma4 per-role', () => {
|
|
100
|
+
stubCliOnPath('ollama');
|
|
101
|
+
const result = detectOrchestrator(tmpDir);
|
|
102
|
+
expect(result.config['provider']).toBe('ollama');
|
|
103
|
+
expect(result.config['overrides']).toEqual(Object.fromEntries(EXPECTED_ROLES.map((role) => [role, 'gemma4'])));
|
|
104
|
+
});
|
|
105
|
+
it('no branch emits an ambient defaultModel, in the config object or the rendered block', () => {
|
|
106
|
+
const branches = [
|
|
107
|
+
() => stubCliOnPath('gemini'),
|
|
108
|
+
() => stubCliOnPath('claude'),
|
|
109
|
+
() => stubCliOnPath('ollama'),
|
|
110
|
+
() => writeEnv('GEMINI_API_KEY=test-key\n'),
|
|
111
|
+
() => writeEnv('ANTHROPIC_API_KEY=test-key\n'),
|
|
112
|
+
() => writeEnv('OPENAI_API_KEY=test-key\n'),
|
|
113
|
+
];
|
|
114
|
+
for (const arm of branches) {
|
|
115
|
+
vi.mocked(safeExec).mockImplementation(() => {
|
|
116
|
+
throw new Error('not on PATH');
|
|
117
|
+
});
|
|
118
|
+
fs.rmSync(path.join(tmpDir, '.env'), { force: true });
|
|
119
|
+
arm();
|
|
120
|
+
const result = detectOrchestrator(tmpDir);
|
|
121
|
+
expect(result).not.toBeNull();
|
|
122
|
+
expect(Object.keys(result.config)).not.toContain('defaultModel');
|
|
123
|
+
expect(result.block).not.toContain('defaultModel');
|
|
124
|
+
expect(Object.keys(result.config['overrides']).sort()).toEqual([...EXPECTED_ROLES].sort());
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
describe('buildRoleOverrides', () => {
|
|
129
|
+
it('maps every emitted role to the given model', () => {
|
|
130
|
+
const overrides = buildRoleOverrides('some-model');
|
|
131
|
+
expect(Object.keys(overrides)).toEqual([...EXPECTED_ROLES]);
|
|
132
|
+
expect(new Set(Object.values(overrides))).toEqual(new Set(['some-model']));
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('renderOrchestratorBlock', () => {
|
|
136
|
+
it('renders the TS block from the same object serialized to YAML/TOML (no drift)', () => {
|
|
137
|
+
const config = {
|
|
138
|
+
provider: 'gemini',
|
|
139
|
+
overrides: buildRoleOverrides(INIT_ORCHESTRATOR_MODELS.gemini),
|
|
140
|
+
};
|
|
141
|
+
const block = renderOrchestratorBlock(config);
|
|
142
|
+
expect(block.startsWith(' orchestrator: {')).toBe(true);
|
|
143
|
+
expect(block.endsWith(' },')).toBe(true);
|
|
144
|
+
expect(block).toContain(" provider: 'gemini',");
|
|
145
|
+
for (const role of INIT_ORCHESTRATOR_ROLES) {
|
|
146
|
+
expect(block).toContain(` ${role}: '${INIT_ORCHESTRATOR_MODELS.gemini}',`);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
it('escapes single quotes and backslashes in string values (no silent syntax break)', () => {
|
|
150
|
+
const block = renderOrchestratorBlock({
|
|
151
|
+
provider: 'shell',
|
|
152
|
+
command: "echo 'it''s' \\ done",
|
|
153
|
+
overrides: { compile: "model'with\\quirks" },
|
|
154
|
+
});
|
|
155
|
+
expect(block).toContain(" command: 'echo \\'it\\'\\'s\\' \\\\ done',");
|
|
156
|
+
expect(block).toContain(" compile: 'model\\'with\\\\quirks',");
|
|
157
|
+
});
|
|
158
|
+
it('renders booleans, numbers, and arrays instead of silently omitting them', () => {
|
|
159
|
+
const block = renderOrchestratorBlock({
|
|
160
|
+
provider: 'gemini',
|
|
161
|
+
enableContextCaching: true,
|
|
162
|
+
maxRetries: 3,
|
|
163
|
+
lanes: ['anthropic:claude-sonnet-5', 'gemini:gemini-3.5-flash'],
|
|
164
|
+
});
|
|
165
|
+
expect(block).toContain(' enableContextCaching: true,');
|
|
166
|
+
expect(block).toContain(' maxRetries: 3,');
|
|
167
|
+
expect(block).toContain(' lanes: ["anthropic:claude-sonnet-5","gemini:gemini-3.5-flash"],');
|
|
168
|
+
});
|
|
169
|
+
it('renders shell-provider blocks with the command line before overrides', () => {
|
|
170
|
+
const config = {
|
|
171
|
+
provider: 'shell',
|
|
172
|
+
command: 'gemini --model {model} -o json -e none < {file}',
|
|
173
|
+
overrides: buildRoleOverrides('m'),
|
|
174
|
+
};
|
|
175
|
+
const block = renderOrchestratorBlock(config);
|
|
176
|
+
const commandIdx = block.indexOf('command:');
|
|
177
|
+
const overridesIdx = block.indexOf('overrides:');
|
|
178
|
+
expect(commandIdx).toBeGreaterThan(-1);
|
|
179
|
+
expect(overridesIdx).toBeGreaterThan(commandIdx);
|
|
180
|
+
expect(block).toContain(" command: 'gemini --model {model} -o json -e none < {file}',");
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
//# sourceMappingURL=init-detect.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-detect.test.js","sourceRoot":"","sources":["../../src/commands/init-detect.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/commands/mail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EAKL,KAAK,mBAAmB,EAEzB,MAAM,cAAc,CAAC;AAoBtB,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,4HAA4H;IAC5H,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B;;;iDAG6C;IAC7C,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACvC,CAAC;IACF,+EAA+E;IAC/E,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC;iFAC6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/commands/mail.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mail.js
CHANGED
|
@@ -221,6 +221,21 @@ function drainProcessedDir(dir, into, warnings) {
|
|
|
221
221
|
warnings.push(`processed/ scan failed (${dir}): ${String(err)}`);
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* No-follow directory probe for the outbox level: `fs.existsSync` follows
|
|
226
|
+
* symlinks, so a symlinked `outbox/` would pull outside-tree content into the
|
|
227
|
+
* mail scan (mmnto-ai/totem#2355, sibling class to the #2354 ingest guard).
|
|
228
|
+
*/
|
|
229
|
+
function isRealDirectory(p) {
|
|
230
|
+
// totem-context: intentional cleanup — a raced/ENOENT lstat degrades to "not a directory" and skips this slot, matching the scan's skip-don't-abort posture (same idiom as the #2356 ingest guard).
|
|
231
|
+
try {
|
|
232
|
+
return fs.lstatSync(p).isDirectory();
|
|
233
|
+
// totem-context: intentional cleanup — see directive above the try; dual placement so the rule fires on either the catch-keyword line or the catch-body line.
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
224
239
|
/**
|
|
225
240
|
* Enumerate outbox directories under `<workspace>/<repo>/.totem/orchestration/<agent>/outbox`.
|
|
226
241
|
* Single-level by default; recursive mode walks `<workspace>/**` (capped at MAX_SCAN
|
|
@@ -246,11 +261,22 @@ function enumerateOutboxes(workspace, recursive, warnings) {
|
|
|
246
261
|
return slots;
|
|
247
262
|
}
|
|
248
263
|
const visit = (repoLabel, orchDir) => {
|
|
249
|
-
|
|
264
|
+
// No-follow both remaining path hops (greptile round on this PR):
|
|
265
|
+
// `existsSync` follows symlinks, so a symlinked `.totem/` or
|
|
266
|
+
// `orchestration/` inside a real repo would swing the whole agent scan
|
|
267
|
+
// into the link target. `path.dirname(orchDir)` is the `.totem` hop.
|
|
268
|
+
if (!isRealDirectory(path.dirname(orchDir)) || !isRealDirectory(orchDir))
|
|
250
269
|
return;
|
|
251
270
|
let agents;
|
|
252
271
|
try {
|
|
253
|
-
|
|
272
|
+
// Dirent-filter the agent level like the workspace/repo levels above:
|
|
273
|
+
// a symlinked `<agent>/` dir must not be followed into the mail scan
|
|
274
|
+
// (mmnto-ai/totem#2355; orchestration-resolver.ts is no-follow by design).
|
|
275
|
+
agents = fs
|
|
276
|
+
.readdirSync(orchDir, { withFileTypes: true })
|
|
277
|
+
.filter((d) => d.isDirectory())
|
|
278
|
+
.map((d) => d.name)
|
|
279
|
+
.sort();
|
|
254
280
|
// totem-context: intentional cleanup — per-repo readdir failure skips this slot, emits a structured warning, and lets sibling repos continue; one inaccessible orchestration tree must not block the rest of the scan.
|
|
255
281
|
}
|
|
256
282
|
catch (err) {
|
|
@@ -259,7 +285,7 @@ function enumerateOutboxes(workspace, recursive, warnings) {
|
|
|
259
285
|
}
|
|
260
286
|
for (const agent of agents) {
|
|
261
287
|
const outbox = path.join(orchDir, agent, 'outbox');
|
|
262
|
-
if (
|
|
288
|
+
if (isRealDirectory(outbox)) {
|
|
263
289
|
slots.push({ repo: repoLabel, agent, outbox });
|
|
264
290
|
}
|
|
265
291
|
}
|