Skip to content

feat: Add tracing configuration and instances documentation#84

Merged
ssdeanx merged 1 commit intomainfrom
develop
Jan 10, 2026
Merged

feat: Add tracing configuration and instances documentation#84
ssdeanx merged 1 commit intomainfrom
develop

Conversation

@ssdeanx
Copy link
Owner

@ssdeanx ssdeanx commented Jan 10, 2026

  • Create tracing-configuration-reference.md to document the ObservabilityRegistryConfig, ObservabilityInstanceConfig, SerializationOptions, SamplingStrategy, and related interfaces and methods for tracing configuration.
  • Create tracing-instances-reference.md to document the DefaultObservabilityInstance, BaseObservabilityInstance, and how to implement custom observability instances.

feat: Introduce tracing interfaces documentation

  • Create tracing-interfaces-reference.md detailing core interfaces such as ObservabilityInstance, Span, ObservabilityExporter, and SpanOutputProcessor, along with their methods and properties.
  • Document span types and key attributes for better understanding of tracing mechanisms.

feat: Add spans reference documentation

  • Create tracing-spans-reference.md to define BaseSpan, Span, and ExportedSpan interfaces, including lifecycle methods and events for span management.
  • Document span lifecycle events and introduce union types for handling spans.

chore: Implement LibSQL configuration for memory storage

  • Create libsql.ts to configure LibSQLStore and LibSQLVector for vector storage and querying.
  • Initialize vector store with index creation and metadata handling.
  • Set up memory management options including semantic recall and working memory templates.
  • Log initialization details for database schema and memory options.

- Create `tracing-configuration-reference.md` to document the `ObservabilityRegistryConfig`, `ObservabilityInstanceConfig`, `SerializationOptions`, `SamplingStrategy`, and related interfaces and methods for tracing configuration.
- Create `tracing-instances-reference.md` to document the `DefaultObservabilityInstance`, `BaseObservabilityInstance`, and how to implement custom observability instances.

feat: Introduce tracing interfaces documentation
- Create `tracing-interfaces-reference.md` detailing core interfaces such as `ObservabilityInstance`, `Span`, `ObservabilityExporter`, and `SpanOutputProcessor`, along with their methods and properties.
- Document span types and key attributes for better understanding of tracing mechanisms.

feat: Add spans reference documentation
- Create `tracing-spans-reference.md` to define `BaseSpan`, `Span`, and `ExportedSpan` interfaces, including lifecycle methods and events for span management.
- Document span lifecycle events and introduce union types for handling spans.

chore: Implement LibSQL configuration for memory storage
- Create `libsql.ts` to configure `LibSQLStore` and `LibSQLVector` for vector storage and querying.
- Initialize vector store with index creation and metadata handling.
- Set up memory management options including semantic recall and working memory templates.
- Log initialization details for database schema and memory options.
Copilot AI review requested due to automatic review settings January 10, 2026 01:28
@continue
Copy link

continue bot commented Jan 10, 2026

All Green - Keep your PRs mergeable

Learn more

All Green is an AI agent that automatically:

✅ Addresses code review comments

✅ Fixes failing CI checks

✅ Resolves merge conflicts


Unsubscribe from All Green comments

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @ssdeanx, your pull request is larger than the review limit of 150000 diff characters

@github-actions
Copy link

🤖 Hi @ssdeanx, I've received your request, and I'm working on it now! You can track my progress in the logs for more details.

@coderabbitai
Copy link

coderabbitai bot commented Jan 10, 2026

Caution

Review failed

The pull request is closed.

Summary by CodeRabbit

  • Documentation

    • Added comprehensive tracing guides covering custom metadata extraction, child span creation, and semantic conventions.
    • Added configuration and instance references for observability setup.
  • New Features

    • Introduced CloudExporter for enhanced observability and telemetry collection.
    • Added LibSQL-backed memory configuration with semantic recall and working memory support.
  • Refactor

    • Improved internal tracing instrumentation across tools for better observability and context propagation.
    • Enhanced request context support across multiple tools.

✏️ Tip: You can customize this high-level summary in your review settings.

Walkthrough

This PR adds comprehensive observability documentation for tracing, refactors tool implementations to migrate from OpenTelemetry tracer to a unified tracingContext-based child span API, introduces lifecycle hooks for streaming operations, extends context types with user and workspace metadata, and updates configuration for observability exporters.

Changes

