@gaunt-sloth/core 2.0.0-beta.5 → 2.0.0-beta.6

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 (91) hide show
  1. package/dist/config/schema.d.ts +4 -0
  2. package/dist/config/schema.js +64 -2
  3. package/dist/config/schema.js.map +1 -1
  4. package/dist/config/tokenBudget.d.ts +88 -0
  5. package/dist/config/tokenBudget.js +155 -0
  6. package/dist/config/tokenBudget.js.map +1 -0
  7. package/dist/config/types.d.ts +33 -4
  8. package/dist/config/types.js.map +1 -1
  9. package/dist/config.d.ts +1 -0
  10. package/dist/config.js +5 -0
  11. package/dist/config.js.map +1 -1
  12. package/dist/core/GthAbstractAgent.d.ts +24 -0
  13. package/dist/core/GthAbstractAgent.js +37 -1
  14. package/dist/core/GthAbstractAgent.js.map +1 -1
  15. package/dist/core/GthAgentRunner.d.ts +216 -1
  16. package/dist/core/GthAgentRunner.js +424 -3
  17. package/dist/core/GthAgentRunner.js.map +1 -1
  18. package/dist/core/GthLangChainAgent.d.ts +196 -0
  19. package/dist/core/GthLangChainAgent.js +392 -2
  20. package/dist/core/GthLangChainAgent.js.map +1 -1
  21. package/dist/core/approvals/conversationGrants.d.ts +60 -0
  22. package/dist/core/approvals/conversationGrants.js +77 -0
  23. package/dist/core/approvals/conversationGrants.js.map +1 -0
  24. package/dist/core/approvals/grants.d.ts +16 -0
  25. package/dist/core/approvals/grants.js +20 -5
  26. package/dist/core/approvals/grants.js.map +1 -1
  27. package/dist/core/compaction.d.ts +181 -0
  28. package/dist/core/compaction.js +293 -0
  29. package/dist/core/compaction.js.map +1 -0
  30. package/dist/core/compactionThreshold.d.ts +158 -0
  31. package/dist/core/compactionThreshold.js +183 -0
  32. package/dist/core/compactionThreshold.js.map +1 -0
  33. package/dist/core/contextWindow.d.ts +146 -0
  34. package/dist/core/contextWindow.js +256 -0
  35. package/dist/core/contextWindow.js.map +1 -0
  36. package/dist/core/exitOutputChannel.d.ts +51 -0
  37. package/dist/core/exitOutputChannel.js +65 -0
  38. package/dist/core/exitOutputChannel.js.map +1 -0
  39. package/dist/core/refusal.d.ts +17 -2
  40. package/dist/core/refusal.js +80 -14
  41. package/dist/core/refusal.js.map +1 -1
  42. package/dist/core/runStats.d.ts +1 -1
  43. package/dist/core/terminationNotice.d.ts +8 -0
  44. package/dist/core/terminationNotice.js +10 -4
  45. package/dist/core/terminationNotice.js.map +1 -1
  46. package/dist/core/terminationReason.d.ts +28 -0
  47. package/dist/core/terminationReason.js +27 -0
  48. package/dist/core/terminationReason.js.map +1 -1
  49. package/dist/core/types.d.ts +35 -1
  50. package/dist/core/types.js.map +1 -1
  51. package/dist/history/checkpointRetention.d.ts +279 -0
  52. package/dist/history/checkpointRetention.js +567 -0
  53. package/dist/history/checkpointRetention.js.map +1 -0
  54. package/dist/history/checkpointSaver.d.ts +93 -0
  55. package/dist/history/checkpointSaver.js +464 -0
  56. package/dist/history/checkpointSaver.js.map +1 -0
  57. package/dist/history/historyEnabled.d.ts +27 -0
  58. package/dist/history/historyEnabled.js +23 -0
  59. package/dist/history/historyEnabled.js.map +1 -0
  60. package/dist/history/historyFormat.d.ts +27 -0
  61. package/dist/history/historyFormat.js +125 -2
  62. package/dist/history/historyFormat.js.map +1 -1
  63. package/dist/history/historyStore.d.ts +61 -0
  64. package/dist/history/historyStore.js +180 -7
  65. package/dist/history/historyStore.js.map +1 -1
  66. package/dist/history/recordSession.d.ts +84 -22
  67. package/dist/history/recordSession.js +187 -12
  68. package/dist/history/recordSession.js.map +1 -1
  69. package/dist/history/sessionCheckpointer.d.ts +48 -0
  70. package/dist/history/sessionCheckpointer.js +200 -0
  71. package/dist/history/sessionCheckpointer.js.map +1 -0
  72. package/dist/index.d.ts +6 -0
  73. package/dist/index.js +8 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/providers/modelCatalog.d.ts +14 -0
  76. package/dist/providers/modelCatalog.js +4 -0
  77. package/dist/providers/modelCatalog.js.map +1 -1
  78. package/dist/providers/modelDiscovery.d.ts +3 -1
  79. package/dist/providers/modelDiscovery.js +22 -8
  80. package/dist/providers/modelDiscovery.js.map +1 -1
  81. package/dist/providers/ollama.js +3 -19
  82. package/dist/providers/ollama.js.map +1 -1
  83. package/dist/runtime/conversation.js +7 -1
  84. package/dist/runtime/conversation.js.map +1 -1
  85. package/dist/runtime/singleShot.js +6 -1
  86. package/dist/runtime/singleShot.js.map +1 -1
  87. package/dist/utils/consoleUtils.d.ts +77 -0
  88. package/dist/utils/consoleUtils.js +81 -0
  89. package/dist/utils/consoleUtils.js.map +1 -1
  90. package/package.json +2 -2
  91. package/schema/gsloth-config.schema.json +33 -14
