log10x-mcp 1.29.30 → 1.29.32

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.
@@ -127,6 +127,13 @@ export interface Plan {
127
127
  keepEverythingCeilingPct: number;
128
128
  achievedPct: number;
129
129
  met: boolean;
130
+ /** Sum of planned rows' savedUsd — equals billUsd minus landsAtUsd, so the
131
+ * arithmetic on a rendered plan closes visibly. */
132
+ totalSavedUsd: number;
133
+ /** The pricing basis behind every dollar on this plan, one human-readable
134
+ * line. List-price by construction: the solver prices with the destination
135
+ * cost model, never a customer's contracted rate. Render it verbatim. */
136
+ rateBasis: string;
130
137
  /** usd_budget / percent targets: the bill after the plan, in $/mo. */
131
138
  landsAtUsd?: number;
132
139
  /** gb_budget targets: monthly bytes toward the destination after the plan. */
@@ -28,7 +28,7 @@
28
28
  * - Scope is a set of services (or all). A pattern touching any scoped service
29
29
  * is a candidate, weighted by its bytes in those services.
30
30
  */
31
- import { getAllowedActionsForDestination, compactsInPlace, projectAction, } from './cost.js';
31
+ import { getAllowedActionsForDestination, getDestinationCostModel, compactsInPlace, projectAction, } from './cost.js';
32
32
  import { isProtectedSeverity } from './severity-policy.js';
33
33
  /** True ladder order: keep-everything (in-SIEM before out) then lossy. */
34
34
  const LADDER = ['compact', 'tier_down', 'offload', 'sample', 'drop'];
@@ -318,6 +318,23 @@ export function solvePlan(rawPatterns, opts) {
318
318
  message: `${opening} To close it, ${parts.join(', or ')}.`,
319
319
  };
320
320
  }
