Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
fc29226
more features
paulsonnentag Aug 14, 2026
a8c68f6
add copy-chat-history button to agent chat
paulsonnentag Aug 17, 2026
74914db
report original doc urls from agent tools, never draft clone urls
paulsonnentag Aug 17, 2026
dc8d7bb
hide merged drafts from the draft router
paulsonnentag Aug 17, 2026
596885c
add corkboard: a tldraw canvas wrapped in a provenance provider
paulsonnentag Aug 25, 2026
223e9e0
corkboard: register a tldraw5 llm:skill for the chat computer
paulsonnentag Aug 25, 2026
4dfef4f
chat: skills debug panel + mid-run skill activation
paulsonnentag Aug 25, 2026
9702e15
move provenance rendering into a corkboard-shipped codemirror extension
paulsonnentag Aug 25, 2026
80e4f7d
chat: add make_ref tool for granular ref urls
paulsonnentag Aug 25, 2026
b275cb1
corkboard: emphasise provenance sources when the focus holds their ta…
paulsonnentag Aug 25, 2026
7b469f5
corkboard: read provenance from @patchwork.provenance
paulsonnentag Aug 26, 2026
18fdc13
chat: multi-scenario agent runs on separate branches
paulsonnentag Aug 26, 2026
72cb771
exclude static-dist from watch's pnpm -r sweeps
paulsonnentag Aug 26, 2026
7177d71
Merge branch 'fix-watch-excludes-static-dist' into agent-chat
paulsonnentag Aug 26, 2026
136fa18
llm skill to create new docs in tldraw
mimireyburn Aug 26, 2026
0713f8c
Merge remote-tracking branch 'origin/agent-chat' into agent-chat
paulsonnentag Aug 27, 2026
7014aa2
csv: provenance-aware CSV viewer for file docs, as a standalone package
paulsonnentag Aug 27, 2026
79217bf
drafts: attribute merged drafts to dedicated timeline groups
paulsonnentag Aug 31, 2026
085454c
chat: record merge provenance when accepting agent drafts
paulsonnentag Aug 31, 2026
1861337
chat: pair tool results with the right cards, stretch stream timeout
paulsonnentag Aug 31, 2026
249c582
show diff by default when selecting something in the history
paulsonnentag Sep 1, 2026
9867ada
drafts: show comments as entries in the history timeline
paulsonnentag Sep 2, 2026
6694943
more draft fixes
paulsonnentag Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
777 changes: 777 additions & 0 deletions chat/src/agent-tool.tsx

Large diffs are not rendered by default.

495 changes: 458 additions & 37 deletions chat/src/components/ChatRoot.tsx

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions chat/src/components/InputArea.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {useChat} from "../context/ChatContext"
import {useIdentity} from "../context/IdentityContext"
import {usePresence} from "../context/PresenceContext"
import {generateId} from "../lib/helpers"
import {agentMessageMetadata} from "../lib/agent-drafts"
import {createFileDoc} from "../lib/file-helpers"
import {createLoadedPlugins} from "../lib/slots"
import {Slot, useSlotContext} from "../context/SlotContext"
Expand Down Expand Up @@ -443,6 +444,10 @@ export function InputArea(props: {
}
if (Object.keys(usedEmoticons).length > 0) msgData.emoticons = usedEmoticons

// Agent chats stamp their message docs with the drafts-skipped datatype
// (see lib/agent-drafts.ts) — a no-op spread for ordinary chats.
Object.assign(msgData, agentMessageMetadata(handle.doc()))

const msgHandle = await repo.create2(msgData)
handle.change((d: any) => {
if (!d.messages) d.messages = []
Expand Down
7 changes: 6 additions & 1 deletion chat/src/components/MessageBody.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {highlightCode} from "../lib/highlighter"
import {ensureFontLoaded} from "../lib/blob-cache"
import {resolveNamedColor} from "../lib/named-colors"
import {generateId} from "../lib/helpers"
import {agentMessageMetadata} from "../lib/agent-drafts"
import {useChat} from "../context/ChatContext"
import {useIdentity} from "../context/IdentityContext"
import {usePresence} from "../context/PresenceContext"
Expand Down Expand Up @@ -181,7 +182,10 @@ export function MessageBody(props: {
/>
</Show>
<Show when={props.msg.richBlocks?.length}>
<RichBlockList blocks={props.msg.richBlocks!} />
<RichBlockList
blocks={props.msg.richBlocks!}
messageUrl={props.msg._ref?.url}
/>
</Show>
<Show when={props.msg.quickReplies?.length}>
<QuickReplies options={props.msg.quickReplies!} />
Expand All @@ -205,6 +209,7 @@ function QuickReplies(props: {options: string[]}) {
name: myName(),
text: `@computer ${opt}`,
timestamp: Date.now(),
...agentMessageMetadata(handle.doc()),
}
const cu = myContactUrl()
if (cu) msgData.contactUrl = cu
Expand Down
Loading
Loading