Commit Graph

1973 Commits

Author SHA1 Message Date
Joel Hooks cf04593700 debug: add console.log to manifest-archive load-manifest step 2026-02-22 11:16:16 -08:00
Joel Hooks f421f4e5b3 fix: add OTEL instrumentation to manifest-archive phase boundaries 2026-02-22 11:14:27 -08:00
Joel Hooks a3ece5c1bc fix: update AGENTS.md — skills/ is sacred, not gitignored 2026-02-22 11:14:10 -08:00
Joel Hooks eae5aee270 fix: track all skills/ — remove blanket gitignore that hid 16 custom skills
The skills/ dir was gitignored for npx-installed third-party skills,
but all our custom joelclaw skills lived there too. Only 3 of 19 were
ever committed. The rest existed only on disk.
2026-02-22 11:05:01 -08:00
Joel Hooks b02dd7ef15 refactor: manifest-archive to 1 step per file — durable retry + memoization per book
Replaces batch-of-48 approach with individual step.run per file (806 steps,
under 1,000 limit). Each file gets independent retry, memoization, and
visibility in Inngest traces. Supports both dry-run and live scp modes.
2026-02-22 11:01:38 -08:00
Joel Hooks 0e6e1a6c85 refactor(review): generalize from ADR-only to universal content review
- Drop adrComments table, use contentResources + contentResourceResource
- New reviewComments.ts Convex functions (getByContent, addComment, etc)
- Rename Adr* components → Review* (review-gate, review-wrapper, etc)
- Move /api/adrs/submit-review → /api/review/submit
- Event: content/review.submitted (was adr/review.submitted)
- Props: contentId + contentType + contentSlug (was adrSlug)
- Add content-review.ts Inngest function in system-bus
- Registry renamed: adr-review → content-review
- listLinkedReviewComments query added to contentResources

ADR-0106. Zero data existed so schema migration was free.
2026-02-22 11:00:06 -08:00
Joel Hooks 04c4c3c28e fix(adr-review): esc cancels pending comment, clears draft
Document-level keydown listener so esc works even without textarea focus.
2026-02-22 10:50:00 -08:00
Joel Hooks 80d0853b6c fix: register manifestArchive in host function definitions 2026-02-22 10:43:48 -08:00
Joel Hooks 162cbcb147 fix(adr-review): inline comment under paragraph, not bottom drawer
Replaces Vaul drawer with portal-based inline editor that renders
directly below the clicked paragraph. Paragraph gets ring highlight
and scrolls into view. Click same paragraph to toggle closed. Esc to dismiss.
2026-02-22 10:42:16 -08:00
Joel Hooks 6bff2cc455 feat(adr-review): ADR-0106 — inline paragraph comment system
- Convex adrComments table + 7 mutations/queries
- rehype-paragraph-ids plugin (content-hash anchoring)
- Review UI: comment drawer, review sheet, FAB, auth gate
- shadcn init (Tailwind v4) + registry.json
- Submit review API route (fires Inngest event)
- @/* path alias for imports
2026-02-22 10:38:59 -08:00
Joel Hooks eb3055d02d fix: use GHCR_PAT secret for GHCR push (GITHUB_TOKEN lacks packages:write) 2026-02-22 10:28:25 -08:00
Joel Hooks 915b8dad65 sync: vault content (2 files)
adrs (2):
  new: 0106-adr-review-pipeline.md
  new: 0107-adr-convex-migration.md
2026-02-22 10:22:28 -08:00
Joel Hooks 2004d74600 sync: vault content (1 files)
adrs (1):
  updated: 0105-joelclaw-pdf-brain-typesense.md
2026-02-22 10:19:17 -08:00
Joel Hooks 60c43cded5 feat: manifest-archive dry-run function — 806 docs to three-body in category folders 2026-02-22 10:18:29 -08:00
Joel Hooks 0797c0cb28 sync: vault content (1 files)
adrs (1):
  updated: 0105-joelclaw-pdf-brain-typesense.md
2026-02-22 10:04:51 -08:00
Joel Hooks 8da34f7486 sync: vault content (1 files)
adrs (1):
  new: 0105-joelclaw-pdf-brain-typesense.md
2026-02-22 09:59:34 -08:00
Joel Hooks d5c4acc5c5 chore(adrs): rename status 'implemented' → 'shipped' across all ADRs
42 ADRs updated in both Vault and web content. Canonical status set
is now: proposed | accepted | shipped | superseded | deprecated | rejected
2026-02-22 09:28:15 -08:00
Joel Hooks 35aa12a88e feat(gateway): ADR-0104 priority message queue, dedup, Telegram HTML validation
- Priority tiers P0-P3 with Redis sorted set (joelclaw:gateway:priority)
- drainByPriority() with aging promotion, 1:3 fairness, P3 auto-ack/coalescing
- 30s dedup window via SHA-256 hash of source+content prefix
- Telegram HTML validation with plain-text fallback
- OTEL: message.queued, message.promoted, message.coalesced, message.auto_acked
2026-02-22 08:53:53 -08:00
Joel Hooks 3e5c9bb824 fix: add descriptions to all gateway subcommands for --help
Agents always call --help first. Bare command list with no descriptions
is useless. Added Command.withDescription() to all 9 gateway subcommands.
2026-02-22 08:48:07 -08:00
Joel Hooks 126b012a58 feat: add gateway diagnose + review CLI commands
diagnose: automated layer-by-layer health check (process → CLI status →
error log → stdout log → E2E test → model API → Redis state). Scans for
known failure patterns, returns structured findings per layer.

review: extracts recent session context from the gateway JSONL transcript.
Returns exchanges, tool call summary, compactions, and log highlights
within a configurable time window. Gives agents working memory about
what the gateway was doing.

Both follow HATEOAS envelope with contextual next_actions.
2026-02-22 08:42:43 -08:00
Joel Hooks 3641e756cd sync: vault content (1 files)
adrs (1):
  new: 0103-gateway-session-isolation.md
2026-02-22 08:27:08 -08:00
Joel Hooks e637661900 fix: remove heartbeat prompt injection from gateway session (ADR-0103)
Root cause: HEARTBEAT.md checklist processing (30-90s of tool calls)
blocked the gateway pi session, causing Telegram messages to fail with
'Agent is already processing' errors and triggering model fallback.

Three overlapping heartbeat paths were injecting prompts into the
single-threaded gateway session. Meanwhile, Inngest check/* functions
already perform all the same checks independently in the worker.

Changes:
- Gateway heartbeat.ts: remove prompt injection, keep tripwire/watchdog
- Inngest heartbeat: remove push-gateway-heartbeat step
- Redis channel: filter stale cron.heartbeat events, guard empty prompts
- Remove dead code: readHeartbeatChecklist, HEARTBEAT_PATH
2026-02-22 08:27:02 -08:00
Joel Hooks 016dccc295 redesign: cool finds index — full titles, readable descriptions, compact cards
- Titles wrap fully instead of truncating
- Relevance text shows complete (no line-clamp)
- Date shown as relative time (2d ago) above title, not stealing width
- Single type badge (repo/article/video) replaces full tag list
- Source URL removed from index (shown on detail page)
- Tighter card spacing for better scan density
- Re-removed duplicate self-hosting discovery (also from Vault source)
2026-02-22 08:07:35 -08:00