diff --git a/.dockerignore b/.dockerignore index 11d03a1c54..3ad0f8d8e4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -77,6 +77,7 @@ src/node_modules !pnpm-workspace.yaml !scripts/bootstrap.mjs !apps/web-evals/ +!apps/roomote/ !src/ !webview-ui/ !packages/evals/.docker/entrypoints/runner.sh diff --git a/.roo/rules/rules.md b/.roo/rules/rules.md index d3795393f3..9e75224b39 100644 --- a/.roo/rules/rules.md +++ b/.roo/rules/rules.md @@ -1,3 +1,8 @@ +# Repository Rules + +1. This repository is a monorepo that uses pnpm workspaces. Prefer `pnpm` over `npm` when executing commands. +2. Tests should be written with vitest instead of jest. + # Code Quality Rules 1. Test Coverage: @@ -8,14 +13,8 @@ - Tests must be run from the same directory as the `package.json` file that specifies `vitest` in `devDependencies` 2. Lint Rules: - - Never disable any lint rules without explicit user approval - 3. Styling Guidelines: - Use Tailwind CSS classes instead of inline style objects for new markup - VSCode CSS variables must be added to webview-ui/src/index.css before using them in Tailwind classes - Example: `
` instead of style objects - -# Adding a New Setting - -To add a new setting that persists its state, follow the steps in docs/settings.md diff --git a/apps/roomote/.env.example b/apps/roomote/.env.example new file mode 100644 index 0000000000..0e1eb3ae79 --- /dev/null +++ b/apps/roomote/.env.example @@ -0,0 +1,9 @@ +DATABASE_URL=postgresql://postgres:password@localhost:5433/cloud_agents +REDIS_URL=redis://localhost:6380 + +GH_WEBHOOK_SECRET=your-webhook-secret-here +GH_TOKEN=your-token-here + +OPENROUTER_API_KEY=sk-or-v1-... + +SLACK_API_TOKEN=xoxb-... diff --git a/apps/roomote/.gitignore b/apps/roomote/.gitignore new file mode 100644 index 0000000000..9ef9b815c5 --- /dev/null +++ b/apps/roomote/.gitignore @@ -0,0 +1,10 @@ +# Next.js +.next + +# docker +.docker/* +!.docker/scripts +!.docker/entrypoints + +# ENV +!.env.example diff --git a/apps/roomote/Dockerfile.api b/apps/roomote/Dockerfile.api new file mode 100644 index 0000000000..6566096a71 --- /dev/null +++ b/apps/roomote/Dockerfile.api @@ -0,0 +1,27 @@ +# docker compose build base api + +FROM roomote-base AS base + +WORKDIR /roo + +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY packages/config-eslint/package.json ./packages/config-eslint/ +COPY packages/config-typescript/package.json ./packages/config-typescript/ +COPY packages/types/package.json ./packages/types/ +COPY packages/ipc/package.json ./packages/ipc/ +COPY apps/roomote/package.json ./apps/roomote/ + +COPY scripts/bootstrap.mjs ./scripts/ +RUN pnpm install + +COPY apps/roomote ./apps/roomote/ +COPY packages/config-eslint ./packages/config-eslint/ +COPY packages/config-typescript ./packages/config-typescript/ +COPY packages/types ./packages/types/ +COPY packages/ipc ./packages/ipc/ + +WORKDIR /roo/apps/roomote +RUN pnpm build +ENV NODE_ENV=production +EXPOSE 3001 +CMD ["pnpm", "start"] diff --git a/apps/roomote/Dockerfile.base b/apps/roomote/Dockerfile.base new file mode 100644 index 0000000000..3320b0b6a5 --- /dev/null +++ b/apps/roomote/Dockerfile.base @@ -0,0 +1,31 @@ +# docker compose build base + +FROM node:20-slim AS base + +# Install pnpm +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + +# Install common system packages +RUN apt update && \ + apt install -y \ + curl \ + git \ + vim \ + jq \ + netcat-openbsd \ + apt-transport-https \ + ca-certificates \ + gnupg \ + lsb-release \ + wget \ + gpg \ + gh \ + && rm -rf /var/lib/apt/lists/* + +# Install Docker cli +RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \ + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \ + && apt update && apt install -y docker-ce-cli \ + && rm -rf /var/lib/apt/lists/* diff --git a/apps/roomote/Dockerfile.controller b/apps/roomote/Dockerfile.controller new file mode 100644 index 0000000000..a2a2e00203 --- /dev/null +++ b/apps/roomote/Dockerfile.controller @@ -0,0 +1,25 @@ +# docker compose build base controller + +FROM roomote-base AS base + +WORKDIR /roo + +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY packages/config-eslint/package.json ./packages/config-eslint/ +COPY packages/config-typescript/package.json ./packages/config-typescript/ +COPY packages/types/package.json ./packages/types/ +COPY packages/ipc/package.json ./packages/ipc/ +COPY apps/roomote/package.json ./apps/roomote/ + +COPY scripts/bootstrap.mjs ./scripts/ +RUN pnpm install + +COPY apps/roomote ./apps/roomote/ +COPY packages/config-eslint ./packages/config-eslint/ +COPY packages/config-typescript ./packages/config-typescript/ +COPY packages/types ./packages/types/ +COPY packages/ipc ./packages/ipc/ + +WORKDIR /roo/apps/roomote +ENV NODE_ENV=production +CMD ["pnpm", "controller"] diff --git a/apps/roomote/Dockerfile.dashboard b/apps/roomote/Dockerfile.dashboard new file mode 100644 index 0000000000..f04160d9d2 --- /dev/null +++ b/apps/roomote/Dockerfile.dashboard @@ -0,0 +1,25 @@ +# docker compose build base dashboard + +FROM roomote-base AS base + +WORKDIR /roo + +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY packages/config-eslint/package.json ./packages/config-eslint/ +COPY packages/config-typescript/package.json ./packages/config-typescript/ +COPY packages/types/package.json ./packages/types/ +COPY packages/ipc/package.json ./packages/ipc/ +COPY apps/roomote/package.json ./apps/roomote/ + +COPY scripts/bootstrap.mjs ./scripts/ +RUN pnpm install + +COPY apps/roomote ./apps/roomote/ +COPY packages/config-eslint ./packages/config-eslint/ +COPY packages/config-typescript ./packages/config-typescript/ +COPY packages/types ./packages/types/ +COPY packages/ipc ./packages/ipc/ + +WORKDIR /roo/apps/roomote +EXPOSE 3002 +CMD ["pnpm", "dashboard"] diff --git a/apps/roomote/Dockerfile.worker b/apps/roomote/Dockerfile.worker new file mode 100644 index 0000000000..b1a21c8a62 --- /dev/null +++ b/apps/roomote/Dockerfile.worker @@ -0,0 +1,62 @@ +# docker compose build worker +# Note: Requires $GH_TOKEN to be set as build argument. + +FROM roomote-base AS base + +# Install additional worker-specific packages +RUN apt update && \ + apt install -y \ + xvfb \ + && rm -rf /var/lib/apt/lists/* + +# Install VS Code +RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg \ + && install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg \ + && echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | tee /etc/apt/sources.list.d/vscode.list > /dev/null \ + && rm -f packages.microsoft.gpg \ + && apt update && apt install -y code \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /roo + +# Install extensions +RUN mkdir -p /roo/.vscode \ + && code --no-sandbox --user-data-dir /roo/.vscode --install-extension dbaeumer.vscode-eslint \ + && code --no-sandbox --user-data-dir /roo/.vscode --install-extension esbenp.prettier-vscode \ + && code --no-sandbox --user-data-dir /roo/.vscode --install-extension csstools.postcss \ + && code --no-sandbox --user-data-dir /roo/.vscode --install-extension RooVeterinaryInc.roo-cline + +# Clone repo (requires $GH_TOKEN) +ARG GH_TOKEN +ENV GH_TOKEN=${GH_TOKEN} +WORKDIR /roo/repos +RUN git config --global user.email "chris@roocode.com" +RUN git config --global user.name "Roo Code" +RUN git config --global credential.helper store +RUN echo "https://oauth2:${GH_TOKEN}@github.com" > ~/.git-credentials +RUN gh repo clone RooCodeInc/Roo-Code +WORKDIR /roo/repos/Roo-Code +RUN gh repo set-default RooCodeInc/Roo-Code +RUN pnpm install + +# Install dependencies +WORKDIR /roo +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY packages/config-eslint/package.json ./packages/config-eslint/ +COPY packages/config-typescript/package.json ./packages/config-typescript/ +COPY packages/types/package.json ./packages/types/ +COPY packages/ipc/package.json ./packages/ipc/ +COPY apps/roomote/package.json ./apps/roomote/ + +COPY scripts/bootstrap.mjs ./scripts/ +RUN pnpm install + +COPY apps/roomote ./apps/roomote/ +COPY packages/config-eslint ./packages/config-eslint/ +COPY packages/config-typescript ./packages/config-typescript/ +COPY packages/types ./packages/types/ +COPY packages/ipc ./packages/ipc/ + +WORKDIR /roo/apps/roomote +ENV NODE_ENV=production +CMD ["pnpm", "worker"] diff --git a/apps/roomote/docker-compose.yml b/apps/roomote/docker-compose.yml new file mode 100644 index 0000000000..1a6a5f0b83 --- /dev/null +++ b/apps/roomote/docker-compose.yml @@ -0,0 +1,120 @@ +services: + base: + build: + context: ../../ + dockerfile: apps/roomote/Dockerfile.base + image: roomote-base + + db: + container_name: roomote-db + image: postgres:17.5 + ports: + - "5433:5432" + volumes: + - ./.docker/postgres:/var/lib/postgresql/data + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=password + - POSTGRES_DB=cloud_agents + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d cloud_agents"] + interval: 5s + timeout: 5s + retries: 5 + start_period: 30s + + redis: + container_name: roomote-redis + image: redis:7-alpine + ports: + - "6380:6379" + volumes: + - ./.docker/redis:/data + command: redis-server --appendonly yes + + dashboard: + container_name: roomote-dashboard + build: + context: ../../ + dockerfile: apps/roomote/Dockerfile.dashboard + image: roomote-dashboard + ports: + - "3002:3002" + environment: + - REDIS_URL=redis://redis:6379 + - NODE_ENV=production + depends_on: + redis: + condition: service_started + + api: + container_name: roomote-api + build: + context: ../../ + dockerfile: apps/roomote/Dockerfile.api + image: roomote-api + ports: + - "3001:3001" + environment: + - DATABASE_URL=postgresql://postgres:password@db:5432/cloud_agents + - REDIS_URL=redis://redis:6379 + - NODE_ENV=production + volumes: + - /var/run/docker.sock:/var/run/docker.sock + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + + controller: + container_name: roomote-controller + build: + context: ../../ + dockerfile: apps/roomote/Dockerfile.controller + args: + - GH_TOKEN=${GH_TOKEN} + image: roomote-controller + env_file: + - .env + environment: + - HOST_EXECUTION_METHOD=docker + - DATABASE_URL=postgresql://postgres:password@db:5432/cloud_agents + - REDIS_URL=redis://redis:6379 + - NODE_ENV=production + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /tmp/roomote:/var/log/roomote + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + restart: unless-stopped + + worker: + build: + context: ../../ + dockerfile: apps/roomote/Dockerfile.worker + args: + - GH_TOKEN=${GH_TOKEN} + image: roomote-worker + env_file: + - .env + environment: + - HOST_EXECUTION_METHOD=docker + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /tmp/roomote:/var/log/roomote + stdin_open: true + tty: true + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + +networks: + default: + name: roomote_default + driver: bridge diff --git a/apps/roomote/drizzle.config.ts b/apps/roomote/drizzle.config.ts new file mode 100644 index 0000000000..a5e5683fba --- /dev/null +++ b/apps/roomote/drizzle.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "drizzle-kit" + +export default defineConfig({ + schema: "./src/db/schema.ts", + out: "./drizzle", + dialect: "postgresql", + dbCredentials: { + url: process.env.DATABASE_URL!, + }, +}) diff --git a/apps/roomote/drizzle/0000_cuddly_luke_cage.sql b/apps/roomote/drizzle/0000_cuddly_luke_cage.sql new file mode 100644 index 0000000000..2535f219e2 --- /dev/null +++ b/apps/roomote/drizzle/0000_cuddly_luke_cage.sql @@ -0,0 +1,21 @@ +CREATE TABLE "cloud_jobs" ( + "id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "cloud_jobs_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1), + "type" text NOT NULL, + "status" text DEFAULT 'pending' NOT NULL, + "payload" jsonb NOT NULL, + "result" jsonb, + "error" text, + "created_at" timestamp DEFAULT now() NOT NULL, + "started_at" timestamp, + "completed_at" timestamp +); +--> statement-breakpoint +CREATE TABLE "cloud_tasks" ( + "id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "cloud_tasks_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1), + "job_id" integer NOT NULL, + "task_id" integer, + "container_id" text, + "created_at" timestamp DEFAULT now() NOT NULL +); +--> statement-breakpoint +ALTER TABLE "cloud_tasks" ADD CONSTRAINT "cloud_tasks_job_id_cloud_jobs_id_fk" FOREIGN KEY ("job_id") REFERENCES "public"."cloud_jobs"("id") ON DELETE no action ON UPDATE no action; \ No newline at end of file diff --git a/apps/roomote/drizzle/0001_fluffy_sasquatch.sql b/apps/roomote/drizzle/0001_fluffy_sasquatch.sql new file mode 100644 index 0000000000..aeddbe02a8 --- /dev/null +++ b/apps/roomote/drizzle/0001_fluffy_sasquatch.sql @@ -0,0 +1 @@ +ALTER TABLE "cloud_jobs" ADD COLUMN "slack_thread_ts" text; \ No newline at end of file diff --git a/apps/roomote/drizzle/0002_brief_sentry.sql b/apps/roomote/drizzle/0002_brief_sentry.sql new file mode 100644 index 0000000000..2f22f7825c --- /dev/null +++ b/apps/roomote/drizzle/0002_brief_sentry.sql @@ -0,0 +1 @@ +DROP TABLE "cloud_tasks" CASCADE; \ No newline at end of file diff --git a/apps/roomote/drizzle/meta/0000_snapshot.json b/apps/roomote/drizzle/meta/0000_snapshot.json new file mode 100644 index 0000000000..8815e6a299 --- /dev/null +++ b/apps/roomote/drizzle/meta/0000_snapshot.json @@ -0,0 +1,164 @@ +{ + "id": "8f65bfed-78de-4e22-a15f-36de8afe5f2e", + "prevId": "00000000-0000-0000-0000-000000000000", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.cloud_jobs": { + "name": "cloud_jobs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "cloud_jobs_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "payload": { + "name": "payload", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "result": { + "name": "result", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "error": { + "name": "error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "started_at": { + "name": "started_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cloud_tasks": { + "name": "cloud_tasks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "cloud_tasks_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "job_id": { + "name": "job_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "task_id": { + "name": "task_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "container_id": { + "name": "container_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "cloud_tasks_job_id_cloud_jobs_id_fk": { + "name": "cloud_tasks_job_id_cloud_jobs_id_fk", + "tableFrom": "cloud_tasks", + "tableTo": "cloud_jobs", + "columnsFrom": ["job_id"], + "columnsTo": ["id"], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/apps/roomote/drizzle/meta/0001_snapshot.json b/apps/roomote/drizzle/meta/0001_snapshot.json new file mode 100644 index 0000000000..0169baf6b8 --- /dev/null +++ b/apps/roomote/drizzle/meta/0001_snapshot.json @@ -0,0 +1,170 @@ +{ + "id": "4cae0c18-141d-40a3-acc8-38fcd7f07534", + "prevId": "8f65bfed-78de-4e22-a15f-36de8afe5f2e", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.cloud_jobs": { + "name": "cloud_jobs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "cloud_jobs_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "payload": { + "name": "payload", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "result": { + "name": "result", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "error": { + "name": "error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "slack_thread_ts": { + "name": "slack_thread_ts", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cloud_tasks": { + "name": "cloud_tasks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "cloud_tasks_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "job_id": { + "name": "job_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "task_id": { + "name": "task_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "container_id": { + "name": "container_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "cloud_tasks_job_id_cloud_jobs_id_fk": { + "name": "cloud_tasks_job_id_cloud_jobs_id_fk", + "tableFrom": "cloud_tasks", + "tableTo": "cloud_jobs", + "columnsFrom": ["job_id"], + "columnsTo": ["id"], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/apps/roomote/drizzle/meta/0002_snapshot.json b/apps/roomote/drizzle/meta/0002_snapshot.json new file mode 100644 index 0000000000..2c06436562 --- /dev/null +++ b/apps/roomote/drizzle/meta/0002_snapshot.json @@ -0,0 +1,105 @@ +{ + "id": "16afebd7-b27a-457e-b3d5-4de50a597c2e", + "prevId": "4cae0c18-141d-40a3-acc8-38fcd7f07534", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.cloud_jobs": { + "name": "cloud_jobs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "cloud_jobs_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "payload": { + "name": "payload", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "result": { + "name": "result", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "error": { + "name": "error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "slack_thread_ts": { + "name": "slack_thread_ts", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/apps/roomote/drizzle/meta/_journal.json b/apps/roomote/drizzle/meta/_journal.json new file mode 100644 index 0000000000..7bfbcd4d35 --- /dev/null +++ b/apps/roomote/drizzle/meta/_journal.json @@ -0,0 +1,27 @@ +{ + "version": "7", + "dialect": "postgresql", + "entries": [ + { + "idx": 0, + "version": "7", + "when": 1749740498648, + "tag": "0000_cuddly_luke_cage", + "breakpoints": true + }, + { + "idx": 1, + "version": "7", + "when": 1750099429125, + "tag": "0001_fluffy_sasquatch", + "breakpoints": true + }, + { + "idx": 2, + "version": "7", + "when": 1750107620472, + "tag": "0002_brief_sentry", + "breakpoints": true + } + ] +} diff --git a/apps/roomote/eslint.config.mjs b/apps/roomote/eslint.config.mjs new file mode 100644 index 0000000000..024d6157d4 --- /dev/null +++ b/apps/roomote/eslint.config.mjs @@ -0,0 +1,17 @@ +import { nextJsConfig } from "@roo-code/config-eslint/next-js" + +/** @type {import("eslint").Linter.Config} */ +export default [ + ...nextJsConfig, + { + rules: { + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + caughtErrorsIgnorePattern: "^_", + }, + ], + }, + }, +] diff --git a/apps/roomote/next-env.d.ts b/apps/roomote/next-env.d.ts new file mode 100644 index 0000000000..1b3be0840f --- /dev/null +++ b/apps/roomote/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/roomote/next.config.ts b/apps/roomote/next.config.ts new file mode 100644 index 0000000000..dd960b3d85 --- /dev/null +++ b/apps/roomote/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next" + +const nextConfig: NextConfig = { + serverExternalPackages: ["postgres", "ioredis", "bullmq"], +} + +export default nextConfig diff --git a/apps/roomote/package.json b/apps/roomote/package.json new file mode 100644 index 0000000000..ae547aa905 --- /dev/null +++ b/apps/roomote/package.json @@ -0,0 +1,55 @@ +{ + "name": "@roo-code/roomote", + "version": "0.0.0", + "type": "module", + "scripts": { + "lint": "next lint", + "check-types": "tsc --noEmit", + "test": "vitest", + "dev": "concurrently \"next dev --port 3001\" \"ngrok http 3001 --domain cte.ngrok.dev\"", + "build": "next build", + "start": "next start --port 3001", + "clean": "rimraf .next .turbo", + "drizzle-kit": "dotenvx run -f .env -- tsx node_modules/drizzle-kit/bin.cjs", + "db:generate": "pnpm drizzle-kit generate", + "db:migrate": "pnpm drizzle-kit migrate", + "db:push": "pnpm drizzle-kit push", + "db:check": "pnpm drizzle-kit check", + "db:studio": "pnpm drizzle-kit studio", + "services:start": "docker compose up -d db redis dashboard", + "services:stop": "docker compose down dashboard redis db", + "worker": "dotenvx run -f .env -- tsx src/lib/worker.ts", + "controller": "dotenvx run -f .env -- tsx src/lib/controller.ts", + "dashboard": "tsx scripts/dashboard.ts" + }, + "dependencies": { + "@bull-board/api": "^6.10.1", + "@bull-board/express": "^6.10.1", + "@bull-board/ui": "^6.10.1", + "@roo-code/ipc": "workspace:^", + "@roo-code/types": "workspace:^", + "bullmq": "^5.37.0", + "drizzle-orm": "^0.44.1", + "execa": "^9.6.0", + "express": "^5.1.0", + "ioredis": "^5.4.3", + "next": "^15.2.5", + "p-wait-for": "^5.0.2", + "postgres": "^3.4.7", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "zod": "^3.25.41" + }, + "devDependencies": { + "@roo-code/config-eslint": "workspace:^", + "@roo-code/config-typescript": "workspace:^", + "@types/express": "^5.0.3", + "@types/node": "^22.15.20", + "@types/react": "^18.3.23", + "@types/react-dom": "^18.3.7", + "concurrently": "^9.1.0", + "drizzle-kit": "^0.31.1", + "tsx": "^4.19.3", + "vitest": "^2.1.8" + } +} diff --git a/apps/roomote/scripts/build.sh b/apps/roomote/scripts/build.sh new file mode 100755 index 0000000000..1bc54d1e26 --- /dev/null +++ b/apps/roomote/scripts/build.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Build script for roomote services. +# This ensures the base image is built before dependent services. + +set -e + +build_service() { + local service=$1 + + case $service in + "dashboard"|"api"|"worker"|"controller") + echo "Building base image first..." + docker compose build base + echo "Building $service..." + docker compose build $service + ;; + "base") + echo "Building base image..." + docker compose build base + ;; + *) + echo "Building $service..." + docker compose build $service + ;; + esac +} + +if [ $# -eq 0 ]; then + echo "Usage: $0 " + echo "Available services: base, dashboard, api, worker, controller, db, redis" + echo "Example: $0 dashboard" + exit 1 +fi + +build_service $1 + +echo "Build completed successfully!" diff --git a/apps/roomote/scripts/dashboard.ts b/apps/roomote/scripts/dashboard.ts new file mode 100644 index 0000000000..f43ba904b4 --- /dev/null +++ b/apps/roomote/scripts/dashboard.ts @@ -0,0 +1,20 @@ +import IORedis from "ioredis" +import { Queue } from "bullmq" +import { ExpressAdapter } from "@bull-board/express" +import { BullMQAdapter } from "@bull-board/api/bullMQAdapter" +import { createBullBoard } from "@bull-board/api" +import express from "express" +import type { Express, Request, Response } from "express" + +const redis = new IORedis(process.env.REDIS_URL || "redis://localhost:6380", { maxRetriesPerRequest: null }) +const queue = new Queue("roomote", { connection: redis }) + +const serverAdapter = new ExpressAdapter() +serverAdapter.setBasePath("/admin/queues") +createBullBoard({ queues: [new BullMQAdapter(queue)], serverAdapter }) + +const port = 3002 +const app: Express = express() +app.use("/admin/queues", serverAdapter.getRouter()) +app.use("/", (req: Request, res: Response) => res.redirect("/admin/queues")) +app.listen(port, () => console.log(`Bull Board running on: http://localhost:${port}/admin/queues`)) diff --git a/apps/roomote/scripts/enqueue-github-issue-job.sh b/apps/roomote/scripts/enqueue-github-issue-job.sh new file mode 100755 index 0000000000..5ec7448cc6 --- /dev/null +++ b/apps/roomote/scripts/enqueue-github-issue-job.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +REPO="RooCodeInc/Roo-Code" +ISSUE_NUMBER="$1" +BASE_URL="http://localhost:3001" +JOBS_ENDPOINT="$BASE_URL/api/jobs" + +if [ -z "$ISSUE_NUMBER" ]; then + echo "Usage: $0 [repo]" + echo "" + echo "Examples:" + echo " $0 4567 # Fetch issue #4567 from RooCodeInc/Roo-Code" + echo " $0 123 owner/repo # Fetch issue #123 from owner/repo" + echo "" + echo "This script fetches real GitHub issue data and enqueues it as a job." + exit 1 +fi + +if [ -n "$2" ]; then + REPO="$2" +fi + +if ! command -v gh &> /dev/null; then + echo "Error: GitHub CLI (gh) is not installed. Please install it first." + echo "Visit: https://cli.github.com/" + exit 1 +fi + +if ! gh auth status &> /dev/null; then + echo "Error: Not authenticated with GitHub CLI. Please run 'gh auth login' first." + exit 1 +fi + +if ! command -v jq &> /dev/null; then + echo "Error: jq is not installed. Please install it first." + echo "Visit: https://jqlang.github.io/jq/download/" + exit 1 +fi + +echo "Fetching issue #${ISSUE_NUMBER} from ${REPO}..." + +ISSUE_DATA=$(gh issue view ${ISSUE_NUMBER} --repo ${REPO} --json title,body,labels 2>/dev/null) + +if [ $? -ne 0 ]; then + echo "Error: Failed to fetch issue #${ISSUE_NUMBER} from ${REPO}" + echo "Please check that the issue exists and you have access to the repository." + exit 1 +fi + +TITLE=$(echo "$ISSUE_DATA" | jq -r '.title') +BODY=$(echo "$ISSUE_DATA" | jq -r '.body // ""') +LABELS=$(echo "$ISSUE_DATA" | jq -r '[.labels[].name] | @json') + +JSON_PAYLOAD=$(jq -n \ + --arg type "github.issue.fix" \ + --arg repo "$REPO" \ + --argjson issue "$ISSUE_NUMBER" \ + --arg title "$TITLE" \ + --arg body "$BODY" \ + --argjson labels "$LABELS" \ + '{ + type: $type, + payload: { + repo: $repo, + issue: $issue, + title: $title, + body: $body, + labels: $labels + } + }') + +echo "curl -X POST \"$JOBS_ENDPOINT\" -H \"Content-Type: application/json\" -d \"$JSON_PAYLOAD\" -w \"\nStatus: %{http_code}\n\n\"" + +curl -X POST "$JOBS_ENDPOINT" -H "Content-Type: application/json" -d "$JSON_PAYLOAD" -w "\nStatus: %{http_code}\n\n" diff --git a/apps/roomote/src/app/api/health/route.ts b/apps/roomote/src/app/api/health/route.ts new file mode 100644 index 0000000000..26afc264a8 --- /dev/null +++ b/apps/roomote/src/app/api/health/route.ts @@ -0,0 +1,30 @@ +import { NextResponse } from "next/server" + +import { db } from "@/db" +import { redis } from "@/lib" + +export async function GET() { + try { + const services = { database: false, redis: false } + + try { + await db.execute("SELECT 1") + services.database = true + } catch (error) { + console.error("Database health check failed:", error) + } + + try { + await redis.ping() + services.redis = true + } catch (error) { + console.error("Redis health check failed:", error) + } + + const allHealthy = Object.values(services).every(Boolean) + return NextResponse.json({ status: allHealthy ? "ok" : "error", services }, { status: allHealthy ? 200 : 500 }) + } catch (error) { + console.error("Health check error:", error) + return NextResponse.json({ status: "error", error: "Internal server error" }, { status: 500 }) + } +} diff --git a/apps/roomote/src/app/api/jobs/[id]/route.ts b/apps/roomote/src/app/api/jobs/[id]/route.ts new file mode 100644 index 0000000000..1299312c41 --- /dev/null +++ b/apps/roomote/src/app/api/jobs/[id]/route.ts @@ -0,0 +1,38 @@ +import { NextRequest, NextResponse } from "next/server" +import { eq } from "drizzle-orm" + +import { db, cloudJobs } from "@/db" + +type Params = Promise<{ id: string }> + +export async function GET(request: NextRequest, { params }: { params: Params }) { + try { + const { id } = await params + const jobId = parseInt(id, 10) + + if (isNaN(jobId)) { + return NextResponse.json({ error: "Invalid job ID" }, { status: 400 }) + } + + const [job] = await db.select().from(cloudJobs).where(eq(cloudJobs.id, jobId)).limit(1) + + if (!job) { + return NextResponse.json({ error: "Job not found" }, { status: 404 }) + } + + return NextResponse.json({ + id: job.id, + type: job.type, + status: job.status, + payload: job.payload, + result: job.result, + error: job.error, + createdAt: job.createdAt, + startedAt: job.startedAt, + completedAt: job.completedAt, + }) + } catch (error) { + console.error("Error fetching job:", error) + return NextResponse.json({ error: "Internal server error" }, { status: 500 }) + } +} diff --git a/apps/roomote/src/app/api/jobs/route.ts b/apps/roomote/src/app/api/jobs/route.ts new file mode 100644 index 0000000000..4838ffcffe --- /dev/null +++ b/apps/roomote/src/app/api/jobs/route.ts @@ -0,0 +1,42 @@ +import { NextRequest, NextResponse } from "next/server" +import { z } from "zod" + +import { createJobSchema } from "@/types" +import { db, cloudJobs } from "@/db" +import { enqueue } from "@/lib" + +export async function POST(request: NextRequest) { + try { + const body = await request.json() + const values = createJobSchema.parse(body) + + const [job] = await db + .insert(cloudJobs) + .values({ ...values, status: "pending" }) + .returning() + + if (!job) { + throw new Error("Failed to create `cloudJobs` record.") + } + + let enqueuedJob + + switch (values.type) { + case "github.issue.fix": + enqueuedJob = await enqueue({ jobId: job.id, ...values }) + break + default: + throw new Error(`Unknown job type: ${values.type}`) + } + + return NextResponse.json({ message: "job_enqueued", jobId: job.id, enqueuedJobId: enqueuedJob.id }) + } catch (error) { + console.error("Create Job Error:", error) + + if (error instanceof z.ZodError) { + return NextResponse.json({ error: "bad_request", details: error.errors }, { status: 400 }) + } + + return NextResponse.json({ error: "internal_server_error" }, { status: 500 }) + } +} diff --git a/apps/roomote/src/app/api/webhooks/github/route.ts b/apps/roomote/src/app/api/webhooks/github/route.ts new file mode 100644 index 0000000000..40322bcd4c --- /dev/null +++ b/apps/roomote/src/app/api/webhooks/github/route.ts @@ -0,0 +1,128 @@ +import { NextRequest, NextResponse } from "next/server" +import { createHmac } from "crypto" +import { z } from "zod" +import { eq } from "drizzle-orm" + +import { type JobType, type JobPayload, githubIssueWebhookSchema, githubPullRequestWebhookSchema } from "@/types" +import { db, cloudJobs } from "@/db" +import { enqueue } from "@/lib" +import { SlackNotifier } from "@/lib/slack" + +function verifySignature(body: string, signature: string, secret: string): boolean { + const expectedSignature = createHmac("sha256", secret).update(body, "utf8").digest("hex") + const receivedSignature = signature.replace("sha256=", "") + return expectedSignature === receivedSignature +} + +async function handleIssueEvent(body: string) { + const data = githubIssueWebhookSchema.parse(JSON.parse(body)) + const { action, repository, issue } = data + + if (action !== "opened") { + return NextResponse.json({ message: "action_ignored" }) + } + + console.log("🗄️ Issue Webhook ->", data) + + const type: JobType = "github.issue.fix" + + const payload: JobPayload = { + repo: repository.full_name, + issue: issue.number, + title: issue.title, + body: issue.body || "", + labels: issue.labels.map(({ name }) => name), + } + + const [job] = await db.insert(cloudJobs).values({ type, payload, status: "pending" }).returning() + + if (!job) { + throw new Error("Failed to create `cloudJobs` record.") + } + + const enqueuedJob = await enqueue({ jobId: job.id, type, payload }) + console.log("🔗 Enqueued job ->", enqueuedJob) + + return NextResponse.json({ message: "job_enqueued", jobId: job.id, enqueuedJobId: enqueuedJob.id }) +} + +async function handlePullRequestEvent(body: string) { + const data = githubPullRequestWebhookSchema.parse(JSON.parse(body)) + const { action, pull_request, repository } = data + + if (action !== "opened") { + return NextResponse.json({ message: "action_ignored" }) + } + + console.log("🗄️ PR Webhook ->", data) + + // Extract issue number from PR title or body (looking for "Fixes #123" pattern). + const issueNumberMatch = + pull_request.title.match(/(?:fixes|closes|resolves)\s+#(\d+)/i) || + (pull_request.body && pull_request.body.match(/(?:fixes|closes|resolves)\s+#(\d+)/i)) + + if (!issueNumberMatch) { + return NextResponse.json({ message: "no_issue_reference_found" }) + } + + const issueNumber = parseInt(issueNumberMatch[1]!, 10) + + // Find the job that corresponds to this issue. + const jobs = await db.select().from(cloudJobs).where(eq(cloudJobs.type, "github.issue.fix")) + + // Filter jobs to find the one matching this repo and issue. + const job = jobs.find((j) => { + const payload = j.payload as { repo: string; issue: number } + return payload.repo === repository.full_name && payload.issue === issueNumber + }) + + if (!job || !job.slackThreadTs) { + console.log("No job found or no slack thread for issue", issueNumber) + return NextResponse.json({ message: "no_job_or_slack_thread_found" }) + } + + // Post to Slack thread. + const slackNotifier = new SlackNotifier() + + await slackNotifier.postTaskUpdated( + job.slackThreadTs, + `🎉 Pull request created: <${pull_request.html_url}|PR #${pull_request.number}>\n*${pull_request.title}*`, + "success", + ) + + return NextResponse.json({ message: "slack_notification_sent" }) +} + +export async function POST(request: NextRequest) { + try { + const signature = request.headers.get("x-hub-signature-256") + + if (!signature) { + return NextResponse.json({ error: "missing_signature" }, { status: 400 }) + } + + const body = await request.text() + + if (!verifySignature(body, signature, process.env.GH_WEBHOOK_SECRET!)) { + return NextResponse.json({ error: "invalid_signature" }, { status: 401 }) + } + + const event = request.headers.get("x-github-event") + + if (event === "issues") { + return await handleIssueEvent(body) + } else if (event === "pull_request") { + return await handlePullRequestEvent(body) + } else { + return NextResponse.json({ message: "event_ignored" }) + } + } catch (error) { + console.error("GitHub Webhook Error:", error) + + if (error instanceof z.ZodError) { + return NextResponse.json({ error: "bad_request", details: error.errors }, { status: 400 }) + } + + return NextResponse.json({ error: "internal_server_error" }, { status: 500 }) + } +} diff --git a/apps/roomote/src/app/layout.tsx b/apps/roomote/src/app/layout.tsx new file mode 100644 index 0000000000..03b9311e65 --- /dev/null +++ b/apps/roomote/src/app/layout.tsx @@ -0,0 +1,14 @@ +import type { Metadata } from "next" + +export const metadata: Metadata = { + title: "Cloud Agents", + description: "Roo Code task execution service", +} + +export default function RootLayout({ children }: { children: React.ReactNode }) { + return ( + + {children} + + ) +} diff --git a/apps/roomote/src/app/page.tsx b/apps/roomote/src/app/page.tsx new file mode 100644 index 0000000000..0cbb883e46 --- /dev/null +++ b/apps/roomote/src/app/page.tsx @@ -0,0 +1,3 @@ +export default function Page() { + return
Hello, World!
+} diff --git a/apps/roomote/src/db/index.ts b/apps/roomote/src/db/index.ts new file mode 100644 index 0000000000..57fcedc8ec --- /dev/null +++ b/apps/roomote/src/db/index.ts @@ -0,0 +1,8 @@ +import { drizzle } from "drizzle-orm/postgres-js" +import postgres from "postgres" + +import { schema } from "./schema" + +export const db = drizzle(postgres(process.env.DATABASE_URL!, { prepare: false }), { schema }) + +export * from "./schema" diff --git a/apps/roomote/src/db/schema.ts b/apps/roomote/src/db/schema.ts new file mode 100644 index 0000000000..88fb0c6000 --- /dev/null +++ b/apps/roomote/src/db/schema.ts @@ -0,0 +1,34 @@ +import { pgTable, text, timestamp, integer, jsonb } from "drizzle-orm/pg-core" + +import type { JobType, JobStatus, JobPayload } from "@/types" + +/** + * cloudJobs + */ + +export const cloudJobs = pgTable("cloud_jobs", { + id: integer().primaryKey().generatedAlwaysAsIdentity(), + type: text().notNull().$type(), + status: text().notNull().default("pending").$type(), + payload: jsonb().notNull().$type(), + result: jsonb(), + error: text(), + slackThreadTs: text("slack_thread_ts"), + startedAt: timestamp("started_at"), + completedAt: timestamp("completed_at"), + createdAt: timestamp("created_at").notNull().defaultNow(), +}) + +export type CloudJob = typeof cloudJobs.$inferSelect + +export type InsertCloudJob = typeof cloudJobs.$inferInsert + +export type UpdateCloudJob = Partial> + +/** + * schema + */ + +export const schema = { + cloudJobs, +} diff --git a/apps/roomote/src/lib/__tests__/controller.test.ts b/apps/roomote/src/lib/__tests__/controller.test.ts new file mode 100644 index 0000000000..8131f15c19 --- /dev/null +++ b/apps/roomote/src/lib/__tests__/controller.test.ts @@ -0,0 +1,95 @@ +// npx vitest src/lib/__tests__/controller.test.ts + +import { describe, it, expect, vi, beforeEach, afterEach } from "vitest" + +const mockQueue = { + getWaiting: vi.fn(() => Promise.resolve([])), + getActive: vi.fn(() => Promise.resolve([])), + close: vi.fn(() => Promise.resolve()), + on: vi.fn(), +} + +const mockSpawn = vi.fn(() => ({ + stdout: { pipe: vi.fn() }, + stderr: { pipe: vi.fn() }, + on: vi.fn(), + unref: vi.fn(), +})) + +const mockCreateWriteStream = vi.fn(() => ({ + end: vi.fn(), +})) + +vi.mock("../redis", () => ({ + redis: { host: "localhost", port: 6379 }, +})) + +vi.mock("child_process", () => ({ + spawn: mockSpawn, +})) + +vi.mock("fs", () => ({ + default: { + existsSync: vi.fn(() => false), + createWriteStream: mockCreateWriteStream, + }, +})) + +const mockQueueConstructor = vi.fn(() => mockQueue) + +vi.mock("bullmq", () => ({ + Queue: mockQueueConstructor, +})) + +describe("WorkerController", () => { + let WorkerController: typeof import("../controller").WorkerController + + beforeEach(async () => { + vi.clearAllMocks() + const controllerModule = await import("../controller") + WorkerController = controllerModule.WorkerController + }) + + afterEach(() => { + vi.restoreAllMocks() + }) + + it("should create a Queue instance with correct configuration", () => { + const controller = new WorkerController() + + expect(mockQueueConstructor).toHaveBeenCalledWith("roomote", { + connection: { host: "localhost", port: 6379 }, + }) + + expect(controller).toBeDefined() + }) + + it("should handle queue monitoring without errors", async () => { + const controller = new WorkerController() + + await controller.start() + expect(controller).toBeDefined() + + await controller.stop() + expect(mockQueue.close).toHaveBeenCalled() + }) + + it("should handle worker spawning logic", () => { + const controller = new WorkerController() + expect(mockSpawn).toBeDefined() + expect(mockCreateWriteStream).toBeDefined() + expect(controller).toBeDefined() + }) + + it("should track running state correctly", async () => { + const controller = new WorkerController() + + expect(controller.isRunning).toBeFalsy() + + await controller.start() + expect(controller.isRunning).toBeTruthy() + + await controller.stop() + expect(controller.isRunning).toBeFalsy() + }) +}) diff --git a/apps/roomote/src/lib/controller.ts b/apps/roomote/src/lib/controller.ts new file mode 100644 index 0000000000..293e8d844d --- /dev/null +++ b/apps/roomote/src/lib/controller.ts @@ -0,0 +1,159 @@ +import { spawn } from "child_process" +import fs from "fs" +import { Queue } from "bullmq" + +import { redis } from "./redis" + +export class WorkerController { + private readonly POLL_INTERVAL_MS = 5000 + private readonly MAX_WORKERS = 5 + + private queue: Queue + public isRunning = false + private pollingInterval: NodeJS.Timeout | null = null + private activeWorkers = new Set() + + constructor() { + this.queue = new Queue("roomote", { connection: redis }) + } + + async start() { + if (this.isRunning) { + console.log("Controller is already running") + return + } + + this.isRunning = true + console.log("Worker controller started") + + await this.checkAndSpawnWorker() + + this.pollingInterval = setInterval(async () => { + await this.checkAndSpawnWorker() + }, this.POLL_INTERVAL_MS) + } + + async stop() { + if (!this.isRunning) { + return + } + + this.isRunning = false + console.log("Stopping worker controller...") + + if (this.pollingInterval) { + clearInterval(this.pollingInterval) + this.pollingInterval = null + } + + await this.queue.close() + console.log("Worker controller stopped") + } + + private async checkAndSpawnWorker() { + try { + const waiting = await this.queue.getWaiting() + const active = await this.queue.getActive() + + const waitingCount = waiting.length + const activeCount = active.length + + console.log( + `Queue status: ${waitingCount} waiting, ${activeCount} active, ${this.activeWorkers.size} spawned workers`, + ) + + if (waitingCount > 0 && this.activeWorkers.size < this.MAX_WORKERS) { + await this.spawnWorker() + } + } catch (error) { + console.error("Error checking queue status:", error) + } + } + + private async spawnWorker() { + const workerId = `worker-${Date.now()}` + + try { + console.log(`Spawning worker: ${workerId}`) + const isRunningInDocker = fs.existsSync("/.dockerenv") + + const dockerArgs = [ + `--name roomote-${workerId}`, + "--rm", + "--network roomote_default", + "-e HOST_EXECUTION_METHOD=docker", + `-e GH_TOKEN=${process.env.GH_TOKEN}`, + `-e DATABASE_URL=${process.env.DATABASE_URL}`, + `-e REDIS_URL=${process.env.REDIS_URL}`, + `-e NODE_ENV=${process.env.NODE_ENV}`, + "-v /var/run/docker.sock:/var/run/docker.sock", + "-v /tmp/roomote:/var/log/roomote", + ] + + const cliCommand = "pnpm worker" + + const command = isRunningInDocker + ? `docker run ${dockerArgs.join(" ")} roomote-worker sh -c "${cliCommand}"` + : cliCommand + + console.log("Spawning worker with command:", command) + + const childProcess = spawn("sh", ["-c", command], { + detached: true, + stdio: ["ignore", "pipe", "pipe"], + }) + + if (childProcess.stdout) { + childProcess.stdout.on("data", (data) => { + console.log(data.toString()) + }) + } + + if (childProcess.stderr) { + childProcess.stderr.on("data", (data) => { + console.error(data.toString()) + }) + } + + this.activeWorkers.add(workerId) + + childProcess.on("exit", (code) => { + console.log(`Worker ${workerId} exited with code ${code}`) + this.activeWorkers.delete(workerId) + }) + + childProcess.on("error", (error) => { + console.error(`Worker ${workerId} error:`, error) + this.activeWorkers.delete(workerId) + }) + + // Detach the process so it can run independently. + childProcess.unref() + } catch (error) { + console.error(`Failed to spawn worker ${workerId}:`, error) + this.activeWorkers.delete(workerId) + } + } +} + +// Only run if this file is executed directly (not imported). +if (import.meta.url === `file://${process.argv[1]}`) { + const controller = new WorkerController() + + process.on("SIGTERM", async () => { + console.log("SIGTERM -> shutting down controller gracefully...") + await controller.stop() + process.exit(0) + }) + + process.on("SIGINT", async () => { + console.log("SIGINT -> shutting down controller gracefully...") + await controller.stop() + process.exit(0) + }) + + controller.start().catch((error) => { + console.error("Failed to start controller:", error) + process.exit(1) + }) +} diff --git a/apps/roomote/src/lib/index.ts b/apps/roomote/src/lib/index.ts new file mode 100644 index 0000000000..2e5ea80e16 --- /dev/null +++ b/apps/roomote/src/lib/index.ts @@ -0,0 +1,2 @@ +export { redis } from "./redis" +export { enqueue } from "./queue" diff --git a/apps/roomote/src/lib/job.ts b/apps/roomote/src/lib/job.ts new file mode 100644 index 0000000000..cc6e15dc23 --- /dev/null +++ b/apps/roomote/src/lib/job.ts @@ -0,0 +1,69 @@ +import { eq } from "drizzle-orm" +import { Job } from "bullmq" + +import { db, cloudJobs, type UpdateCloudJob } from "@/db" +import type { JobType, JobStatus, JobParams } from "@/types" + +import { fixGitHubIssue } from "./jobs/fixGitHubIssue" + +export async function processJob({ data: { type, payload, jobId }, ...job }: Job>) { + console.log(`[${job.name} | ${job.id}] Processing job ${jobId} of type ${type}`) + + try { + let result: unknown + + switch (type) { + case "github.issue.fix": + result = await fixGitHubIssue(payload, { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + onTaskStarted: async (slackThreadTs: string | null, _rooTaskId: string) => { + if (slackThreadTs) { + await updateJobStatus(jobId, "processing", undefined, undefined, slackThreadTs) + } + }, + }) + + break + default: + throw new Error(`Unknown job type: ${type}`) + } + + await updateJobStatus(jobId, "completed", result) + console.log(`[${job.name} | ${job.id}] Job ${jobId} completed successfully`) + } catch (error) { + console.error(`[${job.name} | ${job.id}] Job ${jobId} failed:`, error) + const errorMessage = error instanceof Error ? error.message : String(error) + await updateJobStatus(jobId, "failed", undefined, errorMessage) + throw error // Re-throw to mark job as failed in BullMQ. + } +} + +async function updateJobStatus( + jobId: number, + status: JobStatus, + result?: unknown, + error?: string, + slackThreadTs?: string, +) { + const values: UpdateCloudJob = { status } + + if (status === "processing") { + values.startedAt = new Date() + } else if (status === "completed" || status === "failed") { + values.completedAt = new Date() + + if (result) { + values.result = result + } + + if (error) { + values.error = error + } + } + + if (slackThreadTs) { + values.slackThreadTs = slackThreadTs + } + + await db.update(cloudJobs).set(values).where(eq(cloudJobs.id, jobId)) +} diff --git a/apps/roomote/src/lib/jobs/fixGitHubIssue.ts b/apps/roomote/src/lib/jobs/fixGitHubIssue.ts new file mode 100644 index 0000000000..3c22b8d9a8 --- /dev/null +++ b/apps/roomote/src/lib/jobs/fixGitHubIssue.ts @@ -0,0 +1,55 @@ +import * as path from "path" +import * as os from "node:os" + +import type { JobType, JobPayload } from "@/types" + +import { runTask, type RunTaskCallbacks } from "../runTask" +import { Logger } from "../logger" + +const jobType: JobType = "github.issue.fix" + +type FixGitHubIssueJobPayload = JobPayload<"github.issue.fix"> + +export async function fixGitHubIssue( + jobPayload: FixGitHubIssueJobPayload, + callbacks?: RunTaskCallbacks, +): Promise<{ + repo: string + issue: number + result: unknown +}> { + const prompt = ` +Fix the following GitHub issue: + +Repository: ${jobPayload.repo} +Issue #${jobPayload.issue}: ${jobPayload.title} + +Description: +${jobPayload.body} + +${jobPayload.labels && jobPayload.labels.length > 0 ? `Labels: ${jobPayload.labels.join(", ")}` : ""} + +Please analyze the issue, understand what needs to be fixed, and implement a solution. + +When you're finished: +- Create a git branch to store your work (git checkout -b fix-${jobPayload.issue}) +- Commit your changes to this branch (git commit -m "Fixes #${jobPayload.issue}") +- Push your branch to the remote repository (git push --set-upstream origin fix-${jobPayload.issue}) +- Submit a pull request using the "gh" command line tool (gh pr create --title "Fixes #${jobPayload.issue}\n\n[Your PR description here.]" --fill) + +Your job isn't done until you've created a pull request. Try to solve any git issues that arise while creating your branch and submitting your pull request. +`.trim() + + const { repo, issue } = jobPayload + + const result = await runTask({ + jobType, + jobPayload, + prompt, + publish: async () => {}, + logger: new Logger({ logDir: path.resolve(os.tmpdir(), "logs"), filename: "worker.log", tag: "worker" }), + callbacks, + }) + + return { repo, issue, result } +} diff --git a/apps/roomote/src/lib/logger.ts b/apps/roomote/src/lib/logger.ts new file mode 100644 index 0000000000..e185803ea1 --- /dev/null +++ b/apps/roomote/src/lib/logger.ts @@ -0,0 +1,86 @@ +import * as fs from "fs" +import * as path from "path" + +enum LogLevel { + INFO = "INFO", + ERROR = "ERROR", + WARN = "WARN", + DEBUG = "DEBUG", +} + +interface LoggerOptions { + logDir: string + filename: string + tag: string +} + +export class Logger { + private logStream: fs.WriteStream | undefined + private logFilePath: string + private tag: string + + constructor({ logDir, filename, tag }: LoggerOptions) { + this.tag = tag + this.logFilePath = path.join(logDir, filename) + this.initializeLogger(logDir) + } + + private initializeLogger(logDir: string): void { + try { + fs.mkdirSync(logDir, { recursive: true }) + } catch (error) { + console.error(`Failed to create log directory ${logDir}:`, error) + } + + try { + this.logStream = fs.createWriteStream(this.logFilePath, { flags: "a" }) + } catch (error) { + console.error(`Failed to create log file ${this.logFilePath}:`, error) + } + } + + private writeToLog(level: LogLevel, message: string, ...args: unknown[]) { + try { + const timestamp = new Date().toISOString() + + const logLine = `[${timestamp} | ${level} | ${this.tag}] ${message} ${ + args.length > 0 ? JSON.stringify(args) : "" + }\n` + + console.log(logLine.trim()) + + if (this.logStream) { + this.logStream.write(logLine) + } + } catch (error) { + console.error(`Failed to write to log file ${this.logFilePath}:`, error) + } + } + + public info(message: string, ...args: unknown[]): void { + this.writeToLog(LogLevel.INFO, message, ...args) + } + + public error(message: string, ...args: unknown[]): void { + this.writeToLog(LogLevel.ERROR, message, ...args) + } + + public warn(message: string, ...args: unknown[]): void { + this.writeToLog(LogLevel.WARN, message, ...args) + } + + public debug(message: string, ...args: unknown[]): void { + this.writeToLog(LogLevel.DEBUG, message, ...args) + } + + public log(message: string, ...args: unknown[]): void { + this.info(message, ...args) + } + + public close(): void { + if (this.logStream) { + this.logStream.end() + this.logStream = undefined + } + } +} diff --git a/apps/roomote/src/lib/queue.ts b/apps/roomote/src/lib/queue.ts new file mode 100644 index 0000000000..2afef68a12 --- /dev/null +++ b/apps/roomote/src/lib/queue.ts @@ -0,0 +1,19 @@ +import { Queue, Job } from "bullmq" + +import type { JobTypes, JobPayload, JobParams } from "@/types" + +import { redis } from "./redis" + +const queue = new Queue("roomote", { + connection: redis, + defaultJobOptions: { + removeOnComplete: 100, + removeOnFail: 50, + attempts: 3, + backoff: { type: "exponential", delay: 2000 }, + }, +}) + +export async function enqueue(params: JobParams): Promise>> { + return queue.add(params.type, params, { jobId: `${params.type}-${params.jobId}` }) +} diff --git a/apps/roomote/src/lib/redis.ts b/apps/roomote/src/lib/redis.ts new file mode 100644 index 0000000000..c29477b27b --- /dev/null +++ b/apps/roomote/src/lib/redis.ts @@ -0,0 +1,5 @@ +import IORedis from "ioredis" + +export const redis = new IORedis(process.env.REDIS_URL || "redis://localhost:6379", { + maxRetriesPerRequest: null, +}) diff --git a/apps/roomote/src/lib/runTask.ts b/apps/roomote/src/lib/runTask.ts new file mode 100644 index 0000000000..84aa2c97c4 --- /dev/null +++ b/apps/roomote/src/lib/runTask.ts @@ -0,0 +1,274 @@ +import * as path from "path" +import * as os from "node:os" +import * as crypto from "node:crypto" + +import pWaitFor from "p-wait-for" +import { execa } from "execa" + +import { type TaskEvent, TaskCommandName, RooCodeEventName, IpcMessageType, EVALS_SETTINGS } from "@roo-code/types" +import { IpcClient } from "@roo-code/ipc" + +import type { JobPayload, JobType } from "@/types" + +import { Logger } from "./logger" +import { isDockerContainer } from "./utils" +import { SlackNotifier } from "./slack" + +const TIMEOUT = 30 * 60 * 1_000 + +class SubprocessTimeoutError extends Error { + constructor(timeout: number) { + super(`Subprocess timeout after ${timeout}ms`) + this.name = "SubprocessTimeoutError" + } +} + +export type RunTaskCallbacks = { + onTaskStarted?: (slackThreadTs: string | null, rooTaskId: string) => Promise + onTaskAborted?: (slackThreadTs: string | null) => Promise + onTaskCompleted?: ( + slackThreadTs: string | null, + success: boolean, + duration: number, + rooTaskId?: string, + ) => Promise + onTaskTimedOut?: (slackThreadTs: string | null) => Promise + onClientDisconnected?: (slackThreadTs: string | null) => Promise +} + +type RunTaskOptions = { + jobType: T + jobPayload: JobPayload + prompt: string + publish: (taskEvent: TaskEvent) => Promise + logger: Logger + callbacks?: RunTaskCallbacks +} + +export const runTask = async ({ + jobType, + jobPayload, + prompt, + publish, + logger, + callbacks, +}: RunTaskOptions) => { + const workspacePath = "/roo/repos/Roo-Code" // findGitRoot(process.cwd()) + const ipcSocketPath = path.resolve(os.tmpdir(), `${crypto.randomUUID().slice(0, 8)}.sock`) + const env = { ROO_CODE_IPC_SOCKET_PATH: ipcSocketPath } + const controller = new AbortController() + const cancelSignal = controller.signal + const containerized = isDockerContainer() + + const codeCommand = containerized + ? `xvfb-run --auto-servernum --server-num=1 code --wait --log trace --disable-workspace-trust --disable-gpu --disable-lcd-text --no-sandbox --user-data-dir /roo/.vscode --password-store="basic" -n ${workspacePath}` + : `code --disable-workspace-trust -n ${workspacePath}` + + logger.info(codeCommand) + + // Sleep for a random amount of time between 5 and 10 seconds, unless we're + // running in a container, in which case there are no issues with flooding + // VSCode with new windows. + if (!containerized) { + await new Promise((resolve) => setTimeout(resolve, Math.random() * 5_000 + 5_000)) + } + + const subprocess = execa({ env, shell: "/bin/bash", cancelSignal })`${codeCommand}` + + // If debugging, add `--verbose` to `command` and uncomment the following line. + // subprocess.stdout.pipe(process.stdout) + + // Give VSCode some time to spawn before connecting to its unix socket. + await new Promise((resolve) => setTimeout(resolve, 3_000)) + let client: IpcClient | undefined = undefined + let attempts = 5 + + while (true) { + try { + client = new IpcClient(ipcSocketPath) + await pWaitFor(() => client!.isReady, { interval: 250, timeout: 1_000 }) + break + } catch (_error) { + client?.disconnect() + attempts-- + + if (attempts <= 0) { + logger.error(`unable to connect to IPC socket -> ${ipcSocketPath}`) + throw new Error("Unable to connect.") + } + } + } + + let taskStartedAt = Date.now() + let taskFinishedAt: number | undefined + let taskAbortedAt: number | undefined + let taskTimedOut: boolean = false + let rooTaskId: string | undefined + let isClientDisconnected = false + + const slackNotifier = new SlackNotifier(logger) + let slackThreadTs: string | null = null + + const ignoreEvents: Record<"broadcast" | "log", RooCodeEventName[]> = { + broadcast: [RooCodeEventName.Message], + log: [RooCodeEventName.TaskTokenUsageUpdated, RooCodeEventName.TaskAskResponded], + } + + client.on(IpcMessageType.TaskEvent, async (taskEvent) => { + const { eventName, payload } = taskEvent + + // Publish all events except for these to Redis. + if (!ignoreEvents.broadcast.includes(eventName)) { + await publish({ ...taskEvent }) + } + + // Log all events except for these. + // For message events we only log non-partial messages. + if ( + !ignoreEvents.log.includes(eventName) && + (eventName !== RooCodeEventName.Message || payload[0].message.partial !== true) + ) { + logger.info(`${eventName} ->`, payload) + } + + if (eventName === RooCodeEventName.TaskStarted) { + taskStartedAt = Date.now() + rooTaskId = payload[0] + + if (rooTaskId) { + slackThreadTs = await slackNotifier.postTaskStarted({ jobType, jobPayload, rooTaskId }) + + if (callbacks?.onTaskStarted) { + await callbacks.onTaskStarted(slackThreadTs, rooTaskId) + } + } + } + + if (eventName === RooCodeEventName.TaskAborted) { + taskAbortedAt = Date.now() + + if (slackThreadTs) { + await slackNotifier.postTaskUpdated(slackThreadTs, "Task was aborted", "warning") + } + + if (callbacks?.onTaskAborted) { + await callbacks.onTaskAborted(slackThreadTs) + } + } + + if (eventName === RooCodeEventName.TaskCompleted) { + taskFinishedAt = Date.now() + + if (slackThreadTs) { + await slackNotifier.postTaskCompleted(slackThreadTs, true, taskFinishedAt - taskStartedAt, rooTaskId) + } + + if (callbacks?.onTaskCompleted) { + await callbacks.onTaskCompleted(slackThreadTs, true, taskFinishedAt - taskStartedAt, rooTaskId) + } + } + }) + + client.on(IpcMessageType.Disconnect, async () => { + logger.info(`disconnected from IPC socket -> ${ipcSocketPath}`) + isClientDisconnected = true + }) + + client.sendCommand({ + commandName: TaskCommandName.StartNewTask, + data: { + configuration: { + ...EVALS_SETTINGS, + openRouterApiKey: process.env.OPENROUTER_API_KEY, + }, + text: prompt, + newTab: true, + }, + }) + + try { + await pWaitFor(() => !!taskFinishedAt || !!taskAbortedAt || isClientDisconnected, { + interval: 1_000, + timeout: TIMEOUT, + }) + } catch (_error) { + taskTimedOut = true + logger.error("time limit reached") + + if (slackThreadTs) { + await slackNotifier.postTaskUpdated(slackThreadTs, "Task timed out after 30 minutes", "error") + } + + if (callbacks?.onTaskTimedOut) { + await callbacks.onTaskTimedOut(slackThreadTs) + } + + if (rooTaskId && !isClientDisconnected) { + logger.info("cancelling task") + client.sendCommand({ commandName: TaskCommandName.CancelTask, data: rooTaskId }) + await new Promise((resolve) => setTimeout(resolve, 5_000)) // Allow some time for the task to cancel. + } + + taskFinishedAt = Date.now() + } + + if (!taskFinishedAt && !taskTimedOut) { + logger.error("client disconnected before task finished") + + if (slackThreadTs) { + await slackNotifier.postTaskUpdated(slackThreadTs, "Client disconnected before task completion", "error") + } + + if (callbacks?.onClientDisconnected) { + await callbacks.onClientDisconnected(slackThreadTs) + } + + throw new Error("Client disconnected before task completion.") + } + + if (rooTaskId && !isClientDisconnected) { + logger.info("closing task") + client.sendCommand({ commandName: TaskCommandName.CloseTask, data: rooTaskId }) + await new Promise((resolve) => setTimeout(resolve, 2_000)) // Allow some time for the window to close. + } + + if (!isClientDisconnected) { + logger.info("disconnecting client") + client.disconnect() + } + + logger.info("waiting for subprocess to finish") + controller.abort() + + // Wait for subprocess to finish gracefully, with a timeout. + const SUBPROCESS_TIMEOUT = 10_000 + + try { + await Promise.race([ + subprocess, + new Promise((_, reject) => + setTimeout(() => reject(new SubprocessTimeoutError(SUBPROCESS_TIMEOUT)), SUBPROCESS_TIMEOUT), + ), + ]) + + logger.info("subprocess finished gracefully") + } catch (error) { + if (error instanceof SubprocessTimeoutError) { + logger.error("subprocess did not finish within timeout, force killing") + + try { + if (subprocess.kill("SIGKILL")) { + logger.info("SIGKILL sent to subprocess") + } else { + logger.error("failed to send SIGKILL to subprocess") + } + } catch (killError) { + logger.error("subprocess.kill(SIGKILL) failed:", killError) + } + } else { + throw error + } + } + + logger.close() +} diff --git a/apps/roomote/src/lib/slack.ts b/apps/roomote/src/lib/slack.ts new file mode 100644 index 0000000000..b7502810ab --- /dev/null +++ b/apps/roomote/src/lib/slack.ts @@ -0,0 +1,135 @@ +import { JobPayload, JobType } from "@/types" +import { Logger } from "./logger" + +export interface SlackMessage { + text: string + blocks?: unknown[] + attachments?: unknown[] + thread_ts?: string + channel?: string +} + +export interface SlackResponse { + ok: boolean + channel?: string + ts?: string + error?: string + message?: Record +} + +export class SlackNotifier { + private readonly logger?: Logger + private readonly token: string + + constructor(logger?: Logger, token: string = process.env.SLACK_API_TOKEN!) { + this.logger = logger + this.token = token + } + + private async postMessage(message: SlackMessage): Promise { + try { + const messageWithChannel = { ...message, channel: message.channel || "#roomote-control" } + + const response = await fetch("https://slack.com/api/chat.postMessage", { + method: "POST", + headers: { "Content-Type": "application/json", Authorization: `Bearer ${this.token}` }, + body: JSON.stringify(messageWithChannel), + }) + + if (!response.ok) { + this.logger?.error(`Slack API failed: ${response.status} ${response.statusText}`) + return null + } + + const result: SlackResponse = await response.json() + + if (!result.ok) { + this.logger?.error(`Slack API error: ${result.error}`) + } + + return result.ts ?? null + } catch (error) { + this.logger?.error("Failed to send Slack message:", error) + return null + } + } + + public async postTaskStarted({ + jobType, + jobPayload, + rooTaskId, + }: { + jobType: T + jobPayload: JobPayload + rooTaskId: string + }) { + switch (jobType) { + case "github.issue.fix": + return await this.postMessage({ + text: `🚀 Task Started`, + blocks: [ + { + type: "section", + text: { + type: "mrkdwn", + text: `🚀 *Task Started*\nCreating a pull request for `, + }, + }, + { + type: "context", + elements: [ + { + type: "mrkdwn", + text: `jobType: ${jobType}, rooTaskId: ${rooTaskId}`, + }, + ], + }, + ], + }) + default: + throw new Error(`Unknown job type: ${jobType}`) + } + } + + public async postTaskUpdated( + threadTs: string, + text: string, + status?: "info" | "success" | "warning" | "error", + ): Promise { + const emoji = { info: "ℹ️", success: "✅", warning: "⚠️", error: "❌" }[status || "info"] + await this.postMessage({ text: `${emoji} ${text}`, thread_ts: threadTs }) + } + + public async postTaskCompleted( + threadTs: string, + success: boolean, + duration: number, + taskId?: string, + ): Promise { + const status = success ? "✅ Completed" : "❌ Failed" + const durationText = `${Math.round(duration / 1000)}s` + + await this.postMessage({ + text: `${status} Task finished in ${durationText}`, + blocks: [ + { + type: "section", + text: { + type: "mrkdwn", + text: `*${status}*\n*Task ID:* ${taskId || "Unknown"}\n*Duration:* ${durationText}`, + }, + }, + { + type: "context", + elements: [ + { + type: "mrkdwn", + text: `Finished at: `, + }, + ], + }, + ], + thread_ts: threadTs, + }) + } +} diff --git a/apps/roomote/src/lib/utils.ts b/apps/roomote/src/lib/utils.ts new file mode 100644 index 0000000000..53ab51ed63 --- /dev/null +++ b/apps/roomote/src/lib/utils.ts @@ -0,0 +1,37 @@ +import * as fs from "fs" +import * as path from "path" + +export const isDockerContainer = () => { + try { + return fs.existsSync("/.dockerenv") + } catch (_error) { + return false + } +} + +/** + * Traverses up the directory tree to find an ancestor directory that contains a .git directory + * @param startPath The starting directory path + * @returns The path to the git repository root + * @throws Error if no .git directory is found + */ +export const findGitRoot = (startPath: string): string => { + let currentPath = path.resolve(startPath) + const root = path.parse(currentPath).root + + while (currentPath !== root) { + const gitPath = path.join(currentPath, ".git") + if (fs.existsSync(gitPath) && fs.statSync(gitPath).isDirectory()) { + return currentPath + } + currentPath = path.dirname(currentPath) + } + + const gitPath = path.join(root, ".git") + + if (fs.existsSync(gitPath) && fs.statSync(gitPath).isDirectory()) { + return root + } + + throw new Error("No .git directory found in any ancestor directory") +} diff --git a/apps/roomote/src/lib/worker.ts b/apps/roomote/src/lib/worker.ts new file mode 100644 index 0000000000..d8e9609062 --- /dev/null +++ b/apps/roomote/src/lib/worker.ts @@ -0,0 +1,72 @@ +import { Worker } from "bullmq" + +import { redis } from "./redis" +import { processJob } from "./job" + +// docker compose build worker +// docker run \ +// --name roomote-worker \ +// --rm \ +// --interactive \ +// --tty \ +// --network roomote_default \ +// -e HOST_EXECUTION_METHOD=docker \ +// -e GH_TOKEN=$GH_TOKEN \ +// -e DATABASE_URL=postgresql://postgres:password@db:5432/cloud_agents \ +// -e REDIS_URL=redis://redis:6379 \ +// -e NODE_ENV=production \ +// -v /var/run/docker.sock:/var/run/docker.sock \ +// -v /tmp/roomote:/var/log/roomote \ +// roomote-worker sh -c "bash" + +async function processSingleJob() { + const worker = new Worker("roomote", undefined, { + autorun: false, + connection: redis, + lockDuration: 30 * 60 * 1_000, // 30 minutes + }) + + const token = crypto.randomUUID() + + try { + const job = await worker.getNextJob(token) + + if (!job) { + console.log("No jobs available, exiting...") + await worker.close() + process.exit(0) + } + + console.log(`Processing job ${job.id}...`) + + try { + await processJob(job) + await job.moveToCompleted(undefined, token, false) + console.log(`Job ${job.id} completed successfully`) + } catch (error) { + await job.moveToFailed(error as Error, token, false) + console.error(`Job ${job.id} failed:`, error) + } + } catch (error) { + console.error("Error processing job:", error) + } finally { + await worker.close() + process.exit(0) + } +} + +process.on("SIGTERM", async () => { + console.log("SIGTERM -> shutting down gracefully...") + process.exit(0) +}) + +process.on("SIGINT", async () => { + console.log("SIGINT -> shutting down gracefully...") + process.exit(0) +}) + +if (!process.env.GH_TOKEN) { + throw new Error("GH_TOKEN is not set") +} + +processSingleJob() diff --git a/apps/roomote/src/types/index.ts b/apps/roomote/src/types/index.ts new file mode 100644 index 0000000000..d86334a24c --- /dev/null +++ b/apps/roomote/src/types/index.ts @@ -0,0 +1,76 @@ +import { z } from "zod" + +export interface JobTypes { + "github.issue.fix": { + repo: string + issue: number + title: string + body: string + labels?: string[] + } +} + +export type JobType = keyof JobTypes + +export type JobStatus = "pending" | "processing" | "completed" | "failed" + +export type JobPayload = JobTypes[T] + +export type JobParams = { + jobId: number + type: T + payload: JobPayload +} + +/** + * CreateJob + */ + +export const createJobSchema = z.discriminatedUnion("type", [ + z.object({ + type: z.literal("github.issue.fix"), + payload: z.object({ + repo: z.string(), + issue: z.number(), + title: z.string(), + body: z.string(), + labels: z.array(z.string()).optional(), + }), + }), +]) + +export type CreateJob = z.infer + +/** + * GitHubWebhook + */ + +export const githubIssueWebhookSchema = z.object({ + action: z.string(), + issue: z.object({ + number: z.number(), + title: z.string(), + body: z.string().nullable(), + labels: z.array(z.object({ name: z.string() })), + }), + repository: z.object({ + full_name: z.string(), + }), +}) + +export type GitHubIssueWebhook = z.infer + +export const githubPullRequestWebhookSchema = z.object({ + action: z.string(), + pull_request: z.object({ + number: z.number(), + title: z.string(), + body: z.string().nullable(), + html_url: z.string(), + }), + repository: z.object({ + full_name: z.string(), + }), +}) + +export type GitHubPullRequestWebhook = z.infer diff --git a/apps/roomote/tsconfig.json b/apps/roomote/tsconfig.json new file mode 100644 index 0000000000..75ccc2980d --- /dev/null +++ b/apps/roomote/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@roo-code/config-typescript/nextjs.json", + "compilerOptions": { + "paths": { "@/*": ["./src/*"] } + }, + "include": ["next-env.d.ts", "src/**/*.ts", "src/**/*.tsx", ".next/types/**/*.ts", "drizzle.config.ts"], + "exclude": ["node_modules"] +} diff --git a/apps/roomote/vitest.config.ts b/apps/roomote/vitest.config.ts new file mode 100644 index 0000000000..82d55b4ba9 --- /dev/null +++ b/apps/roomote/vitest.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from "vitest/config" +import path from "path" + +export default defineConfig({ + test: { + environment: "node", + globals: true, + watch: false, + }, + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +}) diff --git a/apps/web-evals/package.json b/apps/web-evals/package.json index eddf5d6340..69d0571c43 100644 --- a/apps/web-evals/package.json +++ b/apps/web-evals/package.json @@ -8,7 +8,8 @@ "dev": "scripts/check-services.sh && next dev", "format": "prettier --write src", "build": "next build", - "start": "next start" + "start": "next start", + "clean": "rimraf .next .turbo" }, "dependencies": { "@hookform/resolvers": "^5.1.1", diff --git a/locales/ca/README.md b/locales/ca/README.md index 32b916dcb8..2696d5acea 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -181,38 +181,40 @@ Ens encanten les contribucions de la comunitat! Comenceu llegint el nostre [CONT Gràcies a tots els nostres col·laboradors que han ajudat a millorar Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Llicència diff --git a/locales/de/README.md b/locales/de/README.md index 2cf784c83a..a29482988e 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -181,38 +181,40 @@ Wir lieben Community-Beiträge! Beginnen Sie mit dem Lesen unserer [CONTRIBUTING Danke an alle unsere Mitwirkenden, die geholfen haben, Roo Code zu verbessern! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Lizenz diff --git a/locales/es/README.md b/locales/es/README.md index 05083f12a3..e15daabcd7 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -181,38 +181,40 @@ Usamos [changesets](https://github.com/changesets/changesets) para versionar y p ¡Gracias a todos nuestros colaboradores que han ayudado a mejorar Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Licencia diff --git a/locales/fr/README.md b/locales/fr/README.md index 0aa7803fe0..2d811e2a7c 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -181,38 +181,40 @@ Nous adorons les contributions de la communauté ! Commencez par lire notre [CON Merci à tous nos contributeurs qui ont aidé à améliorer Roo Code ! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Licence diff --git a/locales/hi/README.md b/locales/hi/README.md index ea858d9103..61730f5455 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -181,38 +181,40 @@ code --install-extension bin/roo-cline-.vsix Roo Code को बेहतर बनाने में मदद करने वाले हमारे सभी योगदानकर्ताओं को धन्यवाद! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## लाइसेंस diff --git a/locales/id/README.md b/locales/id/README.md index 5e6cf614e0..b53b1dde03 100644 --- a/locales/id/README.md +++ b/locales/id/README.md @@ -175,38 +175,40 @@ Kami menyukai kontribusi komunitas! Mulai dengan membaca [CONTRIBUTING.md](CONTR Terima kasih kepada semua kontributor kami yang telah membantu membuat Roo Code lebih baik! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## License diff --git a/locales/it/README.md b/locales/it/README.md index 4e0d019ca8..9eee9ed218 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -181,38 +181,40 @@ Amiamo i contributi della community! Inizia leggendo il nostro [CONTRIBUTING.md] Grazie a tutti i nostri contributori che hanno aiutato a migliorare Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Licenza diff --git a/locales/ja/README.md b/locales/ja/README.md index ba00310f79..37bb6621a0 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -181,38 +181,40 @@ code --install-extension bin/roo-cline-.vsix Roo Codeの改善に貢献してくれたすべての貢献者に感謝します! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## ライセンス diff --git a/locales/ko/README.md b/locales/ko/README.md index f439588142..f16bb5bd33 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -181,38 +181,40 @@ code --install-extension bin/roo-cline-.vsix Roo Code를 더 좋게 만드는 데 도움을 준 모든 기여자에게 감사드립니다! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## 라이선스 diff --git a/locales/nl/README.md b/locales/nl/README.md index a52efdb1eb..6aeda32ebd 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -181,38 +181,40 @@ We houden van bijdragen uit de community! Begin met het lezen van onze [CONTRIBU Dank aan alle bijdragers die Roo Code beter hebben gemaakt! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Licentie diff --git a/locales/pl/README.md b/locales/pl/README.md index b074b34675..cecd69b2d4 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -181,38 +181,40 @@ Kochamy wkład społeczności! Zacznij od przeczytania naszego [CONTRIBUTING.md] Dziękujemy wszystkim naszym współtwórcom, którzy pomogli ulepszyć Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Licencja diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index ce887b6aa5..492f608498 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -181,38 +181,40 @@ Adoramos contribuições da comunidade! Comece lendo nosso [CONTRIBUTING.md](CON Obrigado a todos os nossos contribuidores que ajudaram a tornar o Roo Code melhor! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Licença diff --git a/locales/ru/README.md b/locales/ru/README.md index 1c62495472..d1109196dd 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -181,38 +181,40 @@ code --install-extension bin/roo-cline-.vsix Спасибо всем нашим участникам, которые помогли сделать Roo Code лучше! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Лицензия diff --git a/locales/tr/README.md b/locales/tr/README.md index b528fa31d8..271b996481 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -181,38 +181,40 @@ Topluluk katkılarını seviyoruz! [CONTRIBUTING.md](CONTRIBUTING.md) dosyasın Roo Code'u daha iyi hale getirmeye yardımcı olan tüm katkıda bulunanlara teşekkür ederiz! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Lisans diff --git a/locales/vi/README.md b/locales/vi/README.md index b8e85d4250..5782227ea7 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -181,38 +181,40 @@ Chúng tôi rất hoan nghênh đóng góp từ cộng đồng! Bắt đầu b Cảm ơn tất cả những người đóng góp đã giúp cải thiện Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## Giấy Phép diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index 0d726f2fe2..2b1d357ab0 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -181,38 +181,40 @@ code --install-extension bin/roo-cline-.vsix 感谢所有帮助改进 Roo Code 的贡献者! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## 许可证 diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index 30987c4fe8..e5d8a1010e 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -182,38 +182,40 @@ code --install-extension bin/roo-cline-.vsix 感謝所有幫助改進 Roo Code 的貢獻者! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| -|:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|jr
jr
| -|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|elianiva
elianiva
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -|monotykamary
monotykamary
|cannuri
cannuri
|zhangtony239
zhangtony239
|qdaxb
qdaxb
|feifei325
feifei325
|xyOz-dev
xyOz-dev
| -|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|vigneshsubbiah16
vigneshsubbiah16
|dtrugman
dtrugman
|Szpadel
Szpadel
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|kiwina
kiwina
|aheizi
aheizi
| -|PeterDaveHello
PeterDaveHello
|olweraltuve
olweraltuve
|chrarnoldus
chrarnoldus
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
| -|afshawnlotfi
afshawnlotfi
|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
| -|taylorwilsdon
taylorwilsdon
|StevenTCramer
StevenTCramer
|sammcj
sammcj
|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
| -|hassoncs
hassoncs
|aitoroses
aitoroses
|anton-otee
anton-otee
|SannidhyaSah
SannidhyaSah
|heyseth
heyseth
|taisukeoe
taisukeoe
| -|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
| -|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
| -|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
| -|jcbdev
jcbdev
|mr-ryan-james
mr-ryan-james
|ross
ross
|philfung
philfung
|napter
napter
|Chenjiayuan195
Chenjiayuan195
| -|julionav
julionav
|SplittyDev
SplittyDev
|mdp
mdp
|kohii
kohii
|kinandan
kinandan
|jwcraig
jwcraig
| -|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| -|dqroid
dqroid
|dairui1
dairui1
|tmsjngx0
tmsjngx0
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
| -|amittell
amittell
|vladstudio
vladstudio
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|nevermorec
nevermorec
| -|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
| -|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| -|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
| -|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
| -|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
| -|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
| -|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|samsilveira
samsilveira
|01Rian
01Rian
| -|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
| -|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| -|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
|celestial-vault
celestial-vault
| + +| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| +| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| jr
jr
| +| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| elianiva
elianiva
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +| monotykamary
monotykamary
| cannuri
cannuri
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| feifei325
feifei325
| xyOz-dev
xyOz-dev
| +| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| vigneshsubbiah16
vigneshsubbiah16
| dtrugman
dtrugman
| Szpadel
Szpadel
| +| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| kiwina
kiwina
| aheizi
aheizi
| +| PeterDaveHello
PeterDaveHello
| olweraltuve
olweraltuve
| chrarnoldus
chrarnoldus
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| +| afshawnlotfi
afshawnlotfi
| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| +| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| +| taylorwilsdon
taylorwilsdon
| StevenTCramer
StevenTCramer
| sammcj
sammcj
| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| +| hassoncs
hassoncs
| aitoroses
aitoroses
| anton-otee
anton-otee
| SannidhyaSah
SannidhyaSah
| heyseth
heyseth
| taisukeoe
taisukeoe
| +| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| +| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| +| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| olearycrew
olearycrew
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| +| jcbdev
jcbdev
| mr-ryan-james
mr-ryan-james
| ross
ross
| philfung
philfung
| napter
napter
| Chenjiayuan195
Chenjiayuan195
| +| julionav
julionav
| SplittyDev
SplittyDev
| mdp
mdp
| kohii
kohii
| kinandan
kinandan
| jwcraig
jwcraig
| +| shoopapa
shoopapa
| im47cn
im47cn
| hongzio
hongzio
| hatsu38
hatsu38
| GOODBOY008
GOODBOY008
| forestyoo
forestyoo
| +| dqroid
dqroid
| dairui1
dairui1
| tmsjngx0
tmsjngx0
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| +| amittell
amittell
| vladstudio
vladstudio
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| nevermorec
nevermorec
| +| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| +| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| +| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| +| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| +| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| +| chadgauth
chadgauth
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| +| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| +| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| samsilveira
samsilveira
| 01Rian
01Rian
| +| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| +| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| +| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| celestial-vault
celestial-vault
| + ## 授權 diff --git a/packages/telemetry/src/TelemetryService.ts b/packages/telemetry/src/TelemetryService.ts index 956f49313a..728809f8bd 100644 --- a/packages/telemetry/src/TelemetryService.ts +++ b/packages/telemetry/src/TelemetryService.ts @@ -173,7 +173,7 @@ export class TelemetryService { itemType, itemName, target, - ... (properties || {}), + ...(properties || {}), }) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c62c73bd4..94ca8be9a7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,88 @@ importers: specifier: ^5.4.5 version: 5.8.3 + apps/roomote: + dependencies: + '@bull-board/api': + specifier: ^6.10.1 + version: 6.10.1(@bull-board/ui@6.10.1) + '@bull-board/express': + specifier: ^6.10.1 + version: 6.10.1 + '@bull-board/ui': + specifier: ^6.10.1 + version: 6.10.1 + '@roo-code/ipc': + specifier: workspace:^ + version: link:../../packages/ipc + '@roo-code/types': + specifier: workspace:^ + version: link:../../packages/types + bullmq: + specifier: ^5.37.0 + version: 5.53.2 + drizzle-orm: + specifier: ^0.44.1 + version: 0.44.1(@libsql/client@0.15.8)(better-sqlite3@11.10.0)(gel@2.1.0)(postgres@3.4.7) + execa: + specifier: ^9.6.0 + version: 9.6.0 + express: + specifier: ^5.1.0 + version: 5.1.0 + ioredis: + specifier: ^5.4.3 + version: 5.6.1 + next: + specifier: ^15.2.5 + version: 15.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + p-wait-for: + specifier: ^5.0.2 + version: 5.0.2 + postgres: + specifier: ^3.4.7 + version: 3.4.7 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + zod: + specifier: ^3.25.41 + version: 3.25.57 + devDependencies: + '@roo-code/config-eslint': + specifier: workspace:^ + version: link:../../packages/config-eslint + '@roo-code/config-typescript': + specifier: workspace:^ + version: link:../../packages/config-typescript + '@types/express': + specifier: ^5.0.3 + version: 5.0.3 + '@types/node': + specifier: ^22.15.20 + version: 22.15.29 + '@types/react': + specifier: ^18.3.23 + version: 18.3.23 + '@types/react-dom': + specifier: ^18.3.7 + version: 18.3.7(@types/react@18.3.23) + concurrently: + specifier: ^9.1.0 + version: 9.1.2 + drizzle-kit: + specifier: ^0.31.1 + version: 0.31.1 + tsx: + specifier: ^4.19.3 + version: 4.19.4 + vitest: + specifier: ^2.1.8 + version: 2.1.9(@types/node@22.15.29)(jsdom@20.0.3)(lightningcss@1.30.1) + apps/vscode-e2e: devDependencies: '@roo-code/config-eslint': @@ -205,7 +287,7 @@ importers: version: 1.1.2(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) zod: specifier: ^3.25.61 - version: 3.25.61 + version: 3.25.62 devDependencies: '@roo-code/config-eslint': specifier: workspace:^ @@ -299,7 +381,7 @@ importers: version: 1.0.7(tailwindcss@3.4.17) zod: specifier: ^3.25.61 - version: 3.25.61 + version: 3.25.62 devDependencies: '@roo-code/config-eslint': specifier: workspace:^ @@ -333,7 +415,7 @@ importers: dependencies: zod: specifier: ^3.25.61 - version: 3.25.61 + version: 3.25.62 devDependencies: '@roo-code/config-eslint': specifier: workspace:^ @@ -361,7 +443,7 @@ importers: version: 1.9.0 zod: specifier: ^3.25.61 - version: 3.25.61 + version: 3.25.62 devDependencies: '@roo-code/config-eslint': specifier: workspace:^ @@ -454,7 +536,7 @@ importers: version: 5.5.5 zod: specifier: ^3.25.61 - version: 3.25.61 + version: 3.25.62 devDependencies: '@roo-code/config-eslint': specifier: workspace:^ @@ -516,7 +598,7 @@ importers: version: 4.17.2 zod: specifier: ^3.25.61 - version: 3.25.61 + version: 3.25.62 devDependencies: '@roo-code/config-eslint': specifier: workspace:^ @@ -538,7 +620,7 @@ importers: dependencies: zod: specifier: ^3.25.61 - version: 3.25.61 + version: 3.25.62 devDependencies: '@roo-code/config-eslint': specifier: workspace:^ @@ -578,7 +660,7 @@ importers: version: 1.3.0(@modelcontextprotocol/sdk@1.12.0) '@mistralai/mistralai': specifier: ^1.3.6 - version: 1.6.1(zod@3.25.61) + version: 1.6.1(zod@3.25.62) '@modelcontextprotocol/sdk': specifier: ^1.9.0 version: 1.12.0 @@ -674,7 +756,7 @@ importers: version: 12.0.0 openai: specifier: ^4.78.1 - version: 4.103.0(ws@8.18.2)(zod@3.25.61) + version: 4.103.0(ws@8.18.2)(zod@3.25.62) os-name: specifier: ^6.0.0 version: 6.1.0 @@ -758,7 +840,7 @@ importers: version: 2.8.0 zod: specifier: ^3.25.61 - version: 3.25.61 + version: 3.25.62 devDependencies: '@roo-code/build': specifier: workspace:^ @@ -855,7 +937,7 @@ importers: version: 3.2.3(@types/debug@4.1.12)(@types/node@20.17.50)(jiti@2.4.2)(jsdom@20.0.3)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0) zod-to-ts: specifier: ^1.2.0 - version: 1.2.0(typescript@5.8.3)(zod@3.25.61) + version: 1.2.0(typescript@5.8.3)(zod@3.25.62) webview-ui: dependencies: @@ -1032,7 +1114,7 @@ importers: version: 0.2.2(@types/react@18.3.23)(react@18.3.1) zod: specifier: ^3.25.61 - version: 3.25.61 + version: 3.25.62 devDependencies: '@jest/globals': specifier: ^29.7.0 @@ -1505,6 +1587,17 @@ packages: '@braintree/sanitize-url@7.1.1': resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + '@bull-board/api@6.10.1': + resolution: {integrity: sha512-VPkZa2XZI2Wk2MqK1XyiiS+tOhNan54mnm2fpv2KA0fdZ92mQqNjhKkOpsykhQv9XUEc8cCRlZqGxf67YCMJbQ==} + peerDependencies: + '@bull-board/ui': 6.10.1 + + '@bull-board/express@6.10.1': + resolution: {integrity: sha512-IZl+t6B8bGCHqd/8Mbvit9RXqndXBe2Kx7pYHq7PZRrEKjK9b643Uizlc+OVqmWpLSjpQMP96K1SO5/Nq24o+A==} + + '@bull-board/ui@6.10.1': + resolution: {integrity: sha512-b6z6MBid/0DEShAMFPjPVZoPSoWqRBHCvTknyaxr/m8gL2/C+QP7jlCXut+L7uTFbCj9qs+CreAP0x/VdLI/Ig==} + '@changesets/apply-release-plan@7.0.12': resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} @@ -1614,6 +1707,12 @@ packages: resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} deprecated: 'Merged into tsx: https://tsx.is' + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.25.4': resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} engines: {node: '>=18'} @@ -1632,6 +1731,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.25.4': resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} engines: {node: '>=18'} @@ -1650,6 +1755,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.25.4': resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} engines: {node: '>=18'} @@ -1668,6 +1779,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.25.4': resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} engines: {node: '>=18'} @@ -1686,6 +1803,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.25.4': resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} engines: {node: '>=18'} @@ -1704,6 +1827,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.25.4': resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} engines: {node: '>=18'} @@ -1722,6 +1851,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.25.4': resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} engines: {node: '>=18'} @@ -1740,6 +1875,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.4': resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} engines: {node: '>=18'} @@ -1758,6 +1899,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.25.4': resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} engines: {node: '>=18'} @@ -1776,6 +1923,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.25.4': resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} engines: {node: '>=18'} @@ -1794,6 +1947,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.25.4': resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} engines: {node: '>=18'} @@ -1812,6 +1971,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.25.4': resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} engines: {node: '>=18'} @@ -1830,6 +1995,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.25.4': resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} engines: {node: '>=18'} @@ -1848,6 +2019,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.25.4': resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} engines: {node: '>=18'} @@ -1866,6 +2043,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.25.4': resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} engines: {node: '>=18'} @@ -1884,6 +2067,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.25.4': resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} engines: {node: '>=18'} @@ -1902,6 +2091,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.25.4': resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} engines: {node: '>=18'} @@ -1932,6 +2127,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.4': resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} engines: {node: '>=18'} @@ -1962,6 +2163,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.4': resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} engines: {node: '>=18'} @@ -1980,6 +2187,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.25.4': resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} engines: {node: '>=18'} @@ -1998,6 +2211,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.25.4': resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} engines: {node: '>=18'} @@ -2016,6 +2235,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.25.4': resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} engines: {node: '>=18'} @@ -2034,6 +2259,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.25.4': resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} engines: {node: '>=18'} @@ -2249,6 +2480,9 @@ packages: cpu: [x64] os: [win32] + '@ioredis/commands@1.2.0': + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2455,6 +2689,36 @@ packages: resolution: {integrity: sha512-m//7RlINx1F3sz3KqwY1WWzVgTcYX52HYk4bJ1hkBXV3zccAEth+jRvG8DBRrdaQuRsPAJOx2MH3zaHNCKL7Zg==} engines: {node: '>=18'} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + '@mswjs/interceptors@0.38.6': resolution: {integrity: sha512-qFlpmObPqeUs4u3oFYv/OM/xyX+pNa5TRAjqjvMhbGYlyMhzSrE5UfncL2rUcEeVfD9Gebgff73hPwqcOwJQNA==} engines: {node: '>=18'} @@ -4038,12 +4302,18 @@ packages: '@types/babel__traverse@7.20.7': resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} '@types/clone-deep@4.0.4': resolution: {integrity: sha512-vXh6JuuaAha6sqEbJueYdh5zNBPPgG1OYumuz2UvLvriN6ABHDSW8ludREGWJb1MLIzbwZn4q4zUbUCerJTJfA==} + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/d3-array@3.2.1': resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} @@ -4158,6 +4428,12 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/express-serve-static-core@5.0.6': + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + + '@types/express@5.0.3': + resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==} + '@types/geojson@7946.0.16': resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} @@ -4170,6 +4446,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -4203,6 +4482,9 @@ packages: '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} @@ -4234,9 +4516,6 @@ packages: '@types/node@20.17.57': resolution: {integrity: sha512-f3T4y6VU4fVQDKVqJV4Uppy8c1p/sVvS3peyqxyWnzkqXFJLRU7Y1Bl7rMS1Qe9z0v4M6McY0Fp9yBsgHJUsWQ==} - '@types/node@20.19.0': - resolution: {integrity: sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q==} - '@types/node@22.15.29': resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==} @@ -4249,6 +4528,12 @@ packages: '@types/ps-tree@1.1.6': resolution: {integrity: sha512-PtrlVaOaI44/3pl3cvnlK+GxOM3re2526TJvPvh7W+keHIXdV4TE0ylpPBAcvFQCbGitaTXwL9u+RF7qtVeazQ==} + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + '@types/react-dom@18.3.7': resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} peerDependencies: @@ -4257,6 +4542,12 @@ packages: '@types/react@18.3.23': resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + + '@types/serve-static@1.15.8': + resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + '@types/shell-quote@1.7.5': resolution: {integrity: sha512-+UE8GAGRPbJVQDdxi16dgadcBfQ+KG2vgZhV1+3A1XmHbmwcdwhCUwIdy+d3pAGrbvgRoVSjeI9vOWyq376Yzw==} @@ -4371,9 +4662,23 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + '@vitest/expect@2.1.9': + resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==} + '@vitest/expect@3.2.3': resolution: {integrity: sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==} + '@vitest/mocker@2.1.9': + resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + '@vitest/mocker@3.2.3': resolution: {integrity: sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==} peerDependencies: @@ -4385,18 +4690,33 @@ packages: vite: optional: true + '@vitest/pretty-format@2.1.9': + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} + '@vitest/pretty-format@3.2.3': resolution: {integrity: sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==} + '@vitest/runner@2.1.9': + resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==} + '@vitest/runner@3.2.3': resolution: {integrity: sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==} + '@vitest/snapshot@2.1.9': + resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==} + '@vitest/snapshot@3.2.3': resolution: {integrity: sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==} + '@vitest/spy@2.1.9': + resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==} + '@vitest/spy@3.2.3': resolution: {integrity: sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==} + '@vitest/utils@2.1.9': + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + '@vitest/utils@3.2.3': resolution: {integrity: sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==} @@ -4808,6 +5128,9 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + bullmq@5.53.2: + resolution: {integrity: sha512-xHgxrP/yNJHD7VCw1h+eRBh+2TCPBCM39uC9gCyksYc6ufcJP+HTZ/A2lzB2x7qMFWrvsX7tM40AT2BmdkYL/Q==} + bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} @@ -5095,6 +5418,11 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concurrently@9.1.2: + resolution: {integrity: sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==} + engines: {node: '>=18'} + hasBin: true + confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -5159,6 +5487,10 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + cross-fetch@4.0.0: resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} @@ -5494,6 +5826,10 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -5848,6 +6184,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.25.4: resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} engines: {node: '>=18'} @@ -6674,6 +7015,10 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} + ioredis@5.6.1: + resolution: {integrity: sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==} + engines: {node: '>=12.22.0'} + ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -7462,9 +7807,15 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + lodash.includes@4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.isboolean@3.0.3: resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} @@ -7549,6 +7900,10 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + luxon@3.6.1: + resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==} + engines: {node: '>=12'} + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -7883,6 +8238,13 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + + msgpackr@1.11.4: + resolution: {integrity: sha512-uaff7RG9VIC4jacFW9xzL3jc0iM32DNHe4jYVycBcjUePT/Klnfj7pqtWJt9khvDFizmjN2TlYniYmSS2LIaZg==} + mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} @@ -7953,6 +8315,9 @@ packages: resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==} engines: {node: '>=10'} + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} @@ -7981,6 +8346,10 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -8290,6 +8659,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -8775,6 +9147,17 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + + redis-info@3.1.0: + resolution: {integrity: sha512-ER4L9Sh/vm63DkIE0bkSjxluQlioBiBgf5w1UuldaW/3vPcecdljVDisZhmnCMvsxHNiARTTDDHGg9cGwTfrKg==} + + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + redis@5.5.5: resolution: {integrity: sha512-x7vpciikEY7nptGzQrE5I+/pvwFZJDadPk/uEoyGSg/pZ2m/CX2n5EhSgUh+S5T7Gz3uKM6YzWcXEu3ioAsdFQ==} engines: {node: '>= 18'} @@ -8905,6 +9288,9 @@ packages: rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -9175,6 +9561,9 @@ packages: stacktrace-js@2.0.2: resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -9473,10 +9862,18 @@ packages: resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==} engines: {node: ^18.0.0 || >=20.0.0} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + tinyrainbow@2.0.0: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + tinyspy@4.0.3: resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} @@ -9932,11 +10329,47 @@ packages: victory-vendor@36.9.2: resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} + vite-node@2.1.9: + resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite-node@3.2.3: resolution: {integrity: sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true + vite@5.4.19: + resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vite@6.3.5: resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -9977,6 +10410,31 @@ packages: yaml: optional: true + vitest@2.1.9: + resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.9 + '@vitest/ui': 2.1.9 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vitest@3.2.3: resolution: {integrity: sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -10298,8 +10756,11 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zod@3.25.61: - resolution: {integrity: sha512-fzfJgUw78LTNnHujj9re1Ov/JJQkRZZGDMcYqSx7Hp4rPOkKywaFHq0S6GoHeXs0wGNE/sIOutkXgnwzrVOGCQ==} + zod@3.25.57: + resolution: {integrity: sha512-6tgzLuwVST5oLUxXTmBqoinKMd3JeesgbgseXeFasKKj8Q1FCZrHnbqJOyiEvr4cVAlbug+CgIsmJ8cl/pU5FA==} + + zod@3.25.62: + resolution: {integrity: sha512-YCxsr4DmhPcrKPC9R1oBHQNlQzlJEyPAId//qTau/vBee9uO8K6prmRq4eMkOyxvBfH4wDPIPdLx9HVMWIY3xA==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -11122,6 +11583,24 @@ snapshots: '@braintree/sanitize-url@7.1.1': {} + '@bull-board/api@6.10.1(@bull-board/ui@6.10.1)': + dependencies: + '@bull-board/ui': 6.10.1 + redis-info: 3.1.0 + + '@bull-board/express@6.10.1': + dependencies: + '@bull-board/api': 6.10.1(@bull-board/ui@6.10.1) + '@bull-board/ui': 6.10.1 + ejs: 3.1.10 + express: 5.1.0 + transitivePeerDependencies: + - supports-color + + '@bull-board/ui@6.10.1': + dependencies: + '@bull-board/api': 6.10.1(@bull-board/ui@6.10.1) + '@changesets/apply-release-plan@7.0.12': dependencies: '@changesets/config': 3.1.1 @@ -11333,6 +11812,9 @@ snapshots: '@esbuild-kit/core-utils': 3.3.2 get-tsconfig: 4.10.0 + '@esbuild/aix-ppc64@0.21.5': + optional: true + '@esbuild/aix-ppc64@0.25.4': optional: true @@ -11342,6 +11824,9 @@ snapshots: '@esbuild/android-arm64@0.18.20': optional: true + '@esbuild/android-arm64@0.21.5': + optional: true + '@esbuild/android-arm64@0.25.4': optional: true @@ -11351,6 +11836,9 @@ snapshots: '@esbuild/android-arm@0.18.20': optional: true + '@esbuild/android-arm@0.21.5': + optional: true + '@esbuild/android-arm@0.25.4': optional: true @@ -11360,6 +11848,9 @@ snapshots: '@esbuild/android-x64@0.18.20': optional: true + '@esbuild/android-x64@0.21.5': + optional: true + '@esbuild/android-x64@0.25.4': optional: true @@ -11369,6 +11860,9 @@ snapshots: '@esbuild/darwin-arm64@0.18.20': optional: true + '@esbuild/darwin-arm64@0.21.5': + optional: true + '@esbuild/darwin-arm64@0.25.4': optional: true @@ -11378,6 +11872,9 @@ snapshots: '@esbuild/darwin-x64@0.18.20': optional: true + '@esbuild/darwin-x64@0.21.5': + optional: true + '@esbuild/darwin-x64@0.25.4': optional: true @@ -11387,6 +11884,9 @@ snapshots: '@esbuild/freebsd-arm64@0.18.20': optional: true + '@esbuild/freebsd-arm64@0.21.5': + optional: true + '@esbuild/freebsd-arm64@0.25.4': optional: true @@ -11396,6 +11896,9 @@ snapshots: '@esbuild/freebsd-x64@0.18.20': optional: true + '@esbuild/freebsd-x64@0.21.5': + optional: true + '@esbuild/freebsd-x64@0.25.4': optional: true @@ -11405,6 +11908,9 @@ snapshots: '@esbuild/linux-arm64@0.18.20': optional: true + '@esbuild/linux-arm64@0.21.5': + optional: true + '@esbuild/linux-arm64@0.25.4': optional: true @@ -11414,6 +11920,9 @@ snapshots: '@esbuild/linux-arm@0.18.20': optional: true + '@esbuild/linux-arm@0.21.5': + optional: true + '@esbuild/linux-arm@0.25.4': optional: true @@ -11423,6 +11932,9 @@ snapshots: '@esbuild/linux-ia32@0.18.20': optional: true + '@esbuild/linux-ia32@0.21.5': + optional: true + '@esbuild/linux-ia32@0.25.4': optional: true @@ -11432,6 +11944,9 @@ snapshots: '@esbuild/linux-loong64@0.18.20': optional: true + '@esbuild/linux-loong64@0.21.5': + optional: true + '@esbuild/linux-loong64@0.25.4': optional: true @@ -11441,6 +11956,9 @@ snapshots: '@esbuild/linux-mips64el@0.18.20': optional: true + '@esbuild/linux-mips64el@0.21.5': + optional: true + '@esbuild/linux-mips64el@0.25.4': optional: true @@ -11450,6 +11968,9 @@ snapshots: '@esbuild/linux-ppc64@0.18.20': optional: true + '@esbuild/linux-ppc64@0.21.5': + optional: true + '@esbuild/linux-ppc64@0.25.4': optional: true @@ -11459,6 +11980,9 @@ snapshots: '@esbuild/linux-riscv64@0.18.20': optional: true + '@esbuild/linux-riscv64@0.21.5': + optional: true + '@esbuild/linux-riscv64@0.25.4': optional: true @@ -11468,6 +11992,9 @@ snapshots: '@esbuild/linux-s390x@0.18.20': optional: true + '@esbuild/linux-s390x@0.21.5': + optional: true + '@esbuild/linux-s390x@0.25.4': optional: true @@ -11477,6 +12004,9 @@ snapshots: '@esbuild/linux-x64@0.18.20': optional: true + '@esbuild/linux-x64@0.21.5': + optional: true + '@esbuild/linux-x64@0.25.4': optional: true @@ -11492,6 +12022,9 @@ snapshots: '@esbuild/netbsd-x64@0.18.20': optional: true + '@esbuild/netbsd-x64@0.21.5': + optional: true + '@esbuild/netbsd-x64@0.25.4': optional: true @@ -11507,6 +12040,9 @@ snapshots: '@esbuild/openbsd-x64@0.18.20': optional: true + '@esbuild/openbsd-x64@0.21.5': + optional: true + '@esbuild/openbsd-x64@0.25.4': optional: true @@ -11516,6 +12052,9 @@ snapshots: '@esbuild/sunos-x64@0.18.20': optional: true + '@esbuild/sunos-x64@0.21.5': + optional: true + '@esbuild/sunos-x64@0.25.4': optional: true @@ -11525,6 +12064,9 @@ snapshots: '@esbuild/win32-arm64@0.18.20': optional: true + '@esbuild/win32-arm64@0.21.5': + optional: true + '@esbuild/win32-arm64@0.25.4': optional: true @@ -11534,6 +12076,9 @@ snapshots: '@esbuild/win32-ia32@0.18.20': optional: true + '@esbuild/win32-ia32@0.21.5': + optional: true + '@esbuild/win32-ia32@0.25.4': optional: true @@ -11543,6 +12088,9 @@ snapshots: '@esbuild/win32-x64@0.18.20': optional: true + '@esbuild/win32-x64@0.21.5': + optional: true + '@esbuild/win32-x64@0.25.4': optional: true @@ -11624,8 +12172,8 @@ snapshots: '@modelcontextprotocol/sdk': 1.12.0 google-auth-library: 9.15.1 ws: 8.18.2 - zod: 3.25.61 - zod-to-json-schema: 3.24.5(zod@3.25.61) + zod: 3.25.62 + zod-to-json-schema: 3.24.5(zod@3.25.62) transitivePeerDependencies: - bufferutil - encoding @@ -11740,6 +12288,8 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true + '@ioredis/commands@1.2.0': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -12060,10 +12610,10 @@ snapshots: dependencies: exenv-es6: 1.1.1 - '@mistralai/mistralai@1.6.1(zod@3.25.61)': + '@mistralai/mistralai@1.6.1(zod@3.25.62)': dependencies: - zod: 3.25.61 - zod-to-json-schema: 3.24.5(zod@3.25.61) + zod: 3.25.62 + zod-to-json-schema: 3.24.5(zod@3.25.62) '@mixmark-io/domino@2.2.0': {} @@ -12078,11 +12628,29 @@ snapshots: express-rate-limit: 7.5.0(express@5.1.0) pkce-challenge: 5.0.0 raw-body: 3.0.0 - zod: 3.25.61 - zod-to-json-schema: 3.24.5(zod@3.25.61) + zod: 3.25.62 + zod-to-json-schema: 3.24.5(zod@3.25.62) transitivePeerDependencies: - supports-color + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + '@mswjs/interceptors@0.38.6': dependencies: '@open-draft/deferred-promise': 2.2.0 @@ -13744,12 +14312,21 @@ snapshots: dependencies: '@babel/types': 7.27.1 + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 22.15.29 + '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 '@types/clone-deep@4.0.4': {} + '@types/connect@3.4.38': + dependencies: + '@types/node': 22.15.29 + '@types/d3-array@3.2.1': {} '@types/d3-axis@3.0.6': @@ -13885,6 +14462,19 @@ snapshots: '@types/estree@1.0.8': {} + '@types/express-serve-static-core@5.0.6': + dependencies: + '@types/node': 22.15.29 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.5 + + '@types/express@5.0.3': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 5.0.6 + '@types/serve-static': 1.15.8 + '@types/geojson@7946.0.16': {} '@types/glob@8.1.0': @@ -13900,6 +14490,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/http-errors@2.0.5': {} + '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-report@3.0.3': @@ -13939,6 +14531,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/mime@1.3.5': {} + '@types/minimatch@5.1.2': {} '@types/mocha@10.0.10': {} @@ -13972,11 +14566,6 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@20.19.0': - dependencies: - undici-types: 6.21.0 - optional: true - '@types/node@22.15.29': dependencies: undici-types: 6.21.0 @@ -13988,6 +14577,10 @@ snapshots: '@types/ps-tree@1.1.6': {} + '@types/qs@6.14.0': {} + + '@types/range-parser@1.2.7': {} + '@types/react-dom@18.3.7(@types/react@18.3.23)': dependencies: '@types/react': 18.3.23 @@ -13997,6 +14590,17 @@ snapshots: '@types/prop-types': 15.7.14 csstype: 3.1.3 + '@types/send@0.17.5': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 22.15.29 + + '@types/serve-static@1.15.8': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 22.15.29 + '@types/send': 0.17.5 + '@types/shell-quote@1.7.5': {} '@types/stack-utils@2.0.3': {} @@ -14030,7 +14634,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 20.19.0 + '@types/node': 22.15.29 optional: true '@types/yargs-parser@21.0.3': {} @@ -14041,7 +14645,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.17.57 + '@types/node': 22.15.29 optional: true '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': @@ -14142,6 +14746,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitest/expect@2.1.9': + dependencies: + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.2.0 + tinyrainbow: 1.2.0 + '@vitest/expect@3.2.3': dependencies: '@types/chai': 5.2.2 @@ -14150,6 +14761,14 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 + '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.15.29)(lightningcss@1.30.1))': + dependencies: + '@vitest/spy': 2.1.9 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 5.4.19(@types/node@22.15.29)(lightningcss@1.30.1) + '@vitest/mocker@3.2.3(vite@6.3.5(@types/node@20.17.50)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.3 @@ -14174,26 +14793,51 @@ snapshots: optionalDependencies: vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0) + '@vitest/pretty-format@2.1.9': + dependencies: + tinyrainbow: 1.2.0 + '@vitest/pretty-format@3.2.3': dependencies: tinyrainbow: 2.0.0 + '@vitest/runner@2.1.9': + dependencies: + '@vitest/utils': 2.1.9 + pathe: 1.1.2 + '@vitest/runner@3.2.3': dependencies: '@vitest/utils': 3.2.3 pathe: 2.0.3 strip-literal: 3.0.0 + '@vitest/snapshot@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + magic-string: 0.30.17 + pathe: 1.1.2 + '@vitest/snapshot@3.2.3': dependencies: '@vitest/pretty-format': 3.2.3 magic-string: 0.30.17 pathe: 2.0.3 + '@vitest/spy@2.1.9': + dependencies: + tinyspy: 3.0.2 + '@vitest/spy@3.2.3': dependencies: tinyspy: 4.0.3 + '@vitest/utils@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + loupe: 3.1.3 + tinyrainbow: 1.2.0 + '@vitest/utils@3.2.3': dependencies: '@vitest/pretty-format': 3.2.3 @@ -14692,6 +15336,18 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + bullmq@5.53.2: + dependencies: + cron-parser: 4.9.0 + ioredis: 5.6.1 + msgpackr: 1.11.4 + node-abort-controller: 3.1.1 + semver: 7.7.2 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + bundle-name@4.1.0: dependencies: run-applescript: 7.0.0 @@ -14987,6 +15643,16 @@ snapshots: concat-map@0.0.1: {} + concurrently@9.1.2: + dependencies: + chalk: 4.1.2 + lodash: 4.17.21 + rxjs: 7.8.2 + shell-quote: 1.8.3 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + confbox@0.1.8: {} confbox@0.2.2: {} @@ -15062,6 +15728,10 @@ snapshots: - supports-color - ts-node + cron-parser@4.9.0: + dependencies: + luxon: 3.6.1 + cross-fetch@4.0.0: dependencies: node-fetch: 2.7.0 @@ -15409,6 +16079,8 @@ snapshots: delayed-stream@1.0.0: {} + denque@2.1.0: {} + depd@2.0.0: {} dequal@2.0.3: {} @@ -15740,6 +16412,32 @@ snapshots: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + esbuild@0.25.4: optionalDependencies: '@esbuild/aix-ppc64': 0.25.4 @@ -16798,6 +17496,20 @@ snapshots: internmap@2.0.3: {} + ioredis@5.6.1: + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.4.1(supports-color@8.1.1) + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + ip-address@9.0.5: dependencies: jsbn: 1.1.0 @@ -17589,8 +18301,8 @@ snapshots: smol-toml: 1.3.4 strip-json-comments: 5.0.2 typescript: 5.8.3 - zod: 3.25.61 - zod-validation-error: 3.4.1(zod@3.25.61) + zod: 3.25.62 + zod-validation-error: 3.4.1(zod@3.25.62) knuth-shuffle-seeded@1.0.6: dependencies: @@ -17781,8 +18493,12 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.defaults@4.2.0: {} + lodash.includes@4.3.0: {} + lodash.isarguments@3.1.0: {} + lodash.isboolean@3.0.3: {} lodash.isinteger@4.0.4: {} @@ -17861,6 +18577,8 @@ snapshots: dependencies: react: 18.3.1 + luxon@3.6.1: {} + lz-string@1.5.0: {} macos-release@3.3.0: {} @@ -18437,6 +19155,22 @@ snapshots: ms@2.1.3: {} + msgpackr-extract@3.0.3: + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + optional: true + + msgpackr@1.11.4: + optionalDependencies: + msgpackr-extract: 3.0.3 + mute-stream@0.0.8: {} mz@2.7.0: @@ -18512,6 +19246,8 @@ snapshots: semver: 7.7.2 optional: true + node-abort-controller@3.1.1: {} + node-addon-api@4.3.0: optional: true @@ -18534,6 +19270,11 @@ snapshots: formdata-polyfill: 4.0.10 optional: true + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.0.4 + optional: true + node-int64@0.4.0: {} node-ipc@12.0.0: @@ -18667,7 +19408,7 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 - openai@4.103.0(ws@8.18.2)(zod@3.25.61): + openai@4.103.0(ws@8.18.2)(zod@3.25.62): dependencies: '@types/node': 18.19.100 '@types/node-fetch': 2.6.12 @@ -18678,7 +19419,7 @@ snapshots: node-fetch: 2.7.0 optionalDependencies: ws: 8.18.2 - zod: 3.25.61 + zod: 3.25.62 transitivePeerDependencies: - encoding @@ -18899,6 +19640,8 @@ snapshots: path-type@4.0.0: {} + pathe@1.1.2: {} + pathe@2.0.3: {} pathval@2.0.0: {} @@ -19429,6 +20172,16 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + redis-errors@1.2.0: {} + + redis-info@3.1.0: + dependencies: + lodash: 4.17.21 + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + redis@5.5.5: dependencies: '@redis/bloom': 5.5.5(@redis/client@5.5.5) @@ -19627,6 +20380,10 @@ snapshots: rw@1.3.3: {} + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -19782,8 +20539,7 @@ snapshots: shell-quote@1.8.2: {} - shell-quote@1.8.3: - optional: true + shell-quote@1.8.3: {} shiki@3.4.1: dependencies: @@ -19955,6 +20711,8 @@ snapshots: stack-generator: 2.0.10 stacktrace-gps: 3.1.2 + standard-as-callback@2.1.0: {} + statuses@2.0.1: {} std-env@3.9.0: {} @@ -20287,8 +21045,12 @@ snapshots: tinypool@1.1.0: {} + tinyrainbow@1.2.0: {} + tinyrainbow@2.0.0: {} + tinyspy@3.0.2: {} + tinyspy@4.0.3: {} tmp@0.0.33: @@ -20762,6 +21524,24 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 + vite-node@2.1.9(@types/node@22.15.29)(lightningcss@1.30.1): + dependencies: + cac: 6.7.14 + debug: 4.4.1(supports-color@8.1.1) + es-module-lexer: 1.7.0 + pathe: 1.1.2 + vite: 5.4.19(@types/node@22.15.29)(lightningcss@1.30.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vite-node@3.2.3(@types/node@20.17.50)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0): dependencies: cac: 6.7.14 @@ -20825,6 +21605,16 @@ snapshots: - tsx - yaml + vite@5.4.19(@types/node@22.15.29)(lightningcss@1.30.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.4 + rollup: 4.40.2 + optionalDependencies: + '@types/node': 22.15.29 + fsevents: 2.3.3 + lightningcss: 1.30.1 + vite@6.3.5(@types/node@20.17.50)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0): dependencies: esbuild: 0.25.5 @@ -20873,6 +21663,42 @@ snapshots: tsx: 4.19.4 yaml: 2.8.0 + vitest@2.1.9(@types/node@22.15.29)(jsdom@20.0.3)(lightningcss@1.30.1): + dependencies: + '@vitest/expect': 2.1.9 + '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.15.29)(lightningcss@1.30.1)) + '@vitest/pretty-format': 2.1.9 + '@vitest/runner': 2.1.9 + '@vitest/snapshot': 2.1.9 + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.2.0 + debug: 4.4.1(supports-color@8.1.1) + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 1.1.2 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.1.0 + tinyrainbow: 1.2.0 + vite: 5.4.19(@types/node@22.15.29)(lightningcss@1.30.1) + vite-node: 2.1.9(@types/node@22.15.29)(lightningcss@1.30.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.15.29 + jsdom: 20.0.3 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vitest@3.2.3(@types/debug@4.1.12)(@types/node@20.17.50)(jiti@2.4.2)(jsdom@20.0.3)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 @@ -21264,21 +22090,23 @@ snapshots: yoctocolors@2.1.1: {} - zod-to-json-schema@3.24.5(zod@3.25.61): + zod-to-json-schema@3.24.5(zod@3.25.62): dependencies: - zod: 3.25.61 + zod: 3.25.62 - zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.61): + zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.62): dependencies: typescript: 5.8.3 - zod: 3.25.61 + zod: 3.25.62 - zod-validation-error@3.4.1(zod@3.25.61): + zod-validation-error@3.4.1(zod@3.25.62): dependencies: - zod: 3.25.61 + zod: 3.25.62 zod@3.23.8: {} - zod@3.25.61: {} + zod@3.25.57: {} + + zod@3.25.62: {} zwitch@2.0.4: {}