@@ -3,6 +3,7 @@ import { StatusLevel } from '#src/core/types.js';
3
3
  import { GthAbstractAgent } from '#src/core/GthAbstractAgent.js';
4
4
  import { debugLog, debugLogObject } from '#src/utils/debugUtils.js';
5
5
  import { buildSystemMessages, formatToolCalls, readModePrompt } from '#src/utils/llmUtils.js';
6
+ import { modelProviderLabel } from '#src/core/modelLabel.js';
6
7
  import { getCurrentWorkDir } from '#src/utils/systemUtils.js';
7
8
  import { isToolAllowed } from '#src/utils/toolMatching.js';
8
9
  import { appendOsShellNote, appendCwdNote, appendCommitCoAuthorNote, appendModelContextNote, appendMcpServerInstructionsNote, resolveModelIdentity, } from '#src/utils/systemPromptNotes.js';
@@ -10,7 +11,11 @@ import { isShellCommandFailedError } from '#src/core/shell/ShellCommandFailedErr
10
11
  import { extractDebugRequestExtras } from '#src/core/debugCapture.js';
11
12
  import { promoteTextEmittedToolCallMessage } from '#src/core/toolCallRepair/index.js';
12
13
  import { terminationReason } from '#src/core/terminationReason.js';
13
- import { AIMessage, ToolMessage } from '@langchain/core/messages';
14
+ import { compactMessages, conversationSize, createModelSummarizer, } from '#src/core/compaction.js';
15
+ import { resolveContextWindow } from '#src/core/contextWindow.js';
16
+ import { AutocompactController, resolveAutocompactConfig } from '#src/core/compactionThreshold.js';
17
+ import { AIMessage, RemoveMessage, ToolMessage } from '@langchain/core/messages';
18
+ import { REMOVE_ALL_MESSAGES } from '@langchain/langgraph';
14
19
  import { createAgent, createMiddleware, humanInTheLoopMiddleware, } from 'langchain';
