Skip to content

Commit b3fa00b

Browse files
authored
fix(seo): answer Markdown OPTIONS on unknown paths and list every accepted knowledge-base file type (#9101)
1 parent ce1f2f5 commit b3fa00b

4 files changed

Lines changed: 19 additions & 16 deletions

File tree

‎apps/sim/app/markdown-not-found/route.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,4 @@ export const POST = notFound
3535
export const PUT = notFound
3636
export const PATCH = notFound
3737
export const DELETE = notFound
38+
export const OPTIONS = notFound

‎apps/sim/lib/compare/data/competitors/dust.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export const dustProfile: CompetitorProfile = {
5454
{
5555
question: 'Sim vs Dust for building company knowledge agents: which is better?',
5656
answer:
57-
"It depends on where the agent needs to live. Dust connects agents to sources such as Slack, Notion, Google Drive, Confluence, and GitHub and serves them in its web chat, Slack, and Microsoft Teams, with access scoped by Spaces. Sim's knowledge base combines vector and full-text search over 12 document formats with connectors that keep sources such as Google Drive, Confluence, and Slack in sync, and a knowledge agent can be published as a chat interface, a REST API, or an MCP server. Dust suits a managed assistant used mainly in chat; Sim suits a knowledge agent that also has to feed workflows or other systems.",
57+
"It depends on where the agent needs to live. Dust connects agents to sources such as Slack, Notion, Google Drive, Confluence, and GitHub and serves them in its web chat, Slack, and Microsoft Teams, with access scoped by Spaces. Sim's knowledge base combines vector and full-text search over 15 file types with connectors that keep sources such as Google Drive, Confluence, and Slack in sync, and a knowledge agent can be published as a chat interface, a REST API, or an MCP server. Dust suits a managed assistant used mainly in chat; Sim suits a knowledge agent that also has to feed workflows or other systems.",
5858
},
5959
{
6060
question: 'How does Sim compare to Dust for shared team AI assistants?',

‎apps/sim/lib/compare/data/sim.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ export const simProfile: CompetitorProfile = {
4141
{
4242
title: 'Hybrid semantic + keyword knowledge base',
4343
description:
44-
'Built-in RAG with pgvector embeddings and a generated tsvector column for combined vector + full-text search, plus a token-based chunker with configurable chunk size/overlap and 12 supported document formats (csv, doc, docx, html, json, jsonl, md, pdf, pptx, txt, xlsx, yaml).',
44+
'Built-in RAG with pgvector embeddings and a generated tsvector column for combined vector + full-text search, plus a token-based chunker with configurable chunk size/overlap and 15 supported file types (csv, doc, docx, htm, html, json, jsonl, md, pdf, pptx, txt, xls, xlsx, yaml, yml).',
4545
shortDescription:
46-
'Combines vector and full-text search with configurable chunking across 12 document formats.',
46+
'Combines vector and full-text search with configurable chunking across 15 file types.',
4747
source: {
4848
url: 'https://github.com/simstudioai/sim/blob/main/packages/db/schema.ts',
4949
label: 'Sim codebase: KB schema + file-parsers',
@@ -406,8 +406,8 @@ export const simProfile: CompetitorProfile = {
406406
],
407407
},
408408
knowledgeBaseRag: {
409-
value: `Yes: hybrid vector (pgvector) plus full-text (tsvector) search knowledge base, 12 supported document formats (csv, doc, docx, html, json, jsonl, md, pdf, pptx, txt, xlsx, yaml), configurable chunking, plus ${CONNECTOR_COUNT_LABEL} connectors that continuously sync external sources (Google Drive, Confluence, Slack, Gmail, GitHub, HubSpot, Linear, Jira, and more) into the knowledge base rather than a one-shot upload`,
410-
shortValue: `Hybrid vector + full-text search, 12 document formats, ${CONNECTOR_COUNT_LABEL} connectors`,
409+
value: `Yes: hybrid vector (pgvector) plus full-text (tsvector) search knowledge base, 15 supported file types (csv, doc, docx, htm, html, json, jsonl, md, pdf, pptx, txt, xls, xlsx, yaml, yml), configurable chunking, plus ${CONNECTOR_COUNT_LABEL} connectors that continuously sync external sources (Google Drive, Confluence, Slack, Gmail, GitHub, HubSpot, Linear, Jira, and more) into the knowledge base rather than a one-shot upload`,
410+
shortValue: `Hybrid vector + full-text search, 15 file types, ${CONNECTOR_COUNT_LABEL} connectors`,
411411
confidence: 'verified',
412412
sources: [
413413
{

‎apps/sim/scripts/test-mcp-host-e2e.ts‎

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -169,17 +169,19 @@ try {
169169
})
170170
}
171171

172-
await check('an unknown page answers a Markdown POST in Markdown, not 405', async () => {
173-
const { response } = await request(
174-
'/not-a-real-page',
175-
'python-requests/2.32.3',
176-
baseUrl.host,
177-
'POST',
178-
MARKDOWN_ACCEPT
179-
)
180-
assert.equal(response.status, 404)
181-
assert.equal(response.headers.get('content-type'), 'text/markdown; charset=utf-8')
182-
})
172+
for (const method of ['POST', 'OPTIONS']) {
173+
await check(`an unknown page answers a Markdown ${method} in Markdown`, async () => {
174+
const { response } = await request(
175+
'/not-a-real-page',
176+
'python-requests/2.32.3',
177+
baseUrl.host,
178+
method,
179+
MARKDOWN_ACCEPT
180+
)
181+
assert.equal(response.status, 404)
182+
assert.equal(response.headers.get('content-type'), 'text/markdown; charset=utf-8')
183+
})
184+
}
183185

184186
await check('a client that refuses Markdown with q=0 gets the HTML 404', async () => {
185187
const { response } = await request(

0 commit comments

Comments
 (0)