@render-harness/cap-search-exa 0.1.1 → 0.1.2

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAkCA,IAAM,IAAA,GAAO,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAEnD,IAAM,UAAA,GAAa,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,QAAQ,CAAA;AAQ5C,SAAS,WAAW,GAAA,EAAkF;AACpG,EAAA,MAAM,MAAM,GAAA,CAAI,MAAA;AAChB,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,IAAI,SAAA,IAAa,aAAA;AAAA,IAC5B,OAAA,EAAS,IAAI,OAAA,IAAW,wBAAA;AAAA,IACxB,GAAI,IAAI,iBAAA,KAAsB,MAAA,GAAY,EAAE,iBAAA,EAAmB,GAAA,CAAI,iBAAA,EAAkB,GAAI;AAAC,GAC5F;AACF;AAEA,IAAM,OAAO,UAAA,CAAW;AAAA,EACtB,IAAA,EAAM,gBAAA;AAAA,EACN,OAAA,EAAS,OAAA;AAAA,EACT,SAAA,EAAW;AAAA,IACT;AAAA,MACE,IAAA,EAAM,aAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,MAAA,EAAQ,IAAA;AAAA,MACR,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,WAAW,GAAA,EAAqC;AAC9C,IAAA,MAAM,GAAA,GAAM,WAAW,GAAG,CAAA;AAC1B,IAAA,MAAM,MAAA,GAAS,GAAA,CAAI,GAAA,CAAI,GAAA,CAAI,SAAS,CAAA;AACpC,IAAA,IAAI,CAAC,MAAA,EAAQ;AAGX,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,wBAAA,EAA2B,IAAI,SAAS,CAAA,0DAAA;AAAA,OAC1C;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAkC;AAAA,MACtC,aAAA,EAAe,UAAU,MAAM,CAAA;AAAA,KACjC;AACA,IAAA,IAAI,GAAA,CAAI,sBAAsB,MAAA,EAAW;AACvC,MAAA,OAAA,CAAQ,yBAAyB,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,iBAAiB,CAAA;AAAA,IACnE;AACA,IAAA,OAAO;AAAA,MACL;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,SAAA,EAAW,MAAA;AAAA,QACX,KAAK,GAAA,CAAI,OAAA;AAAA,QACT;AAAA;AACF,KACF;AAAA,EACF,CAAA;AAAA,EACA,OAAO,IAAA,EAAoC;AACzC,IAAA,OAAO;AAAA,MACL;AAAA,QACE,IAAA,EAAM,gBAAA;AAAA,QACN,WAAA,EAAa,6CAAA;AAAA,QACb,SAAA,EACE,+KAAA;AAAA,QACF,WAAA,EAAa,IAAA,CAAK,UAAA,EAAY,mBAAmB;AAAA;AACnD,KACF;AAAA,EACF;AACF,CAAC,CAAA;AAED,IAAO,WAAA,GAAQ","file":"index.js","sourcesContent":["/**\n * cap-search-exa — wires up Exa's hosted MCP server (https://exa.ai)\n * for any harness entry that wants high-recall web search.\n *\n * Usage in render-harness.yaml:\n *\n * capabilities:\n * - pack: \"@render-harness/cap-search-exa\"\n * version: \"^0.1\"\n * config:\n * defaultMaxResults: 10\n *\n * Surfaces:\n * - One MCP server (HTTP transport) named \"exa\" — namespaced by the\n * loader to \"cap-search-exa.exa\".\n * - One skill (skills/web-search-exa.md) explaining when to reach\n * for Exa vs other tools.\n * - envSchema entry for EXA_API_KEY.\n *\n * Config keys:\n * - `apiKeyEnv` (string, default \"EXA_API_KEY\") — env var name to\n * read for the bearer token. Override if the entry already has\n * another env var holding the key.\n * - `baseUrl` (string, default \"https://mcp.exa.ai/mcp\") — override\n * for self-hosted or staging Exa MCP endpoints.\n * - `defaultMaxResults` (number) — passed through to Exa's tool args\n * by way of an \"Exa-Default-Max-Results\" header. Optional.\n */\n\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { definePack, type PackContext } from \"@render-harness/registry\";\nimport type { McpServerConfig, SkillMetadata } from \"@render-harness/core\";\n\nconst HERE = dirname(fileURLToPath(import.meta.url));\n// dist/ is one level under the package root, so skills/ is one above.\nconst SKILLS_DIR = join(HERE, \"..\", \"skills\");\n\ninterface ExaConfig {\n apiKeyEnv?: string;\n baseUrl?: string;\n defaultMaxResults?: number;\n}\n\nfunction readConfig(ctx: PackContext): Required<Pick<ExaConfig, \"apiKeyEnv\" | \"baseUrl\">> & ExaConfig {\n const cfg = ctx.config as ExaConfig;\n return {\n apiKeyEnv: cfg.apiKeyEnv ?? \"EXA_API_KEY\",\n baseUrl: cfg.baseUrl ?? \"https://mcp.exa.ai/mcp\",\n ...(cfg.defaultMaxResults !== undefined ? { defaultMaxResults: cfg.defaultMaxResults } : {}),\n };\n}\n\nconst pack = definePack({\n name: \"cap-search-exa\",\n version: \"0.1.0\",\n envSchema: [\n {\n name: \"EXA_API_KEY\",\n required: true,\n secret: true,\n description: \"API key for Exa search (https://exa.ai). Used as a bearer token to the Exa MCP.\",\n },\n ],\n mcpServers(ctx: PackContext): McpServerConfig[] {\n const cfg = readConfig(ctx);\n const apiKey = ctx.env(cfg.apiKeyEnv);\n if (!apiKey) {\n // Fail loud at build time / boot time so users notice immediately\n // rather than getting a broken agent in production.\n throw new Error(\n `cap-search-exa: env var ${cfg.apiKeyEnv} is not set. Set it before building or starting the agent.`,\n );\n }\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n };\n if (cfg.defaultMaxResults !== undefined) {\n headers[\"Exa-Default-Max-Results\"] = String(cfg.defaultMaxResults);\n }\n return [\n {\n name: \"exa\",\n transport: \"http\",\n url: cfg.baseUrl,\n headers,\n },\n ];\n },\n skills(_ctx: PackContext): SkillMetadata[] {\n return [\n {\n name: \"web-search-exa\",\n description: \"Use Exa for high-recall, neural web search.\",\n whenToUse:\n \"When you need fresh web context, comparison shopping, or to find specific facts not in your training data. Prefer this over fetch_url unless you already have a specific URL.\",\n contentPath: join(SKILLS_DIR, \"web-search-exa.md\"),\n },\n ];\n },\n});\n\nexport default pack;\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAkCA,IAAM,IAAA,GAAO,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAEnD,IAAM,UAAA,GAAa,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,QAAQ,CAAA;AAQ5C,SAAS,WACP,GAAA,EACgE;AAChE,EAAA,MAAM,MAAM,GAAA,CAAI,MAAA;AAChB,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,IAAI,SAAA,IAAa,aAAA;AAAA,IAC5B,OAAA,EAAS,IAAI,OAAA,IAAW,wBAAA;AAAA,IACxB,GAAI,IAAI,iBAAA,KAAsB,MAAA,GAAY,EAAE,iBAAA,EAAmB,GAAA,CAAI,iBAAA,EAAkB,GAAI;AAAC,GAC5F;AACF;AAEA,IAAM,OAAO,UAAA,CAAW;AAAA,EACtB,IAAA,EAAM,gBAAA;AAAA,EACN,OAAA,EAAS,OAAA;AAAA,EACT,SAAA,EAAW;AAAA,IACT;AAAA,MACE,IAAA,EAAM,aAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,MAAA,EAAQ,IAAA;AAAA,MACR,WAAA,EACE;AAAA;AACJ,GACF;AAAA,EACA,WAAW,GAAA,EAAqC;AAC9C,IAAA,MAAM,GAAA,GAAM,WAAW,GAAG,CAAA;AAC1B,IAAA,MAAM,MAAA,GAAS,GAAA,CAAI,GAAA,CAAI,GAAA,CAAI,SAAS,CAAA;AACpC,IAAA,IAAI,CAAC,MAAA,EAAQ;AAGX,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,wBAAA,EAA2B,IAAI,SAAS,CAAA,0DAAA;AAAA,OAC1C;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAkC;AAAA,MACtC,aAAA,EAAe,UAAU,MAAM,CAAA;AAAA,KACjC;AACA,IAAA,IAAI,GAAA,CAAI,sBAAsB,MAAA,EAAW;AACvC,MAAA,OAAA,CAAQ,yBAAyB,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,iBAAiB,CAAA;AAAA,IACnE;AACA,IAAA,OAAO;AAAA,MACL;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,SAAA,EAAW,MAAA;AAAA,QACX,KAAK,GAAA,CAAI,OAAA;AAAA,QACT;AAAA;AACF,KACF;AAAA,EACF,CAAA;AAAA,EACA,OAAO,IAAA,EAAoC;AACzC,IAAA,OAAO;AAAA,MACL;AAAA,QACE,IAAA,EAAM,gBAAA;AAAA,QACN,WAAA,EAAa,6CAAA;AAAA,QACb,SAAA,EACE,+KAAA;AAAA,QACF,WAAA,EAAa,IAAA,CAAK,UAAA,EAAY,mBAAmB;AAAA;AACnD,KACF;AAAA,EACF;AACF,CAAC,CAAA;AAED,IAAO,WAAA,GAAQ","file":"index.js","sourcesContent":["/**\n * cap-search-exa — wires up Exa's hosted MCP server (https://exa.ai)\n * for any harness entry that wants high-recall web search.\n *\n * Usage in render-harness.yaml:\n *\n * capabilities:\n * - pack: \"@render-harness/cap-search-exa\"\n * version: \"^0.1\"\n * config:\n * defaultMaxResults: 10\n *\n * Surfaces:\n * - One MCP server (HTTP transport) named \"exa\" — namespaced by the\n * loader to \"cap-search-exa.exa\".\n * - One skill (skills/web-search-exa.md) explaining when to reach\n * for Exa vs other tools.\n * - envSchema entry for EXA_API_KEY.\n *\n * Config keys:\n * - `apiKeyEnv` (string, default \"EXA_API_KEY\") — env var name to\n * read for the bearer token. Override if the entry already has\n * another env var holding the key.\n * - `baseUrl` (string, default \"https://mcp.exa.ai/mcp\") — override\n * for self-hosted or staging Exa MCP endpoints.\n * - `defaultMaxResults` (number) — passed through to Exa's tool args\n * by way of an \"Exa-Default-Max-Results\" header. Optional.\n */\n\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { McpServerConfig, SkillMetadata } from \"@render-harness/core\";\nimport { definePack, type PackContext } from \"@render-harness/registry\";\n\nconst HERE = dirname(fileURLToPath(import.meta.url));\n// dist/ is one level under the package root, so skills/ is one above.\nconst SKILLS_DIR = join(HERE, \"..\", \"skills\");\n\ninterface ExaConfig {\n apiKeyEnv?: string;\n baseUrl?: string;\n defaultMaxResults?: number;\n}\n\nfunction readConfig(\n ctx: PackContext,\n): Required<Pick<ExaConfig, \"apiKeyEnv\" | \"baseUrl\">> & ExaConfig {\n const cfg = ctx.config as ExaConfig;\n return {\n apiKeyEnv: cfg.apiKeyEnv ?? \"EXA_API_KEY\",\n baseUrl: cfg.baseUrl ?? \"https://mcp.exa.ai/mcp\",\n ...(cfg.defaultMaxResults !== undefined ? { defaultMaxResults: cfg.defaultMaxResults } : {}),\n };\n}\n\nconst pack = definePack({\n name: \"cap-search-exa\",\n version: \"0.1.0\",\n envSchema: [\n {\n name: \"EXA_API_KEY\",\n required: true,\n secret: true,\n description:\n \"API key for Exa search (https://exa.ai). Used as a bearer token to the Exa MCP.\",\n },\n ],\n mcpServers(ctx: PackContext): McpServerConfig[] {\n const cfg = readConfig(ctx);\n const apiKey = ctx.env(cfg.apiKeyEnv);\n if (!apiKey) {\n // Fail loud at build time / boot time so users notice immediately\n // rather than getting a broken agent in production.\n throw new Error(\n `cap-search-exa: env var ${cfg.apiKeyEnv} is not set. Set it before building or starting the agent.`,\n );\n }\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n };\n if (cfg.defaultMaxResults !== undefined) {\n headers[\"Exa-Default-Max-Results\"] = String(cfg.defaultMaxResults);\n }\n return [\n {\n name: \"exa\",\n transport: \"http\",\n url: cfg.baseUrl,\n headers,\n },\n ];\n },\n skills(_ctx: PackContext): SkillMetadata[] {\n return [\n {\n name: \"web-search-exa\",\n description: \"Use Exa for high-recall, neural web search.\",\n whenToUse:\n \"When you need fresh web context, comparison shopping, or to find specific facts not in your training data. Prefer this over fetch_url unless you already have a specific URL.\",\n contentPath: join(SKILLS_DIR, \"web-search-exa.md\"),\n },\n ];\n },\n});\n\nexport default pack;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@render-harness/cap-search-exa",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Exa web-search capability pack for the Render agent harness.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -35,10 +35,10 @@
35
35
  "test": "vitest run --passWithNoTests"
36
36
  },
37
37
  "dependencies": {
38
- "@render-harness/registry": "workspace:*"
38
+ "@render-harness/registry": "^0.1.1"
39
39
  },
40
40
  "devDependencies": {
41
- "@render-harness/core": "workspace:*",
41
+ "@render-harness/core": "^0.1.1",
42
42
  "@types/node": "^25.6.2",
43
43
  "tsup": "^8.5.1",
44
44
  "typescript": "^6.0.3",