@automatelab/citation-intelligence 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +74 -8
  2. package/dist/adapters/anthropic.d.ts.map +1 -1
  3. package/dist/adapters/anthropic.js +4 -2
  4. package/dist/adapters/anthropic.js.map +1 -1
  5. package/dist/adapters/bing.js +1 -1
  6. package/dist/adapters/bing.js.map +1 -1
  7. package/dist/adapters/brave.js +1 -1
  8. package/dist/adapters/brave.js.map +1 -1
  9. package/dist/adapters/gemini.d.ts.map +1 -1
  10. package/dist/adapters/gemini.js +5 -1
  11. package/dist/adapters/gemini.js.map +1 -1
  12. package/dist/adapters/google-ai-mode.d.ts +6 -0
  13. package/dist/adapters/google-ai-mode.d.ts.map +1 -0
  14. package/dist/adapters/google-ai-mode.js +48 -0
  15. package/dist/adapters/google-ai-mode.js.map +1 -0
  16. package/dist/adapters/openai.d.ts.map +1 -1
  17. package/dist/adapters/openai.js +3 -1
  18. package/dist/adapters/openai.js.map +1 -1
  19. package/dist/adapters/perplexity.d.ts +2 -1
  20. package/dist/adapters/perplexity.d.ts.map +1 -1
  21. package/dist/adapters/perplexity.js +5 -2
  22. package/dist/adapters/perplexity.js.map +1 -1
  23. package/dist/index.js +50 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/prompts.d.ts +3 -0
  26. package/dist/prompts.d.ts.map +1 -0
  27. package/dist/prompts.js +137 -0
  28. package/dist/prompts.js.map +1 -0
  29. package/dist/resources.d.ts +3 -0
  30. package/dist/resources.d.ts.map +1 -0
  31. package/dist/resources.js +242 -0
  32. package/dist/resources.js.map +1 -0
  33. package/dist/tools/am-i-cited.d.ts +73 -10
  34. package/dist/tools/am-i-cited.d.ts.map +1 -1
  35. package/dist/tools/am-i-cited.js +115 -15
  36. package/dist/tools/am-i-cited.js.map +1 -1
  37. package/dist/tools/answer-box-position.d.ts +4 -4
  38. package/dist/tools/answer-box-position.js +2 -2
  39. package/dist/tools/answer-box-position.js.map +1 -1
  40. package/dist/tools/canonical-competitor-set.d.ts +73 -0
  41. package/dist/tools/canonical-competitor-set.d.ts.map +1 -0
  42. package/dist/tools/canonical-competitor-set.js +208 -0
  43. package/dist/tools/canonical-competitor-set.js.map +1 -0
  44. package/dist/tools/check-citations.d.ts +11 -5
  45. package/dist/tools/check-citations.d.ts.map +1 -1
  46. package/dist/tools/check-citations.js +41 -8
  47. package/dist/tools/check-citations.js.map +1 -1
  48. package/dist/tools/citation-evidence.d.ts +54 -0
  49. package/dist/tools/citation-evidence.d.ts.map +1 -0
  50. package/dist/tools/citation-evidence.js +148 -0
  51. package/dist/tools/citation-evidence.js.map +1 -0
  52. package/dist/tools/citation-freshness-score.d.ts +4 -4
  53. package/dist/tools/citation-freshness-score.js +1 -1
  54. package/dist/tools/citation-freshness-score.js.map +1 -1
  55. package/dist/tools/citation-provenance.d.ts +6 -4
  56. package/dist/tools/citation-provenance.d.ts.map +1 -1
  57. package/dist/tools/citation-provenance.js +17 -8
  58. package/dist/tools/citation-provenance.js.map +1 -1
  59. package/dist/tools/cited-for-diff.d.ts +5 -5
  60. package/dist/tools/cited-for-diff.js +1 -1
  61. package/dist/tools/cited-for-diff.js.map +1 -1
  62. package/dist/tools/cited-for.d.ts +5 -5
  63. package/dist/tools/cited-for.js +1 -1
  64. package/dist/tools/cited-for.js.map +1 -1
  65. package/dist/tools/compete-for-query.d.ts +4 -4
  66. package/dist/tools/compete-for-query.js +1 -1
  67. package/dist/tools/compete-for-query.js.map +1 -1
  68. package/dist/tools/crawler-access-audit.d.ts +49 -0
  69. package/dist/tools/crawler-access-audit.d.ts.map +1 -0
  70. package/dist/tools/crawler-access-audit.js +256 -0
  71. package/dist/tools/crawler-access-audit.js.map +1 -0
  72. package/dist/tools/gsc-citation-gap.d.ts +5 -5
  73. package/dist/tools/gsc-citation-gap.d.ts.map +1 -1
  74. package/dist/tools/gsc-citation-gap.js +7 -2
  75. package/dist/tools/gsc-citation-gap.js.map +1 -1
  76. package/dist/tools/run-panel.d.ts +5 -5
  77. package/dist/tools/run-panel.d.ts.map +1 -1
  78. package/dist/tools/run-panel.js +13 -4
  79. package/dist/tools/run-panel.js.map +1 -1
  80. package/dist/tools/sitemap-citation-map.d.ts +77 -0
  81. package/dist/tools/sitemap-citation-map.d.ts.map +1 -0
  82. package/dist/tools/sitemap-citation-map.js +149 -0
  83. package/dist/tools/sitemap-citation-map.js.map +1 -0
  84. package/dist/tools/structured-data-repair.d.ts +30 -0
  85. package/dist/tools/structured-data-repair.d.ts.map +1 -0
  86. package/dist/tools/structured-data-repair.js +297 -0
  87. package/dist/tools/structured-data-repair.js.map +1 -0
  88. package/dist/types.d.ts +11 -2
  89. package/dist/types.d.ts.map +1 -1
  90. package/dist/types.js +24 -1
  91. package/dist/types.js.map +1 -1
  92. package/package.json +59 -57
  93. package/smithery.yaml +50 -0
