Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
edec2ae
feat(logs-server): add runtime column (browser|node|edge) to telemetr…
DawidWraga Jun 3, 2026
64fa6fd
feat(logs-server): store web vitals + request on root span attrs
DawidWraga Jun 3, 2026
cbb1f3e
docs(logs-server): document root transaction metadata + tree CTE
DawidWraga Jun 3, 2026
df51308
chore(logs-server): changeset for runtime column + root-span vitals
DawidWraga Jun 3, 2026
675d99b
feat(logs-server): add view verb (nested trace waterfall + list/cross…
DawidWraga Jun 3, 2026
512b237
chore(release): @davstack/logs-server@2.9.0
DawidWraga Jun 3, 2026
e371689
docs(logs-server): clarify sqlite vs view (don't litter .md files); r…
DawidWraga Jun 3, 2026
0019d8a
fix(logs-server): view reads vitals from the pageload segment, not ju…
DawidWraga Jun 3, 2026
2ba15ff
chore(logs-server): changeset for view vitals-segment fix
DawidWraga Jun 3, 2026
14a7d3d
chore(release): @davstack/logs-server@2.9.1
DawidWraga Jun 3, 2026
9b9594c
feat(logs-server): add ./sink programmatic embed entry (openDb + hand…
DawidWraga Jun 6, 2026
c457ad5
docs: plan open agent handoff testing
DawidWraga Jun 8, 2026
de71620
docs: outline external handoff fixtures
DawidWraga Jun 8, 2026
9d2d8f9
feat: add davstack meta package
DawidWraga Jun 8, 2026
ff277cb
chore: commit davstack local state
DawidWraga Jun 8, 2026
e7ec693
docs: add multi-db notes
DawidWraga Jun 8, 2026
c6eb954
test: add open agents handoff eval smoke
DawidWraga Jun 8, 2026
17941b1
test: clean promptfoo fixture smoke runs
DawidWraga Jun 8, 2026
2c9fb01
docs: explain promptfoo handoff eval usage
DawidWraga Jun 8, 2026
017af66
docs: define handoff eval artifacts
DawidWraga Jun 8, 2026
debf81f
docs: prefer promptfoo-native eval results
DawidWraga Jun 8, 2026
47381fd
docs: make eval runs self contained
DawidWraga Jun 8, 2026
3ecb6e4
test: add open agents eval script
DawidWraga Jun 8, 2026
ec07e02
test: organize eval artifacts by case
DawidWraga Jun 8, 2026
d90b019
test: checkpoint llm judge eval spike
DawidWraga Jun 8, 2026
632846c
test: harden llm judge eval harness
DawidWraga Jun 8, 2026
1377f25
feat: add compact open-agents handoff mode
DawidWraga Jun 8, 2026
4ab91d0
feat: auto-detect compact history transcripts
DawidWraga Jun 8, 2026
b5a79a8
fix: keep compact spec handoff file-backed
DawidWraga Jun 8, 2026
23f7b2c
fix: improve compact-mode progress output
DawidWraga Jun 8, 2026
feb51f4
docs: guide skills toward compact handoffs
DawidWraga Jun 8, 2026
99b2847
chore: version open-agents compact release
DawidWraga Jun 8, 2026
3f92b2e
docs: clarify compact-mode usage
DawidWraga Jun 9, 2026
1ad337f
Add open-agents typecheck config
DawidWraga Jun 9, 2026
286a2ba
Support Codex compact history discovery
DawidWraga Jun 9, 2026
ebaa7e3
Add optional Headroom routing
DawidWraga Jun 9, 2026
458c0ec
Add open-agents changeset
DawidWraga Jun 9, 2026
e66bad6
chore: version open-agents headroom release
DawidWraga Jun 9, 2026
81da911
feat(context-compactor): add TS-native context compaction package
DawidWraga Jun 9, 2026
b3cbfe5
feat(open-agents): add Headroom proxy routing (compress + stats), def…
DawidWraga Jun 9, 2026
020c947
feat(open-agents): compact spec-writer history via @davstack/context-…
DawidWraga Jun 9, 2026
590ad67
chore(open-agents): remove Headroom proxy integration
DawidWraga Jun 9, 2026
4ec4a33
Update meta folder XML output
DawidWraga Jun 9, 2026
bca5af3
Version @davstack/meta to 0.1.1
DawidWraga Jun 9, 2026
50f1d6b
Release meta symbol line numbers
DawidWraga Jun 9, 2026
f988e55
Release repo-relative meta ranges
DawidWraga Jun 9, 2026
e08918a
Align meta folder paths with repo paths
DawidWraga Jun 9, 2026
0d29e67
Indent meta XML output
DawidWraga Jun 9, 2026
0aae471
Release refined meta indentation
DawidWraga Jun 9, 2026
139e383
Add meta output presets
DawidWraga Jun 9, 2026
ab48840
Release meta output defaults
DawidWraga Jun 9, 2026
d93f738
Release meta test call summaries
DawidWraga Jun 9, 2026
a9c9c83
Rename meta package to peek
DawidWraga Jun 9, 2026
c4cb6cb
Add peek file line counts
DawidWraga Jun 9, 2026
dfbd118
Improve peek help and scan speed
DawidWraga Jun 9, 2026
6310f6b
Fix peek published dependency range
DawidWraga Jun 9, 2026
1e81d36
Sort peek symbols by source line
DawidWraga Jun 9, 2026
7964765
Summarize TypeScript class methods in peek
DawidWraga Jun 9, 2026
c7eafa8
Release peek symbol method summaries
DawidWraga Jun 9, 2026
799078d
fix(explore skill): invoke global 'explore' binary, not 'npx explore'
DawidWraga Jun 10, 2026
83eea2c
release: context-compactor@0.2.0, open-agents@1.3.0
DawidWraga Jun 10, 2026
e4dfa23
release: tui@0.5.5 (dependent bump)
DawidWraga Jun 10, 2026
dffac9e
add notes
DawidWraga Jun 16, 2026
0ad389d
add fix at commits skill
DawidWraga Jun 16, 2026
5c4a33d
feat(fn): add @davstack/fn package
DawidWraga Jun 16, 2026
40b8db5
feat(fn)!: make core transport-agnostic
DawidWraga Jun 16, 2026
a5b6891
feat(try-catch): add @davstack/try-catch package
DawidWraga Jun 16, 2026
7f76113
feat(fn-trpc): add tRPC adapter for @davstack/fn
DawidWraga Jun 16, 2026
ba99cf3
feat(fn-orpc): add oRPC adapter for @davstack/fn
DawidWraga Jun 16, 2026
7da7448
chore: wire new fn packages into vitest workspace + lockfile
DawidWraga Jun 16, 2026
99503d0
docs(fn): document try-catch + tRPC/oRPC adapters
DawidWraga Jun 16, 2026
f899750
docs(fn): add design-decisions and oRPC-internals research notes
DawidWraga Jun 16, 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
5 changes: 5 additions & 0 deletions .changeset/fn-orpc-initial.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@davstack/fn-orpc": minor
---

Initial release: oRPC transport adapter for @davstack/fn — turn directly-callable fns into oRPC procedures via `initProcedureFactory`.
5 changes: 5 additions & 0 deletions .changeset/fn-trpc-initial.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@davstack/fn-trpc": minor
---

Initial release: tRPC adapter for `@davstack/fn` (`initProcedureFactory`), extracted from the core package.
16 changes: 16 additions & 0 deletions .changeset/fn-v2-transport-agnostic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
"@davstack/fn": major
---

**Breaking — core is now transport-agnostic with zero runtime dependencies.**

- **Removed `.safeCall`.** Wrap a direct call with `tryCatch` from the new
`@davstack/try-catch` package to get a `{ data, error }` result instead of a throw:
`const { data, error } = await tryCatch(() => myFn({ input, ctx }))`.
- **Removed the `Result` type** (it now lives in `@davstack/try-catch`).
- **Extracted the tRPC adapter (`initProcedureFactory`) to the new `@davstack/fn-trpc`
package.** Install `@davstack/fn-trpc` and import `initProcedureFactory` from there.
- **Removed the `pipe` export** (dead code inherited from the old `store` package; the
middleware array is strictly more capable).
- **Dropped `@trpc/server` and `superjson` from dependencies** (`superjson` was unused;
tRPC moved to `@davstack/fn-trpc`).
5 changes: 5 additions & 0 deletions .changeset/try-catch-initial.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@davstack/try-catch": minor
---

Initial release: `tryCatch(promiseOrThunk)` returns a `{ data, error }` result instead of throwing. Zero dependencies.
Binary file added .davstack/logs/default.db
Binary file not shown.
Binary file added .davstack/logs/default.db-shm
Binary file not shown.
Binary file added .davstack/logs/default.db-wal
Binary file not shown.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,8 @@ server/dist
public/dist
.turbo
coverage
/temp
.folder-meta.generated.md
.folder-peek.generated.md
.davstack/evals/
/temp
paper.md
90 changes: 90 additions & 0 deletions feedback/explore-compact-vs-file.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
Reflections from running `explore` BOTH ways on the *same* task in one session, so this is a
controlled A/B, not two unrelated jobs. Task: "produce a completion / gap-map for the
enum-contains workstream — what's done vs outstanding vs superseded, judged against the actual
code." I ran `--file <spec>` and `--compact-mode "map remaining enum-contains work against what
we implemented"` back-to-back against an identical repo state, then diffed the two deliverables.
Verdict up front: **for this task `--file` was the better output, but the reason is instructive
and the two are genuinely complementary — neither alone was complete.**

## What each produced

- **`--file`** (scoped spec; I hand-wrote goal + the one supersession gotcha + the
committed-vs-uncommitted facts + explicit path scope): ~480-line gap-map grouped by workstream,
dual-sided evidence (the doc that states a goal AND the code path:line that does/doesn't satisfy
it), explicit DONE/PARTIAL/OUTSTANDING/SUPERSEDED labels, plus a supersession table.
- **`--compact-mode`** (5-word inline, distilled the spec from the live transcript): one tight
status matrix + thematic evidence blocks. Leaner, faster to read.

## The deciding difference: coverage mirrors the context source

This is the real finding, and it predicts when to use which:

- **`--file` covers what you point it at.** I scoped it to read `constraints/` source, so it found
the highest-value item in the whole audit: an existing unit test
(`test_substring_operator_rejected_when_allowed_values_present[contains]`) that the proposed
change **breaks** — a concrete ship blocker. I verified it; it does fail. Nothing in our
conversation had mentioned that test, so it could only be found by *systematically reading the
code*, which is exactly what a path-scoped spec forces.

- **`--compact-mode` covers what the conversation knows.** It distilled the transcript, so it was
excellent at surfacing a *tension already latent in the discussion*: it independently flagged the
n=25-vs-r10 contradiction (baseline VSL 25/25→72 in one doc, 9/10→188 in another) as
"reconcile". That's a synthesis catch — it connected two things we'd touched. But it **missed the
breaking test**, because that test was never in the transcript.

So the blind spots are symmetric and predictable: compact can't catch what wasn't discussed; file
can't catch what you didn't scope. For a **completion/ship audit** — where unknown blockers and
systematic coverage are the whole point — `--file` wins. For a **"where do we stand / what's
inconsistent"** read, compact wins and at ~10× lower authoring effort (5 words vs a 40-line spec).

## What compact got for free that file made me re-type

Worth calling out for the SKILL.md guidance: the spec gotcha I most cared about — "later docs
supersede earlier ones, here's the implementation reality" — compact inherited *for free* from the
transcript. For `--file` I had to hand-write all of it into the spec, and if I'd forgotten the
supersession note the file agent would have reported stale doc TODOs as open work. So the existing
guidance ("prefer compact when the conversation already has the context") is right and earns its
keep — compact is lower-effort AND less error-prone *for the context it can see*. The catch is only
coverage of things outside the transcript.

## Recommendations for the skill

1. **Document the coverage-vs-context tradeoff explicitly in SKILL.md.** Current guidance frames
compact-vs-file as "is the context already in the conversation?" That's necessary but not
sufficient. Add: *compact's coverage is bounded by the transcript — it will not find blockers in
code that wasn't discussed. For completeness/audit/"did we miss anything" tasks, use `--file`
with explicit code scope, or run both.*

2. **Offer a hybrid: `--compact-mode --also-scan <paths>`.** The ideal for this task was compact's
free transcript context PLUS a forced systematic read of named files. Today I had to choose. A
compact run that ALSO guarantees coverage of explicitly-named paths would have caught both the
contradiction and the breaking test in one job.

3. **Running both is a cheap power-move — make it a documented pattern.** Two jobs on one task cost
little and the outputs covered each other's blind spots (file found the blocker, compact found
the contradiction). A one-liner in SKILL.md ("for high-stakes audits, fan out one compact + one
scoped file and diff them") would surface this.

4. **For the deliverable shape: `--file`'s dual-sided evidence (doc-claim path:line + code-reality
path:line, side by side) is the more verifiable format** and should be the default the
spec-writer aims for, because it lets the caller re-derive each verdict in one click instead of
trusting a synthesis sentence.

## Tool friction hit along the way (secondary, but worth fixing)

- **The installed `.claude/skills/explore` copy was stale** — it pointed at an old
`bun .../scripts/explore.ts` CLI that rejected my inline `<goal>` with "shell-hostile chars" and
swept "stray 0-byte .test.ts litter". The real entrypoint is the global `explore` bin from
`@davstack/open-agents`. `npx explore` also failed ("could not determine executable"). A user
following SKILL.md's `npx explore submit` verbatim hits a dead end; the working invocation
(global bin, or pnpm-linked local) isn't obvious. Worth a one-line "if `npx explore` fails, the
bin is `@davstack/open-agents` — install/link it" note.
- **Inline single-fact form `'<goal>..</goal> <scope>..</scope>'` is fragile** — the `<>?()` chars
trip a shell-hostility guard, so the documented single-fact path effectively forces you to
compact-mode or `--file` anyway. Either escape-handle it or drop the inline-tags form from the
docs.

Net: both modes are good; the choice is "transcript-synthesis (compact, cheap)" vs
"systematic-coverage-of-scoped-code (file, thorough)", and for anything where *missing something is
the failure mode*, file — or both. The single most valuable upgrade would be letting compact-mode
also take explicit `--also-scan` paths so you stop having to choose.
90 changes: 90 additions & 0 deletions notes/davstack-peek/1-initial-concept.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Davstack Peek Initial Concept

Idea: add a small package/CLI, `@davstack/peek`, that prints concise
folder-level peek files for agents.

## Motivation

Agents often need a quick map of a folder before deciding what to read. Full
recursive exploration can burn tokens and time. A generated metadata file could
act like a compact table of contents for source and docs.

## Possible CLI

```text
npx @davstack/peek ./path-to-folder
npx @davstack/peek ./path-to-folder --agent
npx @davstack/peek ./path-to-folder --human
```

## `gen`

`gen` scans a folder and writes a concise generated markdown file in that
folder, likely something like `.folder-peek.generated.md`.

Initial scope:

- Include markdown, TypeScript, and Python files.
- Skip files ignored by git.
- Skip generated peek files themselves.
- Prefer concise structural summaries over content summaries.

For markdown:

- Include file path.
- Include headings.

For TypeScript:

- Include exported functions, classes, types, interfaces, consts, and important
non-exported top-level symbols.
- Possibly include JSDoc in a longer mode.

For Python:

- Include functions, classes, constants, and module docstring where useful.

## Peek

The CLI prints existing peek output for a folder. If the peek file does not
exist, it can generate it on the spot.

`--deep` could recursively include child folder output, either by generating
missing child files or by doing a direct recursive scan.

## Output Shape

Experiment with XML-ish blocks because agents parse them well:

```xml
<folder path="packages/open-agents/src">
<file path="cli.ts">
<exports>
<function name="main" />
<function name="parseFlags" />
</exports>
</file>
</folder>
```

There may be two useful output levels:

- Short: names and headings only.
- Long: names, signatures, JSDoc/docstrings, and maybe one-line comments.

## Git Hygiene

Generated peek files should probably be gitignored by default. The package
could also provide a recommended `.gitignore` entry.

## Agent Workflow

An agent can run:

```text
npx @davstack/peek packages/open-agents/src --deep
```

Then use the output as a cheap routing map before opening source files. This
could pair well with open-agent handoff testing because history/context pointers
are more useful when agents can cheaply inspect repo structure too.
Loading