Store agent logs in per-task JSONL files instead of the legacy SQLite table. - add a file-backed agent log store with JSONL append/read/prune helpers and task-scoped source refs - migrate legacy SQLite agentLogEntries data into task files, rewrite goal citation references, and preserve soft-deleted logs for forensics - update task store, settings, docs, dashboard route coverage, and add regression tests for migration, retention, and log access Files changed: .changeset/fn-5911-agent-log-jsonl.md | 5 + AGENTS.md | 2 +- docs/diagnostics.md | 2 +- docs/settings-reference.md | 2 + docs/soft-delete-verification-matrix.md | 7 +- docs/storage.md | 8 +- .../src/__tests__/agent-log-file-store.test.ts | 123 ++++++ .../core/src/__tests__/agent-log-migration.test.ts | 186 +++++++++ .../core/src/__tests__/agent-log-retention.test.ts | 208 ++++++++++ packages/core/src/__tests__/db-migrate.test.ts | 14 +- packages/core/src/__tests__/db.test.ts | 39 +- .../src/__tests__/goal-citations-store.test.ts | 38 +- packages/core/src/__tests__/goals-schema.test.ts | 2 +- packages/core/src/__tests__/insight-store.test.ts | 10 +- .../src/__tests__/merge-request-record.test.ts | 2 +- packages/core/src/__tests__/mission-store.test.ts | 2 +- packages/core/src/__tests__/run-audit.test.ts | 2 +- packages/core/src/__tests__/secrets-schema.test.ts | 6 +- .../src/__tests__/soft-delete-agent-logs.test.ts | 71 ++-- .../src/__tests__/store-agent-log-file.test.ts | 91 +++++ .../core/src/__tests__/store-merge-queue.test.ts | 2 +- packages/core/src/__tests__/store-test-helpers.ts | 43 +- packages/core/src/__tests__/store-upsert.test.ts | 37 +- packages/core/src/__tests__/task-documents.test.ts | 2 +- packages/core/src/agent-log-constants.ts | 25 ++ packages/core/src/agent-log-file-store.ts | 267 ++++++++++++ packages/core/src/db.ts | 51 ++- packages/core/src/settings-schema.ts | 1 + packages/core/src/store.ts | 453 ++++++++++++--------- packages/core/src/types.ts | 10 +- .../__tests__/agent-log-routes.integration.test.ts | 48 +++ .../src/__tests__/evaluator-evidence.test.ts | 47 ++- packages/engine/src/self-healing.ts | 12 + .../src/store/__tests__/roadmap-store.test.ts | 4 +- 34 files changed, 1477 insertions(+), 345 deletions(-) Fusion-Task-Id: FN-5911 Fusion-Task-Lineage: 07c42f3a-87cf-4558-8f01-ac8460b5558b
26 lines
919 B
TypeScript
26 lines
919 B
TypeScript
import type { AgentLogEntry } from "./types.js";
|
|
|
|
export const AGENT_LOG_FILENAME = "agent-log.jsonl";
|
|
export const AGENT_LOG_TOOL_DETAIL_LIMIT = 4_096;
|
|
export const AGENT_LOG_TOOL_DETAIL_TRUNCATION_NOTICE =
|
|
"\n\n[tool output truncated to keep dashboard log views responsive]";
|
|
export const AGENT_LOG_TOOL_TYPES = new Set<AgentLogEntry["type"]>([
|
|
"tool",
|
|
"tool_result",
|
|
"tool_error",
|
|
]);
|
|
|
|
export function truncateAgentLogDetail(
|
|
detail: string | null | undefined,
|
|
type: AgentLogEntry["type"],
|
|
): string | undefined {
|
|
if (detail == null) return undefined;
|
|
if (!AGENT_LOG_TOOL_TYPES.has(type)) return detail;
|
|
if (detail.length <= AGENT_LOG_TOOL_DETAIL_LIMIT) return detail;
|
|
return `${detail.slice(0, AGENT_LOG_TOOL_DETAIL_LIMIT)}${AGENT_LOG_TOOL_DETAIL_TRUNCATION_NOTICE}`;
|
|
}
|
|
|
|
export function buildAgentLogSourceRef(taskId: string, lineNo: number): string {
|
|
return `agentLog:${taskId}:${lineNo}`;
|
|
}
|