package/README.md CHANGED
@@ -36,10 +36,13 @@ The AI citation tracking market is dominated by VC-funded dashboards starting at
36
36
 
37
37
  ## Tools
38
38
 
39
+ **Start with `citation_provenance` or `am_i_cited`.** Single-engine results (`check_citations` with a pinned engine) are directional; multi-engine consensus is the honest signal. A URL cited by 4 of 5 engines is a very different finding than one cited by 1.
40
+
39
41
  | Tool | Purpose |
40
42
  |---|---|
41
- | `check_citations` | URLs cited by Perplexity / Claude / ChatGPT / Gemini / Bing for a query |
42
- | `am_i_cited` | Presence + rank for a domain across a query cluster |
43
+ | `citation_provenance` | **Recommended first tool.** Fan a query across engines; per-URL cross-engine consensus matrix. Returns `interpretation_note` per engine. |
44
+ | `am_i_cited` | Domain citation check. With `engine=auto` (default): fans across all available LLM engines, returns per-engine breakdown + cross-engine consensus. Pin `engine=` to reduce cost. |
45
+ | `check_citations` | URLs cited by Perplexity / Claude / ChatGPT / Gemini / Google AI Mode for a query; or web rank via bing_serp / brave_serp |
43
46
  | `ai_overview` | Google AI Overview presence + cited sources |
44
47
  | `cited_for` | Queries the domain has been cited for, from local cache |
45
48
  | `predict_citation` | Citation likelihood from public signals - no LLM fired |
@@ -50,6 +53,68 @@ The AI citation tracking market is dominated by VC-funded dashboards starting at
50
53
  | `wikipedia_mentions` | List Wikipedia articles referencing a domain (zero keys) |
51
54
  | `audit_sitemap` | Bulk `predict_citation` across every URL in a sitemap, worst-first |
52
55
  | `gsc_citation_gap` | Join Google Search Console performance with AI citation status |
