UNPKG

agentfootprint

Version:

The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.

62 lines • 3.17 kB
"use strict"; /** * presentTool — the SHELL of the auto-attached `present` tool (9.22.0). * * Pattern: the `skip_step` placeholder, exactly. The tool here carries the * schema the model reads; the AUTHORITATIVE work — `head` the ref under the * run's scope, compose the description-snapshot result, emit * `agentfootprint.artifacts.presented` — lives in the tool-calls stage * (`applyPresent` in `stages/toolCalls.ts`), which OVERWRITES this * placeholder's result. Bookkeeping lives where the batch order lives: the * stage owns the scope, the store, and the typed emit channel; a tool's * execute owns none of them. * * Attached by `buildToolRegistry` ONLY when a store is attached (the * `read_skill` seam): a storeless agent never sees the tool, never reserves * the name, and is byte-identical. * * The pure half — `PRESENT_TOOL_NAME`, `presentArtifact`, the snapshot * shapes — lives in `src/artifacts/present.ts`, which cannot import core. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.buildPresentTool = void 0; const present_js_1 = require("../../artifacts/present.js"); const tools_js_1 = require("../../tools/tools.js"); // LENS · tool-description · request-ephemeral // reads: the declared shell only; the artifact facts are read at dispatch by src/artifacts/present.ts // law: may omit, never deny; every clause anchored to the call it was composed on. /** Build the placeholder `present` tool. See the module header. */ function buildPresentTool() { return (0, tools_js_1.defineTool)({ name: present_js_1.PRESENT_TOOL_NAME, description: 'Hand a stored artifact to the screen instead of writing its contents out. Pass the ' + "art_… ref and say how to render it (as: 'bar-chart', 'table', 'image', …); the " + 'screen redeems the ref itself. Use this to finish an answer whose substance is data ' + 'you stored — never retype what the store already holds.', inputSchema: { type: 'object', properties: { ref: { type: 'string', description: 'The art_… ref of the stored artifact to present.', }, as: { type: 'string', description: "Consumer vocabulary for how the screen should render it: 'bar-chart', 'table', " + "'image', 'markdown', … Say what it is; the screen picks the renderer.", }, label: { type: 'string', description: "Optional human title for this presentation (e.g. 'Q3 sales by region').", }, }, required: ['ref', 'as'], additionalProperties: false, }, execute: () => 'present noted. (Raw placeholder — the agent loop replaces this result with the ' + 'description snapshot; reading it verbatim means the runner that dispatched present ' + 'has no artifact store behind it.)', }); } exports.buildPresentTool = buildPresentTool; //# sourceMappingURL=presentTool.js.map