neoctl 0.1.5 → 0.1.7

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 (91) hide show
  1. package/README.md +378 -357
  2. package/dist/agents/local-agent-task.js +2 -1
  3. package/dist/agents/local-agent-task.js.map +1 -1
  4. package/dist/agents/smoke-agents.js +21 -4
  5. package/dist/agents/smoke-agents.js.map +1 -1
  6. package/dist/core/query-engine.d.ts +20 -1
  7. package/dist/core/query-engine.js +86 -12
  8. package/dist/core/query-engine.js.map +1 -1
  9. package/dist/core/query.d.ts +2 -1
  10. package/dist/core/query.js +36 -1
  11. package/dist/core/query.js.map +1 -1
  12. package/dist/core/smoke-core-loop.js +53 -6
  13. package/dist/core/smoke-core-loop.js.map +1 -1
  14. package/dist/index.d.ts +2 -1
  15. package/dist/index.js +2 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/model/communication-logger.d.ts +2 -1
  18. package/dist/model/communication-logger.js +3 -0
  19. package/dist/model/communication-logger.js.map +1 -1
  20. package/dist/model/config.d.ts +10 -4
  21. package/dist/model/config.js +61 -12
  22. package/dist/model/config.js.map +1 -1
  23. package/dist/model/deepseek-adapter.d.ts +29 -0
  24. package/dist/model/deepseek-adapter.js +108 -0
  25. package/dist/model/deepseek-adapter.js.map +1 -0
  26. package/dist/model/env.js +35 -19
  27. package/dist/model/env.js.map +1 -1
  28. package/dist/model/kimi-adapter.d.ts +29 -0
  29. package/dist/model/kimi-adapter.js +108 -0
  30. package/dist/model/kimi-adapter.js.map +1 -0
  31. package/dist/model/model-metadata.json +726 -677
  32. package/dist/model/openai-adapter.d.ts +1 -1
  33. package/dist/model/openai-chat-mapper.d.ts +4 -1
  34. package/dist/model/openai-chat-mapper.js +30 -8
  35. package/dist/model/openai-chat-mapper.js.map +1 -1
  36. package/dist/model/openai-mappers.d.ts +5 -2
  37. package/dist/model/openai-mappers.js +17 -4
  38. package/dist/model/openai-mappers.js.map +1 -1
  39. package/dist/model/openai-responses-mapper.d.ts +1 -1
  40. package/dist/model/openai-responses-mapper.js +2 -1
  41. package/dist/model/openai-responses-mapper.js.map +1 -1
  42. package/dist/model/provider-factory.js +32 -0
  43. package/dist/model/provider-factory.js.map +1 -1
  44. package/dist/model/smoke-deepseek-mapper.d.ts +1 -0
  45. package/dist/model/smoke-deepseek-mapper.js +65 -0
  46. package/dist/model/smoke-deepseek-mapper.js.map +1 -0
  47. package/dist/model/smoke-openai.js +1 -1
  48. package/dist/model/smoke-openai.js.map +1 -1
  49. package/dist/model/smoke-responses-mapper.js +6 -6
  50. package/dist/model/smoke-responses-mapper.js.map +1 -1
  51. package/dist/open-directory.d.ts +1 -0
  52. package/dist/open-directory.js +26 -0
  53. package/dist/open-directory.js.map +1 -0
  54. package/dist/paths.d.ts +7 -0
  55. package/dist/paths.js +12 -0
  56. package/dist/paths.js.map +1 -0
  57. package/dist/repl/commands.d.ts +7 -0
  58. package/dist/repl/commands.js +9 -0
  59. package/dist/repl/commands.js.map +1 -1
  60. package/dist/repl/index.js +700 -60
  61. package/dist/repl/index.js.map +1 -1
  62. package/dist/repl/render.js +0 -2
  63. package/dist/repl/render.js.map +1 -1
  64. package/dist/repl/status-line.d.ts +0 -1
  65. package/dist/repl/status-line.js +27 -34
  66. package/dist/repl/status-line.js.map +1 -1
  67. package/dist/session/session-export.d.ts +33 -0
  68. package/dist/session/session-export.js +351 -0
  69. package/dist/session/session-export.js.map +1 -0
  70. package/dist/session/session-store.js +2 -2
  71. package/dist/session/session-store.js.map +1 -1
  72. package/dist/session/smoke-session.js +22 -1
  73. package/dist/session/smoke-session.js.map +1 -1
  74. package/dist/skills/smoke-skills.js +1 -1
  75. package/dist/tips.d.ts +10 -0
  76. package/dist/tips.js +168 -0
  77. package/dist/tips.js.map +1 -0
  78. package/dist/tools/builtins/search-providers.d.ts +15 -1
  79. package/dist/tools/builtins/search-providers.js +195 -1
  80. package/dist/tools/builtins/search-providers.js.map +1 -1
  81. package/dist/tools/builtins/search-tool.js +2 -2
  82. package/dist/tools/builtins/search-tool.js.map +1 -1
  83. package/dist/tools/smoke-tool-system.js +43 -9
  84. package/dist/tools/smoke-tool-system.js.map +1 -1
  85. package/dist/web/html.d.ts +1 -0
  86. package/dist/web/html.js +697 -0
  87. package/dist/web/html.js.map +1 -0
  88. package/dist/web/index.d.ts +2 -0
  89. package/dist/web/index.js +1465 -0
  90. package/dist/web/index.js.map +1 -0
  91. package/package.json +53 -49
