import { aggregatePatterns } from "../../application/patterns/aggregate-patterns.js"; import { JsonlStoreAdapter } from "../../infrastructure/adapters/jsonl/jsonl-store.adapter.js"; import { type CommandSchema, parseFlags } from "../utils/flag-parser.js"; import { OBSERVATIONS_DIR, isOk } from "@tff/core"; export const patternsAggregateSchema: CommandSchema = { name: "patterns:aggregate", purpose: "Aggregate patterns by frequency", mutates: true, requiredFlags: [], optionalFlags: [ { name: "min-count", type: "number", description: "Minimum count threshold (default: 3)", }, ], examples: ["patterns:aggregate", "patterns:aggregate --min-count 5"], }; export const patternsAggregateCmd = async (args: string[]): Promise => { const parsed = parseFlags(args, patternsAggregateSchema); if (!parsed.ok) { return JSON.stringify(parsed); } const minCount = (parsed.data["min-count"] as number | undefined) ?? 3; const store = new JsonlStoreAdapter(OBSERVATIONS_DIR); const patternsResult = await store.readPatterns(); if (!isOk(patternsResult)) return JSON.stringify({ ok: false, error: patternsResult.error }); const result = aggregatePatterns(patternsResult.data, { minCount }); await store.writePatterns(result); return JSON.stringify({ ok: true, data: result }); };