1
0
Fork 0
docsearch/.oxlintrc.json
Paul Jankowski ecd905d440
feat: promote DocSearch v5 to main (#2968)
* feat(askai): add compatibility with algolia mcp search tool [DASH-2294] (#2862)

## Summary
Fixes DASH-2294
Add compatibility with the Algolia MCP search tool (`algolia_search_index_${string}`) in AskAI.

## Changes
- Add `AlgoliaMCPSearchTool` type to handle the Algolia MCP server search tool
- Refactor how number of hits are retrieved in `ToolCall` into a `getNumberOfHits` helper

## Test plan
- Added unit tests for modified code 

* chore: Update to use tsdown for build system (#2824)

* chore: Update to use tsdown for build system

* fix: docsearch-react build

* fix: lint

* fix: glob resolved to incorrect version

* chore: migrate to from yarn, lerna and shipjs to bun & changesets (#2827)

* chore: add tool-versions file for node and bun versions (#2866)

* chore: watch in parallel (#2867)

* feat: agent studio feedback integration (#2868)

* feat(askai): Split Ask AI modal into own component (#2884)

* feat(askai): Split Ask AI modal into own component

* refactor(react): share modal utilities

* refactor(react): share search box form

* refactor(react): extract start screen sections

* refactor(react): extract shared modal hooks

* fix: lint adapter

* refactor(react): reorganize modal files

* fix: type error in examples

* fix: remove ai modal from adapter for now, fix import paths of react package

* feat(askai): Agent Studio core tools (#2886)

* feat(askai): Implement dynamic tool calls

* move ToolCall to components dir

* Converge Agent Studio search tools to same definition, fix client side tools breaking UI state

* add examples for custom tools

* fix: lint & types

* feat(askai): add Agent Studio memory support (#2888)

* feat(askai): remove Ask AI transport layer (#2889)

* feat(askai): add Agent Studio memory support

* refactor(askai): remove Ask AI transport abstraction

* feat(askai): Feedback notes and tags (#2890)

* feat(askai): add Agent Studio memory support

* refactor(askai): remove Ask AI transport abstraction

* feat(askai): Feedback notes and tags

* fix: bump css bundle size limit

* move feedback actions to components

* chore: fix deploys for v5 branch

* feat(askai): Aggregate MCP search tool calls (#2891)

* feat(askai): add Agent Studio memory support

* refactor(askai): remove Ask AI transport abstraction

* feat(askai): Feedback notes and tags

* fix: bump css bundle size limit

* move feedback actions to components

* feat(askai): Aggregate MCP search tool calls

* feat(askai): Allow dynamic indices for Agent Studio (#2893)

* feat(v5): UI updates (#2896)

* feat(v5): UI updates

* fix: css file size

* fix: e2e tests

* fix: e2e tests

* fix: e2e tests

* chore: add theme toggle to react demo example

* Update sources panel display, update dark theme

* fix: lint

* fix(askai): address ui review feedback

* fix: pin icon positioning

* fix(askai): improve a11y and dark-mode shimmer for thinking and error states

- add role=alert/status and aria-hidden on error/thinking UI
- support dark-mode shimmer gradients via CSS variables
- respect prefers-reduced-motion for shimmer
- handle null date in useRelativeFormattedDate with fallback translation

* feat(v5): Add hit breadcrumbs (#2897)

* feat(v5): UI updates

* fix: css file size

* fix: e2e tests

* fix: e2e tests

* fix: e2e tests

* chore: add theme toggle to react demo example

* Update sources panel display, update dark theme

* fix: lint

* fix(askai): address ui review feedback

* fix: pin icon positioning

* fix(askai): improve a11y and dark-mode shimmer for thinking and error states

- add role=alert/status and aria-hidden on error/thinking UI
- support dark-mode shimmer gradients via CSS variables
- respect prefers-reduced-motion for shimmer
- handle null date in useRelativeFormattedDate with fallback translation

* feat(v5): Add hit breadcrumbs

* fix: bump css bundle size limit

* Fix after conflicts

* chore: move CSS building to lightning css (#2898)

* feat: Facet filters for search (#2899)

* feat(v5): Initial facet filters work

* Perf updates, dark theme, facet chips, a11y improvements

* fix: bump css bundle size limit

* Dedupe facet filters, refetch facets on searchParameters changes

* Add chevron flourish

* fix(askai): Fix new conversation causing thread depth errors (#2900)

* feat(v5): Add hit result badge (#2901)

* feat(v5): Add hit result badge

* Add background to hit result badge

* feat(v5): Add follow up prompt suggestions (#2902)

* feat(v5): Add follow up prompt suggestions

* fix: bump css bundle size limit

* docs(agents): document Cursor Cloud dev environment setup for v5 (Bun) (#2903)

Co-authored-by: Cursor Agent <cursoragent@cursor.com>

* feat(mcp): setup mcp plugins (#2895)

* feat(v5): Add prompt suggestions to keyword search (#2912)

* feat(v5): Add prompt suggestions to keyword search

* cleanup: Move consistent object to reusable constant

* chore(v5): Split Ask AI related CSS into own bundle (#2913)

* chore(v5): Split Ask AI related CSS into own bundle

* move style.css to include modal and askai

* fix: Ensure stage level and watch level scripts use bun runtime (#2915)

* fix: Ensure stage level and watch level scripts use bun runtime

* chore: move to node@24 update imports

* fix: lint

* feat(js): Document JS based hybrid mode, fix JS packages (#2916)

* feat(js): Document JS based hybrid mode, fix JS packages

* update: add model onOpen to docs

* feat(cli): add @docsearch/cli for MCP setup and search (#2911)

* chore(tsdown): Bump to latest tsdown version (#2918)

* chore(tsdown): Bump to latest tsdown version

* fix: bump nvmrc node version

* fix: cli tsconfig

* fix: website build

* fix: example build

* fix: circleci install bun

* fix: lint

* fix: circleci install bun

* fix: circleci install bun

* fix: circleci install bun

* refactor(docusaurus-adapter): rework theme config for v5 and modularize SearchPage (#2904)

Co-authored-by: Paul Jankowski <8BitTitan@gmail.com>

* feat(askai): Move askai related props under root askai (#2919)

* feat(askai): Move askai related props under root askai

* fix: playwright test case

* fix(docusaurus): validate Ask AI options

* feat(js): Split JS bundles for search only (#2920)

* chore: Move to oxlint and oxfmt (#2923)

* chore: Get NPM OIDC token before publishing (#2924)

* chore: Enter v5 beta (#2925)

* chore: Enter pre release mode for v5

* chore: update release summary

* chore: version bump

* fix: Remove NPM_ID_TOKEN for release

* fix: Try setting blank NPM_TOKEN

* fix: Try blank NPM_AUTH_TOKEN

* chore: bump node and npm for release job

* docs(mcp): add service disclaimer (#2921)

* fix: Agent Studio MCP search tool (#2927)

* fix: Agent Studio MCP search tool

* Add changeset

* chore: Update stylelint (#2926)

* chore: stylelint update

* bun.lock

* Add changeset

* fix(website): use bare @import for tailwindcss (#2933)

Tailwind's build-time `@import` cannot be written with `url()` notation,
so `@import url('tailwindcss')` was passed through as a plain CSS import
instead of being processed by Tailwind.

Also syncs bun.lock with the 5.0.0-beta.0 versions already committed to
package.json.

* chore: version v5.0.0-beta.1 (#2932)

* feat(react): remove deprecated index props (#2936)

* feat(mcp): add ChatGPT and Codex DocSearch plugin package (#2938)

* fix: cleanup claude

* feat: website redesign (#2930)

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: lint

* fix: crash on the demo (#2940)

* feat(docs): Document v5 beta (#2935)

* chore(docs): v5 documentation

* Writing style clean up

* fix: website after conflicts

* fix: reported issues on mobile (#2944)

* chore: Introduce a11y smoke tests (#2943)

* chore: Add Lorris as codeowner (#2946)

* fix(askai): Ask AI fixes for v5 (#2945)

* fix: General v5 fixes (#2947)

- Fix `ref` console error for a `FacetMenu`
- Whitespace only search/conversation input does not trigger requests
- Fix flash of no results page on search

* feat: v5 general improvements (#2948)

* feat(v5): General fixes and improvements

* add changeset

* fix: bundlesize

* feat(v5): UI and DX improvements (#2949)

* feat: Rename assistantId to agentId

* feat: Allow reading default facet values from index searchParameters

* feat: Remove indexName prop from Sidepanel, cleanup documentation pages

* feat: Move appId and apiKey up into @docsearch/core

* feat: Add back nested grouping of search results

* add changeset

* revert changes to example demo

* fix: e2e tests

* chore: push git tags on version release (#2951)

* chore: release v5.0.0-beta.2 (#2950)

* chore: Fix pushing git tags (#2953)

* fix(askai): sanitize markdown HTML in v5 (#2954)

Backport of #2929.\n\nOriginal commit: 681cbfec03

Co-authored-by: Vasco Bettencourt <32492444+vascobettencourt@users.noreply.github.com>

* fix(v5): stop truncating mobile snippets (#2958)

* fix(v5): stop truncating mobile snippets

Backport of #2907.\n\nOriginal commit: 9ad6d169fe

* fix(v5): allow mobile hit text to wrap

Completes the v5 adaptation of #2907 by overriding later v5 child-level truncation rules.\n\nOriginal commit: 9ad6d169fe

* chore(v5): account for mobile wrapping CSS

Updates the CSS size budget for the v5 adaptation of #2907.\n\nOriginal commit: 9ad6d169fe

---------

Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com>

* feat(v5): Add new footerAction prop (#2952)

* feat(v5): Add new footerAction prop

* Resolve PR comments

* fix(v5): recognize conversation depth errors (#2957)

Backport of #2881.\n\nOriginal commit: f68e52251c

Co-authored-by: Felipe Bermudez <felipeberm@gmail.com>

* fix(v5): expose Sidepanel search parameter types (#2956)

* fix(v5): expose Sidepanel search parameter types

Backport of #2906.\n\nOriginal commit: 4710d0ca77

* Delete sidepanel.test.ts

Had a pointless test case in it.

---------

Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com>

* fix(v5): ignore slash shortcut on focused buttons (#2955)

Backport of #2871.\n\nOriginal commit: 0e41a78c44

Co-authored-by: Sigmabro <122412346+Sigmabrogz@users.noreply.github.com>

* fix(agentStudio): agents dynamic mode enabled (#2959)

* fix(agentStudio): agents dynamic mode enabled

* fix(askai): use string[] for dynamic agentStudio indices

* feat(docs): add Ask AI to Agent Studio migration guide (#2931)

* feat(docs): add Ask AI to Agent Studio migration guide

* feat(docs): agentStudio migrating from askAI

* feat(docs): renaming agentId

* feat(agentStudio): dynamic mode indices updated

* fix: Docusaurus adapter styling, DocSearch website fixes (#2960)

* chore: release v5.0.0-beta.3 (#2961)

* feat(website): Launch updates (#2964)

* fix(website): Fix font loading (#2966)

* feat(v5): Back port cost control errors (#2965)

* chore: release v5.0.0-beta.4 (#2967)

---------

Co-authored-by: Vincent Lemeunier <vincentlemeunier+git@gmail.com>
Co-authored-by: Dylan Tientcheu <dylan.tientcheu@algolia.com>
Co-authored-by: Lorris Saint-Genez <lorrissaintgenez@gmail.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Dylan Tientcheu <dylantientcheu@gmail.com>
Co-authored-by: Vasco Bettencourt <32492444+vascobettencourt@users.noreply.github.com>
Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com>
Co-authored-by: Felipe Bermudez <felipeberm@gmail.com>
Co-authored-by: Sigmabro <122412346+Sigmabrogz@users.noreply.github.com>
2026-08-06 15:31:45 -04:00

341 lines
10 KiB
JSON

{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": [
"import",
"jsdoc",
"unicorn",
"react",
"jsx-a11y",
"typescript",
"react-perf",
"oxc",
"eslint",
"vitest"
],
"jsPlugins": [
"@stylistic/eslint-plugin",
"@eslint-community/eslint-plugin-eslint-comments"
],
"env": {
"builtin": true,
"es2026": true,
"commonjs": true
},
"ignorePatterns": [
"**/node_modules/",
"**/dist/",
"**/build/",
"**/.docusaurus",
"adapters/**/lib/**",
"examples/**/*"
],
"rules": {
"react/react-compiler": "warn",
"constructor-super": ["error"],
"for-direction": "error",
"getter-return": [
"error",
{
"allowImplicit": true
}
],
"no-console": ["error"],
"no-promise-executor-return": ["error"],
"no-template-curly-in-string": ["error"],
"accessor-pairs": ["error"],
"array-callback-return": ["error"],
"block-scoped-var": ["error"],
"default-case": ["error"],
"default-case-last": ["error"],
"default-param-last": ["error"],
"eqeqeq": ["error"],
"grouped-accessor-pairs": ["error"],
"guard-for-in": ["error"],
"max-classes-per-file": ["warn", 1],
"no-alert": ["error"],
"no-caller": ["error"],
"no-constructor-return": ["error"],
"no-div-regex": ["error"],
"no-else-return": [
"error",
{
"allowElseIf": false
}
],
"no-eq-null": ["error"],
"no-eval": ["error"],
"no-extend-native": ["error"],
"no-extra-bind": ["error"],
"no-extra-label": ["error"],
"no-implicit-coercion": [
"error",
{
"string": false
}
],
"no-implicit-globals": ["error"],
"no-implied-eval": ["error"],
"no-iterator": ["error"],
"no-labels": ["error"],
"no-lone-blocks": ["error"],
"no-loop-func": ["error"],
"no-multi-assign": ["error"],
"no-multi-str": ["error"],
"no-new": ["error"],
"no-new-func": ["error"],
"no-new-wrappers": ["error"],
"no-proto": ["error"],
"no-return-assign": ["error"],
"no-script-url": ["error"],
"no-self-compare": ["error"],
"no-sequences": ["error"],
"no-throw-literal": ["error"],
"no-unmodified-loop-condition": ["error"],
"no-useless-call": ["error"],
"no-useless-concat": ["error"],
"no-useless-return": ["error"],
"no-void": ["error"],
"no-warning-comments": ["error"],
"prefer-promise-reject-errors": ["error"],
"radix": ["error"],
"require-await": ["error"],
"vars-on-top": ["error"],
"yoda": ["error"],
"no-label-var": ["error"],
"no-restricted-globals": ["error", "event"],
"no-shadow": ["error"],
"no-use-before-define": [
"error",
{
"functions": false
}
],
"@stylistic/spaced-comment": ["error"],
"max-depth": ["error"],
"max-nested-callbacks": ["error"],
"max-params": ["error", 5],
"new-cap": ["error"],
"no-array-constructor": ["error"],
"no-bitwise": ["error"],
"no-lonely-if": ["error"],
"no-nested-ternary": ["error"],
"no-unneeded-ternary": ["error"],
"unicode-bom": ["error"],
"no-useless-computed-key": ["error"],
"no-useless-constructor": ["error"],
"no-useless-rename": ["error"],
"no-var": ["error"],
"object-shorthand": ["error"],
"prefer-const": ["error"],
"prefer-rest-params": ["error"],
"prefer-spread": ["error"],
"symbol-description": ["error"],
"@eslint-community/eslint-comments/disable-enable-pair": [
"error",
{
"allowWholeFile": true
}
],
"@eslint-community/eslint-comments/no-aggregating-enable": ["error"],
"@eslint-community/eslint-comments/no-duplicate-disable": ["error"],
"@eslint-community/eslint-comments/no-unlimited-disable": ["error"],
"@eslint-community/eslint-comments/no-unused-disable": ["error"],
"@eslint-community/eslint-comments/no-unused-enable": ["error"],
"import/first": "error",
"import/newline-after-import": "error",
"import/no-amd": ["error"],
"import/no-commonjs": ["error"],
"import/no-duplicates": ["error"],
"import/no-named-as-default": "error",
"jsdoc/check-tag-names": [
"error",
{
"definedTags": ["required", "swagger"]
}
],
"jsdoc/implements-on-classes": ["error"],
"jsdoc/require-param-description": ["error"],
"jsdoc/require-param-name": ["error"],
"jsdoc/require-returns-description": ["error"],
"react/jsx-key": ["error"],
"react/jsx-no-comment-textnodes": "error",
"react/jsx-no-duplicate-props": "error",
"react/jsx-no-target-blank": ["error"],
"react/jsx-no-undef": "error",
"react/no-children-prop": "error",
"react/no-danger-with-children": "error",
"react/no-direct-mutation-state": ["error"],
"react/no-find-dom-node": ["error"],
"react/no-is-mounted": ["error"],
"react/no-render-return-value": "error",
"react/no-string-refs": ["error"],
"react/no-unknown-property": "error",
"react/react-in-jsx-scope": "error",
"react/button-has-type": ["error"],
"react/jsx-boolean-value": ["error", "always"],
"react/jsx-pascal-case": ["error"],
"react/jsx-fragments": ["error"],
"react/jsx-handler-names": ["error"],
"react/no-array-index-key": ["warn"],
"react/no-did-mount-set-state": ["warn"],
"react/no-did-update-set-state": ["warn"],
"react/no-multi-comp": [
"warn",
{
"ignoreStateless": true
}
],
"react/no-redundant-should-component-update": ["error"],
"react/no-this-in-sfc": ["error"],
"react/self-closing-comp": [
"error",
{
"html": false
}
],
"jsx-a11y/alt-text": ["error"],
"jsx-a11y/anchor-is-valid": ["error"],
"jsx-a11y/anchor-has-content": "error",
"jsx-a11y/aria-activedescendant-has-tabindex": ["error"],
"jsx-a11y/aria-props": ["error"],
"jsx-a11y/aria-proptypes": ["error"],
"jsx-a11y/aria-role": [
"error",
{
"ignoreNonDOM": false
}
],
"jsx-a11y/html-has-lang": ["error"],
"jsx-a11y/iframe-has-title": ["error"],
"jsx-a11y/interactive-supports-focus": ["error"],
"jsx-a11y/lang": ["error"],
"jsx-a11y/media-has-caption": ["error"],
"jsx-a11y/mouse-events-have-key-events": ["error"],
"jsx-a11y/no-access-key": ["error"],
"jsx-a11y/no-autofocus": [
"error",
{
"ignoreNonDOM": true
}
],
"jsx-a11y/no-distracting-elements": [
"error",
{
"elements": ["marquee", "blink"]
}
],
"jsx-a11y/no-interactive-element-to-noninteractive-role": ["error"],
"jsx-a11y/no-noninteractive-element-interactions": ["error"],
"jsx-a11y/no-noninteractive-element-to-interactive-role": ["error"],
"jsx-a11y/no-noninteractive-tabindex": ["error"],
"jsx-a11y/no-redundant-roles": ["error"],
"jsx-a11y/no-static-element-interactions": ["error"],
"jsx-a11y/role-has-required-aria-props": ["error"],
"jsx-a11y/role-supports-aria-props": ["error"],
"jsx-a11y/scope": ["error"],
"jsx-a11y/tabindex-no-positive": ["error"],
"@stylistic/comma-spacing": ["error"],
"@stylistic/func-call-spacing": ["error"],
"@stylistic/type-annotation-spacing": ["error"],
"react/rules-of-hooks": "error",
"react/exhaustive-deps": "error",
"typescript/adjacent-overload-signatures": ["error"],
"typescript/array-type": [
"error",
{
"default": "array-simple"
}
],
"typescript/no-restricted-types": [
"error",
{
"types": {
"String": {
"message": "Use `string` instead.",
"fixWith": "string"
},
"Number": {
"message": "Use `number` instead.",
"fixWith": "number"
},
"Boolean": {
"message": "Use `boolean` instead.",
"fixWith": "boolean"
},
"Symbol": {
"message": "Use `symbol` instead.",
"fixWith": "symbol"
},
"Object": {
"message": "The `Object` type is mostly the same as `unknown`. You probably want `Record<string, unknown>` instead. See https://github.com/typescript-eslint/typescript-eslint/pull/848",
"fixWith": "Record<string, unknown>"
},
"{}": {
"message": "The `{}` type is mostly the same as `unknown`. You probably want `Record<string, unknown>` instead.",
"fixWith": "Record<string, unknown>"
},
"object": {
"message": "The `object` type is hard to use. Use `Record<string, unknown>` instead. See: https://github.com/typescript-eslint/typescript-eslint/pull/848",
"fixWith": "Record<string, unknown>"
},
"Function": "Use a specific function type instead, like `() => void`."
}
}
],
"typescript/consistent-type-imports": [
"error",
{
"prefer": "type-imports"
}
],
"typescript/consistent-type-assertions": [
"error",
{
"assertionStyle": "as",
"objectLiteralTypeAssertions": "allow-as-parameter"
}
],
"typescript/no-empty-interface": ["error"],
"typescript/no-misused-new": ["error"],
"typescript/no-namespace": [
"error",
{
"allowDeclarations": true
}
],
"typescript/triple-slash-reference": ["error"],
"typescript/no-confusing-non-null-assertion": ["error"],
"typescript/no-extra-non-null-assertion": ["error"],
"typescript/no-non-null-asserted-optional-chain": ["error"],
"typescript/no-unnecessary-type-constraint": ["error"],
"typescript/no-var-requires": ["error"],
"typescript/prefer-as-const": ["error"],
"typescript/prefer-enum-initializers": ["error"],
"typescript/prefer-function-type": ["error"],
"typescript/prefer-literal-enum-member": ["error"],
"typescript/prefer-namespace-keyword": ["error"],
"typescript/prefer-ts-expect-error": ["error"],
"typescript/unified-signatures": ["error"],
"vitest/require-mock-type-parameters": "off",
"no-debugger": ["error"]
},
"overrides": [
{
"files": ["**/*.ts", "**/*.tsx"],
"rules": {
"typescript/explicit-member-accessibility": [
"error",
{
"accessibility": "no-public"
}
]
}
},
{
"files": ["packages/website/**/*"],
"rules": {
"react/react-compiler": "off"
}
}
]
}