@@ -3,6 +3,7 @@ import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { FileToolResultMemory, PERSISTED_OUTPUT_TAG } from "./tool-result-memory.js";
5
5
  import { SessionStore } from "./session-store.js";
6
+ import { writeSessionMarkdownExport } from "./session-export.js";
6
7
  async function main() {
7
8
  const root = await fs.mkdtemp(path.join(os.tmpdir(), "agent-session-smoke-"));
8
9
  const sessionId = "smoke-session";
@@ -22,6 +23,21 @@ async function main() {
22
23
  const latest = await SessionStore.open({ agentId: "main", rootDir: root, resume: true });
23
24
  const listed = await SessionStore.list({ agentId: "main", rootDir: root });
24
25
  const resumedBudget = await resumed.toolResultMemory.applyBudget(resumed.getInitialMessages(), { maxSerializedLength: 180 });
26
+ const exportPath = path.join(root, "exports", "session.md");
27
+ const exportResult = await writeSessionMarkdownExport({
28
+ outputPath: exportPath,
29
+ session: resumed.snapshot(),
30
+ agentId: "main",
31
+ promptSnapshot: {
32
+ model: "smoke-model",
33
+ systemPrompt: "system prompt smoke",
34
+ userContextPrompt: "User context:\ncurrentDate: 2026-05-09",
35
+ toolDefinitions: [{ name: "alpha", description: "Alpha tool", inputSchema: { type: "object" } }],
36
+ commands: ["/export <absolute-md-path>"],
37
+ },
38
+ maxToolResultLines: 3,
39
+ });
40
+ const exportedMarkdown = await fs.readFile(exportPath, "utf8");
25
41
  const afterReset = await SessionStore.open({ agentId: "main", rootDir: root, sessionId, resume: true });
26
42
  afterReset.reset();
27
43
  const resetResume = await SessionStore.open({ agentId: "main", rootDir: root, sessionId, resume: true });
@@ -45,10 +61,15 @@ async function main() {
45
61
  listed[0]?.title === "Refined Smoke Session Title" &&
46
62
  resumedBudget.records.length === 0 &&
47
63
  resumedBudget.messages.some((message) => message.blocks.some((block) => block.type === "tool_result" && String(block.output).startsWith(PERSISTED_OUTPUT_TAG))) &&
64
+ exportResult.bytes > 0 &&
65
+ exportedMarkdown.includes("# Neo Session Export") &&
66
+ exportedMarkdown.includes("system prompt smoke") &&
67
+ exportedMarkdown.includes("## Transcript") &&
68
+ exportedMarkdown.includes("Tool use ID: call_a") &&
48
69
  resetResume.snapshot().resumedMessages === 0 &&
49
70
  deleted &&
50
71
  listedAfterDelete.length === 0;
51
- console.log(JSON.stringify({ ok, firstRecords: first.records.length, persistedBlocks: persistedBlocks.length, resumed: resumed.snapshot(), latest: latest.snapshot(), listed, reset: resetResume.snapshot(), deleted, listedAfterDelete }, null, 2));
72
+ console.log(JSON.stringify({ ok, firstRecords: first.records.length, persistedBlocks: persistedBlocks.length, exportResult, resumed: resumed.snapshot(), latest: latest.snapshot(), listed, reset: resetResume.snapshot(), deleted, listedAfterDelete }, null, 2));
52
73
  if (!ok)
53
74
  process.exitCode = 1;
54
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"smoke-session.js","sourceRoot":"","sources":["../../src/session/smoke-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smoke-session.js","sourceRoot":"","sources":["../../src/session/smoke-session.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ async function main() {
9
9
  description: "Review a plan before implementation.",
10
10
  entrypoint: "Review the supplied plan for correctness and missing validation.",
11
11
  execution: "inline",
12
- allowedTools: ["echo"],
12
+ allowedTools: ["plan"],
13
13
  model: "gpt-5.5",
14
14
  effort: "high",
15
15
  },
package/dist/tips.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ export interface AppTip {
2
+ id: string;
3
+ title: string;
4
+ placeholder: string;
5
+ detail: string;
6
+ }
7
+ export declare const appTips: AppTip[];
8
+ export declare function tipAt(index: number): AppTip;
9
+ export declare function initialTipIndex(seed: string): number;
10
+ export declare function formatTipLine(tip: AppTip): string;
package/dist/tips.js ADDED
@@ -0,0 +1,168 @@
1
+ export const appTips = [
2
+ {
3
+ id: "ask-directly",
4
+ title: "Describe the goal directly",
5
+ placeholder: "Tip: Type the task you want done, e.g. “summarize this project structure”",
6
+ detail: "You can describe goals, constraints, and expected output in plain language. More specific requests usually produce better results.",
7
+ },
8
+ {
9
+ id: "slash-help",
10
+ title: "View commands",
11
+ placeholder: "Tip: Type /help to see available commands",
12
+ detail: "Use /help to list built-in commands and their usage.",
13
+ },
14
+ {
15
+ id: "slash-completion",
16
+ title: "Complete slash commands",
17
+ placeholder: "Tip: Type /, use ↑/↓ to select, and Tab to complete",
18
+ detail: "Slash commands show completions as you type. Use arrow keys to select, Tab to complete, and Enter to run.",
19
+ },
20
+ {
21
+ id: "history",
22
+ title: "Reuse previous input",
23
+ placeholder: "Tip: Press ↑ on an empty prompt to recall previous input",
24
+ detail: "Use ↑/↓ to browse input history so you can quickly retry or edit earlier prompts.",
25
+ },
26
+ {
27
+ id: "interrupt",
28
+ title: "Interrupt or exit",
29
+ placeholder: "Tip: Ctrl+C clears input or interrupts work; press again on empty input to exit",
30
+ detail: "Ctrl+C clears non-empty input, requests interruption while work is running, and exits after a second press on an empty prompt.",
31
+ },
32
+ {
33
+ id: "queue",
34
+ title: "Queue the next message",
35
+ placeholder: "Tip: You can type while the assistant is busy; Enter queues the next message",
36
+ detail: "When work is running, submit another prompt to queue it. If needed, press Esc to bring queued input back to the editor.",
37
+ },
38
+ {
39
+ id: "paste",
40
+ title: "Paste content",
41
+ placeholder: "Tip: Paste text directly; long text may be folded into an attachment reference",
42
+ detail: "Short pasted text is inserted directly. Longer pasted text can be folded into a [text_...] reference and sent with your message.",
43
+ },
44
+ {
45
+ id: "image-paste",
46
+ title: "Paste images",
47
+ placeholder: "Tip: With vision-capable models, paste screenshots and reference them as [img#1]",
48
+ detail: "If the current model supports image input, you can paste images or screenshots from the clipboard and submit them with your prompt.",
49
+ },
50
+ {
51
+ id: "sessions",
52
+ title: "Resume sessions",
53
+ placeholder: "Tip: Type /sessions to browse and resume saved sessions",
54
+ detail: "Use /sessions to open saved sessions and continue working with previous context.",
55
+ },
56
+ {
57
+ id: "model",
58
+ title: "Switch models",
59
+ placeholder: "Tip: Type /model to view or switch model and reasoning effort",
60
+ detail: "Use /model to inspect the current model, or pass a model id and reasoning effort such as /model gpt-5 high.",
61
+ },
62
+ {
63
+ id: "compact",
64
+ title: "Compact long context",
65
+ placeholder: "Tip: Use /compact in long sessions to compress earlier context",
66
+ detail: "Manual compaction preserves important context while reducing pressure on the model context window.",
67
+ },
68
+ {
69
+ id: "pure",
70
+ title: "Clean up after blocks",
71
+ placeholder: "Tip: If an upstream WAF or risk block occurs, try /pure to sanitize context",
72
+ detail: "/pure performs a more conservative context cleanup that can help recover after upstream safety or WAF blocks.",
73
+ },
74
+ {
75
+ id: "export",
76
+ title: "Export a transcript",
77
+ placeholder: "Tip: Type /export <absolute-path.md> to export the current transcript",
78
+ detail: "Use /export to save the current session as Markdown for review, sharing, or archiving.",
79
+ },
80
+ {
81
+ id: "cost",
82
+ title: "Check usage",
83
+ placeholder: "Tip: Type /cost to show token usage for this REPL session",
84
+ detail: "/cost displays accumulated request and token usage for the current session.",
85
+ },
86
+ {
87
+ id: "state",
88
+ title: "Inspect runtime state",
89
+ placeholder: "Tip: Type /state to inspect engine state for troubleshooting",
90
+ detail: "/state shows query engine state and is useful when debugging configuration, context, or runtime behavior.",
91
+ },
92
+ {
93
+ id: "login",
94
+ title: "Configure providers",
95
+ placeholder: "Tip: Type /login to configure and save a model provider",
96
+ detail: "Use /login when setting up the app for the first time or switching provider credentials.",
97
+ },
98
+ {
99
+ id: "logs",
100
+ title: "Enable communication logs",
101
+ placeholder: "Tip: Use /log <directory> to capture model communication logs",
102
+ detail: "Use /log with an absolute directory to write model communication logs; use /log off to disable them.",
103
+ },
104
+ {
105
+ id: "plan",
106
+ title: "Ask for a plan",
107
+ placeholder: "Tip: For complex work, ask the assistant to plan first and verify each step",
108
+ detail: "For multi-step engineering tasks, ask for a short plan, incremental edits, and concrete validation at the end.",
109
+ },
110
+ {
111
+ id: "constraints",
112
+ title: "State constraints",
113
+ placeholder: "Tip: Add constraints like “do not change public APIs” or “only edit src/web”",
114
+ detail: "Mention scope, style, compatibility, and things to avoid up front to reduce rework.",
115
+ },
116
+ {
117
+ id: "validation",
118
+ title: "Request validation",
119
+ placeholder: "Tip: Ask to run npm test, typecheck, or a project-specific command after changes",
120
+ detail: "If you know the right validation command, include it in the request so the assistant can verify the work precisely.",
121
+ },
122
+ {
123
+ id: "reset",
124
+ title: "Start fresh",
125
+ placeholder: "Tip: Type /reset to clear the current transcript without leaving the REPL",
126
+ detail: "/reset clears the visible conversation and adds a reset marker so you can start a fresh thread in the same session.",
127
+ },
128
+ {
129
+ id: "focus-files",
130
+ title: "Point to relevant files",
131
+ placeholder: "Tip: Mention exact files or symbols, e.g. “check src/repl/index.ts PromptLine”",
132
+ detail: "Naming files, functions, errors, or commands helps the assistant inspect the right context first and avoid broad searches.",
133
+ },
134
+ {
135
+ id: "review-diff",
136
+ title: "Review before finishing",
137
+ placeholder: "Tip: Ask to show or summarize the diff before wrapping up a change",
138
+ detail: "For risky edits, ask for a diff summary or specific files changed before running validation and finalizing.",
139
+ },
140
+ {
141
+ id: "current-docs",
142
+ title: "Use current docs",
143
+ placeholder: "Tip: For fast-moving APIs, ask the assistant to search the web before changing code",
144
+ detail: "When behavior depends on current packages, SDKs, or service docs, request a web search so the answer is not based only on local code.",
145
+ },
146
+ {
147
+ id: "parallel-investigation",
148
+ title: "Split independent work",
149
+ placeholder: "Tip: For independent checks, ask the assistant to investigate them in parallel",
150
+ detail: "Independent searches, audits, or comparisons can be delegated to subagents so findings come back faster and with clearer scope.",
151
+ },
152
+ ];
153
+ export function tipAt(index) {
154
+ return appTips[positiveModulo(index, appTips.length)] ?? appTips[0];
155
+ }
156
+ export function initialTipIndex(seed) {
157
+ let hash = 0;
158
+ for (const char of seed)
159
+ hash = (hash * 31 + char.charCodeAt(0)) | 0;
160
+ return positiveModulo(hash, appTips.length);
161
+ }
162
+ export function formatTipLine(tip) {
163
+ return `Tip: ${tip.title} — ${tip.detail}`;
164
+ }
165
+ function positiveModulo(value, modulo) {
166
+ return ((value % modulo) + modulo) % modulo;
167
+ }
168
+ //# sourceMappingURL=tips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tips.js","sourceRoot":"","sources":["../src/tips.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type SearchProviderName = "exa" | (string & {});
1
+ export type SearchProviderName = "exa" | "openai" | "gpt" | (string & {});
2
2
  export interface SearchToolInput {
3
3
  query: string;
4
4
  numResults: number;
@@ -30,15 +30,28 @@ export interface SearchProvider {
30
30
  export interface SearchProviderConfig {
31
31
  provider?: string;
32
32
  exa?: ExaSearchProviderConfig;
33
+ openai?: OpenAISearchProviderConfig;
33
34
  }
34
35
  export interface ExaSearchProviderConfig {
35
36
  mcpUrl?: string;
36
37
  toolName?: string;
37
38
  timeoutMs?: number;
38
39
  }
40
+ export interface OpenAISearchProviderConfig {
41
+ apiKey?: string;
42
+ baseUrl?: string;
43
+ model?: string;
44
+ timeoutMs?: number;
45
+ toolType?: string;
46
+ searchContextSize?: "low" | "medium" | "high";
47
+ maxOutputTokens?: number;
48
+ }
39
49
  export declare const DEFAULT_SEARCH_PROVIDER = "exa";
40
50
  export declare const DEFAULT_EXA_MCP_URL = "https://mcp.exa.ai/mcp";
41
51
  export declare const DEFAULT_EXA_MCP_TOOL_NAME = "web_search_exa";
52
+ export declare const DEFAULT_OPENAI_SEARCH_MODEL = "gpt-4.1-mini";
53
+ export declare const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com";
54
+ export declare const DEFAULT_OPENAI_WEB_SEARCH_TOOL_TYPE = "web_search_preview";
42
55
  export declare const DEFAULT_SEARCH_TIMEOUT_MS = 30000;
43
56
  export declare class SearchProviderError extends Error {
44
57
  readonly provider: string;
@@ -47,3 +60,4 @@ export declare class SearchProviderError extends Error {
47
60
  }
48
61
  export declare function createSearchProvider(config?: SearchProviderConfig, env?: NodeJS.ProcessEnv): SearchProvider;
49
62
  export declare function createExaSearchProvider(config?: ExaSearchProviderConfig): SearchProvider;
63
+ export declare function createOpenAISearchProvider(config?: OpenAISearchProviderConfig): SearchProvider;
@@ -1,6 +1,9 @@
1
1
  export const DEFAULT_SEARCH_PROVIDER = "exa";
2
2
  export const DEFAULT_EXA_MCP_URL = "https://mcp.exa.ai/mcp";
3
3
  export const DEFAULT_EXA_MCP_TOOL_NAME = "web_search_exa";
4
+ export const DEFAULT_OPENAI_SEARCH_MODEL = "gpt-4.1-mini";
5
+ export const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com";
6
+ export const DEFAULT_OPENAI_WEB_SEARCH_TOOL_TYPE = "web_search_preview";
4
7
  export const DEFAULT_SEARCH_TIMEOUT_MS = 30_000;
5
8
  export class SearchProviderError extends Error {
6
9
  provider;
@@ -12,8 +15,19 @@ export class SearchProviderError extends Error {
12
15
  this.name = "SearchProviderError";
13
16
  }
14
17
  }
18
+ function resolveSearchProviderName(config, env) {
19
+ const explicit = config.provider ?? env.SEARCH_PROVIDER ?? env.WEB_SEARCH_PROVIDER;
20
+ if (explicit?.trim())
21
+ return explicit.trim().toLowerCase();
22
+ const modelProvider = env.MODEL_PROVIDER;
23
+ if (modelProvider?.trim().toLowerCase() === "openai")
24
+ return "openai";
25
+ if (env.OPENAI_API_KEY?.trim())
26
+ return "openai";
27
+ return DEFAULT_SEARCH_PROVIDER;
28
+ }
15
29
  export function createSearchProvider(config = {}, env = process.env) {
16
- const provider = (config.provider ?? env.SEARCH_PROVIDER ?? env.WEB_SEARCH_PROVIDER ?? DEFAULT_SEARCH_PROVIDER).trim().toLowerCase();
30
+ const provider = resolveSearchProviderName(config, env);
17
31
  switch (provider) {
18
32
  case "exa":
19
33
  return createExaSearchProvider({
@@ -21,6 +35,17 @@ export function createSearchProvider(config = {}, env = process.env) {
21
35
  toolName: config.exa?.toolName ?? env.EXA_MCP_TOOL_NAME ?? env.WEB_SEARCH_EXA_TOOL_NAME,
22
36
  timeoutMs: config.exa?.timeoutMs ?? parseOptionalInteger(env.SEARCH_TIMEOUT_MS ?? env.WEB_SEARCH_TIMEOUT_MS),
23
37
  });
38
+ case "openai":
39
+ case "gpt":
40
+ return createOpenAISearchProvider({
41
+ apiKey: config.openai?.apiKey ?? env.OPENAI_SEARCH_API_KEY ?? env.WEB_SEARCH_OPENAI_API_KEY ?? env.OPENAI_API_KEY,
42
+ baseUrl: config.openai?.baseUrl ?? env.OPENAI_SEARCH_BASE_URL ?? env.WEB_SEARCH_OPENAI_BASE_URL ?? env.OPENAI_BASE_URL,
43
+ model: config.openai?.model ?? env.OPENAI_SEARCH_MODEL ?? env.WEB_SEARCH_OPENAI_MODEL ?? env.OPENAI_MODEL,
44
+ toolType: config.openai?.toolType ?? env.OPENAI_SEARCH_TOOL_TYPE ?? env.WEB_SEARCH_OPENAI_TOOL_TYPE,
45
+ searchContextSize: config.openai?.searchContextSize ?? parseOpenAISearchContextSize(env.OPENAI_SEARCH_CONTEXT_SIZE ?? env.WEB_SEARCH_OPENAI_CONTEXT_SIZE),
46
+ maxOutputTokens: config.openai?.maxOutputTokens ?? parseOptionalInteger(env.OPENAI_SEARCH_MAX_OUTPUT_TOKENS ?? env.WEB_SEARCH_OPENAI_MAX_OUTPUT_TOKENS),
47
+ timeoutMs: config.openai?.timeoutMs ?? parseOptionalInteger(env.SEARCH_TIMEOUT_MS ?? env.WEB_SEARCH_TIMEOUT_MS ?? env.OPENAI_SEARCH_TIMEOUT_MS ?? env.WEB_SEARCH_OPENAI_TIMEOUT_MS),
48
+ });
24
49
  default:
25
50
  throw new SearchProviderError(`Unsupported search provider: ${provider}. Add a provider implementation and register it in createSearchProvider().`, provider);
26
51
  }
@@ -42,6 +67,39 @@ export function createExaSearchProvider(config = {}) {
42
67
  },
43
68
  };
44
69
  }
70
+ export function createOpenAISearchProvider(config = {}) {
71
+ const apiKey = config.apiKey?.trim();
72
+ const baseUrl = stripTrailingSlash(config.baseUrl?.trim() || DEFAULT_OPENAI_BASE_URL);
73
+ const model = config.model?.trim() || DEFAULT_OPENAI_SEARCH_MODEL;
74
+ const toolType = config.toolType?.trim() || DEFAULT_OPENAI_WEB_SEARCH_TOOL_TYPE;
75
+ const timeoutMs = config.timeoutMs ?? DEFAULT_SEARCH_TIMEOUT_MS;
76
+ const searchContextSize = config.searchContextSize;
77
+ const maxOutputTokens = config.maxOutputTokens ?? 1200;
78
+ return {
79
+ name: "openai",
80
+ async search(input, signal) {
81
+ if (!apiKey)
82
+ throw new SearchProviderError("OpenAI search requires OPENAI_SEARCH_API_KEY or OPENAI_API_KEY", "openai");
83
+ const response = await callOpenAIWebSearch({
84
+ apiKey,
85
+ baseUrl,
86
+ model,
87
+ toolType,
88
+ searchContextSize,
89
+ maxOutputTokens,
90
+ timeoutMs,
91
+ input,
92
+ signal,
93
+ });
94
+ return {
95
+ provider: "openai",
96
+ query: input.query,
97
+ results: extractOpenAIResults(response).slice(0, input.numResults),
98
+ raw: response,
99
+ };
100
+ },
101
+ };
102
+ }
45
103
  async function callExaMcpTool(mcpUrl, toolName, input, timeoutMs, signal) {
46
104
  const controller = new AbortController();
47
105
  const abort = () => controller.abort(signal?.reason);
@@ -81,6 +139,120 @@ async function callExaMcpTool(mcpUrl, toolName, input, timeoutMs, signal) {
81
139
  signal?.removeEventListener("abort", abort);
82
140
  }
83
141
  }
142
+ async function callOpenAIWebSearch(options) {
143
+ const controller = new AbortController();
144
+ const abort = () => controller.abort(options.signal?.reason);
145
+ const timeout = setTimeout(() => controller.abort(new Error(`Search request timed out after ${options.timeoutMs}ms`)), options.timeoutMs);
146
+ options.signal?.addEventListener("abort", abort, { once: true });
147
+ try {
148
+ const response = await fetch(`${options.baseUrl}/v1/responses`, {
149
+ method: "POST",
150
+ headers: {
151
+ Accept: "application/json",
152
+ "Content-Type": "application/json",
153
+ Authorization: `Bearer ${options.apiKey}`,
154
+ },
155
+ body: JSON.stringify(buildOpenAIWebSearchBody(options)),
156
+ signal: controller.signal,
157
+ });
158
+ const text = await response.text();
159
+ const body = text ? parseJsonObject(text, "openai") : {};
160
+ if (!response.ok) {
161
+ throw new SearchProviderError(`OpenAI search HTTP ${response.status}: ${openAIErrorMessage(body) ?? text.slice(0, 1000)}`, "openai");
162
+ }
163
+ return body;
164
+ }
165
+ catch (error) {
166
+ if (error instanceof SearchProviderError)
167
+ throw error;
168
+ throw new SearchProviderError(error instanceof Error ? error.message : String(error), "openai", error);
169
+ }
170
+ finally {
171
+ clearTimeout(timeout);
172
+ options.signal?.removeEventListener("abort", abort);
173
+ }
174
+ }
175
+ function buildOpenAIWebSearchBody(options) {
176
+ const tool = dropUndefined({
177
+ type: options.toolType,
178
+ search_context_size: options.searchContextSize,
179
+ });
180
+ return dropUndefined({
181
+ model: options.model,
182
+ input: buildOpenAIWebSearchPrompt(options.input),
183
+ tools: [tool],
184
+ tool_choice: "auto",
185
+ max_output_tokens: options.maxOutputTokens,
186
+ store: false,
187
+ });
188
+ }
189
+ function buildOpenAIWebSearchPrompt(input) {
190
+ const constraints = [`Return up to ${input.numResults} highly relevant web results.`];
191
+ if (input.includeDomains?.length)
192
+ constraints.push(`Only include these domains when possible: ${input.includeDomains.join(", ")}.`);
193
+ if (input.excludeDomains?.length)
194
+ constraints.push(`Exclude these domains: ${input.excludeDomains.join(", ")}.`);
195
+ if (input.startPublishedDate)
196
+ constraints.push(`Prefer sources published on or after ${input.startPublishedDate}.`);
197
+ if (input.endPublishedDate)
198
+ constraints.push(`Prefer sources published on or before ${input.endPublishedDate}.`);
199
+ constraints.push("For each result, cite the source URL and include a concise snippet.");
200
+ return `Search the web for: ${input.query}\n\n${constraints.join("\n")}`;
201
+ }
202
+ function extractOpenAIResults(response) {
203
+ const output = Array.isArray(response.output) ? response.output : [];
204
+ const results = new Map();
205
+ for (const item of output) {
206
+ if (!isRecord(item) || item.type !== "message")
207
+ continue;
208
+ const messageText = extractOpenAIMessageText(item);
209
+ const content = Array.isArray(item.content) ? item.content : [];
210
+ for (const part of content) {
211
+ if (!isRecord(part))
212
+ continue;
213
+ const annotations = Array.isArray(part.annotations) ? part.annotations : [];
214
+ for (const annotation of annotations) {
215
+ const citation = mapOpenAICitation(annotation, messageText);
216
+ if (citation && !results.has(citation.url))
217
+ results.set(citation.url, citation);
218
+ }
219
+ }
220
+ }
221
+ if (results.size > 0)
222
+ return [...results.values()];
223
+ const text = output.map((item) => (isRecord(item) && item.type === "message" ? extractOpenAIMessageText(item) : "")).filter(Boolean).join("\n\n").trim();
224
+ return text ? [{ title: "OpenAI web search summary", url: "https://openai.com/search", text, highlights: [text] }] : [];
225
+ }
226
+ function extractOpenAIMessageText(message) {
227
+ const content = Array.isArray(message.content) ? message.content : [];
228
+ return content
229
+ .map((part) => (isRecord(part) ? stringFrom(part.text) ?? stringFrom(part.output_text) ?? "" : ""))
230
+ .filter(Boolean)
231
+ .join("\n")
232
+ .trim();
233
+ }
234
+ function mapOpenAICitation(annotation, messageText) {
235
+ if (!isRecord(annotation))
236
+ return undefined;
237
+ const url = stringFrom(annotation.url);
238
+ if (!url)
239
+ return undefined;
240
+ const title = stringFrom(annotation.title) ?? url;
241
+ const start = typeof annotation.start_index === "number" ? annotation.start_index : undefined;
242
+ const end = typeof annotation.end_index === "number" ? annotation.end_index : undefined;
243
+ const snippet = start !== undefined && end !== undefined ? messageText.slice(Math.max(0, start), Math.max(start, end)).trim() : "";
244
+ return {
245
+ title,
246
+ url,
247
+ highlights: snippet ? [snippet] : undefined,
248
+ text: snippet || messageText || undefined,
249
+ raw: annotation,
250
+ };
251
+ }
252
+ function openAIErrorMessage(body) {
253
+ const error = isRecord(body.error) ? body.error : undefined;
254
+ return stringFrom(error?.message);
255
+ }
84
256
  function buildExaArguments(input) {
85
257
  const args = {
86
258
  query: input.query,
@@ -234,6 +406,28 @@ function parseOptionalInteger(value) {
234
406
  const parsed = Number(value);
235
407
  return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined;
236
408
  }
409
+ function parseOpenAISearchContextSize(value) {
410
+ if (value === "low" || value === "medium" || value === "high")
411
+ return value;
412
+ return undefined;
413
+ }
414
+ function stripTrailingSlash(value) {
415
+ return value.replace(/\/+$/, "");
416
+ }
417
+ function dropUndefined(value) {
418
+ return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
419
+ }
420
+ function parseJsonObject(text, provider) {
421
+ try {
422
+ const parsed = JSON.parse(text);
423
+ if (isRecord(parsed))
424
+ return parsed;
425
+ throw new Error("JSON response was not an object");
426
+ }
427
+ catch (error) {
428
+ throw new SearchProviderError(`Invalid JSON response: ${error instanceof Error ? error.message : String(error)}`, provider, error);
429
+ }
430
+ }
237
431
  function isRecord(value) {
238
432
  return !!value && typeof value === "object" && !Array.isArray(value);
239
433
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search-providers.js","sourceRoot":"","sources":["../../../src/tools/builtins/search-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-providers.js","sourceRoot":"","sources":["../../../src/tools/builtins/search-providers.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,12 @@ const MAX_TEXT_CHARS = 1600;
7
7
  export function createSearchTool(options = {}) {
8
8
  return {
9
9
  name: "search",
10
- description: "Search the web for current information. Uses a pluggable provider backend; the default provider is Exa MCP. Use grep for local workspace text lookup.",
10
+ description: "Search the web for current information. Uses a pluggable provider backend; defaults to OpenAI GPT search when the model provider is OpenAI, otherwise Exa MCP. Use grep for local workspace text lookup. You may switch providers with the provider field, but do not explicitly set provider unless the user requests a specific provider or the default/current search provider remains unavailable after retrying.",
11
11
  inputSchema: {
12
12
  type: "object",
13
13
  properties: {
14
14
  query: { type: "string", description: "Web search query." },
15
- provider: { type: "string", description: "Optional backend provider name. Defaults to SEARCH_PROVIDER/WEB_SEARCH_PROVIDER or exa." },
15
+ provider: { type: "string", description: "Optional backend provider name. Defaults to SEARCH_PROVIDER/WEB_SEARCH_PROVIDER, then OpenAI when MODEL_PROVIDER=openai, then exa. Leave unset unless the user asks for a specific provider or the default/current provider is persistently unavailable." },
16
16
  numResults: { type: "integer", description: `Maximum number of results to return, 1-${MAX_NUM_RESULTS}. Defaults to ${DEFAULT_NUM_RESULTS}.` },
17
17
  includeDomains: {
18
18
  type: "array",