@rudderjs/ai 1.15.0 → 1.17.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.
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/react/agent-run.d.ts +111 -0
- package/dist/react/agent-run.d.ts.map +1 -0
- package/dist/react/agent-run.js +107 -0
- package/dist/react/agent-run.js.map +1 -0
- package/dist/react/index.d.ts +16 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +16 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/useAgentRun.d.ts +64 -0
- package/dist/react/useAgentRun.d.ts.map +1 -0
- package/dist/react/useAgentRun.js +124 -0
- package/dist/react/useAgentRun.js.map +1 -0
- package/dist/scoped-tool.d.ts +98 -0
- package/dist/scoped-tool.d.ts.map +1 -0
- package/dist/scoped-tool.js +174 -0
- package/dist/scoped-tool.js.map +1 -0
- package/dist/server/provider.js +1 -1
- package/dist/server/provider.js.map +1 -1
- package/dist/sub-agent-run-store.d.ts +14 -0
- package/dist/sub-agent-run-store.d.ts.map +1 -1
- package/dist/sub-agent-run-store.js +7 -0
- package/dist/sub-agent-run-store.js.map +1 -1
- package/package.json +13 -3
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export { BedrockProvider, type BedrockConfig } from './providers/bedrock.js';
|
|
|
19
19
|
export { toolDefinition, dynamicTool, ToolBuilder, toolToSchema, pauseForClientTools, isPauseForClientToolsChunk, pauseForApproval, isPauseForApprovalChunk, } from './tool.js';
|
|
20
20
|
export type { PauseForClientToolsChunk, PauseForApprovalChunk } from './tool.js';
|
|
21
21
|
export { zodToJsonSchema } from './zod-to-json-schema.js';
|
|
22
|
+
export { scopedTool, capability, flattenCapabilities, ScopedToolError } from './scoped-tool.js';
|
|
23
|
+
export type { ScopedToolOptions, ScopedCapability, FlatPlan } from './scoped-tool.js';
|
|
22
24
|
export { handoff, isHandoffTool } from './handoff.js';
|
|
23
25
|
export type { HandoffTool, HandoffOptions, HandoffSpec } from './handoff.js';
|
|
24
26
|
export { Agent, ConversableAgent, agent, stepCountIs, hasToolCall, setConversationStore, setUserMemory, resolveUserMemory } from './agent.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,IAAI,QAAQ,EAAE,eAAe,IAAI,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAGrI,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,OAAO,EACP,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,IAAI,EACJ,WAAW,EACX,UAAU,EACV,QAAQ,EACR,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC7H,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACrF,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAG5E,OAAO,EACL,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,IAAI,QAAQ,EAAE,eAAe,IAAI,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAGrI,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,OAAO,EACP,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,IAAI,EACJ,WAAW,EACX,UAAU,EACV,QAAQ,EACR,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC7H,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACrF,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAG5E,OAAO,EACL,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC/F,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGrF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACrD,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG5E,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC7I,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAGpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGrJ,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAGxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAG/D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,GACnC,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,0BAA0B,GAChC,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAGhC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAG3C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE3E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,iCAAiC,EACjC,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGxC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACpE,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC1H,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAGjH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAG9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,YAAY,EACV,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EACL,mBAAmB,EACnB,SAAS,GACV,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,9 @@ export { BedrockProvider } from './providers/bedrock.js';
|
|
|
22
22
|
// Tools
|
|
23
23
|
export { toolDefinition, dynamicTool, ToolBuilder, toolToSchema, pauseForClientTools, isPauseForClientToolsChunk, pauseForApproval, isPauseForApprovalChunk, } from './tool.js';
|
|
24
24
|
export { zodToJsonSchema } from './zod-to-json-schema.js';
|
|
25
|
+
// Scoped / multi-capability tools — collapse a discriminated union of
|
|
26
|
+
// capability branches into one flat function-call schema.
|
|
27
|
+
export { scopedTool, capability, flattenCapabilities, ScopedToolError } from './scoped-tool.js';
|
|
25
28
|
// Handoffs
|
|
26
29
|
export { handoff, isHandoffTool } from './handoff.js';
|
|
27
30
|
// Agent
|
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":"AAAA,2BAA2B;AAE3B,cAAc;AACd,OAAO,EAAE,kBAAkB,IAAI,QAAQ,EAAE,eAAe,IAAI,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAyErI,WAAW;AACX,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAwB,MAAM,0BAA0B,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAqB,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAsB,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAA0B,MAAM,sBAAsB,CAAA;AAClF,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAyB,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC7H,OAAO,EAAE,cAAc,EAA6C,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,kBAAkB,EAAyB,MAAM,2BAA2B,CAAA;AACrF,OAAO,EAAE,eAAe,EAAsB,MAAM,wBAAwB,CAAA;AAE5E,QAAQ;AACR,OAAO,EACL,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,sEAAsE;AACtE,0DAA0D;AAC1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG/F,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGrD,QAAQ;AACR,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAW7I,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAErJ,oBAAoB;AACpB,OAAO,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAA;AAExD,eAAe;AACf,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAA;AAQrC,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,mDAAmD;AACnD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GAKvB,MAAM,0BAA0B,CAAA;AAEjC,gFAAgF;AAChF,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,GAKd,MAAM,sBAAsB,CAAA;AAE7B,SAAS;AACT,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExE,qBAAqB;AACrB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE3E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAiBvB,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,qCAAqC;AACrC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAYpE,6DAA6D;AAC7D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAG1H,oBAAoB;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE9D,8EAA8E;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAQzD,sEAAsE;AACtE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,SAAS,GACV,MAAM,qBAAqB,CAAA;AAO5B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAOpD,UAAU;AACV,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework-free core of the `useAgentRun` React hook.
|
|
3
|
+
*
|
|
4
|
+
* The React hook (`useAgentRun.ts`) is a thin wrapper around the pieces here —
|
|
5
|
+
* same posture as `@rudderjs/sync`'s `CollabRoomManager` vs `useCollabRoom`:
|
|
6
|
+
* keeping the state machine and the stream-driving loop out of React lets us
|
|
7
|
+
* exhaustively unit-test the client-tool round-trip and the approval resume
|
|
8
|
+
* without a React testing harness (the framework intentionally ships none).
|
|
9
|
+
*
|
|
10
|
+
* Builds on the named-event agent-SSE protocol in `../agent-sse.ts`
|
|
11
|
+
* (`readAgentStream` + the `AgentStreamTurn` it accumulates). No `react` and no
|
|
12
|
+
* `node:` imports — safe in any `fetch`-capable runtime.
|
|
13
|
+
*/
|
|
14
|
+
import type { AgentStreamCallbacks, AgentStreamTurn } from '../agent-sse.js';
|
|
15
|
+
import type { ToolCall } from '../types.js';
|
|
16
|
+
/** One renderable entry in a run's transcript, in arrival order. */
|
|
17
|
+
export type AgentRunOutput = {
|
|
18
|
+
type: 'text';
|
|
19
|
+
text: string;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'tool_call';
|
|
22
|
+
id?: string;
|
|
23
|
+
tool: string;
|
|
24
|
+
input?: Record<string, unknown>;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'tool_update';
|
|
27
|
+
id?: string;
|
|
28
|
+
tool?: string;
|
|
29
|
+
update: unknown;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'tool_result';
|
|
32
|
+
id?: string;
|
|
33
|
+
tool?: string;
|
|
34
|
+
content: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: 'approval_request';
|
|
37
|
+
toolCall: ToolCall;
|
|
38
|
+
isClientTool: boolean;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'handoff';
|
|
41
|
+
from: string;
|
|
42
|
+
to: string;
|
|
43
|
+
message?: string;
|
|
44
|
+
} | {
|
|
45
|
+
type: 'error';
|
|
46
|
+
message: string;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Append one decoded SSE event to the output transcript, returning a NEW array
|
|
50
|
+
* (so a React consumer can use it as immutable state). Consecutive `text`
|
|
51
|
+
* deltas coalesce into the trailing text entry so streamed text renders as one
|
|
52
|
+
* growing block. `complete` and `pending_client_tools` produce no transcript
|
|
53
|
+
* entry — they drive run status / pending-action state instead.
|
|
54
|
+
*/
|
|
55
|
+
export declare function appendAgentOutput(outputs: AgentRunOutput[], event: string, data: unknown): AgentRunOutput[];
|
|
56
|
+
/** A client-executed tool result, keyed to its originating tool call. */
|
|
57
|
+
export interface AgentToolResult {
|
|
58
|
+
toolCallId: string;
|
|
59
|
+
result: unknown;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Run each pending client-tool call through the resolver, in order, collecting
|
|
63
|
+
* results keyed by `toolCallId`. A resolver that throws yields an
|
|
64
|
+
* `{ error }` result rather than aborting the batch — the model sees the
|
|
65
|
+
* failure as that tool's result and can recover, matching the server-side
|
|
66
|
+
* tool-error posture.
|
|
67
|
+
*/
|
|
68
|
+
export declare function executeClientTools(calls: ToolCall[], resolver: (call: ToolCall) => unknown | Promise<unknown>): Promise<AgentToolResult[]>;
|
|
69
|
+
/**
|
|
70
|
+
* The intent the consumer's `request` function turns into an SSE `Response`.
|
|
71
|
+
* The hook owns the run/resume state machine; the app owns the endpoint and
|
|
72
|
+
* the request body shape (only the app's route knows how to reconstruct the
|
|
73
|
+
* server-side message history), so the driver hands it a typed intent and
|
|
74
|
+
* expects a streaming `Response` back.
|
|
75
|
+
*/
|
|
76
|
+
export type AgentRunRequest<TInput = unknown> = {
|
|
77
|
+
type: 'run';
|
|
78
|
+
input: TInput;
|
|
79
|
+
} | {
|
|
80
|
+
type: 'resume';
|
|
81
|
+
/** The accumulated turn the resume continues from. */
|
|
82
|
+
turn: AgentStreamTurn;
|
|
83
|
+
/** Results from client-tool calls executed in the browser. */
|
|
84
|
+
clientToolResults: AgentToolResult[];
|
|
85
|
+
/** Tool-call ids the user approved. */
|
|
86
|
+
approved: string[];
|
|
87
|
+
/** Tool-call ids the user rejected. */
|
|
88
|
+
rejected: string[];
|
|
89
|
+
};
|
|
90
|
+
export interface AgentRunDriverOptions<TInput = unknown> {
|
|
91
|
+
/** Turn a run/resume intent into the streaming SSE `Response`. */
|
|
92
|
+
request: (req: AgentRunRequest<TInput>, signal: AbortSignal) => Promise<Response>;
|
|
93
|
+
/**
|
|
94
|
+
* Optional client-tool resolver. When provided, a run that pauses awaiting
|
|
95
|
+
* client tools auto-executes them and resumes — no manual `respond`. Omit it
|
|
96
|
+
* to surface the pending calls and resume by hand.
|
|
97
|
+
*/
|
|
98
|
+
clientTools?: (call: ToolCall) => unknown | Promise<unknown>;
|
|
99
|
+
/** Forwarded to `readAgentStream` so the consumer sees events as they arrive. */
|
|
100
|
+
callbacks?: AgentStreamCallbacks;
|
|
101
|
+
signal: AbortSignal;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Drive one logical agent run to a settling point: stream the response,
|
|
105
|
+
* accumulate the turn, and — when a client-tool resolver is configured —
|
|
106
|
+
* auto-resume across client-tool pauses until the run completes or parks on an
|
|
107
|
+
* approval gate / manual client-tool round-trip. Returns the final
|
|
108
|
+
* {@link AgentStreamTurn}. Framework-free; the hook wires `callbacks` to state.
|
|
109
|
+
*/
|
|
110
|
+
export declare function driveAgentRun<TInput = unknown>(initial: AgentRunRequest<TInput>, opts: AgentRunDriverOptions<TInput>): Promise<AgentStreamTurn>;
|
|
111
|
+
//# sourceMappingURL=agent-run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-run.d.ts","sourceRoot":"","sources":["../../src/react/agent-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework-free core of the `useAgentRun` React hook.
|
|
3
|
+
*
|
|
4
|
+
* The React hook (`useAgentRun.ts`) is a thin wrapper around the pieces here —
|
|
5
|
+
* same posture as `@rudderjs/sync`'s `CollabRoomManager` vs `useCollabRoom`:
|
|
6
|
+
* keeping the state machine and the stream-driving loop out of React lets us
|
|
7
|
+
* exhaustively unit-test the client-tool round-trip and the approval resume
|
|
8
|
+
* without a React testing harness (the framework intentionally ships none).
|
|
9
|
+
*
|
|
10
|
+
* Builds on the named-event agent-SSE protocol in `../agent-sse.ts`
|
|
11
|
+
* (`readAgentStream` + the `AgentStreamTurn` it accumulates). No `react` and no
|
|
12
|
+
* `node:` imports — safe in any `fetch`-capable runtime.
|
|
13
|
+
*/
|
|
14
|
+
import { readAgentStream } from '../agent-sse.js';
|
|
15
|
+
/**
|
|
16
|
+
* Append one decoded SSE event to the output transcript, returning a NEW array
|
|
17
|
+
* (so a React consumer can use it as immutable state). Consecutive `text`
|
|
18
|
+
* deltas coalesce into the trailing text entry so streamed text renders as one
|
|
19
|
+
* growing block. `complete` and `pending_client_tools` produce no transcript
|
|
20
|
+
* entry — they drive run status / pending-action state instead.
|
|
21
|
+
*/
|
|
22
|
+
export function appendAgentOutput(outputs, event, data) {
|
|
23
|
+
switch (event) {
|
|
24
|
+
case 'text': {
|
|
25
|
+
const text = data.text ?? '';
|
|
26
|
+
if (!text)
|
|
27
|
+
return outputs;
|
|
28
|
+
const last = outputs[outputs.length - 1];
|
|
29
|
+
if (last && last.type === 'text') {
|
|
30
|
+
return [...outputs.slice(0, -1), { type: 'text', text: last.text + text }];
|
|
31
|
+
}
|
|
32
|
+
return [...outputs, { type: 'text', text }];
|
|
33
|
+
}
|
|
34
|
+
case 'tool_call': {
|
|
35
|
+
const d = data;
|
|
36
|
+
return [...outputs, { type: 'tool_call', ...(d.id ? { id: d.id } : {}), tool: d.tool, ...(d.input ? { input: d.input } : {}) }];
|
|
37
|
+
}
|
|
38
|
+
case 'tool_update': {
|
|
39
|
+
const d = data;
|
|
40
|
+
return [...outputs, { type: 'tool_update', ...(d.id ? { id: d.id } : {}), ...(d.tool ? { tool: d.tool } : {}), update: d.update }];
|
|
41
|
+
}
|
|
42
|
+
case 'tool_result': {
|
|
43
|
+
const d = data;
|
|
44
|
+
const id = d.toolCallId ?? d.id;
|
|
45
|
+
return [...outputs, { type: 'tool_result', ...(id ? { id } : {}), ...(d.tool ? { tool: d.tool } : {}), content: d.content }];
|
|
46
|
+
}
|
|
47
|
+
case 'tool_approval_required': {
|
|
48
|
+
const d = data;
|
|
49
|
+
return [...outputs, { type: 'approval_request', toolCall: d.toolCall, isClientTool: d.isClientTool }];
|
|
50
|
+
}
|
|
51
|
+
case 'handoff': {
|
|
52
|
+
const d = data;
|
|
53
|
+
return [...outputs, { type: 'handoff', from: d.from, to: d.to, ...(d.message ? { message: d.message } : {}) }];
|
|
54
|
+
}
|
|
55
|
+
case 'error': {
|
|
56
|
+
const d = data;
|
|
57
|
+
return [...outputs, { type: 'error', message: d.message ?? 'Unknown error' }];
|
|
58
|
+
}
|
|
59
|
+
default:
|
|
60
|
+
return outputs;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Run each pending client-tool call through the resolver, in order, collecting
|
|
65
|
+
* results keyed by `toolCallId`. A resolver that throws yields an
|
|
66
|
+
* `{ error }` result rather than aborting the batch — the model sees the
|
|
67
|
+
* failure as that tool's result and can recover, matching the server-side
|
|
68
|
+
* tool-error posture.
|
|
69
|
+
*/
|
|
70
|
+
export async function executeClientTools(calls, resolver) {
|
|
71
|
+
const results = [];
|
|
72
|
+
for (const call of calls) {
|
|
73
|
+
try {
|
|
74
|
+
results.push({ toolCallId: call.id, result: await resolver(call) });
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
results.push({ toolCallId: call.id, result: { error: err instanceof Error ? err.message : String(err) } });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return results;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Drive one logical agent run to a settling point: stream the response,
|
|
84
|
+
* accumulate the turn, and — when a client-tool resolver is configured —
|
|
85
|
+
* auto-resume across client-tool pauses until the run completes or parks on an
|
|
86
|
+
* approval gate / manual client-tool round-trip. Returns the final
|
|
87
|
+
* {@link AgentStreamTurn}. Framework-free; the hook wires `callbacks` to state.
|
|
88
|
+
*/
|
|
89
|
+
export async function driveAgentRun(initial, opts) {
|
|
90
|
+
let req = initial;
|
|
91
|
+
for (;;) {
|
|
92
|
+
const resp = await opts.request(req, opts.signal);
|
|
93
|
+
if (!resp.ok) {
|
|
94
|
+
throw new Error(`Agent stream request failed with status ${resp.status}.`);
|
|
95
|
+
}
|
|
96
|
+
const turn = await readAgentStream(resp, opts.callbacks);
|
|
97
|
+
// Auto-resume only across client-tool pauses, and only with a resolver.
|
|
98
|
+
// Approval pauses always park for an explicit approve/reject decision.
|
|
99
|
+
if (turn.awaiting === 'client_tools' && opts.clientTools && turn.pendingClientTools.length > 0) {
|
|
100
|
+
const clientToolResults = await executeClientTools(turn.pendingClientTools, opts.clientTools);
|
|
101
|
+
req = { type: 'resume', turn, clientToolResults, approved: [], rejected: [] };
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
return turn;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=agent-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-run.js","sourceRoot":"","sources":["../../src/react/agent-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React client runtime for `@rudderjs/ai`.
|
|
3
|
+
*
|
|
4
|
+
* The agent framework, providers, and the runtime-agnostic agent-SSE protocol
|
|
5
|
+
* (`readAgentStream` + the server framers) live in the main `@rudderjs/ai`
|
|
6
|
+
* entry. This subpath adds the React hook that drives a streamed agent run from
|
|
7
|
+
* a component — same split as `@rudderjs/sync/react` (the main entry stays
|
|
8
|
+
* React-free; React lives behind `/react`).
|
|
9
|
+
*
|
|
10
|
+
* Peer requirement: `react@>=19.2.0`.
|
|
11
|
+
*/
|
|
12
|
+
export { useAgentRun } from './useAgentRun.js';
|
|
13
|
+
export type { AgentRunStatus, UseAgentRunOptions, UseAgentRunResult, } from './useAgentRun.js';
|
|
14
|
+
export { appendAgentOutput, executeClientTools, driveAgentRun, } from './agent-run.js';
|
|
15
|
+
export type { AgentRunOutput, AgentToolResult, AgentRunRequest, AgentRunDriverOptions, } from './agent-run.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,cAAc,EACd,eAAe,EACf,eAAe,EACf,qBAAqB,GACtB,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React client runtime for `@rudderjs/ai`.
|
|
3
|
+
*
|
|
4
|
+
* The agent framework, providers, and the runtime-agnostic agent-SSE protocol
|
|
5
|
+
* (`readAgentStream` + the server framers) live in the main `@rudderjs/ai`
|
|
6
|
+
* entry. This subpath adds the React hook that drives a streamed agent run from
|
|
7
|
+
* a component — same split as `@rudderjs/sync/react` (the main entry stays
|
|
8
|
+
* React-free; React lives behind `/react`).
|
|
9
|
+
*
|
|
10
|
+
* Peer requirement: `react@>=19.2.0`.
|
|
11
|
+
*/
|
|
12
|
+
export { useAgentRun } from './useAgentRun.js';
|
|
13
|
+
// Framework-free core — exported so apps can drive a run outside React (or
|
|
14
|
+
// unit-test their own integration) and so the output/request types are nameable.
|
|
15
|
+
export { appendAgentOutput, executeClientTools, driveAgentRun, } from './agent-run.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAO9C,2EAA2E;AAC3E,iFAAiF;AACjF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { AgentSseApprovalPayload, AgentSseCompletePayload } from '../agent-sse.js';
|
|
2
|
+
import type { ToolCall } from '../types.js';
|
|
3
|
+
import { type AgentRunOutput, type AgentRunRequest, type AgentToolResult } from './agent-run.js';
|
|
4
|
+
/**
|
|
5
|
+
* Run status. While the run is paused awaiting client tools (no resolver) or an
|
|
6
|
+
* approval decision, status stays `'running'` and `pendingClientTools` /
|
|
7
|
+
* `pendingApproval` are populated — the UI renders the prompt and calls
|
|
8
|
+
* `respond` / `approve` / `reject` to continue the same logical run.
|
|
9
|
+
*/
|
|
10
|
+
export type AgentRunStatus = 'idle' | 'running' | 'complete' | 'error';
|
|
11
|
+
export interface UseAgentRunOptions<TInput = unknown> {
|
|
12
|
+
/**
|
|
13
|
+
* Turn a run/resume intent into the streaming SSE `Response`. The app owns
|
|
14
|
+
* the endpoint and request-body shape (only its route can reconstruct the
|
|
15
|
+
* server-side message history); typically `fetch(endpoint, { ..., signal })`.
|
|
16
|
+
*/
|
|
17
|
+
request: (req: AgentRunRequest<TInput>, signal: AbortSignal) => Promise<Response>;
|
|
18
|
+
/**
|
|
19
|
+
* Optional client-tool resolver. When set, a run that pauses awaiting client
|
|
20
|
+
* tools auto-executes them and resumes; omit it to surface
|
|
21
|
+
* `pendingClientTools` and resume manually via `respond`.
|
|
22
|
+
*/
|
|
23
|
+
clientTools?: (call: ToolCall) => unknown | Promise<unknown>;
|
|
24
|
+
onComplete?: (data: AgentSseCompletePayload) => void;
|
|
25
|
+
onError?: (message: string) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface UseAgentRunResult<TInput = unknown> {
|
|
28
|
+
status: AgentRunStatus;
|
|
29
|
+
/** Renderable transcript, accumulated across the run and every resume. */
|
|
30
|
+
outputs: AgentRunOutput[];
|
|
31
|
+
/** Client-tool calls awaiting a browser round-trip (empty when auto-resolved). */
|
|
32
|
+
pendingClientTools: ToolCall[];
|
|
33
|
+
/** The approval gate the run parked on, or `null`. */
|
|
34
|
+
pendingApproval: AgentSseApprovalPayload | null;
|
|
35
|
+
error: string | null;
|
|
36
|
+
/** Start a fresh run, resetting the transcript. */
|
|
37
|
+
run: (input: TInput) => Promise<void>;
|
|
38
|
+
/** Resume a client-tool pause with results gathered by hand. */
|
|
39
|
+
respond: (results: AgentToolResult[]) => Promise<void>;
|
|
40
|
+
/** Approve the pending approval gate and resume. */
|
|
41
|
+
approve: (toolCallId: string) => Promise<void>;
|
|
42
|
+
/** Reject the pending approval gate and resume. */
|
|
43
|
+
reject: (toolCallId: string) => Promise<void>;
|
|
44
|
+
/** Abort any in-flight stream and return to `idle`. */
|
|
45
|
+
reset: () => void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* React client runtime for the named-event agent-SSE protocol. Drives
|
|
49
|
+
* `readAgentStream` (via the framework-free `driveAgentRun`), accumulates the
|
|
50
|
+
* transcript, tracks run status, and surfaces pending client-tool calls and
|
|
51
|
+
* approval requests with imperative `run` / `respond` / `approve` / `reject`.
|
|
52
|
+
*
|
|
53
|
+
* Lives behind the `@rudderjs/ai/react` subpath so the main entry stays
|
|
54
|
+
* runtime-agnostic (same split as `@rudderjs/sync/react`).
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* const { status, outputs, run } = useAgentRun({
|
|
58
|
+
* request: (req, signal) =>
|
|
59
|
+
* fetch('/api/agent', { method: 'POST', body: JSON.stringify(req), signal }),
|
|
60
|
+
* })
|
|
61
|
+
* // <button onClick={() => run('Summarize the latest report')}>Ask</button>
|
|
62
|
+
*/
|
|
63
|
+
export declare function useAgentRun<TInput = unknown>(options: UseAgentRunOptions<TInput>): UseAgentRunResult<TInput>;
|
|
64
|
+
//# sourceMappingURL=useAgentRun.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAgentRun.d.ts","sourceRoot":"","sources":["../../src/react/useAgentRun.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EAGxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAA;AAEvB;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAA;AAEtE,MAAM,WAAW,kBAAkB,CAAC,MAAM,GAAG,OAAO;IAClD;;;;OAIG;IACH,OAAO,EAAO,CAAC,GAAG,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtF;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5D,UAAU,CAAC,EAAG,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,CAAA;IACrD,OAAO,CAAC,EAAM,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAED,MAAM,WAAW,iBAAiB,CAAC,MAAM,GAAG,OAAO;IACjD,MAAM,EAAc,cAAc,CAAA;IAClC,0EAA0E;IAC1E,OAAO,EAAa,cAAc,EAAE,CAAA;IACpC,kFAAkF;IAClF,kBAAkB,EAAE,QAAQ,EAAE,CAAA;IAC9B,sDAAsD;IACtD,eAAe,EAAK,uBAAuB,GAAG,IAAI,CAAA;IAClD,KAAK,EAAe,MAAM,GAAG,IAAI,CAAA;IACjC,mDAAmD;IACnD,GAAG,EAAiB,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,gEAAgE;IAChE,OAAO,EAAa,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,oDAAoD;IACpD,OAAO,EAAa,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,mDAAmD;IACnD,MAAM,EAAc,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,uDAAuD;IACvD,KAAK,EAAe,MAAM,IAAI,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,MAAM,GAAG,OAAO,EAC1C,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAClC,iBAAiB,CAAC,MAAM,CAAC,CA8G3B"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { useCallback, useRef, useState } from 'react';
|
|
2
|
+
import { appendAgentOutput, driveAgentRun, } from './agent-run.js';
|
|
3
|
+
/**
|
|
4
|
+
* React client runtime for the named-event agent-SSE protocol. Drives
|
|
5
|
+
* `readAgentStream` (via the framework-free `driveAgentRun`), accumulates the
|
|
6
|
+
* transcript, tracks run status, and surfaces pending client-tool calls and
|
|
7
|
+
* approval requests with imperative `run` / `respond` / `approve` / `reject`.
|
|
8
|
+
*
|
|
9
|
+
* Lives behind the `@rudderjs/ai/react` subpath so the main entry stays
|
|
10
|
+
* runtime-agnostic (same split as `@rudderjs/sync/react`).
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const { status, outputs, run } = useAgentRun({
|
|
14
|
+
* request: (req, signal) =>
|
|
15
|
+
* fetch('/api/agent', { method: 'POST', body: JSON.stringify(req), signal }),
|
|
16
|
+
* })
|
|
17
|
+
* // <button onClick={() => run('Summarize the latest report')}>Ask</button>
|
|
18
|
+
*/
|
|
19
|
+
export function useAgentRun(options) {
|
|
20
|
+
const [status, setStatus] = useState('idle');
|
|
21
|
+
const [outputs, setOutputs] = useState([]);
|
|
22
|
+
const [pendingClientTools, setPendingClientTools] = useState([]);
|
|
23
|
+
const [pendingApproval, setPendingApproval] = useState(null);
|
|
24
|
+
const [error, setError] = useState(null);
|
|
25
|
+
// Latest values needed by the async driver / resume actions, kept in refs so
|
|
26
|
+
// the imperative callbacks don't go stale between renders.
|
|
27
|
+
const optionsRef = useRef(options);
|
|
28
|
+
optionsRef.current = options;
|
|
29
|
+
const turnRef = useRef(null);
|
|
30
|
+
const abortRef = useRef(null);
|
|
31
|
+
// Shared loop body for both the initial run and every resume.
|
|
32
|
+
const drive = useCallback(async (req) => {
|
|
33
|
+
const opts = optionsRef.current;
|
|
34
|
+
abortRef.current?.abort();
|
|
35
|
+
const controller = new AbortController();
|
|
36
|
+
abortRef.current = controller;
|
|
37
|
+
setStatus('running');
|
|
38
|
+
setPendingClientTools([]);
|
|
39
|
+
setPendingApproval(null);
|
|
40
|
+
setError(null);
|
|
41
|
+
let sawError = null;
|
|
42
|
+
const callbacks = {
|
|
43
|
+
onText: t => setOutputs(o => appendAgentOutput(o, 'text', { text: t })),
|
|
44
|
+
onToolCall: d => setOutputs(o => appendAgentOutput(o, 'tool_call', d)),
|
|
45
|
+
onToolUpdate: d => setOutputs(o => appendAgentOutput(o, 'tool_update', d)),
|
|
46
|
+
onToolResult: d => setOutputs(o => appendAgentOutput(o, 'tool_result', d)),
|
|
47
|
+
onToolApprovalRequired: d => setOutputs(o => appendAgentOutput(o, 'tool_approval_required', d)),
|
|
48
|
+
onHandoff: d => setOutputs(o => appendAgentOutput(o, 'handoff', d)),
|
|
49
|
+
onError: d => { sawError = d.message; setOutputs(o => appendAgentOutput(o, 'error', d)); },
|
|
50
|
+
onComplete: d => opts.onComplete?.(d),
|
|
51
|
+
};
|
|
52
|
+
try {
|
|
53
|
+
const turn = await driveAgentRun(req, {
|
|
54
|
+
request: opts.request,
|
|
55
|
+
callbacks,
|
|
56
|
+
signal: controller.signal,
|
|
57
|
+
...(opts.clientTools ? { clientTools: opts.clientTools } : {}),
|
|
58
|
+
});
|
|
59
|
+
if (controller.signal.aborted)
|
|
60
|
+
return;
|
|
61
|
+
turnRef.current = turn;
|
|
62
|
+
if (sawError !== null) {
|
|
63
|
+
setStatus('error');
|
|
64
|
+
setError(sawError);
|
|
65
|
+
opts.onError?.(sawError);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// Parked on an approval gate, or on client tools with no resolver:
|
|
69
|
+
// surface the prompt and keep the run logically open.
|
|
70
|
+
if (turn.awaiting === 'approval' && turn.pendingApproval) {
|
|
71
|
+
setPendingApproval(turn.pendingApproval);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (turn.awaiting === 'client_tools' && turn.pendingClientTools.length > 0) {
|
|
75
|
+
setPendingClientTools(turn.pendingClientTools);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
setStatus('complete');
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
if (controller.signal.aborted)
|
|
82
|
+
return;
|
|
83
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
84
|
+
setStatus('error');
|
|
85
|
+
setError(message);
|
|
86
|
+
optionsRef.current.onError?.(message);
|
|
87
|
+
}
|
|
88
|
+
}, []);
|
|
89
|
+
const run = useCallback(async (input) => {
|
|
90
|
+
turnRef.current = null;
|
|
91
|
+
setOutputs([]);
|
|
92
|
+
await drive({ type: 'run', input });
|
|
93
|
+
}, [drive]);
|
|
94
|
+
const respond = useCallback(async (results) => {
|
|
95
|
+
const turn = turnRef.current;
|
|
96
|
+
if (!turn)
|
|
97
|
+
return;
|
|
98
|
+
await drive({ type: 'resume', turn, clientToolResults: results, approved: [], rejected: [] });
|
|
99
|
+
}, [drive]);
|
|
100
|
+
const approve = useCallback(async (toolCallId) => {
|
|
101
|
+
const turn = turnRef.current;
|
|
102
|
+
if (!turn)
|
|
103
|
+
return;
|
|
104
|
+
await drive({ type: 'resume', turn, clientToolResults: [], approved: [toolCallId], rejected: [] });
|
|
105
|
+
}, [drive]);
|
|
106
|
+
const reject = useCallback(async (toolCallId) => {
|
|
107
|
+
const turn = turnRef.current;
|
|
108
|
+
if (!turn)
|
|
109
|
+
return;
|
|
110
|
+
await drive({ type: 'resume', turn, clientToolResults: [], approved: [], rejected: [toolCallId] });
|
|
111
|
+
}, [drive]);
|
|
112
|
+
const reset = useCallback(() => {
|
|
113
|
+
abortRef.current?.abort();
|
|
114
|
+
abortRef.current = null;
|
|
115
|
+
turnRef.current = null;
|
|
116
|
+
setStatus('idle');
|
|
117
|
+
setOutputs([]);
|
|
118
|
+
setPendingClientTools([]);
|
|
119
|
+
setPendingApproval(null);
|
|
120
|
+
setError(null);
|
|
121
|
+
}, []);
|
|
122
|
+
return { status, outputs, pendingClientTools, pendingApproval, error, run, respond, approve, reject, reset };
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=useAgentRun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAgentRun.js","sourceRoot":"","sources":["../../src/react/useAgentRun.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ServerToolBuilder } from './tool.js';
|
|
3
|
+
import type { ToolCallContext, ToolNeedsApproval } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* One capability branch of a scoped tool: a named sub-tool with its own
|
|
6
|
+
* input shape + handler. Authored either inline in {@link scopedTool}'s
|
|
7
|
+
* `capabilities` map or via the {@link capability} helper (which preserves
|
|
8
|
+
* per-branch input inference for the handler signature).
|
|
9
|
+
*/
|
|
10
|
+
export interface ScopedCapability<TInput extends z.ZodType = z.ZodType, TOutput = unknown, TUpdate = unknown> {
|
|
11
|
+
/** Optional per-capability description, surfaced in the discriminator enum note. */
|
|
12
|
+
description?: string;
|
|
13
|
+
/** This branch's input schema. Validated in code before the handler runs. */
|
|
14
|
+
input: TInput;
|
|
15
|
+
/**
|
|
16
|
+
* Branch handler. May be a plain async function (single return value) or
|
|
17
|
+
* an `async function*` (yields `tool-update` chunks, returns the result) —
|
|
18
|
+
* the same dual protocol `ToolBuilder.server` accepts.
|
|
19
|
+
*/
|
|
20
|
+
handler: (input: z.infer<TInput>, ctx?: ToolCallContext) => TOutput | Promise<TOutput> | AsyncGenerator<TUpdate, TOutput, void>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Identity helper that infers a capability's input type at the definition
|
|
24
|
+
* site, so its `handler` parameter is typed without an explicit annotation.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* const web = capability({
|
|
28
|
+
* input: z.object({ query: z.string() }),
|
|
29
|
+
* handler: async ({ query }) => search(query), // `query` is `string`
|
|
30
|
+
* })
|
|
31
|
+
*/
|
|
32
|
+
export declare function capability<TInput extends z.ZodType, TOutput, TUpdate = unknown>(spec: ScopedCapability<TInput, TOutput, TUpdate>): ScopedCapability<TInput, TOutput, TUpdate>;
|
|
33
|
+
export interface ScopedToolOptions {
|
|
34
|
+
name: string;
|
|
35
|
+
description: string;
|
|
36
|
+
/** Discriminator field name added to the flat schema. Default `'sub_tool'`. */
|
|
37
|
+
discriminator?: string;
|
|
38
|
+
/** Named capability branches. Keys become the discriminator enum values. */
|
|
39
|
+
capabilities: Record<string, ScopedCapability>;
|
|
40
|
+
/**
|
|
41
|
+
* Runtime allowlist — restrict callable capabilities to a subset of
|
|
42
|
+
* `capabilities` keys (e.g. per-plan gating). Both the discriminator enum
|
|
43
|
+
* and the runtime dispatch honor it. Defaults to every capability key.
|
|
44
|
+
* Entries not present in `capabilities` throw at build time.
|
|
45
|
+
*/
|
|
46
|
+
allow?: string[];
|
|
47
|
+
/** Forwarded to the generated tool definition. */
|
|
48
|
+
needsApproval?: ToolNeedsApproval | undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The shared flattening plan, computed once so the JSON-Schema render and the
|
|
52
|
+
* runtime dispatch/validation cannot drift. Exported for adapters and tests.
|
|
53
|
+
*/
|
|
54
|
+
export interface FlatPlan {
|
|
55
|
+
discriminator: string;
|
|
56
|
+
/** Allowed discriminator values, in declaration order. */
|
|
57
|
+
values: string[];
|
|
58
|
+
/** Merged JSON-Schema properties (discriminator included). */
|
|
59
|
+
properties: Record<string, unknown>;
|
|
60
|
+
/** Top-level required = discriminator + fields required by EVERY branch. */
|
|
61
|
+
required: string[];
|
|
62
|
+
/** Per-capability required field names, for in-code validation before dispatch. */
|
|
63
|
+
requiredByCapability: Record<string, string[]>;
|
|
64
|
+
/** For each non-discriminator field, which capabilities reference it. */
|
|
65
|
+
owners: Record<string, string[]>;
|
|
66
|
+
}
|
|
67
|
+
/** Error thrown by a scoped tool's dispatch before any handler runs. */
|
|
68
|
+
export declare class ScopedToolError extends Error {
|
|
69
|
+
readonly name = "ScopedToolError";
|
|
70
|
+
constructor(message: string);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Collapse N capability branches into one flat function-call plan with a
|
|
74
|
+
* discriminator enum. Function-calling APIs do not reliably honor a top-level
|
|
75
|
+
* `oneOf`, so a discriminated union must flatten to a single object schema:
|
|
76
|
+
* the union of all branches' fields, a top-level `required` containing only
|
|
77
|
+
* fields required by EVERY branch, and per-branch requireds enforced in code.
|
|
78
|
+
*/
|
|
79
|
+
export declare function flattenCapabilities(capabilities: Record<string, ScopedCapability>, discriminator?: string, allow?: string[]): FlatPlan;
|
|
80
|
+
/**
|
|
81
|
+
* Build a single function-call tool from a discriminated union of capability
|
|
82
|
+
* branches. The branches collapse into one flat schema with a discriminator
|
|
83
|
+
* enum (see {@link flattenCapabilities}); at call time the dispatch validates
|
|
84
|
+
* the discriminator against the allowlist, validates the chosen branch's input
|
|
85
|
+
* (enforcing its required fields), and runs that branch's handler.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* const search = scopedTool({
|
|
89
|
+
* name: 'search',
|
|
90
|
+
* description: 'Run a search across one of several engines.',
|
|
91
|
+
* capabilities: {
|
|
92
|
+
* web: capability({ input: z.object({ query: z.string() }), handler: webSearch }),
|
|
93
|
+
* images: capability({ input: z.object({ query: z.string(), safe: z.boolean() }), handler: imageSearch }),
|
|
94
|
+
* },
|
|
95
|
+
* })
|
|
96
|
+
*/
|
|
97
|
+
export declare function scopedTool(options: ScopedToolOptions): ServerToolBuilder<Record<string, unknown>, unknown>;
|
|
98
|
+
//# sourceMappingURL=scoped-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-tool.d.ts","sourceRoot":"","sources":["../src/scoped-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAyB,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE3F;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB,CAC/B,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EACpC,OAAO,GAAG,OAAO,EACjB,OAAO,GAAG,OAAO;IAEjB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,OAAO,EAAE,CACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EACtB,GAAG,CAAC,EAAE,eAAe,KAClB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;CACzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,EAC7E,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAC/C,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAE5C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC9C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,kDAAkD;IAClD,aAAa,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,mFAAmF;IACnF,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAC9C,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CACjC;AAED,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAkB,IAAI,qBAAoB;gBAC9B,OAAO,EAAE,MAAM;CAG5B;AAYD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC9C,aAAa,SAAa,EAC1B,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,QAAQ,CA8EV;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAoD1G"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ServerToolBuilder } from './tool.js';
|
|
3
|
+
import { isAsyncGenerator } from './tool-helpers.js';
|
|
4
|
+
import { zodToJsonSchema } from './zod-to-json-schema.js';
|
|
5
|
+
/**
|
|
6
|
+
* Identity helper that infers a capability's input type at the definition
|
|
7
|
+
* site, so its `handler` parameter is typed without an explicit annotation.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const web = capability({
|
|
11
|
+
* input: z.object({ query: z.string() }),
|
|
12
|
+
* handler: async ({ query }) => search(query), // `query` is `string`
|
|
13
|
+
* })
|
|
14
|
+
*/
|
|
15
|
+
export function capability(spec) {
|
|
16
|
+
return spec;
|
|
17
|
+
}
|
|
18
|
+
/** Error thrown by a scoped tool's dispatch before any handler runs. */
|
|
19
|
+
export class ScopedToolError extends Error {
|
|
20
|
+
name = 'ScopedToolError';
|
|
21
|
+
constructor(message) {
|
|
22
|
+
super(message);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function jsonSchemaFor(schema) {
|
|
26
|
+
const json = zodToJsonSchema(schema, 'input');
|
|
27
|
+
const properties = (json.properties && typeof json.properties === 'object') ? json.properties : {};
|
|
28
|
+
const required = Array.isArray(json.required) ? json.required.filter((r) => typeof r === 'string') : [];
|
|
29
|
+
return { properties, required };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Collapse N capability branches into one flat function-call plan with a
|
|
33
|
+
* discriminator enum. Function-calling APIs do not reliably honor a top-level
|
|
34
|
+
* `oneOf`, so a discriminated union must flatten to a single object schema:
|
|
35
|
+
* the union of all branches' fields, a top-level `required` containing only
|
|
36
|
+
* fields required by EVERY branch, and per-branch requireds enforced in code.
|
|
37
|
+
*/
|
|
38
|
+
export function flattenCapabilities(capabilities, discriminator = 'sub_tool', allow) {
|
|
39
|
+
const keys = Object.keys(capabilities);
|
|
40
|
+
if (keys.length === 0) {
|
|
41
|
+
throw new ScopedToolError('A scoped tool needs at least one capability.');
|
|
42
|
+
}
|
|
43
|
+
const values = allow ?? keys;
|
|
44
|
+
for (const v of values) {
|
|
45
|
+
if (!(v in capabilities)) {
|
|
46
|
+
throw new ScopedToolError(`allow lists "${v}", which is not a declared capability.`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (values.length === 0) {
|
|
50
|
+
throw new ScopedToolError('A scoped tool needs at least one allowed capability.');
|
|
51
|
+
}
|
|
52
|
+
const properties = {};
|
|
53
|
+
const owners = {};
|
|
54
|
+
const requiredByCapability = {};
|
|
55
|
+
// A field is top-level required iff every allowed branch requires it. Seed
|
|
56
|
+
// with the first branch's requireds, then intersect down across the rest.
|
|
57
|
+
let requiredByAll = null;
|
|
58
|
+
for (const key of values) {
|
|
59
|
+
if (key === discriminator) {
|
|
60
|
+
throw new ScopedToolError(`Capability "${key}" collides with the discriminator field name "${discriminator}".`);
|
|
61
|
+
}
|
|
62
|
+
const { properties: props, required } = jsonSchemaFor(capabilities[key].input);
|
|
63
|
+
requiredByCapability[key] = required;
|
|
64
|
+
for (const [field, schema] of Object.entries(props)) {
|
|
65
|
+
if (field === discriminator) {
|
|
66
|
+
throw new ScopedToolError(`Capability "${key}" declares a field named "${discriminator}", which collides with the discriminator.`);
|
|
67
|
+
}
|
|
68
|
+
// First branch to declare a field owns its schema; later branches must
|
|
69
|
+
// share the field name (the model fills one flat object), so we keep the
|
|
70
|
+
// first shape and just record co-ownership for the field's note.
|
|
71
|
+
if (!(field in properties))
|
|
72
|
+
properties[field] = schema;
|
|
73
|
+
(owners[field] ??= []).push(key);
|
|
74
|
+
}
|
|
75
|
+
requiredByAll = requiredByAll === null
|
|
76
|
+
? [...required]
|
|
77
|
+
: requiredByAll.filter(f => required.includes(f));
|
|
78
|
+
}
|
|
79
|
+
// Annotate each non-universal field with the capabilities that use it, so
|
|
80
|
+
// the model knows a field only applies to certain discriminator values.
|
|
81
|
+
for (const [field, ownerKeys] of Object.entries(owners)) {
|
|
82
|
+
if (ownerKeys.length === values.length)
|
|
83
|
+
continue; // universal — no note
|
|
84
|
+
const note = `Only for ${discriminator}: ${ownerKeys.join(', ')}.`;
|
|
85
|
+
const schema = properties[field];
|
|
86
|
+
if (schema && typeof schema === 'object') {
|
|
87
|
+
const s = schema;
|
|
88
|
+
s.description = typeof s.description === 'string' && s.description.length > 0
|
|
89
|
+
? `${s.description} ${note}`
|
|
90
|
+
: note;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const descParts = values.map(k => {
|
|
94
|
+
const d = capabilities[k].description;
|
|
95
|
+
return d ? `"${k}" (${d})` : `"${k}"`;
|
|
96
|
+
});
|
|
97
|
+
properties[discriminator] = {
|
|
98
|
+
type: 'string',
|
|
99
|
+
enum: values,
|
|
100
|
+
description: `Which capability to invoke. One of: ${descParts.join(', ')}.`,
|
|
101
|
+
};
|
|
102
|
+
return {
|
|
103
|
+
discriminator,
|
|
104
|
+
values,
|
|
105
|
+
properties,
|
|
106
|
+
required: [discriminator, ...(requiredByAll ?? [])],
|
|
107
|
+
requiredByCapability,
|
|
108
|
+
owners,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Build a single function-call tool from a discriminated union of capability
|
|
113
|
+
* branches. The branches collapse into one flat schema with a discriminator
|
|
114
|
+
* enum (see {@link flattenCapabilities}); at call time the dispatch validates
|
|
115
|
+
* the discriminator against the allowlist, validates the chosen branch's input
|
|
116
|
+
* (enforcing its required fields), and runs that branch's handler.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* const search = scopedTool({
|
|
120
|
+
* name: 'search',
|
|
121
|
+
* description: 'Run a search across one of several engines.',
|
|
122
|
+
* capabilities: {
|
|
123
|
+
* web: capability({ input: z.object({ query: z.string() }), handler: webSearch }),
|
|
124
|
+
* images: capability({ input: z.object({ query: z.string(), safe: z.boolean() }), handler: imageSearch }),
|
|
125
|
+
* },
|
|
126
|
+
* })
|
|
127
|
+
*/
|
|
128
|
+
export function scopedTool(options) {
|
|
129
|
+
const discriminator = options.discriminator ?? 'sub_tool';
|
|
130
|
+
const plan = flattenCapabilities(options.capabilities, discriminator, options.allow);
|
|
131
|
+
const allowed = new Set(plan.values);
|
|
132
|
+
const jsonSchema = {
|
|
133
|
+
type: 'object',
|
|
134
|
+
properties: plan.properties,
|
|
135
|
+
required: plan.required,
|
|
136
|
+
};
|
|
137
|
+
const definition = {
|
|
138
|
+
name: options.name,
|
|
139
|
+
description: options.description,
|
|
140
|
+
// Placeholder — the wire schema is `jsonSchema`; the loop's arg validation
|
|
141
|
+
// passes the raw object through and our dispatch does per-branch checks.
|
|
142
|
+
inputSchema: z.unknown(),
|
|
143
|
+
jsonSchema,
|
|
144
|
+
...(options.needsApproval !== undefined ? { needsApproval: options.needsApproval } : {}),
|
|
145
|
+
};
|
|
146
|
+
async function* dispatch(input, ctx) {
|
|
147
|
+
const raw = (input && typeof input === 'object') ? input : {};
|
|
148
|
+
const which = raw[discriminator];
|
|
149
|
+
if (typeof which !== 'string') {
|
|
150
|
+
throw new ScopedToolError(`Missing or non-string "${discriminator}". Expected one of: ${plan.values.join(', ')}.`);
|
|
151
|
+
}
|
|
152
|
+
if (!allowed.has(which)) {
|
|
153
|
+
throw new ScopedToolError(`Unknown ${discriminator} "${which}". Expected one of: ${plan.values.join(', ')}.`);
|
|
154
|
+
}
|
|
155
|
+
const branch = options.capabilities[which];
|
|
156
|
+
// Strip the discriminator before validating against the branch's schema —
|
|
157
|
+
// the branch never declares it, and a strict schema would reject it.
|
|
158
|
+
const { [discriminator]: _omit, ...branchInput } = raw;
|
|
159
|
+
const parsed = branch.input.safeParse(branchInput);
|
|
160
|
+
if (!parsed.success) {
|
|
161
|
+
const issues = parsed.error.issues
|
|
162
|
+
.map(i => `${i.path.map(String).join('.') || '(root)'}: ${i.message}`)
|
|
163
|
+
.join('; ');
|
|
164
|
+
throw new ScopedToolError(`Invalid arguments for ${discriminator} "${which}": ${issues}`);
|
|
165
|
+
}
|
|
166
|
+
const result = branch.handler(parsed.data, ctx);
|
|
167
|
+
if (isAsyncGenerator(result)) {
|
|
168
|
+
return yield* result;
|
|
169
|
+
}
|
|
170
|
+
return await result;
|
|
171
|
+
}
|
|
172
|
+
return new ServerToolBuilder(definition, dispatch);
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=scoped-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-tool.js","sourceRoot":"","sources":["../src/scoped-tool.ts"],"names":[],"mappings":"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"}
|
package/dist/server/provider.js
CHANGED
|
@@ -150,7 +150,7 @@ export class AiProvider extends ServiceProvider {
|
|
|
150
150
|
// (see requireKey). Skip with a grouped boot notice so the app boots
|
|
151
151
|
// and `AI.use('${name}')` surfaces the standard "not registered"
|
|
152
152
|
// error at the use-site with a clear hint to set the env var.
|
|
153
|
-
bootNotice('ai', `${name} skipped
|
|
153
|
+
bootNotice('ai', `${name} skipped, no API key (set it in .env)`);
|
|
154
154
|
continue;
|
|
155
155
|
}
|
|
156
156
|
AiRegistry.register(instance);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/server/provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/server/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,6 +85,18 @@ export interface SubAgentRunStore {
|
|
|
85
85
|
* replayed `subRunId` must not return data twice.
|
|
86
86
|
*/
|
|
87
87
|
consume(subRunId: string): Promise<SubAgentRunSnapshot | null>;
|
|
88
|
+
/**
|
|
89
|
+
* Non-destructive read. Returns the snapshot without deleting it, or
|
|
90
|
+
* `null` if the id is unknown or the snapshot has expired. Optional —
|
|
91
|
+
* for hosts that need a **validate-then-resume** pre-flight: inspect a
|
|
92
|
+
* paused snapshot's `meta` (ownership, resource-context, tool-result
|
|
93
|
+
* coverage) before handing the id to {@link Agent.resumeAsTool} /
|
|
94
|
+
* {@link Agent.resumeManyAsTool}, which own the single {@link consume}.
|
|
95
|
+
* The resume paths never call this — so a `load` then resume reads the
|
|
96
|
+
* snapshot once for validation and consumes it once on resume, with no
|
|
97
|
+
* `consume` then re-`store` round-trip. Mirrors {@link AgentRunStore.load}.
|
|
98
|
+
*/
|
|
99
|
+
load?(subRunId: string): Promise<SubAgentRunSnapshot | null>;
|
|
88
100
|
}
|
|
89
101
|
/**
|
|
90
102
|
* `Map`-backed implementation suitable for tests and single-process dev.
|
|
@@ -95,6 +107,7 @@ export declare class InMemorySubAgentRunStore implements SubAgentRunStore {
|
|
|
95
107
|
private readonly snapshots;
|
|
96
108
|
store(subRunId: string, snapshot: SubAgentRunSnapshot): Promise<void>;
|
|
97
109
|
consume(subRunId: string): Promise<SubAgentRunSnapshot | null>;
|
|
110
|
+
load(subRunId: string): Promise<SubAgentRunSnapshot | null>;
|
|
98
111
|
/** Test helper — clears all snapshots without consuming. */
|
|
99
112
|
clear(): void;
|
|
100
113
|
}
|
|
@@ -138,6 +151,7 @@ export declare class CachedSubAgentRunStore implements SubAgentRunStore {
|
|
|
138
151
|
private getCache;
|
|
139
152
|
store(subRunId: string, snapshot: SubAgentRunSnapshot): Promise<void>;
|
|
140
153
|
consume(subRunId: string): Promise<SubAgentRunSnapshot | null>;
|
|
154
|
+
load(subRunId: string): Promise<SubAgentRunSnapshot | null>;
|
|
141
155
|
}
|
|
142
156
|
export {};
|
|
143
157
|
//# sourceMappingURL=sub-agent-run-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent-run-store.d.ts","sourceRoot":"","sources":["../src/sub-agent-run-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,UAAU,CAAA;AAE1D;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,mDAAmD;IACnD,QAAQ,EAAY,SAAS,EAAE,CAAA;IAC/B;;;;;;;;OAQG;IACH,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,2EAA2E;IAC3E,UAAU,EAAU,MAAM,CAAA;IAC1B,sEAAsE;IACtE,WAAW,EAAS,MAAM,CAAA;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAU,iBAAiB,CAAA;IACrC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAA;IACvE;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"sub-agent-run-store.d.ts","sourceRoot":"","sources":["../src/sub-agent-run-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,9 @@ export class InMemorySubAgentRunStore {
|
|
|
16
16
|
this.snapshots.delete(subRunId);
|
|
17
17
|
return snapshot;
|
|
18
18
|
}
|
|
19
|
+
async load(subRunId) {
|
|
20
|
+
return this.snapshots.get(subRunId) ?? null;
|
|
21
|
+
}
|
|
19
22
|
/** Test helper — clears all snapshots without consuming. */
|
|
20
23
|
clear() {
|
|
21
24
|
this.snapshots.clear();
|
|
@@ -76,5 +79,9 @@ export class CachedSubAgentRunStore {
|
|
|
76
79
|
await cache.forget(key);
|
|
77
80
|
return snapshot;
|
|
78
81
|
}
|
|
82
|
+
async load(subRunId) {
|
|
83
|
+
const cache = await this.getCache();
|
|
84
|
+
return cache.get(this.keyPrefix + subRunId);
|
|
85
|
+
}
|
|
79
86
|
}
|
|
80
87
|
//# sourceMappingURL=sub-agent-run-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent-run-store.js","sourceRoot":"","sources":["../src/sub-agent-run-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sub-agent-run-store.js","sourceRoot":"","sources":["../src/sub-agent-run-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rudderjs/ai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"description": "AI engine — providers, agents, tools, streaming, middleware",
|
|
5
5
|
"rudderjs": {
|
|
6
6
|
"provider": "AiProvider",
|
|
@@ -87,6 +87,10 @@
|
|
|
87
87
|
"./computer-use": {
|
|
88
88
|
"import": "./dist/computer-use/index.js",
|
|
89
89
|
"types": "./dist/computer-use/index.d.ts"
|
|
90
|
+
},
|
|
91
|
+
"./react": {
|
|
92
|
+
"import": "./dist/react/index.js",
|
|
93
|
+
"types": "./dist/react/index.d.ts"
|
|
90
94
|
}
|
|
91
95
|
},
|
|
92
96
|
"dependencies": {
|
|
@@ -96,8 +100,9 @@
|
|
|
96
100
|
},
|
|
97
101
|
"peerDependencies": {
|
|
98
102
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
103
|
+
"react": ">=19.2.0",
|
|
99
104
|
"@rudderjs/orm": "^1.21.2",
|
|
100
|
-
"@rudderjs/core": "^1.13.
|
|
105
|
+
"@rudderjs/core": "^1.13.1"
|
|
101
106
|
},
|
|
102
107
|
"peerDependenciesMeta": {
|
|
103
108
|
"@rudderjs/core": {
|
|
@@ -108,6 +113,9 @@
|
|
|
108
113
|
},
|
|
109
114
|
"@modelcontextprotocol/sdk": {
|
|
110
115
|
"optional": true
|
|
116
|
+
},
|
|
117
|
+
"react": {
|
|
118
|
+
"optional": true
|
|
111
119
|
}
|
|
112
120
|
},
|
|
113
121
|
"optionalDependencies": {
|
|
@@ -120,9 +128,11 @@
|
|
|
120
128
|
"devDependencies": {
|
|
121
129
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
122
130
|
"@types/node": "^20.0.0",
|
|
131
|
+
"@types/react": "^19.2.0",
|
|
132
|
+
"react": "^19.2.0",
|
|
123
133
|
"typescript": "^5.4.0",
|
|
124
134
|
"@rudderjs/console": "^1.4.2",
|
|
125
|
-
"@rudderjs/core": "^1.13.
|
|
135
|
+
"@rudderjs/core": "^1.13.1",
|
|
126
136
|
"@rudderjs/orm": "^1.21.2"
|
|
127
137
|
},
|
|
128
138
|
"author": "Suleiman Shahbari",
|