From d15dcd682ef637dffade3a91935c0d42ac829f03 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Wed, 18 Feb 2026 12:14:06 +0200 Subject: [PATCH 1/5] Add readme --- README.md | 602 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 602 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1eaeb9e --- /dev/null +++ b/README.md @@ -0,0 +1,602 @@ +# tc-ai-api — Comprehensive Technical Documentation + +## Table of Contents + +1. [Overview](#overview) +2. [Technology Stack](#technology-stack) +3. [Project Structure](#project-structure) +4. [Environment Variables](#environment-variables) +5. [Framework Setup — Mastra](#framework-setup--mastra) +6. [Database Layer](#database-layer) +7. [Authentication & Middleware](#authentication--middleware) +8. [Observability & Logging](#observability--logging) +9. [AI Model Provider — Ollama](#ai-model-provider--ollama) +10. [Agents](#agents) +11. [Tools](#tools) +12. [Scorers (Evaluation)](#scorers-evaluation) +13. [Workflows — Skill Extraction](#workflows--skill-extraction) +14. [Sequence Diagrams](#sequence-diagrams) +15. [External API Interactions](#external-api-interactions) +16. [CI/CD Pipeline](#cicd-pipeline) +17. [Deployment](#deployment) + +--- + +## Overview + +**tc-ai-api** is a Topcoder AI microservice built on the [Mastra](https://mastra.ai) AI orchestration framework. Its primary capability today is **Skill Extraction** — given a free-text job description, it identifies and matches relevant skills against Topcoder's Standardized Skills taxonomy using a multi-stage pipeline that combines LLM-based term extraction, fuzzy matching, and semantic search. + +The service exposes a Hono-based HTTP API (managed by Mastra's built-in server), is authenticated via Auth0 JWTs, uses PostgreSQL for storage and agent memory, runs local LLM inference through Ollama, and ships with built-in observability and evaluation scorers. + +--- + +## Technology Stack + +| Layer | Technology | +| ------------------- | ----------------------------------------------------------- | +| **Runtime** | Node.js ≥ 22.13.0 (`.nvmrc`: v24.13.0) | +| **Language** | TypeScript 5.9+ (ES2022, ESM) | +| **Package Manager** | pnpm 10.28.0 | +| **AI Framework** | Mastra (`@mastra/core` ^1.2.0) | +| **AI SDK** | Vercel AI SDK (`ai` ^6.0.71) | +| **LLM Provider** | Ollama via `ai-sdk-ollama` ^3.4.0 | +| **HTTP Server** | Hono (embedded in Mastra) | +| **Database** | PostgreSQL via `@mastra/pg` ^1.2.0 | +| **Auth** | Auth0 via `@mastra/auth-auth0` ^1.0.0 | +| **Observability** | OpenTelemetry via `@mastra/observability` ^1.2.0 | +| **Logging** | Pino via `@mastra/loggers` ^1.0.1 | +| **Evals** | `@mastra/evals` ^1.1.0 (Answer Relevancy, Prompt Alignment) | +| **Schema** | Zod 4.3+ | +| **Linting** | ESLint 9 + typescript-eslint | +| **Formatting** | Prettier 3.8+ | +| **CI/CD** | CircleCI → AWS ECS (Fargate) | +| **Container** | Docker (node:24.13.0-alpine) | + +--- + +## Project Structure + +``` +tc-ai-api/ +├── .circleci/config.yml # CircleCI build/deploy pipeline +├── .github/workflows/ # GitHub Actions (code reviewer) +├── .mastra/ # Mastra build artifacts (git-ignored) +├── src/ +│ ├── mastra/ +│ │ ├── index.ts # ★ Mastra instance — wires everything together +│ │ ├── agents/ +│ │ │ └── skills/ +│ │ │ └── skills-matching-agent.ts # LLM agent for term extraction +│ │ ├── tools/ +│ │ │ └── skills/ +│ │ │ ├── standardized-skills-fuzzy-tool.ts # Fuzzy-match API tool +│ │ │ └── standardized-skills-semantic-tool.ts # Semantic-search API tool +│ │ ├── workflows/ +│ │ │ └── skills/ +│ │ │ └── skill-extraction-workflow.ts # ★ Main orchestration workflow +│ │ ├── scorers/ +│ │ │ └── skills-matching-scorers.ts # Evaluation scorers +│ │ └── public/ # Static assets (empty) +│ └── utils/ +│ ├── index.ts # Barrel re-exports +│ ├── logger.ts # Pino logger configuration +│ ├── auth/ +│ │ └── index.ts # Auth0 composite auth setup +│ ├── middleware/ +│ │ ├── index.ts # Middleware registration +│ │ └── resourceIdMiddleware.ts # Resource isolation middleware +│ └── providers/ +│ └── ollama.ts # Ollama AI provider config +├── Dockerfile # Production container image +├── appStartUp.sh # Container entrypoint +├── package.json +├── tsconfig.json +├── eslint.config.mjs +├── .prettierrc / .prettierignore +└── .env # Local environment variables +``` + +--- + +## Environment Variables + +| Variable | Required | Default | Description | +| ----------------------------------- | -------- | -------------------------------------- | ---------------------------------------------------------------- | +| `PORT` | No | `3000` | HTTP server port | +| `MASTRA_DB_CONNECTION` | **Yes** | — | PostgreSQL connection string for Mastra storage and agent memory | +| `MASTRA_DB_SCHEMA` | No | `ai` | PostgreSQL schema name for Mastra tables | +| `TC_API_BASE` | **Yes** | — | Topcoder API base URL (e.g. `https://api.topcoder-dev.com`) | +| `OLLAMA_API_URL` | No | `http://ollama.topcoder-dev.com:11434` | Ollama API endpoint for LLM inference | +| `MASTRA_EVAL_MODEL` | No | `mistral:latest` | Ollama model used for evaluation scorers | +| `AUTH0_DOMAIN` | Yes\* | — | Auth0 domain for member JWT validation | +| `AUTH0_AUDIENCE` | Yes\* | — | Auth0 audience (client ID) for member tokens | +| `AUTH0_M2M_DOMAIN` | Yes\* | — | Auth0 domain for M2M JWT validation | +| `AUTH0_M2M_AUDIENCE` | Yes\* | — | Auth0 audience for M2M tokens | +| `DISABLE_AUTH` | No | `false` | Set to `"true"` to disable all authentication (dev mode) | +| `JD_MAX_CHARS` | No | `6000` | Max character length for job description preprocessing | +| `SKILL_MATCHING_FUZZY_MATCH_SIZE` | No | `3` | Number of candidates returned per fuzzy-match query | +| `SKILL_MATCHING_CONCURRENCY` | No | `5` | Concurrency limit for parallel skill-matching requests | +| `SKILL_MATCHING_SEMANTIC_THRESHOLD` | No | `0.45` | Max cosine distance for semantic matches (lower = stricter) | +| `SKILL_DISCOVERY_EVAL_SAMPLE_RATE` | No | `0.5` | Fraction of agent interactions sampled for evaluation scoring | + +> \* Auth0 variables are required unless `DISABLE_AUTH=true`. + +--- + +## Framework Setup — Mastra + +The application is bootstrapped in `src/mastra/index.ts` by instantiating a single `Mastra` object that wires together every subsystem: + +```typescript +export const mastra = new Mastra({ + workflows: { skillExtractionWorkflow }, + agents: { skillsMatchingAgent }, + scorers: { ...evalScorers }, + storage: new PostgresStore({ connectionString, schemaName }), + logger: tcAILogger, // Pino + observability: new Observability({...}), // OpenTelemetry + server: { + port: 3000, + auth: apiAuthLayer, // CompositeAuth (Auth0) + middleware: middlewareConfig, // resourceIdMiddleware + }, +}); +``` + +### NPM Scripts + +| Script | Command | Description | +| -------------- | -------------------- | --------------------------------------------------------------- | +| `dev` | `mastra dev` | Start dev server with hot-reload and Mastra Studio at `/studio` | +| `build` | `mastra build` | Production build (bundles into `.mastra/output/`) | +| `start` | `mastra start` | Start production server from build output | +| `studio` | `mastra studio` | Launch Mastra Studio UI standalone | +| `lint` | `eslint .` | Run ESLint across the project | +| `lint:fix` | `eslint . --fix` | Auto-fix lint issues | +| `format` | `prettier . --write` | Format all files | +| `format:check` | `prettier . --check` | Check formatting without writing | + +--- + +## Database Layer + +### Storage Backend: PostgreSQL (`@mastra/pg`) + +The application uses a **single PostgreSQL database** with a configurable schema (default: `ai`). Two `PostgresStore` instances are created: + +1. **Global Mastra Storage** (`src/mastra/index.ts`) + - ID: `tc-ai-api-store` + - Stores: workflow run state, step execution logs, evaluation results, and general Mastra metadata. + +2. **Agent Memory Storage** (`src/mastra/agents/skills/skills-matching-agent.ts`) + - ID: `skills-matching-agent-memory` + - Stores: conversation threads and message history for the `skillsMatchingAgent`, enabling multi-turn memory when interacting with the agent directly. + +Both point to the same connection string (`MASTRA_DB_CONNECTION`) and schema (`MASTRA_DB_SCHEMA`), but are logically separate stores within Mastra's storage abstraction. + +### Schema Management + +Mastra automatically manages table creation and migrations within the configured PostgreSQL schema. No manual migration steps are required. + +### Connection String Format + +``` +postgresql://:@:/?schema= +``` + +--- + +## Authentication & Middleware + +### Auth0 Composite Authentication + +Authentication is handled by `CompositeAuth` from `@mastra/core/server`, which evaluates incoming JWTs against **two** Auth0 tenants: + +1. **Member tokens** — issued by `AUTH0_DOMAIN` with audience `AUTH0_AUDIENCE` +2. **M2M (machine-to-machine) tokens** — issued by `AUTH0_M2M_DOMAIN` with audience `AUTH0_M2M_AUDIENCE` + +A request is authorized if it passes validation against **either** tenant. + +Authentication can be fully disabled by setting `DISABLE_AUTH=true` (useful for local development). + +### Resource ID Middleware + +When auth is enabled, the `resourceIdMiddleware` intercepts all `/api/*` requests and: + +1. Extracts the authenticated `user` object from the request context. +2. Derives the Topcoder domain from `TC_API_BASE` (e.g., `topcoder-dev.com`). +3. Reads the user ID from the JWT claim `https:///userId`, falling back to `sub` for M2M tokens. +4. Sets `MASTRA_RESOURCE_ID_KEY` in the request context, scoping all subsequent Mastra operations (memory, threads, state) to that user. + +This ensures **resource isolation** — each user's agent memory and workflow state are segregated. + +--- + +## Observability & Logging + +### Logging + +A Pino logger (`@mastra/loggers`) is configured at `info` level with the service name `TC AI API`. It is injected into the Mastra instance and made available to all agents, tools, and workflow steps via context. + +### Observability (OpenTelemetry) + +The `@mastra/observability` package provides: + +- **DefaultExporter** — exports spans to the configured OTLP endpoint. +- **SensitiveDataFilter** — a span output processor that redacts sensitive data from telemetry. +- Service name: `tc-ai-api` + +All agent interactions, tool executions, and workflow step runs are automatically instrumented. + +--- + +## AI Model Provider — Ollama + +LLM inference runs through a self-hosted [Ollama](https://ollama.com) instance. The provider is configured in `src/utils/providers/ollama.ts`: + +```typescript +export const ollama = createOllama({ + baseURL: process.env.OLLAMA_API_URL || 'http://ollama.topcoder-dev.com:11434', +}); +``` + +The default model is `mistral:latest` with conservative generation parameters: + +| Parameter | Value | Purpose | +| ---------------- | ----- | --------------------------------------------------------- | +| `temperature` | 0.1 | Near-deterministic output for consistent skill extraction | +| `top_p` | 0.5 | Nucleus sampling cutoff | +| `repeat_penalty` | 1.1 | Reduces repetitive outputs | +| `num_predict` | 2048 | Maximum tokens to generate | + +--- + +## Agents + +### `skillsMatchingAgent` + +| Property | Value | +| ----------- | -------------------------------------------- | +| **ID** | `skillsMatchingAgent` | +| **Model** | `ollama('mistral:latest')` | +| **Memory** | PostgreSQL-backed conversation memory | +| **Scorers** | Answer Relevancy, Prompt Alignment (sampled) | + +**System Prompt Behavior:** + +The agent is instructed to: + +- Parse free text (job descriptions, resumes, etc.) to identify skill candidates. +- Prioritize specific multi-word terms (e.g., "React Native" over "React"). +- Aggressively split combined technologies (e.g., "PostgreSQL with Prisma ORM" → two separate terms). +- Output strict JSON arrays of strings — no prose, no markdown. + +The agent is used within the workflow's `generateSkillCandidateTerms` step via its `.stream()` method, producing incremental text output that is then parsed into a JSON array. + +--- + +## Tools + +### `standardized-skills-fuzzy-match` + +| Property | Value | +| ---------- | ------------------------------------------------------------ | +| **ID** | `standardized-skills-fuzzy-match` | +| **API** | `GET {TC_API_BASE}/v5/standardized-skills/skills/fuzzymatch` | +| **Input** | `{ term: string, size?: number }` | +| **Output** | `{ matches: [{ id: string, name: string }] }` | + +Performs fuzzy string matching against Topcoder's standardized skills taxonomy. Returns up to `size` matches for the given term. + +### `standardized-skills-semantic-search` + +| Property | Value | +| ---------- | ------------------------------------------------------------------------ | +| **ID** | `standardized-skills-semantic-search` | +| **API** | `POST {TC_API_BASE}/v5/standardized-skills/skills/semantic-search` | +| **Input** | `{ text: string }` | +| **Output** | `{ matches: [{ id: string, name: string, weighted_distance: number }] }` | + +Performs vector-based semantic search against the skills taxonomy. Returns matches ranked by cosine distance. + +--- + +## Scorers (Evaluation) + +Two LLM-based scorers evaluate agent output quality at runtime (sampled): + +### `skillDiscoveryAnswerRelevancyScorer` + +Uses `createAnswerRelevancyScorer` from `@mastra/evals`. Measures whether the agent's response is relevant to the user's input query. + +### `skillDiscoveryPromptAlignmentScorer` + +Uses `createPromptAlignmentScorerLLM` from `@mastra/evals`. Measures whether the agent's response adheres to the system prompt instructions (evaluation mode: `user`). + +Both scorers run on the same Ollama model (`MASTRA_EVAL_MODEL`, default `mistral:latest`) and are sampled at a configurable rate (`SKILL_DISCOVERY_EVAL_SAMPLE_RATE`, default 50%). + +--- + +## Workflows — Skill Extraction + +The core business logic lives in `skill-extraction-workflow.ts`, organized as a **main workflow** with **nested sub-workflows**. + +### Workflow: `skill-extraction-workflow` (Main) + +**Input:** `{ jobDescription: string }` +**Output:** `{ jobDescription, matches: [{ id, name, score }], skillCandidateTerms: string[] }` + +#### Step Pipeline + +| # | Step ID | Description | +| --- | -------------------------------------------------- | ----------------------------------------------------------------------------- | +| 1 | `preprocess-job-description` | Normalize whitespace and truncate to `JD_MAX_CHARS` (default 6000) | +| 2 | `generate-skill-candidate-terms` | Use `skillsMatchingAgent` (LLM) to extract skill search terms as a JSON array | +| 3 | `fuzzy-match-term-skills` (foreach) | For each candidate term, call the fuzzy-match API tool (concurrency: 5) | +| 4 | `skill-selection-and-refinement-workflow` (nested) | Split results into direct matches vs. terms needing semantic search | +| 5 | `output-final-state` | Sort all matches by score (descending) and return final state | + +### Sub-Workflow: `skill-selection-and-refinement-workflow` + +Runs two branches **in parallel**: + +| Branch | Steps | +| ------------------- | ----------------------------------------------------------------------------------------------------- | +| **Direct Match** | `map-direct-matches-to-state` — Skills with exact name match get `score: 1.0` | +| **Semantic Search** | `filter-out-direct-matches` → `foreach(semantic-match-term-skills)` → `map-semantic-matches-to-state` | + +### Scoring Logic + +- **Direct matches** (fuzzy match name === search term, case-insensitive): `score = 1.0` +- **Semantic matches**: `score = max(0, min(1, 1 - (weighted_distance / threshold)))` where threshold defaults to `0.45`. Matches above the threshold are discarded. + +--- + +## Sequence Diagrams + +### Skill Extraction Workflow — End-to-End + +```mermaid +sequenceDiagram + participant Client + participant MastraServer as Mastra HTTP Server + participant Auth as Auth0 Middleware + participant ResID as Resource ID Middleware + participant WF as skill-extraction-workflow + participant PreProc as preprocess-job-description + participant Agent as skillsMatchingAgent (LLM) + participant FuzzyStep as fuzzy-match-term-skills + participant FuzzyAPI as TC Standardized Skills API
(Fuzzy Match) + participant DirectMap as map-direct-matches-to-state + participant FilterStep as filter-out-direct-matches + participant SemanticStep as semantic-match-term-skills + participant SemanticAPI as TC Standardized Skills API
(Semantic Search) + participant SemanticMap as map-semantic-matches-to-state + participant Output as output-final-state + + Client->>MastraServer: POST /api/workflows/skill-extraction-workflow/start
{ jobDescription: "..." } + MastraServer->>Auth: Validate JWT (Auth0 Member or M2M) + Auth-->>MastraServer: ✓ Authenticated user + MastraServer->>ResID: Extract userId from JWT claims + ResID-->>MastraServer: Set MASTRA_RESOURCE_ID_KEY + MastraServer->>WF: Trigger workflow with input + + Note over WF: Step 1 — Preprocess + WF->>PreProc: { jobDescription } + PreProc-->>WF: Normalized & truncated JD (≤6000 chars) + + Note over WF: Step 2 — LLM Term Extraction + WF->>Agent: Stream prompt with JD + Agent->>Agent: Ollama mistral:latest inference + Agent-->>WF: JSON array of skill candidate terms
["React Native", "PostgreSQL", "Prisma ORM", ...] + + Note over WF: Step 3 — Fuzzy Match (parallel foreach) + loop For each candidate term (concurrency: 5) + WF->>FuzzyStep: term + FuzzyStep->>FuzzyAPI: GET /v5/standardized-skills/skills/fuzzymatch?term=...&size=3 + FuzzyAPI-->>FuzzyStep: [{ id, name }, ...] + FuzzyStep-->>WF: { term, matches } + end + + Note over WF: Step 4 — Selection & Refinement (parallel branches) + + par Direct Match Branch + WF->>DirectMap: All fuzzy results + DirectMap->>DirectMap: Filter exact name matches → score: 1.0 + DirectMap-->>WF: Direct matches added to state + and Semantic Search Branch + WF->>FilterStep: All fuzzy results + FilterStep-->>WF: Terms without direct matches + loop For each unmatched term (concurrency: 5) + WF->>SemanticStep: term + SemanticStep->>SemanticAPI: POST /v5/standardized-skills/skills/semantic-search
{ text: term } + SemanticAPI-->>SemanticStep: [{ id, name, weighted_distance }, ...] + SemanticStep-->>WF: { term, matches } + end + WF->>SemanticMap: All semantic results + SemanticMap->>SemanticMap: Filter by threshold (0.45)
Score = 1 - (distance/threshold) + SemanticMap-->>WF: Semantic matches added to state + end + + Note over WF: Step 5 — Output + WF->>Output: Merge & sort all matches by score desc + Output-->>WF: Final state + + WF-->>MastraServer: { jobDescription, skillCandidateTerms, matches } + MastraServer-->>Client: 200 OK — Workflow result +``` + +### Authentication Flow + +```mermaid +sequenceDiagram + participant Client + participant Server as Mastra HTTP Server + participant CompositeAuth as CompositeAuth + participant MemberAuth as Auth0 (Member) + participant M2MAuth as Auth0 (M2M) + participant ResMiddleware as resourceIdMiddleware + + Client->>Server: Request with Authorization: Bearer + Server->>CompositeAuth: Validate token + + alt Member Token + CompositeAuth->>MemberAuth: Verify JWT (domain: auth.topcoder-dev.com) + MemberAuth-->>CompositeAuth: ✓ Valid — user claims + else M2M Token + CompositeAuth->>M2MAuth: Verify JWT (domain: topcoder-dev.auth0.com) + M2MAuth-->>CompositeAuth: ✓ Valid — M2M claims + end + + CompositeAuth-->>Server: Authenticated user object + + Server->>ResMiddleware: /api/* interceptor + ResMiddleware->>ResMiddleware: Extract userId from
https://topcoder-dev.com/userId
or fallback to 'sub' claim + ResMiddleware->>ResMiddleware: Set MASTRA_RESOURCE_ID_KEY + ResMiddleware-->>Server: Continue to handler +``` + +### Agent Interaction — Term Extraction Detail + +```mermaid +sequenceDiagram + participant WorkflowStep as generate-skill-candidate-terms + participant Mastra as Mastra Runtime + participant Agent as skillsMatchingAgent + participant Ollama as Ollama (mistral:latest) + participant Memory as PostgreSQL Memory Store + participant Scorer as Eval Scorers (sampled) + + WorkflowStep->>Mastra: getAgent('skillsMatchingAgent') + Mastra-->>WorkflowStep: Agent instance + + WorkflowStep->>Agent: stream([{ role: 'user', content: prompt }]) + Agent->>Ollama: POST /api/chat (streaming) + + loop Streaming tokens + Ollama-->>Agent: token chunk + Agent-->>WorkflowStep: text stream chunk + end + + WorkflowStep->>WorkflowStep: Concatenate chunks → full output + WorkflowStep->>WorkflowStep: Extract JSON array from text + WorkflowStep->>WorkflowStep: Parse with Zod schema + + Note over Agent,Memory: Conversation stored for future context + Agent->>Memory: Save thread messages + + opt Sampled (50% rate) + Agent->>Scorer: Evaluate answer relevancy + Agent->>Scorer: Evaluate prompt alignment + Scorer-->>Agent: Scores logged to storage + end + + WorkflowStep-->>WorkflowStep: Return string[] of candidate terms +``` + +--- + +## External API Interactions + +The service communicates with the following external systems: + +### 1. Topcoder Standardized Skills API + +| Endpoint | Method | Purpose | Called By | +| -------------------------------------------------------------------- | ------ | ------------------------------------------------- | -------------------------------- | +| `{TC_API_BASE}/v5/standardized-skills/skills/fuzzymatch?term=&size=` | `GET` | Fuzzy string matching against the skills taxonomy | `standardizedSkillsFuzzyTool` | +| `{TC_API_BASE}/v5/standardized-skills/skills/semantic-search` | `POST` | Vector-based semantic search (`{ text }` body) | `standardizedSkillsSemanticTool` | + +These are **unauthenticated** calls (no bearer token forwarded). The API base URL is configured via `TC_API_BASE`. + +### 2. Ollama LLM API + +| Endpoint | Method | Purpose | Called By | +| --------------------------- | ------ | ----------------------------------------------- | ---------------------------------- | +| `{OLLAMA_API_URL}/api/chat` | `POST` | Streaming chat completion with `mistral:latest` | `skillsMatchingAgent` (via AI SDK) | +| `{OLLAMA_API_URL}/api/chat` | `POST` | Evaluation model inference | Evaluation scorers | + +### 3. Auth0 + +| Endpoint | Purpose | +| -------------------------------------------------- | ---------------------------------- | +| `https://{AUTH0_DOMAIN}/.well-known/jwks.json` | JWKS for member token verification | +| `https://{AUTH0_M2M_DOMAIN}/.well-known/jwks.json` | JWKS for M2M token verification | + +### 4. PostgreSQL + +| Purpose | Connection | +| --------------------------------------- | --------------------------------------------------- | +| Workflow state, step logs, eval results | `MASTRA_DB_CONNECTION` (schema: `MASTRA_DB_SCHEMA`) | +| Agent conversation memory (threads) | Same connection, same schema | + +--- + +## CI/CD Pipeline + +### CircleCI (`.circleci/config.yml`) + +The project uses CircleCI for automated builds and deployments: + +| Job | Branch | Environment | Target | +| ------------ | --------- | ----------- | --------------- | +| `build-dev` | `develop` | DEV | AWS ECS Fargate | +| `build-prod` | `master` | PROD | AWS ECS Fargate | + +**Pipeline Steps:** + +1. Checkout code +2. Set up remote Docker +3. Install AWS CLI and Topcoder deploy scripts (`tc-deploy-scripts` v1.4.19) +4. Build Docker image: `docker buildx build --no-cache=true -t tc-ai-api:latest .` +5. Configure AWS environment +6. Process parameter store variables +7. Deploy to ECS Fargate via `master_deploy.sh` + +### GitHub Actions (`.github/workflows/code_reviewer.yml`) + +A code review automation workflow (details in the workflow file). + +--- + +## Deployment + +### Docker + +The production Dockerfile: + +```dockerfile +FROM node:24.13.0-alpine +WORKDIR /app +COPY . . +RUN npm install pnpm -g +RUN pnpm install +RUN pnpm run lint +RUN pnpm run build +CMD ./appStartUp.sh # → pnpm start → mastra start +``` + +The container runs the Mastra production server on the configured `PORT` (default 3000). + +### Infrastructure + +- **Compute:** AWS ECS Fargate +- **Configuration:** AWS Systems Manager Parameter Store (`/config/tc-ai-api/`) +- **Scaling:** Managed by ECS service configuration +- **LLM:** Self-hosted Ollama instance (internal network at `ollama.topcoder-dev.com:11434` or local) + +--- + +## API Surface (Auto-generated by Mastra) + +Mastra automatically exposes the following REST endpoints: + +| Endpoint | Method | Description | +| ------------------------------------------------- | ------ | ---------------------------------------- | +| `/api/workflows/skill-extraction-workflow/start` | `POST` | Start the skill extraction workflow | +| `/api/workflows/skill-extraction-workflow/:runId` | `GET` | Get workflow run status/result | +| `/api/agents/skillsMatchingAgent/generate` | `POST` | Direct agent text generation | +| `/api/agents/skillsMatchingAgent/stream` | `POST` | Direct agent streaming generation | +| `/studio/*` | `GET` | Mastra Studio UI (development/debugging) | + +All `/api/*` endpoints are protected by Auth0 authentication (unless `DISABLE_AUTH=true`) and scoped by the resource ID middleware. From 3772e06bd90c67c78fded7d97107787f4ea70f5b Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 27 Feb 2026 10:29:08 +0200 Subject: [PATCH 2/5] add mastra skills --- .agents/skills/mastra/SKILL.md | 173 ++++++ .../skills/mastra/references/common-errors.md | 535 ++++++++++++++++++ .../skills/mastra/references/create-mastra.md | 220 +++++++ .../skills/mastra/references/embedded-docs.md | 99 ++++ .../mastra/references/migration-guide.md | 180 ++++++ .../skills/mastra/references/remote-docs.md | 193 +++++++ skills-lock.json | 10 + 7 files changed, 1410 insertions(+) create mode 100644 .agents/skills/mastra/SKILL.md create mode 100644 .agents/skills/mastra/references/common-errors.md create mode 100644 .agents/skills/mastra/references/create-mastra.md create mode 100644 .agents/skills/mastra/references/embedded-docs.md create mode 100644 .agents/skills/mastra/references/migration-guide.md create mode 100644 .agents/skills/mastra/references/remote-docs.md create mode 100644 skills-lock.json diff --git a/.agents/skills/mastra/SKILL.md b/.agents/skills/mastra/SKILL.md new file mode 100644 index 0000000..b537056 --- /dev/null +++ b/.agents/skills/mastra/SKILL.md @@ -0,0 +1,173 @@ +--- +name: mastra +description: "Comprehensive Mastra framework guide. Teaches how to find current documentation, verify API signatures, and build agents and workflows. Covers documentation lookup strategies (embedded docs, remote docs), core concepts (agents vs workflows, tools, memory, RAG), TypeScript requirements, and common patterns. Use this skill for all Mastra development to ensure you're using current APIs from the installed version or latest documentation." +license: Apache-2.0 +metadata: + author: Mastra + version: "2.0.0" + repository: https://github.com/mastra-ai/skills +--- + +# Mastra Framework Guide + +Build AI applications with Mastra. This skill teaches you how to find current documentation and build agents and workflows. + +## ⚠️ Critical: Do not trust internal knowledge + +Everything you know about Mastra is likely outdated or wrong. Never rely on memory. Always verify against current documentation. + +Your training data contains obsolete APIs, deprecated patterns, and incorrect usage. Mastra evolves rapidly - APIs change between versions, constructor signatures shift, and patterns get refactored. + +## Prerequisites + +Before writing any Mastra code, check if packages are installed: + +```bash +ls node_modules/@mastra/ +``` + +- **If packages exist:** Use embedded docs first (most reliable) +- **If no packages:** Install first or use remote docs + +## Documentation lookup guide + +### Quick Reference + +| User Question | First Check | How To | +| ----------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------- | +| "Create/install Mastra project" | [`references/create-mastra.md`](references/create-mastra.md) | Setup guide with CLI and manual steps | +| "How do I use Agent/Workflow/Tool?" | [`references/embedded-docs.md`](references/embedded-docs.md) | Look up in `node_modules/@mastra/*/dist/docs/` | +| "How do I use X?" (no packages) | [`references/remote-docs.md`](references/remote-docs.md) | Fetch from `https://mastra.ai/llms.txt` | +| "I'm getting an error..." | [`references/common-errors.md`](references/common-errors.md) | Common errors and solutions | +| "Upgrade from v0.x to v1.x" | [`references/migration-guide.md`](references/migration-guide.md) | Version upgrade workflows | + +### Priority order for writing code + +⚠️ Never write code without checking current docs first. + +1. **Embedded docs first** (if packages installed) + + Look up current docs in `node_modules` for a package. Example of looking up "Agent" docs in `@mastra/core`: + + ```bash + grep -r "Agent" node_modules/@mastra/core/dist/docs/references + ``` + + - **Why:** Matches your EXACT installed version + - **Most reliable source of truth** + - **See:** [`references/embedded-docs.md`](references/embedded-docs.md) + +2. **Source code second** (if packages installed) + + If you can't find what you need in the embedded docs, look directly at the source code. This is more time consuming but can provide insights into implementation details. + + ```bash + # Check what's available + cat node_modules/@mastra/core/dist/docs/assets/SOURCE_MAP.json | grep '"Agent"' + + # Read the actual type definition + cat node_modules/@mastra/core/dist/[path-from-source-map] + ``` + + - **Why:** Ultimate source of truth if docs are missing or unclear + - **Use when:** Embedded docs don't cover your question + - **See:** [`references/embedded-docs.md`](references/embedded-docs.md) + +3. **Remote docs third** (if packages not installed) + + You can fetch the latest docs from the Mastra website: + + ```bash + https://mastra.ai/llms.txt + ``` + + - **Why:** Latest published docs (may be ahead of installed version) + - **Use when:** Packages not installed or exploring new features + - **See:** [`references/remote-docs.md`](references/remote-docs.md) + +## Core concepts + +### Agents vs workflows + +**Agent**: Autonomous, makes decisions, uses tools +Use for: Open-ended tasks (support, research, analysis) + +**Workflow**: Structured sequence of steps +Use for: Defined processes (pipelines, approvals, ETL) + +### Key components + +- **Tools**: Extend agent capabilities (APIs, databases, external services) +- **Memory**: Maintain context (message history, working memory, semantic recall) +- **RAG**: Query external knowledge (vector stores, graph relationships) +- **Storage**: Persist data (Postgres, LibSQL, MongoDB) + +## Critical requirements + +### TypeScript config + +Mastra requires **ES2022 modules**. CommonJS will fail. + +```json +{ + "compilerOptions": { + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "bundler" + } +} +``` + +### Model format + +Always use `"provider/model-name"`: + +- `"openai/gpt-5.2"` +- `"anthropic/claude-sonnet-4-5"` +- `"google/gemini-2.5-pro"` + +## When you see errors + +**Type errors often mean your knowledge is outdated.** + +**Common signs of outdated knowledge:** + +- `Property X does not exist on type Y` +- `Cannot find module` +- `Type mismatch` errors +- Constructor parameter errors + +**What to do:** + +1. Check [`references/common-errors.md`](references/common-errors.md) +2. Verify current API in embedded docs +3. Don't assume the error is a user mistake - it might be your outdated knowledge + +## Development workflow + +**Always verify before writing code:** + +1. **Check packages installed** + + ```bash + ls node_modules/@mastra/ + ``` + +2. **Look up current API** + - If installed → Use embedded docs [`references/embedded-docs.md`](references/embedded-docs.md) + - If not → Use remote docs [`references/remote-docs.md`](references/remote-docs.md) + +3. **Write code based on current docs** + +4. **Test in Studio** + ```bash + npm run dev # http://localhost:4111 + ``` + +## Resources + +- **Setup**: [`references/create-mastra.md`](references/create-mastra.md) +- **Embedded docs lookup**: [`references/embedded-docs.md`](references/embedded-docs.md) - Start here if packages are installed +- **Remote docs lookup**: [`references/remote-docs.md`](references/remote-docs.md) +- **Common errors**: [`references/common-errors.md`](references/common-errors.md) +- **Migrations**: [`references/migration-guide.md`](references/migration-guide.md) diff --git a/.agents/skills/mastra/references/common-errors.md b/.agents/skills/mastra/references/common-errors.md new file mode 100644 index 0000000..fbaa39d --- /dev/null +++ b/.agents/skills/mastra/references/common-errors.md @@ -0,0 +1,535 @@ +# Common Errors and Troubleshooting + +Comprehensive guide to common Mastra errors and their solutions. + +## Build and configuration errors + +### "Cannot find module" or import errors + +**Symptoms**: + +```bash +Error: Cannot find module '@mastra/core' +SyntaxError: Cannot use import statement outside a module +``` + +**Causes**: + +- CommonJS configuration in `tsconfig.json` +- Missing `"type": "module"` in `package.json` +- Incorrect module resolution + +**Solutions**: + +1. Update `tsconfig.json`: + + ```json + { + "compilerOptions": { + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "bundler" + } + } + ``` + +2. Add to `package.json`: + + ```json + { + "type": "module" + } + ``` + +3. Ensure imports use `.js` extensions for local files (if needed by your bundler) + +### "Property X does not exist on type Y" + +**Symptoms**: + +```bash +Property 'tools' does not exist on type 'Agent' +Property 'memory' does not exist on type 'AgentConfig' +``` + +**Causes**: + +- Outdated API usage (Mastra is actively developed) +- Incorrect import or type +- Version mismatch between docs and installed package + +**Solutions**: + +1. Check embedded docs (see `embedded-docs.md`) to check current API +2. Check `node_modules/@mastra/core/dist/docs/assets/SOURCE_MAP.json` for current exports +3. Verify package versions: `npm list @mastra/core` +4. Update dependencies: `npm update @mastra/core` + +## Agent errors + +### Agent not using assigned tools + +**Symptoms**: + +- Agent responds "I don't have access to that tool" +- Tools never get called despite being relevant + +**Causes**: + +- Tools not registered in Mastra instance +- Tools not passed to Agent constructor +- Tool IDs don't match + +**Solutions**: + +**Correct pattern**: + +```typescript +// 1. Create tool +const weatherTool = createTool({ + id: "get-weather", + // ... tool config +}); + +// 2. Register in Mastra instance +const mastra = new Mastra({ + tools: { + weatherTool, // or 'weatherTool': weatherTool + }, +}); + +// 3. Assign to agent +const agent = new Agent({ + id: "weather-agent", + tools: { weatherTool }, // Reference the tool + // ... other config +}); +``` + +**Alternative pattern (direct assignment)**: + +```typescript +const agent = new Agent({ + id: "weather-agent", + tools: { + weatherTool: createTool({ id: "get-weather" /* ... */ }), + }, +}); +``` + +### Agent memory not persisting + +**Symptoms**: + +- Agent doesn't remember previous messages +- Conversation history is lost between calls + +**Causes**: + +- No storage backend configured +- Missing or inconsistent `threadId` +- Memory not assigned to agent + +**Solutions**: + +```typescript +// 1. Configure storage +const storage = new PostgresStore({ + connectionString: process.env.DATABASE_URL, +}); + +// 2. Create memory with storage +const memory = new Memory({ + id: "chat-memory", + storage, + options: { + lastMessages: 10, // How many messages to retrieve + }, +}); + +// 3. Assign memory to agent +const agent = new Agent({ + id: "chat-agent", + memory, +}); + +// 4. Use consistent threadId +await agent.generate("Hello", { + threadId: "user-123-conversation", // Same threadId for entire conversation + resourceId: "user-123", +}); +``` + +## Workflow errors + +### "Cannot read property 'then' of undefined" + +**Symptoms**: + +```bash +TypeError: Cannot read property 'then' of undefined +Workflow execution fails immediately +``` + +**Causes**: + +- Forgot to call `.commit()` on workflow +- Step returns undefined + +**Solutions**: + +**Correct pattern**: + +```typescript +const workflow = createWorkflow({ + id: "my-workflow", + inputSchema: z.object({ data: z.string() }), + outputSchema: z.object({ result: z.string() }), +}) + .then(step1) + .then(step2) + .commit(); // REQUIRED! + +// Then execute +const run = await workflow.createRun(); +const result = await run.start({ inputData: { data: "test" } }); +``` + +### Workflow state not updating + +**Symptoms**: + +- State changes don't persist across steps +- `getStepResult()` returns undefined + +**Causes**: + +- Not using `setState` to update state +- Accessing state before step completes + +**Solutions**: + +```typescript +const step1 = createStep({ + id: "step1", + execute: async ({ state, setState }) => { + // Update state + await setState({ ...state, counter: (state.counter || 0) + 1 }); + return { result: "done" }; + }, +}); + +// Access state in subsequent steps +const step2 = createStep({ + id: "step2", + execute: async ({ state }) => { + console.log(state.counter); // Access updated state + return { result: "complete" }; + }, +}); +``` + +## Memory errors + +### "Storage is required for Memory" + +**Symptoms**: + +```bash +Error: Storage is required for Memory +Memory instantiation fails +``` + +**Causes**: + +- Memory created without storage backend + +**Solutions**: + +```typescript +// Always provide storage when creating Memory +const memory = new Memory({ + id: "my-memory", + storage: postgresStore, // REQUIRED + options: { + lastMessages: 10, + }, +}); +``` + +### Semantic recall not working + +**Symptoms**: + +- Memory doesn't retrieve semantically similar messages +- Only recent messages are returned + +**Causes**: + +- No vector store configured +- No embedder configured +- `semanticRecall` not enabled + +**Solutions**: + +```typescript +const memory = new Memory({ + id: "semantic-memory", + storage: postgresStore, + vector: chromaVectorStore, // REQUIRED for semantic recall + embedder: openaiEmbedder, // REQUIRED for semantic recall + options: { + lastMessages: 10, + semanticRecall: true, // REQUIRED + }, +}); +``` + +## Tool errors + +### "Tool validation failed" + +**Symptoms**: + +```bash +Error: Input validation failed for tool 'my-tool' +ZodError: Expected string, received number +``` + +**Causes**: + +- Input doesn't match inputSchema +- Missing required fields +- Type mismatch + +**Solutions**: + +```typescript +const tool = createTool({ + id: "my-tool", + inputSchema: z.object({ + name: z.string(), + age: z.number().optional(), // Make optional fields explicit + }), + execute: async (input) => { + // input is validated and typed + return { result: `Hello ${input.name}` }; + }, +}); + +// Correct usage +await tool.execute({ name: "Alice" }); // Works +await tool.execute({ name: "Bob", age: 30 }); // Works +await tool.execute({ age: 30 }); // ERROR: name is required +``` + +### Tool suspension not resuming + +**Symptoms**: + +- Tool suspends but never resumes +- resumeData is undefined + +**Causes**: + +- Not calling workflow.resume() or agent.generate() with resumeData +- Incorrect resumeSchema + +**Solutions**: + +```typescript +const approvalTool = createTool({ + id: "approval", + inputSchema: z.object({ request: z.string() }), + outputSchema: z.object({ approved: z.boolean() }), + suspendSchema: z.object({ requestId: z.string() }), + resumeSchema: z.object({ approved: z.boolean() }), + execute: async (input, context) => { + if (!context.resumeData) { + // First call - suspend + const requestId = generateId(); + context.suspend({ requestId }); + return; // Execution pauses here + } + + // Resumed - use resumeData + return { approved: context.resumeData.approved }; + }, +}); + +// Resume the workflow/agent +await run.resume({ + resumeData: { approved: true }, +}); +``` + +## Storage errors + +### "Connection refused" or "Database does not exist" + +**Symptoms**: + +```bash +Error: connect ECONNREFUSED 127.0.0.1:5432 +Error: database "mastra" does not exist +``` + +**Causes**: + +- Database not running +- Incorrect connection string +- Database not created + +**Solutions**: + +1. Start database (Postgres example): + +```bash +docker run -d \ + --name mastra-postgres \ + -e POSTGRES_PASSWORD=password \ + -e POSTGRES_DB=mastra \ + -p 5432:5432 \ + postgres:16 +``` + +2. Verify connection string: + +```env +DATABASE_URL=postgresql://postgres:password@localhost:5432/mastra +``` + +3. Initialize storage: + +```typescript +const storage = new PostgresStore({ + connectionString: process.env.DATABASE_URL, +}); +await storage.init(); // Creates tables if needed +``` + +## Environment variable errors + +### "API key not found" + +**Symptoms**: + +```bash +Error: OPENAI_API_KEY environment variable is not set +401 Unauthorized +``` + +**Causes**: + +- Missing .env file +- Environment variables not loaded +- Incorrect variable name + +**Solutions**: + +1. Create .env file: + +```env +OPENAI_API_KEY=sk-... +ANTHROPIC_API_KEY=sk-ant-... +GOOGLE_GENERATIVE_AI_API_KEY=... +``` + +2. Load environment variables (for Node.js): + +```typescript +import "dotenv/config"; // At top of entry file +``` + +3. Verify variable is loaded: + +```typescript +if (!process.env.OPENAI_API_KEY) { + throw new Error("OPENAI_API_KEY is required"); +} +``` + +## Model errors + +### "Model not found" or "Invalid model" + +**Symptoms**: + +```bash +Error: Model 'gpt-4' not found +Error: Invalid model format +``` + +**Causes**: + +- Incorrect model format (should be `provider/model`) +- Unsupported model +- Missing provider API key + +**Solutions**: + +**Correct model format**: + +```typescript +const agent = new Agent({ + model: "openai/gpt-5.2", // ✅ Correct + // NOT: model: 'gpt-5.2' // ❌ Missing provider +}); +``` + +**Common models**: + +- OpenAI: `openai/gpt-5.2`, `openai/gpt-5-mini` +- Anthropic: `anthropic/claude-sonnet-4-5`, `anthropic/claude-haiku-4-5`, `anthropic/claude-opus-4-6` +- Google: `google/gemini-2.5-pro`, `google/gemini-2.5-flash` + +**Use embedded docs to verify**: + +```bash +# Check supported models +ls node_modules/@mastra/core/dist/docs/ +# See embedded-docs.md for lookup instructions +``` + +## Debugging tips + +### Enable verbose logging + +```typescript +const mastra = new Mastra({ + logger: new PinoLogger({ + name: "mastra", + level: "debug", // or 'trace' for even more detail + }), +}); +``` + +### Test in Studio + +```bash +npm run dev +# Open http://localhost:4111 +# Test agents and workflows interactively +``` + +### Check package versions + +```bash +npm list @mastra/core +npm list @mastra/memory +npm list @mastra/rag +``` + +### Validate TypeScript config + +```bash +npx tsc --showConfig +# Verify target: ES2022, module: ES2022 +``` + +## Getting help + +1. **Check embedded docs**: Check embedded docs (see `embedded-docs.md`) +2. **Search documentation**: [mastra.ai/docs](https://mastra.ai/docs) +3. **Check version compatibility**: Ensure all @mastra packages are same version +4. **File an issue**: [github.com/mastra-ai/mastra](https://github.com/mastra-ai/mastra) diff --git a/.agents/skills/mastra/references/create-mastra.md b/.agents/skills/mastra/references/create-mastra.md new file mode 100644 index 0000000..460ad07 --- /dev/null +++ b/.agents/skills/mastra/references/create-mastra.md @@ -0,0 +1,220 @@ +# Create Mastra Reference + +Complete guide for creating new Mastra projects. Includes both quickstart CLI method and detailed manual installation. + +**Official documentation: [mastra.ai/docs](https://mastra.ai/docs)** + +## Getting Started + +Ask: **"How would you like to create your Mastra project?"** + +1. **Quick Setup**: Copy and run: `npm create mastra@latest` +2. **Guided Setup**: I walk you through each step, you approve commands +3. **Automatic Setup**: I create everything, just give me your API key + +> **For AI agents:** The CLI is interactive. Use **Automatic Setup** to create files using the steps in "Automatic Setup / Manual Installation" below. + +## Prerequisites + +- An API key from a supported model provider (OpenAI, Anthropic, Google, etc.) + +## Quick Setup (user runs CLI) + +Create a new Mastra project with one command: + +```bash +npm create mastra@latest +``` + +**Other package managers:** + +```bash +pnpm create mastra@latest +yarn create mastra@latest +bun create mastra@latest +``` + +## CLI flags + +**Skip the example agent:** + +```bash +npm create mastra@latest --no-example +``` + +**Use a specific template:** + +```bash +npm create mastra@latest --template +``` + +## Automatic setup / manual installation + +**Use this for automatic setup** (AI creates all files) or when you prefer manual control. + +Follow these steps to create a complete Mastra project: + +### Step 1: Create project directory + +```bash +mkdir my-first-agent && cd my-first-agent +npm init -y +``` + +### Step 2: Install dependencies + +```bash +npm install -D typescript @types/node mastra@latest +npm install @mastra/core@latest zod@^4 +``` + +### Step 3: Configure package scripts + +Add to `package.json`: + +```json +{ + "scripts": { + "dev": "mastra dev", + "build": "mastra build" + } +} +``` + +### Step 4: Configure TypeScript + +Create `tsconfig.json`: + +```json +{ + "compilerOptions": { + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "bundler", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "noEmit": true, + "outDir": "dist" + }, + "include": ["src/**/*"] +} +``` + +**Important:** Mastra requires `"module": "ES2022"` and `"moduleResolution": "bundler"`. CommonJS will cause errors. + +### Step 5: Create environment file + +Create `.env` with your API key: + +```env +GOOGLE_GENERATIVE_AI_API_KEY= +``` + +Or use `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, etc. + +### Step 6: Create weather tool + +Create `src/mastra/tools/weather-tool.ts`: + +```typescript +import { createTool } from "@mastra/core/tools"; +import { z } from "zod"; + +export const weatherTool = createTool({ + id: "get-weather", + description: "Get current weather for a location", + inputSchema: z.object({ + location: z.string().describe("City name"), + }), + outputSchema: z.object({ + output: z.string(), + }), + execute: async () => { + return { output: "The weather is sunny" }; + }, +}); +``` + +### Step 7: Create weather agent + +Create `src/mastra/agents/weather-agent.ts`: + +```typescript +import { Agent } from "@mastra/core/agent"; +import { weatherTool } from "../tools/weather-tool"; + +export const weatherAgent = new Agent({ + id: "weather-agent", + name: "Weather Agent", + instructions: ` + You are a helpful weather assistant that provides accurate weather information. + + Your primary function is to help users get weather details for specific locations. When responding: + - Always ask for a location if none is provided + - If the location name isn't in English, please translate it + - If giving a location with multiple parts (e.g. "New York, NY"), use the most relevant part (e.g. "New York") + - Include relevant details like humidity, wind conditions, and precipitation + - Keep responses concise but informative + + Use the weatherTool to fetch current weather data. +`, + model: "google/gemini-2.5-pro", + tools: { weatherTool }, +}); +``` + +**Note:** Model format is `"provider/model-name"`. Examples: + +- `"google/gemini-2.5-pro"` +- `"openai/gpt-5.2"` +- `"anthropic/claude-sonnet-4-5"` + +### Step 8: Create mastra entry point + +Create `src/mastra/index.ts`: + +```typescript +import { Mastra } from "@mastra/core"; +import { weatherAgent } from "./agents/weather-agent"; + +export const mastra = new Mastra({ + agents: { weatherAgent }, +}); +``` + +### Step 9: Launch development server + +```bash +npm run dev +``` + +Access Studio at `http://localhost:4111` to test your agent. + +## Next steps + +After creating your project with `create mastra`: + +- **Customize the example agent** in `src/mastra/agents/weather-agent.ts` +- **Add new agents** - see [Agents documentation](https://mastra.ai/docs/agents/overview) +- **Create workflows** - see [Workflows documentation](https://mastra.ai/docs/workflows/overview) +- **Add more tools** to extend agent capabilities +- **Integrate into your app** - see framework guides at [mastra.ai/docs](https://mastra.ai/docs) + +## Troubleshooting + +| Issue | Solution | +| ------------------ | ------------------------------------------------------------------------------------ | +| API key not found | Make sure your `.env` file has the correct key | +| Studio won't start | Check that port 4111 is available | +| CommonJS errors | Ensure `tsconfig.json` uses `"module": "ES2022"` and `"moduleResolution": "bundler"` | +| Command not found | Ensure you're using Node.js 20+ | + +## Resources + +- [Docs](https://mastra.ai/docs) +- [Installation](https://mastra.ai/docs/getting-started/installation) +- [Agents](https://mastra.ai/docs/agents/overview) +- [Workflows](https://mastra.ai/docs/workflows/overview) +- [GitHub](https://github.com/mastra-ai/mastra) diff --git a/.agents/skills/mastra/references/embedded-docs.md b/.agents/skills/mastra/references/embedded-docs.md new file mode 100644 index 0000000..c2e515b --- /dev/null +++ b/.agents/skills/mastra/references/embedded-docs.md @@ -0,0 +1,99 @@ +# Embedded Docs Reference + +Look up API signatures from embedded docs in `node_modules/@mastra/*/dist/docs/` - these match the installed version. + +**Use this FIRST** when Mastra packages are installed locally. Embedded docs are always accurate for the installed version. + +## Why use embedded docs + +- **Version accuracy**: Embedded docs match the exact installed version +- **No network required**: All docs are local in `node_modules/` +- **Mastra evolves quickly**: APIs change rapidly, embedded docs stay in sync +- **TypeScript definitions**: Includes JSDoc, type signatures, and examples +- **Training data may be outdated**: Claude's knowledge cutoff may not reflect latest APIs + +## Documentation structure + +``` +node_modules/@mastra/core/dist/docs/ +├── SKILL.md # Package overview, exports +├── assets/ +│ └── SOURCE_MAP.json # Export -> file mappings +└── references/ # Individual topic docs +``` + +## Lookup process + +### 1. Check if packages are installed + +```bash +ls node_modules/@mastra/ +``` + +If you see packages like `core`, `memory`, `rag`, etc., proceed with embedded docs lookup. + +### 2. Look through topic docs + +Use `grep` to find relevant docs in `references/`: + +```bash +grep -r "Agent" node_modules/@mastra/core/dist/docs/references +``` + +### Optional: Check source code for type definitions / additional details + +Look at the `SOURCE_MAP.json` to find the file path for the export: + +```bash +cat node_modules/@mastra/core/dist/docs/assets/SOURCE_MAP.json | grep '"Agent"' +``` + +Returns: `{ "Agent": { "types": "dist/agent/agent.d.ts", ... } }` + +Read the type definition for exact constructor parameters, types, and JSDoc: + +```bash +cat node_modules/@mastra/core/dist/agent/agent.d.ts +``` + +## Common packages + +| Package | Path | Contains | +| ---------------- | ---------------------------------------- | ----------------------------------------- | +| `@mastra/core` | `node_modules/@mastra/core/dist/docs/` | Agents, Workflows, Tools, Mastra instance | +| `@mastra/memory` | `node_modules/@mastra/memory/dist/docs/` | Memory systems, conversation history | +| `@mastra/rag` | `node_modules/@mastra/rag/dist/docs/` | RAG features, vector stores | +| `@mastra/pg` | `node_modules/@mastra/pg/dist/docs/` | PostgreSQL storage | +| `@mastra/libsql` | `node_modules/@mastra/libsql/dist/docs/` | LibSQL/SQLite storage | + +## Quick commands reference + +```bash +# List installed @mastra packages +ls node_modules/@mastra/ + +# List available topic documentation +ls node_modules/@mastra/core/dist/docs/references/ + +# Find specific export in SOURCE_MAP +cat node_modules/@mastra/core/dist/docs/assets/SOURCE_MAP.json | grep '"ExportName"' + +# Read type definition from path +cat node_modules/@mastra/core/dist/[path-from-source-map] + +# View package overview +cat node_modules/@mastra/core/dist/docs/SKILL.md +``` + +## When embedded docs are not available + +If packages aren't installed or `dist/docs/` doesn't exist: + +1. **Recommend installation**: Suggest installing packages to access embedded docs +2. **Fall back to remote docs**: See `references/remote-docs.md` + +## Best Practices + +1. **Check topic docs** for conceptual understanding and patterns +2. **Search source code** if docs don't answer the question +3. **Verify imports** match what's exported in the type definitions diff --git a/.agents/skills/mastra/references/migration-guide.md b/.agents/skills/mastra/references/migration-guide.md new file mode 100644 index 0000000..de4e998 --- /dev/null +++ b/.agents/skills/mastra/references/migration-guide.md @@ -0,0 +1,180 @@ +# Migration Guide + +Guide for upgrading Mastra versions using official documentation and current API verification. + +## Migration strategy + +For version upgrades, follow this process: + +### 1. Check official migration docs + +**Always start with the official migration documentation:** `https://mastra.ai/llms.txt` + +Look for the **Migrations** or **Guides** section, which will have: + +- Breaking changes for each version +- Automated migration tools +- Step-by-step upgrade instructions + +**Example sections to look for:** + +- `/guides/migrations/upgrade-to-v1/` +- `/guides/migrations/upgrade-to-v2/` +- Breaking changes lists + +### 2. Use embedded docs for current APIs + +After identifying breaking changes, verify the new APIs: + +**Check your installed version:** + +```bash +cat node_modules/@mastra/core/dist/docs/assets/SOURCE_MAP.json | grep '"ApiName"' +cat node_modules/@mastra/core/dist/[path-from-source-map] +``` + +See [`embedded-docs.md`](embedded-docs.md) for detailed lookup instructions. + +### 3. Use remote docs for latest info + +If packages aren't updated yet, check what APIs will look like: `https://mastra.ai/reference/[topic]` + +See [`remote-docs.md`](remote-docs.md) for detailed lookup instructions. + +## Quick migration workflow + +```bash +# 1. Check current version +npm list @mastra/core + +# 2. Fetch migration guide from official docs +# Use WebFetch: https://mastra.ai/llms.txt +# Find relevant migration section + +# 3. Update dependencies +npm install @mastra/core@latest @mastra/memory@latest @mastra/rag@latest mastra@latest + +# 4. Run automated migration (if available) +npx @mastra/codemod@latest v1 # or whatever version + +# 5. Check embedded docs for new APIs +cat node_modules/@mastra/core/dist/docs/assets/SOURCE_MAP.json + +# 6. Fix breaking changes using embedded docs lookup +# See embedded-docs.md for how to look up each API + +# 7. Test +npm run dev +npm test +``` + +## Common migration patterns + +### Finding what changed + +**Check official migration docs:** `https://mastra.ai/guides/migrations/upgrade-to-v1/overview.md` + +This will list: + +- Breaking changes +- Deprecated APIs +- New features +- Migration tools + +### Updating API usage + +**For each breaking change:** + +1. **Find the old API** in your code +2. **Look up the new API** using embedded docs: + ```bash + cat node_modules/@mastra/core/dist/docs/assets/SOURCE_MAP.json | grep '"NewApi"' + cat node_modules/@mastra/core/dist/[path] + ``` +3. **Update your code** based on the type signatures +4. **Test** the change + +### Example: Tool execute signature change + +**Official docs say:** "Tool execute signature changed" + +**Look up current signature:** + +```bash +cat node_modules/@mastra/core/dist/docs/assets/SOURCE_MAP.json | grep '"createTool"' +cat node_modules/@mastra/core/dist/tools/tool.d.ts +``` + +**Update based on type definition:** + +```typescript +// Old (from docs) +execute: async (input) => { ... } + +// New (from embedded docs) +execute: async (inputData, context) => { ... } +``` + +## Pre-migration checklist + +- [ ] Backup code (git commit) +- [ ] Check official migration docs: `https://mastra.ai/llms.txt` +- [ ] Note current version: `npm list @mastra/core` +- [ ] Read breaking changes list +- [ ] Tests are passing + +## Post-migration checklist + +- [ ] All dependencies updated together +- [ ] TypeScript compiles: `npx tsc --noEmit` +- [ ] Tests pass: `npm test` +- [ ] Studio works: `npm run dev` +- [ ] No console warnings +- [ ] APIs verified against embedded docs + +## Migration resources + +| Resource | Use For | +| -------------------------------------- | --------------------------------------------- | +| `https://mastra.ai/llms.txt` | Finding migration guides and breaking changes | +| [`embedded-docs.md`](embedded-docs.md) | Looking up new API signatures after updating | +| [`remote-docs.md`](remote-docs.md) | Checking latest docs before updating | +| [`common-errors.md`](common-errors.md) | Fixing migration errors | + +## Version-specific notes + +### General principles + +1. **Always update all @mastra packages together** + + ```bash + npm install @mastra/core@latest @mastra/memory@latest @mastra/rag@latest mastra@latest + ``` + +2. **Check for automated migration tools** + + ```bash + npx @mastra/codemod@latest [version] + ``` + +3. **Verify Node.js version requirements** + - Check official migration docs for minimum Node version + +4. **Run database migrations if using storage** + - Follow storage migration guide in official docs + +## Getting help + +1. **Check official migration docs**: `https://mastra.ai/llms.txt` → Migrations section +2. **Look up new APIs**: See [`embedded-docs.md`](embedded-docs.md) +3. **Check for errors**: See [`common-errors.md`](common-errors.md) +4. **Ask in Discord**: https://discord.gg/BTYqqHKUrf +5. **File issues**: https://github.com/mastra-ai/mastra/issues + +## Key principles + +1. **Official docs are source of truth** - Start with `https://mastra.ai/llms.txt` +2. **Verify with embedded docs** - Check installed version APIs +3. **Update incrementally** - Don't skip major versions +4. **Test thoroughly** - Run tests after each change +5. **Use automation** - Use codemods when available diff --git a/.agents/skills/mastra/references/remote-docs.md b/.agents/skills/mastra/references/remote-docs.md new file mode 100644 index 0000000..dbd587b --- /dev/null +++ b/.agents/skills/mastra/references/remote-docs.md @@ -0,0 +1,193 @@ +# Remote Docs Reference + +How to look up current documentation from https://mastra.ai when local packages aren't available or you need conceptual guidance. + +**Use this when:** + +- Mastra packages aren't installed locally +- You need conceptual explanations or guides +- You want the latest documentation (may be ahead of installed version) + +## Documentation site structure + +Mastra docs are organized at **https://mastra.ai**: + +- **Docs**: Core documentation covering concepts, features, and implementation details +- **Models**: Mastra provides a unified interface for working with LLMs across multiple providers +- **Guides**: Step-by-step tutorials for building specific applications +- **Reference**: API reference documentation + +## Finding relevant documentation + +### Method 1: Use llms.txt (Recommended) + +The main llms.txt file provides an agent-friendly overview of all documentation: https://mastra.ai/llms.txt + +This returns a structured markdown document with: + +- Documentation organization and hierarchy +- All available topics and sections +- Direct links to relevant documentation +- Agent-optimized content structure + +**Use this first** to understand what documentation is available and where to find specific topics. + +### Method 2: Direct URL patterns + +Documentation follows predictable URL patterns: + +- Overview pages: `https://mastra.ai/docs/{topic}/overview` +- API reference: `https://mastra.ai/reference/{topic}/` +- Guides: `https://mastra.ai/guides/{topic}/` + +**Examples:** + +- `https://mastra.ai/docs/agents/overview` +- `https://mastra.ai/docs/workflows/overview` +- `https://mastra.ai/reference/workflows/workflow-methods/` + +## Agent-friendly documentation + +**Critical feature**: Send the `text-markdown` request header or add `.md` to any documentation URL to get clean, agent-friendly markdown. + +### Standard URL: + +``` +https://mastra.ai/reference/workflows/workflow-methods/then +``` + +### Agent-friendly URL (Markdown): + +``` +https://mastra.ai/reference/workflows/workflow-methods/then.md +``` + +The `.md` version: + +- Removes navigation, headers, footers +- Returns pure markdown content +- Optimized for LLM consumption +- Includes all code examples and explanations + +## Lookup Workflow + +### 1. Check the main documentation index + +**Start here** to understand what's available: + +``` +https://mastra.ai/llms.txt +``` + +This provides: + +- Complete documentation structure +- Available topics and sections +- Links to relevant documentation pages + +### 2. Find relevant documentation + +**Option A: Use information from llms.txt** +The main llms.txt will guide you to the right section. + +**Option B: Construct URL directly** + +``` +https://mastra.ai/docs/{topic}/overview +https://mastra.ai/reference/{topic}/ +``` + +### 3. Fetch agent-friendly version + +Add `.md` to the end of any documentation URL: + +``` +https://mastra.ai/reference/workflows/workflow-methods/then.md +``` + +### 4. Extract relevant information + +The markdown will include: + +- Function signatures +- Parameter descriptions +- Return types +- Usage examples +- Best practices + +## Common documentation paths + +### Agents + +- Overview: `https://mastra.ai/docs/agents/overview` +- Creating agents: `https://mastra.ai/docs/agents/creating-agents` +- Agent tools: `https://mastra.ai/docs/agents/tools` +- Memory: `https://mastra.ai/docs/agents/memory` + +### Workflows + +- Overview: `https://mastra.ai/docs/workflows/overview` +- Creating workflows: `https://mastra.ai/docs/workflows/creating-workflows` +- Workflow methods: `https://mastra.ai/reference/workflows/workflow-methods/` + +### Tools + +- Overview: `https://mastra.ai/docs/tools/overview` +- Creating tools: `https://mastra.ai/docs/tools/creating-tools` + +### Memory + +- Overview: `https://mastra.ai/docs/memory/overview` +- Configuration: `https://mastra.ai/docs/memory/configuration` + +### RAG + +- Overview: `https://mastra.ai/docs/rag/overview` +- Vector stores: `https://mastra.ai/docs/rag/vector-stores` + +## Example: Looking up workflow .then() method + +### 1. Check main documentation index + +``` +WebFetch({ + url: "https://mastra.ai/llms.txt", + prompt: "Where can I find documentation about workflow methods like .then()?" +}) +``` + +This will point you to the workflows reference section. + +### 2. Fetch specific method documentation + +``` +https://mastra.ai/reference/workflows/workflow-methods/then.md +``` + +### 3. Use WebFetch tool + +``` +WebFetch({ + url: "https://mastra.ai/reference/workflows/workflow-methods/then.md", + prompt: "What are the parameters for the .then() method and how do I use it?" +}) +``` + +## When to use remote vs embedded docs + +| Situation | Use | +| -------------------------- | --------------------------------------------------- | +| Packages installed locally | **Embedded docs** (guaranteed version match) | +| Packages not installed | **Remote docs** | +| Need conceptual guides | **Remote docs** | +| Need exact API signatures | **Embedded docs** (if available) | +| Exploring new features | **Remote docs** (may be ahead of installed version) | +| Need working examples | **Both** (embedded for types, remote for guides) | + +## Best practices + +1. **Always use .md** for fetching documentation +2. **Check sitemap.xml** when unsure about URL structure +3. **Prefer embedded docs** when packages are installed (version accuracy) +4. **Use remote docs** for conceptual understanding and guides +5. **Combine both** for comprehensive understanding diff --git a/skills-lock.json b/skills-lock.json new file mode 100644 index 0000000..9d42d7c --- /dev/null +++ b/skills-lock.json @@ -0,0 +1,10 @@ +{ + "version": 1, + "skills": { + "mastra": { + "source": "mastra-ai/skills", + "sourceType": "github", + "computedHash": "e252375a8efb764c7015eabe5deae8d387422a167da47eb20f326ccb7d697eb0" + } + } +} From 81451190f2a7edea809a4f90956c59efb6381a56 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 27 Feb 2026 17:27:20 +0200 Subject: [PATCH 3/5] challenge parser & skills --- package.json | 1 + pnpm-lock.yaml | 733 ++++++++++++++++++ src/config/m2m.config.ts | 10 + .../challenge/challenge-parser-agent.ts | 92 +++ src/mastra/index.ts | 8 +- .../tools/challenge/fetch-challenge-tool.ts | 149 ++++ .../challenge/challenge-context-workflow.ts | 622 +++++++++++++++ src/mastra/workspaces/ai.workspace.ts | 13 + src/mastra/workspaces/index.ts | 1 + src/utils/auth/m2m.service.ts | 31 + src/utils/index.ts | 3 +- workspace/skills/codebase-detection/SKILL.md | 76 ++ .../skills/requirement-grouping/SKILL.md | 55 ++ .../spec-requirements-extraction/SKILL.md | 86 ++ .../references/REQUIREMENT-PATTERNS.md | 69 ++ .../submission-guidelines-extraction/SKILL.md | 116 +++ .../skills/tech-stack-extraction/SKILL.md | 62 ++ 17 files changed, 2124 insertions(+), 3 deletions(-) create mode 100644 src/config/m2m.config.ts create mode 100644 src/mastra/agents/challenge/challenge-parser-agent.ts create mode 100644 src/mastra/tools/challenge/fetch-challenge-tool.ts create mode 100644 src/mastra/workflows/challenge/challenge-context-workflow.ts create mode 100644 src/mastra/workspaces/ai.workspace.ts create mode 100644 src/mastra/workspaces/index.ts create mode 100644 src/utils/auth/m2m.service.ts create mode 100644 workspace/skills/codebase-detection/SKILL.md create mode 100644 workspace/skills/requirement-grouping/SKILL.md create mode 100644 workspace/skills/spec-requirements-extraction/SKILL.md create mode 100644 workspace/skills/spec-requirements-extraction/references/REQUIREMENT-PATTERNS.md create mode 100644 workspace/skills/submission-guidelines-extraction/SKILL.md create mode 100644 workspace/skills/tech-stack-extraction/SKILL.md diff --git a/package.json b/package.json index 13abe7f..4ad0572 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "@mastra/pg": "^1.2.0", "ai": "^6.0.71", "ai-sdk-ollama": "^3.4.0", + "tc-core-library-js": "^2.4.1", "zod": "^4.3.6" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2240693..4f51b95 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: ai-sdk-ollama: specifier: ^3.4.0 version: 3.4.0(ai@6.0.71(zod@4.3.6))(zod@4.3.6) + tc-core-library-js: + specifier: ^2.4.1 + version: 2.4.1 zod: specifier: ^4.3.6 version: 4.3.6 @@ -948,6 +951,10 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} @@ -960,9 +967,16 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/express-jwt@0.0.42': + resolution: {integrity: sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==} + '@types/express-serve-static-core@4.19.8': resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} + '@types/express-unless@2.0.3': + resolution: {integrity: sha512-iJbM7nsyBgnxCrCe7VjWIi4nyyhlaKUl7jxeHDpK+KXk3sYrUZViMkgFv9qSZmxDleB8dfpQR9gK5MGNyM/M6w==} + deprecated: This is a stub types definition. express-unless provides its own type definitions, so you do not need this installed. + '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} @@ -1083,6 +1097,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + ai-sdk-ollama@3.4.0: resolution: {integrity: sha512-iJQ4XwMOgX+mQO9NpJnj7S3AGiaEjBSO1ahc946mlp57T7t81dr1TtB/hoTZuqpjvV3jZY17Vv3LS4NI5qsmqQ==} engines: {node: '>=22'} @@ -1146,13 +1164,43 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + async-mutex@0.5.0: resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + axios@0.19.2: + resolution: {integrity: sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==} + deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 + + axios@0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + + babel-runtime@6.6.1: + resolution: {integrity: sha512-5pdhO3jaxqh9L42oBfbrqy58swDhciM47sRGoODURdRxwfiqttEvK87LX27W/PYY6f4cJt2mEdyoLcr/+cM/iw==} + + backoff@2.5.0: + resolution: {integrity: sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==} + engines: {node: '>= 0.6'} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1163,6 +1211,9 @@ packages: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + body-parser@1.20.4: resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -1190,6 +1241,14 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + bunyan@1.8.15: + resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==} + engines: {'0': node >=0.10.0} + hasBin: true + bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -1217,6 +1276,9 @@ packages: caniuse-lite@1.0.30001768: resolution: {integrity: sha512-qY3aDRZC5nWPgHUgIB84WL+nySuo19wk0VJpp/XI9T34lrvkyhRvNVOFJOp2kxClQhiFBu+TaUSudf6oa3vkSA==} + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + chalk-template@0.4.0: resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} engines: {node: '>=12'} @@ -1237,6 +1299,9 @@ packages: resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + codependency@0.1.4: + resolution: {integrity: sha512-26yAvd3+17xSfDADtnzpnL5GK+8+x4QeZ3DegekkHyno6LWeHqXuSU7q8w/IrAur7SY6ISPApOWtWTfuIF0Xpg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1247,6 +1312,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + commander@14.0.3: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} @@ -1305,6 +1374,13 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} + core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + cors@2.8.6: resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} @@ -1313,6 +1389,10 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -1328,6 +1408,14 @@ packages: supports-color: optional: true + debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -1356,6 +1444,10 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -1372,6 +1464,10 @@ packages: resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} + dtrace-provider@0.8.8: + resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==} + engines: {node: '>=0.10'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -1379,6 +1475,12 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -1517,6 +1619,9 @@ packages: peerDependencies: express: '>= 4.11' + express-unless@2.1.3: + resolution: {integrity: sha512-wj4tLMyCVYuIIKHGt0FhCtIViBcwzWejX0EjNxveAa6dG+0XBCQhMbx+PnkLkFCxLC69qoFrxds4pIyL88inaQ==} + express@4.22.1: resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} @@ -1532,6 +1637,13 @@ packages: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + fast-copy@4.0.2: resolution: {integrity: sha512-ybA6PDXIXOXivLJK/z9e+Otk7ve13I4ckBvGO5I2RRmBU1gMHLVDJYEuJYhGwez7YNlYji2M2DvVU+a9mSFDlw==} @@ -1604,6 +1716,26 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + follow-redirects@1.5.10: + resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==} + engines: {node: '>=4.0'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -1659,6 +1791,9 @@ packages: get-tsconfig@4.13.1: resolution: {integrity: sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==} + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1667,6 +1802,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@6.0.4: + resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1686,6 +1825,15 @@ packages: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1724,6 +1872,18 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -1756,6 +1916,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1828,6 +1992,9 @@ packages: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-unicode-supported@2.1.0: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} @@ -1839,6 +2006,9 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + jose@6.1.3: resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} @@ -1863,6 +2033,9 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -1890,6 +2063,9 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -1898,6 +2074,23 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonwebtoken@8.5.1: + resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} + engines: {node: '>=4', npm: '>=1.4.28'} + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + jwa@1.4.2: + resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} + + jwks-rsa@1.12.3: + resolution: {integrity: sha512-cFipFDeYYaO9FhhYJcZWX/IyZgc0+g316rcHnDpT2dNRNIE/lMOmWKKqp09TkJoYlNFzrEVODsR4GgXJMgWhnA==} + + jws@3.2.3: + resolution: {integrity: sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -1918,6 +2111,9 @@ packages: cpu: [x64, arm64, wasm32, arm] os: [darwin, linux, win32] + limiter@1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} @@ -1926,9 +2122,39 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.17.15: + resolution: {integrity: sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==} + + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lru-cache@11.2.5: resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} engines: {node: 20 || >=22} @@ -1936,6 +2162,13 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-memoizer@2.3.0: + resolution: {integrity: sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -1981,6 +2214,9 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + millisecond@0.1.2: + resolution: {integrity: sha512-BJ8XtxY+woL+5TkP6uS6XvOArm0JVrX2otkgtWZseHpIax0oOOPW3cnwhOjRqbEJg7YRO/BDF7fO/PTWNT3T9Q==} + mime-db@1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} @@ -2024,15 +2260,29 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mv@2.1.1: + resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} + engines: {node: '>=0.8.0'} + + nan@2.25.0: + resolution: {integrity: sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -2041,6 +2291,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + ncp@2.0.0: + resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} + hasBin: true + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -2073,6 +2327,9 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2142,6 +2399,10 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} @@ -2168,6 +2429,9 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + pg-cloudflare@1.3.0: resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} @@ -2257,6 +2521,10 @@ packages: resolution: {integrity: sha512-lz3YJOr0Nmiz0yHASaINEDHqoV+0bC3eD8aZAG+Ky292dAnVYul+ga/dMX8KCBXg8hHfKdxw0SztYD5j6dgUqQ==} engines: {node: '>=20'} + precond@0.2.3: + resolution: {integrity: sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==} + engines: {node: '>= 0.6'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2280,6 +2548,12 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + pump@3.0.3: resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} @@ -2291,6 +2565,10 @@ packages: resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} + qs@6.5.5: + resolution: {integrity: sha512-mzR4sElr1bfCaPJe7m8ilJ6ZXdDaGoObcYR0ZHSsktM/Lt21MVHj5De30GQH2eiZ1qGRTO7LCAzQsUeXTNexWQ==} + engines: {node: '>=0.6'} + quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} @@ -2300,6 +2578,10 @@ packages: quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + r7insight_node@1.8.4: + resolution: {integrity: sha512-6cQrzLkaOxdv/SRFXWRJjgFr8a3nXUOT/4IMFuBv+mWzBnu5DJl+HzONAsWYvclrlZnvfa54PaIPqPuPRSlbrQ==} + engines: {iojs: '>=0.10', node: '>=0.8.0', npm: '>=1.4.6'} + radash@12.1.1: resolution: {integrity: sha512-h36JMxKRqrAxVD8201FrCpyeNuUY9Y5zZwujr20fFO77tpUtGa6EZzfKw/3WaiBX95fq7+MpsuMLNdSnORAwSA==} engines: {node: '>=14.18.0'} @@ -2328,6 +2610,9 @@ packages: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} + reconnect-core@1.3.0: + resolution: {integrity: sha512-+gLKwmyRf2tjl6bLR03DoeWELzyN6LW9Xgr3vh7NXHHwPi0JC0N2TwPyf90oUEBkCRcD+bgQ+s3HORoG3nwHDg==} + registry-auth-token@3.3.2: resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} @@ -2335,6 +2620,11 @@ packages: resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} engines: {node: '>=0.10.0'} + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -2363,6 +2653,11 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rimraf@2.4.5: + resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + rollup-plugin-esbuild@6.2.1: resolution: {integrity: sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==} engines: {node: '>=14.18.0'} @@ -2385,6 +2680,9 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-json-stringify@1.2.0: + resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} + safe-stable-stringify@2.5.0: resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} @@ -2402,6 +2700,18 @@ packages: secure-json-parse@4.1.0: resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} + semver@5.0.1: + resolution: {integrity: sha512-Ne6/HdGZvvpXBdjW3o8J0pvxC2jnmVNBK7MKkMgsOBfrsIdTXfA5x+H9DUbQ2xzyvnLv0A0v9x8R4B40xNZIRQ==} + hasBin: true + + semver@5.1.0: + resolution: {integrity: sha512-sfKXKhcz5XVyfUZa2V4RbjK0xjOJCMLNF9H4p4v0UCo9wNHM/lH9RDuyDbGEtxWLMDlPBc8xI7AbbVLKXty+rQ==} + hasBin: true + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -2490,6 +2800,11 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -2549,6 +2864,10 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + tc-core-library-js@2.4.1: + resolution: {integrity: sha512-6RAmqMJyp9QWsbBydQJJfvpHsVcuBZQMvMSSaG10iJi0IidmntuU0GiTUjFvF06jW0DAd9iUNp/ICU8FfbpCbg==} + engines: {node: '>= 5'} + thread-stream@4.0.0: resolution: {integrity: sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==} engines: {node: '>=20'} @@ -2565,6 +2884,10 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + ts-api-utils@2.4.0: resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} @@ -2574,6 +2897,12 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2649,10 +2978,19 @@ packages: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -2702,6 +3040,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml@2.8.2: resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} @@ -3585,6 +3926,8 @@ snapshots: '@standard-schema/spec@1.1.0': {} + '@tootallnate/once@1.1.2': {} + '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 @@ -3600,6 +3943,11 @@ snapshots: '@types/estree@1.0.8': {} + '@types/express-jwt@0.0.42': + dependencies: + '@types/express': 4.17.25 + '@types/express-unless': 2.0.3 + '@types/express-serve-static-core@4.19.8': dependencies: '@types/node': 25.2.0 @@ -3607,6 +3955,10 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 1.2.1 + '@types/express-unless@2.0.3': + dependencies: + express-unless: 2.1.3 + '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 @@ -3760,6 +4112,12 @@ snapshots: acorn@8.15.0: {} + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + ai-sdk-ollama@3.4.0(ai@6.0.71(zod@4.3.6))(zod@4.3.6): dependencies: '@ai-sdk/provider': 3.0.7 @@ -3828,18 +4186,54 @@ snapshots: array-flatten@1.1.1: {} + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + async-mutex@0.5.0: dependencies: tslib: 2.8.1 + asynckit@0.4.0: {} + atomic-sleep@1.0.0: {} + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + axios@0.19.2: + dependencies: + follow-redirects: 1.5.10 + transitivePeerDependencies: + - supports-color + + axios@0.21.4(debug@4.4.3): + dependencies: + follow-redirects: 1.15.11(debug@4.4.3) + transitivePeerDependencies: + - debug + + babel-runtime@6.6.1: + dependencies: + core-js: 2.6.12 + + backoff@2.5.0: + dependencies: + precond: 0.2.3 + balanced-match@1.0.2: {} base64-js@1.5.1: {} baseline-browser-mapping@2.9.19: {} + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + body-parser@1.20.4: dependencies: bytes: 3.1.2 @@ -3903,6 +4297,15 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) + buffer-equal-constant-time@1.0.1: {} + + bunyan@1.8.15: + optionalDependencies: + dtrace-provider: 0.8.8 + moment: 2.30.1 + mv: 2.1.1 + safe-json-stringify: 1.2.0 + bytes@3.0.0: {} bytes@3.1.2: {} @@ -3923,6 +4326,8 @@ snapshots: caniuse-lite@1.0.30001768: {} + caseless@0.12.0: {} + chalk-template@0.4.0: dependencies: chalk: 4.1.2 @@ -3942,6 +4347,10 @@ snapshots: execa: 5.1.1 is-wsl: 2.2.0 + codependency@0.1.4: + dependencies: + semver: 5.0.1 + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -3950,6 +4359,10 @@ snapshots: colorette@2.0.20: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + commander@14.0.3: {} commondir@1.0.1: {} @@ -4000,6 +4413,10 @@ snapshots: cookie@0.7.2: {} + core-js@2.6.12: {} + + core-util-is@1.0.2: {} + cors@2.8.6: dependencies: object-assign: 4.1.1 @@ -4011,6 +4428,10 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + data-uri-to-buffer@4.0.1: {} dateformat@4.6.3: {} @@ -4019,6 +4440,10 @@ snapshots: dependencies: ms: 2.0.0 + debug@3.1.0: + dependencies: + ms: 2.0.0 + debug@3.2.7: dependencies: ms: 2.1.3 @@ -4033,6 +4458,8 @@ snapshots: deepmerge@4.3.1: {} + delayed-stream@1.0.0: {} + depd@2.0.0: {} destroy@1.2.0: {} @@ -4041,6 +4468,11 @@ snapshots: dotenv@17.2.3: {} + dtrace-provider@0.8.8: + dependencies: + nan: 2.25.0 + optional: true + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -4049,6 +4481,15 @@ snapshots: eastasianwidth@0.2.0: {} + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + ee-first@1.1.1: {} efrt@2.7.0: {} @@ -4224,6 +4665,8 @@ snapshots: express: 5.2.1 ip-address: 10.0.1 + express-unless@2.1.3: {} + express@4.22.1: dependencies: accepts: 1.3.8 @@ -4299,6 +4742,10 @@ snapshots: dependencies: is-extendable: 0.1.1 + extend@3.0.2: {} + + extsprintf@1.3.0: {} + fast-copy@4.0.2: {} fast-deep-equal@3.1.3: {} @@ -4385,6 +4832,24 @@ snapshots: flatted@3.3.3: {} + follow-redirects@1.15.11(debug@4.4.3): + optionalDependencies: + debug: 4.4.3 + + follow-redirects@1.5.10: + dependencies: + debug: 3.1.0 + transitivePeerDependencies: + - supports-color + + forever-agent@0.6.1: {} + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 @@ -4439,6 +4904,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -4447,6 +4916,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@6.0.4: + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + optional: true + globals@14.0.0: {} gopd@1.2.0: {} @@ -4462,6 +4940,13 @@ snapshots: section-matter: 1.0.0 strip-bom-string: 1.0.0 + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + has-flag@4.0.0: {} has-symbols@1.1.0: {} @@ -4491,6 +4976,27 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + human-signals@2.1.0: {} human-signals@8.0.1: {} @@ -4514,6 +5020,12 @@ snapshots: imurmurhash@0.1.4: {} + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + optional: true + inherits@2.0.4: {} ini@1.3.8: {} @@ -4558,6 +5070,8 @@ snapshots: is-stream@4.0.1: {} + is-typedarray@1.0.0: {} + is-unicode-supported@2.1.0: {} is-wsl@2.2.0: @@ -4566,6 +5080,8 @@ snapshots: isexe@2.0.0: {} + isstream@0.1.2: {} + jose@6.1.3: {} joycon@3.1.1: {} @@ -4587,6 +5103,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@0.1.1: {} + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -4603,6 +5121,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-safe@5.0.1: {} + json5@2.2.3: {} jsonfile@6.2.0: @@ -4611,6 +5131,52 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonwebtoken@8.5.1: + dependencies: + jws: 3.2.3 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 5.7.2 + + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + jwa@1.4.2: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jwks-rsa@1.12.3: + dependencies: + '@types/express-jwt': 0.0.42 + axios: 0.21.4(debug@4.4.3) + debug: 4.4.3 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + jsonwebtoken: 8.5.1 + limiter: 1.1.5 + lru-memoizer: 2.3.0 + ms: 2.1.3 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - supports-color + + jws@3.2.3: + dependencies: + jwa: 1.4.2 + safe-buffer: 5.2.1 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -4639,6 +5205,8 @@ snapshots: '@libsql/linux-x64-musl': 0.5.22 '@libsql/win32-x64-msvc': 0.5.22 + limiter@1.1.5: {} + local-pkg@1.1.2: dependencies: mlly: 1.8.0 @@ -4649,14 +5217,43 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash.clonedeep@4.5.0: {} + + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + lodash.merge@4.6.2: {} + lodash.once@4.1.1: {} + + lodash@4.17.15: {} + + lodash@4.17.23: {} + lru-cache@11.2.5: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-memoizer@2.3.0: + dependencies: + lodash.clonedeep: 4.5.0 + lru-cache: 6.0.0 + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -4709,6 +5306,8 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + millisecond@0.1.2: {} + mime-db@1.33.0: {} mime-db@1.52.0: {} @@ -4741,6 +5340,11 @@ snapshots: minimist@1.2.8: {} + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + optional: true + mlly@1.8.0: dependencies: acorn: 8.15.0 @@ -4748,14 +5352,30 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.3 + moment@2.30.1: + optional: true + ms@2.0.0: {} ms@2.1.3: {} + mv@2.1.1: + dependencies: + mkdirp: 0.5.6 + ncp: 2.0.0 + rimraf: 2.4.5 + optional: true + + nan@2.25.0: + optional: true + nanoid@3.3.11: {} natural-compare@1.4.0: {} + ncp@2.0.0: + optional: true + negotiator@0.6.3: {} negotiator@0.6.4: {} @@ -4781,6 +5401,8 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 + oauth-sign@0.9.0: {} + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -4840,6 +5462,9 @@ snapshots: path-exists@4.0.0: {} + path-is-absolute@1.0.1: + optional: true + path-is-inside@1.0.2: {} path-key@3.1.1: {} @@ -4856,6 +5481,8 @@ snapshots: pathe@2.0.3: {} + performance-now@2.1.0: {} + pg-cloudflare@1.3.0: optional: true @@ -4961,6 +5588,8 @@ snapshots: dependencies: '@posthog/core': 1.7.1 + precond@0.2.3: {} + prelude-ls@1.2.1: {} prettier@3.8.1: {} @@ -4978,6 +5607,12 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + pump@3.0.3: dependencies: end-of-stream: 1.4.5 @@ -4989,12 +5624,23 @@ snapshots: dependencies: side-channel: 1.1.0 + qs@6.5.5: {} + quansync@0.2.11: {} queue-microtask@1.2.3: {} quick-format-unescaped@4.0.4: {} + r7insight_node@1.8.4: + dependencies: + babel-runtime: 6.6.1 + codependency: 0.1.4 + json-stringify-safe: 5.0.1 + lodash: 4.17.15 + reconnect-core: 1.3.0 + semver: 5.1.0 + radash@12.1.1: {} range-parser@1.2.0: {} @@ -5024,6 +5670,10 @@ snapshots: real-require@0.2.0: {} + reconnect-core@1.3.0: + dependencies: + backoff: 2.5.0 + registry-auth-token@3.3.2: dependencies: rc: 1.2.8 @@ -5033,6 +5683,29 @@ snapshots: dependencies: rc: 1.2.8 + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.5 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + require-from-string@2.0.2: {} resolve-from@4.0.0: {} @@ -5051,6 +5724,11 @@ snapshots: reusify@1.1.0: {} + rimraf@2.4.5: + dependencies: + glob: 6.0.4 + optional: true + rollup-plugin-esbuild@6.2.1(esbuild@0.25.12)(rollup@4.55.3): dependencies: debug: 4.4.3 @@ -5109,6 +5787,9 @@ snapshots: safe-buffer@5.2.1: {} + safe-json-stringify@1.2.0: + optional: true + safe-stable-stringify@2.5.0: {} safer-buffer@2.1.2: {} @@ -5122,6 +5803,12 @@ snapshots: secure-json-parse@4.1.0: {} + semver@5.0.1: {} + + semver@5.1.0: {} + + semver@5.7.2: {} + semver@6.3.1: {} semver@7.7.3: {} @@ -5258,6 +5945,18 @@ snapshots: sprintf-js@1.0.3: {} + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + statuses@2.0.2: {} string-similarity@4.0.4: {} @@ -5302,6 +6001,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + tc-core-library-js@2.4.1: + dependencies: + axios: 0.19.2 + bunyan: 1.8.15 + jsonwebtoken: 8.5.1 + jwks-rsa: 1.12.3 + lodash: 4.17.23 + millisecond: 0.1.2 + r7insight_node: 1.8.4 + request: 2.88.2 + transitivePeerDependencies: + - supports-color + thread-stream@4.0.0: dependencies: real-require: 0.2.0 @@ -5317,12 +6029,23 @@ snapshots: toidentifier@1.0.1: {} + tough-cookie@2.5.0: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: typescript: 5.9.3 tslib@2.8.1: {} + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl@0.14.5: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -5391,8 +6114,16 @@ snapshots: uuid@11.1.0: {} + uuid@3.4.0: {} + vary@1.1.2: {} + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + web-streams-polyfill@3.3.3: {} whatwg-fetch@3.6.20: {} @@ -5423,6 +6154,8 @@ snapshots: yallist@3.1.1: {} + yallist@4.0.0: {} + yaml@2.8.2: {} yocto-queue@0.1.0: {} diff --git a/src/config/m2m.config.ts b/src/config/m2m.config.ts new file mode 100644 index 0000000..8961dd9 --- /dev/null +++ b/src/config/m2m.config.ts @@ -0,0 +1,10 @@ +export const M2mConfig = { + auth0: { + url: process.env.M2M_AUTH_URL ?? 'https://topcoder-dev.auth0.com/oauth/token', + domain: process.env.M2M_AUTH_DOMAIN ?? 'topcoder-dev.auth0.com', + audience: process.env.M2M_AUTH_AUDIENCE ?? 'https://m2m.topcoder-dev.com/', + proxyUrl: process.env.M2M_AUTH_PROXY_SERVER_URL ?? 'https://auth0proxy.topcoder-dev.com/token', + clientId: process.env.M2M_AUTH_CLIENT_ID, + clientSecret: process.env.M2M_AUTH_CLIENT_SECRET, + }, +}; diff --git a/src/mastra/agents/challenge/challenge-parser-agent.ts b/src/mastra/agents/challenge/challenge-parser-agent.ts new file mode 100644 index 0000000..b9e97f0 --- /dev/null +++ b/src/mastra/agents/challenge/challenge-parser-agent.ts @@ -0,0 +1,92 @@ +import { Agent } from '@mastra/core/agent'; +import { ollama } from '../../../utils'; + +/** + * Master agent responsible for parsing Topcoder challenge specifications. + * + * This agent uses structured output generation so the result always conforms to + * the Zod schema enforced at the workflow level. + * + * Domain knowledge is encoded in the system prompt which covers: + * spec-requirements-extraction, requirement-grouping, tech-stack-extraction, + * codebase-detection, and submission-guidelines-extraction. + */ +export const challengeParserAgent = new Agent({ + id: 'challenge-parser-agent', + name: 'Challenge Specification Parser', + model: ollama('mistral:latest', { + options: { + // Sampling — near-deterministic for strict JSON schema compliance + temperature: 0.1, + top_k: 40, + top_p: 0.9, + + // Repetition control — prevent repetitive text across many requirement entries + // and avoid echoing skill instruction phrasing into output + repeat_penalty: 1.15, + repeat_last_n: 192, + + // Context window — system prompt (~1.2K tok) + skill activations (~3K tok) + // + full challenge spec (some specs are very long) + num_ctx: 16384, + + // Generation limit — enough for structured JSON with many requirements, groups, tech stack, etc. + num_predict: 8192, + + // Prompt processing — smaller system prompt with skills loaded progressively + num_batch: 256, + }, + }), + instructions: { + role: 'system', + content: `You are an expert Topcoder challenge specification analyst. +Your sole job is to read the FULL challenge specification (public description, +private description, skills list, and metadata) and produce a structured JSON +object that captures every requirement, technology, and submission guideline. + +──────────────────────────────────────────────────────── +CONTEXT +──────────────────────────────────────────────────────── +Topcoder challenges describe work to be done by competing developers. +The description is written in Markdown by a copilot and follows NO fixed +template — headings, numbering, bullet styles, section names, and nesting +all vary between challenges. Your task is to normalise this into a strict +schema regardless of how the source is formatted. + +──────────────────────────────────────────────────────── +SKILLS-DRIVEN PARSING PROTOCOL +──────────────────────────────────────────────────────── +Follow these parsing concerns in order: + + 1. **spec-requirements-extraction** — Parse the specification to identify + every distinct requirement the submitter must deliver. Follow the + ID assignment (REQ_01, REQ_02, …), title/description rules, priority + determination, and constraint extraction rules. + + 2. **requirement-grouping** — After extracting all requirements, group + them by feature area or problem domain. Follow the grouping rules + to assign GRP_XX IDs, names, and ensure every requirement appears + in exactly one group. + + 3. **tech-stack-extraction** — Extract the technology stack as a flat + array of canonical-cased names. Follow the naming rules and + implicit technology detection heuristics. + + 4. **codebase-detection** — Determine whether the challenge provides + pre-existing artifacts or is greenfield. Follow the artifact + scanning checklist, type classification, and summary writing rules. + + 5. **submission-guidelines-extraction** — Extract structured submission + information including deliverables, packaging, type, storage, and + eligibility conditions. Follow the field definitions, defaults, + and detection heuristics. + +──────────────────────────────────────────────────────── +STRICT OUTPUT CONTRACT +──────────────────────────────────────────────────────── +Return ONLY the JSON object matching the provided schema. +Do NOT add commentary, markdown fences, or extra keys. +Every field is mandatory per the schema — never omit a key. +/no_think`, + }, +}); diff --git a/src/mastra/index.ts b/src/mastra/index.ts index 62cc1c4..aae67ac 100644 --- a/src/mastra/index.ts +++ b/src/mastra/index.ts @@ -1,17 +1,20 @@ import { Mastra } from '@mastra/core'; import { Observability, DefaultExporter, SensitiveDataFilter } from '@mastra/observability'; import { skillExtractionWorkflow } from './workflows/skills/skill-extraction-workflow'; +import { challengeContextWorkflow } from './workflows/challenge/challenge-context-workflow'; import { skillsMatchingAgent } from './agents/skills/skills-matching-agent'; +import { challengeParserAgent } from './agents/challenge/challenge-parser-agent'; import { PostgresStore } from '@mastra/pg'; import { skillDiscoveryAnswerRelevancyScorer, skillDiscoveryPromptAlignmentScorer, } from './scorers/skills-matching-scorers'; import { apiAuthLayer, middlewareConfig, tcAILogger } from '../utils'; +import { aiWorkspace } from './workspaces'; export const mastra = new Mastra({ - workflows: { skillExtractionWorkflow }, - agents: { skillsMatchingAgent }, + workflows: { skillExtractionWorkflow, challengeContextWorkflow }, + agents: { skillsMatchingAgent, challengeParserAgent }, scorers: { skillDiscoveryAnswerRelevancyScorer, skillDiscoveryPromptAlignmentScorer, @@ -31,6 +34,7 @@ export const mastra = new Mastra({ }, }, }), + workspace: aiWorkspace, server: { port: Number(process.env.PORT || 3000), studioBase: '/studio', diff --git a/src/mastra/tools/challenge/fetch-challenge-tool.ts b/src/mastra/tools/challenge/fetch-challenge-tool.ts new file mode 100644 index 0000000..08aacb9 --- /dev/null +++ b/src/mastra/tools/challenge/fetch-challenge-tool.ts @@ -0,0 +1,149 @@ +// Challenge API: GET /v6/challenges/:challengeId (M2M token required) +// Fetches full challenge details from the Topcoder API by challenge ID. +import { createTool } from '@mastra/core/tools'; +import { z } from 'zod'; +import { M2MService } from '../../../utils/auth/m2m.service'; + +const BASE_URL = `${process.env.TC_API_BASE}/v6/challenges`; + +const m2mService = new M2MService(); + +export const fetchChallengeTool = createTool({ + id: 'fetch-challenge-by-id', + description: + 'Fetches a Topcoder challenge by its UUID from the Topcoder v5 Challenges API using M2M authentication', + inputSchema: z.object({ + challengeId: z.string().uuid().describe('UUID of the Topcoder challenge to fetch'), + }), + outputSchema: z.object({ + challenge: z.object({ + id: z.string(), + name: z.string(), + description: z.string().optional(), + privateDescription: z.string().optional(), + descriptionFormat: z.string().optional(), + status: z.string(), + track: z.string().optional(), + type: z.string().optional(), + tags: z.array(z.string()), + skills: z.array( + z.object({ + id: z.string(), + name: z.string(), + }), + ), + numOfRegistrants: z.number(), + numOfSubmissions: z.number(), + registrationStartDate: z.string().optional(), + registrationEndDate: z.string().optional(), + startDate: z.string().optional(), + endDate: z.string().optional(), + prizeSets: z + .array( + z.object({ + type: z.string(), + prizes: z.array( + z.object({ + type: z.string(), + value: z.number(), + }), + ), + }), + ) + .optional(), + reviewers: z + .array( + z.object({ + scorecardId: z.string().optional(), + isMemberReview: z.boolean(), + type: z.string().optional(), + aiWorkflowId: z.string().optional(), + }), + ) + .optional(), + discussions: z + .array( + z.object({ + url: z.string().optional(), + }), + ) + .optional(), + overview: z + .object({ + totalPrizes: z.number().optional(), + }) + .optional(), + task: z + .object({ + isTask: z.boolean().optional(), + }) + .optional(), + legacy: z + .object({ + reviewType: z.string().optional(), + }) + .optional(), + }), + }), + execute: async (inputData, context) => { + const logger = context.mastra?.getLogger?.(); + logger?.info('Fetching challenge by ID: {challengeId}', { + challengeId: inputData.challengeId, + }); + return await fetchChallenge(inputData.challengeId); + }, +}); + +const fetchChallenge = async (challengeId: string) => { + const token = await m2mService.getM2MToken(); + + const url = `${BASE_URL}/${encodeURIComponent(challengeId)}`; + const response = await fetch(url, { + method: 'GET', + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + 'app-version': '2.0.0', + + }, + signal: AbortSignal.timeout(15_000), + }); + + if (!response.ok) { + throw new Error( + `Failed to fetch challenge ${challengeId} (HTTP ${response.status})`, + ); + } + + const data = await response.json(); + + return { + challenge: { + id: data.id, + name: data.name, + description: data.description ?? undefined, + privateDescription: data.privateDescription ?? undefined, + descriptionFormat: data.descriptionFormat ?? undefined, + status: data.status ?? '', + track: data.track?.name ?? undefined, + type: data.type?.name ?? undefined, + tags: data.tags ?? [], + skills: (data.skills ?? []).map((s: { id: string; name: string }) => ({ + id: s.id, + name: s.name, + })), + numOfRegistrants: data.numOfRegistrants ?? 0, + numOfSubmissions: data.numOfSubmissions ?? 0, + registrationStartDate: data.registrationStartDate ?? undefined, + registrationEndDate: data.registrationEndDate ?? undefined, + startDate: data.startDate ?? undefined, + endDate: data.endDate ?? undefined, + prizeSets: data.prizeSets ?? undefined, + reviewers: data.reviewers ?? undefined, + discussions: data.discussions ?? undefined, + overview: data.overview ?? undefined, + task: data.task ?? undefined, + legacy: data.legacy ?? undefined, + }, + }; +}; diff --git a/src/mastra/workflows/challenge/challenge-context-workflow.ts b/src/mastra/workflows/challenge/challenge-context-workflow.ts new file mode 100644 index 0000000..871543c --- /dev/null +++ b/src/mastra/workflows/challenge/challenge-context-workflow.ts @@ -0,0 +1,622 @@ +import { createWorkflow, createStep } from '@mastra/core/workflows'; +import { z } from 'zod'; +import { tcAILogger } from '../../../utils/logger'; +import { fetchChallengeTool } from '../../tools/challenge/fetch-challenge-tool'; + +// --------------------------------------------------------------------------- +// Zod Schemas +// --------------------------------------------------------------------------- + +const constraintSchema = z.object({ + id: z.string(), + text: z.string(), +}); + +const requirementSchema = z.object({ + id: z.string(), + title: z.string(), + description: z.string(), + priority: z.enum(['high', 'medium', 'low']), + constraints: z.array(constraintSchema), +}); + +const requirementGroupSchema = z.object({ + id: z.string().describe('Sequential group ID, e.g. GRP_01'), + name: z.string().describe('Short name of the feature area / story, e.g. "Energy Monitoring"'), + requirementIds: z.array(z.string()).describe('Ordered list of requirement IDs belonging to this group'), +}); + +const skillSchema = z.object({ + id: z.string(), + name: z.string(), +}); + +const reviewerInfoSchema = z.object({ + scorecardId: z.string(), + isMemberReview: z.boolean(), + type: z.string().optional(), + aiWorkflowId: z.string().optional(), +}); + +/** + * Runtime environment **expectations** extracted solely from the challenge + * specification (JSON). At this stage no submission exists yet — every field + * reflects what the challenge *requires or implies*, not what a submission + * actually provides. + */ +const runtimeEnvironmentSchema = z.object({ + os: z.string().describe('Expected target operating system (e.g. "Linux", "Windows", "macOS", "any", "unknown")'), + containerized: z.boolean().describe('Whether the challenge expects the solution to run inside a container (Docker, Podman, etc.)'), + containerTool: z.string().optional().describe('Expected container tool if containerized (e.g. "Docker", "Docker Compose", "Podman", "Kubernetes")'), + dockerfileExpected: z.boolean().optional().describe('Whether the challenge expects a Dockerfile / docker-compose file to be included in the submission'), + runtimeEngine: z.string().describe('Expected primary runtime engine (e.g. "Node.js", "Python", "JVM", "Go", ".NET CLR", "browser", "unknown")'), + runtimeVersion: z.string().optional().describe('Required runtime version if specified in the challenge (e.g. ">=18", "3.11", "21 LTS")'), + programmingLanguages: z.array(z.string()).describe('Programming languages required by the challenge (e.g. ["TypeScript", "Python"])'), + packageManager: z.string().optional().describe('Expected package manager if mentioned in the challenge (e.g. "npm", "pnpm", "yarn", "pip", "poetry", "maven")'), + buildTool: z.string().optional().describe('Expected build tool if mentioned in the challenge (e.g. "webpack", "vite", "tsc", "gradle", "make")'), + deploymentTarget: z.string().optional().describe('Expected deployment target if specified (e.g. "AWS Lambda", "Vercel", "Heroku", "on-premise", "local")'), + serverType: z.string().optional().describe('Expected server framework or type if specified (e.g. "Express", "NestJS", "FastAPI", "Spring Boot")'), + databaseEngine: z.string().optional().describe('Expected primary database if mentioned in the challenge (e.g. "PostgreSQL", "MongoDB", "DynamoDB")'), + additionalServices: z.array(z.string()).optional().describe('Additional services expected by the challenge (e.g. ["Redis", "RabbitMQ", "Elasticsearch"])'), + notes: z.string().optional().describe('Any other runtime / environment expectations inferred from the challenge spec'), +}); + +/** + * Existing codebase / starting-point information extracted from the challenge + * specification. Captures whether the challenge provides pre-existing + * artifacts (repos, starter code, documentation, designs, APIs, datasets) + * or if the work is entirely greenfield. + */ +const existingArtifactSchema = z.object({ + type: z.enum([ + 'repository', 'starter_code', 'boilerplate', 'documentation', + 'api_spec', 'design', 'dataset', 'database_dump', 'config', + 'library', 'other', + ]).describe('Kind of pre-existing artifact'), + description: z.string().describe('What this artifact contains or provides'), + url: z.string().optional().describe('URL / link if mentioned (e.g. Git repo, Figma, Swagger)'), + notes: z.string().optional().describe('Additional context about this artifact'), +}); + +const existingCodebaseSchema = z.object({ + isGreenfield: z.boolean().describe( + 'true if the challenge is entirely from scratch with no pre-existing code or artifacts to build upon', + ), + summary: z.string().describe( + 'Brief description of the existing codebase / starting-point status ' + + '(e.g. "Existing NestJS API with Prisma ORM — extend with new endpoints" ' + + 'or "Greenfield — build from scratch")', + ), + artifacts: z.array(existingArtifactSchema).describe( + 'List of pre-existing artifacts referenced by the challenge (repos, starter code, docs, designs, etc.). ' + + 'Empty array if greenfield.', + ), + repositoryUrl: z.string().optional().describe( + 'Primary Git repository URL if an existing codebase is provided', + ), + branchOrTag: z.string().optional().describe( + 'Branch, tag, or commit reference to use if specified', + ), + languages: z.array(z.string()).optional().describe( + 'Programming languages present in the existing codebase (may differ from challenge requirements)', + ), + frameworks: z.array(z.string()).optional().describe( + 'Frameworks / libraries already present in the existing codebase', + ), + notes: z.string().optional().describe( + 'Any other observations about the starting point inferred from the challenge spec', + ), +}); + +/** + * Structured submission guidelines extracted from the challenge specification. + * Breaks down the free-form "what / how / where to submit" prose into + * actionable fields for downstream review automation. + */ +const submissionGuidelinesSchema = z.object({ + summary: z.string().describe( + 'Brief overall summary of the submission requirements in 1-3 sentences', + ), + whatToSubmit: z.array(z.string()).describe( + 'List of deliverables the submitter must include ' + + '(e.g. "source code", "README.md", "Postman collection", "Docker setup", "unit tests", "demo video")', + ), + howToSubmit: z.string().describe( + 'Instructions on how to package / format the submission ' + + '(e.g. "ZIP archive", "Git patch file", "single commit on a branch")', + ), + whereToSubmit: z.string().describe( + 'Submission destination / platform ' + + '(e.g. "Topcoder challenge page", "GitHub pull request", "external URL")', + ), + submissionType: z.enum([ + 'full_codebase', 'patch', 'link_to_repository', + 'link_to_deployment', 'file_upload', 'other', + ]).describe( + 'Whether the challenge expects the entire codebase, a patch / diff of an existing codebase, ' + + 'a link to an external Git repository, a link to a running deployment, a file upload, or something else', + ), + submissionStorage: z.enum([ + 'topcoder_upload', 'git_repository', 'external_file_storage', + 'cloud_deployment', 'other', + ]).describe( + 'Where the final submission artifact lives — uploaded to Topcoder, ' + + 'pushed to a Git repo, hosted on external file storage (S3, Drive, etc.), ' + + 'deployed to a cloud environment, or other', + ), + isPatchOfExisting: z.boolean().describe( + 'true if the submission should be a patch / diff on top of an existing codebase ' + + 'rather than a standalone full codebase', + ), + eligibilityConditions: z.array(z.string()).optional().describe( + 'Any conditions that must be met for the submission to be eligible for review ' + + '(e.g. "must pass SAST scanner", "must include unit tests with ≥80% coverage")', + ), + notes: z.string().optional().describe( + 'Any additional submission-related information that does not fit the above fields', + ), +}); + +const prizeSchema = z.object({ + placement: z.number(), + value: z.number(), + currency: z.string(), +}); + +// --------------------------------------------------------------------------- +// Scorecard Schemas (mirrors GET /v6/scorecards/:id response) +// --------------------------------------------------------------------------- + +const scorecardQuestionSchema = z.object({ + id: z.string(), + type: z.enum(['SCALE', 'YES_NO', 'TEST_CASE']), + description: z.string(), + guidelines: z.string(), + weight: z.number(), + requiresUpload: z.boolean().optional(), + scaleMin: z.number().nullable().optional(), + scaleMax: z.number().nullable().optional(), + sortOrder: z.number(), +}); + +const scorecardSectionSchema = z.object({ + id: z.string(), + name: z.string(), + weight: z.number(), + sortOrder: z.number(), + questions: z.array(scorecardQuestionSchema), +}); + +const scorecardGroupSchema = z.object({ + id: z.string(), + name: z.string(), + weight: z.number(), + sortOrder: z.number(), + sections: z.array(scorecardSectionSchema), +}); + +const scorecardSchema = z.object({ + id: z.string(), + name: z.string(), + version: z.string(), + status: z.enum(['ACTIVE', 'INACTIVE', 'DELETED']), + type: z.enum([ + 'SCREENING', 'REVIEW', 'APPROVAL', 'POST_MORTEM', + 'SPECIFICATION_REVIEW', 'CHECKPOINT_SCREENING', + 'CHECKPOINT_REVIEW', 'ITERATIVE_REVIEW', + ]), + challengeTrack: z.string(), + challengeType: z.string(), + minScore: z.number(), + minimumPassingScore: z.number(), + maxScore: z.number(), + scorecardGroups: z.array(scorecardGroupSchema), +}); + +export type Scorecard = z.infer; + +const unifiedContextSchema = z.object({ + challengeId: z.string(), + title: z.string(), + descriptionRaw: z.string(), + privateDescription: z.string().optional(), + descriptionFormat: z.string(), + + requirements: z.array(requirementSchema), + requirement_groups: z.array(requirementGroupSchema), + tech_stack: z.array(z.string()), + skills: z.array(skillSchema), + + challenge_metadata: z.object({ + status: z.string(), + track: z.string(), + type: z.string(), + totalPrizes: z.number(), + numOfRegistrants: z.number(), + numOfSubmissions: z.number(), + isTask: z.boolean(), + }), + + timeline: z.object({ + registrationStartDate: z.string(), + registrationEndDate: z.string(), + startDate: z.string(), + endDate: z.string(), + totalDurationDays: z.number(), + }), + + prizes: z.array(prizeSchema), + + review_criteria: z.object({ + reviewType: z.string(), + reviewers: z.array(reviewerInfoSchema), + scorecard: scorecardSchema.nullable().describe( + 'The human review scorecard fetched from the Topcoder API. ' + + 'null if no human reviewer entry (isMemberReview: true) was found or the API call failed.', + ), + }), + + runtime_environment: runtimeEnvironmentSchema.describe( + 'Runtime / execution environment expectations extracted solely from the challenge specification. ' + + 'No submission exists at this point — all values reflect what the challenge requires or implies.', + ), + + existing_codebase: existingCodebaseSchema.describe( + 'Status quo of the challenge: existing artifacts, codebase, documentation, or starting-point ' + + 'material referenced in the specification. If none, isGreenfield is true and artifacts is empty.', + ), + + submission_guidelines: submissionGuidelinesSchema.describe( + 'Structured submission guidelines extracted from the challenge specification: ' + + 'what to deliver, how to package it, where to submit, and whether it is a patch or full codebase.', + ), + discussion_url: z.string().optional(), +}); + +// Re-export the output type for downstream consumers +export type UnifiedChallengeContext = z.infer; + +// Schema for the AI-extracted portion of the context +const aiExtractedSchema = z.object({ + requirements: z.array(requirementSchema), + requirement_groups: z.array(requirementGroupSchema), + tech_stack: z.array(z.string()), + runtime_environment: runtimeEnvironmentSchema, + existing_codebase: existingCodebaseSchema, + submission_guidelines: submissionGuidelinesSchema, +}); + +type AIExtracted = z.infer; + +// --------------------------------------------------------------------------- +// Step 1 – Fetch challenge details by challenge ID +// --------------------------------------------------------------------------- + +const fetchChallengeDetails = createStep({ + id: 'fetch-challenge-details', + description: 'Fetches challenge details from Topcoder API using challenge ID', + inputSchema: z.object({ + challengeId: z + .string() + .uuid() + .describe('UUID of the challenge to fetch from Topcoder API'), + }), + outputSchema: z.object({ + challenge: z.any().describe('Challenge details object returned by the API'), + }), + execute: async ({ inputData, requestContext }) => { + tcAILogger.info(`[challenge-context:fetch-challenge-details] Fetching challenge: ${inputData.challengeId}`); + + const toolResult = await fetchChallengeTool.execute?.( + { challengeId: inputData.challengeId }, + { requestContext }, + ); + + if (!toolResult || 'error' in toolResult || !toolResult.challenge) { + throw new Error(`Failed to fetch challenge details for ID ${inputData.challengeId}`); + } + + tcAILogger.info('[challenge-context:fetch-challenge-details] Challenge details fetched successfully'); + return { challenge: toolResult.challenge }; + }, +}); + +// --------------------------------------------------------------------------- +// Step 2 – Use the challenge-parser-agent (AI) to extract requirements, +// tech stack, and submission guidelines from the free-form +// challenge description, then merge with deterministic fields. +// --------------------------------------------------------------------------- + +const parseChallengeContext = createStep({ + id: 'parse-challenge-context', + description: + 'Parses challenge JSON into a unified review context. ' + + 'Uses the challenge-parser-agent for AI-driven extraction of requirements, ' + + 'tech stack, and submission guidelines from the fuzzy markdown description.', + inputSchema: z.object({ + challenge: z.any(), + }), + outputSchema: unifiedContextSchema, + execute: async ({ inputData, mastra }) => { + const data = inputData.challenge; + tcAILogger.info(`[challenge-context:parse] Parsing challenge: "${data.name ?? 'Untitled'}" (ID: ${data.id ?? 'N/A'})`); + + // -- AI-powered extraction ------------------------------------------------ + tcAILogger.info('[challenge-context:parse] Starting AI-powered extraction of requirements, tech stack, and guidelines...'); + const aiExtracted = await extractWithAI(mastra!, data); + tcAILogger.info(`[challenge-context:parse] AI extraction complete — ${aiExtracted.requirements.length} requirements, ${aiExtracted.tech_stack.length} tech stack items, ${aiExtracted.requirement_groups.length} groups`); + + // -- Skills with full category info (deterministic) ----------------------- + const skills: z.infer[] = (data.skills ?? []).map( + (s: { + id: string; + name: string; + }) => ({ + id: s.id, + name: s.name, + }), + ); + + // -- Timeline (deterministic) -------------------------------------------- + const startDate = data.startDate ?? data.registrationStartDate ?? ''; + const endDate = data.endDate ?? ''; + const totalDurationDays = + startDate && endDate + ? Math.round( + (new Date(endDate).getTime() - new Date(startDate).getTime()) / 86_400_000, + ) + : 0; + + // -- Prizes (deterministic) ----------------------------------------------- + const placementPrizeSet = (data.prizeSets ?? []).find( + (ps: { type: string }) => ps.type === 'PLACEMENT', + ); + const prizes: z.infer[] = (placementPrizeSet?.prizes ?? []).map( + (p: { type: string; value: number }, idx: number) => ({ + placement: idx + 1, + value: p.value, + currency: p.type, + }), + ); + + // -- Reviewers (deterministic) -------------------------------------------- + const reviewers: z.infer[] = (data.reviewers ?? []).map( + (r: { + scorecardId: string; + isMemberReview: boolean; + type?: string; + aiWorkflowId?: string; + }) => ({ + scorecardId: r.scorecardId, + isMemberReview: r.isMemberReview, + type: r.type, + aiWorkflowId: r.aiWorkflowId, + }), + ); + + // -- Discussion URL ------------------------------------------------------- + const discussion = (data.discussions ?? [])[0]; + const discussionUrl: string | undefined = discussion?.url; + + // -- Scorecard (deterministic + API fetch) -------------------------------- + // Find the single human reviewer entry (isMemberReview: true) + const humanReviewer = (data.reviewers ?? []).find( + (r: { isMemberReview: boolean }) => r.isMemberReview === true, + ) as { scorecardId: string } | undefined; + + let scorecard: z.infer | null = null; + if (humanReviewer?.scorecardId) { + tcAILogger.info(`[challenge-context:parse] Fetching scorecard: ${humanReviewer.scorecardId}`); + scorecard = await fetchScorecard(humanReviewer.scorecardId); + tcAILogger.info(`[challenge-context:parse] Scorecard fetch ${scorecard ? `succeeded: "${scorecard.name}" (${scorecard.scorecardGroups.length} groups)` : 'returned null'}`); + } else { + tcAILogger.info('[challenge-context:parse] No human reviewer found — skipping scorecard fetch'); + } + + // -- Assemble unified context --------------------------------------------- + const context: UnifiedChallengeContext = { + challengeId: data.id, + title: data.name, + descriptionRaw: data.description ?? '', + privateDescription: data.privateDescription || undefined, + descriptionFormat: data.descriptionFormat ?? 'markdown', + + requirements: aiExtracted.requirements, + requirement_groups: aiExtracted.requirement_groups, + tech_stack: aiExtracted.tech_stack, + runtime_environment: aiExtracted.runtime_environment, + existing_codebase: aiExtracted.existing_codebase, + skills, + + challenge_metadata: { + status: data.status ?? '', + track: data.track?.name ?? '', + type: data.type?.name ?? '', + totalPrizes: data.overview?.totalPrizes ?? 0, + numOfRegistrants: data.numOfRegistrants ?? 0, + numOfSubmissions: data.numOfSubmissions ?? 0, + isTask: data.task?.isTask ?? false, + }, + + timeline: { + registrationStartDate: data.registrationStartDate ?? '', + registrationEndDate: data.registrationEndDate ?? '', + startDate, + endDate, + totalDurationDays, + }, + + prizes, + + review_criteria: { + reviewType: data.legacy?.reviewType ?? 'UNKNOWN', + reviewers, + scorecard, + }, + + submission_guidelines: aiExtracted.submission_guidelines, + discussion_url: discussionUrl, + }; + + tcAILogger.info(`[challenge-context:parse] Unified context assembled — challenge "${context.title}", track: ${context.challenge_metadata.track}, type: ${context.challenge_metadata.type}, prizes: ${context.prizes.length}, skills: ${context.skills.length}`); + return context; + }, +}); + +// --------------------------------------------------------------------------- +// Scorecard Fetch Helper +// --------------------------------------------------------------------------- + +const SCORECARD_API_BASE = process.env.TC_API_BASE_URL ?? 'https://api.topcoder.com/v6'; + +/** + * Fetches the full scorecard (with groups → sections → questions) from the + * Topcoder Review API: GET /v6/scorecards/:id + * + * Returns `null` when the API is unreachable or returns a non-200 status so + * that the workflow can continue gracefully without the scorecard. + */ +async function fetchScorecard(scorecardId: string): Promise | null> { + const url = `${SCORECARD_API_BASE}/scorecards/${encodeURIComponent(scorecardId)}`; + try { + tcAILogger.info(`[challenge-context:fetchScorecard] GET ${url}`); + const res = await fetch(url, { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + signal: AbortSignal.timeout(15_000), + }); + if (!res.ok) { + tcAILogger.error(`[challenge-context:fetchScorecard] HTTP ${res.status} for ${url}`); + return null; + } + const body = await res.json(); + // Validate against our schema — passthrough unknown fields silently + const parsed = scorecardSchema.safeParse(body); + if (!parsed.success) { + tcAILogger.error( + `[challenge-context:fetchScorecard] Schema validation failed: ${parsed.error.message}`, + ); + return null; + } + return parsed.data; + } catch (err) { + tcAILogger.error(`[challenge-context:fetchScorecard] Failed to fetch from ${url}: ${err}`); + return null; + } +} + +// --------------------------------------------------------------------------- +// AI Extraction Helper +// --------------------------------------------------------------------------- + +/** + * Builds a prompt from the challenge data and invokes the challenge-parser-agent + * with structured output to extract requirements, tech stack, and submission + * guidelines. The output is validated against `aiExtractedSchema` by the AI SDK. + */ +async function extractWithAI( + mastra: Parameters< + NonNullable[0]['execute']> + > extends [infer P, ...unknown[]] + ? P extends { mastra: infer M } + ? NonNullable + : never + : never, + data: Record, +): Promise { + const agent = mastra.getAgentById('challenge-parser-agent'); + + // Compose all textual content the agent should analyse + const sections: string[] = []; + + sections.push(`# Challenge: ${(data.name as string) ?? 'Untitled'}`); + sections.push(`## Challenge ID\n${(data.id as string) ?? 'N/A'}`); + + if (data.description) { + sections.push(`## Public Description\n${data.description as string}`); + } + if (data.privateDescription) { + sections.push(`## Private Description\n${data.privateDescription as string}`); + } + if (Array.isArray(data.skills) && data.skills.length) { + const skillsList = data.skills + .map((s: { id: string; name: string }) => `- ${s.name} (${s.id})`) + .join('\n'); + sections.push(`## Registered Skills\n${skillsList}`); + } + if (Array.isArray(data.tags) && data.tags.length) { + sections.push(`## Tags\n${data.tags.join(', ')}`); + } + + const prompt = [ + 'Analyse the following Topcoder challenge specification and extract:', + '1. All individual requirements (with IDs, titles, descriptions, priorities, constraints)', + '2. Requirement groups — cluster requirements by feature area / story / problem domain they belong to', + '3. The full technology stack (languages, frameworks, tools, services, protocols, databases) implied or explicitly mentioned', + '4. Runtime environment EXPECTATIONS — there is NO submission yet; extract only what the challenge REQUIRES or IMPLIES:', + ' a. Expected target operating system (Linux, Windows, macOS, or any/unknown)', + ' b. Whether the challenge expects the solution to run inside a container (Docker, Podman, etc.) and which container tool', + ' c. Whether the challenge expects a Dockerfile / docker-compose file to be included', + ' d. Expected primary runtime engine (Node.js, Python interpreter, JVM, Go, .NET CLR, browser, etc.)', + ' e. Required runtime version if mentioned in the spec', + ' f. Programming language(s) required by the challenge (TypeScript, JavaScript, Python, Java, etc.)', + ' g. Expected package manager (npm, pnpm, yarn, pip, poetry, maven, etc.)', + ' h. Expected build tool (webpack, vite, tsc, gradle, make, etc.)', + ' i. Expected deployment target (AWS Lambda, Vercel, Heroku, on-premise, local, etc.)', + ' j. Expected server framework or type (Express, NestJS, FastAPI, Spring Boot, etc.)', + ' k. Expected primary database engine if applicable', + ' l. Expected additional services (Redis, RabbitMQ, Elasticsearch, etc.)', + ' m. Any other runtime / environment expectations inferred from the challenge spec', + '5. Existing codebase / starting-point status — determine from the challenge spec:', + ' a. Is this a GREENFIELD challenge (build from scratch) or does it build upon existing artifacts?', + ' b. If existing artifacts are provided, list each one with its type (repository, starter_code,', + ' boilerplate, documentation, api_spec, design, dataset, database_dump, config, library, other)', + ' c. For each artifact: what it contains, any URL/link, and additional notes', + ' d. Primary repository URL and branch/tag if an existing codebase is referenced', + ' e. Programming languages and frameworks already present in the existing codebase', + ' f. Write a brief summary of the starting-point status', + ' g. If no existing artifacts are mentioned, set isGreenfield=true and artifacts=[]', + '6. Submission guidelines — extract STRUCTURED information:', + ' a. A brief overall summary of the submission requirements (1-3 sentences)', + ' b. What to submit — list every deliverable (source code, README, Docker files, tests, demo video, etc.)', + ' c. How to submit — packaging format (ZIP archive, Git patch, single commit, etc.)', + ' d. Where to submit (Topcoder challenge page, GitHub PR, external URL, etc.)', + ' e. Submission type — one of: full_codebase, patch, link_to_repository, link_to_deployment, file_upload, other', + ' f. Submission storage — where the artifact lives: topcoder_upload, git_repository, external_file_storage, cloud_deployment, other', + ' g. Is this a PATCH of an existing codebase or a standalone full codebase?', + ' h. Eligibility conditions (e.g. "must pass SAST scanner", "≥80% test coverage")', + ' i. Any additional notes', + '', + '---BEGIN CHALLENGE SPECIFICATION---', + sections.join('\n\n'), + '---END CHALLENGE SPECIFICATION---', + ].join('\n'); + + tcAILogger.info('[challenge-context:extractWithAI] Invoking challenge-parser-agent for structured extraction...'); + const response = await agent.generate(prompt, { + structuredOutput: { schema: aiExtractedSchema }, + }); + + if (!response.object) { + tcAILogger.error('[challenge-context:extractWithAI] Agent returned no structured output'); + throw new Error('Challenge parser agent returned no structured output'); + } + + tcAILogger.info('[challenge-context:extractWithAI] Agent returned structured output successfully'); + return response.object; +} + +// --------------------------------------------------------------------------- +// Workflow Definition +// --------------------------------------------------------------------------- + +export const challengeContextWorkflow = createWorkflow({ + id: 'challenge-context', + inputSchema: z.object({ + challengeId: z.string().uuid().describe('Challenge ID to fetch challenge details from API'), + }), + outputSchema: unifiedContextSchema, +}) + .then(fetchChallengeDetails) + .then(parseChallengeContext) + .commit(); diff --git a/src/mastra/workspaces/ai.workspace.ts b/src/mastra/workspaces/ai.workspace.ts new file mode 100644 index 0000000..a9cb669 --- /dev/null +++ b/src/mastra/workspaces/ai.workspace.ts @@ -0,0 +1,13 @@ +import { Workspace, LocalFilesystem } from '@mastra/core/workspace'; + +export const aiWorkspace = new Workspace({ + filesystem: new LocalFilesystem({ + basePath: process.env.WORKSPACE_PATH!, + readOnly: true + }), + bm25: true, + autoIndexPaths: ['/'], + skills: ['/skills'], +}); + +await aiWorkspace.init(); \ No newline at end of file diff --git a/src/mastra/workspaces/index.ts b/src/mastra/workspaces/index.ts new file mode 100644 index 0000000..111f9b9 --- /dev/null +++ b/src/mastra/workspaces/index.ts @@ -0,0 +1 @@ +export * from './ai.workspace'; \ No newline at end of file diff --git a/src/utils/auth/m2m.service.ts b/src/utils/auth/m2m.service.ts new file mode 100644 index 0000000..ea037c5 --- /dev/null +++ b/src/utils/auth/m2m.service.ts @@ -0,0 +1,31 @@ +// eslint-disable-next-line @typescript-eslint/no-require-imports +const m2mAuth = require('tc-core-library-js').auth.m2m; +import { M2mConfig } from '../../config/m2m.config'; + +/** + * Service to get M2M token with auth0 configs + */ +export class M2MService { + private static m2m: ReturnType | null = null; + + constructor() { + const config = M2mConfig.auth0; + M2MService.m2m = m2mAuth({ + AUTH0_URL: config.url, + AUTH0_AUDIENCE: config.audience, + AUTH0_PROXY_SERVER_URL: config.proxyUrl, + }); + } + + /** + * Get M2M token. + * @returns the M2M token + */ + async getM2MToken() { + const config = M2mConfig.auth0; + return (await M2MService.m2m!.getMachineToken( + config.clientId, + config.clientSecret, + )) as string; + } +} diff --git a/src/utils/index.ts b/src/utils/index.ts index 77032ae..060d7b9 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,4 +1,5 @@ export * from './providers/ollama'; export * from './auth'; export * from './middleware'; -export * from './logger'; \ No newline at end of file +export * from './logger'; +export * from './auth/m2m.service' \ No newline at end of file diff --git a/workspace/skills/codebase-detection/SKILL.md b/workspace/skills/codebase-detection/SKILL.md new file mode 100644 index 0000000..a83aa25 --- /dev/null +++ b/workspace/skills/codebase-detection/SKILL.md @@ -0,0 +1,76 @@ +--- +name: codebase-detection +description: Determines whether a challenge provides pre-existing artifacts (repos, starter code, APIs, designs) or is greenfield. Use when analyzing a challenge specification to identify starting-point artifacts, their types, URLs, and existing technology present in provided code. +metadata: + author: topcoder + version: '1.0' + concern: artifact-detection + priority: high +--- + +# Existing Codebase / Starting-Point Detection + +Determine whether the challenge provides ANY pre-existing artifacts that +serve as a starting point for submitters. + +## Artifact Scanning Checklist + +Look for references to: + +- [ ] Git repositories, repo URLs, branches, or tags +- [ ] Starter code, boilerplate, templates, or seed projects +- [ ] API specifications (Swagger / OpenAPI), Postman collections +- [ ] Figma / Zeplin / design documents or wireframes +- [ ] Existing documentation, architecture diagrams +- [ ] Datasets, database dumps, CSV/JSON data files +- [ ] Configuration files, environment templates +- [ ] Libraries or packages the submitter must use + +## Greenfield Determination + +Set `isGreenfield` to **true** ONLY when the challenge **explicitly** requires +building everything from scratch with **zero provided artifacts**. + +If ANY artifact exists → `isGreenfield = false`. + +## Artifact Classification + +For each artifact found, identify its `type`: + +| Type | Description | +| --------------- | --------------------------------------- | +| `repository` | Full Git repository to fork/clone | +| `starter_code` | Partial code that submitters extend | +| `boilerplate` | Project scaffold / template | +| `documentation` | Written specs, architecture docs | +| `api_spec` | Swagger/OpenAPI/Postman definitions | +| `design` | Figma, Zeplin, wireframes, mockups | +| `dataset` | CSV, JSON, database dumps, sample data | +| `database_dump` | SQL dump or migration files | +| `config` | Environment templates, Docker configs | +| `library` | Required packages or internal libraries | +| `other` | Anything not fitting above categories | + +## Existing Technology Detection + +Note which programming languages and frameworks are **ALREADY present** in the +existing codebase. These may differ from what the challenge requirements ask for. + +Example: The repo is a NestJS project, but the challenge asks to add a React +frontend. Existing tech = `["TypeScript", "NestJS", "Prisma"]`. + +## Summary Writing + +Write a concise `summary` of the starting-point status: + +**Good examples:** + +- "Existing NestJS API with Prisma ORM — extend with new endpoints" +- "React + Vite starter with authentication already implemented" +- "Greenfield — build from scratch" +- "Existing Python data pipeline — add new processing stages" + +**Bad examples:** + +- "There is a repository" (too vague) +- "Code exists" (no useful information) diff --git a/workspace/skills/requirement-grouping/SKILL.md b/workspace/skills/requirement-grouping/SKILL.md new file mode 100644 index 0000000..d04d4c9 --- /dev/null +++ b/workspace/skills/requirement-grouping/SKILL.md @@ -0,0 +1,55 @@ +--- +name: requirement-grouping +description: Groups extracted requirements into logical clusters by feature area or problem domain. Use after requirements extraction to organize requirements into named groups, ensuring every requirement appears in exactly one group. +metadata: + author: topcoder + version: '1.0' + concern: requirements-organization + priority: high +--- + +# Requirement Grouping + +After extracting all requirements, group them by the feature area, story, +or problem domain they belong to. + +## Grouping Rules + +1. **Identify logical clusters** — requirements that serve the same + high-level feature or solve the same problem should be in one group. + + Examples: "Energy Monitoring", "User Authentication", "API Integration", + "Data Pipeline", "Frontend Components", "DevOps & Deployment". + +2. **Assign sequential IDs**: `GRP_01`, `GRP_02`, … + +3. **Give each group a short, descriptive `name`** (≤ 5 words). + +4. **List the `requirementIds`** that belong to that group (order by REQ id). + +5. **Every requirement MUST appear in exactly one group.** + If a requirement does not clearly fit any multi-requirement group, + place it in a catch-all group named **"General"**. + +6. If the entire challenge is a single story with no meaningful sub-areas, + return a **single group** containing all requirement IDs. + +## Grouping Heuristics + +| Signal | Suggested Group | +| ---------------------------------------- | ------------------------------------------ | +| Multiple endpoints for the same resource | Group by resource (e.g. "User Management") | +| Frontend + Backend for same feature | Group by feature (e.g. "Dashboard") | +| Setup, config, deployment scattered | "Infrastructure & Setup" group | +| Testing requirements across features | "Testing & Quality" group | +| README, docs, comments | "Documentation" group | + +## Validation Checklist + +Before finalizing groups: + +- [ ] Every REQ_XX ID appears in exactly one group +- [ ] No group has 0 requirements +- [ ] Group names are concise and descriptive +- [ ] Requirements within a group are logically related +- [ ] IDs in `requirementIds` arrays are ordered numerically diff --git a/workspace/skills/spec-requirements-extraction/SKILL.md b/workspace/skills/spec-requirements-extraction/SKILL.md new file mode 100644 index 0000000..dccb1e1 --- /dev/null +++ b/workspace/skills/spec-requirements-extraction/SKILL.md @@ -0,0 +1,86 @@ +--- +name: spec-requirements-extraction +description: Extracts individual requirements from Topcoder challenge specifications. Use when parsing a challenge description to identify every distinct piece of work the submitter must deliver, including titles, descriptions, priorities, and constraints. +metadata: + author: topcoder + version: '1.0' + concern: requirements-parsing + priority: critical +--- + +# Requirements Extraction + +Parse the challenge specification and extract every distinct requirement +a submitter MUST deliver. Challenge descriptions are Markdown written by +copilots with NO fixed template — headings, numbering, bullet styles, +section names, and nesting all vary. + +## Extraction Rules + +1. **Identify every distinct requirement** in the specification. + A "requirement" is any piece of work the submitter MUST deliver. + Look for: + - Numbered sections + - Bullet lists + - Paragraphs describing expected functionality + - API endpoints + - UI components + - Integrations + - Data models + +2. **Assign sequential IDs**: `REQ_01`, `REQ_02`, … + +3. **Write a concise `title`** (≤ 12 words) and a thorough `description` + that preserves all technical detail from the source text. + +4. **Determine `priority`**: + + | Priority | Signal Words | + | ---------- | ---------------------------------------------------------------------------------------- | + | **high** | "must", "required", "critical", "mandatory", "essential", "will not be accepted without" | + | **medium** | "should", "recommended", "ideally", "preferred" | + | **low** | "nice to have", "optional", "bonus", "extra credit" | + + If unclear, **default to high**. + +5. **Extract `constraints`** — any explicit restrictions, limits, format + rules, compatibility requirements, error-handling mandates, or + performance criteria attached to that requirement. + + Give each constraint a sequential ID scoped to its requirement: + `CONS__1`, `CONS__2`, … + +## Examples + +**Input fragment:** + +> The API **must** support pagination with cursor-based navigation. +> Response time should be under 200ms. + +**Output:** + +```json +{ + "id": "REQ_03", + "title": "Cursor-based API pagination", + "description": "The API must support pagination with cursor-based navigation for all list endpoints.", + "priority": "high", + "constraints": [ + { + "id": "CONS_03_1", + "description": "Response time should be under 200ms" + } + ] +} +``` + +## Edge Cases + +- If a single paragraph contains multiple independent requirements, + split them into separate entries. +- If a requirement is implied but not explicitly stated (e.g. error + handling for an API endpoint), include it with priority "medium". +- Configuration and environment setup instructions are requirements + too — capture them. + +See [requirement patterns reference](references/REQUIREMENT-PATTERNS.md) for common challenge patterns. diff --git a/workspace/skills/spec-requirements-extraction/references/REQUIREMENT-PATTERNS.md b/workspace/skills/spec-requirements-extraction/references/REQUIREMENT-PATTERNS.md new file mode 100644 index 0000000..9785bca --- /dev/null +++ b/workspace/skills/spec-requirements-extraction/references/REQUIREMENT-PATTERNS.md @@ -0,0 +1,69 @@ +# Common Requirement Patterns in Topcoder Challenges + +## Pattern 1: API Endpoint Requirements + +Challenge describes REST/GraphQL endpoints to implement. + +**Signals:** "endpoint", "route", "API", "GET/POST/PUT/DELETE", "CRUD" + +**Extract as:** One requirement per endpoint or per logical endpoint group. +Constraints include: request/response schemas, auth requirements, pagination, +rate limits. + +## Pattern 2: UI Component Requirements + +Challenge asks to build visual components or pages. + +**Signals:** "page", "screen", "component", "view", "form", "dashboard" + +**Extract as:** One requirement per distinct page/component. Constraints +include: responsive design, accessibility, cross-browser support, design specs. + +## Pattern 3: Integration Requirements + +Challenge demands connecting to external APIs or services. + +**Signals:** "integrate", "connect", "API key", "webhook", "OAuth", SDK names + +**Extract as:** One requirement per integration target. Constraints include: +auth method, rate limits, error handling, retry logic. + +## Pattern 4: Data Model Requirements + +Challenge specifies database schemas or data structures. + +**Signals:** "schema", "model", "entity", "table", "collection", "migration" + +**Extract as:** One requirement per entity/model. Constraints include: +relationships, validations, indexes, soft delete. + +## Pattern 5: DevOps / Infrastructure Requirements + +Challenge includes deployment or infrastructure setup. + +**Signals:** "Docker", "CI/CD", "deploy", "environment", "Dockerfile", "compose" + +**Extract as:** One requirement per infrastructure concern. Constraints +include: platform compatibility, environment variables, health checks. + +## Pattern 6: Testing Requirements + +Challenge mandates specific test coverage or test types. + +**Signals:** "test", "coverage", "unit test", "integration test", "e2e" + +**Extract as:** One requirement for testing approach. Constraints include: +minimum coverage percentage, specific frameworks, test data. + +## Priority Escalation Heuristic + +When the challenge says nothing about priority, use this default mapping: + +- Core business logic → high +- Error handling → high +- Authentication/authorization → high +- Documentation → medium +- Testing → medium +- Code style / linting → low +- Performance optimization → medium +- Bonus features → low diff --git a/workspace/skills/submission-guidelines-extraction/SKILL.md b/workspace/skills/submission-guidelines-extraction/SKILL.md new file mode 100644 index 0000000..eed5bb6 --- /dev/null +++ b/workspace/skills/submission-guidelines-extraction/SKILL.md @@ -0,0 +1,116 @@ +--- +name: submission-guidelines-extraction +description: Extracts structured submission information from challenge specifications including deliverables, packaging format, submission type, storage, and eligibility conditions. Use when parsing what submitters must deliver and how. +metadata: + author: topcoder + version: '1.0' + concern: submission-parsing + priority: critical +--- + +# Submission Guidelines Extraction + +Extract structured submission information from the challenge specification +into dedicated fields. + +## Required Fields + +### 1. `summary` + +Write a concise 1-3 sentence overview of what submitters must deliver and how. + +### 2. `whatToSubmit` + +List every deliverable mentioned in the spec. Each item is a separate array +entry. Common deliverables: + +- Source code +- README with setup instructions +- Postman collection +- Docker configuration +- Unit tests +- Demo video +- Deployment guide +- Environment configuration template +- Database migration scripts + +### 3. `howToSubmit` + +How to package the submission: + +- ZIP archive +- Git patch +- Single commit on a feature branch +- Pull request +- Docker image + +### 4. `whereToSubmit` + +Where to deliver the submission: + +- Topcoder challenge page +- GitHub pull request +- External URL + +**Default:** "Topcoder challenge page" when unspecified. + +### 5. `submissionType` + +Pick exactly one: + +| Type | When | +| -------------------- | --------------------------------------------- | +| `full_codebase` | Entire project/repo must be submitted | +| `patch` | Only a diff/patch on top of existing codebase | +| `link_to_repository` | Provide a URL to a Git repository | +| `link_to_deployment` | Provide a URL to a running deployment | +| `file_upload` | Upload one or more files (ZIP, PDF, etc.) | +| `other` | None of the above | + +### 6. `submissionStorage` + +Where the final artifact lives: + +| Storage | When | +| ----------------------- | -------------------------------------------------- | +| `topcoder_upload` | Uploaded directly to the Topcoder platform | +| `git_repository` | Pushed to a Git repo (GitHub, GitLab, etc.) | +| `external_file_storage` | Hosted on S3, Google Drive, Dropbox, etc. | +| `cloud_deployment` | Live on a cloud environment (Heroku, Vercel, etc.) | +| `other` | None of the above | + +**Default:** `topcoder_upload` when unspecified. + +### 7. `isPatchOfExisting` + +Set to `true` when the challenge explicitly asks for a patch, diff, or +incremental change to an existing codebase. + +Set to `false` when the full codebase should be submitted or when it is +a greenfield project. + +### 8. `eligibilityConditions` + +Capture any hard gates. Examples: + +- "must pass SAST" +- "must include unit tests with ≥80% coverage" +- "no linting errors" +- "must build without warnings" +- "must include Docker configuration" + +Return an **empty array** if none are mentioned. + +### 9. `notes` + +Any remaining submission information that doesn't fit the fields above. + +## Detection Heuristics + +| Challenge Text | Extracted Field | +| ---------------------------------------------- | ------------------------------------------------------------------------------- | +| "Submit a ZIP file of your solution" | `submissionType: "file_upload"`, `howToSubmit: "ZIP archive"` | +| "Create a pull request against the dev branch" | `submissionType: "patch"`, `isPatchOfExisting: true` | +| "Deploy to Heroku and provide the URL" | `submissionType: "link_to_deployment"`, `submissionStorage: "cloud_deployment"` | +| "Push your code to the provided repository" | `submissionType: "link_to_repository"`, `submissionStorage: "git_repository"` | +| No submission section found | Use defaults: `topcoder_upload`, `file_upload` | diff --git a/workspace/skills/tech-stack-extraction/SKILL.md b/workspace/skills/tech-stack-extraction/SKILL.md new file mode 100644 index 0000000..13845a6 --- /dev/null +++ b/workspace/skills/tech-stack-extraction/SKILL.md @@ -0,0 +1,62 @@ +--- +name: tech-stack-extraction +description: Extracts technology stack from challenge specifications including programming languages, frameworks, libraries, databases, cloud services, and protocols. Use when identifying all technologies mentioned or implied by a challenge description. +metadata: + author: topcoder + version: '1.0' + concern: technology-detection + priority: high +--- + +# Tech Stack Extraction + +Return a flat array of technology/framework/tool names mentioned or implied +by the specification. + +## What to Include + +- **Programming languages**: TypeScript, JavaScript, Python, Java, Go, Rust, etc. +- **Frameworks**: React, Angular, Vue, NestJS, Express, Django, Spring Boot, etc. +- **Libraries**: Prisma, Sequelize, Lodash, Axios, etc. +- **Cloud services**: AWS, GCP, Azure, Vercel, Heroku, etc. +- **Databases**: PostgreSQL, MongoDB, Redis, MySQL, DynamoDB, etc. +- **Protocols**: REST, GraphQL, gRPC, WebSocket, OAuth, SAML, etc. +- **Dev tools**: Docker, Kubernetes, GitHub Actions, Jest, Vitest, ESLint, etc. + +## Naming Rules + +Always use **canonical casing**: + +| Correct | Incorrect | +| ---------- | ---------------------- | +| TypeScript | typescript, Typescript | +| JavaScript | javascript, Javascript | +| PostgreSQL | postgresql, Postgres | +| NestJS | nestjs, Nest.js | +| Node.js | nodejs, NodeJS | +| React | react, ReactJS | +| Docker | docker | +| OAuth | oauth, Oauth | + +## Implicit Technology Detection + +Sometimes technologies are implied but not named. Look for: + +- `package.json` → Node.js / JavaScript / TypeScript ecosystem +- `requirements.txt` or `pyproject.toml` → Python +- `pom.xml` or `build.gradle` → Java +- `go.mod` → Go +- `Cargo.toml` → Rust +- `Dockerfile` → Docker +- `.github/workflows/` → GitHub Actions +- "REST API" → REST protocol +- "JWT tokens" → JWT, possibly OAuth +- Database connection strings → specific database technology + +## Output Format + +Flat array of strings, each a technology name in canonical casing: + +```json +["TypeScript", "NestJS", "PostgreSQL", "Prisma", "Docker", "REST", "JWT"] +``` From 3a67067b51cbdd042037e2f0151e65c68a55b59b Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 2 Mar 2026 10:59:24 +0200 Subject: [PATCH 4/5] update to latest modules --- package.json | 30 +- pnpm-lock.yaml | 966 ++++++++++++++++++++++++------------------------- 2 files changed, 498 insertions(+), 498 deletions(-) diff --git a/package.json b/package.json index 4ad0572..be0d650 100644 --- a/package.json +++ b/package.json @@ -23,26 +23,26 @@ "node": ">=22.13.0" }, "dependencies": { - "@mastra/auth-auth0": "^1.0.0", - "@mastra/core": "^1.2.0", - "@mastra/evals": "^1.1.0", - "@mastra/libsql": "^1.2.0", - "@mastra/loggers": "^1.0.1", - "@mastra/memory": "^1.1.0", - "@mastra/observability": "^1.2.0", - "@mastra/pg": "^1.2.0", - "ai": "^6.0.71", - "ai-sdk-ollama": "^3.4.0", + "@mastra/auth-auth0": "^1.0.1", + "@mastra/core": "^1.8.0", + "@mastra/evals": "^1.1.2", + "@mastra/libsql": "^1.6.2", + "@mastra/loggers": "^1.0.2", + "@mastra/memory": "^1.5.2", + "@mastra/observability": "^1.2.1", + "@mastra/pg": "^1.7.0", + "ai": "^6.0.105", + "ai-sdk-ollama": "^3.8.0", "tc-core-library-js": "^2.4.1", "zod": "^4.3.6" }, "devDependencies": { - "@eslint/js": "^9.39.2", - "@types/node": "^25.2.0", - "eslint": "^9.39.2", - "mastra": "^1.2.0", + "@eslint/js": "^10.0.1", + "@types/node": "^25.3.3", + "eslint": "^10.0.2", + "mastra": "^1.3.5", "prettier": "^3.8.1", "typescript": "^5.9.3", - "typescript-eslint": "^8.54.0" + "typescript-eslint": "^8.56.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4f51b95..01d8556 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,35 +9,35 @@ importers: .: dependencies: '@mastra/auth-auth0': - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.0.1 + version: 1.0.1 '@mastra/core': - specifier: ^1.2.0 - version: 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + specifier: ^1.8.0 + version: 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) '@mastra/evals': - specifier: ^1.1.0 - version: 1.1.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) + specifier: ^1.1.2 + version: 1.1.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) '@mastra/libsql': - specifier: ^1.2.0 - version: 1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + specifier: ^1.6.2 + version: 1.6.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) '@mastra/loggers': - specifier: ^1.0.1 - version: 1.0.1(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + specifier: ^1.0.2 + version: 1.0.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) '@mastra/memory': - specifier: ^1.1.0 - version: 1.1.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) + specifier: ^1.5.2 + version: 1.5.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) '@mastra/observability': - specifier: ^1.2.0 - version: 1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + specifier: ^1.2.1 + version: 1.2.1(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) '@mastra/pg': - specifier: ^1.2.0 - version: 1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + specifier: ^1.7.0 + version: 1.7.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) ai: - specifier: ^6.0.71 - version: 6.0.71(zod@4.3.6) + specifier: ^6.0.105 + version: 6.0.105(zod@4.3.6) ai-sdk-ollama: - specifier: ^3.4.0 - version: 3.4.0(ai@6.0.71(zod@4.3.6))(zod@4.3.6) + specifier: ^3.8.0 + version: 3.8.0(ai@6.0.105(zod@4.3.6))(zod@4.3.6) tc-core-library-js: specifier: ^2.4.1 version: 2.4.1 @@ -46,17 +46,17 @@ importers: version: 4.3.6 devDependencies: '@eslint/js': - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.0.2) '@types/node': - specifier: ^25.2.0 - version: 25.2.0 + specifier: ^25.3.3 + version: 25.3.3 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^10.0.2 + version: 10.0.2 mastra: - specifier: ^1.2.0 - version: 1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6) + specifier: ^1.3.5 + version: 1.3.5(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6) prettier: specifier: ^3.8.1 version: 3.8.1 @@ -64,8 +64,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.54.0 - version: 8.54.0(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.56.1 + version: 8.56.1(eslint@10.0.2)(typescript@5.9.3) packages: @@ -73,8 +73,8 @@ packages: resolution: {integrity: sha512-VTDuRS5V0ATbJ/LkaQlisMnTAeYKXAK6scMguVBstf+KIBQ7HIuKhiXLv+G/hvejkV+THoXzoNifInAkU81P1g==} engines: {node: '>=18'} - '@ai-sdk/gateway@3.0.34': - resolution: {integrity: sha512-ZS1dWai5DINQOv3bpNi3ua9+yt3jnRaux3CwEr/ai9qETp6T+2wcpZyw+0jUHo1He/Lznw//AQh4zhdwHnTWrg==} + '@ai-sdk/gateway@3.0.59': + resolution: {integrity: sha512-MbtheWHgEFV/8HL1Z6E3hOAsmP73zZlNFg0F0nJAD0Adnjp4J/plqNK00Y896d+dWTw+r0OXzyov9/2wCFjH0Q==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -85,8 +85,8 @@ packages: peerDependencies: zod: ^3.23.8 - '@ai-sdk/provider-utils@3.0.12': - resolution: {integrity: sha512-ZtbdvYxdMoria+2SlNarEk6Hlgyf+zzcznlD55EAl+7VZvJaSg2sqPvwArY7L6TfDEDJsnCq0fdhBSkYo0Xqdg==} + '@ai-sdk/provider-utils@3.0.20': + resolution: {integrity: sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -97,8 +97,8 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@4.0.13': - resolution: {integrity: sha512-HHG72BN4d+OWTcq2NwTxOm/2qvk1duYsnhCDtsbYwn/h/4zeqURu1S0+Cn0nY2Ysq9a9HGKvrYuMn9bgFhR2Og==} + '@ai-sdk/provider-utils@4.0.16': + resolution: {integrity: sha512-kBvDqNkt5EwlzF9FujmNhhtl8FYg3e8FO8P5uneKliqfRThWemzBj+wfYr7ZCymAQhTRnwSSz1/SOqhOAwmx9g==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -111,12 +111,16 @@ packages: resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} + '@ai-sdk/provider@2.0.1': + resolution: {integrity: sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng==} + engines: {node: '>=18'} + '@ai-sdk/provider@3.0.0': resolution: {integrity: sha512-m9ka3ptkPQbaHHZHqDXDF9C9B5/Mav0KTdky1k2HZ3/nrW2t1AgObxIVPyGDWQNS9FXT/FS6PIoSjpcP/No8rQ==} engines: {node: '>=18'} - '@ai-sdk/provider@3.0.7': - resolution: {integrity: sha512-VkPLrutM6VdA924/mG8OS+5frbVTcu6e046D2bgDo00tehBANR1QBJ/mPcZ9tXMFOsVcm6SQArOregxePzTFPw==} + '@ai-sdk/provider@3.0.8': + resolution: {integrity: sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ==} engines: {node: '>=18'} '@ai-sdk/ui-utils@1.2.11': @@ -254,11 +258,11 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@clack/core@0.5.0': - resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} + '@clack/core@1.0.1': + resolution: {integrity: sha512-WKeyK3NOBwDOzagPR5H08rFk9D/WuN705yEbuZvKqlkmoLM2woKtXb10OO2k1NoSU4SFG947i2/SCYh+2u5e4g==} - '@clack/prompts@0.11.0': - resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + '@clack/prompts@1.0.1': + resolution: {integrity: sha512-/42G73JkuYdyWZ6m8d/CJtBrGl1Hegyc7Fy78m5Ob+jF85TOUmLR5XLce/U3LxYAw0kJ8CT5aI99RIvPHcGp/Q==} '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} @@ -426,33 +430,34 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.1': - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.23.2': + resolution: {integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.5.2': + resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.1.0': + resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.3': - resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true - '@eslint/js@9.39.2': - resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.2': + resolution: {integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.6.0': + resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@expo/devcert@1.2.1': resolution: {integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==} @@ -571,76 +576,76 @@ packages: resolution: {integrity: sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w==} engines: {node: '>=8'} - '@mastra/auth-auth0@1.0.0': - resolution: {integrity: sha512-477zvtOrucyunk81P9IR1GhMZTkrSe65g4NB/vkPjz8BZVtuMFzTz61mV8fjJpqif4pkSSnNmtRWy0b8mP+x0w==} + '@mastra/auth-auth0@1.0.1': + resolution: {integrity: sha512-eCjSuHtYlfDL/aUQzO9W13XZPaBgKN12jv2ZNjTU8q9N6tgHCDKmGOvVh/lwgsK1kz430cNGVpk13sXKjwpVNw==} engines: {node: '>=22.13.0'} - '@mastra/core@1.2.0': - resolution: {integrity: sha512-nP7AfjNp1SSZo29dhzSVHplb4+9SuyoYym6aG6KrfEKka63dc4nTCw/mYskPMdYYBWPct10Kt1a3JFIa3LdcsA==} + '@mastra/core@1.8.0': + resolution: {integrity: sha512-AK6Isj21mWlwX1zIZNUxgAQvRfjJmdjsPsKoh1cOvaM+h748S4U48TJ5DsmundSj/8NBeKHmYXqH2RYqwN35nw==} engines: {node: '>=22.13.0'} peerDependencies: zod: ^3.25.0 || ^4.0.0 - '@mastra/deployer@1.2.0': - resolution: {integrity: sha512-juJrJgFNbjZar7AsRLJY2UWqo3WReyt/ifayL2C/TUS0GYAr3v2Vk+CH4n8znxLLw1L4L+FikXY5fIWsmEq9DA==} + '@mastra/deployer@1.8.0': + resolution: {integrity: sha512-NWCAHStM1WMISuEMheGPH7WMFAsNlfm22pej4a1p0dS9V48qq6AdCdOjzWKJQ4CewCFC2qI0sNqZNJtCtTkemw==} engines: {node: '>=22.13.0'} peerDependencies: '@mastra/core': '>=1.0.0-0 <2.0.0-0' zod: ^3.25.0 || ^4.0.0 - '@mastra/evals@1.1.0': - resolution: {integrity: sha512-IFOlyC3TkA5oKXQ0GdDcSU+jT4aMh09lQ1aMu6eF53CeU08f9C7U/DI9s1tXF2wD/HIbb/k/yZn5ta+D+OAt0w==} + '@mastra/evals@1.1.2': + resolution: {integrity: sha512-mw3BMwe++C3yR8/a9yqToXIh5OMlPI3SGO/acRHfjL+oH1Q/VNq146ks49h5uW7sspNP39mMNYXy8Wu4ZuGG+w==} engines: {node: '>=22.13.0'} peerDependencies: '@mastra/core': '>=1.0.0-0 <2.0.0-0' zod: ^3.25.0 || ^4.0.0 - '@mastra/libsql@1.2.0': - resolution: {integrity: sha512-jXUVAG751MpyR9ICKHr6maTEALNcSQ99aCFN6pukhG9lScAlJhuHGeV64+8kl3Mb0DgTZlMDvO75MePcUbY+LA==} + '@mastra/libsql@1.6.2': + resolution: {integrity: sha512-0PTZKQwSMxSkqkWlULYPUk6fnqQWkhN3jaKZrT/GbImZG6xvid1+NoopjIdhUpf9Ws3eIkv+EBhZWqhSew5nEA==} engines: {node: '>=22.13.0'} peerDependencies: - '@mastra/core': '>=1.1.0-0 <2.0.0-0' + '@mastra/core': '>=1.4.0-0 <2.0.0-0' - '@mastra/loggers@1.0.1': - resolution: {integrity: sha512-kq4OE/94advQEzFnCiRuZjpA5+0+iAzOyM8GvETkMYCstLfdapLrB8p2wrTSDQNEN8PaurW2eHHkhkPF8MVZaA==} + '@mastra/loggers@1.0.2': + resolution: {integrity: sha512-3gUp3Nvyi94WoJaUNXdui8efasRWEh3vCL9B9bdv3mRa54GOzVLUQWkoxO6QWI3Jw/XBpHvhHsbNmvF/bVh13Q==} engines: {node: '>=22.13.0'} peerDependencies: '@mastra/core': '>=1.0.0-0 <2.0.0-0' - '@mastra/memory@1.1.0': - resolution: {integrity: sha512-ckkcP7ObXwyhJhZrJKOLe0RTvyj/FIctYPor0Wo1dTZ5H+lbngpSalBm1Ll+jH5jb5467BMkecmu0AZc4nurWg==} + '@mastra/memory@1.5.2': + resolution: {integrity: sha512-0m7ZLZ55/RqlQZap274fDW0cyJ+EG4veDEA63oV1Kno0PP8l74e4IgUdpr7nkzl+iNHyKDceavIll+lFwDmViw==} engines: {node: '>=22.13.0'} peerDependencies: - '@mastra/core': '>=1.0.0-0 <2.0.0-0' + '@mastra/core': '>=1.4.1-0 <2.0.0-0' zod: ^3.25.0 || ^4.0.0 - '@mastra/observability@1.2.0': - resolution: {integrity: sha512-gnHlmjWA3dFxrxPYcB0ZYOzgLKxij9f3u8qxh0qKtGW4KB2sw4kOozSfMhOCo7xu30fB9kb/BtDLvYuRdQLhLA==} + '@mastra/observability@1.2.1': + resolution: {integrity: sha512-XogyAgXPnojehAo85ypXzGyofgDaEcqbI8YPP27npGfNDtx+9jxetyCYJMzDi56VodxIl/8JgNph4uWNBZasyg==} engines: {node: '>=22.13.0'} peerDependencies: '@mastra/core': '>=1.1.0-0 <2.0.0-0' - '@mastra/pg@1.2.0': - resolution: {integrity: sha512-eOq2tBXlXvTxJ9FPVT09v0cb5ZIfRir05c4hYLbYP+vq5ahUOUM7t+PJEjjOdylqr5imMi09jsov0BaM8n5Qkg==} + '@mastra/pg@1.7.0': + resolution: {integrity: sha512-RX/I4vZkt2n0g3NfVq7dS1u7Qvd+1r0ll2uHAbG9xQ8m10tb9QwXZCVrX7ki6s16/odLjJYgJGZImo20SR7N5A==} engines: {node: '>=22.13.0'} peerDependencies: - '@mastra/core': '>=1.1.0-0 <2.0.0-0' + '@mastra/core': '>=1.4.0-0 <2.0.0-0' - '@mastra/schema-compat@1.1.0': - resolution: {integrity: sha512-2v8nTaAC/279jHs0ux2Emp+lNgBFq3QeNbZCGSHFeeBhbqqM5aWJCPY2Xgw8Z/dY3mTpFxBbmXQz3oRyYStnqg==} + '@mastra/schema-compat@1.1.3': + resolution: {integrity: sha512-szLMJhqfnEn4VctFLKRZ2NIpfg+3UTghQWgy8Fcdchj2HvHxB2uilJxRybM9ugMmvyE+W48tVdz4Xi2Z1P3pFA==} engines: {node: '>=22.13.0'} peerDependencies: zod: ^3.25.0 || ^4.0.0 - '@mastra/server@1.2.0': - resolution: {integrity: sha512-egTBw3TCJpbM4hWATbSQffpyR8/s+Jog/fD7t4QRn8aRFOjvn+Nkj3QNMcrXEOHDJiI2ALCMk5Hml0NYPDpcWg==} + '@mastra/server@1.8.0': + resolution: {integrity: sha512-j65lk9h/BGUf6GqbmRtf+WFmzN2d6SmY/aOa1gtBbgGafM03PLgx5k8CuSP9DPRDDB9XSSWWpO8dKyBzGDauQw==} engines: {node: '>=22.13.0'} peerDependencies: - '@mastra/core': '>=1.0.0-0 <2.0.0-0' + '@mastra/core': '>=1.7.1-0 <2.0.0-0' zod: ^3.25.0 || ^4.0.0 - '@modelcontextprotocol/sdk@1.26.0': - resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==} + '@modelcontextprotocol/sdk@1.27.1': + resolution: {integrity: sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -964,6 +969,9 @@ packages: '@types/cors@2.8.19': resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -973,6 +981,9 @@ packages: '@types/express-serve-static-core@4.19.8': resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} + '@types/express-serve-static-core@5.1.1': + resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==} + '@types/express-unless@2.0.3': resolution: {integrity: sha512-iJbM7nsyBgnxCrCe7VjWIi4nyyhlaKUl7jxeHDpK+KXk3sYrUZViMkgFv9qSZmxDleB8dfpQR9gK5MGNyM/M6w==} deprecated: This is a stub types definition. express-unless provides its own type definitions, so you do not need this installed. @@ -980,6 +991,9 @@ packages: '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} + '@types/express@5.0.6': + resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} + '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} @@ -989,8 +1003,8 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/node@25.2.0': - resolution: {integrity: sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==} + '@types/node@25.3.3': + resolution: {integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==} '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} @@ -1010,66 +1024,69 @@ packages: '@types/serve-static@1.15.10': resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} + '@types/serve-static@2.2.0': + resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} + '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/eslint-plugin@8.54.0': - resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + '@typescript-eslint/eslint-plugin@8.56.1': + resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.54.0 - eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/parser': ^8.56.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.54.0': - resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} + '@typescript-eslint/parser@8.56.1': + resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.54.0': - resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + '@typescript-eslint/project-service@8.56.1': + resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.54.0': - resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + '@typescript-eslint/scope-manager@8.56.1': + resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.54.0': - resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + '@typescript-eslint/tsconfig-utils@8.56.1': + resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.54.0': - resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + '@typescript-eslint/type-utils@8.56.1': + resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.54.0': - resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + '@typescript-eslint/types@8.56.1': + resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.54.0': - resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + '@typescript-eslint/typescript-estree@8.56.1': + resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.54.0': - resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + '@typescript-eslint/utils@8.56.1': + resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.54.0': - resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + '@typescript-eslint/visitor-keys@8.56.1': + resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vercel/oidc@3.1.0': @@ -1092,8 +1109,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true @@ -1101,14 +1118,14 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - ai-sdk-ollama@3.4.0: - resolution: {integrity: sha512-iJQ4XwMOgX+mQO9NpJnj7S3AGiaEjBSO1ahc946mlp57T7t81dr1TtB/hoTZuqpjvV3jZY17Vv3LS4NI5qsmqQ==} + ai-sdk-ollama@3.8.0: + resolution: {integrity: sha512-Nlla8FpK8QFMNh9m8sPCZoNqnr+n+Ud0QTqpXNds4j/b/lbVZGaji13ZcRuuFvBwPwd4xnFkNrijJzi70Ih1Tg==} engines: {node: '>=22'} peerDependencies: - ai: ^6.0.70 + ai: ^6.0.89 - ai@6.0.71: - resolution: {integrity: sha512-33/Qq0BhEG+SabYeE7ZlLL3DCubUQo04C8E9UdEHqh2DJuGdtxMXG/TSMkO2uF+ZmlGJpD4UY5Wij9/qal298w==} + ai@6.0.105: + resolution: {integrity: sha512-rp+exWtZS3J0DDvZIfetpKCIg7D3cCsvBPoFN3I67IDTs9aoBZDbpecoIkmNLT+U9RBkoEial3OGHRvme23HCw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -1121,14 +1138,14 @@ packages: ajv: optional: true - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -1158,9 +1175,6 @@ packages: argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -1204,11 +1218,16 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.9.19: - resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + baseline-browser-mapping@2.10.0: + resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + engines: {node: '>=6.0.0'} hasBin: true bcrypt-pbkdf@1.0.2: @@ -1229,8 +1248,9 @@ packages: brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -1265,16 +1285,12 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001768: - resolution: {integrity: sha512-qY3aDRZC5nWPgHUgIB84WL+nySuo19wk0VJpp/XI9T34lrvkyhRvNVOFJOp2kxClQhiFBu+TaUSudf6oa3vkSA==} + caniuse-lite@1.0.30001775: + resolution: {integrity: sha512-s3Qv7Lht9zbVKE9XoTyRG6wVDCKdtOFIjBGg3+Yhn6JaytuNKPIjBMTMIY1AnOH3seL5mvF+x33oGAyK3hVt3A==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -1331,8 +1347,8 @@ packages: resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} engines: {node: '>= 0.8.0'} - compromise@14.14.5: - resolution: {integrity: sha512-9qWxpOWo4crzvbdxAYDTwO6z0WljXwi6mL7CqCjAXKn7QtFijmSj7fCyAqGWldCVT2zNboMvg4kNL06drMg2Vw==} + compromise@14.15.0: + resolution: {integrity: sha512-YEMv5JGWyqRJw5hdZqDVQF3MMlHA6TRiXreR8IYffk6xB7GA5p/8DeDzvg0Jy2tHNGpD+qJGl0+oJwA+5R/sVA==} engines: {node: '>=12.0.0'} concat-map@0.0.1: @@ -1341,8 +1357,8 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} @@ -1460,8 +1476,8 @@ packages: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} - dotenv@17.2.3: - resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} engines: {node: '>=12'} dtrace-provider@0.8.8: @@ -1488,8 +1504,8 @@ packages: resolution: {integrity: sha512-/RInbCy1d4P6Zdfa+TMVsf/ufZVotat5hCw3QXmWtjU+3pFEOvOQ7ibo3aIxyCJw2leIeAMjmPj+1SLJiCpdrQ==} engines: {node: '>=12.0.0'} - electron-to-chromium@1.5.286: - resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} + electron-to-chromium@1.5.302: + resolution: {integrity: sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1543,21 +1559,21 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.1: + resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@9.39.2: - resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@10.0.2: + resolution: {integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: jiti: '*' @@ -1565,9 +1581,9 @@ packages: jiti: optional: true - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.1.1: + resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -1713,8 +1729,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.3.4: + resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} @@ -1788,8 +1804,8 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} - get-tsconfig@4.13.1: - resolution: {integrity: sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==} + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} getpass@0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} @@ -1806,10 +1822,6 @@ packages: resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1864,8 +1876,8 @@ packages: hono: optional: true - hono@4.11.7: - resolution: {integrity: sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==} + hono@4.12.3: + resolution: {integrity: sha512-SFsVSjp8sj5UumXOOFlkZOG6XS9SJDKw0TbwFeV+AJ8xlST8kxK5Z/5EYa111UY8732lK2S/xB653ceuaoGwpg==} engines: {node: '>=16.9.0'} http-errors@2.0.1: @@ -1908,10 +1920,6 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1962,8 +1970,8 @@ packages: is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-network-error@1.3.0: - resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} + is-network-error@1.3.1: + resolution: {integrity: sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==} engines: {node: '>=16'} is-number@7.0.0: @@ -2029,10 +2037,6 @@ packages: resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} @@ -2074,6 +2078,10 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonrepair@3.13.2: + resolution: {integrity: sha512-Leuly0nbM4R+S5SVJk3VHfw1oxnlEK9KygdZvfUtEtTawNDyzB4qa1xWTmFt1aeoA7sXZkVTRuIixJ8bAvqVUg==} + hasBin: true + jsonwebtoken@8.5.1: resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} engines: {node: '>=4', npm: '>=1.4.28'} @@ -2143,9 +2151,6 @@ packages: lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} @@ -2155,8 +2160,8 @@ packages: lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - lru-cache@11.2.5: - resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} + lru-cache@11.2.6: + resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -2172,12 +2177,12 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - mastra@1.2.0: - resolution: {integrity: sha512-+eV5LaAuTRSizoEAKudwyox1Xt/V8DzmnGWY/TeMNsBUoqHlv3iZSCR/UnMh0XifMknLjCrSKYGXPYRHfcjW2Q==} + mastra@1.3.5: + resolution: {integrity: sha512-PeSzZYizlVLRdSceqBgWauBNrBC9dFir1KlMuzhOKl3+Spf44GOBWI7GLcxuILAazo8GiFaufsC+ZkALji5s9Q==} engines: {node: '>=22.13.0'} hasBin: true peerDependencies: - '@mastra/core': '>=1.0.0-0 <2.0.0-0' + '@mastra/core': '>=1.1.0-0 <2.0.0-0' zod: ^3.25.0 || ^4.0.0 math-intrinsics@1.1.0: @@ -2250,12 +2255,15 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -2383,10 +2391,6 @@ packages: resolution: {integrity: sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==} engines: {node: '>=20'} - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} @@ -2442,20 +2446,20 @@ packages: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-pool@3.11.0: - resolution: {integrity: sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==} + pg-pool@3.12.0: + resolution: {integrity: sha512-eIJ0DES8BLaziFHW7VgJEBPi5hg3Nyng5iKpYtj3wbcAUV9A1wLgWiY7ajf/f/oO1wfxt83phXPY8Emztg7ITg==} peerDependencies: pg: '>=8.0' - pg-protocol@1.11.0: - resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} + pg-protocol@1.12.0: + resolution: {integrity: sha512-uOANXNRACNdElMXJ0tPz6RBM0XQ61nONGAwlt8da5zs/iUOOCLBQOHSXnrC6fMsvtjxbOJrZZl5IScGv+7mpbg==} pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.18.0: - resolution: {integrity: sha512-xqrUDL1b9MbkydY/s+VZ6v+xiMUmOUk7SS9d/1kpyQxoJ6U9AO1oIJyUWVZojbfe5Cc/oluutcgFG4L9RDP1iQ==} + pg@8.19.0: + resolution: {integrity: sha512-QIcLGi508BAHkQ3pJNptsFz5WQMlpGbuBGBaIaXsWK8mel2kQ/rThYI+DbgjUvZrIr7MiuEuc9LcChJoEZK1xQ==} engines: {node: '>= 16.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -2487,8 +2491,8 @@ packages: pino-std-serializers@7.1.0: resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} - pino@10.3.0: - resolution: {integrity: sha512-0GNPNzHXBKw6U/InGe79A3Crzyk9bcSyObF9/Gfo9DLEf5qj5RF50RSjsu0W1rZ6ZqRGdzDFCRBQvi9/rSGPtA==} + pino@10.3.1: + resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==} hasBin: true pkce-challenge@5.0.1: @@ -2554,15 +2558,19 @@ packages: psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.14.1: - resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} + qs@6.14.2: + resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} + engines: {node: '>=0.6'} + + qs@6.15.0: + resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} engines: {node: '>=0.6'} qs@6.5.5: @@ -2629,10 +2637,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -2716,8 +2720,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true @@ -2790,8 +2794,8 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - sonic-boom@4.2.0: - resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + sonic-boom@4.2.1: + resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} @@ -2825,8 +2829,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} strip-bom-string@1.0.0: @@ -2845,10 +2849,6 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - strip-json-comments@5.0.3: resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} engines: {node: '>=14.16'} @@ -2919,11 +2919,11 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} - typescript-eslint@8.54.0: - resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} + typescript-eslint@8.56.1: + resolution: {integrity: sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' typescript-paths@1.5.1: @@ -2939,8 +2939,8 @@ packages: ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} unicorn-magic@0.3.0: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} @@ -3090,10 +3090,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@ai-sdk/gateway@3.0.34(zod@4.3.6)': + '@ai-sdk/gateway@3.0.59(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 3.0.7 - '@ai-sdk/provider-utils': 4.0.13(zod@4.3.6) + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.16(zod@4.3.6) '@vercel/oidc': 3.1.0 zod: 4.3.6 @@ -3104,9 +3104,9 @@ snapshots: secure-json-parse: 2.7.0 zod: 4.3.6 - '@ai-sdk/provider-utils@3.0.12(zod@4.3.6)': + '@ai-sdk/provider-utils@3.0.20(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider': 2.0.1 '@standard-schema/spec': 1.1.0 eventsource-parser: 3.0.6 zod: 4.3.6 @@ -3118,9 +3118,9 @@ snapshots: eventsource-parser: 3.0.6 zod: 4.3.6 - '@ai-sdk/provider-utils@4.0.13(zod@4.3.6)': + '@ai-sdk/provider-utils@4.0.16(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 3.0.7 + '@ai-sdk/provider': 3.0.8 '@standard-schema/spec': 1.1.0 eventsource-parser: 3.0.6 zod: 4.3.6 @@ -3133,11 +3133,15 @@ snapshots: dependencies: json-schema: 0.4.0 + '@ai-sdk/provider@2.0.1': + dependencies: + json-schema: 0.4.0 + '@ai-sdk/provider@3.0.0': dependencies: json-schema: 0.4.0 - '@ai-sdk/provider@3.0.7': + '@ai-sdk/provider@3.0.8': dependencies: json-schema: 0.4.0 @@ -3334,14 +3338,14 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@clack/core@0.5.0': + '@clack/core@1.0.1': dependencies: picocolors: 1.1.1 sisteransi: 1.0.5 - '@clack/prompts@0.11.0': + '@clack/prompts@1.0.1': dependencies: - '@clack/core': 0.5.0 + '@clack/core': 1.0.1 picocolors: 1.1.1 sisteransi: 1.0.5 @@ -3423,50 +3427,38 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.2)': dependencies: - eslint: 9.39.2 + eslint: 10.0.2 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.1': + '@eslint/config-array@0.23.2': dependencies: - '@eslint/object-schema': 2.1.7 + '@eslint/object-schema': 3.0.2 debug: 4.4.3 - minimatch: 3.1.2 + minimatch: 10.2.4 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': + '@eslint/config-helpers@0.5.2': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.0 - '@eslint/core@0.17.0': + '@eslint/core@1.1.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.3': - dependencies: - ajv: 6.12.6 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.2': {} + '@eslint/js@10.0.1(eslint@10.0.2)': + optionalDependencies: + eslint: 10.0.2 - '@eslint/object-schema@2.1.7': {} + '@eslint/object-schema@3.0.2': {} - '@eslint/plugin-kit@0.4.1': + '@eslint/plugin-kit@0.6.0': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.0 levn: 0.4.1 '@expo/devcert@1.2.1': @@ -3478,9 +3470,9 @@ snapshots: '@expo/sudo-prompt@9.3.2': {} - '@hono/node-server@1.19.9(hono@4.11.7)': + '@hono/node-server@1.19.9(hono@4.12.3)': dependencies: - hono: 4.11.7 + hono: 4.12.3 '@humanfs/core@0.19.1': {} @@ -3582,32 +3574,33 @@ snapshots: dependencies: '@lukeed/csprng': 1.1.0 - '@mastra/auth-auth0@1.0.0': + '@mastra/auth-auth0@1.0.1': dependencies: jose: 6.1.3 - '@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)': + '@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)': dependencies: '@a2a-js/sdk': 0.2.5 - '@ai-sdk/provider-utils-v5': '@ai-sdk/provider-utils@3.0.12(zod@4.3.6)' + '@ai-sdk/provider-utils-v5': '@ai-sdk/provider-utils@3.0.20(zod@4.3.6)' '@ai-sdk/provider-utils-v6': '@ai-sdk/provider-utils@4.0.0(zod@4.3.6)' '@ai-sdk/provider-v5': '@ai-sdk/provider@2.0.0' '@ai-sdk/provider-v6': '@ai-sdk/provider@3.0.0' '@ai-sdk/ui-utils-v5': '@ai-sdk/ui-utils@1.2.11(zod@4.3.6)' '@isaacs/ttlcache': 2.1.4 '@lukeed/uuid': 2.0.1 - '@mastra/schema-compat': 1.1.0(zod@4.3.6) - '@modelcontextprotocol/sdk': 1.26.0(zod@4.3.6) + '@mastra/schema-compat': 1.1.3(zod@4.3.6) + '@modelcontextprotocol/sdk': 1.27.1(zod@4.3.6) '@sindresorhus/slugify': 2.2.1 - dotenv: 17.2.3 + dotenv: 17.3.1 gray-matter: 4.0.3 - hono: 4.11.7 - hono-openapi: 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(hono@4.11.7)(openapi-types@12.1.3) + hono: 4.12.3 + hono-openapi: 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(hono@4.12.3)(openapi-types@12.1.3) js-tiktoken: 1.0.21 json-schema: 0.4.0 - lru-cache: 11.2.5 + lru-cache: 11.2.6 p-map: 7.0.4 p-retry: 7.1.1 + picomatch: 4.0.3 radash: 12.1.1 xxhash-wasm: 1.1.0 zod: 4.3.6 @@ -3620,12 +3613,12 @@ snapshots: - openapi-types - supports-color - '@mastra/deployer@1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6)': + '@mastra/deployer@1.8.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6)': dependencies: '@babel/core': 7.29.0 '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@mastra/core': 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - '@mastra/server': 1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) + '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/server': 1.8.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) '@optimize-lodash/rollup-plugin': 5.1.0(rollup@4.55.3) '@rollup/plugin-alias': 6.0.0(rollup@4.55.3) '@rollup/plugin-commonjs': 29.0.0(rollup@4.55.3) @@ -3638,7 +3631,7 @@ snapshots: esbuild: 0.25.12 find-workspaces: 0.3.1 fs-extra: 11.3.3 - hono: 4.11.7 + hono: 4.12.3 local-pkg: 1.1.2 resolve-from: 5.0.0 resolve.exports: 2.0.3 @@ -3652,54 +3645,54 @@ snapshots: - supports-color - typescript - '@mastra/evals@1.1.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': + '@mastra/evals@1.1.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': dependencies: - '@mastra/core': 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - compromise: 14.14.5 + '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + compromise: 14.15.0 keyword-extractor: 0.0.28 sentiment: 5.0.2 string-similarity: 4.0.4 zod: 4.3.6 - '@mastra/libsql@1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': + '@mastra/libsql@1.6.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': dependencies: '@libsql/client': 0.15.15 - '@mastra/core': 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) transitivePeerDependencies: - bufferutil - utf-8-validate - '@mastra/loggers@1.0.1(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': + '@mastra/loggers@1.0.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': dependencies: - '@mastra/core': 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - pino: 10.3.0 + '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + pino: 10.3.1 pino-pretty: 13.1.3 - '@mastra/memory@1.1.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': + '@mastra/memory@1.5.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': dependencies: - '@mastra/core': 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - '@mastra/schema-compat': 1.1.0(zod@4.3.6) + '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/schema-compat': 1.1.3(zod@4.3.6) async-mutex: 0.5.0 js-tiktoken: 1.0.21 json-schema: 0.4.0 - lru-cache: 11.2.5 + lru-cache: 11.2.6 xxhash-wasm: 1.1.0 zod: 4.3.6 - '@mastra/observability@1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': + '@mastra/observability@1.2.1(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': dependencies: - '@mastra/core': 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - '@mastra/pg@1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': + '@mastra/pg@1.7.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': dependencies: - '@mastra/core': 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) async-mutex: 0.5.0 - pg: 8.18.0 + pg: 8.19.0 xxhash-wasm: 1.1.0 transitivePeerDependencies: - pg-native - '@mastra/schema-compat@1.1.0(zod@4.3.6)': + '@mastra/schema-compat@1.1.3(zod@4.3.6)': dependencies: json-schema-to-zod: 2.7.0 zod: 4.3.6 @@ -3707,17 +3700,17 @@ snapshots: zod-from-json-schema-v3: zod-from-json-schema@0.0.5 zod-to-json-schema: 3.25.1(zod@4.3.6) - '@mastra/server@1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': + '@mastra/server@1.8.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': dependencies: - '@mastra/core': 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - hono: 4.11.7 + '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + hono: 4.12.3 zod: 4.3.6 - '@modelcontextprotocol/sdk@1.26.0(zod@4.3.6)': + '@modelcontextprotocol/sdk@1.27.1(zod@4.3.6)': dependencies: - '@hono/node-server': 1.19.9(hono@4.11.7) - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) + '@hono/node-server': 1.19.9(hono@4.12.3) + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) content-type: 1.0.5 cors: 2.8.6 cross-spawn: 7.0.6 @@ -3725,7 +3718,7 @@ snapshots: eventsource-parser: 3.0.6 express: 5.2.1 express-rate-limit: 8.2.1(express@5.2.1) - hono: 4.11.7 + hono: 4.12.3 jose: 6.1.3 json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 @@ -3931,26 +3924,35 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 25.2.0 + '@types/node': 25.3.3 '@types/connect@3.4.38': dependencies: - '@types/node': 25.2.0 + '@types/node': 25.3.3 '@types/cors@2.8.19': dependencies: - '@types/node': 25.2.0 + '@types/node': 25.3.3 + + '@types/esrecurse@4.3.1': {} '@types/estree@1.0.8': {} '@types/express-jwt@0.0.42': dependencies: - '@types/express': 4.17.25 + '@types/express': 5.0.6 '@types/express-unless': 2.0.3 '@types/express-serve-static-core@4.19.8': dependencies: - '@types/node': 25.2.0 + '@types/node': 25.3.3 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express-serve-static-core@5.1.1': + dependencies: + '@types/node': 25.3.3 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -3966,15 +3968,21 @@ snapshots: '@types/qs': 6.14.0 '@types/serve-static': 1.15.10 + '@types/express@5.0.6': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 5.1.1 + '@types/serve-static': 2.2.0 + '@types/http-errors@2.0.5': {} '@types/json-schema@7.0.15': {} '@types/mime@1.3.5': {} - '@types/node@25.2.0': + '@types/node@25.3.3': dependencies: - undici-types: 7.16.0 + undici-types: 7.18.2 '@types/qs@6.14.0': {} @@ -3985,31 +3993,36 @@ snapshots: '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 25.2.0 + '@types/node': 25.3.3 '@types/send@1.2.1': dependencies: - '@types/node': 25.2.0 + '@types/node': 25.3.3 '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 25.2.0 + '@types/node': 25.3.3 '@types/send': 0.17.6 + '@types/serve-static@2.2.0': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 25.3.3 + '@types/ws@8.18.1': dependencies: - '@types/node': 25.2.0 + '@types/node': 25.3.3 - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 - eslint: 9.39.2 + '@typescript-eslint/parser': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 + eslint: 10.0.2 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -4017,80 +4030,80 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 debug: 4.4.3 - eslint: 9.39.2 + eslint: 10.0.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.54.0': + '@typescript-eslint/scope-manager@8.56.1': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 - '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.2 + eslint: 10.0.2 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/types@8.56.1': {} - '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 debug: 4.4.3 - minimatch: 9.0.5 - semver: 7.7.3 + minimatch: 10.2.4 + semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - eslint: 9.39.2 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + eslint: 10.0.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.54.0': + '@typescript-eslint/visitor-keys@8.56.1': dependencies: - '@typescript-eslint/types': 8.54.0 - eslint-visitor-keys: 4.2.1 + '@typescript-eslint/types': 8.56.1 + eslint-visitor-keys: 5.0.1 '@vercel/oidc@3.1.0': {} @@ -4106,11 +4119,11 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn@8.15.0: {} + acorn@8.16.0: {} agent-base@6.0.2: dependencies: @@ -4118,28 +4131,29 @@ snapshots: transitivePeerDependencies: - supports-color - ai-sdk-ollama@3.4.0(ai@6.0.71(zod@4.3.6))(zod@4.3.6): + ai-sdk-ollama@3.8.0(ai@6.0.105(zod@4.3.6))(zod@4.3.6): dependencies: - '@ai-sdk/provider': 3.0.7 - '@ai-sdk/provider-utils': 4.0.13(zod@4.3.6) - ai: 6.0.71(zod@4.3.6) + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.16(zod@4.3.6) + ai: 6.0.105(zod@4.3.6) + jsonrepair: 3.13.2 ollama: 0.6.3 transitivePeerDependencies: - zod - ai@6.0.71(zod@4.3.6): + ai@6.0.105(zod@4.3.6): dependencies: - '@ai-sdk/gateway': 3.0.34(zod@4.3.6) - '@ai-sdk/provider': 3.0.7 - '@ai-sdk/provider-utils': 4.0.13(zod@4.3.6) + '@ai-sdk/gateway': 3.0.59(zod@4.3.6) + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.16(zod@4.3.6) '@opentelemetry/api': 1.9.0 zod: 4.3.6 - ajv-formats@3.0.1(ajv@8.17.1): + ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: - ajv: 8.17.1 + ajv: 8.18.0 - ajv@6.12.6: + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -4153,7 +4167,7 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 - ajv@8.17.1: + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 fast-uri: 3.1.0 @@ -4182,8 +4196,6 @@ snapshots: dependencies: sprintf-js: 1.0.3 - argparse@2.0.1: {} - array-flatten@1.1.1: {} asn1@0.2.6: @@ -4226,9 +4238,11 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + base64-js@1.5.1: {} - baseline-browser-mapping@2.9.19: {} + baseline-browser-mapping@2.10.0: {} bcrypt-pbkdf@1.0.2: dependencies: @@ -4244,7 +4258,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.14.1 + qs: 6.14.2 raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 @@ -4259,7 +4273,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.7.2 on-finished: 2.4.1 - qs: 6.14.1 + qs: 6.15.0 raw-body: 3.0.2 type-is: 2.0.1 transitivePeerDependencies: @@ -4281,9 +4295,9 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: + brace-expansion@5.0.4: dependencies: - balanced-match: 1.0.2 + balanced-match: 4.0.4 braces@3.0.3: dependencies: @@ -4291,9 +4305,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001768 - electron-to-chromium: 1.5.286 + baseline-browser-mapping: 2.10.0 + caniuse-lite: 1.0.30001775 + electron-to-chromium: 1.5.302 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4320,11 +4334,9 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - callsites@3.1.0: {} - camelcase@7.0.1: {} - caniuse-lite@1.0.30001768: {} + caniuse-lite@1.0.30001775: {} caseless@0.12.0: {} @@ -4383,7 +4395,7 @@ snapshots: transitivePeerDependencies: - supports-color - compromise@14.14.5: + compromise@14.15.0: dependencies: efrt: 2.7.0 grad-school: 0.0.5 @@ -4393,7 +4405,7 @@ snapshots: confbox@0.1.8: {} - confbox@0.2.2: {} + confbox@0.2.4: {} content-disposition@0.5.2: {} @@ -4466,7 +4478,7 @@ snapshots: detect-libc@2.0.2: {} - dotenv@17.2.3: {} + dotenv@17.3.1: {} dtrace-provider@0.8.8: dependencies: @@ -4494,7 +4506,7 @@ snapshots: efrt@2.7.0: {} - electron-to-chromium@1.5.286: {} + electron-to-chromium@1.5.302: {} emoji-regex@8.0.0: {} @@ -4555,37 +4567,36 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-scope@8.4.0: + eslint-scope@9.1.1: dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} - eslint@9.39.2: + eslint@10.0.2: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.3 - '@eslint/js': 9.39.2 - '@eslint/plugin-kit': 0.4.1 + '@eslint/config-array': 0.23.2 + '@eslint/config-helpers': 0.5.2 + '@eslint/core': 1.1.0 + '@eslint/plugin-kit': 0.6.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - ajv: 6.12.6 - chalk: 4.1.2 + ajv: 6.14.0 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 + eslint-scope: 9.1.1 + eslint-visitor-keys: 5.0.1 + espree: 11.1.1 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4596,18 +4607,17 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 10.2.4 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: - supports-color - espree@10.4.0: + espree@11.1.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 esprima@4.0.1: {} @@ -4690,7 +4700,7 @@ snapshots: parseurl: 1.3.3 path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.14.1 + qs: 6.14.2 range-parser: 1.2.1 safe-buffer: 5.2.1 send: 0.19.2 @@ -4725,7 +4735,7 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.14.1 + qs: 6.15.0 range-parser: 1.2.1 router: 2.2.0 send: 1.2.1 @@ -4827,10 +4837,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.3.4 keyv: 4.5.4 - flatted@3.3.3: {} + flatted@3.3.4: {} follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: @@ -4900,7 +4910,7 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 - get-tsconfig@4.13.1: + get-tsconfig@4.13.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -4920,13 +4930,11 @@ snapshots: dependencies: inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 optional: true - globals@14.0.0: {} - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -4944,7 +4952,7 @@ snapshots: har-validator@5.1.5: dependencies: - ajv: 6.12.6 + ajv: 6.14.0 har-schema: 2.0.0 has-flag@4.0.0: {} @@ -4957,16 +4965,16 @@ snapshots: help-me@5.0.0: {} - hono-openapi@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(hono@4.11.7)(openapi-types@12.1.3): + hono-openapi@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(hono@4.12.3)(openapi-types@12.1.3): dependencies: '@standard-community/standard-json': 0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6) '@standard-community/standard-openapi': 0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6) '@types/json-schema': 7.0.15 openapi-types: 12.1.3 optionalDependencies: - hono: 4.11.7 + hono: 4.12.3 - hono@4.11.7: {} + hono@4.12.3: {} http-errors@2.0.1: dependencies: @@ -5013,11 +5021,6 @@ snapshots: ignore@7.0.5: {} - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - imurmurhash@0.1.4: {} inflight@1.0.6: @@ -5052,7 +5055,7 @@ snapshots: is-module@1.0.0: {} - is-network-error@1.3.0: {} + is-network-error@1.3.1: {} is-number@7.0.0: {} @@ -5099,10 +5102,6 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - jsbn@0.1.1: {} jsesc@3.1.0: {} @@ -5131,6 +5130,8 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonrepair@3.13.2: {} + jsonwebtoken@8.5.1: dependencies: jws: 3.2.3 @@ -5231,15 +5232,13 @@ snapshots: lodash.isstring@4.0.1: {} - lodash.merge@4.6.2: {} - lodash.once@4.1.1: {} lodash@4.17.15: {} lodash@4.17.23: {} - lru-cache@11.2.5: {} + lru-cache@11.2.6: {} lru-cache@5.1.1: dependencies: @@ -5258,15 +5257,15 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - mastra@1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6): + mastra@1.3.5(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6): dependencies: - '@clack/prompts': 0.11.0 + '@clack/prompts': 1.0.1 '@expo/devcert': 1.2.1 - '@mastra/core': 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - '@mastra/deployer': 1.2.0(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6) - '@mastra/loggers': 1.0.1(@mastra/core@1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/deployer': 1.8.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6) + '@mastra/loggers': 1.0.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) commander: 14.0.3 - dotenv: 17.2.3 + dotenv: 17.3.1 execa: 9.6.1 fs-extra: 11.3.3 get-port: 7.1.0 @@ -5274,7 +5273,7 @@ snapshots: picocolors: 1.1.1 posthog-node: 5.17.2 prettier: 3.8.1 - semver: 7.7.3 + semver: 7.7.4 serve: 14.2.5 serve-handler: 6.1.6 shell-quote: 1.8.3 @@ -5330,13 +5329,18 @@ snapshots: mimic-fn@2.1.0: {} + minimatch@10.2.4: + dependencies: + brace-expansion: 5.0.4 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 - minimatch@9.0.5: + minimatch@3.1.5: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 1.1.12 + optional: true minimist@1.2.8: {} @@ -5347,7 +5351,7 @@ snapshots: mlly@1.8.0: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.3 @@ -5450,11 +5454,7 @@ snapshots: p-retry@7.1.1: dependencies: - is-network-error: 1.3.0 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 + is-network-error: 1.3.1 parse-ms@4.0.0: {} @@ -5490,11 +5490,11 @@ snapshots: pg-int8@1.0.1: {} - pg-pool@3.11.0(pg@8.18.0): + pg-pool@3.12.0(pg@8.19.0): dependencies: - pg: 8.18.0 + pg: 8.19.0 - pg-protocol@1.11.0: {} + pg-protocol@1.12.0: {} pg-types@2.2.0: dependencies: @@ -5504,11 +5504,11 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.18.0: + pg@8.19.0: dependencies: pg-connection-string: 2.11.0 - pg-pool: 3.11.0(pg@8.18.0) - pg-protocol: 1.11.0 + pg-pool: 3.12.0(pg@8.19.0) + pg-protocol: 1.12.0 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: @@ -5539,14 +5539,14 @@ snapshots: minimist: 1.2.8 on-exit-leak-free: 2.1.2 pino-abstract-transport: 3.0.0 - pump: 3.0.3 + pump: 3.0.4 secure-json-parse: 4.1.0 - sonic-boom: 4.2.0 + sonic-boom: 4.2.1 strip-json-comments: 5.0.3 pino-std-serializers@7.1.0: {} - pino@10.3.0: + pino@10.3.1: dependencies: '@pinojs/redact': 0.4.0 atomic-sleep: 1.0.0 @@ -5557,7 +5557,7 @@ snapshots: quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.5.0 - sonic-boom: 4.2.0 + sonic-boom: 4.2.1 thread-stream: 4.0.0 pkce-challenge@5.0.1: {} @@ -5570,7 +5570,7 @@ snapshots: pkg-types@2.3.0: dependencies: - confbox: 0.2.2 + confbox: 0.2.4 exsolve: 1.0.8 pathe: 2.0.3 @@ -5613,14 +5613,18 @@ snapshots: dependencies: punycode: 2.3.1 - pump@3.0.3: + pump@3.0.4: dependencies: end-of-stream: 1.4.5 once: 1.4.0 punycode@2.3.1: {} - qs@6.14.1: + qs@6.14.2: + dependencies: + side-channel: 1.1.0 + + qs@6.15.0: dependencies: side-channel: 1.1.0 @@ -5708,8 +5712,6 @@ snapshots: require-from-string@2.0.2: {} - resolve-from@4.0.0: {} - resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -5734,7 +5736,7 @@ snapshots: debug: 4.4.3 es-module-lexer: 1.7.0 esbuild: 0.25.12 - get-tsconfig: 4.13.1 + get-tsconfig: 4.13.6 rollup: 4.55.3 unplugin-utils: 0.2.5 transitivePeerDependencies: @@ -5811,7 +5813,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.3: {} + semver@7.7.4: {} send@0.19.2: dependencies: @@ -5937,7 +5939,7 @@ snapshots: sisteransi@1.0.5: {} - sonic-boom@4.2.0: + sonic-boom@4.2.1: dependencies: atomic-sleep: 1.0.0 @@ -5971,13 +5973,13 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.2: + strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 @@ -5989,8 +5991,6 @@ snapshots: strip-json-comments@2.0.1: {} - strip-json-comments@3.1.1: {} - strip-json-comments@5.0.3: {} suffix-thumb@5.0.2: {} @@ -6063,13 +6063,13 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 - typescript-eslint@8.54.0(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.56.1(eslint@10.0.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 + '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + eslint: 10.0.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -6082,7 +6082,7 @@ snapshots: ufo@1.6.3: {} - undici-types@7.16.0: {} + undici-types@7.18.2: {} unicorn-magic@0.3.0: {} @@ -6142,7 +6142,7 @@ snapshots: dependencies: ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrappy@1.0.2: {} From 76029f57c314902258019cdc4ebb51ccf5f406a9 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 6 Mar 2026 09:02:16 +0200 Subject: [PATCH 5/5] npm update --- package.json | 12 +++--- pnpm-lock.yaml | 113 ++++++++++++++++++++++++++----------------------- 2 files changed, 65 insertions(+), 60 deletions(-) diff --git a/package.json b/package.json index be0d650..603074e 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,13 @@ }, "dependencies": { "@mastra/auth-auth0": "^1.0.1", - "@mastra/core": "^1.8.0", + "@mastra/core": "^1.10.0", "@mastra/evals": "^1.1.2", - "@mastra/libsql": "^1.6.2", + "@mastra/libsql": "^1.6.4", "@mastra/loggers": "^1.0.2", - "@mastra/memory": "^1.5.2", - "@mastra/observability": "^1.2.1", - "@mastra/pg": "^1.7.0", + "@mastra/memory": "^1.6.1", + "@mastra/observability": "^1.3.1", + "@mastra/pg": "^1.7.2", "ai": "^6.0.105", "ai-sdk-ollama": "^3.8.0", "tc-core-library-js": "^2.4.1", @@ -40,7 +40,7 @@ "@eslint/js": "^10.0.1", "@types/node": "^25.3.3", "eslint": "^10.0.2", - "mastra": "^1.3.5", + "mastra": "^1.3.7", "prettier": "^3.8.1", "typescript": "^5.9.3", "typescript-eslint": "^8.56.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 01d8556..a15fb8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,26 +12,26 @@ importers: specifier: ^1.0.1 version: 1.0.1 '@mastra/core': - specifier: ^1.8.0 - version: 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + specifier: ^1.10.0 + version: 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) '@mastra/evals': specifier: ^1.1.2 - version: 1.1.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) + version: 1.1.2(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) '@mastra/libsql': - specifier: ^1.6.2 - version: 1.6.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + specifier: ^1.6.4 + version: 1.6.4(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) '@mastra/loggers': specifier: ^1.0.2 - version: 1.0.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + version: 1.0.2(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) '@mastra/memory': - specifier: ^1.5.2 - version: 1.5.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) + specifier: ^1.6.1 + version: 1.6.1(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) '@mastra/observability': - specifier: ^1.2.1 - version: 1.2.1(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + specifier: ^1.3.1 + version: 1.3.1(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) '@mastra/pg': - specifier: ^1.7.0 - version: 1.7.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + specifier: ^1.7.2 + version: 1.7.2(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) ai: specifier: ^6.0.105 version: 6.0.105(zod@4.3.6) @@ -55,8 +55,8 @@ importers: specifier: ^10.0.2 version: 10.0.2 mastra: - specifier: ^1.3.5 - version: 1.3.5(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6) + specifier: ^1.3.7 + version: 1.3.7(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6) prettier: specifier: ^3.8.1 version: 3.8.1 @@ -580,14 +580,14 @@ packages: resolution: {integrity: sha512-eCjSuHtYlfDL/aUQzO9W13XZPaBgKN12jv2ZNjTU8q9N6tgHCDKmGOvVh/lwgsK1kz430cNGVpk13sXKjwpVNw==} engines: {node: '>=22.13.0'} - '@mastra/core@1.8.0': - resolution: {integrity: sha512-AK6Isj21mWlwX1zIZNUxgAQvRfjJmdjsPsKoh1cOvaM+h748S4U48TJ5DsmundSj/8NBeKHmYXqH2RYqwN35nw==} + '@mastra/core@1.10.0': + resolution: {integrity: sha512-T0xzIU4ibYqZVdsf948KfG2wAgNHL6oWw8zzADfo7qSXsirn/2qWVi1A6UD6xceoYyVAYhW6bWgnqd7rgWUrBw==} engines: {node: '>=22.13.0'} peerDependencies: zod: ^3.25.0 || ^4.0.0 - '@mastra/deployer@1.8.0': - resolution: {integrity: sha512-NWCAHStM1WMISuEMheGPH7WMFAsNlfm22pej4a1p0dS9V48qq6AdCdOjzWKJQ4CewCFC2qI0sNqZNJtCtTkemw==} + '@mastra/deployer@1.10.0': + resolution: {integrity: sha512-lOgOV8XTJNzBvwTJZM9Ilsgb5J4/ozvgucZ/QvN1ZDuv7dPOPA8NsOYgxc/BsMLQvh+/skAzQuaWWrjpgek/wg==} engines: {node: '>=22.13.0'} peerDependencies: '@mastra/core': '>=1.0.0-0 <2.0.0-0' @@ -600,11 +600,11 @@ packages: '@mastra/core': '>=1.0.0-0 <2.0.0-0' zod: ^3.25.0 || ^4.0.0 - '@mastra/libsql@1.6.2': - resolution: {integrity: sha512-0PTZKQwSMxSkqkWlULYPUk6fnqQWkhN3jaKZrT/GbImZG6xvid1+NoopjIdhUpf9Ws3eIkv+EBhZWqhSew5nEA==} + '@mastra/libsql@1.6.4': + resolution: {integrity: sha512-SPtiXS5uo6yxWwPc6Joo8i/u+WN8OiZZjklmrh0uEVV7yWTyfzRSKxgtV0IZJvSmzVvxKWusXhLB7IToCfbceA==} engines: {node: '>=22.13.0'} peerDependencies: - '@mastra/core': '>=1.4.0-0 <2.0.0-0' + '@mastra/core': '>=1.0.0-0 <2.0.0-0' '@mastra/loggers@1.0.2': resolution: {integrity: sha512-3gUp3Nvyi94WoJaUNXdui8efasRWEh3vCL9B9bdv3mRa54GOzVLUQWkoxO6QWI3Jw/XBpHvhHsbNmvF/bVh13Q==} @@ -612,21 +612,21 @@ packages: peerDependencies: '@mastra/core': '>=1.0.0-0 <2.0.0-0' - '@mastra/memory@1.5.2': - resolution: {integrity: sha512-0m7ZLZ55/RqlQZap274fDW0cyJ+EG4veDEA63oV1Kno0PP8l74e4IgUdpr7nkzl+iNHyKDceavIll+lFwDmViw==} + '@mastra/memory@1.6.1': + resolution: {integrity: sha512-MtsALWky0ZJ5LiOsM5qP2y+FNBYfqtmWtb1FXMOg9tkXeDHQ3wd7hnCCrPrRpoBydH3APFF9fMO9NPSc2PBNVg==} engines: {node: '>=22.13.0'} peerDependencies: '@mastra/core': '>=1.4.1-0 <2.0.0-0' zod: ^3.25.0 || ^4.0.0 - '@mastra/observability@1.2.1': - resolution: {integrity: sha512-XogyAgXPnojehAo85ypXzGyofgDaEcqbI8YPP27npGfNDtx+9jxetyCYJMzDi56VodxIl/8JgNph4uWNBZasyg==} + '@mastra/observability@1.3.1': + resolution: {integrity: sha512-r4AyxHjc7iNBHY+aX0ovt9tYXof6F+eHO9F68RNHiWbqDV0wBjnvmVwHKjgpIJ3fayCtPpHINnAAJTxei1fT3w==} engines: {node: '>=22.13.0'} peerDependencies: - '@mastra/core': '>=1.1.0-0 <2.0.0-0' + '@mastra/core': '>=1.9.0-0 <2.0.0-0' - '@mastra/pg@1.7.0': - resolution: {integrity: sha512-RX/I4vZkt2n0g3NfVq7dS1u7Qvd+1r0ll2uHAbG9xQ8m10tb9QwXZCVrX7ki6s16/odLjJYgJGZImo20SR7N5A==} + '@mastra/pg@1.7.2': + resolution: {integrity: sha512-k6t2sOFlox857VLVztN5ocwswG7rgsZV5C/YJ5JB/lrf/Ita847mghWlmOQTvU0EDol66I2uvcCIXJ/sjZE+SA==} engines: {node: '>=22.13.0'} peerDependencies: '@mastra/core': '>=1.4.0-0 <2.0.0-0' @@ -637,8 +637,8 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - '@mastra/server@1.8.0': - resolution: {integrity: sha512-j65lk9h/BGUf6GqbmRtf+WFmzN2d6SmY/aOa1gtBbgGafM03PLgx5k8CuSP9DPRDDB9XSSWWpO8dKyBzGDauQw==} + '@mastra/server@1.10.0': + resolution: {integrity: sha512-x9BscatpvpQXyyWDFImvKhKaEO/mZZ04J9KmcAVIw0KBY1kaLtNRoEwq5B8xAnN9GxLw3tc7RMBxUl+mD6nZlQ==} engines: {node: '>=22.13.0'} peerDependencies: '@mastra/core': '>=1.7.1-0 <2.0.0-0' @@ -2177,8 +2177,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - mastra@1.3.5: - resolution: {integrity: sha512-PeSzZYizlVLRdSceqBgWauBNrBC9dFir1KlMuzhOKl3+Spf44GOBWI7GLcxuILAazo8GiFaufsC+ZkALji5s9Q==} + mastra@1.3.7: + resolution: {integrity: sha512-njrWc0Gb2rFtp0gVET8sLQOgORTv5g+2xi/MpUp87i0xuRctTWa7GkqiES/PUAZfvwg/v0HXNjam6RFdP52ekA==} engines: {node: '>=22.13.0'} hasBin: true peerDependencies: @@ -3578,7 +3578,7 @@ snapshots: dependencies: jose: 6.1.3 - '@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)': + '@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)': dependencies: '@a2a-js/sdk': 0.2.5 '@ai-sdk/provider-utils-v5': '@ai-sdk/provider-utils@3.0.20(zod@4.3.6)' @@ -3592,9 +3592,11 @@ snapshots: '@modelcontextprotocol/sdk': 1.27.1(zod@4.3.6) '@sindresorhus/slugify': 2.2.1 dotenv: 17.3.1 + execa: 9.6.1 gray-matter: 4.0.3 hono: 4.12.3 hono-openapi: 1.2.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(hono@4.12.3)(openapi-types@12.1.3) + ignore: 7.0.5 js-tiktoken: 1.0.21 json-schema: 0.4.0 lru-cache: 11.2.6 @@ -3602,6 +3604,7 @@ snapshots: p-retry: 7.1.1 picomatch: 4.0.3 radash: 12.1.1 + ws: 8.19.0 xxhash-wasm: 1.1.0 zod: 4.3.6 transitivePeerDependencies: @@ -3610,15 +3613,17 @@ snapshots: - '@standard-community/standard-json' - '@standard-community/standard-openapi' - '@types/json-schema' + - bufferutil - openapi-types - supports-color + - utf-8-validate - '@mastra/deployer@1.8.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6)': + '@mastra/deployer@1.10.0(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6)': dependencies: '@babel/core': 7.29.0 '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - '@mastra/server': 1.8.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) + '@mastra/core': 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/server': 1.10.0(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6) '@optimize-lodash/rollup-plugin': 5.1.0(rollup@4.55.3) '@rollup/plugin-alias': 6.0.0(rollup@4.55.3) '@rollup/plugin-commonjs': 29.0.0(rollup@4.55.3) @@ -3645,32 +3650,32 @@ snapshots: - supports-color - typescript - '@mastra/evals@1.1.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': + '@mastra/evals@1.1.2(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': dependencies: - '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) compromise: 14.15.0 keyword-extractor: 0.0.28 sentiment: 5.0.2 string-similarity: 4.0.4 zod: 4.3.6 - '@mastra/libsql@1.6.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': + '@mastra/libsql@1.6.4(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': dependencies: '@libsql/client': 0.15.15 - '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) transitivePeerDependencies: - bufferutil - utf-8-validate - '@mastra/loggers@1.0.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': + '@mastra/loggers@1.0.2(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': dependencies: - '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) pino: 10.3.1 pino-pretty: 13.1.3 - '@mastra/memory@1.5.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': + '@mastra/memory@1.6.1(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': dependencies: - '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) '@mastra/schema-compat': 1.1.3(zod@4.3.6) async-mutex: 0.5.0 js-tiktoken: 1.0.21 @@ -3679,13 +3684,13 @@ snapshots: xxhash-wasm: 1.1.0 zod: 4.3.6 - '@mastra/observability@1.2.1(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': + '@mastra/observability@1.3.1(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': dependencies: - '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - '@mastra/pg@1.7.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': + '@mastra/pg@1.7.2(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))': dependencies: - '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) async-mutex: 0.5.0 pg: 8.19.0 xxhash-wasm: 1.1.0 @@ -3700,9 +3705,9 @@ snapshots: zod-from-json-schema-v3: zod-from-json-schema@0.0.5 zod-to-json-schema: 3.25.1(zod@4.3.6) - '@mastra/server@1.8.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': + '@mastra/server@1.10.0(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(zod@4.3.6)': dependencies: - '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/core': 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) hono: 4.12.3 zod: 4.3.6 @@ -5257,13 +5262,13 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - mastra@1.3.5(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6): + mastra@1.3.7(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6): dependencies: '@clack/prompts': 1.0.1 '@expo/devcert': 1.2.1 - '@mastra/core': 1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) - '@mastra/deployer': 1.8.0(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6) - '@mastra/loggers': 1.0.2(@mastra/core@1.8.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) + '@mastra/core': 1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6) + '@mastra/deployer': 1.10.0(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6))(typescript@5.9.3)(zod@4.3.6) + '@mastra/loggers': 1.0.2(@mastra/core@1.10.0(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(quansync@0.2.11)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(zod@4.3.6))(@types/json-schema@7.0.15)(openapi-types@12.1.3)(zod@4.3.6)) commander: 14.0.3 dotenv: 17.3.1 execa: 9.6.1