Skip to content

Commit 9064039

Browse files
authored
improvement(logfire): scope block outputs per operation and refresh brand chrome (#6178)
* improvement(logfire): scope block outputs per operation and refresh brand chrome - gate each block output on the operations that actually return it - swap in the official Logfire mark, black tile with brand-magenta bare icon - move host to advanced mode and alphabetize the tool registry entries - add track-logfire-llm-cost and verify-logfire-token-target skills * fix(logfire): honor numeric-string limits and surface token validity fields - accept a numeric-string limit so agent-invoked calls stop silently falling back to Logfire's 100-row default - keep an hour-only UTC offset intact instead of producing +05Z - surface expiresAt and spendingCapReachedAt on Get Token Info - document pending_span as a fourth record kind * chore(logfire): regenerate tool metadata and document the step in the skill - regenerate apps/sim/tools/generated/tool-outputs.ts, which CI's tool-metadata:check requires after a tool output change - add the regeneration step and artifact-diff guidance to the validate-integration skill so the gate stops being missed * chore(skills): sync validate-integration projections
1 parent 8348592 commit 9064039

15 files changed

Lines changed: 257 additions & 41 deletions

File tree

.agents/skills/validate-integration/SKILL.md

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,13 +295,31 @@ Group findings by severity:
295295

296296
After reporting, fix every **critical** and **warning** issue. Apply **suggestions** where they don't add unnecessary complexity.
297297

298+
### Regenerate Derived Artifacts
299+
300+
Several files are generated from tool and block definitions. Editing a tool or block WITHOUT regenerating them fails CI, so run these before pushing:
301+
302+
```bash
303+
bun run tool-metadata:generate # repo root — apps/sim/tools/generated/*
304+
cd apps/sim && bun run generate-docs # docs .mdx + lib/integrations/integrations.json + docs icons
305+
```
306+
307+
- **`tool-metadata:generate`** — required whenever a tool's `outputs`, `params`, or descriptions change. CI enforces this with `bun run tool-metadata:check`, which fails with *"Generated tool metadata is stale"*. This is the easiest gate to miss, because nothing in the tool file hints that a generated artifact mirrors it.
308+
- **`generate-docs`** — required whenever block metadata changes (`bgColor`, `name`, `description`, operations, outputs). Regenerates the integration `.mdx`, `integrations.json`, and the docs copy of `components/icons.tsx`.
309+
310+
**Always diff the regen output before committing.** These generators rewrite every file they own, so they will also sweep in unrelated drift that accumulated on the base branch — pages losing sections, unrelated icons appearing. Keep only the hunks belonging to the integration under validation and `git checkout --` the rest, otherwise an unrelated doc regression rides along in the PR. Verify no page was silently dropped by comparing the directory listing before and after.
311+
312+
If an icon changed, `apps/sim/components/icons.tsx` is the source of truth and `apps/docs/components/icons.tsx` is its generated mirror — they must end up byte-identical for that component.
313+
298314
### Validation Output
299315

300316
After fixing, confirm:
301317
1. `bun run lint` passes with no fixes needed
302-
2. TypeScript compiles clean (no type errors)
303-
3. Re-read all modified files to verify fixes are correct
304-
4. Any remaining unknown response schemas were explicitly reported to the user instead of guessed
318+
2. TypeScript compiles clean (no type errors) — check the error list is empty for the files you touched; pre-existing unrelated errors in a worktree usually mean workspace packages resolve to the main checkout
319+
3. The integration's tests pass, and any test you added actually fails without its fix (revert it once and watch it go red)
320+
4. Derived artifacts regenerated and their diffs reviewed (see above)
321+
5. Re-read all modified files to verify fixes are correct
322+
6. Any remaining unknown response schemas were explicitly reported to the user instead of guessed
305323

306324
## Checklist Summary
307325

@@ -322,5 +340,8 @@ After fixing, confirm:
322340
- [ ] Validated `{Service}BlockMeta` exported with at least 7 templates
323341
- [ ] Reported all issues grouped by severity
324342
- [ ] Fixed all critical and warning issues
343+
- [ ] Ran `bun run tool-metadata:generate` if any tool outputs/params changed, and confirmed `bun run tool-metadata:check` passes
344+
- [ ] Ran `bun run generate-docs` if any block metadata changed, and reverted unrelated drift the generator swept in
325345
- [ ] Ran `bun run lint` after fixes
326346
- [ ] Verified TypeScript compiles clean
347+
- [ ] Verified added tests fail without their fix

.claude/commands/validate-integration.md

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -294,13 +294,31 @@ Group findings by severity:
294294

295295
After reporting, fix every **critical** and **warning** issue. Apply **suggestions** where they don't add unnecessary complexity.
296296

297+
### Regenerate Derived Artifacts
298+
299+
Several files are generated from tool and block definitions. Editing a tool or block WITHOUT regenerating them fails CI, so run these before pushing:
300+
301+
```bash
302+
bun run tool-metadata:generate # repo root — apps/sim/tools/generated/*
303+
cd apps/sim && bun run generate-docs # docs .mdx + lib/integrations/integrations.json + docs icons
304+
```
305+
306+
- **`tool-metadata:generate`** — required whenever a tool's `outputs`, `params`, or descriptions change. CI enforces this with `bun run tool-metadata:check`, which fails with *"Generated tool metadata is stale"*. This is the easiest gate to miss, because nothing in the tool file hints that a generated artifact mirrors it.
307+
- **`generate-docs`** — required whenever block metadata changes (`bgColor`, `name`, `description`, operations, outputs). Regenerates the integration `.mdx`, `integrations.json`, and the docs copy of `components/icons.tsx`.
308+
309+
**Always diff the regen output before committing.** These generators rewrite every file they own, so they will also sweep in unrelated drift that accumulated on the base branch — pages losing sections, unrelated icons appearing. Keep only the hunks belonging to the integration under validation and `git checkout --` the rest, otherwise an unrelated doc regression rides along in the PR. Verify no page was silently dropped by comparing the directory listing before and after.
310+
311+
If an icon changed, `apps/sim/components/icons.tsx` is the source of truth and `apps/docs/components/icons.tsx` is its generated mirror — they must end up byte-identical for that component.
312+
297313
### Validation Output
298314

299315
After fixing, confirm:
300316
1. `bun run lint` passes with no fixes needed
301-
2. TypeScript compiles clean (no type errors)
302-
3. Re-read all modified files to verify fixes are correct
303-
4. Any remaining unknown response schemas were explicitly reported to the user instead of guessed
317+
2. TypeScript compiles clean (no type errors) — check the error list is empty for the files you touched; pre-existing unrelated errors in a worktree usually mean workspace packages resolve to the main checkout
318+
3. The integration's tests pass, and any test you added actually fails without its fix (revert it once and watch it go red)
319+
4. Derived artifacts regenerated and their diffs reviewed (see above)
320+
5. Re-read all modified files to verify fixes are correct
321+
6. Any remaining unknown response schemas were explicitly reported to the user instead of guessed
304322

305323
## Checklist Summary
306324

@@ -321,5 +339,8 @@ After fixing, confirm:
321339
- [ ] Validated `{Service}BlockMeta` exported with at least 7 templates
322340
- [ ] Reported all issues grouped by severity
323341
- [ ] Fixed all critical and warning issues
342+
- [ ] Ran `bun run tool-metadata:generate` if any tool outputs/params changed, and confirmed `bun run tool-metadata:check` passes
343+
- [ ] Ran `bun run generate-docs` if any block metadata changed, and reverted unrelated drift the generator swept in
324344
- [ ] Ran `bun run lint` after fixes
325345
- [ ] Verified TypeScript compiles clean
346+
- [ ] Verified added tests fail without their fix

.cursor/commands/validate-integration.md

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,13 +289,31 @@ Group findings by severity:
289289

290290
After reporting, fix every **critical** and **warning** issue. Apply **suggestions** where they don't add unnecessary complexity.
291291

292+
### Regenerate Derived Artifacts
293+
294+
Several files are generated from tool and block definitions. Editing a tool or block WITHOUT regenerating them fails CI, so run these before pushing:
295+
296+
```bash
297+
bun run tool-metadata:generate # repo root — apps/sim/tools/generated/*
298+
cd apps/sim && bun run generate-docs # docs .mdx + lib/integrations/integrations.json + docs icons
299+
```
300+
301+
- **`tool-metadata:generate`** — required whenever a tool's `outputs`, `params`, or descriptions change. CI enforces this with `bun run tool-metadata:check`, which fails with *"Generated tool metadata is stale"*. This is the easiest gate to miss, because nothing in the tool file hints that a generated artifact mirrors it.
302+
- **`generate-docs`** — required whenever block metadata changes (`bgColor`, `name`, `description`, operations, outputs). Regenerates the integration `.mdx`, `integrations.json`, and the docs copy of `components/icons.tsx`.
303+
304+
**Always diff the regen output before committing.** These generators rewrite every file they own, so they will also sweep in unrelated drift that accumulated on the base branch — pages losing sections, unrelated icons appearing. Keep only the hunks belonging to the integration under validation and `git checkout --` the rest, otherwise an unrelated doc regression rides along in the PR. Verify no page was silently dropped by comparing the directory listing before and after.
305+
306+
If an icon changed, `apps/sim/components/icons.tsx` is the source of truth and `apps/docs/components/icons.tsx` is its generated mirror — they must end up byte-identical for that component.
307+
292308
### Validation Output
293309

294310
After fixing, confirm:
295311
1. `bun run lint` passes with no fixes needed
296-
2. TypeScript compiles clean (no type errors)
297-
3. Re-read all modified files to verify fixes are correct
298-
4. Any remaining unknown response schemas were explicitly reported to the user instead of guessed
312+
2. TypeScript compiles clean (no type errors) — check the error list is empty for the files you touched; pre-existing unrelated errors in a worktree usually mean workspace packages resolve to the main checkout
313+
3. The integration's tests pass, and any test you added actually fails without its fix (revert it once and watch it go red)
314+
4. Derived artifacts regenerated and their diffs reviewed (see above)
315+
5. Re-read all modified files to verify fixes are correct
316+
6. Any remaining unknown response schemas were explicitly reported to the user instead of guessed
299317

300318
## Checklist Summary
301319

@@ -316,5 +334,8 @@ After fixing, confirm:
316334
- [ ] Validated `{Service}BlockMeta` exported with at least 7 templates
317335
- [ ] Reported all issues grouped by severity
318336
- [ ] Fixed all critical and warning issues
337+
- [ ] Ran `bun run tool-metadata:generate` if any tool outputs/params changed, and confirmed `bun run tool-metadata:check` passes
338+
- [ ] Ran `bun run generate-docs` if any block metadata changed, and reverted unrelated drift the generator swept in
319339
- [ ] Ran `bun run lint` after fixes
320340
- [ ] Verified TypeScript compiles clean
341+
- [ ] Verified added tests fail without their fix

apps/docs/components/icons.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8767,12 +8767,12 @@ export function LogfireIcon(props: SVGProps<SVGSVGElement>) {
87678767
return (
87688768
<svg
87698769
{...props}
8770-
viewBox='0 0 138 120'
8770+
viewBox='0 0 750 750'
87718771
fill='currentColor'
87728772
role='img'
87738773
xmlns='http://www.w3.org/2000/svg'
87748774
>
8775-
<path d='M137.041 90.563 73.326 2.241c-2.005-2.757-6.628-2.757-8.613 0L.998 90.563A5.32 5.32 0 0 0 0 93.664a5.331 5.331 0 0 0 3.641 5.05l63.715 20.851h.01a5.306 5.306 0 0 0 3.292 0h.01l63.715-20.85a5.265 5.265 0 0 0 3.392-3.406 5.247 5.247 0 0 0-.749-4.746h.015ZM69.022 14.412 94.56 49.815l-23.882-7.813c-.185-.06-.38-.05-.564-.094a3.484 3.484 0 0 0-.548-.09c-.185-.025-.36-.095-.544-.095-.185 0-.354.07-.539.095-.184.02-.369.05-.548.09-.19.035-.384.035-.554.094L43.644 49.77l-.15.05L69.032 14.41h-.01ZM32.94 64.438l27.802-9.104 2.968-.967v52.838L13.86 90.887 32.94 64.438Zm41.399 42.757V54.367l30.77 10.071 19.079 26.434-49.854 16.323h.005Z' />
8775+
<path d='M 741.496094 539.726562 L 398.203125 63.890625 C 387.398438 49.039062 362.480469 49.039062 351.789062 63.890625 L 8.492188 539.726562 C 6.746094 542.160156 5.414062 544.804688 4.496094 547.65625 C 3.578125 550.511719 3.117188 553.4375 3.117188 556.433594 C 3.117188 557.929688 3.238281 559.414062 3.472656 560.890625 C 3.703125 562.371094 4.050781 563.820312 4.511719 565.242188 C 4.972656 566.664062 5.539062 568.042969 6.214844 569.378906 C 6.890625 570.710938 7.667969 571.984375 8.542969 573.199219 C 9.417969 574.410156 10.378906 575.550781 11.433594 576.613281 C 12.484375 577.675781 13.613281 578.648438 14.816406 579.535156 C 16.023438 580.421875 17.289062 581.207031 18.617188 581.898438 C 19.941406 582.585938 21.316406 583.167969 22.734375 583.640625 L 366.03125 695.972656 L 366.085938 695.972656 C 368.96875 696.914062 371.921875 697.382812 374.953125 697.382812 C 377.984375 697.382812 380.941406 696.914062 383.824219 695.972656 L 383.875 695.972656 L 727.175781 583.644531 C 729.316406 582.953125 731.347656 582.015625 733.265625 580.839844 C 735.183594 579.660156 736.941406 578.273438 738.527344 576.679688 C 740.117188 575.082031 741.496094 573.324219 742.667969 571.398438 C 743.835938 569.476562 744.765625 567.441406 745.449219 565.296875 C 746.15625 563.15625 746.601562 560.96875 746.785156 558.722656 C 746.96875 556.480469 746.882812 554.246094 746.53125 552.023438 C 746.183594 549.796875 745.574219 547.644531 744.710938 545.566406 C 743.84375 543.488281 742.746094 541.542969 741.414062 539.726562 Z M 375.011719 129.460938 L 512.605469 320.195312 L 383.929688 278.105469 C 382.941406 277.78125 381.882812 277.835938 380.894531 277.597656 C 379.917969 277.355469 378.933594 277.195312 377.933594 277.113281 C 376.945312 276.976562 376 276.601562 375.011719 276.601562 C 374.015625 276.601562 373.097656 276.976562 372.101562 277.113281 C 371.109375 277.21875 370.121094 277.382812 369.152344 277.597656 C 368.128906 277.785156 367.082031 277.785156 366.167969 278.105469 L 238.269531 319.953125 L 237.460938 320.222656 L 375.070312 129.453125 L 375.015625 129.453125 Z M 180.597656 398.976562 L 330.394531 349.929688 L 346.386719 344.71875 L 346.386719 629.386719 L 77.804688 541.472656 Z M 403.65625 629.332031 L 403.65625 344.71875 L 569.445312 398.976562 L 672.246094 541.390625 L 403.628906 629.332031 Z M 403.65625 629.332031 ' />
87768776
</svg>
87778777
)
87788778
}

apps/docs/content/docs/en/integrations/logfire.mdx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
77

88
<BlockInfoCard
99
type="logfire"
10-
color="#E520E9"
10+
color="#000000"
1111
/>
1212

1313
{/* MANUAL-CONTENT-START:intro */}
@@ -95,7 +95,7 @@ Search Logfire spans and logs using structured filters for message text, service
9595
|`level` | string | Severity name, such as info, warn, or error |
9696
|`message` | string | Human-readable message |
9797
|`spanName` | string | Template label for similar records |
98-
|`kind` | string | Record kind: span, log, or span_event |
98+
|`kind` | string | Record kind: span, log, span_event, or pending_span |
9999
|`serviceName` | string | Service that emitted the record |
100100
|`deploymentEnvironment` | string | Deployment environment of the record |
101101
|`traceId` | string | Trace this record belongs to |
@@ -134,7 +134,7 @@ Fetch every span and log belonging to a Logfire trace, ordered from earliest to
134134
|`level` | string | Severity name, such as info, warn, or error |
135135
|`message` | string | Human-readable message |
136136
|`spanName` | string | Template label for similar records |
137-
|`kind` | string | Record kind: span, log, or span_event |
137+
|`kind` | string | Record kind: span, log, span_event, or pending_span |
138138
|`serviceName` | string | Service that emitted the record |
139139
|`deploymentEnvironment` | string | Deployment environment of the record |
140140
|`traceId` | string | Trace this record belongs to |
@@ -164,5 +164,7 @@ Resolve which Logfire organization and project a read token belongs to. Useful f
164164
| --------- | ---- | ----------- |
165165
| `organizationName` | string | Logfire organization the read token belongs to |
166166
| `projectName` | string | Logfire project the read token belongs to |
167+
| `expiresAt` | string | When the read token expires. Null when it never expires. |
168+
| `spendingCapReachedAt` | string | When the organization's spending cap was reached, which stops queries. Null when it has not been reached. |
167169

168170

0 commit comments

Comments
 (0)