Cohort / File(s) Summary
Documentation – Observability & Tracing References
docs/adding-custom-metadata.md, docs/creating-child-spans.md, docs/opentelemetry-semantic-conventions.md, docs/tracing-configuration-reference.md, docs/tracing-instances-reference.md, docs/tracing-interfaces-reference.md, docs/tracing-spans-reference.md
Seven new documentation files detailing tracing configuration, interfaces, span lifecycle, child span creation, and semantic conventions. Introduces public API documentation for observability registry config, sampling strategies, span types, and metadata extraction patterns.
Documentation – Tool Tracing Patterns
src/mastra/tools/AGENTS.md
Adds comprehensive guide for standardized tracing patterns in tools, including migration from direct OpenTelemetry usage to tracingContext, span lifecycle examples, progress event emission, lifecycle hooks, and testing guidance.
Import Restructuring
src/mastra/agents/codingAgents.ts
Replaces namespace import (import * as e2bTools) with explicit named imports for individual e2b tool functions; updates agent tool registrations to use named tools directly instead of spread operator.
Observability Configuration
src/mastra/index.ts
Adds CloudExporter to public exports; removes OtelExporter. Extends requestContextKeys to include tool.id, agent.id, workflow.id, memory.thread.id, user.id. Updates exporter strategy to 'auto' with larger batching settings.
Memory Configuration
src/mastra/config/libsql.ts
Introduces LibSQL-backed memory instance with vector index, semantic recall, and working memory configuration. Exports ready-to-use LibsqlMemory wired to LibSQL storage and Google Gemini embedding.
Tool Migration – Observability & Context
src/mastra/tools/alpha-vantage.tool.ts, src/mastra/tools/arxiv.tool.ts, src/mastra/tools/browser-tool.ts, src/mastra/tools/calculator.tool.ts, src/mastra/tools/calendar-tool.ts, src/mastra/tools/code-analysis.tool.ts, src/mastra/tools/code-chunking.ts, src/mastra/tools/code-search.tool.ts, src/mastra/tools/color-change-tool.ts, src/mastra/tools/copywriter-agent-tool.ts, src/mastra/tools/csv-to-json.tool.ts, src/mastra/tools/data-file-manager.ts, src/mastra/tools/data-processing-tools.ts, src/mastra/tools/data-validator.tool.ts, src/mastra/tools/datetime.tool.ts, src/mastra/tools/diff-review.tool.ts, src/mastra/tools/document-chunking.tool.ts, src/mastra/tools/editor-agent-tool.ts, src/mastra/tools/evaluateResultTool.ts, src/mastra/tools/execa-tool.ts, src/mastra/tools/fs.ts, src/mastra/tools/json-to-csv.tool.ts, src/mastra/tools/pnpm-tool.ts, src/mastra/tools/serpapi-academic-local.tool.ts, src/mastra/tools/serpapi-news-trends.tool.ts, src/mastra/tools/serpapi-search.tool.ts, src/mastra/tools/serpapi-shopping.tool.ts, src/mastra/tools/test-generator.tool.ts, src/mastra/tools/text-analysis.tool.ts, src/mastra/tools/url-tool.ts, src/mastra/tools/weather-tool.ts, src/mastra/tools/write-note.ts
Systematic migration across 32 tool files replacing OpenTelemetry tracer usage with tracingContext-based child spans (SpanType.TOOL_CALL). Introduces/updates request context interfaces with userId, workspaceId, and user-tier fields. Adds lifecycle hooks (onInputStart, onInputDelta, onInputAvailable, onOutput). Updates span lifecycle: creation, update with metadata/output, error handling via span.error, and conditional end(). Updates public signatures to include new execute patterns and streaming hooks.

Sequence Diagram(s)

sequenceDiagram
    participant Tool as Tool Execution
    participant Ctx as Tracing Context
    participant Span as Child Span
    participant Exporter as Span Exporter

    Tool->>Ctx: Extract tracingContext from context
    Tool->>Span: createChildSpan(TOOL_CALL, name, input, metadata)
    activate Span
    Note over Span: Span created with input & metadata
    
    Tool->>Span: update(output, metadata)
    Note over Span: Span updated with results
    
    alt Success Path
        Tool->>Span: end()
        Span->>Exporter: emit SPAN_ENDED event
    else Error Path
        Tool->>Span: error(error, {endSpan: true})
        Span->>Exporter: emit error with SPAN_ENDED event
    end
    deactivate Span
