@listmonk-ops/operations 0.1.1 → 0.1.3
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 +7 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lists.d.ts +39 -0
- package/dist/lists.d.ts.map +1 -1
- package/dist/operation.d.ts +3 -0
- package/dist/operation.d.ts.map +1 -1
- package/dist/transactional.d.ts +64 -0
- package/dist/transactional.d.ts.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
Shared, runtime-neutral operation contracts and executors used by the
|
|
4
4
|
listmonk-ops CLI and MCP adapters.
|
|
5
5
|
|
|
6
|
-
The
|
|
7
|
-
runtime input/output schemas, generated JSON Schemas, safety
|
|
8
|
-
and named executor.
|
|
9
|
-
|
|
6
|
+
The registry covers subscriber-list CRUD and transactional email delivery. Each
|
|
7
|
+
operation owns its runtime input/output schemas, generated JSON Schemas, safety
|
|
8
|
+
hints, MCP name, and named executor. List and transactional operations export
|
|
9
|
+
named `invoke*Operation` entrypoints plus domain-specific MCP dispatchers. These
|
|
10
|
+
functions preserve the registry validation and error contract while keeping
|
|
11
|
+
CLI/MCP-to-domain call paths visible to static tooling. Surface packages remain
|
|
12
|
+
responsible for authentication and presentation.
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as e}from"zod";import{z as v}from"zod";var m=class extends Error{constructor(i){super(i),this.name="OperationInputError"}},f=class extends Error{constructor(i){super(i),this.name="OperationOutputError"}},d=class extends Error{operationId;constructor(i,n){super(_(n),{cause:n}),this.name="OperationExecutionError",this.operationId=i}};function _(t){return t instanceof Error?t.message:t&&typeof t=="object"&&"message"in t?String(t.message):String(t)}function g(t,i){let n=v.toJSONSchema(t,{io:i});if(n.type!=="object")throw new TypeError("Operation schemas must have an object root");return n}function k(t,i){if(!t||typeof t!="object"||!(i in t))return!1;let n=Reflect.get(t,i);return n==null?!1:typeof n=="string"?n.trim().length>0:Array.isArray(n)?n.length>0:!0}function j(t,i){let n=t.issues[0];if(!n)return"Invalid operation input";let s=n.path[0],r=n.path.map(String).join(".")||"input";return(typeof s=="string"||typeof s=="number")&&!k(i,s)?`Missing required parameter: ${String(s)}`:`Invalid parameter ${r}: ${n.message}`}function o(t){return{id:t.id,title:t.title,description:t.description,inputSchema:t.inputSchema,outputSchema:t.outputSchema,inputJsonSchema:g(t.inputSchema,"input"),outputJsonSchema:g(t.outputSchema,"output"),safety:t.safety,mcp:t.mcp,async invoke(i,n){let s=t.inputSchema.safeParse(n??{});if(!s.success)throw new m(j(s.error,n??{}));let r;try{r=await t.execute(i,s.data)}catch(c){throw c instanceof d?c:new d(t.id,c)}let a=t.outputSchema.safeParse(r);if(!a.success)throw new f(`${t.id} produced invalid output: ${a.error.message}`);return a.data}}}var l=e.looseObject({id:e.number().optional(),created_at:e.string().optional(),updated_at:e.string().optional(),uuid:e.string().optional(),name:e.string().optional(),type:e.string().optional(),optin:e.string().optional(),tags:e.array(e.string()).optional(),subscriber_count:e.number().optional(),description:e.string().optional()}),z=e.object({results:e.array(l),total:e.number(),per_page:e.number(),page:e.number()}),H=e.object({page:e.coerce.number().int().positive().default(1).describe("Page number for pagination"),per_page:e.coerce.number().int().positive().default(20).describe("Number of items per page")}),h=e.number().int().positive(),y=e.codec(e.union([h,e.string().regex(/^[1-9][0-9]*$/)]),h,{decode:t=>Number(t),encode:t=>t}).describe("Subscriber list ID"),S=e.object({id:y}),C=e.object({name:e.string().trim().min(1).describe("List name"),type:e.enum(["public","private"]).default("private").describe("List visibility"),optin:e.enum(["single","double"]).default("single").describe("Opt-in type"),description:e.string().default("").describe("List description"),tags:e.array(e.string()).default([]).describe("List tags")}),P=e.object({id:y,name:e.string().trim().min(1).optional().describe("List name"),type:e.enum(["public","private"]).optional().describe("List visibility"),optin:e.enum(["single","double"]).optional().describe("Opt-in type"),description:e.string().optional().describe("List description"),tags:e.array(e.string()).optional().describe("List tags")}),T=e.object({id:e.number().int().positive(),deleted:e.boolean()});function x(t){if(t instanceof Error)return t.message;if(t&&typeof t=="object"){if("message"in t&&typeof t.message=="string")return t.message;if("error"in t&&typeof t.error=="string")return t.error;try{return JSON.stringify(t)}catch{}}return String(t)}function O(t){return t.error!==void 0}function p(t,i){if(O(t))throw new Error(`${i}: ${x(t.error)}`);if(t.data===void 0)throw new Error(`${i}: received empty data`);return t.data}async function E({client:t},i){let n=await t.list.list({query:{page:i.page,per_page:i.per_page}}),s=p(n,"Failed to fetch lists");return{results:s.results??[],total:s.total??0,per_page:s.per_page??i.per_page,page:s.page??i.page}}async function M({client:t},i){let n=await t.list.getById({path:{list_id:i.id}});return p(n,"Failed to fetch list")}async function D(t,i){let s=await t.list.list({query:{page:1,per_page:100,query:i}}),r=p(s,"Failed to resolve created list"),a=r.results?.find(u=>u.name===i);if(a)return a;let c=Math.max(1,Math.ceil((r.total??0)/100));for(let u=2;u<=c;u+=1){let w=await t.list.list({query:{page:u,per_page:100,query:i}}),b=p(w,"Failed to resolve created list").results?.find(I=>I.name===i);if(b)return b}}async function J({client:t},i){let n=await t.list.create({body:{name:i.name,type:i.type,optin:i.optin,description:i.description,tags:i.tags}});if(O(n))throw new Error(`Failed to create list: ${x(n.error)}`);if(n.data!==void 0)return n.data;let s=await D(t,i.name);if(!s)throw new Error("List was created but the created record could not be resolved");return s}async function $({client:t},i){let{id:n,...s}=i,r=await t.list.update({path:{list_id:n},body:s});return p(r,"Failed to update list")}async function R({client:t},i){let n=await t.list.delete({path:{list_id:i.id}});return{id:i.id,deleted:p(n,"Failed to delete list")}}var L={readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},q=o({id:"lists.list",title:"List subscriber lists",description:"Get subscriber lists from Listmonk",inputSchema:H,outputSchema:z,safety:L,mcp:{name:"listmonk_get_lists"},execute:E}),F=o({id:"lists.get",title:"Get subscriber list",description:"Get a specific subscriber list by ID",inputSchema:S,outputSchema:l,safety:L,mcp:{name:"listmonk_get_list"},execute:M}),N=o({id:"lists.create",title:"Create subscriber list",description:"Create a new subscriber list",inputSchema:C,outputSchema:l,safety:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},mcp:{name:"listmonk_create_list"},execute:J}),Z=o({id:"lists.update",title:"Update subscriber list",description:"Update an existing subscriber list",inputSchema:P,outputSchema:l,safety:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},mcp:{name:"listmonk_update_list",legacySuccessText:"List updated successfully"},execute:$}),W=o({id:"lists.delete",title:"Delete subscriber list",description:"Delete a subscriber list",inputSchema:S,outputSchema:T,safety:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},mcp:{name:"listmonk_delete_list",legacySuccessText:"List deleted successfully"},execute:R}),B=[q,F,N,Z,W],G=new Map(B.map(t=>[t.mcp.name,t]));function X(t){return G.get(t)}export{d as OperationExecutionError,m as OperationInputError,f as OperationOutputError,N as createListOperation,J as createSubscriberList,o as defineOperation,W as deleteListOperation,R as deleteSubscriberList,F as getListOperation,X as getListOperationByMcpName,q as getListsOperation,M as getSubscriberList,B as listOperations,E as listSubscriberLists,Z as updateListOperation,$ as updateSubscriberList};
|
|
1
|
+
import{z as i}from"zod";import{z as Z}from"zod";var L=class extends Error{constructor(e){super(e),this.name="OperationInputError"}},w=class extends Error{constructor(e){super(e),this.name="OperationOutputError"}},O=class extends Error{operationId;constructor(e,n){super(W(n),{cause:n}),this.name="OperationExecutionError",this.operationId=e}};function W(t){return t instanceof Error?t.message:t&&typeof t=="object"&&"message"in t?String(t.message):String(t)}function k(t,e){let n=Z.toJSONSchema(t,{io:e});if(n.type!=="object")throw new TypeError("Operation schemas must have an object root");return n}function B(t,e){if(!t||typeof t!="object"||!(e in t))return!1;let n=Reflect.get(t,e);return n==null?!1:typeof n=="string"?n.trim().length>0:Array.isArray(n)?n.length>0:!0}function G(t,e){let n=t.issues[0];if(!n)return"Invalid operation input";let r=n.path[0],a=n.path.map(String).join(".")||"input";return(typeof r=="string"||typeof r=="number")&&!B(e,r)?`Missing required parameter: ${String(r)}`:`Invalid parameter ${a}: ${n.message}`}function s(t,e){let n=t.safeParse(e??{});if(!n.success)throw new L(G(n.error,e??{}));return n.data}function p(t,e){return e instanceof O?e:new O(t,e)}function u(t,e,n){let r=e.safeParse(n);if(!r.success)throw new w(`${t} produced invalid output: ${r.error.message}`);return r.data}function d(t){return{id:t.id,title:t.title,description:t.description,inputSchema:t.inputSchema,outputSchema:t.outputSchema,inputJsonSchema:k(t.inputSchema,"input"),outputJsonSchema:k(t.outputSchema,"output"),safety:t.safety,mcp:t.mcp,async invoke(e,n){let r=s(t.inputSchema,n),a;try{a=await t.execute(e,r)}catch(S){throw p(t.id,S)}return u(t.id,t.outputSchema,a)}}}var x=i.looseObject({id:i.number().optional(),created_at:i.string().optional(),updated_at:i.string().optional(),uuid:i.string().optional(),name:i.string().optional(),type:i.string().optional(),optin:i.string().optional(),tags:i.array(i.string()).optional(),subscriber_count:i.number().optional(),description:i.string().optional()}),A=i.object({results:i.array(x),total:i.number(),per_page:i.number(),page:i.number()}),U=i.object({page:i.coerce.number().int().positive().default(1).describe("Page number for pagination"),per_page:i.coerce.number().int().positive().default(20).describe("Number of items per page")}),T=i.number().int().positive(),_=i.codec(i.union([T,i.string().regex(/^[1-9][0-9]*$/)]),T,{decode:t=>Number(t),encode:t=>t}).describe("Subscriber list ID"),v=i.object({id:_}),K=i.object({name:i.string().trim().min(1).describe("List name"),type:i.enum(["public","private"]).default("private").describe("List visibility"),optin:i.enum(["single","double"]).default("single").describe("Opt-in type"),description:i.string().default("").describe("List description"),tags:i.array(i.string()).default([]).describe("List tags")}),V=i.object({id:_,name:i.string().trim().min(1).optional().describe("List name"),type:i.enum(["public","private"]).optional().describe("List visibility"),optin:i.enum(["single","double"]).optional().describe("Opt-in type"),description:i.string().optional().describe("List description"),tags:i.array(i.string()).optional().describe("List tags")}),Q=i.object({id:i.number().int().positive(),deleted:i.boolean()});function z(t){if(t instanceof Error)return t.message;if(t&&typeof t=="object"){if("message"in t&&typeof t.message=="string")return t.message;if("error"in t&&typeof t.error=="string")return t.error;try{return JSON.stringify(t)}catch{}}return String(t)}function C(t){return t.error!==void 0}function g(t,e){if(C(t))throw new Error(`${e}: ${z(t.error)}`);if(t.data===void 0)throw new Error(`${e}: received empty data`);return t.data}async function P({client:t},e){let n=await t.list.list({query:{page:e.page,per_page:e.per_page}}),r=g(n,"Failed to fetch lists");return{results:r.results??[],total:r.total??0,per_page:r.per_page??e.per_page,page:r.page??e.page}}async function E({client:t},e){let n=await t.list.getById({path:{list_id:e.id}});return g(n,"Failed to fetch list")}async function X(t,e){let r=await t.list.list({query:{page:1,per_page:100,query:e}}),a=g(r,"Failed to resolve created list"),S=a.results?.find(y=>y.name===e);if(S)return S;let N=Math.max(1,Math.ceil((a.total??0)/100));for(let y=2;y<=N;y+=1){let q=await t.list.list({query:{page:y,per_page:100,query:e}}),I=g(q,"Failed to resolve created list").results?.find(F=>F.name===e);if(I)return I}}async function j({client:t},e){let n=await t.list.create({body:{name:e.name,type:e.type,optin:e.optin,description:e.description,tags:e.tags}});if(C(n))throw new Error(`Failed to create list: ${z(n.error)}`);if(n.data!==void 0)return n.data;let r=await X(t,e.name);if(!r)throw new Error("List was created but the created record could not be resolved");return r}async function H({client:t},e){let{id:n,...r}=e,a=await t.list.update({path:{list_id:n},body:r});return g(a,"Failed to update list")}async function M({client:t},e){let n=await t.list.delete({path:{list_id:e.id}});return{id:e.id,deleted:g(n,"Failed to delete list")}}var D={readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},m=d({id:"lists.list",title:"List subscriber lists",description:"Get subscriber lists from Listmonk",inputSchema:U,outputSchema:A,safety:D,mcp:{name:"listmonk_get_lists"},execute:P}),l=d({id:"lists.get",title:"Get subscriber list",description:"Get a specific subscriber list by ID",inputSchema:v,outputSchema:x,safety:D,mcp:{name:"listmonk_get_list"},execute:E}),f=d({id:"lists.create",title:"Create subscriber list",description:"Create a new subscriber list",inputSchema:K,outputSchema:x,safety:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},mcp:{name:"listmonk_create_list"},execute:j}),h=d({id:"lists.update",title:"Update subscriber list",description:"Update an existing subscriber list",inputSchema:V,outputSchema:x,safety:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},mcp:{name:"listmonk_update_list",legacySuccessText:"List updated successfully"},execute:H}),b=d({id:"lists.delete",title:"Delete subscriber list",description:"Delete a subscriber list",inputSchema:v,outputSchema:Q,safety:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},mcp:{name:"listmonk_delete_list",legacySuccessText:"List deleted successfully"},execute:M});async function Y(t,e){let n=s(m.inputSchema,e),r;try{r=await P(t,n)}catch(a){throw p(m.id,a)}return u(m.id,m.outputSchema,r)}async function tt(t,e){let n=s(l.inputSchema,e),r;try{r=await E(t,n)}catch(a){throw p(l.id,a)}return u(l.id,l.outputSchema,r)}async function et(t,e){let n=s(f.inputSchema,e),r;try{r=await j(t,n)}catch(a){throw p(f.id,a)}return u(f.id,f.outputSchema,r)}async function nt(t,e){let n=s(h.inputSchema,e),r;try{r=await H(t,n)}catch(a){throw p(h.id,a)}return u(h.id,h.outputSchema,r)}async function it(t,e){let n=s(b.inputSchema,e),r;try{r=await M(t,n)}catch(a){throw p(b.id,a)}return u(b.id,b.outputSchema,r)}var rt=[m,l,f,h,b],at=new Map(rt.map(t=>[t.mcp.name,t]));function bt(t){return at.get(t)}async function gt(t,e,n){switch(e){case m.mcp.name:return{operation:m,output:await Y(t,n)};case l.mcp.name:return{operation:l,output:await tt(t,n)};case f.mcp.name:return{operation:f,output:await et(t,n)};case h.mcp.name:return{operation:h,output:await nt(t,n)};case b.mcp.name:return{operation:b,output:await it(t,n)};default:return}}import{z as o}from"zod";var $=o.number().int().positive(),R=o.codec(o.union([$,o.string().regex(/^[1-9][0-9]*$/)]),$,{decode:t=>Number(t),encode:t=>t}),ot=o.object({template_id:R.describe("Transactional template ID"),subscriber_email:o.string().trim().email().optional().describe("Recipient subscriber email"),subscriber_id:R.optional().describe("Recipient subscriber ID"),from_email:o.string().trim().min(1).optional().describe("From email header value"),data:o.record(o.string(),o.unknown()).optional().describe("Template variables"),headers:o.array(o.record(o.string(),o.string())).optional().describe("Additional email headers"),content_type:o.enum(["html","markdown","plain"]).optional().describe("Message content type")}).refine(t=>t.subscriber_email!==void 0||t.subscriber_id!==void 0,{message:"Either subscriber_email or subscriber_id is required"}),st=o.object({sent:o.boolean().describe("Whether Listmonk accepted the message")});function pt(t){if(t instanceof Error)return t.message;if(t&&typeof t=="object"){if("message"in t&&typeof t.message=="string")return t.message;if("error"in t&&typeof t.error=="string")return t.error;try{return JSON.stringify(t)}catch{}}return String(t)}function ut(t,e){if(t.error!==void 0)throw new Error(`${e}: ${pt(t.error)}`);if(t.data===void 0)throw new Error(`${e}: received empty data`);return t.data}async function J({client:t},e){let n=await t.transactional.send({template_id:e.template_id,subscriber_email:e.subscriber_email,subscriber_id:e.subscriber_id,from_email:e.from_email,data:e.data,headers:e.headers,content_type:e.content_type});return{sent:ut(n,"Failed to send transactional message")}}var c=d({id:"transactional.send",title:"Send transactional message",description:"Send a transactional email through Listmonk",inputSchema:ot,outputSchema:st,safety:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},mcp:{name:"listmonk_send_transactional"},execute:J});async function ct(t,e){let n=s(c.inputSchema,e),r;try{r=await J(t,n)}catch(a){throw p(c.id,a)}return u(c.id,c.outputSchema,r)}var xt=[c];function Lt(t){return t===c.mcp.name?c:void 0}async function wt(t,e,n){if(e===c.mcp.name)return{operation:c,output:await ct(t,n)}}export{O as OperationExecutionError,L as OperationInputError,w as OperationOutputError,f as createListOperation,j as createSubscriberList,d as defineOperation,b as deleteListOperation,M as deleteSubscriberList,l as getListOperation,bt as getListOperationByMcpName,m as getListsOperation,E as getSubscriberList,Lt as getTransactionalOperationByMcpName,et as invokeCreateListOperation,it as invokeDeleteListOperation,tt as invokeGetListOperation,Y as invokeGetListsOperation,gt as invokeListOperationByMcpName,ct as invokeSendTransactionalOperation,wt as invokeTransactionalOperationByMcpName,nt as invokeUpdateListOperation,rt as listOperations,P as listSubscriberLists,p as normalizeOperationExecutionError,s as parseOperationInput,u as parseOperationOutput,J as sendTransactionalMessage,c as sendTransactionalOperation,xt as transactionalOperations,h as updateListOperation,H as updateSubscriberList};
|
package/dist/lists.d.ts
CHANGED
|
@@ -9,6 +9,35 @@ export interface ListPage {
|
|
|
9
9
|
per_page: number;
|
|
10
10
|
page: number;
|
|
11
11
|
}
|
|
12
|
+
declare const subscriberListSchema: z.ZodObject<{
|
|
13
|
+
id: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
created_at: z.ZodOptional<z.ZodString>;
|
|
15
|
+
updated_at: z.ZodOptional<z.ZodString>;
|
|
16
|
+
uuid: z.ZodOptional<z.ZodString>;
|
|
17
|
+
name: z.ZodOptional<z.ZodString>;
|
|
18
|
+
type: z.ZodOptional<z.ZodString>;
|
|
19
|
+
optin: z.ZodOptional<z.ZodString>;
|
|
20
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
21
|
+
subscriber_count: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
description: z.ZodOptional<z.ZodString>;
|
|
23
|
+
}, z.core.$loose>;
|
|
24
|
+
declare const listPageSchema: z.ZodObject<{
|
|
25
|
+
results: z.ZodArray<z.ZodObject<{
|
|
26
|
+
id: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
created_at: z.ZodOptional<z.ZodString>;
|
|
28
|
+
updated_at: z.ZodOptional<z.ZodString>;
|
|
29
|
+
uuid: z.ZodOptional<z.ZodString>;
|
|
30
|
+
name: z.ZodOptional<z.ZodString>;
|
|
31
|
+
type: z.ZodOptional<z.ZodString>;
|
|
32
|
+
optin: z.ZodOptional<z.ZodString>;
|
|
33
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
34
|
+
subscriber_count: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
description: z.ZodOptional<z.ZodString>;
|
|
36
|
+
}, z.core.$loose>>;
|
|
37
|
+
total: z.ZodNumber;
|
|
38
|
+
per_page: z.ZodNumber;
|
|
39
|
+
page: z.ZodNumber;
|
|
40
|
+
}, z.core.$strip>;
|
|
12
41
|
declare const listInputSchema: z.ZodObject<{
|
|
13
42
|
page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
14
43
|
per_page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
@@ -141,6 +170,11 @@ export declare const deleteListOperation: import("./operation").OperationDefinit
|
|
|
141
170
|
id: z.ZodNumber;
|
|
142
171
|
deleted: z.ZodBoolean;
|
|
143
172
|
}, z.core.$strip>>;
|
|
173
|
+
export declare function invokeGetListsOperation(context: ListOperationContext, input: unknown): Promise<z.output<typeof listPageSchema>>;
|
|
174
|
+
export declare function invokeGetListOperation(context: ListOperationContext, input: unknown): Promise<z.output<typeof subscriberListSchema>>;
|
|
175
|
+
export declare function invokeCreateListOperation(context: ListOperationContext, input: unknown): Promise<z.output<typeof subscriberListSchema>>;
|
|
176
|
+
export declare function invokeUpdateListOperation(context: ListOperationContext, input: unknown): Promise<z.output<typeof subscriberListSchema>>;
|
|
177
|
+
export declare function invokeDeleteListOperation(context: ListOperationContext, input: unknown): Promise<z.output<typeof deleteListOutputSchema>>;
|
|
144
178
|
export declare const listOperations: readonly [import("./operation").OperationDefinition<ListOperationContext, z.ZodObject<{
|
|
145
179
|
page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
146
180
|
per_page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
@@ -228,5 +262,10 @@ export declare const listOperations: readonly [import("./operation").OperationDe
|
|
|
228
262
|
}, z.core.$strip>>];
|
|
229
263
|
export type ListOperation = (typeof listOperations)[number];
|
|
230
264
|
export declare function getListOperationByMcpName(name: string): ListOperation | undefined;
|
|
265
|
+
export interface ListOperationInvocation {
|
|
266
|
+
operation: ListOperation;
|
|
267
|
+
output: Record<string, unknown>;
|
|
268
|
+
}
|
|
269
|
+
export declare function invokeListOperationByMcpName(context: ListOperationContext, name: string, input: unknown): Promise<ListOperationInvocation | undefined>;
|
|
231
270
|
export {};
|
|
232
271
|
//# sourceMappingURL=lists.d.ts.map
|
package/dist/lists.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../src/lists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../src/lists.ts"],"names":[],"mappings":"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"}
|
package/dist/operation.d.ts
CHANGED
|
@@ -38,6 +38,9 @@ export declare class OperationExecutionError extends Error {
|
|
|
38
38
|
readonly operationId: string;
|
|
39
39
|
constructor(operationId: string, cause: unknown);
|
|
40
40
|
}
|
|
41
|
+
export declare function parseOperationInput<const InputSchema extends z.ZodType>(schema: InputSchema, input: unknown): z.output<InputSchema>;
|
|
42
|
+
export declare function normalizeOperationExecutionError(operationId: string, error: unknown): OperationExecutionError;
|
|
43
|
+
export declare function parseOperationOutput<const OutputSchema extends z.ZodType>(operationId: string, schema: OutputSchema, output: unknown): z.output<OutputSchema>;
|
|
41
44
|
export declare function defineOperation<Context, const InputSchema extends z.ZodType, const OutputSchema extends z.ZodType>(config: {
|
|
42
45
|
id: string;
|
|
43
46
|
title: string;
|
package/dist/operation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB,CACnC,OAAO,EACP,WAAW,SAAS,CAAC,CAAC,OAAO,EAC7B,YAAY,SAAS,CAAC,CAAC,OAAO;IAE9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,gBAAgB,CAAC;IAClC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,GAAG,EAAE,oBAAoB,CAAC;IAC1B,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;CAC1E;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,YAAmB,OAAO,EAAE,MAAM,EAGjC;CACD;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,YAAmB,OAAO,EAAE,MAAM,EAGjC;CACD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,SAAgB,WAAW,EAAE,MAAM,CAAC;IAEpC,YAAmB,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAIrD;CACD;AA2DD,wBAAgB,eAAe,CAC9B,OAAO,EACP,KAAK,CAAC,WAAW,SAAS,CAAC,CAAC,OAAO,EACnC,KAAK,CAAC,YAAY,SAAS,CAAC,CAAC,OAAO,EACnC,MAAM,EAAE;IACT,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,GAAG,EAAE,oBAAoB,CAAC;IAC1B,OAAO,CACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;CACnC,GAAG,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { ListmonkClient } from "@listmonk-ops/openapi";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export interface TransactionalOperationContext {
|
|
4
|
+
client: Pick<ListmonkClient, "transactional">;
|
|
5
|
+
}
|
|
6
|
+
declare const sendTransactionalInputSchema: z.ZodObject<{
|
|
7
|
+
template_id: z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNumber>;
|
|
8
|
+
subscriber_email: z.ZodOptional<z.ZodString>;
|
|
9
|
+
subscriber_id: z.ZodOptional<z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
10
|
+
from_email: z.ZodOptional<z.ZodString>;
|
|
11
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
12
|
+
headers: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
13
|
+
content_type: z.ZodOptional<z.ZodEnum<{
|
|
14
|
+
html: "html";
|
|
15
|
+
markdown: "markdown";
|
|
16
|
+
plain: "plain";
|
|
17
|
+
}>>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
declare const sendTransactionalOutputSchema: z.ZodObject<{
|
|
20
|
+
sent: z.ZodBoolean;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export type SendTransactionalInput = z.input<typeof sendTransactionalInputSchema>;
|
|
23
|
+
export type SendTransactionalOutput = z.output<typeof sendTransactionalOutputSchema>;
|
|
24
|
+
export declare function sendTransactionalMessage({ client }: TransactionalOperationContext, input: z.output<typeof sendTransactionalInputSchema>): Promise<SendTransactionalOutput>;
|
|
25
|
+
export declare const sendTransactionalOperation: import("./operation").OperationDefinition<TransactionalOperationContext, z.ZodObject<{
|
|
26
|
+
template_id: z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNumber>;
|
|
27
|
+
subscriber_email: z.ZodOptional<z.ZodString>;
|
|
28
|
+
subscriber_id: z.ZodOptional<z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
29
|
+
from_email: z.ZodOptional<z.ZodString>;
|
|
30
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
31
|
+
headers: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
32
|
+
content_type: z.ZodOptional<z.ZodEnum<{
|
|
33
|
+
html: "html";
|
|
34
|
+
markdown: "markdown";
|
|
35
|
+
plain: "plain";
|
|
36
|
+
}>>;
|
|
37
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
38
|
+
sent: z.ZodBoolean;
|
|
39
|
+
}, z.core.$strip>>;
|
|
40
|
+
export declare function invokeSendTransactionalOperation(context: TransactionalOperationContext, input: unknown): Promise<SendTransactionalOutput>;
|
|
41
|
+
export declare const transactionalOperations: readonly [import("./operation").OperationDefinition<TransactionalOperationContext, z.ZodObject<{
|
|
42
|
+
template_id: z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNumber>;
|
|
43
|
+
subscriber_email: z.ZodOptional<z.ZodString>;
|
|
44
|
+
subscriber_id: z.ZodOptional<z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
45
|
+
from_email: z.ZodOptional<z.ZodString>;
|
|
46
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
47
|
+
headers: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
48
|
+
content_type: z.ZodOptional<z.ZodEnum<{
|
|
49
|
+
html: "html";
|
|
50
|
+
markdown: "markdown";
|
|
51
|
+
plain: "plain";
|
|
52
|
+
}>>;
|
|
53
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
54
|
+
sent: z.ZodBoolean;
|
|
55
|
+
}, z.core.$strip>>];
|
|
56
|
+
export type TransactionalOperation = (typeof transactionalOperations)[number];
|
|
57
|
+
export declare function getTransactionalOperationByMcpName(name: string): TransactionalOperation | undefined;
|
|
58
|
+
export interface TransactionalOperationInvocation {
|
|
59
|
+
operation: TransactionalOperation;
|
|
60
|
+
output: SendTransactionalOutput;
|
|
61
|
+
}
|
|
62
|
+
export declare function invokeTransactionalOperationByMcpName(context: TransactionalOperationContext, name: string, input: unknown): Promise<TransactionalOperationInvocation | undefined>;
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=transactional.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactional.d.ts","sourceRoot":"","sources":["../src/transactional.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,MAAM,WAAW,6BAA6B;IAC7C,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;CAC9C;AAiBD,QAAA,MAAM,4BAA4B;;;;;;;;;;;;iBAmChC,CAAC;AAEH,QAAA,MAAM,6BAA6B;;iBAEjC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,4BAA4B,CACnC,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAC7C,OAAO,6BAA6B,CACpC,CAAC;AAgCF,wBAAsB,wBAAwB,CAC7C,EAAE,MAAM,EAAE,EAAE,6BAA6B,EACzC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,GAClD,OAAO,CAAC,uBAAuB,CAAC,CAclC;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;kBAcrC,CAAC;AAEH,wBAAsB,gCAAgC,CACrD,OAAO,EAAE,6BAA6B,EACtC,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,uBAAuB,CAAC,CAmBlC;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;mBAAwC,CAAC;AAE7E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,wBAAgB,kCAAkC,CACjD,IAAI,EAAE,MAAM,GACV,sBAAsB,GAAG,SAAS,CAIpC;AAED,MAAM,WAAW,gCAAgC;IAChD,SAAS,EAAE,sBAAsB,CAAC;IAClC,MAAM,EAAE,uBAAuB,CAAC;CAChC;AAED,wBAAsB,qCAAqC,CAC1D,OAAO,EAAE,6BAA6B,EACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,gCAAgC,GAAG,SAAS,CAAC,CAUvD"}
|