feat: add scoped history and artifacts
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
import { tool } from "../tool.js";
|
||||
import { getInternalBridgeConfig } from "../internalBridge.js";
|
||||
import { taskPublicationDiagramSchema } from "./task-publication-schema.js";
|
||||
import { taskPublicationDiagramSchema, taskReportUiBlocksSchema } from "./task-publication-schema.js";
|
||||
import catalog from "../../src/chat/answer-ui-catalog.json" with { type: "json" };
|
||||
|
||||
export default tool({
|
||||
description: "Publish an evidence-backed investigation report. No todo or execution plan is required. An optional Mermaid diagram explains the investigation to people; it never schedules or completes work. Before proposing actions publish an interim concluded report, then publish a final report referencing the actual actions. Missing critical data ends the round with final insufficient_data and blocking gaps, no recommendations or pending items. Query failures are execution errors, not proof that data is absent. The run lifecycle endpoint settles execution independently of the diagram.",
|
||||
description: "Publish an evidence-backed investigation report. No todo or execution plan is required. An optional Mermaid diagram explains the investigation to people; it never schedules or completes work. Before proposing actions publish an interim concluded report, then publish a final report referencing the actual actions. Missing critical data ends the round with final insufficient_data and blocking gaps, no recommendations or pending items. Query failures are execution errors, not proof that data is absent. The run lifecycle endpoint settles execution independently of the diagram. Optional ui_blocks express evidence as interactive metrics, charts, tables and forms. Each block references saved report evidence, has a unique block_id and a text fallback. Maximum 8 blocks / 400 KB total. Do not duplicate the conclusion or invent data to fill a layout. Component property schemas: " + JSON.stringify(catalog.props),
|
||||
args: {
|
||||
request_id: tool.schema.string().describe("Stable UUID idempotency key for this report revision"),
|
||||
report: tool.schema.object({
|
||||
@@ -27,6 +28,7 @@ export default tool({
|
||||
blocking: tool.schema.boolean(),
|
||||
})),
|
||||
diagram: taskPublicationDiagramSchema.nullish(),
|
||||
ui_blocks: taskReportUiBlocksSchema,
|
||||
}),
|
||||
evidence: tool.schema.array(tool.schema.object({
|
||||
evidence_id: tool.schema.string(),
|
||||
|
||||
@@ -6,6 +6,23 @@ const text = tool.schema.string().trim().min(1);
|
||||
const identifier = text.max(128);
|
||||
const layer = tool.schema.enum(["junctions", "pipes", "valves", "pumps", "tanks", "reservoirs", "scada"]);
|
||||
|
||||
export const taskReportUiBlocksSchema = tool.schema.array(tool.schema.object({
|
||||
block: tool.schema.object({
|
||||
version: tool.schema.literal("answer-ui@1"),
|
||||
block_id: tool.schema.string().regex(/^[a-zA-Z0-9_-]{1,80}$/),
|
||||
fallback_text: text.max(4000),
|
||||
spec: tool.schema.object({
|
||||
root: tool.schema.string(),
|
||||
elements: tool.schema.record(tool.schema.string(), tool.schema.object({
|
||||
type: tool.schema.string(),
|
||||
props: tool.schema.record(tool.schema.string(), tool.schema.unknown()),
|
||||
children: tool.schema.array(tool.schema.string()).max(48),
|
||||
}).strict()),
|
||||
}).strict(),
|
||||
}).strict(),
|
||||
evidence_refs: tool.schema.array(identifier).min(1).max(100),
|
||||
}).strict()).max(8).optional();
|
||||
|
||||
export const taskPublicationDiagramSchema = tool.schema.object({
|
||||
title: text,
|
||||
mermaid: text.max(20000).describe("Mermaid flowchart source; no Markdown fences, initialization directives or click callbacks"),
|
||||
|
||||
Reference in New Issue
Block a user