feat(sources v1): the agent locates files itself — ls/find/grep + tool-call cards
User pivot (2026-09-19): no attachments UI at all. Pasting paths is native for technical users and alien for everyone else - so the agent gets the tools to find what the learner merely NAMES. The learner communicates in messages; the agent locates and reads. Zero cross-stream seams: paths already live in tool parts, so the sources "list" is the transcript. - ls/find/grep: pi-verbatim schemas, descriptions, and output formats (fd's glob semantics, rg's path:line: match format, pi's truncation notices), ported to pure Node - no binaries, no shell-out, read-only by construction. Deltas from pi: home-anchored resolution (the harness has no cwd), .gitignore replaced by hard noise exclusions (node_modules/.git/Library/.Trash), 10s walk timeout with partial results. - read: description swapped to pi-verbatim (doctrine moved to the prompt); relative paths now resolve against the learner's home like the rest. - prompts/shared/05-learner-files.md: one minimal doctrine fragment composed into BOTH agents (composeInstructions grew a shared/ dir, before the agent's own fragments). teacher/30-jobs.md keeps only the pdf-dispatch addendum. - ToolCallCard: the generic quiet tool-call card the user specced - collapsed one-liner (tool name + headline argument), expandable to full input/output, errors red, image payloads never render. Registered for read/ls/find/grep. - ui-message.ts: TeacherUITools entries for the four tools (mechanical). - tests: fs-tools suite (glob semantics, pi formats, exclusions, limits), registry/card renders, shared-fragment composition pins, tool-registry key updates, read re-anchor.
This commit is contained in:
@@ -4,6 +4,7 @@ import { DemoCard } from "@/components/artifacts/demo-card";
|
||||
import { JobCard, PdfJobCard } from "@/components/artifacts/job-card";
|
||||
import { VisualCard } from "@/components/artifacts/visual-card";
|
||||
import { ProbeDoneCard } from "@/components/artifacts/probe-done-card";
|
||||
import { ToolCallCard } from "@/components/artifacts/tool-call-card";
|
||||
|
||||
/**
|
||||
* Artifact renderer registry — the extension point for tool-part UI.
|
||||
@@ -29,4 +30,11 @@ export const artifactRenderers: Record<string, ComponentType<ArtifactPartProps>>
|
||||
// The probe conclusion: the assessment belongs to the learner as much as
|
||||
// to the transcript (docs/probe-teach-split.md §2). Plain v1 card.
|
||||
probe_done: ProbeDoneCard,
|
||||
// The learner-filesystem set (sources v1): one quiet expandable
|
||||
// tool-call card each — collapsed one-liner (tool name + headline
|
||||
// argument), full input/output on expand.
|
||||
read: ToolCallCard,
|
||||
ls: ToolCallCard,
|
||||
find: ToolCallCard,
|
||||
grep: ToolCallCard,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user