@novu/framework 2.11.1 → 2.11.2-alpha.1
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/README.md +114 -9
- package/ai-sdk/package.json +4 -0
- package/cards/package.json +4 -0
- package/dist/{esm/index-D6L0Yufw.d.ts → cjs/agent.types-Dqm2VBTO.d.cts} +410 -193
- package/dist/cjs/ai-sdk/index.cjs +1 -0
- package/dist/cjs/ai-sdk/index.d.cts +40 -0
- package/dist/cjs/cards.cjs +57 -0
- package/dist/cjs/cards.d.cts +2 -0
- package/dist/cjs/{health-check.types-D4NEyjyC.d.cts → health-check.types-B9FbzRbm.d.cts} +6 -140
- package/dist/cjs/index-1DobCKAF.d.cts +160 -0
- package/dist/cjs/index.cjs +138 -138
- package/dist/cjs/index.d.cts +5 -3
- package/dist/cjs/internal/index.cjs +1 -1
- package/dist/cjs/internal/index.d.cts +98 -4
- package/dist/cjs/jsx-dev-runtime.cjs +1 -1
- package/dist/cjs/jsx-runtime.cjs +1 -1
- package/dist/cjs/langchain/index.cjs +1 -0
- package/dist/cjs/langchain/index.d.cts +106 -0
- package/dist/cjs/servers/express.cjs +138 -138
- package/dist/cjs/servers/express.d.cts +6 -4
- package/dist/cjs/servers/h3.cjs +137 -137
- package/dist/cjs/servers/h3.d.cts +6 -4
- package/dist/cjs/servers/lambda.cjs +137 -137
- package/dist/cjs/servers/lambda.d.cts +6 -5
- package/dist/cjs/servers/nest.cjs +138 -138
- package/dist/cjs/servers/nest.d.cts +21 -7
- package/dist/cjs/servers/next.cjs +137 -137
- package/dist/cjs/servers/next.d.cts +6 -4
- package/dist/cjs/servers/nuxt.cjs +137 -137
- package/dist/cjs/servers/nuxt.d.cts +6 -4
- package/dist/cjs/servers/remix.cjs +137 -137
- package/dist/cjs/servers/remix.d.cts +6 -4
- package/dist/cjs/servers/sveltekit.cjs +137 -137
- package/dist/cjs/servers/sveltekit.d.cts +6 -4
- package/dist/cjs/step-resolver.cjs +1 -1
- package/dist/cjs/step-resolver.d.cts +3 -2
- package/dist/cjs/{subscriber.types-PRaHFLJu.d.cts → subscriber.types-DubxcL8q.d.cts} +18 -78
- package/dist/cjs/util.types-DaFfsxgy.d.cts +78 -0
- package/dist/cjs/validators.cjs +1 -1
- package/dist/{cjs/index-BNiIiOE-.d.cts → esm/agent.types-E3sxq6xr.d.ts} +410 -193
- package/dist/esm/ai-sdk/index.d.ts +40 -0
- package/dist/esm/ai-sdk/index.js +1 -0
- package/dist/esm/cards.d.ts +2 -0
- package/dist/esm/cards.js +1 -0
- package/dist/esm/{chunk-DKQLYSZS.js → chunk-22DBAEUX.js} +1 -1
- package/dist/esm/{chunk-KLCBNFAF.js → chunk-3XT6S7TZ.js} +14 -14
- package/dist/esm/chunk-3ZWME5KT.js +0 -0
- package/dist/esm/chunk-C3P3ZH2I.js +36 -0
- package/dist/esm/{chunk-QTWEINJ4.js → chunk-CANJPWLT.js} +1 -1
- package/dist/esm/chunk-E2MET7IR.js +1 -0
- package/dist/esm/chunk-FHYMHX3T.js +1 -0
- package/dist/esm/chunk-Q6BV36LU.js +98 -0
- package/dist/esm/chunk-W6DIBD4Z.js +1 -0
- package/dist/esm/{health-check.types-C-81VaBO.d.ts → health-check.types-BNocZ4Wk.d.ts} +6 -140
- package/dist/esm/index-aVljLqR4.d.ts +160 -0
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/internal/index.d.ts +98 -4
- package/dist/esm/internal/index.js +1 -1
- package/dist/esm/jsx-dev-runtime.js +1 -1
- package/dist/esm/jsx-runtime-7EPQR56T.js +1 -0
- package/dist/esm/jsx-runtime.js +1 -1
- package/dist/esm/langchain/index.d.ts +106 -0
- package/dist/esm/langchain/index.js +1 -0
- package/dist/esm/servers/express.d.ts +6 -4
- package/dist/esm/servers/express.js +1 -1
- package/dist/esm/servers/h3.d.ts +6 -4
- package/dist/esm/servers/h3.js +1 -1
- package/dist/esm/servers/lambda.d.ts +6 -5
- package/dist/esm/servers/lambda.js +1 -1
- package/dist/esm/servers/nest.d.ts +21 -7
- package/dist/esm/servers/nest.js +1 -1
- package/dist/esm/servers/next.d.ts +6 -4
- package/dist/esm/servers/next.js +1 -1
- package/dist/esm/servers/nuxt.d.ts +6 -4
- package/dist/esm/servers/nuxt.js +1 -1
- package/dist/esm/servers/remix.d.ts +6 -4
- package/dist/esm/servers/remix.js +1 -1
- package/dist/esm/servers/sveltekit.d.ts +6 -4
- package/dist/esm/servers/sveltekit.js +1 -1
- package/dist/esm/step-resolver.d.ts +3 -2
- package/dist/esm/step-resolver.js +1 -1
- package/dist/esm/{subscriber.types-CC7F0JO_.d.ts → subscriber.types-CmybpXhA.d.ts} +18 -78
- package/dist/esm/util.types-DaFfsxgy.d.ts +78 -0
- package/dist/esm/validators.js +1 -1
- package/package.json +56 -8
- package/dist/esm/chunk-52LSX2V5.js +0 -1
- package/dist/esm/chunk-N4PZBM53.js +0 -1
- package/dist/esm/chunk-ND6IQFTA.js +0 -133
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var A=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var j=(e,t)=>{for(var o in t)A(e,o,{get:t[o],enumerable:!0})},L=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of h(t))!D.call(e,r)&&r!==o&&A(e,r,{get:()=>t[r],enumerable:!(n=O(t,r))||n.enumerable});return e};var V=e=>L(A({},"__esModule",{value:!0}),e);var ge={};j(ge,{agent:()=>I,toModelMessages:()=>N});module.exports=V(ge);var U=Symbol.for("novu.agent.runtimeContext");function Y(e){return e[U]===!0}function d(e){if(!Y(e))throw new Error("Agent context must be created by Novu dispatch");return e}function v(e){return"type"in e&&e.type==="card"}function R(e){return typeof e=="object"&&e!==null&&e.type==="tool-approval-card"}var $="tool-approval";function g(e,t){return`${$}:${e}:${t}`}async function C(e,t,o,n){var i,u;let r=n!=null?n:t.id,a={approve:g("approve",r),deny:g("deny",r)},s=b=>({type:"tool-approval-card",...b}),l=(u=(i=o==null?void 0:o.renderApproval)==null?void 0:i.call(o,{toolCall:t,actionIds:a,approvalCard:s}))!=null?u:s(),p={approvalId:r,toolCallId:t.id,name:t.name,input:t.input};if(e.emitToolApprovalRequest(p),R(l)){await e.replyApprovalCard(l);return}await e.reply(l)}function G(e){return e.role==="tool"&&Array.isArray(e.content)}function z(e){return typeof e=="object"&&e!==null&&e.type==="tool-result"}function B(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="execution-denied"}function X(e){if(e&&typeof e=="object"&&"type"in e&&"value"in e){let t=e;if(t.type==="json"||t.type==="text")return t.value}return e}async function Q(e){var o;return((o=await Promise.resolve(e.responseMessages))!=null?o:[]).filter(G).flatMap(n=>n.content).filter(z).filter(n=>!B(n.output)).map(n=>({toolCallId:n.toolCallId,toolName:n.toolName,output:X(n.output)}))}function F(e){var o;let t=new Set;for(let n of e.history)n.type==="tool_approval_request"&&((o=n.toolData)!=null&&o.toolCallId)&&t.add(n.toolData.toolCallId);return t}async function T(e,t){var r;let o=await Q(e);if(o.length===0)return;let n=F(t);for(let a of o)n.has(a.toolCallId)&&t.emitToolResult({toolCallId:a.toolCallId,toolName:a.toolName,output:a.output,preview:`Tool "${(r=a.toolName)!=null?r:a.toolCallId}" result`})}function m(e){return typeof e=="object"&&e!==null&&typeof e.consumeStream=="function"}function J(e){return typeof e=="object"&&e!==null&&"text"in e&&"steps"in e&&"usage"in e&&!m(e)}function c(e){return typeof e!="object"||e===null||v(e)?!1:m(e)||J(e)}function K(e){var o;if(typeof e!="object"||e===null||e.type!=="tool-approval-request")return!1;let t=e;return!t.isAutomatic&&typeof((o=t.toolCall)==null?void 0:o.toolCallId)=="string"}async function W(e){let t=await Promise.resolve(e.content);return Array.isArray(t)?t.filter(K):[]}async function f(e,t,o){m(e)&&await e.consumeStream({onError:r=>{throw r}}),await T(e,t);let n=await W(e);if(n.length>0){let r=n[0],a={id:r.toolCall.toolCallId,name:r.toolCall.toolName,input:r.toolCall.input};await C(t,a,o,r.approvalId);return}await Z(e,t)}async function Z(e,t){let o=(await Promise.resolve(e.text)).trim();if(!o){await t.typing.stop();return}await t.reply(o)}var ee={text:"",platformMessageId:"",author:{userId:"",fullName:"",userName:"",isBot:!1},timestamp:""};function te(e){return typeof e=="object"&&e!==null&&"messageId"in e&&"platformThreadId"in e}function oe(e,t){let o=typeof t=="function"?{onMessage:t}:t;if(typeof o.onMessage!="function")throw new Error(`agent('${e}') requires an onMessage handler`);return o}function I(e,t){if(!e)throw new Error("agent() requires a non-empty agentId");let o=oe(e,t),n=o.toolApproval,r=typeof o.onToolApproval=="function",a=async l=>{let p=d(l),i=await o.onMessage(ee,p.asMessageContext());c(i)&&await f(i,p,n)},s={onMessage:async(l,p)=>{let i=await o.onMessage(l,p);if(c(i)){await f(i,d(p),n);return}return i},onToolApproval:async(l,p)=>{let i=d(p);if(o.onToolApproval){let u=await o.onToolApproval(l,p);if(c(u)){await f(u,i,n);return}u!=null&&!te(u)&&await i.reply(u)}await a(p)},...n&&{toolApproval:n},...o.onAction&&{onAction:o.onAction},...o.onReaction&&{onReaction:o.onReaction},...o.onResolve&&{onResolve:o.onResolve},...o.onError&&{onError:o.onError}};return{id:e,handlers:s,userOnToolApproval:r}}var ne="tool_approval_request",re="tool_approval_decision",le="tool_result";function x(e){var o;let t=e.toolData;if(!(!t||typeof t.approvalId!="string"||typeof t.toolCallId!="string"))return{approvalId:t.approvalId,toolCallId:t.toolCallId,name:(o=t.toolName)!=null?o:"tool",input:t.input}}function S(e){let t=e.toolData;if(!(!t||typeof t.approvalId!="string"||typeof t.approved!="boolean"))return{approvalId:t.approvalId,approved:t.approved}}function w(e){let t=e.toolData;if(!(!t||typeof t.toolCallId!="string"))return{toolCallId:t.toolCallId,toolName:t.toolName,output:t.output}}function E(e){let t=new Set,o=new Map,n=new Map,r=new Set;for(let s of e)if(s.type===ne){let l=x(s);l&&(n.set(l.approvalId,l.toolCallId),r.add(l.toolCallId))}else if(s.type===re){let l=S(s);l&&!l.approved&&t.add(l.approvalId)}else if(s.type===le){let l=w(s);l&&o.set(l.toolCallId,l)}let a=new Set;for(let s of o.keys())r.has(s)&&a.add(s);return{deniedApprovalIds:t,toolResults:o,approvalIdToToolCallId:n,pairedAtRequest:a}}function ae(e,t){return t.deniedApprovalIds.has(e.approvalId)?"denied":t.toolResults.has(e.toolCallId)?"resolved":"in-flight"}function y(e,t){var n;let o=[{type:"tool-call",toolCallId:e.toolCallId,toolName:e.name,input:(n=e.input)!=null?n:{}}];return t&&o.push({type:"tool-approval-request",approvalId:e.approvalId,toolCallId:e.toolCallId}),{role:"assistant",content:o}}function se(e){return{role:"tool",content:[{type:"tool-result",toolCallId:e,toolName:"tool",output:{type:"execution-denied"}}]}}function P(e){var t;return{role:"tool",content:[{type:"tool-result",toolCallId:e.toolCallId,toolName:(t=e.toolName)!=null?t:"tool",output:{type:"json",value:e.output}}]}}function M(e,t){return[y(e,!1),t]}function k(e,t){let o=x(e);if(!o)return[];let n=ae(o,t);switch(n){case"denied":return M(o,se(o.toolCallId));case"resolved":{let r=t.toolResults.get(o.toolCallId);return r?M(o,P(r)):[y(o,!1)]}case"in-flight":return[y(o,!0)];default:return n}}function q(e,t){let o=S(e);if(!o||!o.approved)return;let n=t.approvalIdToToolCallId.get(o.approvalId);if(!(n&&t.toolResults.has(n)))return{role:"tool",content:[{type:"tool-approval-response",approvalId:o.approvalId,approved:!0}]}}function H(e,t){let o=w(e);if(o&&!t.pairedAtRequest.has(o.toolCallId))return P(o)}var ie="message",pe="tool_approval_request",ue="tool_approval_decision",de="tool_result";function _(e){return e==="agent"||e==="assistant"}function ce(e){let t=new Set;for(let o of e)!_(o.role)&&o.role!=="system"&&o.senderName&&t.add(o.senderName);return t.size}function fe(e,t){if(!e.content.trim())return;let o=_(e.role),n=!o&&t&&e.senderName?`${e.senderName}: ${e.content}`:e.content;return{role:o?"assistant":"user",content:n}}function Ae(e,t,o){switch(e.type){case ie:{let n=fe(e,t);return n?[n]:[]}case pe:return k(e,o);case ue:{let n=q(e,o);return n?[n]:[]}case de:{let n=H(e,o);return n?[n]:[]}default:return[]}}function N(e){let t=ce(e)>1,o=E(e);return e.flatMap(n=>Ae(n,t,o))}0&&(module.exports={agent,toModelMessages});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { i as AgentHandlers, k as AgentMessage, m as AgentMessageContext, M as MessageContent, u as ToolApprovalDecision, b as AgentActionContext, R as ReplyHandle, A as Agent, j as AgentHistoryEntry } from '../agent.types-Dqm2VBTO.cjs';
|
|
2
|
+
import { streamText, generateText, ModelMessage } from 'ai';
|
|
3
|
+
import { A as Awaitable } from '../util.types-DaFfsxgy.cjs';
|
|
4
|
+
import 'chat';
|
|
5
|
+
|
|
6
|
+
type AiSdkStreamResult = Awaited<ReturnType<typeof streamText>>;
|
|
7
|
+
type AiSdkGenerateResult = Awaited<ReturnType<typeof generateText>>;
|
|
8
|
+
type AiSdkResult = AiSdkStreamResult | AiSdkGenerateResult;
|
|
9
|
+
/**
|
|
10
|
+
* Handlers for `@novu/framework/ai-sdk` agents.
|
|
11
|
+
*
|
|
12
|
+
* Extends {@link AgentHandlers}: same events and config (`toolApproval`, etc.),
|
|
13
|
+
* but `onMessage` and `onToolApproval` may return an AI SDK result for automatic delivery.
|
|
14
|
+
*/
|
|
15
|
+
type AiSdkAgentHandlers = Omit<AgentHandlers, 'onMessage' | 'onToolApproval'> & {
|
|
16
|
+
onMessage: (message: AgentMessage, ctx: AgentMessageContext) => Awaitable<MessageContent | AiSdkResult | void>;
|
|
17
|
+
/**
|
|
18
|
+
* Optional. Auto-resumes `onMessage` after approve/deny unless you return an
|
|
19
|
+
* `AiSdkResult` to drive the resume yourself.
|
|
20
|
+
*/
|
|
21
|
+
onToolApproval?: (decision: ToolApprovalDecision, ctx: AgentActionContext) => Awaitable<MessageContent | AiSdkResult | ReplyHandle | void>;
|
|
22
|
+
onError?: AgentHandlers['onError'];
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
type AiSdkMessageHandler = AiSdkAgentHandlers['onMessage'];
|
|
26
|
+
declare function agent(id: string, handlers: AiSdkMessageHandler | AiSdkAgentHandlers): Agent;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Convert `ctx.history` into AI SDK `ModelMessage[]` for `streamText` / `generateText`.
|
|
30
|
+
*
|
|
31
|
+
* History already includes the current incoming message — do not append the handler's
|
|
32
|
+
* `message` argument on top of it.
|
|
33
|
+
*
|
|
34
|
+
* Pass the system prompt via the top-level `instructions` option of `streamText` /
|
|
35
|
+
* `generateText`. AI SDK 7 rejects `system` messages inside the `messages` array by default,
|
|
36
|
+
* so this helper never injects one.
|
|
37
|
+
*/
|
|
38
|
+
declare function toModelMessages(history: AgentHistoryEntry[]): ModelMessage[];
|
|
39
|
+
|
|
40
|
+
export { type AiSdkAgentHandlers, agent, toModelMessages };
|