15
20
  /**
16
21
  * GS2-36 — default cap for the tool-error retry budget: how many status:'error' tool results may
@@ -295,6 +300,327 @@ export function createToolLoopGuardMiddleware(options = {}, onWarn, onHalt) {
295
300
  },
296
301
  });
297
302
  }
303
+ /**
304
+ * EXT-160 — how many characters of prompt one token is assumed to carry.
305
+ *
306
+ * 3.5 rather than the usual English rule of thumb of 4, because the prompt this guard measures is
307
+ * not English: it is a system prompt full of tool schemas, JSON tool arguments and file paths, which
308
+ * tokenise far worse than prose. Erring low makes the estimate HIGH, which is the safe direction —
309
+ * an early compaction costs one summary call, a late one costs a silently truncated conversation.
310
+ */
311
+ export const ESTIMATE_CHARS_PER_TOKEN = 3.5;
312
+ /**
313
+ * EXT-160 — the multiplier applied to the whole estimate, on top of the pessimistic ratio above.
314
+ *
315
+ * The estimate is anchored on a real token count and extrapolates only the delta, so 10% covers the
316
+ * part that is genuinely guessed: the tokens of messages added since the anchor, plus whatever the
317
+ * provider adds per message that no character count can see (role headers, tool-call framing).
318
+ */
319
+ export const ESTIMATE_SAFETY_MARGIN = 1.1;
320
+ /**
321
+ * EXT-160 — tokens reserved for the model's own answer when nothing else says.
322
+ *
323
+ * On ollama `num_ctx` covers the prompt **and** the generation from one budget, so a prompt that
324
+ * "fits" with nothing left over does not fail — it produces a truncated answer, which is the second
325
+ * failure of the spike's three wearing the first's clothes. Reserving the room is what keeps a
326
+ * guard that is about input overflow from shipping output truncation instead.
327
+ */
328
+ export const DEFAULT_OUTPUT_RESERVE_TOKENS = 2048;
329
+ /**
330
+ * EXT-160 — the most any ONE non-text content block may add to the estimate, in tokens.
331
+ *
332
+ * **This is an approximation and does not model any provider's image tokenisation.** It cannot: the
333
+ * real number depends on the provider, the model, and how the image is tiled, and none of that is
334
+ * knowable from the block. What it does instead is bound the damage in both directions.
335
+ *
336
+ * The bound is needed because a block's ENCODED LENGTH is not a proxy for its size at all. A 100 KB
337
+ * inline image is roughly 136 500 base64 characters, which at the ratio above is about 43 000
338
+ * tokens, while providers charge on the order of a thousand for it — an over-count near 33×, larger
339
+ * than any window this project wires. Charging that would fold the conversation on every single
340
+ * turn, which is the same thrashing the reserve clamp exists to prevent, arriving from the other
341
+ * side.
342
+ *
343
+ * 1600 sits at the top of the range providers charge for a large image, so it **errs high** — the
344
+ * same direction as every other approximation here, and the direction the node prefers, because an
345
+ * early compaction costs one summary call while a late one costs a silently truncated conversation.
346
+ * It errs high by a bounded factor rather than an unbounded one, which is the whole point.
347
+ *
348
+ * It is a CAP, not a flat charge: a block shorter than this is counted at its real length, so a
349
+ * small structured tool result stays accurate instead of being inflated to an image's cost.
350
+ */
351
+ export const NON_TEXT_BLOCK_TOKEN_ALLOWANCE = 1600;
352
+ /**
353
+ * EXT-160 — {@link NON_TEXT_BLOCK_TOKEN_ALLOWANCE} in the characters the estimator actually sums,
354
+ * so the cap survives the division by {@link ESTIMATE_CHARS_PER_TOKEN} that follows.
355
+ */
356
+ export const NON_TEXT_BLOCK_CHARACTER_ALLOWANCE = Math.round(NON_TEXT_BLOCK_TOKEN_ALLOWANCE * ESTIMATE_CHARS_PER_TOKEN);
357
+ /**
358
+ * EXT-160 — a residual this small is a block's structural keys, not its payload.
359
+ *
360
+ * After a block's `text` is removed (already counted elsewhere) an ordinary text block leaves only
361
+ * its discriminator — `{"type":"text"}` is fifteen characters. Charging that would add noise
362
+ * proportional to the NUMBER of blocks rather than to what they carry, and the system prompt alone
363
+ * is an array of them. Anything above this floor is treated as payload and counted.
364
+ *
365
+ * This is the one approximation here that errs LOW, and only ever by this many characters per
366
+ * block, because a residual under the floor cannot be a payload worth compacting for.
367
+ */
368
+ export const BLOCK_STRUCTURE_FLOOR_CHARACTERS = 64;
369
+ /**
370
+ * EXT-160 — the largest fraction of the window the **default** reserve is allowed to claim.
371
+ *
372
+ * A fixed reserve is meaningless against a window near its own size: measured live on a
373
+ * deliberately small `num_ctx` of 2048, the flat 2048-token reserve made `estimate + reserve >
374
+ * window` true for every call whatever the conversation held, so the guard folded on every turn and
375
+ * spent a summary call each time. The clamp keeps the reserve proportionate — a quarter of the
376
+ * window is still real headroom for an answer, and it can never be the whole budget.
377
+ *
378
+ * This applies to the number nobody chose. A reserve the user configured is clamped by
379
+ * {@link MAX_EXPLICIT_RESERVE_FRACTION_OF_WINDOW} instead, and the reason is below.
380
+ */
381
+ export const MAX_RESERVE_FRACTION_OF_WINDOW = 0.25;
382
+ /**
383
+ * EXT-160 — the largest fraction of the window a **configured** reserve is allowed to claim.
384
+ *
385
+ * A user who sets `llm.numPredict` has named an answer budget, which the default has not, so
386
+ * clamping it to a quarter of the window silently gives them less than they asked for and then
387
+ * truncates the answer — the exact failure the reserve exists to prevent, reintroduced by the fix
388
+ * for a different one. Measured: at `numCtx: 16384` with `numPredict: 8192`, a quarter-clamp holds
389
+ * back 4096, the guard sees 16140 against 16384 and passes the turn, and the answer is then short
390
+ * by 3852 tokens.
391
+ *
392
+ * **A configured number can still be reduced, and this is where.** Above half the window it is cut
393
+ * to half, because a reserve larger than that leaves less room for the conversation than for the
394
+ * answer, and at that point no conversation fits and the guard would fold on every turn — the
395
+ * thrashing the default clamp exists to stop. So: honoured up to half the window, reduced beyond
396
+ * it.
397
+ */
398
+ export const MAX_EXPLICIT_RESERVE_FRACTION_OF_WINDOW = 0.5;
399
+ /**
400
+ * EXT-160 — the answer reserve actually applied to a given window: the requested number, clamped to
401
+ * a fraction of the window that depends on **who chose it** (a quarter for the default, half for a
402
+ * number the user configured — see the two constants above).
403
+ *
404
+ * EXT-161 pulled it out of the hook because the preventive threshold's default is defined as
405
+ * `window − this`, and {@link AutocompactController} has to be able to compute the same number the
406
+ * guard would. Two copies of this arithmetic is exactly how `/status` would come to advertise a
407
+ * threshold the guard does not enforce.
408
+ */
409
+ export function effectiveOutputReserve(window, reserve, reserveWasConfigured) {
410
+ const fraction = reserveWasConfigured
411
+ ? MAX_EXPLICIT_RESERVE_FRACTION_OF_WINDOW
412
+ : MAX_RESERVE_FRACTION_OF_WINDOW;
413
+ return Math.min(reserve, Math.floor(window * fraction));
414
+ }
415
+ /**
416
+ * EXT-161 — the prompt size at which a conversation is folded when the user named no threshold:
417
+ * the window, less the room held back for the answer.
418
+ *
419
+ * This is EXT-160's original trigger condition rearranged, not a new one — `estimate + reserve >
420
+ * window` and `estimate > window − reserve` are the same inequality — so the default path behaves
421
+ * exactly as it did before a threshold could be configured.
422
+ */
423
+ export function defaultCompactionThreshold(window, reserve, reserveWasConfigured) {
424
+ return window - effectiveOutputReserve(window, reserve, reserveWasConfigured);
425
+ }
426
+ /**
427
+ * EXT-160 — **an estimate, and it says so in its name.**
428
+ *
429
+ * Ollama exposes no tokenizer over its API, so there is no way to count the prompt exactly before
430
+ * sending it. Rather than guess from characters alone, this anchors on the last REAL number the
431
+ * provider gave us: `usage_metadata.input_tokens` on the most recent `AIMessage` (ChatOllama maps
432
+ * ollama's `prompt_eval_count` into it), which is exactly the token count of everything that
433
+ * preceded that message — system prompt included. Only what has arrived SINCE the anchor is
434
+ * extrapolated from characters, so the guessed fraction shrinks as the conversation grows, which is
435
+ * precisely when the number starts to matter.
436
+ *
437
+ * With no anchor (the first call of a session) everything is extrapolated, and the system prompt's
438
+ * characters are added because nothing has measured them yet. With an anchor they are already
439
+ * inside the anchor's count and adding them again would double-count the single largest block.
440
+ */
441
+ /**
442
+ * EXT-160 — the characters `conversationSize` cannot see, added back.
443
+ *
444
+ * `conversationSize` reads message content through `compaction.ts`'s `contentText`, which keeps a
445
+ * string block and a block with a string `text` field and returns `''` for everything else. That is
446
+ * right for compaction, whose before/after comparison only has to agree with itself, but it is
447
+ * wrong for a token estimate: an image block or a structured MCP tool result would contribute zero
448
+ * characters, so the guard would under-count precisely the payload most likely to fill the window.
449
+ *
450
+ * That is the UNSAFE direction, and it is the only approximation the estimator errs that way — every
451
+ * other one deliberately reads high.
452
+ *
453
+ * **What is counted is the block MINUS its `text`, capped.** Both halves matter:
454
+ *
455
+ * - Removing `text` is what stops a block from being counted twice, since `contentText` already
456
+ * returned it. It also closes the gap the mirror-the-skip-conditions version left: a block
457
+ * carrying BOTH a `text` field and a payload used to be skipped whole, so `contentText` counted
458
+ * its text and its payload was free. That is the under-count this function exists to fix,
459
+ * surviving inside the fix.
460
+ * - Capping at {@link NON_TEXT_BLOCK_CHARACTER_ALLOWANCE} is what stops the opposite failure: an
461
+ * encoded payload's LENGTH is not its cost, and charging it in full over-counts an inline image by
462
+ * enough to fold the conversation on every turn. That constant carries the reasoning.
463
+ *
464
+ * A residual at or below {@link BLOCK_STRUCTURE_FLOOR_CHARACTERS} is a type discriminator rather
465
+ * than a payload and is not charged.
466
+ */
467
+ function nonTextBlockCharacters(messages) {
468
+ let total = 0;
469
+ for (const message of messages) {
470
+ const content = message.content;
471
+ if (!Array.isArray(content))
472
+ continue;
473
+ for (const block of content) {
474
+ // A bare string block is content `contentText` already returned in full.
475
+ if (typeof block === 'string')
476
+ continue;
477
+ if (!block || typeof block !== 'object')
478
+ continue;
479
+ let payload;
480
+ try {
481
+ const { text: _countedByContentText, ...rest } = block;
482
+ payload = JSON.stringify(typeof block.text === 'string' ? rest : block);
483
+ }
484
+ catch {
485
+ /* a block that cannot be serialised is left uncounted rather than crashing the estimate */
486
+ continue;
487
+ }
488
+ const length = payload?.length ?? 0;
489
+ if (length <= BLOCK_STRUCTURE_FLOOR_CHARACTERS)
490
+ continue;
491
+ total += Math.min(length, NON_TEXT_BLOCK_CHARACTER_ALLOWANCE);
492
+ }
493
+ }
494
+ return total;
495
+ }
496
+ export function estimatePromptTokens(messages, systemPromptCharacters = 0) {
497
+ let anchorIndex = -1;
498
+ let anchorTokens = 0;
499
+ for (let i = messages.length - 1; i >= 0; i--) {
500
+ const message = messages[i];
501
+ if (!AIMessage.isInstance(message))
502
+ continue;
503
+ const input = message.usage_metadata?.input_tokens;
504
+ if (typeof input === 'number' && Number.isFinite(input) && input > 0) {
505
+ anchorIndex = i;
506
+ anchorTokens = input;
507
+ break;
508
+ }
509
+ }
510
+ // From the anchor message onward: the anchor's own tokens covered everything BEFORE it, so the
511
+ // anchor message itself is part of the next prompt and is counted in the delta.
512
+ const counted = anchorIndex === -1 ? messages : messages.slice(anchorIndex);
513
+ const deltaCharacters = conversationSize(counted).characters +
514
+ nonTextBlockCharacters(counted) +
515
+ (anchorIndex === -1 ? systemPromptCharacters : 0);
516
+ const estimate = anchorTokens + deltaCharacters / ESTIMATE_CHARS_PER_TOKEN;
517
+ return Math.ceil(estimate * ESTIMATE_SAFETY_MARGIN);
518
+ }
519
+ /**
520
+ * EXT-160 — **the pre-call context guard: compact BEFORE the request, never after the damage.**
521
+ *
522
+ * Why a `beforeModel` middleware and not the runner's turn funnel: every model call inside a tool
523
+ * loop grows the context, and the runner only ever sees the turn boundary — so a turn that fits
524
+ * when it starts and overflows on its fourth tool round is invisible there. A `beforeModel` hook
525
+ * sees `state.messages` on every call, which is the only place this can be caught.
526
+ *
527
+ * **Pre-call means pre-call, and that is the whole point.** Ollama does not raise on overflow: the
528
+ * daemon silently drops the oldest tokens to fit `num_ctx` and answers happily from what is left,
529
+ * so there is no error, no stop reason, and nothing on the wire that differs from a healthy turn.
530
+ * By the time a response exists the evidence is gone — a check that ran after it could only ever
531
+ * confirm damage already done, and the damage is not a missing answer but a plausible one built on
532
+ * a conversation whose head was quietly discarded.
533
+ *
534
+ * **The loop hazard, and the bail that closes it.** The factory runs once per session, so like its
535
+ * two siblings above this hook holds NO state and recomputes everything from `state.messages`. That
536
+ * means a compaction which folds nothing would leave the state identical, the estimate identical,
537
+ * and this hook firing again on the next entry — forever. So `changed: false` **lets the call
538
+ * proceed**: a conversation already at its irreducible minimum is sent as it is and allowed to fail
539
+ * honestly (reactively compacted or reported), which is strictly better than a hang.
540
+ *
541
+ * The `compact` closure must call the model DIRECTLY, never through the graph, or the summariser's
542
+ * own call re-enters this hook.
543
+ */
544
+ export function createContextGuardMiddleware(options) {
545
+ // Whether the caller named a reserve, kept separately from its value: the two are clamped
546
+ // differently, and `reserve === DEFAULT_OUTPUT_RESERVE_TOKENS` cannot tell "chose the default"
547
+ // from "said nothing".
548
+ const reserveWasConfigured = typeof options.reserve === 'number';
549
+ const reserve = options.reserve ?? DEFAULT_OUTPUT_RESERVE_TOKENS;
550
+ const systemPromptCharacters = options.systemPromptCharacters ?? (() => 0);
551
+ const estimateTokens = options.estimateTokens ?? estimatePromptTokens;
552
+ return createMiddleware({
553
+ name: 'GthContextGuard',
554
+ beforeModel: {
555
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
556
+ hook: async (state) => {
557
+ const messages = Array.isArray(state?.messages) ? state.messages : [];
558
+ if (messages.length === 0)
559
+ return undefined;
560
+ let window = null;
561
+ try {
562
+ window = await options.windowSource();
563
+ }
564
+ catch {
565
+ /* a source that failed knows nothing, which is already the no-trigger answer */
566
+ }
567
+ const hasWindow = window !== null && Number.isFinite(window) && window > 0;
568
+ // **ONE trigger point, however it was decided.** EXT-161 lets the session or the config
569
+ // name it; absent both, it is the window less the answer reserve — EXT-160's original
570
+ // condition rearranged, not a second notion of "full". A guard that compared the estimate
571
+ // against a configured threshold AND against the window would hold two ideas of full that
572
+ // could disagree, which is the silently-wrong-threshold failure this feature exists to end.
573
+ let threshold = null;
574
+ if (options.thresholdSource) {
575
+ try {
576
+ threshold = await options.thresholdSource();
577
+ }
578
+ catch {
579
+ // A threshold that could not be resolved is not a threshold of zero; fall through to
580
+ // "nothing fires" and let the reactive seam catch an overflow if one comes.
581
+ threshold = null;
582
+ }
583
+ }
584
+ else if (hasWindow) {
585
+ threshold = defaultCompactionThreshold(window, reserve, reserveWasConfigured);
586
+ }
587
+ // The 4097 case: an unknown window yields no guard, never a guess. It reaches here as a
588
+ // null threshold, because nothing downstream of an unknown window can name a number.
589
+ if (threshold === null || !Number.isFinite(threshold) || threshold <= 0)
590
+ return undefined;
591
+ const estimate = estimateTokens(messages, systemPromptCharacters());
592
+ if (estimate <= threshold)
593
+ return undefined;
594
+ debugLog(`Context guard: estimated ${estimate} prompt tokens exceeds the ${threshold}-token ` +
595
+ `compaction threshold${hasWindow ? ` of a ${window}-token window` : ''}; compacting ` +
596
+ `before the call.`);
597
+ let result;
598
+ try {
599
+ result = await options.compact(messages);
600
+ }
601
+ catch (error) {
602
+ // A compaction that could not get a summary leaves the conversation alone and says so.
603
+ // Proceeding is right: the request may still succeed, and on a provider that throws, the
604
+ // reactive seam gets its turn.
605
+ debugLog(`Context guard: compaction failed, sending the request as it is: ${error instanceof Error ? error.message : String(error)}`);
606
+ return undefined;
607
+ }
608
+ if (!result.changed)
609
+ return undefined;
610
+ // EXT-161 — a feature nobody opted into must be able to say what it did, so the notice
611
+ // names the estimate, the threshold that was crossed and the window it came from.
612
+ options.onCompact?.(`Context is nearly full (about ${estimate} tokens, past the ${threshold}-token ` +
613
+ `compaction threshold${hasWindow ? ` for this model's ${window}-token window` : ''}), ` +
614
+ `so ${result.removedCount} earlier messages were folded into a summary before this ` +
615
+ `call. ${result.keptCount} kept verbatim.`);
616
+ // The same write shape GS2-23 uses: discard everything, keep what follows.
617
+ return {
618
+ messages: [new RemoveMessage({ id: REMOVE_ALL_MESSAGES }), ...result.messages],
619
+ };
620
+ },
621
+ },
622
+ });
623
+ }
298
624
  /**
299
625
  * Lean agent: builds a standard `createAgent` (ReAct) graph. All run/stream/event
300
626
  * plumbing lives in {@link GthAbstractAgent}; this class only knows how to construct
@@ -321,8 +647,12 @@ export class GthLangChainAgent extends GthAbstractAgent {
321
647
  // `debug` rung's preamble, and `none` silences both.
322
648
  this.compactHeaderStatus();
323
649
  this.headerStatus(`Workdir: ${getCurrentWorkDir()}`);
650
+ // CFG-38 — the `debug` rung's own `Model:` line, beside the `compact` rung's run header, which
651
+ // has carried the provider since GS2-95. The label is the shared `model (provider)` spelling,
652
+ // and the guard on `modelDisplayName` is unchanged, so a run with no model prints no line at
653
+ // all rather than a bare provider under a `Model:` label.
324
654
  if (this.config.modelDisplayName) {
325
- this.headerStatus(`Model: ${this.config.modelDisplayName}`);
655
+ this.headerStatus(`Model: ${modelProviderLabel(this.config.modelDisplayName, this.config.modelProviderType)}`);
326
656
  }
327
657
  // An empty allowedTools allow-list disables every tool. Skip resolution entirely so we
328
658
  // don't contact MCP servers (and trigger OAuth) just to discard the result.
@@ -578,6 +908,57 @@ export class GthLangChainAgent extends GthAbstractAgent {
578
908
  // [[EXT-159]] — HALT ends the run, so it owes a reason; WARN does not end anything and sets
579
909
  // none.
580
910
  (reason) => this.noteTermination(reason));
911
+ // EXT-160: the PRE-CALL context guard. Installed UNCONDITIONALLY, and inert on every provider
912
+ // no window source is wired for — `resolveContextWindowSource` answers `null` there, and a null
913
+ // window never triggers. Wiring it that way rather than behind an `if (provider === 'ollama')`
914
+ // is what makes "unknown window ⇒ no compaction" the production default for nine of ten
915
+ // providers instead of a path only a test ever walks, and leaves [[EXT-161]] a pure addition in
916
+ // one file.
917
+ //
918
+ // The summariser is bound DIRECTLY to the session model — `createModelSummarizer` calls
919
+ // `model.invoke`, not the graph — because a summary routed through the graph would re-enter
920
+ // this same `beforeModel` hook. The system prompt is read through a closure because the
921
+ // middleware array below is assembled before the prompt is composed further down.
922
+ let systemPromptCharacters = 0;
923
+ const sessionModel = this.config.llm;
924
+ // The output headroom the user actually configured, when they configured one: on ollama
925
+ // `num_predict` caps the generation, so it is the true answer budget and a better number than
926
+ // any default. Absent, the default stands.
927
+ //
928
+ // Both are clamped to a fraction of the window — that is what stops a small `num_ctx` reserving
929
+ // its whole budget — but not to the SAME fraction, and the difference is deliberate: a number
930
+ // the user set is honoured up to half the window, the default only to a quarter. So a
931
+ // configured `numPredict` can still be reduced, and above half the window it is.
932
+ const configuredNumPredict = sessionModel?.numPredict;
933
+ const reserveWasConfigured = typeof configuredNumPredict === 'number' && configuredNumPredict > 0;
934
+ const guardReserve = reserveWasConfigured
935
+ ? configuredNumPredict
936
+ : DEFAULT_OUTPUT_RESERVE_TOKENS;
937
+ // EXT-161 — ONE window resolution for the whole session, read two ways: the guard takes the
938
+ // bare number before every model call, `/status` takes the same number with its provenance.
939
+ // Built from the CONFIGURED provider namespace rather than the model class's `_llmType()`,
940
+ // which reports `openai` for huggingface and `google` for both Gemini providers and would
941
+ // therefore read the wrong models.dev slice or none at all.
942
+ const resolvedWindow = resolveContextWindow(sessionModel, {
943
+ providerId: this.config.modelProviderType,
944
+ modelId: sessionModel?.model ?? this.config.modelDisplayName,
945
+ });
946
+ // The `autocompact` key, defaulted at the READ SITE (on by default — ruled), so an absent key
947
+ // stays absent in the effective-config snapshot.
948
+ this.autocompact = new AutocompactController({
949
+ config: resolveAutocompactConfig(this.config?.autocompact),
950
+ window: resolvedWindow,
951
+ defaultThreshold: (window) => defaultCompactionThreshold(window, guardReserve, reserveWasConfigured),
952
+ });
953
+ const autocompact = this.autocompact;
954
+ const contextGuard = createContextGuardMiddleware({
955
+ windowSource: resolvedWindow.source,
956
+ thresholdSource: () => autocompact.threshold(),
957
+ compact: (messages) => compactMessages({ messages, summarize: createModelSummarizer(sessionModel) }),
958
+ systemPromptCharacters: () => systemPromptCharacters,
959
+ ...(reserveWasConfigured ? { reserve: configuredNumPredict } : {}),
960
+ onCompact: (message) => statusUpdate(StatusLevel.INFO, message),
961
+ });
581
962
  // EXT-52: gate the opt-in run_shell_command tool behind the per-command approval interrupt —
582
963
  // langchain's `humanInTheLoopMiddleware`. Without it,
583
964
  // no interrupt ever fires, so the runner's whole approval stack
@@ -671,6 +1052,11 @@ export class GthLangChainAgent extends GthAbstractAgent {
671
1052
  mcpToolErrorSoftening,
672
1053
  toolErrorBudget,
673
1054
  toolLoopGuard,
1055
+ // EXT-160: after the two guards and before user middleware. `beforeModel` hooks run forward
1056
+ // with `jumpTo` short-circuiting, so a run the error budget or the loop guard is about to end
1057
+ // never first pays for a summary call; and outboard of user middleware means it cannot be
1058
+ // bypassed, like its two siblings.
1059
+ contextGuard,
674
1060
  ...approvalMiddleware,
675
1061
  ...configuredMiddleware,
676
1062
  toolCallStatusMiddleware,
@@ -734,6 +1120,10 @@ export class GthLangChainAgent extends GthAbstractAgent {
734
1120
  ? []
735
1121
  : (this.resolvers?.getMcpServerInstructions?.() ?? []);
736
1122
  const systemPrompt = appendMcpServerInstructionsNote(modelContextPrompt, mcpInstructions);
1123
+ // EXT-160: the guard above reads this through its closure. `createAgent` applies the system
1124
+ // prompt on every call without ever putting it in `state.messages`, so without this the guard
1125
+ // would under-count each request by its largest single block.
1126
+ systemPromptCharacters = systemPrompt?.length ?? 0;
737
1127
  // Create agent with configured middleware. Only pass systemPrompt when non-empty so we never
738
1128
  // hand createAgent an empty system message.
739
1129
  this.agent = createAgent({
@@ -1 +1 @@
1
- {"version":3,"file":"GthLangChainAgent.js","sourceRoot":"","sources":["../../src/core/GthLangChainAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GthLangChainAgent.js","sourceRoot":"","sources":["../../src/core/GthLangChainAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * GS2-20 — **a conversation keeps its approval grants, so a resumed one gets them back.**
4
+ *
5
+ * The ruling this implements: from the agent's side a resume must look as though no interruption
6
+ * happened, and that covers what the session may already do without asking, not only what it can
7
+ * remember. So the grants a person made at the escalation menu — *approve for the session*, *deny
8
+ * always* whose project write did not land — are written against the conversation in the history
9
+ * store and loaded again when the conversation is resumed.
10
+ *
11
+ * **State the widening plainly, because a widening nobody notices is the failure mode:** a grant's
12
+ * lifetime is the CONVERSATION, not the process. Under `history.enabled: false` nothing is stored,
13
+ * so a grant then lives exactly as long as the process — which is also how long the conversation
14
+ * can live, since it cannot be resumed.
15
+ *
16
+ * **Only session-scoped grants travel this way.** An `always` grant is already in the project's
17
+ * allow-list / deny-list file and comes back from there on every run; storing it here too would
18
+ * make one decision two records that could disagree. The declared config lists are never grants and
19
+ * are never here.
20
+ *
21
+ * The document is one JSON object per conversation, in the same grant shape the project files use
22
+ * and read by the same {@link readGrant}, so a malformed entry is skipped the same way in both.
23
+ */
24
+ import type { HistoryConfigView } from '#src/history/historyEnabled.js';
25
+ import { type ApprovalGrant } from '#src/core/approvals/grants.js';
26
+ /** The session-scoped grants of one conversation: what it may run unasked, and what it refuses. */
27
+ export interface ConversationGrants {
28
+ /** Escalation-menu approvals — `[s]ession`, and an `[a]lways` whose file write did not land. */
29
+ allow: ApprovalGrant[];
30
+ /** Escalation-menu refusals — a `[d]eny always` whose file write did not land. */
31
+ deny: ApprovalGrant[];
32
+ }
33
+ /** A document with nothing in it, which is also what an absent or unreadable one reads as. */
34
+ export declare const NO_CONVERSATION_GRANTS: Readonly<ConversationGrants>;
35
+ /**
36
+ * Serialise the grants for storage. `null` when there is nothing to store, so a conversation that
37
+ * never granted anything keeps a NULL column rather than an empty document.
38
+ */
39
+ export declare function encodeConversationGrants(grants: ConversationGrants): string | null;
40
+ /**
41
+ * Parse a stored document. Anything that is not a readable v1 document — corrupt JSON, another
42
+ * shape, a future version — reads as no grants: a resume that cannot read them costs a re-prompt,
43
+ * never a grant the person did not make. A malformed entry inside a readable document is skipped
44
+ * on its own ({@link readGrant}), and every stored scope is forced back to `session`: that is the
45
+ * only scope this document holds, and a file that claimed otherwise would be describing the project
46
+ * store, which is not consulted here.
47
+ */
48
+ export declare function decodeConversationGrants(json: string | null): ConversationGrants;
49
+ /**
50
+ * Load the grants a conversation had, for a resume to restore. Empty when history is off, the
51
+ * store cannot be opened, the conversation has none, or the document cannot be read. Never throws.
52
+ */
53
+ export declare function loadConversationGrantsSafe(config: HistoryConfigView, conversationId: number): ConversationGrants;
54
+ /**
55
+ * Store the grants a conversation has now. Called by the session on every change to the runner's
56
+ * session-scoped grants, so the row is always the current set. A `conversationId` of `undefined`
57
+ * (history off, or the row could not be opened) is a no-op — there is nowhere to write, and that is
58
+ * the case where a grant correctly ends with the process. Never throws.
59
+ */
60
+ export declare function saveConversationGrantsSafe(config: HistoryConfigView, conversationId: number | undefined, grants: ConversationGrants): void;