@noodleseed/one 0.148.0 → 0.149.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.
Files changed (59) hide show
  1. package/dist/commands/assistant-ops.d.ts.map +1 -1
  2. package/dist/commands/assistant-ops.js +34 -0
  3. package/dist/commands/assistant-ops.js.map +1 -1
  4. package/dist/commands/assistant-surface-ops.d.ts +14 -1
  5. package/dist/commands/assistant-surface-ops.d.ts.map +1 -1
  6. package/dist/commands/assistant-surface-ops.js +33 -2
  7. package/dist/commands/assistant-surface-ops.js.map +1 -1
  8. package/dist/dev-local-runtime.d.ts +1 -0
  9. package/dist/dev-local-runtime.d.ts.map +1 -1
  10. package/dist/dev-local-runtime.js +3 -0
  11. package/dist/dev-local-runtime.js.map +1 -1
  12. package/node_modules/@noodle-borg/admission-limits/dist/counter-store.d.ts +20 -0
  13. package/node_modules/@noodle-borg/admission-limits/dist/counter-store.js +12 -0
  14. package/node_modules/@noodle-borg/admission-limits/dist/envelope.d.ts +34 -2
  15. package/node_modules/@noodle-borg/admission-limits/dist/envelope.js +35 -11
  16. package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.d.ts +1 -0
  17. package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.js +14 -1
  18. package/node_modules/@noodle-borg/admission-limits/dist/portable.d.ts +1 -0
  19. package/node_modules/@noodle-borg/admission-limits/dist/portable.js +1 -0
  20. package/node_modules/@noodle-borg/admission-limits/dist/visitor-bucket.d.ts +20 -0
  21. package/node_modules/@noodle-borg/admission-limits/dist/visitor-bucket.js +30 -0
  22. package/node_modules/@noodle-borg/agent-kit/dist/skill-tool-design-ref.js +4 -0
  23. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  24. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-guide.d.ts +12 -0
  25. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-guide.js +15 -0
  26. package/node_modules/@noodle-borg/assistant-gateway/dist/embed-operator-view.d.ts +71 -0
  27. package/node_modules/@noodle-borg/assistant-gateway/dist/embed-operator-view.js +59 -0
  28. package/node_modules/@noodle-borg/assistant-gateway/dist/embed-store.d.ts +27 -0
  29. package/node_modules/@noodle-borg/assistant-gateway/dist/embed-store.js +35 -0
  30. package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-embed-store.js +6 -0
  31. package/node_modules/@noodle-borg/assistant-gateway/dist/managed-spend.d.ts +80 -0
  32. package/node_modules/@noodle-borg/assistant-gateway/dist/managed-spend.js +186 -0
  33. package/node_modules/@noodle-borg/assistant-gateway/dist/model-request.d.ts +16 -0
  34. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.d.ts +2 -0
  35. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.js +2 -0
  36. package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.d.ts +14 -1
  37. package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.js +23 -6
  38. package/node_modules/@noodle-borg/assistant-gateway/dist/public-turn.js +22 -0
  39. package/node_modules/@noodle-borg/assistant-gateway/dist/surface-budget.d.ts +15 -1
  40. package/node_modules/@noodle-borg/assistant-gateway/dist/surface-budget.js +14 -0
  41. package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
  42. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-assistant.js +15 -1
  43. package/node_modules/@noodle-borg/module/dist/request-analytics.d.ts +19 -2
  44. package/node_modules/@noodle-borg/module/dist/request-analytics.js +15 -2
  45. package/node_modules/@noodle-borg/observability/dist/assistant-usage.js +68 -10
  46. package/node_modules/@noodle-borg/observability/dist/index.js +1 -0
  47. package/node_modules/@noodle-borg/observability/dist/request-event-query.js +48 -0
  48. package/node_modules/@noodle-borg/observability/dist/request-events-postgres.js +13 -2
  49. package/node_modules/@noodle-borg/observability/dist/request-events.js +3 -0
  50. package/node_modules/@noodle-borg/service/dist/routes/analytics.js +5 -29
  51. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +57 -29
  52. package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.js +26 -38
  53. package/node_modules/@noodle-borg/service/dist/routes/assistant-model-binding.js +1 -4
  54. package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js +7 -3
  55. package/node_modules/@noodle-borg/service/dist/routes/assistant.js +14 -8
  56. package/node_modules/@noodle-borg/service/package.json +1 -1
  57. package/node_modules/@noodle-borg/transport-http/dist/request-capture.js +2 -0
  58. package/node_modules/@noodleseed/assistant/package.json +1 -1
  59. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-ops.d.ts","sourceRoot":"","sources":["../../src/commands/assistant-ops.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA4BnD,wBAAsB,YAAY,CAChC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,cAA0B,GAC/B,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
