Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/atlassian

src/search-confluence.ts

32 lines · 759 B · TypeScript
import { atlassianMcpSetupMessage, callAtlassianMcp, firstArray } from './mcp.ts'

type SearchConfluenceInput = {
	query?: string
	cql?: string
	limit?: number
}

export default async function searchConfluence(input: SearchConfluenceInput = {}) {
	const query = input.query?.trim() || input.cql?.trim() || ''
	const mcp = await callAtlassianMcp(
		[
			'searchConfluenceUsingCql',
			'search_confluence_using_cql',
			'getConfluencePage',
			'search',
		],
		{
			cql: input.cql?.trim() || (query ? `text ~ "${query.replaceAll('"', '\\"')}"` : undefined),
			query,
			limit: input.limit ?? 10,
		},
	)
	if (!mcp) {
		throw new Error(atlassianMcpSetupMessage())
	}
	return {
		via: 'mcp',
		tool: mcp.tool,
		pages: firstArray(mcp.result) ?? mcp.result,
	}
}