char-slop/berry

multipurpose self-modifiable agentic harness

git clone https://git.t4t.associates/char-slop/berry

Charlotte Somdiff: add (codemirror) inline editing of diffsc5dd844

main
1.2 KiB47 linesraw
1import { defineRenderers, type HeaderContext } from "@berry/api/web.ts";
2import { recoverClosed } from "./drafts.ts";
3import type { Event } from "./edit-types.ts";
4import { diffView } from "./view.tsx";
5import "./web.css";
6
7export default defineRenderers<Event>({
8  view: { label: "diff", create: diffView },
9  header() {
10    const element = document.createElement("span");
11    let context: HeaderContext;
12    let tid: string | null = null;
13    let disposed = false;
14    async function retry() {
15      element.replaceChildren();
16      try {
17        await recoverClosed(context);
18      } catch {
19        if (disposed) return;
20        element.append(
21          <button type="button" _onclick={() => void retry()}>retry edit report</button>,
22        );
23      }
24    }
25    return {
26      element,
27      update(next) {
28        context = next;
29        if (tid !== next.tid) {
30          tid = next.tid;
31          void retry();
32        }
33      },
34      dispose() {
35        disposed = true;
36      },
37    };
38  },
39  event(event) {
40    if (event.type === "saved" || !event.paths.length) return null;
41    return (
42      <p class="diff-edit-report">
43        Human edits saved: {event.paths.join(", ")}. Available as context for the next turn.
44      </p>
45    );
46  },
47});