1
+ {"version":3,"file":"assistant-ops.d.ts","sourceRoot":"","sources":["../../src/commands/assistant-ops.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA4BnD,wBAAsB,YAAY,CAChC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,cAA0B,GAC/B,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
@@ -1,6 +1,7 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
+ import { managedSpendDrift } from '@noodle-borg/assistant-gateway/portable';
4
5
  import { configDir } from '../config.js';
5
6
  import { ServiceRequestError, serviceJson } from '../control-plane.js';
6
7
  import { resolveAnalyticsTarget } from './analytics-ops.js';
@@ -51,11 +52,34 @@ async function usage(rest, env, home) {
51
52
  printJsonOk(body);
52
53
  else {
53
54
  const { sessions, turns, depth, engagement, latency, tokens } = body.metrics;
55
+ const refusals = Object.entries(body.metrics.refusalsByCode ?? {}).sort(([, a], [, b]) => b - a);
54
56
  console.log(`Assistant usage (${window})${body.truncated ? ' — partial window' : ''}`);
55
57
  console.log(` ${sessions.minted.toLocaleString()} sessions · ${turns.attempted.toLocaleString()} turns (${turns.delivered.toLocaleString()} delivered, ${turns.failed.toLocaleString()} failed, ${turns.refused.toLocaleString()} refused)`);
56
58
  console.log(` Conversation depth: p50 ${depth.p50} · p90 ${depth.p90} · max ${depth.max} (${depth.atLeast20} reached 20, ${depth.atLeast30} reached 30, ${depth.atLeast40} reached 40)`);
57
59
  console.log(` Engagement: ${engagement.toolTurns.toLocaleString()} tool turns · ${engagement.interactionTurns.toLocaleString()} interaction turns · ${engagement.modelRequests.toLocaleString()} model requests`);
58
60
  console.log(` Model: ${tokens.total.toLocaleString()} tokens · p50 ${latency.p50Ms.toLocaleString()} ms · p95 ${latency.p95Ms.toLocaleString()} ms`);
61
+ // The ladder charges each turn what its rung's policy permits. If real turns cost more than
62
+ // that, the enforcer is not enforcing and the sponsored ceiling is decorative — a bug worth
63
+ // saying out loud rather than a budgeting note.
64
+ // Only when the sponsor paid for every turn in the window. The token and turn totals below are
65
+ // the surface's, not one source's, so on a surface that changed hands mid-window a handful of
66
+ // expensive operator turns would raise a sponsored-spend alarm about turns nobody sponsored.
67
+ // Silence is the honest reading there; the next whole window answers it.
68
+ const drift = body.metrics.byModelSource.noodleManaged > 0 && body.metrics.byModelSource.operator === 0
69
+ ? managedSpendDrift({
70
+ deliveredTurns: turns.delivered,
71
+ promptTokens: tokens.prompt,
72
+ completionTokens: tokens.completion,
73
+ })
74
+ : undefined;
75
+ if (drift?.exceeded) {
76
+ console.log(` Warning: turns are averaging ${drift.observedPerTurn.toLocaleString()} billable tokens, above the ${drift.permittedPerTurn.toLocaleString()} a sponsored turn permits`);
77
+ }
78
+ // Loudest first, and only when something was actually refused: a silent surface reads as a
79
+ // quiet day, which is exactly how a throttled one used to look.
80
+ if (refusals.length > 0) {
81
+ console.log(` Refused: ${refusals.map(([code, count]) => `${refusalCodeLabel(code)} ${count.toLocaleString()}`).join(' · ')}`);
82
+ }
59
83
  }
60
84
  return EXIT.OK;
61
85
  }
@@ -272,6 +296,16 @@ function persistClientSecret(home, id, clientSecret) {
272
296
  });
273
297
  return path;
274
298
  }
