@smithers-orchestrator/agents 0.24.0 → 0.25.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 (57) hide show
  1. package/package.json +15 -5
  2. package/src/AgentLike.ts +5 -0
  3. package/src/AmpAgent.js +15 -5
  4. package/src/AmpAgentOptions.ts +6 -0
  5. package/src/BaseCliAgent/BaseCliAgent.js +205 -11
  6. package/src/BaseCliAgent/createAgentStdoutTextEmitter.js +21 -3
  7. package/src/BaseCliAgent/index.d.ts +467 -0
  8. package/src/ClaudeCodeAgent.js +6 -2
  9. package/src/CodexAgent.js +17 -2
  10. package/src/CodexAgentOptions.ts +11 -0
  11. package/src/GeminiAgent.js +34 -224
  12. package/src/GeminiAgentOptions.ts +4 -9
  13. package/src/OpenCodeAgent.js +2 -12
  14. package/src/OpenCodeAgentOptions.ts +19 -0
  15. package/src/PiAgent.js +63 -5
  16. package/src/cli-capabilities/CliAgentCapabilityAdapterId.ts +0 -1
  17. package/src/cli-capabilities/getCliAgentCapabilityDoctorReport.js +3 -2
  18. package/src/cli-capabilities/getCliAgentCapabilityReport.js +0 -6
  19. package/src/cli-surface/cliAgentSurfaceManifest.js +1 -40
  20. package/src/createElevenLabsTextToSpeechTool.js +128 -0
  21. package/src/createElevenLabsTextToSpeechTool.ts +33 -0
  22. package/src/diagnostics/getDiagnosticStrategy.js +94 -23
  23. package/src/diagnostics/launchDiagnostics.js +7 -4
  24. package/src/document-parsing/DocumentParsingProvider.ts +13 -0
  25. package/src/document-parsing/DocumentParsingResult.ts +13 -0
  26. package/src/document-parsing/DocumentParsingToolset.ts +4 -0
  27. package/src/document-parsing/DocumentParsingToolsetOptions.ts +9 -0
  28. package/src/document-parsing/createDocumentParsingToolset.d.ts +9 -0
  29. package/src/document-parsing/createDocumentParsingToolset.js +416 -0
  30. package/src/http/CreateHttpToolOptions.ts +4 -0
  31. package/src/http/HttpToolAuth.ts +15 -0
  32. package/src/http/HttpToolInput.ts +11 -0
  33. package/src/http/HttpToolOutput.ts +7 -0
  34. package/src/http/createHttpTool.js +136 -0
  35. package/src/image-generation/ImageGenerationProvider.ts +7 -0
  36. package/src/image-generation/ImageGenerationRequest.ts +8 -0
  37. package/src/image-generation/ImageGenerationResult.ts +10 -0
  38. package/src/image-generation/ImageGenerationToolOptions.ts +10 -0
  39. package/src/image-generation/createImageGenerationTool.d.ts +18 -0
  40. package/src/image-generation/createImageGenerationTool.js +92 -0
  41. package/src/index.d.ts +490 -147
  42. package/src/index.js +23 -5
  43. package/src/streamResultToGenerateResult.js +55 -26
  44. package/src/transcription/createTranscriptionTool.js +182 -0
  45. package/src/transcription/createTranscriptionTool.ts +29 -0
  46. package/src/transcription/index.js +1 -0
  47. package/src/transcription/index.ts +6 -0
  48. package/src/web-search/GroundedWebSearchProvider.ts +21 -0
  49. package/src/web-search/GroundedWebSearchToolset.ts +6 -0
  50. package/src/web-search/createBraveSearchProvider.js +53 -0
  51. package/src/web-search/createExaSearchProvider.js +72 -0
  52. package/src/web-search/createGroundedWebSearchToolset.js +110 -0
  53. package/src/web-search/createSerperSearchProvider.js +63 -0
  54. package/src/web-search/createTavilySearchProvider.js +59 -0
  55. package/src/web-search/index.js +5 -0
  56. package/src/zodToOpenAISchema.js +4 -0
  57. package/src/OpenCodeAgent.ts +0 -43
