agentfootprint
Version:
The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.
41 lines • 2.04 kB
JavaScript
;
/**
* compaction/errors — the one refusal compaction makes out loud.
*
* Pattern: Typed terminal error (peer of PolicyHaltError).
* Role: core/ layer.
* Emits: N/A.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.CompactionUnmeasurableError = void 0;
/**
* Thrown when compaction is configured but the provider reports no token
* usage, so the threshold cannot be COUNTED.
*
* Compaction is counted, not guessed. Given a provider that reports nothing,
* the library has three options: guess the window size (a lie), silently do
* nothing (a configured budget that never applies — config that lies), or say
* so. It says so, by name, at the first iteration boundary where a completed
* call reported zero tokens in AND zero out.
*
* Terminal: `Agent.run` does not wrap this in `RunCheckpointError`, because
* resuming would walk into the same wall with the same provider.
*/
class CompactionUnmeasurableError extends Error {
name = 'CompactionUnmeasurableError';
/** `provider.name` of the adapter that reported nothing. */
provider;
constructor(provider) {
super(`Compaction is counted, not guessed: provider '${provider}' reported 0 input and 0 output ` +
`tokens for the last call, so the window cannot be measured against thresholdTokens. ` +
`Compaction refuses rather than guess the size of the window or leave a configured ` +
`budget silently unenforced. Fixes: use a provider that reports usage (anthropic, ` +
`openai, bedrock, ollama and the mock provider all do), or remove .compaction() from ` +
`this agent. Note that an OpenAI-COMPATIBLE endpoint reached through openai({ baseURL }) ` +
`may not send usage while streaming — for a local model, ollama() talks the native API ` +
`and always reports it.`);
this.provider = provider;
}
}
exports.CompactionUnmeasurableError = CompactionUnmeasurableError;
//# sourceMappingURL=errors.js.map