299
+ /**
300
+ * One refusal code, safe to print.
301
+ *
302
+ * The codes arrive as JSON object keys from the service and go straight to a terminal. A code is an
303
+ * identifier, so only identifier characters survive: anything else is either a bug upstream or an
304
+ * escape sequence wearing a code's clothes, and neither should be able to move a operator's cursor.
305
+ */
306
+ function refusalCodeLabel(code) {
307
+ return code.replace(/[^\w.:-]/g, '').slice(0, 64) || 'unknown';
308
+ }
275
309
  function flagValue(rest, flag) {
276
310
  const index = rest.indexOf(flag);
277
311
  return index >= 0 ? rest[index + 1] : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-ops.js","sourceRoot":"","sources":["../../src/commands/assistant-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assistant-ops.js","sourceRoot":"","sources":["../../src/commands/assistant-ops.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,22 @@ export interface AssistantEmbedView {
16
16
  readonly budgetIsDefault: boolean;
17
17
  readonly turnsToday: number;
18
18
  readonly mintsToday: number;
19
+ /** Present only on a surface Noodle is funding; absent means the caps above are the whole story. */
20
+ readonly managedSpend?: {
21
+ readonly state: string;
22
+ readonly turnsRemaining: number;
23
+ readonly visitors: string;
24
+ };
19
25
  }
20
26
  export declare function formatEmbedLines(embed: AssistantEmbedView): readonly string[];
21
- /** `--turns-per-day` / `--mints-per-day`, where 0 is a value and absence means "leave it alone". */
27
+ /**
28
+ * The budget flags, where 0 is a value and absence means "leave that cap alone".
29
+ *
30
+ * The two daily caps are what an operator reaches for; the two hourly per-address caps are the abuse
31
+ * bounds, listed because a cap the service enforces and the CLI cannot reach is a cap nobody can
32
+ * operate. Per-visitor fairness is deliberately not here: it is not an operator's to tune, and
33
+ * lowering it would only make their own site worse for people behind a shared address.
34
+ */
22
35
  export declare function parseBudgetFlags(rest: readonly string[]): {
23
36
  readonly ok: true;
24
37
  readonly body: Record<string, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-surface-ops.d.ts","sourceRoot":"","sources":["../../src/commands/assistant-surface-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAWnD;;;;;;GAMG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,MAAM,EAAE,CAY7E;AAwBD,oGAAoG;AACpG,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,GAErB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBjD;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,MAAM,CAAC,CAkCjB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,MAAM,CAAC,CAgEjB"}
1
+ {"version":3,"file":"assistant-surface-ops.d.ts","sourceRoot":"","sources":["../../src/commands/assistant-surface-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAWnD;;;;;;GAMG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,MAAM,EAAE,CAa7E;AA0CD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,GAErB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAyBjD;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,MAAM,CAAC,CAkCjB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,MAAM,CAAC,CAgEjB"}
@@ -12,9 +12,28 @@ export function formatEmbedLines(embed) {
12
12
  // operator opens this command to answer.
13
13
  ` Turns today ${embed.turnsToday} / ${embed.turnsPerDay}${source}`,
14
14
  ` Mints today ${embed.mintsToday} / ${embed.mintsPerDay}${source}`,
15
+ ...managedSpendLines(embed),
15
16
  ...statusLine(embed),
16
17
  ];
17
18
  }
19
+ /**
20
+ * What the platform is doing to this surface, which the caps above cannot show.
21
+ *
22
+ * A sponsored surface degrades before it closes, and from the caps alone that is invisible — they
23
+ * read normal right up to the moment the ladder shuts them. Remaining turns rather than a
24
+ * percentage: the spend consume is all-or-nothing, so a costly turn is refused while a cheap one
25
+ * still passes, and a percentage would look like it stopped early. An operator who wants this ceiling
26
+ * gone connects their own model key and redeploys.
27
+ */
28
+ function managedSpendLines(embed) {
29
+ const spend = embed.managedSpend;
30
+ if (spend === undefined)
31
+ return [];
32
+ return [
33
+ ` Noodle-funded ${spend.state} — about ${spend.turnsRemaining.toLocaleString()} turns left today`,
34
+ ` ${spend.visitors}`,
35
+ ];
36
+ }
18
37
  /**
19
38
  * The two caps are independent doors, so only both of them shut is "off".
20
39
  *
@@ -36,12 +55,21 @@ function statusLine(embed) {
36
55
  }
37
56
  return [];
38
57
  }
39
- /** `--turns-per-day` / `--mints-per-day`, where 0 is a value and absence means "leave it alone". */
58
+ /**
59
+ * The budget flags, where 0 is a value and absence means "leave that cap alone".
60
+ *
61
+ * The two daily caps are what an operator reaches for; the two hourly per-address caps are the abuse
62
+ * bounds, listed because a cap the service enforces and the CLI cannot reach is a cap nobody can
63
+ * operate. Per-visitor fairness is deliberately not here: it is not an operator's to tune, and
64
+ * lowering it would only make their own site worse for people behind a shared address.
65
+ */
40
66
  export function parseBudgetFlags(rest) {
41
67
  const body = {};
42
68
  for (const [flag, field] of [
43
69
  ['--turns-per-day', 'turnsPerDay'],
44
70
  ['--mints-per-day', 'mintsPerDay'],
71
+ ['--mints-per-address-hour', 'mintsPerAddressHour'],
72
+ ['--turns-per-address-hour', 'turnsPerAddressHour'],
45
73
  ]) {
46
74
  const at = rest.indexOf(flag);
47
75
  if (at === -1)
@@ -54,7 +82,10 @@ export function parseBudgetFlags(rest) {
54
82
  body[field] = value;
55
83
  }
56
84
  if (Object.keys(body).length === 0) {
57
- return { ok: false, error: 'set at least one of --turns-per-day or --mints-per-day' };
85
+ return {
86
+ ok: false,
87
+ error: 'set at least one of --turns-per-day, --mints-per-day, --mints-per-address-hour or --turns-per-address-hour',
88
+ };
58
89
  }
59
90
  return { ok: true, body };
60
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-surface-ops.js","sourceRoot":"","sources":["../../src/commands/assistant-surface-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assistant-surface-ops.js","sourceRoot":"","sources":["../../src/commands/assistant-surface-ops.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ declare class ProcessLocalAdmissionCounters implements DailyCounterStore {
12
12
  readonly durable = true;
13
13
  consume(request: CounterRequest, now: Date): Promise<CounterOutcome>;
14
14
  peek(key: string, now: Date): Promise<number>;
15
+ prune(now: Date): Promise<number>;
15
16
  }
16
17
  /** Build the in-memory assistant and knowledge graph owned by `noodle dev`. */
17
18
  export declare function createDevLocalRuntime(): {
@@ -1 +1 @@
1
- {"version":3,"file":"dev-local-runtime.d.ts","sourceRoot":"","sources":["../src/dev-local-runtime.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEvB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EAEzB,MAAM,yCAAyC,CAAC;AAMjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,KAAK,WAAW,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,8FAA8F;AAC9F,cAAM,6BAA8B,YAAW,iBAAiB;;IAC9D,QAAQ,CAAC,OAAO,QAAQ;IAGxB,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IAIpE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAG9C;AAED,+EAA+E;AAC/E,wBAAgB,qBAAqB;;;;;;;;kCAWG,cAAc,CAAC,UAAU,CAAC,UAAU,WAAW;yDAehF;QACD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;KAC5B;EAgBJ"}
1
+ {"version":3,"file":"dev-local-runtime.d.ts","sourceRoot":"","sources":["../src/dev-local-runtime.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEvB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EAEzB,MAAM,yCAAyC,CAAC;AAMjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,KAAK,WAAW,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,8FAA8F;AAC9F,cAAM,6BAA8B,YAAW,iBAAiB;;IAC9D,QAAQ,CAAC,OAAO,QAAQ;IAGxB,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IAIpE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C,KAAK,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAGlC;AAED,+EAA+E;AAC/E,wBAAgB,qBAAqB;;;;;;;;kCAWG,cAAc,CAAC,UAAU,CAAC,UAAU,WAAW;yDAehF;QACD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;KAC5B;EAgBJ"}
@@ -13,6 +13,9 @@ class ProcessLocalAdmissionCounters {
13
13
  peek(key, now) {
14
14
  return this.#inner.peek(key, now);
15
15
  }
16
+ prune(now) {
17
+ return this.#inner.prune(now);
18
+ }
16
19
  }
17
20
  /** Build the in-memory assistant and knowledge graph owned by `noodle dev`. */
18
21
  export function createDevLocalRuntime() {
@@ -1 +1 @@
1
- {"version":3,"file":"dev-local-runtime.js","sourceRoot":"","sources":["../src/dev-local-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAIL,yBAAyB,GAC1B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,GAChB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,4CAA4C,CAAC;AAKpD,8FAA8F;AAC9F,MAAM,6BAA6B;IACxB,OAAO,GAAG,IAAI,CAAC;IACf,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAElD,OAAO,CAAC,OAAuB,EAAE,GAAS;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,GAAS;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB;IACnC,MAAM,YAAY,GAAG,IAAI,wBAAwB,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,OAAO;QACL,cAAc,EAAE;YACd,cAAc,EAAE,IAAI,sBAAsB,EAAE;YAC5C,YAAY;YACZ,iBAAiB,EAAE,IAAI,6BAA6B,EAAE;YACtD,UAAU,EAAE,IAAI,+BAA+B,EAAE;YACjD,SAAS;SACV;QACD,iBAAiB,EAAE,KAAK,EAAE,QAAoC,EAAE,MAAmB,EAAE,EAAE;YACrF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC1E,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;gBACvC,GAAG,MAAM;gBACT,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,GAAG,EAAE,IAAI,IAAI,EAAE;aAChB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,sBAAsB,EAAE,KAAK,EAAE,EAC7B,MAAM,EACN,MAAM,EACN,KAAK,GAKN,EAAE,EAAE;YACH,IAAI,KAAK,CAAC,UAAU,GAAG,kBAAkB,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CACzB,kBAAkB,CAAC,MAAM,CAAC,EAC1B,MAAM,EACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAClB,KAAK,CAAC,UAAU,CACjB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dev-local-runtime.js","sourceRoot":"","sources":["../src/dev-local-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAIL,yBAAyB,GAC1B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,GAChB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,4CAA4C,CAAC;AAKpD,8FAA8F;AAC9F,MAAM,6BAA6B;IACxB,OAAO,GAAG,IAAI,CAAC;IACf,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAElD,OAAO,CAAC,OAAuB,EAAE,GAAS;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,GAAS;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,GAAS;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB;IACnC,MAAM,YAAY,GAAG,IAAI,wBAAwB,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,OAAO;QACL,cAAc,EAAE;YACd,cAAc,EAAE,IAAI,sBAAsB,EAAE;YAC5C,YAAY;YACZ,iBAAiB,EAAE,IAAI,6BAA6B,EAAE;YACtD,UAAU,EAAE,IAAI,+BAA+B,EAAE;YACjD,SAAS;SACV;QACD,iBAAiB,EAAE,KAAK,EAAE,QAAoC,EAAE,MAAmB,EAAE,EAAE;YACrF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC1E,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;gBACvC,GAAG,MAAM;gBACT,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,GAAG,EAAE,IAAI,IAAI,EAAE;aAChB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,sBAAsB,EAAE,KAAK,EAAE,EAC7B,MAAM,EACN,MAAM,EACN,KAAK,GAKN,EAAE,EAAE;YACH,IAAI,KAAK,CAAC,UAAU,GAAG,kBAAkB,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CACzB,kBAAkB,CAAC,MAAM,CAAC,EAC1B,MAAM,EACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAClB,KAAK,CAAC,UAAU,CACjB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -34,6 +34,16 @@ export interface DailyCounterStore {
34
34
  * counter.
35
35
  */
36
36
  consume(request: CounterRequest, now: Date): Promise<CounterOutcome>;
37
+ /**
38
+ * Delete rows no reader can reach any more, and return how many went.
39
+ *
40
+ * The table takes a write on every mint and every turn, and the fairness tiers are hourly, so a
41
+ * busy surface writes up to 24 rows per visitor per day. Retention is what keeps that bounded.
42
+ *
43
+ * Safe by construction: both windows record the same `day` — an hourly row carries its hour inside
44
+ * the key — so `day` behind the cutoff means unreachable, whatever wrote it.
45
+ */
46
+ prune(now: Date): Promise<number>;
37
47
  /** Usage without consuming, for operator reads. */
38
48
  peek(key: string, now: Date): Promise<number>;
39
49
  /**
@@ -67,5 +77,15 @@ export declare function counterRow(request: Pick<CounterRequest, 'key' | 'window
67
77
  readonly key: string;
68
78
  readonly day: string;
69
79
  };
80
+ /**
81
+ * Days of counter history kept.
82
+ *
83
+ * Two rather than one: instances disagree about the clock and requests are in flight across the UTC
84
+ * boundary, so deleting a row the moment it stops being today's would race both. Two days is cheap —
85
+ * the rows are tiny — and removes the race entirely.
86
+ */
87
+ export declare const COUNTER_RETENTION_DAYS = 2;
88
+ /** The oldest day still readable at `now`. Rows before it are unreachable and may be deleted. */
89
+ export declare function retentionCutoff(now: Date): string;
70
90
  export declare function nextReset(now: Date, window?: 'day' | 'hour'): Date;
71
91
  //# sourceMappingURL=counter-store.d.ts.map
@@ -35,6 +35,18 @@ export function counterRow(request, now) {
35
35
  day: dayKey(now),
36
36
  };
37
37
  }
38
+ /**
39
+ * Days of counter history kept.
40
+ *
41
+ * Two rather than one: instances disagree about the clock and requests are in flight across the UTC
42
+ * boundary, so deleting a row the moment it stops being today's would race both. Two days is cheap —
43
+ * the rows are tiny — and removes the race entirely.
44
+ */
45
+ export const COUNTER_RETENTION_DAYS = 2;
46
+ /** The oldest day still readable at `now`. Rows before it are unreachable and may be deleted. */
47
+ export function retentionCutoff(now) {
48
+ return dayKey(new Date(now.getTime() - COUNTER_RETENTION_DAYS * 24 * 60 * 60 * 1000));
49
+ }
38
50
  export function nextReset(now, window = 'day') {
39
51
  const next = new Date(now);
40
52
  if (window === 'hour') {
@@ -50,6 +50,20 @@ export interface AdmissionEnvelope {
50
50
  */
51
51
  readonly mintsPerAddressHour: number;
52
52
  readonly turnsPerAddressHour: number;
53
+ /**
54
+ * Sessions one *visitor* may mint per hour (admission tier 4).
55
+ *
56
+ * A finer question than the address tier, and the one the address tier gets wrong. A corporate NAT,
57
+ * a university, a coworking space, or a mobile carrier's CGNAT put hundreds of unrelated people
58
+ * behind one address; without this they race each other for a single visitor's allowance and the
59
+ * ones who lose cannot tell the refusal from a broken product.
60
+ *
61
+ * The identifier is supplied by the browser, so this is fairness and never abuse control — it can
62
+ * be rotated at will. The address tier stays underneath as the bound that cannot be rotated, which
63
+ * is why this one is checked first: a visitor at their own ceiling is refused without spending any
64
+ * of the shared address allowance.
65
+ */
66
+ readonly mintsPerVisitorHour: number;
53
67
  /**
54
68
  * Tool calls one session may make through the WebMCP provider bridge (ADR 0220).
55
69
  *
@@ -61,9 +75,27 @@ export interface AdmissionEnvelope {
61
75
  /** Bridge tool calls this surface may serve per UTC day — the solvency bound for agent traffic. */
62
76
  readonly bridgeToolCallsPerDay: number;
63
77
  }
64
- /** Ceilings. Nothing may exceed these, whatever the manifest or managed config asks for. */
78
+ /**
79
+ * Ceilings. Nothing may exceed these, whatever the manifest or managed config asks for.
80
+ *
81
+ * Raised for web scale on 2026-08-31. These are release-level decisions, not runtime ones: an
82
+ * operator may still only lower a bound, and code may still not raise one. What changed is that the
83
+ * pilot's numbers made a busy site meet an unraisable constant — a 100k-visitor site went dark after
84
+ * 300 conversations — so the ceiling now sits well above any legitimate site rather than just above
85
+ * the pilot.
86
+ */
65
87
  export declare const ADMISSION_MAXIMUM: AdmissionEnvelope;
66
- /** What a surface gets when nobody configures it. Conservative by intent for a first pilot. */
88
+ /**
89
+ * What a surface gets when nobody configures it.
90
+ *
91
+ * Sized for a busy public website — roughly 100k visitors a day at ordinary engagement, with headroom
92
+ * — rather than for a pilot. The pilot's 300 mints and 1,000 turns were the right numbers for proving
93
+ * the mechanism and the wrong ones for shipping it: a customer who succeeded went dark by midday.
94
+ *
95
+ * The two per-address bounds are now *abuse* bounds rather than fairness ones. Tier 4 gives each
96
+ * visitor their own allowance, so these only have to be low enough to stop a single machine and high
97
+ * enough never to be met by a corporate NAT with hundreds of real people behind it.
98
+ */
67
99
  export declare const ADMISSION_DEFAULTS: AdmissionEnvelope;
68
100
  /**
69
101
  * Build an envelope from an operator request. Every field is clamped to {@link ADMISSION_MAXIMUM};
@@ -14,7 +14,15 @@
14
14
  */
15
15
  const MINUTE = 60_000;
16
16
  const HOUR = 60 * MINUTE;
17
- /** Ceilings. Nothing may exceed these, whatever the manifest or managed config asks for. */
17
+ /**
18
+ * Ceilings. Nothing may exceed these, whatever the manifest or managed config asks for.
19
+ *
20
+ * Raised for web scale on 2026-08-31. These are release-level decisions, not runtime ones: an
21
+ * operator may still only lower a bound, and code may still not raise one. What changed is that the
22
+ * pilot's numbers made a busy site meet an unraisable constant — a 100k-visitor site went dark after
23
+ * 300 conversations — so the ceiling now sits well above any legitimate site rather than just above
24
+ * the pilot.
25
+ */
18
26
  export const ADMISSION_MAXIMUM = Object.freeze({
19
27
  messageCharacters: 4_000,
20
28
  turnsPerSession: 40,
@@ -24,23 +32,38 @@ export const ADMISSION_MAXIMUM = Object.freeze({
24
32
  confirmationTtlMs: 10 * MINUTE,
25
33
  sessionIdleMs: 30 * MINUTE,
26
34
  sessionAbsoluteMs: 2 * HOUR,
27
- turnsPerDay: 100_000,
28
- mintsPerDay: 30_000,
29
- mintsPerAddressHour: 1_000,
30
- turnsPerAddressHour: 5_000,
35
+ turnsPerDay: 2_000_000,
36
+ mintsPerDay: 500_000,
37
+ mintsPerAddressHour: 20_000,
38
+ turnsPerAddressHour: 100_000,
39
+ mintsPerVisitorHour: 1_000,
31
40
  bridgeToolCallsPerSession: 200,
32
41
  bridgeToolCallsPerDay: 200_000,
33
42
  });
34
- /** What a surface gets when nobody configures it. Conservative by intent for a first pilot. */
43
+ /**
44
+ * What a surface gets when nobody configures it.
45
+ *
46
+ * Sized for a busy public website — roughly 100k visitors a day at ordinary engagement, with headroom
47
+ * — rather than for a pilot. The pilot's 300 mints and 1,000 turns were the right numbers for proving
48
+ * the mechanism and the wrong ones for shipping it: a customer who succeeded went dark by midday.
49
+ *
50
+ * The two per-address bounds are now *abuse* bounds rather than fairness ones. Tier 4 gives each
51
+ * visitor their own allowance, so these only have to be low enough to stop a single machine and high
52
+ * enough never to be met by a corporate NAT with hundreds of real people behind it.
53
+ */
35
54
  export const ADMISSION_DEFAULTS = Object.freeze({
36
55
  ...ADMISSION_MAXIMUM,
37
- turnsPerDay: 1_000,
38
- mintsPerDay: 300,
39
- // One visitor opening ten conversations an hour is already unusual; sixty turns is a long session.
40
- mintsPerAddressHour: 10,
41
- turnsPerAddressHour: 60,
56
+ turnsPerDay: 20_000,
57
+ mintsPerDay: 5_000,
58
+ mintsPerAddressHour: 300,
59
+ turnsPerAddressHour: 1_200,
60
+ // Fairness, and generous on purpose: thirty conversations an hour is far past ordinary use, and a
61
+ // visitor who somehow reaches it is still bounded by everything above.
62
+ mintsPerVisitorHour: 30,
42
63
  // A browser agent works in bursts of reads, so this is wider than a session's turns while staying far
43
64
  // below what a scraper would want. Proposed, not measured: revisit once real agent traffic exists.
65
+ // Deliberately left at ADR 0220's sizing by the web-scale raise above: agent traffic is a different
66
+ // question from visitor traffic, and re-tuning an unmeasured bound belongs to the tier that owns it.
44
67
  bridgeToolCallsPerSession: 32,
45
68
  bridgeToolCallsPerDay: 2_000,
46
69
  });
@@ -69,6 +92,7 @@ export function clamp(requested = {}) {
69
92
  turnsPerDay: bound('turnsPerDay'),
70
93
  mintsPerAddressHour: bound('mintsPerAddressHour'),
71
94
  turnsPerAddressHour: bound('turnsPerAddressHour'),
95
+ mintsPerVisitorHour: bound('mintsPerVisitorHour'),
72
96
  mintsPerDay: bound('mintsPerDay'),
73
97
  bridgeToolCallsPerSession: bound('bridgeToolCallsPerSession'),
74
98
  bridgeToolCallsPerDay: bound('bridgeToolCallsPerDay'),
@@ -10,6 +10,7 @@ export declare class InMemoryDailyCounterStore implements DailyCounterStore {
10
10
  #private;
11
11
  readonly durable = false;
12
12
  consume(request: CounterRequest, now: Date): Promise<CounterOutcome>;
13
+ prune(now: Date): Promise<number>;
13
14
  peek(key: string, now: Date): Promise<number>;
14
15
  }
15
16
  //# sourceMappingURL=in-memory-counter-store.d.ts.map
@@ -1,4 +1,4 @@
1
- import { counterRow, dayKey, nextReset, } from './counter-store.js';
1
+ import { counterRow, dayKey, nextReset, retentionCutoff, } from './counter-store.js';
2
2
  /**
3
3
  * Process-local counters for local development and tests.
4
4
  *
@@ -21,6 +21,19 @@ export class InMemoryDailyCounterStore {
21
21
  this.#used.set(key, used + amount);
22
22
  return { allowed: true, used: used + amount, limit: request.limit, resetAt };
23
23
  }
24
+ async prune(now) {
25
+ // The day is the map key's prefix, and it sorts lexicographically because it is ISO-8601 — which
26
+ // is the same property the durable store leans on in SQL.
27
+ const cutoff = retentionCutoff(now);
28
+ let removed = 0;
29
+ for (const key of this.#used.keys()) {
30
+ if ((key.split(':')[0] ?? '') < cutoff) {
31
+ this.#used.delete(key);
32
+ removed += 1;
33
+ }
34
+ }
35
+ return removed;
36
+ }
24
37
  async peek(key, now) {
25
38
  return this.#used.get(`${dayKey(now)}:${key}`) ?? 0;
26
39
  }
@@ -3,4 +3,5 @@ export * from './client-address.js';
3
3
  export * from './counter-store.js';
4
4
  export * from './envelope.js';
5
5
  export * from './in-memory-counter-store.js';
6
+ export * from './visitor-bucket.js';
6
7
  //# sourceMappingURL=portable.d.ts.map
@@ -3,4 +3,5 @@ export * from './client-address.js';
3
3
  export * from './counter-store.js';
4
4
  export * from './envelope.js';
5
5
  export * from './in-memory-counter-store.js';
6
+ export * from './visitor-bucket.js';
6
7
  //# sourceMappingURL=portable.js.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Turn a browser-supplied visitor identifier into a counter bucket.
3
+ *
4
+ * **This is a fairness key, never an abuse bound.** Anyone can clear their storage or forge a fresh
5
+ * value, so nothing may be authorized by it and no limit may depend on it holding still. The
6
+ * per-address tier stays underneath for exactly that reason. What it buys is the case the address
7
+ * tier gets wrong: a hundred people behind one corporate NAT or a mobile carrier's CGNAT share a
8
+ * single address, and without this they race each other for one visitor's allowance — the eleventh
9
+ * person sees "assistant is unavailable right now" and cannot tell it from a broken product.
10
+ *
11
+ * Hashed on the way out for the same reason an address is: the raw value is the browser's, and the
12
+ * package rule is that nothing a client supplies reaches a counter key, a log line, or an audit
13
+ * payload. Bucketing needs only "is this the same visitor as before", which a digest answers exactly
14
+ * as well.
15
+ *
16
+ * Returns `undefined` for anything it cannot treat as an identifier, so the caller falls back to
17
+ * address-only fairness rather than inventing a bucket that every unparseable request would share.
18
+ */
19
+ export declare function visitorBucket(id: unknown): string | undefined;
20
+ //# sourceMappingURL=visitor-bucket.d.ts.map
@@ -0,0 +1,30 @@
1
+ import { createHash } from 'node:crypto';
2
+ /** Longest identifier accepted. A stranger supplies this string; the hash input has to be bounded. */
3
+ const MAX_VISITOR_ID_CHARS = 128;
4
+ /**
5
+ * Turn a browser-supplied visitor identifier into a counter bucket.
6
+ *
7
+ * **This is a fairness key, never an abuse bound.** Anyone can clear their storage or forge a fresh
8
+ * value, so nothing may be authorized by it and no limit may depend on it holding still. The
9
+ * per-address tier stays underneath for exactly that reason. What it buys is the case the address
10
+ * tier gets wrong: a hundred people behind one corporate NAT or a mobile carrier's CGNAT share a
11
+ * single address, and without this they race each other for one visitor's allowance — the eleventh
12
+ * person sees "assistant is unavailable right now" and cannot tell it from a broken product.
13
+ *
14
+ * Hashed on the way out for the same reason an address is: the raw value is the browser's, and the
15
+ * package rule is that nothing a client supplies reaches a counter key, a log line, or an audit
16
+ * payload. Bucketing needs only "is this the same visitor as before", which a digest answers exactly
17
+ * as well.
18
+ *
19
+ * Returns `undefined` for anything it cannot treat as an identifier, so the caller falls back to
20
+ * address-only fairness rather than inventing a bucket that every unparseable request would share.
21
+ */
22
+ export function visitorBucket(id) {
23
+ if (typeof id !== 'string')
24
+ return undefined;
25
+ const trimmed = id.trim();
26
+ if (trimmed.length === 0 || trimmed.length > MAX_VISITOR_ID_CHARS)
27
+ return undefined;
28
+ return `vis_${createHash('sha256').update(trimmed).digest('hex').slice(0, 32)}`;
29
+ }
30
+ //# sourceMappingURL=visitor-bucket.js.map
@@ -93,6 +93,10 @@ export function renderToolDesignReference() {
93
93
  '',
94
94
  "`noodle check` warns above 20 model-visible tools. That is a documented heuristic, not a host limit: no host publishes a hard number, and the real threshold depends on how distinct your descriptions are. Collapse variants that differ only by a filter into one intent-shaped tool with a typed enum, and mark widget-only helpers `visibility: ['app']` so they stay callable from the app surface without entering the model's list.",
95
95
  '',
96
+ '**Two tools over one data source must differ by name, not only by description.** Repeated live testing has shown a model picking the broader-sounding neighbour for a question the narrower tool owns, even when every description, server instruction and workflow prompt named the right one — the public name is read before the finer guidance is weighed. When adjacent tools form a fallback chain, give them mutually exclusive model-visible names *and* mutually exclusive entry conditions, project one capability rather than two overlapping ones, and keep the lower-level primitive available to direct MCP clients instead of to the model. Prove it with repeated fresh-session live cases: one successful route does not show a stochastic choice is stable, and unit tests cannot show it at all.',
97
+ '',
98
+ '**Repetition and eligibility belong to the runtime, not the prompt.** A rolling model will render a "once per conversation" card three times under mild pressure and will reach for a conversion action on a question that merely sounds adjacent. When a tool must fire at most once, or only on an explicit ask, express that as a runtime policy the deployment enforces rather than as a sentence the model is asked to honour.',
99
+ '',
96
100
  '## Provision context deliberately',
97
101
  '',
98
102
  "Most “the model guessed wrong” bugs are missing context, not a missing tool. Every invocation already carries a server-authoritative instant plus locale and time zone, so never ask the model for today's date. Set `server(..., { context: { defaults: { locale, timeZone } } })` for ambient defaults, and mark one zero-input tool `contextProvider: true` when the model needs portable application context such as workspace, plan, or permissions. `references/authoring-workflow.md` owns the full invocation-context contract.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noodle-borg/agent-kit",
3
- "version": "0.87.1",
3
+ "version": "0.88.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "engines": {
@@ -32,6 +32,18 @@ export declare function selectAssistantModelTools(artifact: RuntimeArtifact, cal
32
32
  readonly latestMessage?: string;
33
33
  readonly usedToolNames?: readonly string[];
34
34
  }): readonly ArtifactTool[];
35
+ /**
36
+ * What to tell a model that called a tool this turn does not offer.
37
+ *
38
+ * The alternative — ending the turn on `invalid_model_tool_call` — is a security-correct rejection
39
+ * with a dishonest failure mode: the widget renders it as "temporarily unavailable" beside a
40
+ * Reconnect button that mints a whole new session, so a visitor who asked for something reasonable
41
+ * gets silence and the surface pays a session for it. A `role:'tool'` result costs one model step
42
+ * and gets the visitor a real answer instead. It names the tool because the model supplied that
43
+ * name in the first place, and says nothing about why the tool is absent, which is the part a
44
+ * visitor is not entitled to.
45
+ */
46
+ export declare function assistantOmittedToolResult(name: string): string;
35
47
  /** Whether an already-selected tool requires the first model step to call it. */
36
48
  export declare function assistantModelToolRequiredWhenVisible(tool: ArtifactTool): boolean;
37
49
  /** Whether a successful model-selected call consumes this tool for the assistant session. */