56
+ | `compete_for_query` | End-to-end competitive snapshot: your URL vs top cited competitors |
57
+ | `citation_freshness_score` | Recency score (halflife=365d) for the pages an engine cites |
58
+ | `cited_for_diff` | Diff of `cited_for` between two time windows for a domain |
59
+ | `schema_audit` | Deep schema.org validation - required fields per `@type`, malformed JSON-LD |
60
+ | `llms_txt_generator` | Generate an `llms.txt` (https://llmstxt.org) from a sitemap |
61
+ | `answer_box_position` | Bin each citation's first mention in `raw_answer` into early/middle/late thirds |
62
+ | `citation_provenance` | Fan a query across engines, report per-URL cross-engine consensus |
63
+ | `citation_evidence` | Extract the cited snippet from `raw_answer` for each citation (why, not just that) |
64
+ | `crawler_access_audit` | Verify GPTBot / ClaudeBot / PerplexityBot / CCBot / Google-Extended etc. can fetch a URL |
65
+ | `sitemap_citation_map` | Cross-reference sitemap URLs with cached citations (inverse of audit_sitemap) |
66
+ | `canonical_competitor_set` | Top cited domains per query, aggregated across engines |
67
+
68
+ ### Prompts
69
+
70
+ Server-side prompt templates the client can offer end users (call via the MCP prompt list):
71
+
72
+ - `audit_citation_readiness(url)` - chains `predict_citation` + `schema_audit`
73
+ - `competitor_snapshot(query, your_url?)` - chains `canonical_competitor_set` + `compete_for_query`
74
+ - `ai_crawler_checkup(url)` - runs `crawler_access_audit` and writes a remediation list
75
+ - `citation_gap_analysis(domain, days?)` - drives `gsc_citation_gap` and suggests next moves
76
+ - `sitemap_coverage_review(sitemap_url)` - runs `sitemap_citation_map` and recommends priorities
77
+
78
+ ### Resources
79
+
80
+ Cache views the client can read or subscribe to (no tool call required):
81
+
82
+ - `citation://cache/summary` - entry counts by type/engine, unique queries/URLs, oldest/newest
83
+ - `citation://panels` - saved panels + per-panel snapshot counts
84
+ - `citation://docs/llms-txt` - llms.txt primer (markdown)
85
+ - `citation://docs/ai-crawlers` - AI crawlers cheatsheet (markdown)
86
+ - `citation://domain/{domain}/cited-for` - dynamic template: citations for `{domain}`
87
+
88
+ ## What this actually measures
89
+
90
+ Every response includes a `surface` field that tells you exactly how the data was collected. Understanding this is important before drawing conclusions.
91
+
92
+ | Surface | Engines | What it means |
93
+ |---|---|---|
94
+ | `consumer_scrape` | `perplexity`, `google_ai_mode` | Proxied through a real consumer-facing AI search product. Closest to what your users see. |
95
+ | `api_proxy` | `claude`, `openai`, `gemini` | API call to a search-enabled LLM. **May differ from consumer product behavior** — different model versions, no UI-level ranking logic, no personalization. Use as a directional proxy, not as ground truth. |
96
+ | `web_rank` | `bing_serp`, `brave_serp` | Traditional web search rank (not LLM citation). Measures whether a URL appears in SERP results, not whether an LLM cites it. |
97
+ | `static_signal` | `predict_citation`, `wikipedia_mentions` | Offline signal computed from public data. No live LLM query. |
98
+
99
+ ### Per-engine notes
100
+
101
+ **`perplexity` (consumer_scrape)** — Sonar Pro via the Perplexity API with a consumer-equivalent system prompt. Reasonably close to Perplexity.ai. Citations come from `search_results` in the response; the `citations` fallback contains URL-only entries without title.
102
+
103
+ **`claude` (api_proxy)** — Claude Sonnet via the Anthropic Messages API with `web_search` tool enabled. The consumer Claude.ai product uses different routing and ranking logic. Citation behavior can differ, especially for recent/time-sensitive queries.
104
+
105
+ **`openai` (api_proxy)** — `gpt-4o-search-preview` via the OpenAI Responses API. This is the model OpenAI ships to mirror SearchGPT behavior — closer to consumer than `gpt-4o-mini`, but still API-tier.
106
+
107
+ **`gemini` (api_proxy)** — Gemini 2.5 Pro via the Generative Language API with `google_search` grounding. Consumer Gemini uses the same grounding index but different re-ranking. Results are directional.
108
+
109
+ **`google_ai_mode` (consumer_scrape)** — Google AI Mode results via SerpAPI. Closest to what users see in Google Search. Requires `SERPAPI_KEY`.
110
+
111
+ **`bing_serp` / `brave_serp` (web_rank)** — Traditional SERP rank. Does NOT measure LLM citations. Use `check_citations` with these engines to compare organic web rank against LLM citation rank. `am_i_cited` refuses these engines — it only measures LLM behavior.
112
+
113
+ The proxy nature of `api_proxy` engines is a feature, not a bug: it lets you run citation checks without consuming expensive consumer-product quota. Just don't report API-proxy numbers as "ChatGPT cites you" without the caveat.
114
+
115
+ Every tool response includes an `interpretation_note` field that summarizes the fidelity in one sentence. Full per-engine fidelity ratings: [docs/surface-fidelity.md](docs/surface-fidelity.md).
116
+
117
+ ---
53
118
 
54
119
  ## Quick start
55
120
 
@@ -102,12 +167,13 @@ Set only the keys you have. Any MCP client that supports stdio transport works -
102
167
 
103
168
  | Var | Purpose | Free tier? |
104
169
  |---|---|---|
105
- | `PERPLEXITY_API_KEY` | check_citations (Perplexity) | Yes |
106
- | `SERPAPI_KEY` | ai_overview | 100/month free |
107
- | `BING_API_KEY` | check_citations (Bing) | Yes |
108
- | `ANTHROPIC_API_KEY` | check_citations (Claude) | Paid only |
109
- | `OPENAI_API_KEY` | check_citations (ChatGPT) | Paid only |
110
- | `GEMINI_API_KEY` | check_citations (Gemini) | Yes |
170
+ | `PERPLEXITY_API_KEY` | check_citations (perplexity — consumer_scrape) | Yes |
171
+ | `SERPAPI_KEY` | ai_overview + check_citations (google_ai_mode — consumer_scrape) | 100/month free |
172
+ | `ANTHROPIC_API_KEY` | check_citations (claude — api_proxy) | Paid only |
173
+ | `OPENAI_API_KEY` | check_citations (openai — api_proxy) | Paid only |
174
+ | `GEMINI_API_KEY` | check_citations (gemini — api_proxy) | Yes |
175
+ | `BING_API_KEY` | check_citations (bing_serp — web_rank) | Yes |
176
+ | `BRAVE_API_KEY` | check_citations (brave_serp — web_rank) | Yes (2000/month) |
111
177
  | `CITATION_CACHE_TTL_DAYS` | Cache TTL for citation_check entries (default 7) | n/a |
112
178
  | `CITATION_AI_OVERVIEW_TTL_DAYS` | Cache TTL for ai_overview entries (default 1) | n/a |
113
179
  | `CITATION_CONFIG_DIR` | Override config dir (default `~/.config/citation-intelligence`) | n/a |
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/adapters/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAa3D,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAsDxB"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/adapters/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAa3D,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAwDxB"}
@@ -10,10 +10,12 @@ export async function claudeSearch(query, maxResults) {
10
10
  message: "Set ANTHROPIC_API_KEY to use the Claude engine. Get a key at https://console.anthropic.com.",
11
11
  });
12
12
  }
13
+ // System prompt approximates Claude.ai consumer behavior: search-first with citation list.
13
14
  const body = JSON.stringify({
14
- model: "claude-sonnet-4-6",
15
+ model: "claude-sonnet-4-7",
15
16
  max_tokens: 1024,
16
- tools: [{ type: "web_search_20250305", name: "web_search", max_uses: 3 }],
17
+ system: "You are a search assistant. Answer with inline citations. List each source URL you used.",
18
+ tools: [{ type: "web_search_20250305", name: "web_search", max_uses: 5 }],
17
19
  messages: [{ role: "user", content: query }],
18
20
  });
