From 6bbe999112cf0fb3f8475ecfef281b86ccaa6f2a Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Tue, 10 Mar 2026 14:54:05 +0000 Subject: [PATCH 1/5] chore(repo): add agentcrumbs for better debug mode --- CLAUDE.md | 52 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + pnpm-lock.yaml | 10 +++++++++ pnpm-workspace.yaml | 1 + 4 files changed, 64 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 93cf4624bcf..ea343a8366f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -160,3 +160,55 @@ mcp__trigger__list_runs(projectRef: "proj_rrkpdguyagvsoktglnod", environment: "d ``` Dashboard: http://localhost:3030/orgs/references-9dfd/projects/hello-world-97DT/env/dev/runs + + +# Skill mappings — when working in these areas, load the linked skill file into context. +skills: + - task: "Using agentcrumbs for debug tracing, adding crumbs, trails, markers, querying traces, or stripping debug code before merge" + load: "node_modules/agentcrumbs/skills/agentcrumbs/SKILL.md" + - task: "Setting up agentcrumbs in the project, initializing namespace catalog, running crumbs init" + load: "node_modules/agentcrumbs/skills/agentcrumbs/init/SKILL.md" + + +## agentcrumbs + +Add crumbs as you write code — not just when debugging. Mark lines with +`// @crumbs` or wrap blocks in `// #region @crumbs`. They stay on the +branch throughout development and are stripped by `agentcrumbs strip` +before merge. + +### Namespaces + +| Namespace | Description | Path | +| --- | --- | --- | +| `webapp` | Main Remix app — API, dashboard, orchestration | `apps/webapp` | +| `supervisor` | Task execution container manager | `apps/supervisor` | +| `coordinator` | Worker coordination service | `apps/coordinator` | +| `sdk` | Main SDK for writing tasks | `packages/trigger-sdk` | +| `cli` | CLI and task image bundling | `packages/cli-v3` | +| `core` | Shared types and subpath exports | `packages/core` | +| `build` | Build extensions and types | `packages/build` | +| `react-hooks` | React hooks for realtime/triggering | `packages/react-hooks` | +| `redis-worker` | Redis-based background job system | `packages/redis-worker` | +| `run-engine` | Run Engine 2.0 — core run lifecycle | `internal-packages/run-engine` | +| `database` | Prisma client and schema | `internal-packages/database` | +| `clickhouse` | ClickHouse client, migrations, analytics | `internal-packages/clickhouse` | +| `schedule-engine` | Durable cron scheduling | `internal-packages/schedule-engine` | +| `run-queue` | Run queue management | `internal-packages/run-queue` | + +Do not invent new namespaces — pick from this table or ask first. + +### For PR reviewers + +Do not flag `// @crumbs` markers, `#region @crumbs` blocks, or agentcrumbs +imports in reviews. These are temporary debug instrumentation stripped +before merge. Data logged in crumbs (IDs, names, values) never reaches +production. + +### CLI + +```bash +agentcrumbs collect # start collector (multi-service) +agentcrumbs tail # live tail +agentcrumbs strip # remove crumbs before merge +``` diff --git a/package.json b/package.json index 6420ec29935..9dbbd0cd24d 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "dependencies": { "@changesets/cli": "2.26.2", "@remix-run/changelog-github": "^0.0.5", + "agentcrumbs": "^0.3.0", "node-fetch": "2.6.x" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83e28308337..3b06ac68c21 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,9 @@ importers: '@remix-run/changelog-github': specifier: ^0.0.5 version: 0.0.5(encoding@0.1.13) + agentcrumbs: + specifier: ^0.3.0 + version: 0.3.0 node-fetch: specifier: 2.6.x version: 2.6.7(encoding@0.1.13) @@ -11419,6 +11422,11 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} + agentcrumbs@0.3.0: + resolution: {integrity: sha512-WbZ4JhwcQjzBr1rUSeIXUVrKeDwQiAKzGGkpfb9Nl4cDJ34VO3Rx2k5Ej8/om2yaDi7TDLfxHIO4hQvjdHUPSQ==} + engines: {node: '>=18.0.0'} + hasBin: true + agentkeepalive@4.5.0: resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} @@ -31868,6 +31876,8 @@ snapshots: agent-base@7.1.4: {} + agentcrumbs@0.3.0: {} + agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f5fecfce774..25f679f6bf0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -11,6 +11,7 @@ minimumReleaseAgeExclude: - "@trigger.dev/platform" - "next" - "@next/*" + - "agentcrumbs" preferOffline: true linkWorkspacePackages: false From 5a891b3caabe4c78cac3a42c806e420685f966f5 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Tue, 10 Mar 2026 15:22:25 +0000 Subject: [PATCH 2/5] update to 0.3.1 --- package.json | 2 +- pnpm-lock.yaml | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 9dbbd0cd24d..10a23aaf012 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "dependencies": { "@changesets/cli": "2.26.2", "@remix-run/changelog-github": "^0.0.5", - "agentcrumbs": "^0.3.0", + "agentcrumbs": "^0.3.1", "node-fetch": "2.6.x" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b06ac68c21..94402216f45 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,8 +58,8 @@ importers: specifier: ^0.0.5 version: 0.0.5(encoding@0.1.13) agentcrumbs: - specifier: ^0.3.0 - version: 0.3.0 + specifier: ^0.3.1 + version: 0.3.1 node-fetch: specifier: 2.6.x version: 2.6.7(encoding@0.1.13) @@ -1107,7 +1107,7 @@ importers: version: 18.3.1 react-email: specifier: ^2.1.1 - version: 2.1.2(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.15)(bufferutil@4.0.9)(eslint@8.31.0) + version: 2.1.2(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.15)(eslint@8.31.0) resend: specifier: ^3.2.0 version: 3.2.0 @@ -11422,8 +11422,8 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - agentcrumbs@0.3.0: - resolution: {integrity: sha512-WbZ4JhwcQjzBr1rUSeIXUVrKeDwQiAKzGGkpfb9Nl4cDJ34VO3Rx2k5Ej8/om2yaDi7TDLfxHIO4hQvjdHUPSQ==} + agentcrumbs@0.3.1: + resolution: {integrity: sha512-65nPVTpRmM8zJ/jmW7i5m+QXyIR3gM2hCUQO5IvWf7wuY4YANAWcSAcTm7kxZiumcGhdC6Ac2RTq7OdbhUMwgQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -23163,7 +23163,7 @@ snapshots: '@epic-web/test-server@0.1.0(bufferutil@4.0.9)': dependencies: '@hono/node-server': 1.12.2(hono@4.5.11) - '@hono/node-ws': 1.0.4(@hono/node-server@1.12.2(hono@4.5.11))(bufferutil@4.0.9) + '@hono/node-ws': 1.0.4(@hono/node-server@1.12.2(hono@4.11.8))(bufferutil@4.0.9) '@open-draft/deferred-promise': 2.2.0 '@types/ws': 8.5.12 hono: 4.5.11 @@ -23918,7 +23918,7 @@ snapshots: dependencies: hono: 4.11.8 - '@hono/node-ws@1.0.4(@hono/node-server@1.12.2(hono@4.5.11))(bufferutil@4.0.9)': + '@hono/node-ws@1.0.4(@hono/node-server@1.12.2(hono@4.11.8))(bufferutil@4.0.9)': dependencies: '@hono/node-server': 1.12.2(hono@4.5.11) ws: 8.18.3(bufferutil@4.0.9) @@ -31876,7 +31876,7 @@ snapshots: agent-base@7.1.4: {} - agentcrumbs@0.3.0: {} + agentcrumbs@0.3.1: {} agentkeepalive@4.5.0: dependencies: @@ -39233,7 +39233,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-email@2.1.2(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.15)(bufferutil@4.0.9)(eslint@8.31.0): + react-email@2.1.2(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.15)(eslint@8.31.0): dependencies: '@babel/parser': 7.24.1 '@radix-ui/colors': 1.0.1 @@ -39270,8 +39270,8 @@ snapshots: react: 18.3.1 react-dom: 18.2.0(react@18.3.1) shelljs: 0.8.5 - socket.io: 4.7.3(bufferutil@4.0.9) - socket.io-client: 4.7.3(bufferutil@4.0.9) + socket.io: 4.7.3 + socket.io-client: 4.7.3 sonner: 1.3.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) source-map-js: 1.0.2 stacktrace-parser: 0.1.10 @@ -40471,7 +40471,7 @@ snapshots: - supports-color - utf-8-validate - socket.io-client@4.7.3(bufferutil@4.0.9): + socket.io-client@4.7.3: dependencies: '@socket.io/component-emitter': 3.1.0 debug: 4.3.7(supports-color@10.0.0) @@ -40500,7 +40500,7 @@ snapshots: transitivePeerDependencies: - supports-color - socket.io@4.7.3(bufferutil@4.0.9): + socket.io@4.7.3: dependencies: accepts: 1.3.8 base64id: 2.0.0 From 8ed1270200d297faa353c820ce14fb6c3576d86a Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Wed, 11 Mar 2026 10:04:56 +0000 Subject: [PATCH 3/5] update to agentcrumbs 03.3 --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 10a23aaf012..e458d09aa9e 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "dependencies": { "@changesets/cli": "2.26.2", "@remix-run/changelog-github": "^0.0.5", - "agentcrumbs": "^0.3.1", + "agentcrumbs": "^0.3.3", "node-fetch": "2.6.x" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94402216f45..27447dea2a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,8 +58,8 @@ importers: specifier: ^0.0.5 version: 0.0.5(encoding@0.1.13) agentcrumbs: - specifier: ^0.3.1 - version: 0.3.1 + specifier: ^0.3.3 + version: 0.3.3 node-fetch: specifier: 2.6.x version: 2.6.7(encoding@0.1.13) @@ -11422,8 +11422,8 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - agentcrumbs@0.3.1: - resolution: {integrity: sha512-65nPVTpRmM8zJ/jmW7i5m+QXyIR3gM2hCUQO5IvWf7wuY4YANAWcSAcTm7kxZiumcGhdC6Ac2RTq7OdbhUMwgQ==} + agentcrumbs@0.3.3: + resolution: {integrity: sha512-aupvMKUu/b+7x1scuPVN6Pi5qBXCDpbvCVLrkhpSbvT28ZRaX/ZkZ+LD/96Jg0KP4qCnU8ZOwvGVDUkmSsj+ag==} engines: {node: '>=18.0.0'} hasBin: true @@ -31876,7 +31876,7 @@ snapshots: agent-base@7.1.4: {} - agentcrumbs@0.3.1: {} + agentcrumbs@0.3.3: {} agentkeepalive@4.5.0: dependencies: From a34d6aa7cbcc9f253763e6e11de371eb69ffb577 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Wed, 11 Mar 2026 11:00:07 +0000 Subject: [PATCH 4/5] bundle agentcrumbs in remix config --- apps/webapp/remix.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/webapp/remix.config.js b/apps/webapp/remix.config.js index 0363560f612..ae2f18cd72e 100644 --- a/apps/webapp/remix.config.js +++ b/apps/webapp/remix.config.js @@ -12,6 +12,7 @@ module.exports = { /^@internal\//, // Bundle all internal packages /^@trigger\.dev\//, // Bundle all trigger packages "marked", + "agentcrumbs", "axios", "p-limit", "p-map", From 19acb4a05f4712f655d7b5cb1c7f784170667f36 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Thu, 12 Mar 2026 10:14:35 +0000 Subject: [PATCH 5/5] Agentcrumbs 0.4.0 --- CLAUDE.md | 62 +++++++++++++++++++++++++++++--------------------- package.json | 2 +- pnpm-lock.yaml | 10 ++++---- 3 files changed, 42 insertions(+), 32 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index ea343a8366f..688ef4d8d80 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,9 +36,15 @@ Test files go next to source files (e.g., `MyService.ts` -> `MyService.test.ts`) ```typescript import { redisTest, postgresTest, containerTest } from "@internal/testcontainers"; -redisTest("should use redis", async ({ redisOptions }) => { /* ... */ }); -postgresTest("should use postgres", async ({ prisma }) => { /* ... */ }); -containerTest("should use both", async ({ prisma, redisOptions }) => { /* ... */ }); +redisTest("should use redis", async ({ redisOptions }) => { + /* ... */ +}); +postgresTest("should use postgres", async ({ prisma }) => { + /* ... */ +}); +containerTest("should use both", async ({ prisma, redisOptions }) => { + /* ... */ +}); ``` ## Changesets and Server Changes @@ -162,12 +168,15 @@ mcp__trigger__list_runs(projectRef: "proj_rrkpdguyagvsoktglnod", environment: "d Dashboard: http://localhost:3030/orgs/references-9dfd/projects/hello-world-97DT/env/dev/runs + # Skill mappings — when working in these areas, load the linked skill file into context. + skills: - - task: "Using agentcrumbs for debug tracing, adding crumbs, trails, markers, querying traces, or stripping debug code before merge" - load: "node_modules/agentcrumbs/skills/agentcrumbs/SKILL.md" - - task: "Setting up agentcrumbs in the project, initializing namespace catalog, running crumbs init" - load: "node_modules/agentcrumbs/skills/agentcrumbs/init/SKILL.md" + +- task: "Using agentcrumbs for debug tracing, adding crumbs, trails, markers, querying traces, or stripping debug code before merge" + load: "node_modules/agentcrumbs/skills/agentcrumbs/SKILL.md" +- task: "Setting up agentcrumbs in the project, initializing namespace catalog, running crumbs init" +load: "node_modules/agentcrumbs/skills/agentcrumbs/init/SKILL.md" ## agentcrumbs @@ -179,22 +188,21 @@ before merge. ### Namespaces -| Namespace | Description | Path | -| --- | --- | --- | -| `webapp` | Main Remix app — API, dashboard, orchestration | `apps/webapp` | -| `supervisor` | Task execution container manager | `apps/supervisor` | -| `coordinator` | Worker coordination service | `apps/coordinator` | -| `sdk` | Main SDK for writing tasks | `packages/trigger-sdk` | -| `cli` | CLI and task image bundling | `packages/cli-v3` | -| `core` | Shared types and subpath exports | `packages/core` | -| `build` | Build extensions and types | `packages/build` | -| `react-hooks` | React hooks for realtime/triggering | `packages/react-hooks` | -| `redis-worker` | Redis-based background job system | `packages/redis-worker` | -| `run-engine` | Run Engine 2.0 — core run lifecycle | `internal-packages/run-engine` | -| `database` | Prisma client and schema | `internal-packages/database` | -| `clickhouse` | ClickHouse client, migrations, analytics | `internal-packages/clickhouse` | -| `schedule-engine` | Durable cron scheduling | `internal-packages/schedule-engine` | -| `run-queue` | Run queue management | `internal-packages/run-queue` | +| Namespace | Description | Path | +| ----------------- | ---------------------------------------------- | ----------------------------------- | +| `webapp` | Main Remix app — API, dashboard, orchestration | `apps/webapp` | +| `supervisor` | Task execution container manager | `apps/supervisor` | +| `sdk` | Main SDK for writing tasks | `packages/trigger-sdk` | +| `cli` | CLI and task image bundling | `packages/cli-v3` | +| `core` | Shared types and subpath exports | `packages/core` | +| `build` | Build extensions and types | `packages/build` | +| `react-hooks` | React hooks for realtime/triggering | `packages/react-hooks` | +| `redis-worker` | Redis-based background job system | `packages/redis-worker` | +| `run-engine` | Run Engine 2.0 — core run lifecycle | `internal-packages/run-engine` | +| `database` | Prisma client and schema | `internal-packages/database` | +| `clickhouse` | ClickHouse client, migrations, analytics | `internal-packages/clickhouse` | +| `schedule-engine` | Durable cron scheduling | `internal-packages/schedule-engine` | +| `run-queue` | Run queue management | `internal-packages/run-queue` | Do not invent new namespaces — pick from this table or ask first. @@ -208,7 +216,9 @@ production. ### CLI ```bash -agentcrumbs collect # start collector (multi-service) -agentcrumbs tail # live tail -agentcrumbs strip # remove crumbs before merge +pnpm exec agentcrumbs collect # start collector (multi-service) +pnpm exec agentcrumbs tail --app trigger # live tail +pnpm exec agentcrumbs clear --app trigger # remove crumbs before merge ``` + +The preferred way to query for crumbs is to use `pnpm exec agentcrumbs query --app trigger` with the `--limit` option and cursor pagination, and clear existing crumbs before reproducing a bug via `pnpm exec agentcrumbs clear --app trigger`. diff --git a/package.json b/package.json index e458d09aa9e..3fc904b7109 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "dependencies": { "@changesets/cli": "2.26.2", "@remix-run/changelog-github": "^0.0.5", - "agentcrumbs": "^0.3.3", + "agentcrumbs": "^0.4.0", "node-fetch": "2.6.x" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27447dea2a8..3228590cbbb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,8 +58,8 @@ importers: specifier: ^0.0.5 version: 0.0.5(encoding@0.1.13) agentcrumbs: - specifier: ^0.3.3 - version: 0.3.3 + specifier: ^0.4.0 + version: 0.4.0 node-fetch: specifier: 2.6.x version: 2.6.7(encoding@0.1.13) @@ -11422,8 +11422,8 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - agentcrumbs@0.3.3: - resolution: {integrity: sha512-aupvMKUu/b+7x1scuPVN6Pi5qBXCDpbvCVLrkhpSbvT28ZRaX/ZkZ+LD/96Jg0KP4qCnU8ZOwvGVDUkmSsj+ag==} + agentcrumbs@0.4.0: + resolution: {integrity: sha512-zQW8wkX1c5M1kSyNMd9KXwOtOHrbGSl9pZZOmDf1lSdQop/l5QJP3OQ43GS3nSRvVMCbjl3T/nPDL5t0PEuyRA==} engines: {node: '>=18.0.0'} hasBin: true @@ -31876,7 +31876,7 @@ snapshots: agent-base@7.1.4: {} - agentcrumbs@0.3.3: {} + agentcrumbs@0.4.0: {} agentkeepalive@4.5.0: dependencies: