Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
016e742
fix: Claude adapter silently broken + UX fixes
Apr 14, 2026
24763b0
sort timeline by event timestamp (newest first)
Apr 14, 2026
733d46a
TUI: sticky column header + alt screen buffer
Apr 14, 2026
b74188b
q quits instantly (force process.exit after Ink unmount)
Apr 14, 2026
fb95ca5
extract real content from Claude tool_use + suppress empty events
Apr 14, 2026
f846662
bump to 0.0.2 with all dogfood fixes
Apr 14, 2026
dc6d3c2
permission view: extend to Cursor + OpenClaw
Apr 14, 2026
03c3ac4
fix: capture subagent (Task/Agent tool) jsonl files
Apr 14, 2026
3fd0883
feat(M4): event detail pane — Enter shows full content
Apr 14, 2026
38dc890
feat(M4): in-buffer full-text search — hotkey /
Apr 14, 2026
81466f9
feat(M4): per-session cost with cache-hit accounting
Apr 14, 2026
bb00cb2
feat(M4): pair tool_use with tool_result — duration + output + error …
Apr 14, 2026
2defca9
feat(M4): subagent drilldown — x to scope timeline to a subagent run
Apr 14, 2026
7e69b95
feat(M4): inline tool expansion — ▸/▾ to drill in without leaving the…
Apr 14, 2026
04d2a49
feat(M4): projects grid view — P to open
Apr 14, 2026
623006b
revert inline tool expansion — full-screen Enter pane is the only dri…
Apr 14, 2026
b99baed
fix: q quits reliably + permissions view scrollable
Apr 14, 2026
5043232
feat(M4): sessions list + scoped session timeline
Apr 14, 2026
bddc363
fix(M4): dedupe fs-watcher against agent-attributed writes
Apr 14, 2026
5adf9dc
feat(M4): y to yank selected event content to clipboard
Apr 14, 2026
fee25ac
feat(M4): native OS notifications on sensitive events
Apr 14, 2026
e36d447
fix: clipboard + notifier spawnSync inside Ink raw-mode TTY
mishanefedov Apr 14, 2026
efd8233
fix: typecheck — cast stdio array to mutable tuple for spawnSync
mishanefedov Apr 14, 2026
52b9294
feat(M4): ? help overlay
mishanefedov Apr 14, 2026
394dec5
launch polish: README rewrite + CONTRIBUTING + SECURITY + CODE_OF_CON…
mishanefedov Apr 14, 2026
dcbedc8
chore: flesh out 0.0.2 changelog for launch
mishanefedov Apr 14, 2026
216ae9d
chore: remove launch-posts gitignore entry
mishanefedov Apr 14, 2026
3f8f16f
feat(M3.5): Gemini CLI adapter — parse ~/.gemini/tmp/**/chats/*.json
mishanefedov Apr 14, 2026
8d49112
feat(M3.5): expand detection to 10 agents + honest 'not instrumented'…
mishanefedov Apr 14, 2026
7fd4874
chore: remove better-sqlite3 — no live Cursor data to verify against
mishanefedov Apr 14, 2026
04dca1b
feat(M3.5): edge-case hardening pass
mishanefedov Apr 14, 2026
4ddede6
docs(M3.5): feature specs (docs/features/*.md)
mishanefedov Apr 14, 2026
63e5ff0
docs(M3.5): test procedures (docs/testing/*.md)
mishanefedov Apr 14, 2026
35c10bf
docs(M3.5): use case narratives (docs/use-cases/*.md)
mishanefedov Apr 14, 2026
a5bd5d2
refactor(M3.5): adapter registry — stop App.tsx from growing per adapter
mishanefedov Apr 14, 2026
e8934a3
ui: drop cost line from the agent side panel
mishanefedov Apr 14, 2026
087825e
fs-watcher: ignore .cast / .ttyrec / docs/demo.* recording artifacts
mishanefedov Apr 14, 2026
81d0ba0
chore: untrack docs/demo.cast — personal paths shouldn't live in the …
mishanefedov Apr 14, 2026
b435b9c
feat: 4 MB backfill window (was 64 KB) + daemon-vs-viewer docs
mishanefedov Apr 14, 2026
63e972e
docs: add demo GIF
mishanefedov Apr 14, 2026
b07b748
feat(M5): stale-session detection — grey out rows idle >5 min
mishanefedov Apr 15, 2026
26b10a4
feat(M5): export session to markdown + JSON (hotkey e)
mishanefedov Apr 15, 2026
ce928a8
feat(M5): syntax highlighting in event detail pane
mishanefedov Apr 15, 2026
8d85f06
feat: codex adapter — parse ~/.codex/sessions rollout jsonl
mishanefedov Apr 15, 2026
c0657cc
feat(M5): emit compaction events — timeline markers for context resets
mishanefedov Apr 15, 2026
64a5dfb
feat(M5): token attribution view — hotkey t inside a scoped session
mishanefedov Apr 15, 2026
d3db29d
feat(M6): user-defined notification triggers
mishanefedov Apr 15, 2026
081f026
feat(M6): budget alarms — per-session + per-day cost caps
mishanefedov Apr 15, 2026
b3285a3
feat(M6): MCP server mode — agents can query their own history
mishanefedov Apr 15, 2026
62ce4d8
feat(M6): cross-session search — hotkey ? for ripgrep-fast history se…
mishanefedov Apr 15, 2026
e3b0786
feat(M6): OTel exporter — AGENTWATCH_OTLP_ENDPOINT emits spans per event
mishanefedov Apr 15, 2026
1a01ac6
feat(M7): anomaly detection — MAD z-score + stuck-loop + banner + tim…
mishanefedov Apr 15, 2026
ac9354d
feat(M7): anomaly detection — production-grade follow-up
mishanefedov Apr 15, 2026
4e9313c
chore(scope-fixes): finish unfinished scope on AUR-179, AUR-176, AUR-175
mishanefedov Apr 15, 2026
ae1550c
feat(M5): compaction visualizer — real context-fill bar (AUR-161)
mishanefedov Apr 15, 2026
954e87e
feat(M5): real per-turn token attribution (AUR-162)
mishanefedov Apr 15, 2026
120d218
feat(M6): OTel spans use gen_ai.* semantic conventions (AUR-177)
mishanefedov Apr 15, 2026
1c46f4e
feat: multi-agent parity pass — memory files, Codex tokens, Gemini se…
mishanefedov Apr 15, 2026
1a28198
feat: Codex + Gemini + OpenClaw parity pass (AUR-187)
mishanefedov Apr 15, 2026
37a17fe
feat: Codex + Gemini + OpenClaw → ~100% parity with Claude (AUR-187)
mishanefedov Apr 15, 2026
60d91ff
readme update
mishanefedov Apr 15, 2026
e4180c4
docs: README rewrite — match shipped reality (drop roadmap)
mishanefedov Apr 15, 2026
6960387
feat(M7): semantic session search — BM25 + local embeddings + RRF (AU…
mishanefedov Apr 15, 2026
5053f02
fix(M7): index OpenClaw sessions in semantic search (was missed in AU…
mishanefedov Apr 15, 2026
8c61b2a
feat(M7): transformers.js v3 + bge-small-en-v1.5 + first-run consent …
mishanefedov Apr 15, 2026
19f5ea0
perf: batched dispatches + memoized derived state + fs-watcher opt-in
mishanefedov Apr 15, 2026
f006c98
release(0.0.3): unified search + council fixes + version bumps
mishanefedov Apr 15, 2026
1e0ab41
docs: add 'Why over claude-devtools for multi-agent setups' section
mishanefedov Apr 15, 2026
c162b11
docs: demo-mock generator — record the GIF without leaking real sessions
mishanefedov Apr 15, 2026
9fc130c
docs: re-record demo GIF for v0.0.3
mishanefedov Apr 15, 2026
7db7150
feat(AUR-199): detect Bash(<agent-cli>) as structured agent_call events
mishanefedov Apr 16, 2026
82a8ecd
feat(AUR-200): chain-link parent agent_call → spawned child agent ses…
mishanefedov Apr 16, 2026
9d2460c
feat(AUR-201): call-graph TUI view — hotkey g
mishanefedov Apr 16, 2026
114316d
feat(AUR-202): OTel parent_span_id for agent-to-agent spans
mishanefedov Apr 16, 2026
eae24b1
feat(AUR-204): scheduled tasks observability — cron + heartbeat
mishanefedov Apr 16, 2026
bb2eb05
refactor(ui): extract reducer to src/ui/state.ts + 47 tests
mishanefedov Apr 16, 2026
66c738c
feat(process): feature-gate — contracts on every docs/features/*.md +…
mishanefedov Apr 16, 2026
17598d6
chore: add AGENT_DIRECTIVES.md + gitignore OpenClaw workspace scaffold
mishanefedov Apr 17, 2026
dae37d0
docs(agent): add TRIAGE mode — external GitHub issues + PR handling
mishanefedov Apr 17, 2026
5a1a052
chore: move daily-bot prompt.md into repo (.agentwatch-bot/)
mishanefedov Apr 17, 2026
64a865c
feat(adapters): add hermes-agent support (AUR-229)
mishanefedov Apr 18, 2026
0ca0f14
fix(hermes): surface hermes in AgentPanel + faster live-change detection
mishanefedov Apr 18, 2026
bce4469
feat(web): phase 1 — Fastify + SSE + React dashboard
mishanefedov Apr 18, 2026
ec653c4
feat(web): phase 2 — search + analytics + agent/perm/cron views
mishanefedov Apr 18, 2026
6c7c391
feat(web): phase 3 — settings, trends, diffs, replay
mishanefedov Apr 18, 2026
73df3ae
feat(web): phase 4 — strip TUI to live tail + ⌘K palette + code-split
mishanefedov Apr 18, 2026
e749eaa
fix(web): agent/type filters show only buffer-present options with co…
mishanefedov Apr 18, 2026
056ad4d
feat(web): per-agent buckets, disk-backed Logs view, 24h default window
mishanefedov Apr 18, 2026
a0ece97
release: v0.0.4 — web UI + control plane
mishanefedov Apr 19, 2026
bb99d30
fix: SSE keep-alive, clean shutdown, MCP coverage (AUR-230/231/232)
mishanefedov Apr 19, 2026
e0028b9
Merge pull request #4 from mishanefedov/fix/aur-230-231-232-robustness
mishanefedov Apr 19, 2026
f675626
fix: read version from package.json (no more hardcoded drift)
mishanefedov Apr 20, 2026
2575347
chore: make bin/agentwatch.js executable
mishanefedov Apr 20, 2026
e04f0c6
docs(directives): stop backlog growth; ambiguity is not a blocker
mishanefedov Apr 20, 2026
b7503d9
Merge pull request #5 from mishanefedov/chore/executable-bin-and-version
mishanefedov Apr 22, 2026
a1df05e
Merge pull request #6 from mishanefedov/agent/directives-tighten-modes
mishanefedov Apr 22, 2026
3365b3d
docs(directives): require commit+push before [BLOCKED] exit
mishanefedov Apr 26, 2026
1db76eb
Merge pull request #7 from mishanefedov/directives-persist-everywhere
mishanefedov Apr 26, 2026
56e8ae7
fix(adapters): preserve partial JSONL lines across reads (AUR-227)
mishanefedov Apr 27, 2026
86e91b6
fix(directives): require timeout wrappers on hang-prone commands (AUR…
mishanefedov Apr 27, 2026
7211b2e
Merge pull request #14 from mishanefedov/aur-241-cron-timeouts
mishanefedov Apr 27, 2026
c35bbdb
Merge branch 'main' into aur-227-jsonl-partial-line-fix
mishanefedov Apr 27, 2026
ae5ae63
Merge pull request #8 from mishanefedov/aur-227-jsonl-partial-line-fix
mishanefedov Apr 27, 2026
32fd2fb
feat(adapters): surface unparseable JSONL lines (AUR-228) (#9)
mishanefedov Apr 27, 2026
4fada7e
feat(cost): externalize pricing via ~/.agentwatch/pricing.json (AUR-2…
mishanefedov Apr 27, 2026
3f009b9
feat(adapters): pair OpenClaw toolResult turns with their toolCalls (…
mishanefedov Apr 27, 2026
182dec5
fix(directives): defensive initializer for ~/.agentwatch-bot/last-tri…
mishanefedov Apr 27, 2026
95dcd06
docs(compaction): document Gemini/OpenClaw structural limitation (AUR…
mishanefedov Apr 27, 2026
1da7518
release: v0.0.5 — robustness wave (AUR-261) (#15)
mishanefedov May 1, 2026
8335fc7
feat(store): SQLite event store with FTS5 (AUR-263) (#16)
mishanefedov May 1, 2026
dffa321
feat(yield): git-correlation $/commit + $/line views (AUR-265, re-tar…
mishanefedov May 1, 2026
9bf9ee4
feat(adapters): Claude Code native hooks adapter (AUR-266) (#20)
mishanefedov May 1, 2026
e940836
docs: add ROADMAP.md (v0.1 → v1.0 direction) (#22)
mishanefedov May 1, 2026
47e9892
chore: glama.json + Glama badges (raise MCP-registry profile) (#24)
mishanefedov May 3, 2026
eb47fd9
release: v0.1.0 — SQLite store, daemon, classifier, yield, hooks (AUR…
mishanefedov May 3, 2026
69ea4f2
refactor(AUR-268): migrate /sessions/* and /projects routes to SQLite…
mishanefedov May 3, 2026
01cf3fe
feat(tui): ambient passes read from store, not the live ring (AUR-267…
mishanefedov May 3, 2026
302f9dd
feat(web): React activity views — sessions + projects (AUR-269) (#27)
mishanefedov May 4, 2026
664bfae
feat(web): React yield views — sessions + projects (AUR-270) (#28)
mishanefedov May 4, 2026
c2ff389
feat(AUR-218): custom Docker sandbox image for agentwatch-daily
mishanefedov May 4, 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
24 changes: 24 additions & 0 deletions .agentwatch-bot/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Base image: node 22 on debian bookworm-slim
FROM node:22-bookworm-slim

# Install OpenClaw sandbox dependencies + GitHub CLI
RUN apt-get update && apt-get install -y \
bash \
curl \
git \
jq \
python3 \
ripgrep \
ca-certificates \
&& mkdir -p -m 755 /etc/apt/keyrings \
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& apt-get update && apt-get install -y gh \
&& apt-get clean && rm -rf /var/lib/apt/lists/*

# Add a non-root user matching typical host UID (1000) for bind mounts
RUN useradd -m -u 1000 agentwatch

USER agentwatch
WORKDIR /workspace
194 changes: 194 additions & 0 deletions .agentwatch-bot/prompt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
# You are the AgentWatch daily autonomous agent

Fire once per day. Your authoritative instruction set is:

/Users/mishanefedov/IdeaProjects/agentwatch/AGENT_DIRECTIVES.md

**Read it verbatim before anything else.** It tells you what to do, what
not to do, how to pick a mode, and how to end the session. Do not
paraphrase it or act from memory — re-read every run.

This prompt file itself lives at `.agentwatch-bot/prompt.md` in the
agentwatch repo — version-controlled. If you want the harness to behave
differently, edit this file via PR, don't work around it.

---

## Environment + tools you have

You are running inside OpenClaw with the `exec`, `read`, `write`,
`web_fetch`, and `web_search` tools enabled. Your workspace is
`/Users/mishanefedov/IdeaProjects/agentwatch` — treat it as the repo
root. Git, gh, node, npm, jq, curl are all installed on the host.

Secrets live in `~/.agentwatch-bot/.env` as a KEY=VALUE shell file.
**Always source it at session start so tokens are in your env:**

source ~/.agentwatch-bot/.env

That gives you: `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`,
`LINEAR_API_KEY`, `REPO_PATH`.

---

## Timeouts on hang-prone commands (AUR-241 — mandatory)

The cron has a hard 15–17 minute backstop, but a single hung command
can burn the entire window with nothing to show for it (this happened
on 2026-04-21: run \`981bbbf1…\` ran for 17m before the cron killed it,
no per-command logs). **Wrap hang-prone commands with an explicit
timeout** so the run fails fast and at least delivers a clean
`[BLOCKED]` Telegram instead of dying silently.

A portable helper that works on stock macOS *and* Linux (no coreutils
required) — paste it into your shell once at session start:

wt() {
# wt <seconds> <cmd...> — runs cmd with a hard time limit.
# Returns 124 on timeout (matches GNU `timeout`).
local t=$1; shift
perl -e 'alarm shift; exec @ARGV or die "exec: $!"' "$t" "$@"
}

Use it for every command in the table below. If a command ISN'T in the
table but you suspect it can hang on TTY/network/auth, add a timeout
defensively. Cost of being wrong: a 60s wait. Cost of NOT wrapping: a
15-min run wasted.

| Risky command | Suggested timeout |
|------------------------------------------------------|-------------------|
| `openclaw status --usage --json` (STEP 0) | 30s |
| `gh issue list / gh pr list / gh api` | 60s |
| Any single `curl` to api.linear.app or api.telegram | 30s |
| `git fetch origin` | 60s |
| `git push` | 120s |
| `npm test` / `npm run typecheck` | 300s (5m) |
| Anything spawning a sub-agent (codex/claude/gemini) | per the spawn's own ceiling, never unbounded |

Example:

wt 60 gh issue list --state open --limit 50
wt 30 curl -sS -X POST -d "$payload" https://api.telegram.org/...

If `wt` returns 124, treat it as a hard blocker for *that command*.
Don't retry the same command ≥3× in one run — escalate via Telegram
`[BLOCKED] cmd timed out: <cmd>` and exit clean per §11.

---

## STEP 0 — Spend ceiling (do this FIRST, before anything else)

The daily output-token budget across all `agentwatch-daily` sessions is
**200,000 tokens** (~$2 at Gemini 3.1 Pro rates). If today's aggregate
already exceeds that, stop immediately.

Run exactly this, once, at the very start:

TODAY=$(date -u +%Y-%m-%d)
# AUR-241: openclaw status hangs on a wedged daemon — bound it.
TOKENS=$(wt 30 openclaw status --usage --json | jq --arg d "$TODAY" --arg a agentwatch-daily '
[.sessions.recent[]
| select(.agentId == $a)
| select((.updatedAt / 1000 | strftime("%Y-%m-%d")) == $d)
| .outputTokens] | add // 0')
echo "output tokens used today: $TOKENS / 200000"
if [ "${TOKENS:-0}" -gt 200000 ]; then
~/.agentwatch-bot/tg.sh "[BLOCKED] spend cap: $TOKENS output tokens today for agentwatch-daily (>200k). Exiting."
exit 0
fi

If this fails for any reason (jq parse error, command missing,
\`wt 30\` exit 124), still proceed — the cron 15-min timeout is the
backstop, and missing the spend check on one run is cheap relative to
hanging the whole job.

---

## Linear — REST/GraphQL cheat sheet (no MCP)

Linear's API is GraphQL at `https://api.linear.app/graphql`, auth via
`Authorization: <LINEAR_API_KEY>` (no `Bearer` prefix). Helpers are at
`~/.agentwatch-bot/linear.sh` — always prefer those over raw curl:

source ~/.agentwatch-bot/linear.sh
lin_find_project "agentwatch" # -> project id
lin_list_issues "$project_id" # -> JSON array of open issues
lin_create_issue "$project_id" "Title" "Description" "ai-refinement"
lin_comment "$issue_id" "In progress: branch agent/foo"
lin_update_status "$issue_id" "In Progress"

If a helper is missing, extend `linear.sh` and commit it — but only if
you need it *this run*. No speculative helpers.

---

## Telegram — notify at session end

Always send a Telegram summary before exit, per §11 of AGENT_DIRECTIVES.md:

~/.agentwatch-bot/tg.sh "Groom run — 3 new issues: <url1> <url2> <url3>"

One line. Include at minimum: mode + 1-line summary + primary URL
(Linear issue or PR). If you hit a blocker, send a Telegram with `[BLOCKED]`
prefix and the reason.

---

## Session-start checklist (do these in order, once per run)

0. **Spend ceiling** — run the block from STEP 0 above. Abort if over.
1. `source ~/.agentwatch-bot/.env`
2. `cd $REPO_PATH && git fetch origin && git status`
3. `cat AGENT_DIRECTIVES.md` — read every line. Do not skim.
4. `lin_find_project "agentwatch"` → remember the project id
5. `lin_list_issues $project_id` → count open Todo; count `agent-ready`
6. Decide mode per AGENT_DIRECTIVES.md §5. Announce it in your reasoning.
7. Execute the mode end-to-end.
8. Telegram-ping with summary + URL.

> **TRIAGE quirk (AUR-242):** if you pick TRIAGE mode, run the
> last-triage initializer block from AGENT_DIRECTIVES.md §5 *before*
> running any gh search. The file may be missing or garbled on a fresh
> machine and that breaks the query silently.

---

## Rules that apply *always*

- **One session = one mode.** Do not bleed into another mode.
- **No merges.** Never merge your own PRs. Open PRs, that's it.
- **No version bumps / npm publish.** Ever.
- **No destructive git.** No `reset --hard` on main, no `push --force`.
- **If `git status` on `main` is not clean at session start** — something
is wrong. Stop. Telegram `[BLOCKED] dirty main`. Don't touch it.
- **Branch naming:** `agent/aur-<N>-<slug>` where `<N>` is the Linear
issue number (e.g. `agent/aur-210-fix-cursor-adapter-crash`).
- **Time-box:** if a single TDD cycle takes >3 exec turns without
converging AND the issue is a genuine technical blocker (broken
credentials, broken API, missing test infra, environment failure),
stop, Telegram `[BLOCKED]`, file a Linear issue, exit clean.
- **Ambiguity is not a blocker.** If the spec is unclear, pick the
most reasonable interpretation, document the assumption in the PR
description under "Assumptions", and ship. The human overrides in
review. Do not file meta-blocker issues to escape ambiguity.

---

## What success looks like today

End state, in decreasing order of what you should aim for:

1. A PR opened against `main` that cleanly implements one Linear
`agent-ready` issue, tests passing, feature-contract present if
user-visible. Linear issue moved to `In Progress` with PR link in a
comment. Telegram ping has the PR URL.
2. 2–4 new `ai-refinement`-labeled Linear issues grounded in real repo
state (commit links, file paths, or failing test output in the
description). Telegram has all their URLs.
3. One `promotion-draft` Linear issue with 2–4 channel-specific drafts
for a recently shipped feature.
4. A clean `[BLOCKED]` Telegram explaining what you couldn't figure out,
with an issue filed so the human can unblock you.

Anything else — especially a PR that touches code the issue didn't scope
— is a failure. The repo's voice is anti-bloat. Embody it.
46 changes: 46 additions & 0 deletions .agentwatch-bot/sandbox-runbook.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Sandbox Runbook for agentwatch-daily

The `agentwatch-daily` agent runs autonomously and executes commands against this repository. To minimize blast radius, it is meant to run inside a Docker sandbox via OpenClaw's `sandbox.mode`.

However, the default OpenClaw sandbox image lacks Node.js and the GitHub CLI (`gh`), both of which are required for `agentwatch-daily`'s testing and PR workflow.

## Building the Custom Image

Run this from the repository root to build and tag the custom sandbox image:

```bash
docker build -t agentwatch-sandbox -f .agentwatch-bot/Dockerfile .
```

## Configuring OpenClaw

Update your `~/.openclaw/openclaw.json` (or the specific agent configuration for `agentwatch-daily`) to use this new image and mount the necessary volumes:

```json
{
"sandbox": {
"mode": "non-main",
"image": "agentwatch-sandbox",
"mounts": [
{
"source": "/Users/mishanefedov/IdeaProjects/agentwatch",
"target": "/workspace",
"readOnly": false
},
{
"source": "/Users/mishanefedov/.agentwatch-bot",
"target": "/home/agentwatch/.agentwatch-bot",
"readOnly": true
}
],
"env": {
"GH_TOKEN": "${GH_TOKEN}",
"LINEAR_API_KEY": "${LINEAR_API_KEY}"
}
}
}
```

## Updating

When OpenClaw updates its base sandbox requirements (e.g., needing new system packages), update `.agentwatch-bot/Dockerfile` to include them and run the `docker build` command again.
27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/adapter_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: Adapter request — new agent
about: Ask agentwatch to support an AI coding agent we don't cover yet
title: "Adapter: "
labels: adapter-request
---

**Which agent?**
<!-- Name + link to the project. -->

**Where does it store activity?**
- Log path(s) on disk:
- Format (JSONL / SQLite / other):
- Rotating / append-only / replaced per-session?

**Where does it store config / permissions?**
- Config file path(s):
- Allow / deny semantics if any:

**Do you use it daily?**
<!-- Yes / no. Honest answer helps me prioritize. -->

**Would you help test?**
<!-- A "yes" is a huge help — you run the live data I don't have. -->

**Anything unique about this agent worth surfacing?**
<!-- E.g. subagents, memory, token accounting, dreaming phases, MCP integration. -->
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: Bug report
about: agentwatch isn't doing what it should
title: ""
labels: bug
---

**What happened?**
<!-- A clear one-line description. -->

**Steps to reproduce**
1.
2.
3.

**Expected**
<!-- What you thought would happen. -->

**Actual**
<!-- What actually happened. Terminal output / screenshot welcome. -->

**Environment**
- agentwatch version: `agentwatch --help` shows it in the banner, or check `package.json`
- OS + version: `sw_vers` / `lsb_release -a`
- Node version: `node --version`
- Terminal emulator:
- Installed agents (Claude Code / Cursor / Codex / Gemini / OpenClaw):

**Extra context**
<!-- Anything else useful. If relevant, attach a redacted `agentwatch doctor` output. -->
18 changes: 18 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
name: Feature request
about: Something agentwatch doesn't do yet
title: ""
labels: enhancement
---

**Problem**
<!-- What's the pain? Describe the situation, not the solution. -->

**What would solve it?**
<!-- Rough UX you'd expect. Hotkeys / flags / screens — it's okay to sketch. -->

**Is it local-only?**
<!-- agentwatch is strictly local. Anything that requires a network service is out of scope. -->

**How often would you use it?**
<!-- Honest estimate helps prioritize. -->
16 changes: 16 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Summary

<!-- One or two sentences describing the change. -->

# Why

<!-- Link to an issue / roadmap item if applicable. -->

# Checklist

- [ ] `npm run typecheck` passes
- [ ] `npm test` passes
- [ ] Added / updated a test where meaningful
- [ ] Updated `CHANGELOG.md` if user-visible
- [ ] Ran `npm run dev` locally and verified the change behaves as expected
- [ ] Scope stays within the local-only / TUI-first / multi-agent wedge
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,14 @@ dist
coverage
.serena/
.claude/
.openclaw/
docs/demo.cast
agentwatch-export/

# OpenClaw workspace scaffold (generated by the agentwatch-daily bot on first open)
AGENTS.md
HEARTBEAT.md
IDENTITY.md
SOUL.md
TOOLS.md
USER.md
Loading
Loading