@mmnto/cli 1.13.0 → 1.14.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/commands/briefing.d.ts.map +1 -1
- package/dist/commands/briefing.js +3 -1
- package/dist/commands/briefing.js.map +1 -1
- package/dist/commands/briefing.test.js +1 -0
- package/dist/commands/briefing.test.js.map +1 -1
- package/dist/commands/compile-prune.test.d.ts +2 -0
- package/dist/commands/compile-prune.test.d.ts.map +1 -0
- package/dist/commands/compile-prune.test.js +116 -0
- package/dist/commands/compile-prune.test.js.map +1 -0
- package/dist/commands/compile.d.ts +37 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +120 -11
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +12 -6
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +33 -5
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/extract-local.d.ts.map +1 -1
- package/dist/commands/extract-local.js +3 -1
- package/dist/commands/extract-local.js.map +1 -1
- package/dist/commands/extract-pr.d.ts.map +1 -1
- package/dist/commands/extract-pr.js +3 -1
- package/dist/commands/extract-pr.js.map +1 -1
- package/dist/commands/extract-scan.d.ts.map +1 -1
- package/dist/commands/extract-scan.js +3 -1
- package/dist/commands/extract-scan.js.map +1 -1
- package/dist/commands/extract-shared.d.ts.map +1 -1
- package/dist/commands/extract-shared.js +3 -1
- package/dist/commands/extract-shared.js.map +1 -1
- package/dist/commands/extract.test.js +2 -0
- package/dist/commands/extract.test.js.map +1 -1
- package/dist/commands/handoff.d.ts +17 -37
- package/dist/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +120 -273
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/handoff.test.js +64 -277
- package/dist/commands/handoff.test.js.map +1 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +2 -1
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/review-learn.d.ts.map +1 -1
- package/dist/commands/review-learn.js +3 -1
- package/dist/commands/review-learn.js.map +1 -1
- package/dist/commands/review-learn.test.js +1 -0
- package/dist/commands/review-learn.test.js.map +1 -1
- package/dist/commands/run-compiled-rules.d.ts +2 -0
- package/dist/commands/run-compiled-rules.d.ts.map +1 -1
- package/dist/commands/run-compiled-rules.js +63 -5
- package/dist/commands/run-compiled-rules.js.map +1 -1
- package/dist/commands/run-compiled-rules.test.js +382 -0
- package/dist/commands/run-compiled-rules.test.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +3 -1
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/shield.d.ts.map +1 -1
- package/dist/commands/shield.js +8 -4
- package/dist/commands/shield.js.map +1 -1
- package/dist/commands/shield.test.js +3 -1
- package/dist/commands/shield.test.js.map +1 -1
- package/dist/commands/spec.d.ts.map +1 -1
- package/dist/commands/spec.js +8 -2
- package/dist/commands/spec.js.map +1 -1
- package/dist/commands/spec.test.js +2 -0
- package/dist/commands/spec.test.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +3 -1
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/triage.d.ts.map +1 -1
- package/dist/commands/triage.js +3 -1
- package/dist/commands/triage.js.map +1 -1
- package/dist/commands/triage.test.js +1 -0
- package/dist/commands/triage.test.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +0 -1
- package/dist/help.js.map +1 -1
- package/dist/hooks/__tests__/auto-context.test.js +1 -0
- package/dist/hooks/__tests__/auto-context.test.js.map +1 -1
- package/dist/hooks/auto-context.d.ts.map +1 -1
- package/dist/hooks/auto-context.js +2 -2
- package/dist/hooks/auto-context.js.map +1 -1
- package/dist/index.js +8 -10
- package/dist/index.js.map +1 -1
- package/dist/orchestrators/anthropic-orchestrator.d.ts +0 -6
- package/dist/orchestrators/anthropic-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/anthropic-orchestrator.js +55 -1
- package/dist/orchestrators/anthropic-orchestrator.js.map +1 -1
- package/dist/orchestrators/anthropic-orchestrator.test.js +174 -0
- package/dist/orchestrators/anthropic-orchestrator.test.js.map +1 -1
- package/dist/orchestrators/gemini-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/gemini-orchestrator.js +25 -1
- package/dist/orchestrators/gemini-orchestrator.js.map +1 -1
- package/dist/orchestrators/gemini-orchestrator.test.js +38 -0
- package/dist/orchestrators/gemini-orchestrator.test.js.map +1 -1
- package/dist/orchestrators/ollama-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/ollama-orchestrator.js +18 -2
- package/dist/orchestrators/ollama-orchestrator.js.map +1 -1
- package/dist/orchestrators/ollama-orchestrator.test.js +34 -0
- package/dist/orchestrators/ollama-orchestrator.test.js.map +1 -1
- package/dist/orchestrators/openai-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/openai-orchestrator.js +19 -2
- package/dist/orchestrators/openai-orchestrator.js.map +1 -1
- package/dist/orchestrators/openai-orchestrator.test.js +38 -0
- package/dist/orchestrators/openai-orchestrator.test.js.map +1 -1
- package/dist/orchestrators/orchestrator.d.ts +38 -0
- package/dist/orchestrators/orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/orchestrator.js.map +1 -1
- package/dist/orchestrators/orchestrator.test.js +115 -0
- package/dist/orchestrators/orchestrator.test.js.map +1 -1
- package/dist/orchestrators/shell-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/shell-orchestrator.js +11 -2
- package/dist/orchestrators/shell-orchestrator.js.map +1 -1
- package/dist/orchestrators/shell-orchestrator.test.js +69 -0
- package/dist/orchestrators/shell-orchestrator.test.js.map +1 -1
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +85 -17
- package/dist/utils.js.map +1 -1
- package/dist/utils.test.js +198 -1
- package/dist/utils.test.js.map +1 -1
- package/package.json +2 -2
- package/dist/schemas/handoff-checkpoint.d.ts +0 -34
- package/dist/schemas/handoff-checkpoint.d.ts.map +0 -1
- package/dist/schemas/handoff-checkpoint.js +0 -13
- package/dist/schemas/handoff-checkpoint.js.map +0 -1
- package/dist/schemas/handoff-checkpoint.test.d.ts +0 -2
- package/dist/schemas/handoff-checkpoint.test.d.ts.map +0 -1
- package/dist/schemas/handoff-checkpoint.test.js +0 -65
- package/dist/schemas/handoff-checkpoint.test.js.map +0 -1
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EACL,YAAY,EAKb,MAAM,cAAc,CAAC;AAUtB,+EAA+E;AAC/E,eAAO,MAAM,MAAM,SAA+B,CAAC;AAEnD,yCAAyC;AACzC,eAAO,MAAM,aAAa,QAAS,CAAC;AAEpC;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKzC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAoBvE;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAIhF;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAuDzE;AAGD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA+BhD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAwB,GACjC,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,MAAM,CAaR;AAID,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAUnE;AAKD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAOzD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,OAAO,GAClB,MAAM,CAqBR;AAID,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAE9C;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,CAIpD;AAKD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,GAAE,MAAiC,EAC3C,SAAS,CAAC,EAAE,OAAO,GAClB,MAAM,CAqBR;AAID,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -267,9 +267,33 @@ const DEFAULT_TTLS = {
|
|
|
267
267
|
spec: 3600, // 1 hour
|
|
268
268
|
docs: 0, // No cache — each run should reflect latest state
|
|
269
269
|
shield: 0,
|
|
270
|
-
handoff: 0,
|
|
271
270
|
learn: 0,
|
|
272
271
|
};
|
|
272
|
+
/**
|
|
273
|
+
* Build the response-cache key for the orthogonal command-level cache (#52).
|
|
274
|
+
*
|
|
275
|
+
* Hashes prompt, systemPrompt, and the qualifiedModel string with `\0` byte
|
|
276
|
+
* delimiters between every field so boundary-case inputs (e.g. `prompt="AB",
|
|
277
|
+
* systemPrompt=""` vs `prompt="A", systemPrompt="B"`) produce distinct keys.
|
|
278
|
+
*
|
|
279
|
+
* Used by both the read path (lookup) and write path (store) inside
|
|
280
|
+
* `runOrchestrator` to guarantee the keys are identical — extracted as a
|
|
281
|
+
* pure helper after the mmnto/totem#1292 review (mmnto/totem#1291) caught a
|
|
282
|
+
* regression where my Phase 3 cascade fix updated only the read path,
|
|
283
|
+
* leaving the write path on the legacy `prompt + model` shape and making
|
|
284
|
+
* fresh cache entries unreachable on subsequent runs.
|
|
285
|
+
*/
|
|
286
|
+
function buildResponseCacheHash(prompt, systemPrompt, qualifiedModel) {
|
|
287
|
+
return crypto
|
|
288
|
+
.createHash('sha256')
|
|
289
|
+
.update(prompt)
|
|
290
|
+
.update('\0')
|
|
291
|
+
.update(systemPrompt ?? '')
|
|
292
|
+
.update('\0')
|
|
293
|
+
.update(qualifiedModel)
|
|
294
|
+
.digest('hex')
|
|
295
|
+
.slice(0, 16);
|
|
296
|
+
}
|
|
273
297
|
/**
|
|
274
298
|
* Validate orchestrator config, then either output raw context (--raw) or
|
|
275
299
|
* invoke the configured orchestrator provider and return the LLM content.
|
|
@@ -279,11 +303,27 @@ const DEFAULT_TTLS = {
|
|
|
279
303
|
* Callers are responsible for writing output via `writeOutput()`.
|
|
280
304
|
*/
|
|
281
305
|
export async function runOrchestrator(opts) {
|
|
282
|
-
const { prompt, tag, options, config, cwd } = opts;
|
|
306
|
+
const { prompt, systemPrompt, tag, options, config, cwd } = opts;
|
|
283
307
|
const configRoot = opts.configRoot ?? cwd;
|
|
284
|
-
// --raw mode: output context only
|
|
308
|
+
// --raw mode: output context only.
|
|
309
|
+
// mmnto/totem#1291 Phase 3: when systemPrompt is set (post-split callers like
|
|
310
|
+
// compile-lesson), concatenate both segments in the raw artifact so the
|
|
311
|
+
// file accurately reflects what the model would receive. Pre-split callers
|
|
312
|
+
// that pass only `prompt` get today's behavior unchanged.
|
|
313
|
+
//
|
|
314
|
+
// Plain `${systemPrompt}\n\n${prompt}` concatenation matches the established
|
|
315
|
+
// pattern in shell-orchestrator.ts (CLI binaries have no structured message
|
|
316
|
+
// API and the orchestrator concatenates before piping), and avoids any
|
|
317
|
+
// markdown-marker text that downstream consumers might misinterpret as
|
|
318
|
+
// content when piping the raw output to other tools or LLMs. CodeRabbit
|
|
319
|
+
// initially asked for the markers in mmnto/totem#1292 round 1; GCA pushed back
|
|
320
|
+
// in round 2 for the pipe-safety reason. The shell precedent + pipe-safety
|
|
321
|
+
// wins.
|
|
285
322
|
if (options.raw) {
|
|
286
|
-
|
|
323
|
+
const rawOutput = systemPrompt !== undefined && systemPrompt.length > 0
|
|
324
|
+
? `${systemPrompt}\n\n${prompt}`
|
|
325
|
+
: prompt;
|
|
326
|
+
writeOutput(rawOutput, options.out);
|
|
287
327
|
const suffix = opts.totalResults != null ? ` (${opts.totalResults} chunks)` : '';
|
|
288
328
|
log.dim(tag, `Raw context output complete${suffix}.`);
|
|
289
329
|
return undefined;
|
|
@@ -309,12 +349,7 @@ export async function runOrchestrator(opts) {
|
|
|
309
349
|
const useCache = ttlSeconds > 0 && !options.fresh;
|
|
310
350
|
let cachePath = '';
|
|
311
351
|
if (useCache) {
|
|
312
|
-
const hash =
|
|
313
|
-
.createHash('sha256')
|
|
314
|
-
.update(prompt)
|
|
315
|
-
.update(qualifiedModel)
|
|
316
|
-
.digest('hex')
|
|
317
|
-
.slice(0, 16);
|
|
352
|
+
const hash = buildResponseCacheHash(prompt, systemPrompt, qualifiedModel);
|
|
318
353
|
const cacheDir = path.join(configRoot, config.totemDir, 'cache');
|
|
319
354
|
cachePath = path.join(cacheDir, `${tagKey}-${hash}.json`);
|
|
320
355
|
if (fs.existsSync(cachePath)) {
|
|
@@ -340,26 +375,46 @@ export async function runOrchestrator(opts) {
|
|
|
340
375
|
(baseUrl == null || LOCAL_HOST_RE.test(baseUrl))) ||
|
|
341
376
|
(baseUrl != null && LOCAL_HOST_RE.test(baseUrl));
|
|
342
377
|
let safePrompt = prompt;
|
|
378
|
+
// mmnto/totem#1291 Phase 3: scrub the systemPrompt too. Today's only
|
|
379
|
+
// caller (compile.ts) passes a static developer-authored template with no
|
|
380
|
+
// user data, but future call sites might inject runtime context, so we
|
|
381
|
+
// mask it on the same path as the user prompt.
|
|
382
|
+
let safeSystemPrompt = systemPrompt;
|
|
343
383
|
if (!isLocalProvider) {
|
|
344
384
|
try {
|
|
345
385
|
safePrompt = maskSecrets(prompt, opts.customSecrets);
|
|
346
386
|
if (safePrompt !== prompt) {
|
|
347
387
|
log.warn(tag, 'DLP: secrets detected and redacted before LLM call');
|
|
348
388
|
}
|
|
389
|
+
if (systemPrompt !== undefined) {
|
|
390
|
+
safeSystemPrompt = maskSecrets(systemPrompt, opts.customSecrets);
|
|
391
|
+
if (safeSystemPrompt !== systemPrompt) {
|
|
392
|
+
log.warn(tag, 'DLP: secrets detected in systemPrompt and redacted before LLM call');
|
|
393
|
+
}
|
|
394
|
+
}
|
|
349
395
|
}
|
|
350
396
|
catch (err) {
|
|
351
397
|
throw new TotemOrchestratorError(`DLP scan failed: ${err instanceof Error ? err.message : String(err)}`, 'DLP masking is mandatory for remote providers. Fix the error or use a local provider.', err);
|
|
352
398
|
}
|
|
353
399
|
}
|
|
400
|
+
// mmnto/totem#1291 Phase 3: read prompt-cache opts from orchestrator config
|
|
401
|
+
// so they can flow through to provider implementations that support caching
|
|
402
|
+
// (Anthropic in 1.15.0; Gemini deferred to 1.16.0). Both fields are optional
|
|
403
|
+
// and undefined-safe — providers fall back to today's behavior when unset.
|
|
404
|
+
const enableContextCaching = config.orchestrator.enableContextCaching;
|
|
405
|
+
const cacheTTL = config.orchestrator.cacheTTL;
|
|
354
406
|
let result;
|
|
355
407
|
try {
|
|
356
408
|
result = await invoke({
|
|
357
409
|
prompt: safePrompt,
|
|
410
|
+
...(safeSystemPrompt !== undefined ? { systemPrompt: safeSystemPrompt } : {}),
|
|
358
411
|
model,
|
|
359
412
|
cwd,
|
|
360
413
|
tag,
|
|
361
414
|
totemDir: config.totemDir,
|
|
362
415
|
temperature: opts.temperature,
|
|
416
|
+
...(enableContextCaching !== undefined ? { enableContextCaching } : {}),
|
|
417
|
+
...(cacheTTL !== undefined ? { cacheTTL } : {}),
|
|
363
418
|
});
|
|
364
419
|
}
|
|
365
420
|
catch (err) {
|
|
@@ -371,11 +426,14 @@ export async function runOrchestrator(opts) {
|
|
|
371
426
|
try {
|
|
372
427
|
result = await fallbackResolved.invoke({
|
|
373
428
|
prompt: safePrompt,
|
|
429
|
+
...(safeSystemPrompt !== undefined ? { systemPrompt: safeSystemPrompt } : {}),
|
|
374
430
|
model: fallbackResolved.parsed.model,
|
|
375
431
|
cwd,
|
|
376
432
|
tag,
|
|
377
433
|
totemDir: config.totemDir,
|
|
378
434
|
temperature: opts.temperature,
|
|
435
|
+
...(enableContextCaching !== undefined ? { enableContextCaching } : {}),
|
|
436
|
+
...(cacheTTL !== undefined ? { cacheTTL } : {}),
|
|
379
437
|
});
|
|
380
438
|
// Update model/invoke so telemetry and cache log the correct values
|
|
381
439
|
model = fallbackResolved.parsed.model;
|
|
@@ -403,13 +461,11 @@ export async function runOrchestrator(opts) {
|
|
|
403
461
|
}
|
|
404
462
|
if (useCache && result.content && result.durationMs > 0) {
|
|
405
463
|
try {
|
|
406
|
-
// Recalculate cache path — `
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
.digest('hex')
|
|
412
|
-
.slice(0, 16);
|
|
464
|
+
// Recalculate cache path — `qualifiedModel` reflects any quota fallback
|
|
465
|
+
// resolution that may have happened above. Uses the same helper as the
|
|
466
|
+
// read path so the keys are guaranteed identical (mmnto/totem#1291
|
|
467
|
+
// mmnto/totem#1292 review fix from GCA + CodeRabbit).
|
|
468
|
+
const cacheHash = buildResponseCacheHash(prompt, systemPrompt, qualifiedModel);
|
|
413
469
|
const cacheDir = path.join(configRoot, config.totemDir, 'cache');
|
|
414
470
|
const finalCachePath = path.join(cacheDir, `${tagKey}-${cacheHash}.json`);
|
|
415
471
|
fs.mkdirSync(cacheDir, { recursive: true });
|
|
@@ -442,6 +498,18 @@ export async function runOrchestrator(opts) {
|
|
|
442
498
|
else {
|
|
443
499
|
log.success(tag, `Done: ${secs}s | ${(prompt.length / 1024).toFixed(0)}KB prompt`);
|
|
444
500
|
}
|
|
501
|
+
// mmnto/totem#1291 Phase 3: surface prompt-cache observability inline so a
|
|
502
|
+
// bulk recompile shows real-world cache savings on every call. The
|
|
503
|
+
// distinction matters: cache_read = served from cache (cheap, fast),
|
|
504
|
+
// cache_creation = wrote a new cache entry (first call in a TTL window,
|
|
505
|
+
// standard input cost). Both are reported separately so the savings ratio
|
|
506
|
+
// is unambiguous.
|
|
507
|
+
if (result.cacheReadInputTokens != null && result.cacheReadInputTokens > 0) {
|
|
508
|
+
log.dim(tag, `cache hit: ${result.cacheReadInputTokens.toLocaleString()} tokens read from prompt cache`);
|
|
509
|
+
}
|
|
510
|
+
if (result.cacheCreationInputTokens != null && result.cacheCreationInputTokens > 0) {
|
|
511
|
+
log.dim(tag, `cache write: ${result.cacheCreationInputTokens.toLocaleString()} tokens (first call in TTL window)`);
|
|
512
|
+
}
|
|
445
513
|
return result.content;
|
|
446
514
|
}
|
|
447
515
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEpC,4DAA4D;AAE5D,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAEzC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAEnD,yCAAyC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO;IAEpC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,4DAA4D;AAC5D,OAAO,EAAE,YAAY,EAAE,CAAC;AAIxB,wFAAwF;AACxF,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,OAAgB;IAC7D,gCAAgC;IAChC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IACjD,CAAC;IAED,oCAAoC;IACpC,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IACjD,CAAC;IAED,6CAA6C;IAC7C,MAAM,IAAI,gBAAgB,CACxB,+BAA+B,EAC/B,+FAA+F,EAC/F,gBAAgB,CACjB,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,OAAgB;IACrE,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;IACnE,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAEnD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAClB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAA4B,CAAC;YACvE,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACrD,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACrD,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,gBAAgB,CACxB,8BAA8B,GAAG,EAAE,EACnC,4DAA4D,EAC5D,gBAAgB,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6BAA6B;QAC7B,IAAI,GAAG,YAAY,gBAAgB;YAAE,MAAM,GAAG,CAAC;QAC/C,sCAAsC;QACtC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,gBAAgB,CACxB,mBAAmB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,EACtD,mCAAmC,EACnC,gBAAgB,EAChB,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wDAAwD;QACxD,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;YACvE,MAAM,MAAM,GAAI,GAA8D,CAAC,MAAM;iBAClF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;iBACjD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,gBAAgB,CACxB,4BAA4B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,EACnE,8DAA8D,EAC9D,gBAAgB,EAChB,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAchD,SAAS,eAAe,CAAC,KAAqB,EAAE,GAAW,EAAE,QAAgB;IAC3E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0EAA0E;QAC1E,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,4DAA4D;AAE5D,MAAM,YAAY,GAAG,gBAAgB,CAAC;AACtC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAExD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,QAAgB,EAChB,WAAmB,eAAe;IAElC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;IAE9C,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,CAAC,iDAAiD;IAC7D,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;gBAClC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACvB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4DAA4D;AAE5D,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,aAAqB,EACrB,GAAW,EACX,QAAgB;IAEhB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,aAAa,CAAC;IAElE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,WAAW,KAAK,CAAC,CAAC;IAC5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,aAAa,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,aAAa,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED,2DAA2D;AAE3D,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,OAAgB;IAC3D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,4DAA4D;AAE5D,0DAA0D;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,2DAA2D;AAE3D,oDAAoD;AACpD,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,2DAA2D;AAE3D,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,MAAM,UAAU,aAAa,CAC3B,OAAuB,EACvB,OAAe,EACf,SAAmB;IAEnB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,yBAAyB,CAAC;IAChF,MAAM,KAAK,GAAG,OAAO;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAE7C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9C,OAAO,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,GAAG,QAAQ,EAAE,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,CACL,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,QAAQ,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;YACpE,GAAG,OAAO,GAAG,QAAQ,EAAE,CACxB,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;IAChB,OAAO,SAAS,OAAO,SAAS,KAAK,IAAI,CAAC;AAC5C,CAAC;AAED,4DAA4D;AAE5D,iFAAiF;AACjF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAwB,EACxB,UAAkB,EAClB,QAAgB;IAEhB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,wDAAwD;AACxD,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAuB,EACvB,WAAmB,wBAAwB,EAC3C,SAAmB;IAEnB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAa,CAAC;QAClB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,cAAc,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QAClH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU;YAAE,SAAS;QACxC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,kDAAkD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACxF,CAAC;AAWD,MAAM,YAAY,GAA2B;IAC3C,MAAM,EAAE,IAAI,EAAE,SAAS;IACvB,QAAQ,EAAE,IAAI,EAAE,SAAS;IACzB,IAAI,EAAE,IAAI,EAAE,SAAS;IACrB,IAAI,EAAE,CAAC,EAAE,kDAAkD;IAC3D,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;CACT,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAYrC;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;IAE1C,kCAAkC;IAClC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,8BAA8B,MAAM,GAAG,CAAC,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,gBAAgB,CACxB,6BAA6B,EAC7B,mDAAmD;YACjD,wJAAwJ,EAC1J,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;IAClD,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,QAAQ,GACZ,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;IAC/F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,gBAAgB,CACxB,qBAAqB,EACrB,6HAA6H,EAC7H,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IACvE,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC,IAAI,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;IAC7C,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,MAAM;aAChB,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,MAAM,CAAC;aACd,MAAM,CAAC,cAAc,CAAC;aACtB,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjE,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,IAAI,IAAI,OAAO,CAAC,CAAC;QAE1D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC;gBAC/C,IAAI,KAAK,GAAG,UAAU,GAAG,IAAI,EAAE,CAAC;oBAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kCAAkC,UAAU,IAAI,CAAC,CAAC;oBAC/D,OAAO,SAAS,CAAC,OAAO,CAAC;gBAC3B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GACX,SAAS,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,KAAK,QAAQ;QACjF,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO;QAC7B,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,aAAa,GAAG,uEAAuE,CAAC;IAC9F,MAAM,eAAe,GACnB,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,KAAK,QAAQ;QACxC,CAAC,OAAO,IAAI,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,CAAC,OAAO,IAAI,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,IAAI,UAAU,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,sBAAsB,CAC9B,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACtE,uFAAuF,EACvF,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,MAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,CAAC;YACpB,MAAM,EAAE,UAAU;YAClB,KAAK;YACL,GAAG;YACH,GAAG;YACH,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC;YACtD,IAAI,WAAW,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC5C,GAAG,CAAC,IAAI,CACN,GAAG,EACH,uBAAuB,QAAQ,mCAAmC,IAAI,CAAC,WAAW,CAAC,KAAK,CACzF,CAAC;gBACF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;gBACpF,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC;wBACrC,MAAM,EAAE,UAAU;wBAClB,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK;wBACpC,GAAG;wBACH,GAAG;wBACH,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;qBAC9B,CAAC,CAAC;oBACH,oEAAoE;oBACpE,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;oBACtC,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC;oBACjD,QAAQ,GAAG,gBAAgB,CAAC;oBAC5B,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;gBACnC,CAAC;gBAAC,OAAO,WAAoB,EAAE,CAAC;oBAC9B,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;oBAChC,MAAM,WAAW,GACf,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC3E,MAAM,IAAI,sBAAsB,CAC9B,kBAAkB,QAAQ,gCAAgC,WAAW,oBAAoB;wBACvF,mBAAmB,WAAW,wBAAwB,WAAW,EAAE,EACrE,iFAAiF,EACjF,WAAW,CACZ,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,sBAAsB,CAC9B,uBAAuB,KAAK,GAAG,EAC/B,oDAAoD;oBAClD,+DAA+D;oBAC/D,yEAAyE;oBACzE,4CAA4C,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,qEAAqE;YACrE,MAAM,SAAS,GAAG,MAAM;iBACrB,UAAU,CAAC,QAAQ,CAAC;iBACpB,MAAM,CAAC,MAAM,CAAC;iBACd,MAAM,CAAC,KAAK,CAAC;iBACb,MAAM,CAAC,KAAK,CAAC;iBACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,IAAI,SAAS,OAAO,CAAC,CAAC;YAC1E,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,EAAE,CAAC,aAAa,CACd,cAAc,EACd,IAAI,CAAC,SAAS,CAAC;gBACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,EACF,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CACnC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,eAAe,CACb;QACE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG;QACH,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,EACD,GAAG,EACH,MAAM,CAAC,QAAQ,CAChB,CAAC;IAEF,kBAAkB;IAClB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;QACpD,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,IAAI,OAAO,KAAK,SAAS,MAAM,MAAM,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.test.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as crypto from 'node:crypto';
|
|
1
2
|
import * as fs from 'node:fs';
|
|
2
3
|
import * as os from 'node:os';
|
|
3
4
|
import * as path from 'node:path';
|
|
@@ -6,7 +7,16 @@ import { cleanTmpDir } from './test-utils.js';
|
|
|
6
7
|
import { formatLessonSection, formatResults, getSystemPrompt, isGlobalConfigPath, loadConfig, loadEnv, partitionLessons, reapOrphanedTempFiles, requireEmbedding, resolveConfigPath, runOrchestrator, sanitize, wrapXml, writeOutput, } from './utils.js';
|
|
7
8
|
/** Helper to build a minimal SearchResult for tests. */
|
|
8
9
|
function makeResult(overrides) {
|
|
9
|
-
|
|
10
|
+
// Default absoluteFilePath to the provided filePath — mirrors
|
|
11
|
+
// rowToSearchResult's fallback when no sourceContext is injected
|
|
12
|
+
// (mmnto/totem#1294 Phase 1).
|
|
13
|
+
return {
|
|
14
|
+
contextPrefix: '',
|
|
15
|
+
type: 'code',
|
|
16
|
+
metadata: {},
|
|
17
|
+
absoluteFilePath: overrides.filePath,
|
|
18
|
+
...overrides,
|
|
19
|
+
};
|
|
10
20
|
}
|
|
11
21
|
// ─── sanitize ───────────────────────────────────────────
|
|
12
22
|
describe('sanitize', () => {
|
|
@@ -672,6 +682,191 @@ describe('runOrchestrator', { timeout: 15_000 }, () => {
|
|
|
672
682
|
expect(result).toBeUndefined();
|
|
673
683
|
expect(mockedCreateOrchestrator).not.toHaveBeenCalled();
|
|
674
684
|
});
|
|
685
|
+
// ─── Phase 3: prompt cache plumbing (mmnto/totem#1291) ─────
|
|
686
|
+
it('threads systemPrompt to the underlying invoke()', async () => {
|
|
687
|
+
await runOrchestrator({
|
|
688
|
+
prompt: 'per-lesson user prompt',
|
|
689
|
+
systemPrompt: 'persistent compiler template',
|
|
690
|
+
tag: 'Compile',
|
|
691
|
+
options: {},
|
|
692
|
+
config: baseConfig(),
|
|
693
|
+
cwd: tmpDir,
|
|
694
|
+
});
|
|
695
|
+
const invoke = mockedCreateOrchestrator.mock.results[0].value;
|
|
696
|
+
expect(invoke).toHaveBeenCalledWith(expect.objectContaining({
|
|
697
|
+
prompt: 'per-lesson user prompt',
|
|
698
|
+
systemPrompt: 'persistent compiler template',
|
|
699
|
+
}));
|
|
700
|
+
});
|
|
701
|
+
it('omits systemPrompt from invoke() when caller does not provide it (today shape)', async () => {
|
|
702
|
+
await runOrchestrator({
|
|
703
|
+
prompt: 'just a prompt',
|
|
704
|
+
tag: 'Spec',
|
|
705
|
+
options: {},
|
|
706
|
+
config: baseConfig(),
|
|
707
|
+
cwd: tmpDir,
|
|
708
|
+
});
|
|
709
|
+
const invoke = mockedCreateOrchestrator.mock.results[0].value;
|
|
710
|
+
const callArgs = invoke.mock.calls[0]?.[0];
|
|
711
|
+
expect(callArgs).toBeDefined();
|
|
712
|
+
expect(callArgs['systemPrompt']).toBeUndefined();
|
|
713
|
+
expect(callArgs['prompt']).toBe('just a prompt');
|
|
714
|
+
});
|
|
715
|
+
it('threads enableContextCaching from orchestrator config to invoke()', async () => {
|
|
716
|
+
const config = baseConfig({
|
|
717
|
+
orchestrator: {
|
|
718
|
+
provider: 'gemini',
|
|
719
|
+
defaultModel: 'gemini-3-flash-preview',
|
|
720
|
+
enableContextCaching: true,
|
|
721
|
+
cacheTTL: 3600,
|
|
722
|
+
},
|
|
723
|
+
});
|
|
724
|
+
await runOrchestrator({
|
|
725
|
+
prompt: 'q',
|
|
726
|
+
systemPrompt: 's',
|
|
727
|
+
tag: 'Compile',
|
|
728
|
+
options: {},
|
|
729
|
+
config,
|
|
730
|
+
cwd: tmpDir,
|
|
731
|
+
});
|
|
732
|
+
const invoke = mockedCreateOrchestrator.mock.results[0].value;
|
|
733
|
+
expect(invoke).toHaveBeenCalledWith(expect.objectContaining({
|
|
734
|
+
enableContextCaching: true,
|
|
735
|
+
cacheTTL: 3600,
|
|
736
|
+
}));
|
|
737
|
+
});
|
|
738
|
+
it('omits cache opts from invoke() when not configured', async () => {
|
|
739
|
+
await runOrchestrator({
|
|
740
|
+
prompt: 'q',
|
|
741
|
+
tag: 'Spec',
|
|
742
|
+
options: {},
|
|
743
|
+
config: baseConfig(),
|
|
744
|
+
cwd: tmpDir,
|
|
745
|
+
});
|
|
746
|
+
const invoke = mockedCreateOrchestrator.mock.results[0].value;
|
|
747
|
+
const callArgs = invoke.mock.calls[0]?.[0];
|
|
748
|
+
expect(callArgs['enableContextCaching']).toBeUndefined();
|
|
749
|
+
expect(callArgs['cacheTTL']).toBeUndefined();
|
|
750
|
+
});
|
|
751
|
+
it('response cache key includes null-byte delimiters to prevent boundary collisions', async () => {
|
|
752
|
+
// Phase 3 cascade-fix regression test (caught by Shield AI):
|
|
753
|
+
// crypto.createHash().update(prompt).update(systemPrompt) without a
|
|
754
|
+
// delimiter would let `prompt="AB", systemPrompt=""` collide with
|
|
755
|
+
// `prompt="A", systemPrompt="B"` because both concatenate to "AB".
|
|
756
|
+
//
|
|
757
|
+
// Replicate the exact construction from runOrchestrator (utils.ts) and
|
|
758
|
+
// assert the boundary-case inputs produce DIFFERENT hashes. The
|
|
759
|
+
// `\0` delimiter sits between every field — without it, the test below
|
|
760
|
+
// would produce identical hashes and fail.
|
|
761
|
+
const buildKey = (prompt, systemPrompt, model) => crypto
|
|
762
|
+
.createHash('sha256')
|
|
763
|
+
.update(prompt)
|
|
764
|
+
.update('\0')
|
|
765
|
+
.update(systemPrompt)
|
|
766
|
+
.update('\0')
|
|
767
|
+
.update(model)
|
|
768
|
+
.digest('hex')
|
|
769
|
+
.slice(0, 16);
|
|
770
|
+
const a = buildKey('AB', '', 'm');
|
|
771
|
+
const b = buildKey('A', 'B', 'm');
|
|
772
|
+
expect(a).not.toBe(b);
|
|
773
|
+
// Sibling collision: "A", "BC" vs "AB", "C"
|
|
774
|
+
const c = buildKey('A', 'BC', 'm');
|
|
775
|
+
const d = buildKey('AB', 'C', 'm');
|
|
776
|
+
expect(c).not.toBe(d);
|
|
777
|
+
// Same inputs MUST still hash identically (idempotency check)
|
|
778
|
+
const e = buildKey('prompt', 'system', 'model');
|
|
779
|
+
const f = buildKey('prompt', 'system', 'model');
|
|
780
|
+
expect(e).toBe(f);
|
|
781
|
+
});
|
|
782
|
+
it('--raw mode includes systemPrompt in the output when split callers pass both', async () => {
|
|
783
|
+
// mmnto/totem#1291 PR #1292 review fix from CodeRabbit: --raw mode used
|
|
784
|
+
// to write only `prompt`, but Phase 3 callers (compile-lesson) now route
|
|
785
|
+
// the compiler template through `systemPrompt`. Without the fix below,
|
|
786
|
+
// `totem compile --raw` would produce a file that doesn't show what the
|
|
787
|
+
// model would actually receive.
|
|
788
|
+
//
|
|
789
|
+
// We can't test the writeOutput call directly without setting up a tmp
|
|
790
|
+
// file pipeline, but we can verify the OrchestratorRunOptions branch
|
|
791
|
+
// returns undefined and doesn't invoke the orchestrator (--raw never
|
|
792
|
+
// calls invoke). The actual file content shape is asserted via the
|
|
793
|
+
// unit-test below by spying on writeOutput's destination.
|
|
794
|
+
let captured = '';
|
|
795
|
+
const tmpOut = path.join(tmpDir, 'raw-out.md');
|
|
796
|
+
await runOrchestrator({
|
|
797
|
+
prompt: 'lesson body',
|
|
798
|
+
systemPrompt: 'COMPILER_SYSTEM_PROMPT',
|
|
799
|
+
tag: 'Compile',
|
|
800
|
+
options: { raw: true, out: tmpOut },
|
|
801
|
+
config: baseConfig(),
|
|
802
|
+
cwd: tmpDir,
|
|
803
|
+
});
|
|
804
|
+
captured = fs.readFileSync(tmpOut, 'utf-8');
|
|
805
|
+
// GCA round 2: dropped the markdown markers in favor of plain
|
|
806
|
+
// concatenation matching shell-orchestrator.ts and pipe-safety for
|
|
807
|
+
// downstream consumers. Exact byte equality.
|
|
808
|
+
expect(captured).toBe('COMPILER_SYSTEM_PROMPT\n\nlesson body');
|
|
809
|
+
});
|
|
810
|
+
it('--raw mode falls back to user-prompt-only when systemPrompt is undefined (backward compat)', async () => {
|
|
811
|
+
const tmpOut = path.join(tmpDir, 'raw-out-legacy.md');
|
|
812
|
+
await runOrchestrator({
|
|
813
|
+
prompt: 'just the prompt',
|
|
814
|
+
tag: 'Spec',
|
|
815
|
+
options: { raw: true, out: tmpOut },
|
|
816
|
+
config: baseConfig(),
|
|
817
|
+
cwd: tmpDir,
|
|
818
|
+
});
|
|
819
|
+
const captured = fs.readFileSync(tmpOut, 'utf-8');
|
|
820
|
+
expect(captured).toBe('just the prompt');
|
|
821
|
+
});
|
|
822
|
+
it('--raw mode treats empty systemPrompt the same as undefined', async () => {
|
|
823
|
+
// GCA round 2 SAFETY INVARIANT: empty systemPrompt is treated as
|
|
824
|
+
// absent throughout the system to avoid 4xx from providers that
|
|
825
|
+
// reject empty system messages. --raw mode honors the same contract.
|
|
826
|
+
const tmpOut = path.join(tmpDir, 'raw-out-empty-sys.md');
|
|
827
|
+
await runOrchestrator({
|
|
828
|
+
prompt: 'user only',
|
|
829
|
+
systemPrompt: '',
|
|
830
|
+
tag: 'Spec',
|
|
831
|
+
options: { raw: true, out: tmpOut },
|
|
832
|
+
config: baseConfig(),
|
|
833
|
+
cwd: tmpDir,
|
|
834
|
+
});
|
|
835
|
+
const captured = fs.readFileSync(tmpOut, 'utf-8');
|
|
836
|
+
expect(captured).toBe('user only');
|
|
837
|
+
});
|
|
838
|
+
it('passes through cacheReadInputTokens / cacheCreationInputTokens from invoke() result', async () => {
|
|
839
|
+
// Override the default mock to return a result that simulates a cache hit
|
|
840
|
+
const mockInvokeWithCache = vi.fn().mockResolvedValue({
|
|
841
|
+
content: 'cached response',
|
|
842
|
+
inputTokens: 200,
|
|
843
|
+
outputTokens: 75,
|
|
844
|
+
durationMs: 800,
|
|
845
|
+
cacheReadInputTokens: 47_231,
|
|
846
|
+
cacheCreationInputTokens: 0,
|
|
847
|
+
});
|
|
848
|
+
mockedCreateOrchestrator.mockReturnValue(mockInvokeWithCache);
|
|
849
|
+
const result = await runOrchestrator({
|
|
850
|
+
prompt: 'q',
|
|
851
|
+
systemPrompt: 's',
|
|
852
|
+
tag: 'Compile',
|
|
853
|
+
options: {},
|
|
854
|
+
config: baseConfig({
|
|
855
|
+
orchestrator: {
|
|
856
|
+
provider: 'anthropic',
|
|
857
|
+
defaultModel: 'claude-sonnet-4-6',
|
|
858
|
+
enableContextCaching: true,
|
|
859
|
+
},
|
|
860
|
+
}),
|
|
861
|
+
cwd: tmpDir,
|
|
862
|
+
});
|
|
863
|
+
// runOrchestrator returns just the content string today (the cache fields
|
|
864
|
+
// are surfaced via the dim log line, not the return value). The metric is
|
|
865
|
+
// observable via the underlying result object that was forwarded to the
|
|
866
|
+
// log layer — verified by inspecting the mock's call.
|
|
867
|
+
expect(result).toBe('cached response');
|
|
868
|
+
expect(mockInvokeWithCache).toHaveBeenCalled();
|
|
869
|
+
});
|
|
675
870
|
});
|
|
676
871
|
// ─── partitionLessons ────────────────────────────────────
|
|
677
872
|
describe('partitionLessons', () => {
|
|
@@ -679,6 +874,7 @@ describe('partitionLessons', () => {
|
|
|
679
874
|
content: `content for ${label}`,
|
|
680
875
|
contextPrefix: '',
|
|
681
876
|
filePath,
|
|
877
|
+
absoluteFilePath: filePath,
|
|
682
878
|
type: 'spec',
|
|
683
879
|
label,
|
|
684
880
|
score: 0.9,
|
|
@@ -727,6 +923,7 @@ describe('formatLessonSection', () => {
|
|
|
727
923
|
content,
|
|
728
924
|
contextPrefix: '',
|
|
729
925
|
filePath: '.totem/lessons.md',
|
|
926
|
+
absoluteFilePath: '.totem/lessons.md',
|
|
730
927
|
type: 'spec',
|
|
731
928
|
label,
|
|
732
929
|
score: 0.9,
|