Loading
sequenceDiagram
    participant Client as Tool Lifecycle Hooks
    participant Tool as Tool Execute
    participant Span as Child Span
    participant Writer as Progress Writer

    Client->>Client: onInputStart()
    Note over Client: Log input received
    
    Tool->>Tool: abortSignal check
    Tool->>Span: createChildSpan
    
    Client->>Writer: custom(in-progress)
    Note over Writer: Emit progress event
    
    Tool->>Tool: Process operation
    Tool->>Span: update(output, metadata)
    
    Client->>Client: onOutput()
    Note over Client: Log output ready
    
    Client->>Writer: custom(done)
    Note over Writer: Emit completion event
    
    Tool->>Span: end()
    Note over Span: Finalize span
Loading

Estimated Code Review Effort

🎯 4 (Complex) | ⏱️ ~60 minutes

This PR exhibits high complexity due to: (1) seven new documentation files with detailed API specifications and examples requiring careful review for accuracy; (2) systematic refactoring across 32 tool files following a consistent but implementation-specific pattern (tracingContext migration, span lifecycle changes, context extensions); (3) public API changes including new exports, interface extensions, and signature updates; (4) coordination of multiple interdependent changes (imports, context types, lifecycle hooks, exporter configuration); (5) heterogeneous logic updates including error handling paths, progress signaling, and span metadata attachment that vary per tool.

Possibly Related PRs

Poem

🐰 Traces now flow through child spans so bright,
Context-aware tools trace every flight,
Lifecycle hooks log the input, the way,
Progress events dance, metadata at play,
Observability blooms—telemetry's delight! 🌟

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch develop

📜 Recent review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2f617e6 and 886f093.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (46)
  • docs/adding-custom-metadata.md
  • docs/creating-child-spans.md
  • docs/opentelemetry-semantic-conventions.md
  • docs/otel-semantic-conventions.html
  • docs/tracing-configuration-reference.md
  • docs/tracing-instances-reference.md
  • docs/tracing-interfaces-reference.md
  • docs/tracing-spans-reference.md
  • src/mastra/agents/codingAgents.ts
  • src/mastra/config/libsql.ts
  • src/mastra/index.ts
  • src/mastra/tools/AGENTS.md
  • src/mastra/tools/alpha-vantage.tool.ts
  • src/mastra/tools/arxiv.tool.ts
  • src/mastra/tools/browser-tool.ts
  • src/mastra/tools/calculator.tool.ts
  • src/mastra/tools/calendar-tool.ts
  • src/mastra/tools/code-analysis.tool.ts
  • src/mastra/tools/code-chunking.ts
  • src/mastra/tools/code-search.tool.ts
  • src/mastra/tools/color-change-tool.ts
  • src/mastra/tools/copywriter-agent-tool.ts
  • src/mastra/tools/csv-to-json.tool.ts
  • src/mastra/tools/data-file-manager.ts
  • src/mastra/tools/data-processing-tools.ts
  • src/mastra/tools/data-validator.tool.ts
  • src/mastra/tools/datetime.tool.ts
  • src/mastra/tools/diff-review.tool.ts
  • src/mastra/tools/document-chunking.tool.ts
  • src/mastra/tools/e2b.ts
  • src/mastra/tools/editor-agent-tool.ts
  • src/mastra/tools/evaluateResultTool.ts
  • src/mastra/tools/execa-tool.ts
  • src/mastra/tools/fs.ts
  • src/mastra/tools/json-to-csv.tool.ts
  • src/mastra/tools/pnpm-tool.ts
  • src/mastra/tools/serpapi-academic-local.tool.ts
  • src/mastra/tools/serpapi-news-trends.tool.ts
  • src/mastra/tools/serpapi-search.tool.ts
  • src/mastra/tools/serpapi-shopping.tool.ts
  • src/mastra/tools/test-generator.tool.ts
  • src/mastra/tools/text-analysis.tool.ts
  • src/mastra/tools/url-tool.ts
  • src/mastra/tools/weather-tool.ts
  • src/mastra/tools/web-scraper-tool.ts
  • src/mastra/tools/write-note.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@github-actions
Copy link

🤖 I'm sorry @ssdeanx, but I was unable to process your request. Please see the logs for more details.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @ssdeanx, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the system's observability framework by introducing extensive documentation and standardizing the tracing implementation across various tools. It centralizes tracing logic within Mastra's internal context, ensuring a more cohesive and maintainable approach to monitoring. Additionally, it incorporates LibSQL for efficient memory management and updates core observability configurations.