19
21
  const res = await fetchJson("https://api.anthropic.com/v1/messages", {
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/adapters/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAc5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EACL,6FAA6F;SAChG,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC7C,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,uCAAuC,EACvC;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,WAAW,EAAE,GAAG;YAChB,mBAAmB,EAAE,YAAY;YACjC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI;KACL,CACF,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YACnD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACxC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChB,SAAS,CAAC,IAAI,CAAC;oBACb,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;iBAC3B,CAAC,CAAC;gBACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;oBAAE,MAAM;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/adapters/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAc5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EACL,6FAA6F;SAChG,CAAC,CAAC;IACL,CAAC;IAED,2FAA2F;IAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,0FAA0F;QAClG,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC7C,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,uCAAuC,EACvC;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,WAAW,EAAE,GAAG;YAChB,mBAAmB,EAAE,YAAY;YACjC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI;KACL,CACF,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YACnD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACxC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChB,SAAS,CAAC,IAAI,CAAC;oBACb,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;iBAC3B,CAAC,CAAC;gBACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;oBAAE,MAAM;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;AACtE,CAAC"}
@@ -5,7 +5,7 @@ export async function bingSearch(query, maxResults) {
5
5
  if (!key) {
6
6
  throw new ToolFetchError({
7
7
  type: "missing_key",
8
- engine: "bing",
8
+ engine: "bing_serp",
9
9
  env_var: "BING_API_KEY",
10
10
  message: "Set BING_API_KEY to use the Bing engine. Free tier at https://www.microsoft.com/en-us/bing/apis/bing-web-search-api.",
11
11
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bing.js","sourceRoot":"","sources":["../../src/adapters/bing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAS5D,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,cAAc;YACvB,OAAO,EACL,sHAAsH;SACzH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,8CAA8C,MAAM,CAAC,QAAQ,EAAE,EAAE,EACjE,EAAE,OAAO,EAAE,EAAE,2BAA2B,EAAE,GAAG,EAAE,EAAE,CAClD,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,CAAC,CAAC,GAAG;YAAE,SAAS;QACrB,SAAS,CAAC,IAAI,CAAC;YACb,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,KAAK,EAAE,CAAC,CAAC,IAAI;YACb,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,IAAI,EAAE;SACb,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;YAAE,MAAM;IAC5C,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"bing.js","sourceRoot":"","sources":["../../src/adapters/bing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAS5D,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,cAAc;YACvB,OAAO,EACL,sHAAsH;SACzH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,8CAA8C,MAAM,CAAC,QAAQ,EAAE,EAAE,EACjE,EAAE,OAAO,EAAE,EAAE,2BAA2B,EAAE,GAAG,EAAE,EAAE,CAClD,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,CAAC,CAAC,GAAG;YAAE,SAAS;QACrB,SAAS,CAAC,IAAI,CAAC;YACb,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,KAAK,EAAE,CAAC,CAAC,IAAI;YACb,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,IAAI,EAAE;SACb,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;YAAE,MAAM;IAC5C,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
@@ -5,7 +5,7 @@ export async function braveSearch(query, maxResults) {
5
5
  if (!key) {
6
6
  throw new ToolFetchError({
7
7
  type: "missing_key",
8
- engine: "brave",
8
+ engine: "brave_serp",
9
9
  env_var: "BRAVE_API_KEY",
10
10
  message: "Set BRAVE_API_KEY to use the Brave engine. Free tier at https://api.search.brave.com (2000 queries/month).",
11
11
  });
@@ -1 +1 @@
1
- {"version":3,"file":"brave.js","sourceRoot":"","sources":["../../src/adapters/brave.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAa5D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,eAAe;YACxB,OAAO,EACL,4GAA4G;SAC/G,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1F,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,kDAAkD,MAAM,CAAC,QAAQ,EAAE,EAAE,EACrE;QACE,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,sBAAsB,EAAE,GAAG;SAC5B;KACF,CACF,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,GAAG;YAAE,SAAS;QACrB,SAAS,CAAC,IAAI,CAAC;YACb,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,WAAW;YACtB,IAAI,EAAE,IAAI,EAAE;SACb,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;YAAE,MAAM;IAC5C,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"brave.js","sourceRoot":"","sources":["../../src/adapters/brave.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAa5D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,eAAe;YACxB,OAAO,EACL,4GAA4G;SAC/G,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1F,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,kDAAkD,MAAM,CAAC,QAAQ,EAAE,EAAE,EACrE;QACE,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,sBAAsB,EAAE,GAAG;SAC5B;KACF,CACF,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,GAAG;YAAE,SAAS;QACrB,SAAS,CAAC,IAAI,CAAC;YACb,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,WAAW;YACtB,IAAI,EAAE,IAAI,EAAE;SACb,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;YAAE,MAAM;IAC5C,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAW3D,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CA+CxB"}
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAW3D,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAmDxB"}
@@ -10,11 +10,15 @@ export async function geminiSearch(query, maxResults) {
10
10
  message: "Set GEMINI_API_KEY to use the Gemini engine. Get a key at https://aistudio.google.com/apikey.",
11
11
  });
12
12
  }
13
+ // System prompt approximates Gemini consumer app behavior: search-first with source attribution.
13
14
  const body = JSON.stringify({
15
+ system_instruction: {
16
+ parts: [{ text: "You are a search assistant. Answer with inline citations. List each source URL you used." }],
17
+ },
14
18
  contents: [{ parts: [{ text: query }] }],
15
19
  tools: [{ google_search: {} }],
16
20
  });
17
- const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${encodeURIComponent(key)}`;
21
+ const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent?key=${encodeURIComponent(key)}`;
18
22
  const res = await fetchJson(url, {
19
23
  method: "POST",
20
24
  headers: { "content-type": "application/json" },
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAY5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,gBAAgB;YACzB,OAAO,EACL,+FAA+F;SAClG,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACxC,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,gGAAgG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IAEtI,MAAM,GAAG,GAAG,MAAM,SAAS,CAAiB,GAAG,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,IAAI;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,eAAe,IAAI,EAAE,EAAE,CAAC;YAClE,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;YACzB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YAChC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC;gBACb,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK;gBACvB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;aAC3B,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;gBAAE,MAAM;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAY5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,gBAAgB;YACzB,OAAO,EACL,+FAA+F;SAClG,CAAC,CAAC;IACL,CAAC;IAED,iGAAiG;IACjG,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,kBAAkB,EAAE;YAClB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,0FAA0F,EAAE,CAAC;SAC9G;QACD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACxC,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,8FAA8F,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IAEpI,MAAM,GAAG,GAAG,MAAM,SAAS,CAAiB,GAAG,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,IAAI;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,eAAe,IAAI,EAAE,EAAE,CAAC;YAClE,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;YACzB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YAChC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC;gBACb,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK;gBACvB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;aAC3B,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;gBAAE,MAAM;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;AACtE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { AdapterResult } from "../types.js";
2
+ export declare function googleAiModeSearch(query: string, maxResults: number, opts?: {
3
+ location?: string;
4
+ hl?: string;
5
+ }): Promise<AdapterResult>;
6
+ //# sourceMappingURL=google-ai-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-ai-mode.d.ts","sourceRoot":"","sources":["../../src/adapters/google-ai-mode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAmB3D,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,aAAa,CAAC,CAgDxB"}
@@ -0,0 +1,48 @@
1
+ import { envKey } from "../lib/config.js";
2
+ import { fetchJson, ToolFetchError } from "../lib/fetch.js";
3
+ export async function googleAiModeSearch(query, maxResults, opts) {
4
+ const key = envKey("SERPAPI_KEY");
5
+ if (!key) {
6
+ throw new ToolFetchError({
7
+ type: "missing_key",
8
+ engine: "google_ai_mode",
9
+ env_var: "SERPAPI_KEY",
10
+ message: "Set SERPAPI_KEY to use the Google AI Mode engine (separate from ai_overview). Free tier at https://serpapi.com (100 searches/month).",
11
+ });
12
+ }
13
+ const params = new URLSearchParams({
14
+ engine: "google_ai_mode",
15
+ q: query,
16
+ api_key: key,
17
+ hl: opts?.hl ?? "en",
18
+ });
19
+ if (opts?.location)
20
+ params.set("location", opts.location);
21
+ const res = await fetchJson(`https://serpapi.com/search?${params.toString()}`);
22
+ const block = res.ai_mode ?? res;
23
+ const textParts = [];
24
+ for (const t of block.text_blocks ?? []) {
25
+ const s = t.text ?? t.snippet;
26
+ if (s)
27
+ textParts.push(s);
28
+ }
29
+ const citations = [];
30
+ const seen = new Set();
31
+ for (const ref of block.references ?? []) {
32
+ if (!ref.link || seen.has(ref.link))
33
+ continue;
34
+ seen.add(ref.link);
35
+ citations.push({
36
+ url: ref.link,
37
+ title: ref.title,
38
+ rank: citations.length + 1,
39
+ });
40
+ if (citations.length >= maxResults)
41
+ break;
42
+ }
43
+ return {
44
+ citations,
45
+ raw_answer: textParts.join("\n\n") || undefined,
46
+ };
47
+ }
48
+ //# sourceMappingURL=google-ai-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-ai-mode.js","sourceRoot":"","sources":["../../src/adapters/google-ai-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAoB5D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,UAAkB,EAClB,IAAyC;IAEzC,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,aAAa;YACtB,OAAO,EACL,sIAAsI;SACzI,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,MAAM,EAAE,gBAAgB;QACxB,CAAC,EAAE,KAAK;QACR,OAAO,EAAE,GAAG;QACZ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI;KACrB,CAAC,CAAC;IACH,IAAI,IAAI,EAAE,QAAQ;QAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE1D,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,8BAA8B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAClD,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;IACjC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC;YACb,GAAG,EAAE,GAAG,CAAC,IAAI;YACb,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;YAAE,MAAM;IAC5C,CAAC;IAED,OAAO;QACL,SAAS;QACT,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS;KAChD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAmB3D,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAqDxB"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAmB3D,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAuDxB"}
@@ -1,7 +1,7 @@
1
1
  import { envKey } from "../lib/config.js";
2
2
  import { fetchJson, ToolFetchError } from "../lib/fetch.js";
3
3
  import { log } from "../lib/log.js";
4
- const OPENAI_MODEL = "gpt-4o-mini";
4
+ const OPENAI_MODEL = "gpt-4o-search-preview";
5
5
  export async function openaiSearch(query, maxResults) {
6
6
  const key = envKey("OPENAI_API_KEY");
7
7
  if (!key) {
@@ -13,9 +13,11 @@ export async function openaiSearch(query, maxResults) {
13
13
  });
14
14
  }
15
15
  log.debug("openai web_search", { model: OPENAI_MODEL });
16
+ // System prompt approximates ChatGPT consumer behavior: answer with inline citations.
16
17
  const body = JSON.stringify({
17
18
  model: OPENAI_MODEL,
18
19
  tools: [{ type: "web_search_preview" }],
20
+ system: "You are a search assistant. Answer with inline citations. List each source URL you used.",
19
21
  input: query,
20
22
  });
21
23
  const res = await fetchJson("https://api.openai.com/v1/responses", {
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGpC,MAAM,YAAY,GAAG,aAAa,CAAC;AAiBnC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,gBAAgB;YACzB,OAAO,EACL,yFAAyF;SAC5F,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;QACvC,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,qCAAqC,EACrC;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,GAAG,EAAE;YAC9B,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI;KACL,CACF,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/D,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;oBAC9D,SAAS;gBACX,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,SAAS,CAAC,IAAI,CAAC;oBACb,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;iBAC3B,CAAC,CAAC;gBACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;oBAAE,MAAM;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGpC,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAiB7C,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,gBAAgB;YACzB,OAAO,EACL,yFAAyF;SAC5F,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACxD,sFAAsF;IACtF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;QACvC,MAAM,EAAE,0FAA0F;QAClG,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,qCAAqC,EACrC;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,GAAG,EAAE;YAC9B,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI;KACL,CACF,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/D,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;oBAC9D,SAAS;gBACX,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,SAAS,CAAC,IAAI,CAAC;oBACb,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;iBAC3B,CAAC,CAAC;gBACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;oBAAE,MAAM;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;AACtE,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { AdapterResult } from "../types.js";
2
- export declare function perplexitySearch(query: string, maxResults: number): Promise<AdapterResult>;
2
+ export declare const PERPLEXITY_MODEL_DEFAULT = "sonar-pro";
3
+ export declare function perplexitySearch(query: string, maxResults: number, model?: string): Promise<AdapterResult>;
3
4
  //# sourceMappingURL=perplexity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"perplexity.d.ts","sourceRoot":"","sources":["../../src/adapters/perplexity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAU3D,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAwDxB"}
1
+ {"version":3,"file":"perplexity.d.ts","sourceRoot":"","sources":["../../src/adapters/perplexity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAU3D,eAAO,MAAM,wBAAwB,cAAc,CAAC;AAEpD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAiC,GACvC,OAAO,CAAC,aAAa,CAAC,CA0DxB"}
@@ -1,6 +1,7 @@
1
1
  import { envKey } from "../lib/config.js";
2
2
  import { fetchJson, ToolFetchError } from "../lib/fetch.js";
3
- export async function perplexitySearch(query, maxResults) {
3
+ export const PERPLEXITY_MODEL_DEFAULT = "sonar-pro";
4
+ export async function perplexitySearch(query, maxResults, model = PERPLEXITY_MODEL_DEFAULT) {
4
5
  const key = envKey("PERPLEXITY_API_KEY");
5
6
  if (!key) {
6
7
  throw new ToolFetchError({
@@ -10,8 +11,10 @@ export async function perplexitySearch(query, maxResults) {
10
11
  message: "Set PERPLEXITY_API_KEY to use the Perplexity engine. Sign up at https://www.perplexity.ai/settings/api",
11
12
  });
12
13
  }
14
+ // System prompt approximates Perplexity.ai consumer behavior: search-first with citations.
13
15
  const body = JSON.stringify({
14
- model: "sonar",
16
+ model,
17
+ system: "You are a search assistant. Answer with inline citations. List each source URL you used.",
15
18
  messages: [{ role: "user", content: query }],
16
19
  return_citations: true,
17
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"perplexity.js","sourceRoot":"","sources":["../../src/adapters/perplexity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAW5D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EACL,wGAAwG;SAC3G,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5C,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,4CAA4C,EAC5C;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,GAAG,EAAE;YAC9B,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI;KACL,CACF,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,SAAS;YACxC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,SAAS,CAAC,IAAI,CAAC;gBACb,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;aAC3B,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;gBAAE,MAAM;QAC5C,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QACnD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;gBAAE,MAAM;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;IACtD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"perplexity.js","sourceRoot":"","sources":["../../src/adapters/perplexity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAW5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,UAAkB,EAClB,QAAgB,wBAAwB;IAExC,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CAAC;YACvB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EACL,wGAAwG;SAC3G,CAAC,CAAC;IACL,CAAC;IAED,2FAA2F;IAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK;QACL,MAAM,EAAE,0FAA0F;QAClG,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5C,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,4CAA4C,EAC5C;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,GAAG,EAAE;YAC9B,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI;KACL,CACF,CAAC;IAEF,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,SAAS;YACxC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,SAAS,CAAC,IAAI,CAAC;gBACb,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;aAC3B,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;gBAAE,MAAM;QAC5C,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QACnD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU;gBAAE,MAAM;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;IACtD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,CAAC"}
package/dist/index.js CHANGED
@@ -22,11 +22,18 @@ import { schemaAudit, schemaAuditInputSchema } from "./tools/schema-audit.js";
22
22
  import { llmsTxtGenerator, llmsTxtGeneratorInputSchema } from "./tools/llms-txt-generator.js";
23
23
  import { answerBoxPosition, answerBoxPositionInputSchema } from "./tools/answer-box-position.js";
24
24
  import { citationProvenance, citationProvenanceInputSchema } from "./tools/citation-provenance.js";
25
+ import { citationEvidence, citationEvidenceInputSchema } from "./tools/citation-evidence.js";
26
+ import { crawlerAccessAudit, crawlerAccessAuditInputSchema } from "./tools/crawler-access-audit.js";
27
+ import { sitemapCitationMap, sitemapCitationMapInputSchema } from "./tools/sitemap-citation-map.js";
28
+ import { canonicalCompetitorSet, canonicalCompetitorSetInputSchema } from "./tools/canonical-competitor-set.js";
29
+ import { structuredDataRepair, structuredDataRepairInputSchema } from "./tools/structured-data-repair.js";
30
+ import { registerPrompts } from "./prompts.js";
31
+ import { registerResources } from "./resources.js";
25
32
  import { ToolFetchError } from "./lib/fetch.js";
26
33
  import { log } from "./lib/log.js";
27
34
  const server = new McpServer({
28
35
  name: "@automatelab/citation-intelligence",
29
- version: "0.5.1",
36
+ version: "0.7.0",
30
37
  });
31
38
  function toolError(err) {
32
39
  return {
@@ -126,10 +133,32 @@ server.registerTool("citation_provenance", {
126
133
  description: "Fan a query out across multiple AI engines and report per-URL cross-engine consensus. Returns each unique cited URL with the list of engines that cited it, plus a consensus_urls list (URLs cited by ALL engines). High engine_count = strong cross-engine citation signal; engine_count=1 = engine-specific.",
127
134
  inputSchema: citationProvenanceInputSchema,
128
135
  }, (args) => wrapHandler(() => citationProvenance(args)));
136
+ server.registerTool("citation_evidence", {
137
+ description: "Extract the cited snippet from the AI engine's raw answer for each citation. Calls check_citations, then for each returned URL finds the first mention in raw_answer and returns a context window plus the nearest quoted span or containing sentence. Use to see *why* an engine cited a URL, not just *that* it did. Returns 'not found' for engines without raw_answer (Bing, Brave).",
138
+ inputSchema: citationEvidenceInputSchema,
139
+ }, (args) => wrapHandler(() => citationEvidence(args)));
140
+ server.registerTool("crawler_access_audit", {
141
+ description: "Verify that major AI crawlers (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, CCBot, Google-Extended, Applebot-Extended, Bytespider, Meta-ExternalAgent, plus real-time fetch UAs) can fetch a URL. Parses robots.txt and does a live GET with each bot's User-Agent. Surfaces robots.txt blocks AND UA-based gating that breaks AI citation.",
142
+ inputSchema: crawlerAccessAuditInputSchema,
143
+ }, (args) => wrapHandler(() => crawlerAccessAudit(args)));
144
+ server.registerTool("sitemap_citation_map", {
145
+ description: "Cross-reference a sitemap with the citation cache. For each sitemap URL, reports whether it appears in cached citations (and how many queries/engines cited it). Inverse of audit_sitemap: not 'how citable is each URL', but 'has each URL actually been cited yet'. Cache must be primed via check_citations or run_panel first.",
146
+ inputSchema: sitemapCitationMapInputSchema,
147
+ }, (args) => wrapHandler(() => sitemapCitationMap(args)));
148
+ server.registerTool("canonical_competitor_set", {
149
+ description: "Fan a query across engines and aggregate citations by registered domain (not URL). Returns top competitor domains ranked by cross-engine consensus, with per-engine breakdown and top URLs per domain. Use to identify the canonical competitor set for a query - the domains every engine treats as authoritative.",
150
+ inputSchema: canonicalCompetitorSetInputSchema,
151
+ }, (args) => wrapHandler(() => canonicalCompetitorSet(args)));
152
+ server.registerTool("structured_data_repair", {
153
+ description: "Suggest missing JSON-LD additions for a URL. Fetches the page, detects existing schema types, and returns ready-to-paste templates for types that are missing but signalled by page content (BlogPosting from og:type=article or bylines, FAQPage from Q&A pairs, HowTo from numbered steps, BreadcrumbList from nested paths, Organization on homepages). Templates are pre-filled from page metadata where possible; fields marked FILL: require manual completion.",
154
+ inputSchema: structuredDataRepairInputSchema,
155
+ }, (args) => wrapHandler(() => structuredDataRepair(args)));
156
+ registerPrompts(server);
157
+ registerResources(server);
129
158
  const transport = new StdioServerTransport();
130
159
  await server.connect(transport);
131
160
  log.info("server ready on stdio", {
132
- version: "0.5.1",
161
+ version: "0.7.0",
133
162
  log_level: log.level(),
134
163
  tools: [
135
164
  "check_citations",
@@ -151,6 +180,25 @@ log.info("server ready on stdio", {
151
180
  "llms_txt_generator",
152
181
  "answer_box_position",
153
182
  "citation_provenance",
183
+ "citation_evidence",
184
+ "crawler_access_audit",
185
+ "sitemap_citation_map",
186
+ "canonical_competitor_set",
187
+ "structured_data_repair",
188
+ ],
189
+ prompts: [
190
+ "audit_citation_readiness",
191
+ "competitor_snapshot",
192
+ "ai_crawler_checkup",
193
+ "citation_gap_analysis",
194
+ "sitemap_coverage_review",
195
+ ],
196
+ resources: [
197
+ "citation://cache/summary",
198
+ "citation://panels",
199
+ "citation://docs/llms-txt",
200
+ "citation://docs/ai-crawlers",
201
+ "citation://domain/{domain}/cited-for",
154
202
  ],
155
203
  });
156
204
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,0CAA0C;AAC1C,yEAAyE;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,cAAc,EACd,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACL,eAAe,EACf,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAChH,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACpG,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACpG,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAChH,OAAO,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,oCAAoC;IAC1C,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAQH,SAAS,SAAS,CAAC,GAAc;IAC/B,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAI,OAAyB;IAC/C,OAAO,OAAO,EAAE;SACb,IAAI,CAAC,CAAC,MAAM,EAAgB,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAClE,iBAAiB,EAAE,MAA4C;KAChE,CAAC,CAAC;SACF,KAAK,CAAC,CAAC,GAAY,EAAgB,EAAE;QACpC,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YACxD,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;IACE,WAAW,EACT,sQAAsQ;IACxQ,WAAW,EAAE,yBAAyB;CACvC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAClD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;IACE,WAAW,EACT,2NAA2N;IAC7N,WAAW,EAAE,mBAAmB;CACjC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;IACE,WAAW,EACT,uIAAuI;IACzI,WAAW,EAAE,qBAAqB;CACnC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;IACE,WAAW,EACT,yMAAyM;IAC3M,WAAW,EAAE,mBAAmB;CACjC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;IACE,WAAW,EACT,wQAAwQ;IAC1Q,WAAW,EAAE,0BAA0B;CACxC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CACnD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;IACE,WAAW,EACT,iRAAiR;IACnR,WAAW,EAAE,uBAAuB;CACrC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAChD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;IACE,WAAW,EACT,2JAA2J;IAC7J,WAAW,EAAE,mBAAmB;CACjC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;IACE,WAAW,EACT,mMAAmM;IACrM,WAAW,EAAE,wBAAwB;CACtC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACjD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;IACE,WAAW,EACT,8LAA8L;IAChM,WAAW,EAAE,yBAAyB;CACvC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAClD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;IACE,WAAW,EACT,sJAAsJ;IACxJ,WAAW,EAAE,4BAA4B;CAC1C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACrD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;IACE,WAAW,EACT,4MAA4M;IAC9M,WAAW,EAAE,uBAAuB;CACrC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAChD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;IACE,WAAW,EACT,qOAAqO;IACvO,WAAW,EAAE,0BAA0B;CACxC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CACnD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;IACE,WAAW,EACT,uTAAuT;IACzT,WAAW,EAAE,iCAAiC;CAC/C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAC1D,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;IACE,WAAW,EACT,sRAAsR;IACxR,WAAW,EAAE,uBAAuB;CACrC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAChD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;IACE,WAAW,EACT,4QAA4Q;IAC9Q,WAAW,EAAE,yBAAyB;CACvC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAClD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;IACE,WAAW,EACT,wYAAwY;IAC1Y,WAAW,EAAE,sBAAsB;CACpC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;IACE,WAAW,EACT,yRAAyR;IAC3R,WAAW,EAAE,2BAA2B;CACzC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;IACE,WAAW,EACT,kWAAkW;IACpW,WAAW,EAAE,4BAA4B;CAC1C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACrD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;IACE,WAAW,EACT,gTAAgT;IAClT,WAAW,EAAE,6BAA6B;CAC3C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACtD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;IACE,WAAW,EACT,0XAA0X;IAC5X,WAAW,EAAE,2BAA2B;CACzC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;IACE,WAAW,EACT,iVAAiV;IACnV,WAAW,EAAE,6BAA6B;CAC3C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACtD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;IACE,WAAW,EACT,oUAAoU;IACtU,WAAW,EAAE,6BAA6B;CAC3C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACtD,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;IACE,WAAW,EACT,qTAAqT;IACvT,WAAW,EAAE,iCAAiC;CAC/C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAC1D,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;IACE,WAAW,EACT,ucAAuc;IACzc,WAAW,EAAE,+BAA+B;CAC7C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CACxD,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,GAAG,CAAC,IAAI,CACN,uBAAuB,EACvB;IACE,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE;IACtB,KAAK,EAAE;QACL,iBAAiB;QACjB,YAAY;QACZ,aAAa;QACb,WAAW;QACX,kBAAkB;QAClB,eAAe;QACf,WAAW;QACX,gBAAgB;QAChB,iBAAiB;QACjB,oBAAoB;QACpB,eAAe;QACf,kBAAkB;QAClB,mBAAmB;QACnB,0BAA0B;QAC1B,gBAAgB;QAChB,cAAc;QACd,oBAAoB;QACpB,qBAAqB;QACrB,qBAAqB;QACrB,mBAAmB;QACnB,sBAAsB;QACtB,sBAAsB;QACtB,0BAA0B;QAC1B,wBAAwB;KACzB;IACD,OAAO,EAAE;QACP,0BAA0B;QAC1B,qBAAqB;QACrB,oBAAoB;QACpB,uBAAuB;QACvB,yBAAyB;KAC1B;IACD,SAAS,EAAE;QACT,0BAA0B;QAC1B,mBAAmB;QACnB,0BAA0B;QAC1B,6BAA6B;QAC7B,sCAAsC;KACvC;CACF,CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerPrompts(server: McpServer): void;
3
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuKvD"}