321
+ // The pricing basis, stated once so every rendered dollar has its source on
322
+ // the page. The solver always prices at the destination's list-price cost
323
+ // model; say so plainly instead of letting the reader wonder whose rates
324
+ // these are.
325
+ const model = getDestinationCostModel(opts.destination);
326
+ const rate = (v) => '$' + Number(v.toFixed(4)).toString();
327
+ const basisParts = [`${opts.destination} list price: ingest ${rate(model.ingest_per_gb)}/GB`];
328
+ if (model.storage_per_gb_month > 0) {
329
+ basisParts.push(`storage ${rate(model.storage_per_gb_month)}/GB-mo`);
330
+ }
331
+ if (lever === 'tier_down' && model.tier_down_target_tier) {
332
+ basisParts.push(`${model.tier_down_target_tier.name} ingest ${rate(model.tier_down_target_tier.ingest_rate_usd_per_gb)}/GB`);
333
+ }
334
+ if (lever === 'compact' && model.compact_mode !== 'no-op') {
335
+ basisParts.push(`compact assumed ${Math.round(model.compact_ratio_low * 100)}-${Math.round(model.compact_ratio_high * 100)}% of original size`);
336
+ }
337
+ const rateBasis = basisParts.join(', ');
321
338
  return {
322
339
  destination: opts.destination,
323
340
  retrieverInstalled: opts.retrieverInstalled,
@@ -329,6 +346,8 @@ export function solvePlan(rawPatterns, opts) {
329
346
  keepEverythingCeilingPct,
330
347
  achievedPct,
331
348
  met,
349
+ totalSavedUsd,
350
+ rateBasis,
332
351
  landsAtUsd,
333
352
  ...(landsAtBytesMonthly !== undefined ? { landsAtBytesMonthly } : {}),
334
353
  planned,
@@ -1 +1 @@
1
- {"version":3,"file":"plan-solver.js","sourceRoot":"","sources":["../../src/lib/plan-solver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-solver.js","sourceRoot":"","sources":["../../src/lib/plan-solver.ts"],"names":[],"mappings":"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"}
@@ -247,42 +247,83 @@ Decoding aids you may use:
247
247
  These are aids, not certainties. Cite the raw token; let the user verify.
248
248
 
249
249
  RENDERING A PLAN (the \`plan\` object from log10x_estimate_savings / log10x_poc_from_local):
250
- open with a THREE-LINE BLOCK built from the plan's fields, every number verbatim:
251
- **Target: cut <targetPct>% of the <destination> bill. This plan reaches <achievedPct>%.**
252
- **How:** <planned count> of <planned+kept count> message types move to <the lever, in plain words —
253
- e.g. "CloudWatch's Infrequent Access tier: same events, still queryable, lower rate">. When rows
254
- escalated to offload, say so as the deliberate step it is ("the costliest type goes to S3 instead,
255
- which closes the target; the retriever fetches those events back on demand").
256
- **Never touched:** every error and warning (<count of protected kept rows> message types). Nothing in
257
- this plan deletes an event.
258
- Then the rows, as a NUMBERED stacked list, costliest first, capped at 5-7 plus an
259
- "and N more message types, same levers, smallest last" line. NEVER a markdown table: table cells crop
260
- or horizontally-scroll long identifiers. Each card opens with the NOUN, and the verdict comes last:
250
+ open with the VERDICT BLOCK — four labeled lines built from the plan's fields, every number verbatim,
251
+ ONE fact per line so the reader scans labels instead of parsing sentences. The lines answer, in order:
252
+ did it work, what happens to the number, how, what is protected.
253
+
254
+ **<Target|Budget> met, keeping everything.**
255
+ (append "except <N> opted-in lossy types" only when lossy rows exist)
256
+ **<billUsd verbatim>/mo → <landsAtUsd verbatim>/mo**, <restate the ask: "a <achievedPct>% cut against
257
+ the <targetPct>% ask" for percent · "under the $<budget>/mo line" for a dollar budget>
258
+ For a VOLUME budget the hero numbers are BYTES: "**<bytes today> → <landsAtBytesMonthly>**, under
259
+ the <N> GB/mo line", with the dollar effect second ("and takes $<X>/mo off the bill with it").
260
+ **Lever:** <plain words, e.g. "CloudWatch Infrequent Access tier: same events, still queryable,
261
+ lower rate">, <planned count> of <planned+kept count> message types. When rows escalated to
262
+ offload, narrate it as the deliberate step it is ("the costliest types go to S3 instead, which
263
+ closes the line; the retriever fetches them back on demand").
264
+ **Never touched:** every error and warning (<protected kept count> types). Nothing deleted.
265
+ (when the scope has no protected rows, state what IS true instead: e.g. "the remaining <N> types
266
+ stay as they are; the budget was met before reaching them")
267
+ **Applies as:** one routing rule in <destination>, set once at install; the per-type decisions live
268
+ in caps.csv in the user's git repo. Changing the plan changes the CSV, never the <destination>
269
+ config again.
270
+
271
+ When the target is met and keepEverythingCeilingPct exceeds achievedPct by more than 2 points, append
272
+ to the money line: "· keep-everything ceiling <keepEverythingCeilingPct>%" — the reader deserves to
273
+ know money was left on the table on purpose.
274
+
275
+ DEFAULT DEPTH — a plan renders as a conversation, not a document. By default show: the verdict block,
276
+ the TOP 3 cards, one "and <N> more message types, same lever, smallest last · together **saves
277
+ <totalSavedUsd minus the shown cards, verbatim arithmetic>/mo**" line, and the largest kept row. The
278
+ arithmetic on the page MUST close: billUsd minus the shown cards minus the tail line's sum equals
279
+ landsAtUsd — a reader who checks the subtraction and finds a gap is a reader lost for good. Stop there. The full list, per-service views, kept-row detail, and recurring wiring render
280
+ only when the user asks for them; the plan object is already in context, so going deeper costs no new
281
+ tool call. When expanding, page in groups of 5-7 rows.
282
+
283
+ Cards are a NUMBERED stacked list, costliest first. NEVER a markdown table: table cells crop or
284
+ horizontally-scroll long identifiers. Each card opens with the NOUN, and the verdict comes last:
261
285
 
262
286
  1. **<displayName>** · <dominantService>
263
287
  \`<name — the full identifier, in inline code, never truncated>\` (only when it says more than displayName)
264
288
  <one-clause gloss, per the INTERPRETING METRIC PATTERNS rules above>.
265
289
  → <action, plain words> · **saves <savedUsd verbatim>** (percent of the bill when dollars are sub-dollar)
290
+ (volume-budget rows lead with bytes instead: "→ <action> · **moves <savedBytes> out** · saves <savedUsd>")
266
291
 
267
292
  The gloss is one clause of business meaning ONLY for a code path recognized with high confidence
268
293
  (public OSS / vendor SDKs); an unrecognized symbol gets the literal treatment ("application log
269
294
  statement") or no gloss at all — a hedged guess is worse than silence. The gloss never carries a
270
295
  number. Severity is omitted on planned rows (INFO earns no ink); on KEPT rows it is the REASON the
271
296
  row is kept, stated as such: "**ERROR** · never touched". Show the largest kept row as one card ending
272
- "→ kept, never touched · <billUsd verbatim> stays". When the plan carries a \`gap\`, relay its message
273
- and remedies verbatim — the choice between installing the retriever and accepting loss belongs to the
274
- user, never to you.
275
-
276
- BUDGET TARGETS: when the user states a standing line instead of a cut — "keep payment under $500/mo",
277
- "stay under 2 TB/mo" — pass \`budget_usd_monthly\` or \`budget_gb_monthly\` (service-scoped via
278
- \`service\` when they named one) instead of a percent. The verdict line changes and MUST stay in the
279
- user's denomination: "**Budget: keep <scope> under <budget>/mo. This plan lands at <landsAt>/mo.**"
280
- Never restate a dollar budget as a volume claim or the reverse: a dollar budget met by tier_down moves
281
- NOTHING out of the destination, and a volume budget says nothing about the bill. tier_down cannot serve
282
- a volume budget at all (every byte still lands) — the tool already excludes it; do not re-add it in
283
- prose. A budget is idempotent: already under budget returns an empty plan with the headroom stated —
284
- render that single line and no cards. Everything else (three-line block, numbered cards, gap verbatim)
285
- renders exactly as above.
297
+ "→ kept, never touched · <billUsd verbatim> stays".
298
+
299
+ WHEN THE PLAN CARRIES A GAP (met=false): the gap gets the same labeled treatment, never a prose
300
+ paragraph. Build it from gap.message's numbers and gap.remedies' order:
301
+
302
+ **<Target|Budget> out of reach while keeping everything.**
303
+ **<today's number, in the ask's denomination>**, <amount over the line | points short of the ask>
304
+ **Why:** <one clause, e.g. "the tier lever keeps every byte in CloudWatch, so volume stays put" ·
305
+ "without the retriever, offloaded events would be unreachable">
306
+ **The choice, left with the user:**
307
+ 1. Install the S3 retriever: offload closes the gap, everything stays recoverable
308
+ 2. <Drop | Sample or drop> the overage: lossy, those events stop reaching the destination
309
+
310
+ Order the remedies exactly as gap.remedies orders them. Never pick for the user, never soften the
311
+ word "lossy", and render the choice list even when the user seems to lean one way.
312
+
313
+ Every plan render ENDS with the pricing basis, one italic line, plan.rateBasis verbatim:
314
+ *Rates: <rateBasis>. List-price dollars, not a quote.*
315
+ Never render a per-type dollar without this line on the page — an unexplained rate is the fastest
316
+ way to lose a reader who knows their own contract.
317
+
318
+ BUDGET TARGETS: when the user states a standing line instead of a cut ("keep payment under $500/mo",
319
+ "stay under 2 TB/mo"), pass \`budget_usd_monthly\` or \`budget_gb_monthly\` (service-scoped via
320
+ \`service\` when they named one) instead of a percent. The verdict block MUST stay in the
321
+ user's denomination: dollars hero for a dollar budget, bytes hero for a volume budget with the dollar
322
+ effect second. Never restate a dollar budget as a volume claim or the reverse: a dollar budget met by
323
+ tier_down moves NOTHING out of the destination, and a volume budget says nothing about the bill.
324
+ tier_down cannot serve a volume budget at all (every byte still lands); the tool already excludes it,
325
+ do not re-add it in prose. A budget is idempotent: already under budget returns an empty plan,
326
+ rendered as the single headroom line and nothing else, no cards, no lever line.
286
327
 
287
328
  PROSPECT LANE: When the user asks to run a POC on their own logs ("run a cost POC", "analyze this log file", "what would 10x save on our <analyzer>"), or asks for a plan that cuts a given percentage before anything is installed ("define a plan that cuts 30%", "what is the difference between cutting 10% and 20%"), the answer is log10x_poc_from_local — after log10x_start on a fresh session, directly afterwards. It reads local files or a kubectl sample, runs the engine on this machine, sends nothing out, and takes target_percent_reduction for percentage asks; re-run it with two targets to compare them. log10x_poc_from_siem_submit is the same ask when log-analyzer credentials exist. These tools are registered on every keyless or POC boot. When any number in an answer comes from the public demo dataset rather than the user\'s own logs, the answer must say so.`;
288
329
  //# sourceMappingURL=server-instructions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../../src/lib/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,4BAA4B,EAAe,MAAM,mBAAmB,CAAC;AAE9E,0EAA0E;AAC1E,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,MAAM,cAAc,GAClB;IACE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,CAAC,YAAY,EAAE,YAAY,CAAC;CAE/B;KACE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;IACnB,MAAM,CAAC,GAAG,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAC3C,2EAA2E;IAC3E,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC;AAChC,CAAC,CAAC;KACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAEd,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8KjC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;m2BAqFm1B,CAAC"}
1
+ {"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../../src/lib/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,4BAA4B,EAAe,MAAM,mBAAmB,CAAC;AAE9E,0EAA0E;AAC1E,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,MAAM,cAAc,GAClB;IACE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,CAAC,YAAY,EAAE,YAAY,CAAC;CAE/B;KACE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;IACnB,MAAM,CAAC,GAAG,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAC3C,2EAA2E;IAC3E,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC;AAChC,CAAC,CAAC;KACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAEd,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8KjC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;m2BA8Hm1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "log10x-mcp",
3
- "version": "1.29.30",
3
+ "version": "1.29.32",
4
4
  "description": "Log10x MCP Server — per-pattern log cost attribution, root-cause investigation, pasted-batch triage, archive query/backfill, and cross-pillar correlation against customer metric backends (Grafana Cloud, Mimir, Thanos, AMP) with structural validation that refuses when it cannot prove linkage",
5
5
  "type": "module",
6
6
  "main": "build/index.js",