@@ -0,0 +1,92 @@
1
+ import { dynamicTool, jsonSchema } from "ai";
2
+
3
+ /** @typedef {import("ai").Tool} Tool */
4
+ /** @typedef {import("./ImageGenerationProvider.ts").ImageGenerationProvider} ImageGenerationProvider */
5
+ /** @typedef {import("./ImageGenerationToolOptions.ts").ImageGenerationToolOptions} ImageGenerationToolOptions */
6
+ /** @typedef {import("./ImageGenerationRequest.ts").ImageGenerationRequest} ImageGenerationRequest */
7
+
8
+ const DEFAULT_TOOL_NAME = "generate_image";
9
+
10
+ const imageGenerationInputSchema = {
11
+ type: "object",
12
+ additionalProperties: false,
13
+ required: ["prompt"],
14
+ properties: {
15
+ prompt: {
16
+ type: "string",
17
+ description: "A detailed description of the image to generate.",
18
+ minLength: 1,
19
+ },
20
+ model: {
21
+ type: "string",
22
+ description: "Optional provider model override.",
23
+ },
24
+ size: {
25
+ type: "string",
26
+ description: "Requested output size, such as 1024x1024.",
27
+ },
28
+ count: {
29
+ type: "integer",
30
+ description: "Number of images to generate.",
31
+ minimum: 1,
32
+ maximum: 10,
33
+ },
34
+ seed: {
35
+ type: "integer",
36
+ description: "Optional deterministic seed when supported by the provider.",
37
+ },
38
+ style: {
39
+ type: "string",
40
+ description: "Optional provider-specific style hint.",
41
+ },
42
+ },
43
+ };
44
+
45
+ /**
46
+ * Create an agent-callable image generation primitive backed by a provider.
47
+ *
48
+ * The provider boundary keeps Smithers independent of any single image model
49
+ * vendor while still exposing a stable tool surface to AI SDK agents.
50
+ *
51
+ * @param {ImageGenerationProvider} provider
52
+ * @param {ImageGenerationToolOptions} [options]
53
+ * @returns {Tool | Record<string, Tool>}
54
+ */
55
+ export function createImageGenerationTool(provider, options = {}) {
56
+ if (!provider || typeof provider.generateImage !== "function") {
57
+ throw new TypeError("createImageGenerationTool requires a provider with generateImage(request)");
58
+ }
59
+
60
+ const tool = dynamicTool({
61
+ description:
62
+ options.description ??
63
+ "Generate images from a prompt. Returns image URLs or base64 image payloads from the configured provider.",
64
+ inputSchema: jsonSchema(imageGenerationInputSchema),
65
+ execute: async (input) => provider.generateImage(normalizeImageGenerationInput(input, options)),
66
+ });
67
+
68
+ if (options.asToolset) {
69
+ return { [options.name ?? DEFAULT_TOOL_NAME]: tool };
70
+ }
71
+ return tool;
72
+ }
73
+
74
+ /**
75
+ * @param {unknown} input
76
+ * @param {ImageGenerationToolOptions} options
77
+ * @returns {ImageGenerationRequest}
78
+ */
79
+ function normalizeImageGenerationInput(input, options) {
80
+ const value = /** @type {Partial<ImageGenerationRequest>} */ (input ?? {});
81
+ if (typeof value.prompt !== "string" || value.prompt.trim() === "") {
82
+ throw new TypeError("generate_image requires a non-empty prompt");
83
+ }
84
+ return {
85
+ prompt: value.prompt,
86
+ ...(typeof value.size === "string" ? { size: value.size } : {}),
87
+ ...(typeof value.count === "number" ? { count: value.count } : {}),
88
+ ...(typeof value.seed === "number" ? { seed: value.seed } : {}),
89
+ ...(typeof value.style === "string" ? { style: value.style } : {}),
90
+ ...(typeof value.model === "string" ? { model: value.model } : options.model ? { model: options.model } : {}),
91
+ };
92
+ }