Highlights

  • New Tracing Documentation: Comprehensive documentation has been added for tracing configuration, instances, interfaces, and span management, providing detailed references for developers.
  • Standardized Tracing Implementation: All tools have been refactored to use Mastra's internal tracing context, migrating away from direct OpenTelemetry API calls to ensure consistent and integrated observability.
  • LibSQL Integration: LibSQL has been integrated for memory storage, including configuration for vector storage, index creation, and semantic recall options.
  • Observability Configuration Updates: The main observability configuration now uses CloudExporter and includes an expanded set of requestContextKeys for richer trace metadata.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@ssdeanx ssdeanx merged commit 0433b5b into main Jan 10, 2026
24 of 29 checks passed
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant enhancement to the project's observability by adding comprehensive documentation for tracing and refactoring a large number of tools to use a new, centralized tracingContext. This is a great step towards standardizing instrumentation and improving maintainability. The introduction of LibSQL configuration is also a notable addition.

My review focuses on the correctness of the new LibSQL configuration and the consistency of the tracing migration across the various tools. While most of the refactoring is well-executed, there are some potential issues, particularly in the libsql.ts configuration, which I've detailed in the comments.

Comment on lines +21 to +47
await libsqlvector.createIndex({
indexName: "memory_messages",
dimension: 3072,
metric: "cosine"
});

// Add vectors with metadata
const vectors = [[0.1, 0.2], [0.3, 0.4]];
const metadata = [
{ text: "first document", category: "A" },
{ text: "second document", category: "B" }
];
await libsqlvector.upsert({
indexName: "memory_messages",
vectors,
metadata,
});

// Query similar vectors
const queryVector = [0.1, 0.2]; // Your query vector

const results = await libsqlvector.query({
indexName: "memory_messages",
queryVector,
topK: 10, // top K results
filter: { category: "A" } // optional metadata filter
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

This block of code, which creates an index, upserts sample data, and performs a query, appears to be for testing or demonstration purposes. Including such side-effects in a configuration file that runs on module import is not a good practice. This can lead to unexpected behavior in production and makes the module stateful. This logic should be moved to a dedicated setup script, a test file, or an example usage file.

Comment on lines +93 to +118
log.info('PG Store and Memory initialized with PgVector support', {
schema: process.env.DB_SCHEMA ?? 'mastra',
maxConnections: parseInt(process.env.DB_MAX_CONNECTIONS ?? '20'),

memoryOptions: {
lastMessages: parseInt(process.env.MEMORY_LAST_MESSAGES ?? '500'),
semanticRecall: {
topK: parseInt(process.env.SEMANTIC_TOP_K ?? '5'),
messageRange: {
before: parseInt(process.env.SEMANTIC_RANGE_BEFORE ?? '3'),
after: parseInt(process.env.SEMANTIC_RANGE_AFTER ?? '2'),
},
scope: 'resource',
indexConfig: {
type: 'ivfflat', // flat index type (supports dimensions > 4000, unlike HNSW limit of 2000)
metric: 'cosine', // Distance metric for normalized embeddings
}
},
workingMemory: {
enabled: true,
scope: 'resource',
version: 'vnext',
}

},
})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The log message 'PG Store and Memory initialized with PgVector support' is misleading as this file configures LibSQL, not PostgreSQL. The logged object also contains properties like schema, maxConnections, and indexConfig: { type: 'ivfflat' }, which are specific to PostgreSQL and pgvector. This appears to be a copy-paste error and should be corrected to reflect the actual LibSQL configuration to avoid confusion during debugging.

},
}
span.end()
cryptoSpan?.end()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The span is ended here without capturing any output metadata. It's a good practice to update the span with key results before ending it, which improves observability. Consider using cryptoSpan?.update({ output: result, metadata: { ... } }) before cryptoSpan?.end().

      cryptoSpan?.update({
        output: result,
        metadata: {
          'tool.output.success': true,
          'tool.output.dataKeys': Object.keys(result.data).length,
        }
      });
      cryptoSpan?.end()

},
}
span.end()
stockSpan?.end()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Similar to the crypto tool, the span for the stock tool is ended without capturing output metadata. To improve tracing and observability, you should update the span with the result before ending it.

      stockSpan?.update({
        output: result,
        metadata: {
          'tool.output.success': true,
          'tool.output.dataKeys': Object.keys(result.data).length,
        }
      });
      stockSpan?.end()

},
}
span.end()
generalSpan?.end()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The span for the general Alpha Vantage tool is ended without capturing any output metadata. For consistency and better observability, please add a span.update() call with relevant output details before ending the span.

      generalSpan?.update({
        output: result,
        metadata: {
          'tool.output.success': true,
          'tool.output.dataKeys': Object.keys(result.data).length,
        }
      });
      generalSpan?.end()

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request refactors tracing implementation across multiple tool files from OpenTelemetry API direct usage (@opentelemetry/api) to Mastra's observability system (@mastra/core/observability). The changes introduce unified tracing patterns, add user/workspace context tracking, and improve error handling consistency.

