@@ -1,7 +0,8 @@ | ||
export { BaseDataPointSchema, Document, DocumentData, DocumentDataSchema, EmbedderAction, EmbedderArgument, EmbedderInfo, EmbedderParams, EmbedderReference, Embedding, EvalResponses, EvaluatorAction, EvaluatorInfo, EvaluatorParams, EvaluatorReference, GenerateOptions, GenerateRequest, GenerateRequestData, GenerateResponse, GenerateResponseChunk, GenerateResponseChunkData, GenerateResponseData, GenerateStreamOptions, GenerateStreamResponse, GenerationBlockedError, GenerationCommonConfigSchema, GenerationResponseError, GenerationUsage, IndexerAction, IndexerArgument, IndexerInfo, IndexerParams, IndexerReference, InterruptConfig, LlmResponse, LlmResponseSchema, LlmStats, LlmStatsSchema, MediaPart, Message, MessageData, MessageSchema, ModelArgument, ModelReference, ModelRequest, ModelRequestSchema, ModelResponseData, ModelResponseSchema, Part, PartSchema, PromptAction, PromptConfig, RankedDocument, RerankerAction, RerankerArgument, RerankerInfo, RerankerParams, RerankerReference, ResumeOptions, RetrieverAction, RetrieverArgument, RetrieverInfo, RetrieverParams, RetrieverReference, Role, RoleSchema, Tool, ToolAction, ToolArgument, ToolCall, ToolCallSchema, ToolConfig, ToolRequest, ToolRequestPart, ToolResponse, ToolResponsePart, ToolSchema, embedderRef, evaluatorRef, indexerRef, rerankerRef, retrieverRef } from '@genkit-ai/ai'; | ||
export { BaseDataPointSchema, Document, DocumentData, DocumentDataSchema, EmbedderAction, EmbedderArgument, EmbedderInfo, EmbedderParams, EmbedderReference, Embedding, EvalResponses, EvaluatorAction, EvaluatorInfo, EvaluatorParams, EvaluatorReference, GenerateOptions, GenerateRequest, GenerateRequestData, GenerateResponse, GenerateResponseChunk, GenerateResponseChunkData, GenerateResponseData, GenerateStreamOptions, GenerateStreamResponse, GenerationBlockedError, GenerationCommonConfigSchema, GenerationResponseError, GenerationUsage, IndexerAction, IndexerArgument, IndexerInfo, IndexerParams, IndexerReference, InterruptConfig, LlmResponse, LlmResponseSchema, LlmStats, LlmStatsSchema, MediaPart, Message, MessageData, MessageSchema, ModelArgument, ModelReference, ModelRequest, ModelRequestSchema, ModelResponseData, ModelResponseSchema, Part, PartSchema, PromptAction, PromptConfig, RankedDocument, RerankerAction, RerankerArgument, RerankerInfo, RerankerParams, RerankerReference, ResumeOptions, RetrieverAction, RetrieverArgument, RetrieverInfo, RetrieverParams, RetrieverReference, Role, RoleSchema, Tool, ToolAction, ToolArgument, ToolCall, ToolCallSchema, ToolConfig, ToolRequest, ToolRequestPart, ToolResponse, ToolResponsePart, ToolSchema, embedderActionMetadata, embedderRef, evaluatorRef, indexerRef, modelActionMetadata, modelRef, rerankerRef, retrieverRef } from '@genkit-ai/ai'; | ||
export { Chat } from '@genkit-ai/ai/chat'; | ||
export { Session, SessionData, SessionStore } from '@genkit-ai/ai/session'; | ||
export { dynamicTool } from '@genkit-ai/ai/tool'; | ||
export { Action, ActionContext, ActionMetadata, Flow, FlowConfig, FlowFn, FlowSideChannel, GENKIT_CLIENT_HEADER, GENKIT_VERSION, GenkitError, JSONSchema, JSONSchema7, Middleware, ReflectionServer, ReflectionServerOptions, RunActionResponse, Status, StatusCodes, StatusName, StatusSchema, StreamingCallback, StreamingResponse, TelemetryConfig, UserFacingError, defineJsonSchema, defineSchema, getCurrentEnv, getStreamingCallback, isDevEnv, runWithStreamingCallback, z } from '@genkit-ai/core'; | ||
export { GenkitBeta, genkit } from './genkit-beta.js'; | ||
export { G as GenkitBetaOptions } from './index-Dhno6U3s.js'; | ||
export { G as GenkitBetaOptions } from './index-C5kV7ocs.js'; | ||
import '@genkit-ai/ai/formats'; | ||
@@ -13,3 +14,2 @@ import '@genkit-ai/ai/reranker'; | ||
import '@genkit-ai/ai/retriever'; | ||
import '@genkit-ai/ai/tool'; | ||
import '@genkit-ai/core/registry'; |
@@ -1,4 +0,5 @@ | ||
export { BaseDataPointSchema, Document, DocumentData, DocumentDataSchema, EmbedderAction, EmbedderArgument, EmbedderInfo, EmbedderParams, EmbedderReference, Embedding, EvalResponses, EvaluatorAction, EvaluatorInfo, EvaluatorParams, EvaluatorReference, GenerateOptions, GenerateRequest, GenerateRequestData, GenerateResponse, GenerateResponseChunk, GenerateResponseChunkData, GenerateResponseData, GenerateStreamOptions, GenerateStreamResponse, GenerationBlockedError, GenerationCommonConfigSchema, GenerationResponseError, GenerationUsage, IndexerAction, IndexerArgument, IndexerInfo, IndexerParams, IndexerReference, InterruptConfig, LlmResponse, LlmResponseSchema, LlmStats, LlmStatsSchema, MediaPart, Message, MessageData, MessageSchema, ModelArgument, ModelReference, ModelRequest, ModelRequestSchema, ModelResponseData, ModelResponseSchema, Part, PartSchema, PromptAction, PromptConfig, RankedDocument, RerankerAction, RerankerArgument, RerankerInfo, RerankerParams, RerankerReference, ResumeOptions, RetrieverAction, RetrieverArgument, RetrieverInfo, RetrieverParams, RetrieverReference, Role, RoleSchema, Tool, ToolAction, ToolArgument, ToolCall, ToolCallSchema, ToolConfig, ToolRequest, ToolRequestPart, ToolResponse, ToolResponsePart, ToolSchema, embedderRef, evaluatorRef, indexerRef, rerankerRef, retrieverRef } from '@genkit-ai/ai'; | ||
export { BaseDataPointSchema, Document, DocumentData, DocumentDataSchema, EmbedderAction, EmbedderArgument, EmbedderInfo, EmbedderParams, EmbedderReference, Embedding, EvalResponses, EvaluatorAction, EvaluatorInfo, EvaluatorParams, EvaluatorReference, GenerateOptions, GenerateRequest, GenerateRequestData, GenerateResponse, GenerateResponseChunk, GenerateResponseChunkData, GenerateResponseData, GenerateStreamOptions, GenerateStreamResponse, GenerationBlockedError, GenerationCommonConfigSchema, GenerationResponseError, GenerationUsage, IndexerAction, IndexerArgument, IndexerInfo, IndexerParams, IndexerReference, InterruptConfig, LlmResponse, LlmResponseSchema, LlmStats, LlmStatsSchema, MediaPart, Message, MessageData, MessageSchema, ModelArgument, ModelReference, ModelRequest, ModelRequestSchema, ModelResponseData, ModelResponseSchema, Part, PartSchema, PromptAction, PromptConfig, RankedDocument, RerankerAction, RerankerArgument, RerankerInfo, RerankerParams, RerankerReference, ResumeOptions, RetrieverAction, RetrieverArgument, RetrieverInfo, RetrieverParams, RetrieverReference, Role, RoleSchema, Tool, ToolAction, ToolArgument, ToolCall, ToolCallSchema, ToolConfig, ToolRequest, ToolRequestPart, ToolResponse, ToolResponsePart, ToolSchema, embedderActionMetadata, embedderRef, evaluatorRef, indexerRef, modelActionMetadata, modelRef, rerankerRef, retrieverRef } from '@genkit-ai/ai'; | ||
export { Chat } from '@genkit-ai/ai/chat'; | ||
export { Session, SessionData, SessionStore } from '@genkit-ai/ai/session'; | ||
export { dynamicTool } from '@genkit-ai/ai/tool'; | ||
export { Action, ActionContext, ActionMetadata, Flow, FlowConfig, FlowFn, FlowSideChannel, GENKIT_CLIENT_HEADER, GENKIT_VERSION, GenkitError, JSONSchema, JSONSchema7, Middleware, ReflectionServer, ReflectionServerOptions, RunActionResponse, Status, StatusCodes, StatusName, StatusSchema, StreamingCallback, StreamingResponse, TelemetryConfig, UserFacingError, defineJsonSchema, defineSchema, getCurrentEnv, getStreamingCallback, isDevEnv, runWithStreamingCallback, z } from '@genkit-ai/core'; | ||
@@ -17,3 +18,2 @@ import '@genkit-ai/ai/formats'; | ||
import '@genkit-ai/ai/testing'; | ||
import '@genkit-ai/ai/tool'; | ||
import '@genkit-ai/core/tracing'; |
@@ -48,2 +48,4 @@ "use strict"; | ||
defineSchema: () => import_core.defineSchema, | ||
dynamicTool: () => import_tool.dynamicTool, | ||
embedderActionMetadata: () => import_ai.embedderActionMetadata, | ||
embedderRef: () => import_ai.embedderRef, | ||
@@ -55,2 +57,4 @@ evaluatorRef: () => import_ai.evaluatorRef, | ||
isDevEnv: () => import_core.isDevEnv, | ||
modelActionMetadata: () => import_ai.modelActionMetadata, | ||
modelRef: () => import_ai.modelRef, | ||
rerankerRef: () => import_ai.rerankerRef, | ||
@@ -65,2 +69,3 @@ retrieverRef: () => import_ai.retrieverRef, | ||
var import_session = require("@genkit-ai/ai/session"); | ||
var import_tool = require("@genkit-ai/ai/tool"); | ||
var import_core = require("@genkit-ai/core"); | ||
@@ -96,2 +101,4 @@ // Annotate the CommonJS export names for ESM import in node: | ||
defineSchema, | ||
dynamicTool, | ||
embedderActionMetadata, | ||
embedderRef, | ||
@@ -103,2 +110,4 @@ evaluatorRef, | ||
isDevEnv, | ||
modelActionMetadata, | ||
modelRef, | ||
rerankerRef, | ||
@@ -105,0 +114,0 @@ retrieverRef, |
import { ExecutablePrompt, InterruptConfig, ToolAction } from '@genkit-ai/ai'; | ||
import { ChatOptions, Chat } from '@genkit-ai/ai/chat'; | ||
import { SessionOptions, Session } from '@genkit-ai/ai/session'; | ||
import '@genkit-ai/ai/tool'; | ||
import { z } from '@genkit-ai/core'; | ||
import { Formatter } from '@genkit-ai/ai/formats'; | ||
import { G as GenkitOptions, a as Genkit } from './index-Dhno6U3s.js'; | ||
import { G as GenkitOptions, a as Genkit } from './index-C5kV7ocs.js'; | ||
import '@genkit-ai/ai/reranker'; | ||
@@ -12,3 +13,2 @@ import '@genkit-ai/ai/embedder'; | ||
import '@genkit-ai/ai/retriever'; | ||
import '@genkit-ai/ai/tool'; | ||
import '@genkit-ai/core/registry'; | ||
@@ -15,0 +15,0 @@ |
@@ -10,4 +10,4 @@ import '@genkit-ai/ai/reranker'; | ||
import '@genkit-ai/core/registry'; | ||
export { a as Genkit, G as GenkitOptions, c as PromptFn, _ as __disableReflectionApi, d as genkit } from './index-Dhno6U3s.js'; | ||
export { a as Genkit, G as GenkitOptions, e as PromptFn, _ as __disableReflectionApi, f as genkit } from './index-C5kV7ocs.js'; | ||
import '@genkit-ai/ai/chat'; | ||
import '@genkit-ai/ai/session'; |
@@ -113,4 +113,4 @@ "use strict"; | ||
}; | ||
executablePrompt.render = async (opt) => { | ||
return (await promise).render(opt.input, opt); | ||
executablePrompt.render = async (input, opts) => { | ||
return (await promise).render(input, opts); | ||
}; | ||
@@ -347,2 +347,8 @@ executablePrompt.stream = (input, opts) => { | ||
} | ||
}, | ||
async listActions() { | ||
if (loadedPlugin.listActions) { | ||
return await loadedPlugin.listActions(); | ||
} | ||
return []; | ||
} | ||
@@ -349,0 +355,0 @@ }); |
@@ -1,6 +0,7 @@ | ||
export { BaseDataPointSchema, Document, DocumentData, DocumentDataSchema, EmbedderAction, EmbedderArgument, EmbedderInfo, EmbedderParams, EmbedderReference, Embedding, EvalResponses, EvaluatorAction, EvaluatorInfo, EvaluatorParams, EvaluatorReference, GenerateOptions, GenerateRequest, GenerateRequestData, GenerateResponse, GenerateResponseChunk, GenerateResponseChunkData, GenerateResponseData, GenerateStreamOptions, GenerateStreamResponse, GenerationBlockedError, GenerationCommonConfigSchema, GenerationResponseError, GenerationUsage, IndexerAction, IndexerArgument, IndexerInfo, IndexerParams, IndexerReference, InterruptConfig, LlmResponse, LlmResponseSchema, LlmStats, LlmStatsSchema, MediaPart, Message, MessageData, MessageSchema, ModelArgument, ModelReference, ModelRequest, ModelRequestSchema, ModelResponseData, ModelResponseSchema, Part, PartSchema, PromptAction, PromptConfig, RankedDocument, RerankerAction, RerankerArgument, RerankerInfo, RerankerParams, RerankerReference, ResumeOptions, RetrieverAction, RetrieverArgument, RetrieverInfo, RetrieverParams, RetrieverReference, Role, RoleSchema, Tool, ToolAction, ToolArgument, ToolCall, ToolCallSchema, ToolConfig, ToolRequest, ToolRequestPart, ToolResponse, ToolResponsePart, ToolSchema, embedderRef, evaluatorRef, indexerRef, rerankerRef, retrieverRef } from '@genkit-ai/ai'; | ||
export { BaseDataPointSchema, Document, DocumentData, DocumentDataSchema, EmbedderAction, EmbedderArgument, EmbedderInfo, EmbedderParams, EmbedderReference, Embedding, EvalResponses, EvaluatorAction, EvaluatorInfo, EvaluatorParams, EvaluatorReference, GenerateOptions, GenerateRequest, GenerateRequestData, GenerateResponse, GenerateResponseChunk, GenerateResponseChunkData, GenerateResponseData, GenerateStreamOptions, GenerateStreamResponse, GenerationBlockedError, GenerationCommonConfigSchema, GenerationResponseError, GenerationUsage, IndexerAction, IndexerArgument, IndexerInfo, IndexerParams, IndexerReference, InterruptConfig, LlmResponse, LlmResponseSchema, LlmStats, LlmStatsSchema, MediaPart, Message, MessageData, MessageSchema, ModelArgument, ModelReference, ModelRequest, ModelRequestSchema, ModelResponseData, ModelResponseSchema, Part, PartSchema, PromptAction, PromptConfig, RankedDocument, RerankerAction, RerankerArgument, RerankerInfo, RerankerParams, RerankerReference, ResumeOptions, RetrieverAction, RetrieverArgument, RetrieverInfo, RetrieverParams, RetrieverReference, Role, RoleSchema, Tool, ToolAction, ToolArgument, ToolCall, ToolCallSchema, ToolConfig, ToolRequest, ToolRequestPart, ToolResponse, ToolResponsePart, ToolSchema, embedderActionMetadata, embedderRef, evaluatorRef, indexerRef, modelActionMetadata, modelRef, rerankerRef, retrieverRef } from '@genkit-ai/ai'; | ||
export { Chat } from '@genkit-ai/ai/chat'; | ||
export { Session, SessionData, SessionStore } from '@genkit-ai/ai/session'; | ||
export { dynamicTool } from '@genkit-ai/ai/tool'; | ||
export { Action, ActionContext, ActionMetadata, Flow, FlowConfig, FlowFn, FlowSideChannel, GENKIT_CLIENT_HEADER, GENKIT_VERSION, GenkitError, JSONSchema, JSONSchema7, Middleware, ReflectionServer, ReflectionServerOptions, RunActionResponse, Status, StatusCodes, StatusName, StatusSchema, StreamingCallback, StreamingResponse, TelemetryConfig, UserFacingError, defineJsonSchema, defineSchema, getCurrentEnv, getStreamingCallback, isDevEnv, runWithStreamingCallback, z } from '@genkit-ai/core'; | ||
export { a as Genkit, G as GenkitOptions, d as genkit } from './index-Dhno6U3s.js'; | ||
export { a as Genkit, G as GenkitOptions, f as genkit } from './index-C5kV7ocs.js'; | ||
import '@genkit-ai/ai/reranker'; | ||
@@ -11,3 +12,2 @@ import '@genkit-ai/ai/embedder'; | ||
import '@genkit-ai/ai/retriever'; | ||
import '@genkit-ai/ai/tool'; | ||
import '@genkit-ai/core/registry'; |
@@ -1,2 +0,3 @@ | ||
export { b as GenkitPlugin, P as PluginProvider, g as genkitPlugin } from './index-Dhno6U3s.js'; | ||
import '@genkit-ai/core'; | ||
export { b as GenkitPlugin, d as PluginActionResolver, c as PluginInit, P as PluginProvider, g as genkitPlugin } from './index-C5kV7ocs.js'; | ||
import '@genkit-ai/core/registry'; | ||
@@ -6,3 +7,3 @@ import '@genkit-ai/ai'; | ||
import '@genkit-ai/ai/session'; | ||
import '@genkit-ai/core'; | ||
import '@genkit-ai/ai/tool'; | ||
import '@genkit-ai/ai/reranker'; | ||
@@ -13,2 +14,1 @@ import '@genkit-ai/ai/embedder'; | ||
import '@genkit-ai/ai/retriever'; | ||
import '@genkit-ai/ai/tool'; |
@@ -24,3 +24,3 @@ "use strict"; | ||
module.exports = __toCommonJS(plugin_exports); | ||
function genkitPlugin(pluginName, initFn, resolveFn) { | ||
function genkitPlugin(pluginName, initFn, resolveFn, listActionsFn) { | ||
return (genkit) => ({ | ||
@@ -35,2 +35,8 @@ name: pluginName, | ||
} | ||
}, | ||
listActions: async () => { | ||
if (listActionsFn) { | ||
return await listActionsFn(); | ||
} | ||
return []; | ||
} | ||
@@ -37,0 +43,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
export { ToolAction, ToolArgument, ToolConfig, asTool, toToolDefinition } from '@genkit-ai/ai/tool'; | ||
export { ToolAction, ToolArgument, ToolConfig, asTool, dynamicTool, toToolDefinition } from '@genkit-ai/ai/tool'; |
@@ -22,2 +22,3 @@ "use strict"; | ||
asTool: () => import_tool.asTool, | ||
dynamicTool: () => import_tool.dynamicTool, | ||
toToolDefinition: () => import_tool.toToolDefinition | ||
@@ -30,4 +31,5 @@ }); | ||
asTool, | ||
dynamicTool, | ||
toToolDefinition | ||
}); | ||
//# sourceMappingURL=tool.js.map |
@@ -10,3 +10,3 @@ { | ||
], | ||
"version": "1.7.0", | ||
"version": "1.8.0-rc.1", | ||
"type": "commonjs", | ||
@@ -23,4 +23,4 @@ "main": "./lib/cjs/index.js", | ||
"uuid": "^10.0.0", | ||
"@genkit-ai/core": "1.7.0", | ||
"@genkit-ai/ai": "1.7.0" | ||
"@genkit-ai/ai": "1.8.0-rc.1", | ||
"@genkit-ai/core": "1.8.0-rc.1" | ||
}, | ||
@@ -27,0 +27,0 @@ "devDependencies": { |
@@ -35,5 +35,8 @@ /** | ||
ToolSchema, | ||
embedderActionMetadata, | ||
embedderRef, | ||
evaluatorRef, | ||
indexerRef, | ||
modelActionMetadata, | ||
modelRef, | ||
rerankerRef, | ||
@@ -109,2 +112,3 @@ retrieverRef, | ||
} from '@genkit-ai/ai/session'; | ||
export { dynamicTool } from '@genkit-ai/ai/tool'; | ||
export { | ||
@@ -111,0 +115,0 @@ GENKIT_CLIENT_HEADER, |
@@ -266,7 +266,6 @@ /** | ||
executablePrompt.render = async ( | ||
opt: PromptGenerateOptions<O, CustomOptions> & { | ||
input?: I; | ||
} | ||
input?: I, | ||
opts?: PromptGenerateOptions<O, CustomOptions> | ||
): Promise<GenerateOptions<O, CustomOptions>> => { | ||
return (await promise).render(opt.input, opt) as Promise< | ||
return (await promise).render(input, opts) as Promise< | ||
GenerateOptions<O, CustomOptions> | ||
@@ -816,2 +815,8 @@ >; | ||
}, | ||
async listActions() { | ||
if (loadedPlugin.listActions) { | ||
return await loadedPlugin.listActions(); | ||
} | ||
return []; | ||
}, | ||
}); | ||
@@ -818,0 +823,0 @@ }); |
@@ -17,2 +17,3 @@ /** | ||
import { ActionMetadata } from '@genkit-ai/core'; | ||
import { Genkit } from './genkit.js'; | ||
@@ -25,2 +26,3 @@ import { ActionType } from './registry.js'; | ||
resolver?: (action: ActionType, target: string) => Promise<void>; | ||
listActions?: () => Promise<ActionMetadata[]>; | ||
} | ||
@@ -30,5 +32,5 @@ | ||
type PluginInit = (genkit: Genkit) => void | Promise<void>; | ||
export type PluginInit = (genkit: Genkit) => void | Promise<void>; | ||
type PluginActionResolver = ( | ||
export type PluginActionResolver = ( | ||
genkit: Genkit, | ||
@@ -45,3 +47,4 @@ action: ActionType, | ||
initFn: T, | ||
resolveFn?: PluginActionResolver | ||
resolveFn?: PluginActionResolver, | ||
listActionsFn?: () => Promise<ActionMetadata[]> | ||
): GenkitPlugin { | ||
@@ -58,3 +61,9 @@ return (genkit: Genkit) => ({ | ||
}, | ||
listActions: async (): Promise<ActionMetadata[]> => { | ||
if (listActionsFn) { | ||
return await listActionsFn(); | ||
} | ||
return []; | ||
}, | ||
}); | ||
} |
@@ -19,2 +19,3 @@ /** | ||
asTool, | ||
dynamicTool, | ||
toToolDefinition, | ||
@@ -21,0 +22,0 @@ type ToolAction, |
@@ -34,2 +34,3 @@ /** | ||
model: 'echoModel', | ||
promptDir: './tests/prompts', | ||
}); | ||
@@ -159,2 +160,15 @@ defineEchoModel(ai); | ||
it('can start chat from a prompt file with input', async () => { | ||
const preamble = ai.prompt('chat_preamble'); | ||
const session = await ai.chat(preamble, { | ||
input: { name: 'Genkit' }, | ||
}); | ||
const response = await session.send('send it'); | ||
assert.strictEqual( | ||
response.text, | ||
'Echo: hi Genkit from template,send it; config: {"version":"abc"}' | ||
); | ||
}); | ||
it('can send a rendered prompt to chat', async () => { | ||
@@ -161,0 +175,0 @@ const prompt = ai.definePrompt({ |
@@ -18,6 +18,7 @@ /** | ||
import { GenerateResponseChunkData, MessageData } from '@genkit-ai/ai'; | ||
import { z } from '@genkit-ai/core'; | ||
import { JSONSchema7, z } from '@genkit-ai/core'; | ||
import * as assert from 'assert'; | ||
import { beforeEach, describe, it } from 'node:test'; | ||
import { modelRef } from '../../ai/src/model'; | ||
import { dynamicTool } from '../../ai/src/tool'; | ||
import { GenkitBeta, genkit } from '../src/beta'; | ||
@@ -403,2 +404,188 @@ import { | ||
it('calls the dynamic tool', async () => { | ||
const schema = { | ||
properties: { | ||
foo: { type: 'string' }, | ||
}, | ||
} as JSONSchema7; | ||
const dynamicTestTool1 = dynamicTool( | ||
ai, | ||
{ | ||
name: 'dynamicTestTool1', | ||
inputJsonSchema: schema, | ||
description: 'description', | ||
}, | ||
async () => 'tool called 1' | ||
); | ||
const dynamicTestTool2 = dynamicTool( | ||
ai, | ||
{ | ||
name: 'dynamicTestTool2', | ||
inputJsonSchema: schema, | ||
description: 'description 2', | ||
}, | ||
async () => 'tool called 2' | ||
); | ||
// first response be tools call, the subsequent just text response from agent b. | ||
let reqCounter = 0; | ||
pm.handleResponse = async (req, sc) => { | ||
return { | ||
message: { | ||
role: 'model', | ||
content: | ||
reqCounter++ === 0 | ||
? [ | ||
{ | ||
toolRequest: { | ||
name: 'dynamicTestTool1', | ||
input: { foo: 'bar' }, | ||
ref: 'ref123', | ||
}, | ||
}, | ||
{ | ||
toolRequest: { | ||
name: 'dynamicTestTool2', | ||
input: { foo: 'baz' }, | ||
ref: 'ref234', | ||
}, | ||
}, | ||
] | ||
: [{ text: 'done' }], | ||
}, | ||
}; | ||
}; | ||
const { text } = await ai.generate({ | ||
prompt: 'call the tool', | ||
tools: [dynamicTestTool1, dynamicTestTool2], | ||
}); | ||
assert.strictEqual(text, 'done'); | ||
assert.deepStrictEqual( | ||
pm.lastRequest, | ||
{ | ||
config: {}, | ||
messages: [ | ||
{ | ||
role: 'user', | ||
content: [{ text: 'call the tool' }], | ||
}, | ||
{ | ||
role: 'model', | ||
content: [ | ||
{ | ||
toolRequest: { | ||
input: { foo: 'bar' }, | ||
name: 'dynamicTestTool1', | ||
ref: 'ref123', | ||
}, | ||
}, | ||
{ | ||
toolRequest: { | ||
input: { foo: 'baz' }, | ||
name: 'dynamicTestTool2', | ||
ref: 'ref234', | ||
}, | ||
}, | ||
], | ||
}, | ||
{ | ||
role: 'tool', | ||
content: [ | ||
{ | ||
toolResponse: { | ||
name: 'dynamicTestTool1', | ||
output: 'tool called 1', | ||
ref: 'ref123', | ||
}, | ||
}, | ||
{ | ||
toolResponse: { | ||
name: 'dynamicTestTool2', | ||
output: 'tool called 2', | ||
ref: 'ref234', | ||
}, | ||
}, | ||
], | ||
}, | ||
], | ||
output: {}, | ||
tools: [ | ||
{ | ||
description: 'description', | ||
inputSchema: schema, | ||
name: 'dynamicTestTool1', | ||
outputSchema: { | ||
$schema: 'http://json-schema.org/draft-07/schema#', | ||
}, | ||
}, | ||
{ | ||
description: 'description 2', | ||
inputSchema: schema, | ||
name: 'dynamicTestTool2', | ||
outputSchema: { | ||
$schema: 'http://json-schema.org/draft-07/schema#', | ||
}, | ||
}, | ||
], | ||
} | ||
); | ||
}); | ||
it.only('interrupts the dynamic tool with no impl', async () => { | ||
const schema = { | ||
properties: { | ||
foo: { type: 'string' }, | ||
}, | ||
} as JSONSchema7; | ||
const dynamicTestTool = dynamicTool(ai, { | ||
name: 'dynamicTestTool', | ||
inputJsonSchema: schema, | ||
description: 'description', | ||
}); | ||
// first response be tools call, the subsequent just text response from agent b. | ||
let reqCounter = 0; | ||
pm.handleResponse = async (req, sc) => { | ||
return { | ||
message: { | ||
role: 'model', | ||
content: [ | ||
reqCounter++ === 0 | ||
? { | ||
toolRequest: { | ||
name: 'dynamicTestTool', | ||
input: { foo: 'bar' }, | ||
ref: 'ref123', | ||
}, | ||
} | ||
: { text: 'done' }, | ||
], | ||
}, | ||
}; | ||
}; | ||
const response = await ai.generate({ | ||
prompt: 'call the tool', | ||
tools: [dynamicTestTool], | ||
}); | ||
assert.deepStrictEqual(response.interrupts, [ | ||
{ | ||
metadata: { | ||
interrupt: true, | ||
}, | ||
toolRequest: { | ||
input: { | ||
foo: 'bar', | ||
}, | ||
name: 'dynamicTestTool', | ||
ref: 'ref123', | ||
}, | ||
}, | ||
]); | ||
}); | ||
it('call the tool with output schema', async () => { | ||
@@ -830,3 +1017,3 @@ const schema = z.object({ | ||
it('can resume generation', { only: true }, async () => { | ||
it('can resume generation', async () => { | ||
const interrupter = ai.defineInterrupt({ | ||
@@ -833,0 +1020,0 @@ name: 'interrupter', |
@@ -1109,3 +1109,3 @@ /** | ||
{ | ||
text: ' from the prompt file ', | ||
text: ' from the prompt file banana', | ||
}, | ||
@@ -1118,3 +1118,2 @@ ], | ||
toolChoice: 'required', | ||
subject: 'banana', | ||
tools: ['toolA', 'toolB'], | ||
@@ -1124,2 +1123,77 @@ }); | ||
it('renders loaded prompt via executable-prompt', async () => { | ||
ai.defineModel( | ||
{ name: 'googleai/gemini-5.0-ultimate-pro-plus' }, | ||
async () => ({}) | ||
); | ||
ai.defineTool( | ||
{ | ||
name: 'toolA', | ||
description: 'toolA it is', | ||
}, | ||
async () => {} | ||
); | ||
ai.defineTool( | ||
{ | ||
name: 'toolB', | ||
description: 'toolB it is', | ||
}, | ||
async () => {} | ||
); | ||
const generateActionOptions = await ( | ||
await ai.registry.lookupAction('/executable-prompt/kitchensink') | ||
)({ subject: 'banana' }); | ||
assert.deepStrictEqual(stripUndefinedProps(generateActionOptions), { | ||
config: { | ||
temperature: 11, | ||
}, | ||
model: 'googleai/gemini-5.0-ultimate-pro-plus', | ||
maxTurns: 77, | ||
messages: [ | ||
{ role: 'system', content: [{ text: ' Hello ' }] }, | ||
{ role: 'model', content: [{ text: ' from the prompt file banana' }] }, | ||
], | ||
output: { | ||
format: 'csv', | ||
jsonSchema: { | ||
additionalProperties: false, | ||
properties: { | ||
arr: { | ||
description: 'array of objects', | ||
items: { | ||
additionalProperties: false, | ||
properties: { | ||
nest2: { | ||
type: ['boolean', 'null'], | ||
}, | ||
}, | ||
type: 'object', | ||
}, | ||
type: 'array', | ||
}, | ||
obj: { | ||
additionalProperties: false, | ||
description: 'a nested object', | ||
properties: { | ||
nest1: { | ||
type: ['string', 'null'], | ||
}, | ||
}, | ||
type: ['object', 'null'], | ||
}, | ||
}, | ||
required: ['arr'], | ||
type: 'object', | ||
}, | ||
}, | ||
returnToolRequests: true, | ||
toolChoice: 'required', | ||
tools: ['/tool/toolA', '/tool/toolB'], | ||
}); | ||
}); | ||
it('resolved schema refs', async () => { | ||
@@ -1126,0 +1200,0 @@ const prompt = ai.prompt('schemaRef'); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 3 instances in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
500050
2.44%188
0.53%9581
3.53%15
15.38%2
100%