Key Changes:

  • Replace trace.getTracer().startSpan() with tracingContext?.currentSpan?.createChildSpan()
  • Update span lifecycle methods: span.setAttributes()span.update(), span.recordException()span.error()
  • Add userId and workspaceId context fields to tool contexts
  • Improve null safety with optional chaining throughout

Reviewed changes

Copilot reviewed 45 out of 47 changed files in this pull request and generated 58 comments.

Show a summary per file
File Description
write-note.ts Refactored to use Mastra tracing with child spans for note write operations
web-scraper-tool.ts Large refactor with indentation fixes and tracing updates across 6 scraper tools
weather-tool.ts Updated weather lookup with Mastra tracing and improved abort signal handling
url-tool.ts Both validation and manipulation tools refactored with proper type annotations
text-analysis.tool.ts Both analysis and processing tools updated with consistent tracing patterns
test-generator.tool.ts Tracing updates and formatting standardization (indentation from tabs to spaces)
serpapi-shopping.tool.ts Four shopping tools (Amazon, Walmart, eBay, Home Depot) updated with tracing
serpapi-search.tool.ts Google search and AI overview tools refactored with improved metadata tracking
json-to-csv.tool.ts Conversion tool updated with Mastra tracing and null coalescing operators
fs.ts Filesystem operations tool refactored with proper error handling

Comment on lines +39 to +53
// Query similar vectors
const queryVector = [0.1, 0.2]; // Your query vector

const results = await libsqlvector.query({
indexName: "memory_messages",
queryVector,
topK: 10, // top K results
filter: { category: "A" } // optional metadata filter
});

export const LibsqlMemory = new Memory({
storage: libsqlstorage,
vector: libsqlvector,
embedder: google.textEmbedding('gemini-embedding-001'),
options: {
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'results' is assigned a value but never used.

Suggested change
// Query similar vectors
const queryVector = [0.1, 0.2]; // Your query vector
const results = await libsqlvector.query({
indexName: "memory_messages",
queryVector,
topK: 10, // top K results
filter: { category: "A" } // optional metadata filter
});
export const LibsqlMemory = new Memory({
storage: libsqlstorage,
vector: libsqlvector,
embedder: google.textEmbedding('gemini-embedding-001'),
options: {
// Query similar vectors (example query removed to avoid unused results)
export const LibsqlMemory = new Memory({
storage: libsqlstorage,
vector: libsqlvector,
embedder: google.textEmbedding('gemini-embedding-001'),
options: {
options: {

Copilot uses AI. Check for mistakes.
// Check for cancellation before API call
if (abortSignal?.aborted) {
if (span) {
const spanAny = span as any
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unexpected any. Specify a different type.

Copilot uses AI. Check for mistakes.
max_results: inputData.max_results ?? 10,
}
if (span) {
const spanAny = span as any
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unexpected any. Specify a different type.

Copilot uses AI. Check for mistakes.
if (error instanceof Error && error.name === 'AbortError') {
const cancelMessage = `ArXiv search cancelled for "${inputData.query ?? inputData.id ?? 'papers'}"`
if (span) {
const spanAny = span as any
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unexpected any. Specify a different type.

Copilot uses AI. Check for mistakes.
? error.message
: 'Unknown error occurred'
if (span) {
const spanAny = span as any
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unexpected any. Specify a different type.

Copilot uses AI. Check for mistakes.
}),
execute: async (inputData, context) => {
const writer = context?.writer
const abortSignal = context?.abortSignal
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'abortSignal' is assigned a value but never used.

Copilot uses AI. Check for mistakes.
}),
execute: async (inputData, context) => {
const writer = context?.writer
const abortSignal = context?.abortSignal
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'abortSignal' is assigned a value but never used.

Copilot uses AI. Check for mistakes.
}),
execute: async (inputData, context) => {
const writer = context?.writer
const abortSignal = context?.abortSignal
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'abortSignal' is assigned a value but never used.

Copilot uses AI. Check for mistakes.
}),
execute: async (inputData, context) => {
const writer = context?.writer
const abortSignal = context?.abortSignal
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'abortSignal' is assigned a value but never used.

Copilot uses AI. Check for mistakes.
const totalLines = content.split('\n').length
let sanitized = content
const totalLines = content.split('\n').length
let sanitized = content
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The initial value of sanitized is unused, since it is always overwritten.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant