@maestrogtm/maestro-gtm 0.10.16
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/ai-RNHSWSNV.js +158 -0
- package/dist/ai-RNHSWSNV.js.map +1 -0
- package/dist/app-PSZH2J56.js +54 -0
- package/dist/app-PSZH2J56.js.map +1 -0
- package/dist/batch-ZCHN54YJ.js +28 -0
- package/dist/batch-ZCHN54YJ.js.map +1 -0
- package/dist/campaign-XDXQA7KX.js +119 -0
- package/dist/campaign-XDXQA7KX.js.map +1 -0
- package/dist/chunk-365Q36GF.js +54 -0
- package/dist/chunk-365Q36GF.js.map +1 -0
- package/dist/chunk-4IV6QS4U.js +122 -0
- package/dist/chunk-4IV6QS4U.js.map +1 -0
- package/dist/chunk-6GLLK5KO.js +64 -0
- package/dist/chunk-6GLLK5KO.js.map +1 -0
- package/dist/chunk-6UNBW5SN.js +686 -0
- package/dist/chunk-6UNBW5SN.js.map +1 -0
- package/dist/chunk-A7JD6EYV.js +92 -0
- package/dist/chunk-A7JD6EYV.js.map +1 -0
- package/dist/chunk-ARNVJPFM.js +139 -0
- package/dist/chunk-ARNVJPFM.js.map +1 -0
- package/dist/chunk-AX6BOEF2.js +345 -0
- package/dist/chunk-AX6BOEF2.js.map +1 -0
- package/dist/chunk-C3T7QPSO.js +507 -0
- package/dist/chunk-C3T7QPSO.js.map +1 -0
- package/dist/chunk-FG43GILY.js +46 -0
- package/dist/chunk-FG43GILY.js.map +1 -0
- package/dist/chunk-FS6DCNCA.js +139 -0
- package/dist/chunk-FS6DCNCA.js.map +1 -0
- package/dist/chunk-I6GRD4X7.js +1144 -0
- package/dist/chunk-I6GRD4X7.js.map +1 -0
- package/dist/chunk-IP34URKR.js +621 -0
- package/dist/chunk-IP34URKR.js.map +1 -0
- package/dist/chunk-JFSKOY7Z.js +252 -0
- package/dist/chunk-JFSKOY7Z.js.map +1 -0
- package/dist/chunk-M25KLO7T.js +3272 -0
- package/dist/chunk-M25KLO7T.js.map +1 -0
- package/dist/chunk-M3G2WREL.js +57 -0
- package/dist/chunk-M3G2WREL.js.map +1 -0
- package/dist/chunk-MFFACSBE.js +4266 -0
- package/dist/chunk-MFFACSBE.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-QZH3XFOQ.js +2636 -0
- package/dist/chunk-QZH3XFOQ.js.map +1 -0
- package/dist/chunk-SPWDMOEU.js +1940 -0
- package/dist/chunk-SPWDMOEU.js.map +1 -0
- package/dist/chunk-TP3BZDVV.js +28 -0
- package/dist/chunk-TP3BZDVV.js.map +1 -0
- package/dist/chunk-UBJUBYSQ.js +18 -0
- package/dist/chunk-UBJUBYSQ.js.map +1 -0
- package/dist/chunk-VNKXGHWY.js +20 -0
- package/dist/chunk-VNKXGHWY.js.map +1 -0
- package/dist/chunk-WKLCPIFB.js +9862 -0
- package/dist/chunk-WKLCPIFB.js.map +1 -0
- package/dist/chunk-YV5XOXRQ.js +7 -0
- package/dist/chunk-YV5XOXRQ.js.map +1 -0
- package/dist/cli-Z3BNNJYQ.js +852 -0
- package/dist/cli-Z3BNNJYQ.js.map +1 -0
- package/dist/client-Y34LNEWN.js +8 -0
- package/dist/client-Y34LNEWN.js.map +1 -0
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -0
- package/dist/configure-XSENK4X5.js +64 -0
- package/dist/configure-XSENK4X5.js.map +1 -0
- package/dist/context.js +10 -0
- package/dist/context.js.map +1 -0
- package/dist/crm-QBNHVBYV.js +86 -0
- package/dist/crm-QBNHVBYV.js.map +1 -0
- package/dist/dfy-X3OXIYRA.js +356 -0
- package/dist/dfy-X3OXIYRA.js.map +1 -0
- package/dist/dist-LGCJKGBS.js +121 -0
- package/dist/dist-LGCJKGBS.js.map +1 -0
- package/dist/engagement-C4U7LPJH.js +463 -0
- package/dist/engagement-C4U7LPJH.js.map +1 -0
- package/dist/enrich-F5GPVZFE.js +226 -0
- package/dist/enrich-F5GPVZFE.js.map +1 -0
- package/dist/extract-DS5N6SSJ.js +155 -0
- package/dist/extract-DS5N6SSJ.js.map +1 -0
- package/dist/feedback-AIXKXNM5.js +51 -0
- package/dist/feedback-AIXKXNM5.js.map +1 -0
- package/dist/fetch-QJDSPI63.js +87 -0
- package/dist/fetch-QJDSPI63.js.map +1 -0
- package/dist/handlers.js +13 -0
- package/dist/handlers.js.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/list-HL7NQQJX.js +236 -0
- package/dist/list-HL7NQQJX.js.map +1 -0
- package/dist/maestro-N7Q2JX22.js +903 -0
- package/dist/maestro-N7Q2JX22.js.map +1 -0
- package/dist/prospect-RUOT43H6.js +532 -0
- package/dist/prospect-RUOT43H6.js.map +1 -0
- package/dist/providers/factory.js +10 -0
- package/dist/providers/factory.js.map +1 -0
- package/dist/providers/registry.js +8 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/provision-FT5NWN77.js +394 -0
- package/dist/provision-FT5NWN77.js.map +1 -0
- package/dist/recipe-JU3SXMZF.js +137 -0
- package/dist/recipe-JU3SXMZF.js.map +1 -0
- package/dist/review-5SB6DYDZ.js +70 -0
- package/dist/review-5SB6DYDZ.js.map +1 -0
- package/dist/sdk-LVBHNQ6T.js +3852 -0
- package/dist/sdk-LVBHNQ6T.js.map +1 -0
- package/dist/server-REKYQZ2E.js +22 -0
- package/dist/server-REKYQZ2E.js.map +1 -0
- package/dist/status-V3EEFS7S.js +114 -0
- package/dist/status-V3EEFS7S.js.map +1 -0
- package/dist/tam-J6NDBP5W.js +682 -0
- package/dist/tam-J6NDBP5W.js.map +1 -0
- package/dist/tools.js +80 -0
- package/dist/tools.js.map +1 -0
- package/dist/validation.js +12 -0
- package/dist/validation.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createServer,
|
|
3
|
+
startServer
|
|
4
|
+
} from "./chunk-C3T7QPSO.js";
|
|
5
|
+
import "./chunk-YV5XOXRQ.js";
|
|
6
|
+
import "./chunk-6UNBW5SN.js";
|
|
7
|
+
import "./chunk-FS6DCNCA.js";
|
|
8
|
+
import "./chunk-UBJUBYSQ.js";
|
|
9
|
+
import "./chunk-M25KLO7T.js";
|
|
10
|
+
import "./chunk-I6GRD4X7.js";
|
|
11
|
+
import "./chunk-TP3BZDVV.js";
|
|
12
|
+
import "./chunk-QZH3XFOQ.js";
|
|
13
|
+
import "./chunk-WKLCPIFB.js";
|
|
14
|
+
import "./chunk-365Q36GF.js";
|
|
15
|
+
import "./chunk-JFSKOY7Z.js";
|
|
16
|
+
import "./chunk-6GLLK5KO.js";
|
|
17
|
+
import "./chunk-PZ5AY32C.js";
|
|
18
|
+
export {
|
|
19
|
+
createServer,
|
|
20
|
+
startServer
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=server-REKYQZ2E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import {
|
|
2
|
+
logError
|
|
3
|
+
} from "./chunk-6GLLK5KO.js";
|
|
4
|
+
import "./chunk-PZ5AY32C.js";
|
|
5
|
+
|
|
6
|
+
// src/handlers/status.ts
|
|
7
|
+
var TOOL_CAPABILITY_REQUIREMENTS = [
|
|
8
|
+
{
|
|
9
|
+
tool: "extract",
|
|
10
|
+
requires: "harvest",
|
|
11
|
+
capability: "extract_linkedin",
|
|
12
|
+
setup: "Set GTM_HARVEST_API_KEY or add harvest.api_key to config.yaml"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
tool: "storeleads",
|
|
16
|
+
requires: "storeleads",
|
|
17
|
+
capability: "find_companies",
|
|
18
|
+
setup: "Set GTM_STORELEADS_API_KEY or add storeleads.api_key to config.yaml"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
tool: "enrich",
|
|
22
|
+
requires: "prospeo or bettercontact",
|
|
23
|
+
capability: "enrich_email",
|
|
24
|
+
setup: "Set GTM_PROSPEO_API_KEY or GTM_BETTERCONTACT_API_KEY"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
tool: "verify",
|
|
28
|
+
requires: "zerobounce, bounceban, or mailin",
|
|
29
|
+
capability: "verify_email",
|
|
30
|
+
setup: "Set GTM_ZEROBOUNCE_API_KEY, GTM_BOUNCEBAN_API_KEY, or GTM_MAILIN_EMAIL + GTM_MAILIN_PASSWORD"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
tool: "campaign",
|
|
34
|
+
requires: "plusvibe, instantly, or smartlead",
|
|
35
|
+
capability: "campaign_email",
|
|
36
|
+
setup: "Set GTM_PLUSVIBE_API_KEY, GTM_INSTANTLY_API_KEY, or GTM_SMARTLEAD_API_KEY"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
tool: "campaign",
|
|
40
|
+
requires: "heyreach",
|
|
41
|
+
capability: "outreach_linkedin",
|
|
42
|
+
setup: "Set GTM_HEYREACH_API_KEY (LinkedIn outreach via campaign)"
|
|
43
|
+
},
|
|
44
|
+
{ tool: "crm", requires: "attio", capability: "crm_read", setup: "Set GTM_ATTIO_API_KEY" },
|
|
45
|
+
{
|
|
46
|
+
tool: "ai",
|
|
47
|
+
requires: "anthropic or openai",
|
|
48
|
+
capability: "ai",
|
|
49
|
+
setup: "Set GTM_ANTHROPIC_API_KEY or GTM_OPENAI_API_KEY"
|
|
50
|
+
}
|
|
51
|
+
];
|
|
52
|
+
async function handleStatus(args, ctx) {
|
|
53
|
+
const filterProvider = args.provider;
|
|
54
|
+
const allProviders = ctx.registry.list();
|
|
55
|
+
const targets = filterProvider ? allProviders.filter((p) => p.name === filterProvider) : allProviders;
|
|
56
|
+
const results = await Promise.all(
|
|
57
|
+
targets.map(async (summary) => {
|
|
58
|
+
const provider = ctx.registry.get(summary.name);
|
|
59
|
+
let healthy = false;
|
|
60
|
+
let credits = null;
|
|
61
|
+
try {
|
|
62
|
+
healthy = await provider.checkCredentials();
|
|
63
|
+
} catch (error) {
|
|
64
|
+
logError(
|
|
65
|
+
`status:${summary.name}`,
|
|
66
|
+
error instanceof Error ? error : new Error(String(error))
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
if (healthy && provider.checkCredits) {
|
|
70
|
+
try {
|
|
71
|
+
credits = await provider.checkCredits();
|
|
72
|
+
} catch (error) {
|
|
73
|
+
logError(
|
|
74
|
+
`status:credits:${summary.name}`,
|
|
75
|
+
error instanceof Error ? error : new Error(String(error))
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
provider: summary.name,
|
|
81
|
+
capabilities: summary.capabilities,
|
|
82
|
+
notes: summary.notes,
|
|
83
|
+
healthy,
|
|
84
|
+
credits
|
|
85
|
+
};
|
|
86
|
+
})
|
|
87
|
+
);
|
|
88
|
+
const client = ctx.session.getActiveContext();
|
|
89
|
+
const detail = args.detail ?? "summary";
|
|
90
|
+
if (detail !== "full") {
|
|
91
|
+
return {
|
|
92
|
+
client: client.clientName,
|
|
93
|
+
providers: results.map(({ provider, healthy, credits }) => ({
|
|
94
|
+
provider,
|
|
95
|
+
healthy,
|
|
96
|
+
...credits && { credits }
|
|
97
|
+
}))
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
const configuredCapabilities = new Set(results.flatMap((r) => r.capabilities));
|
|
101
|
+
const unconfigured = TOOL_CAPABILITY_REQUIREMENTS.filter(
|
|
102
|
+
(req) => !configuredCapabilities.has(req.capability)
|
|
103
|
+
).map(({ tool, requires, setup }) => ({ tool, requires, setup }));
|
|
104
|
+
return {
|
|
105
|
+
client: client.clientName,
|
|
106
|
+
providers: results,
|
|
107
|
+
waterfall: client.config.waterfall,
|
|
108
|
+
unconfigured: unconfigured.length > 0 ? unconfigured : void 0
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export {
|
|
112
|
+
handleStatus
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=status-V3EEFS7S.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/handlers/status.ts"],"sourcesContent":["/** Status handler. Aggregates health and credit info from all providers.\n * Constraint: No side effects. Reads only. */\n\nimport { logError } from '@maestro/logging';\n\nimport type { HandlerContext } from './index.js';\nimport type { CreditBalance } from '../providers/types.js';\nimport type { Capability } from '../constants.js';\n\n// ─── Tool-to-Capability Mapping ─────────────────────────\n\n/** Maps tools to the capabilities they need. Used to detect unconfigured tools. */\nconst TOOL_CAPABILITY_REQUIREMENTS: Array<{\n tool: string;\n requires: string;\n capability: string;\n setup: string;\n}> = [\n {\n tool: 'extract',\n requires: 'harvest',\n capability: 'extract_linkedin',\n setup: 'Set GTM_HARVEST_API_KEY or add harvest.api_key to config.yaml',\n },\n {\n tool: 'storeleads',\n requires: 'storeleads',\n capability: 'find_companies',\n setup: 'Set GTM_STORELEADS_API_KEY or add storeleads.api_key to config.yaml',\n },\n {\n tool: 'enrich',\n requires: 'prospeo or bettercontact',\n capability: 'enrich_email',\n setup: 'Set GTM_PROSPEO_API_KEY or GTM_BETTERCONTACT_API_KEY',\n },\n {\n tool: 'verify',\n requires: 'zerobounce, bounceban, or mailin',\n capability: 'verify_email',\n setup:\n 'Set GTM_ZEROBOUNCE_API_KEY, GTM_BOUNCEBAN_API_KEY, or GTM_MAILIN_EMAIL + GTM_MAILIN_PASSWORD',\n },\n {\n tool: 'campaign',\n requires: 'plusvibe, instantly, or smartlead',\n capability: 'campaign_email',\n setup: 'Set GTM_PLUSVIBE_API_KEY, GTM_INSTANTLY_API_KEY, or GTM_SMARTLEAD_API_KEY',\n },\n {\n tool: 'campaign',\n requires: 'heyreach',\n capability: 'outreach_linkedin',\n setup: 'Set GTM_HEYREACH_API_KEY (LinkedIn outreach via campaign)',\n },\n { tool: 'crm', requires: 'attio', capability: 'crm_read', setup: 'Set GTM_ATTIO_API_KEY' },\n {\n tool: 'ai',\n requires: 'anthropic or openai',\n capability: 'ai' as Capability,\n setup: 'Set GTM_ANTHROPIC_API_KEY or GTM_OPENAI_API_KEY',\n },\n];\n\n// ─── Handler ─────────────────────────────────────────────\n\nexport async function handleStatus(\n args: Record<string, unknown>,\n ctx: HandlerContext\n): Promise<unknown> {\n const filterProvider = args.provider as string | undefined;\n const allProviders = ctx.registry.list();\n\n const targets = filterProvider\n ? allProviders.filter((p) => p.name === filterProvider)\n : allProviders;\n\n const results = await Promise.all(\n targets.map(async (summary) => {\n const provider = ctx.registry.get(summary.name)!;\n let healthy = false;\n let credits: CreditBalance | null = null;\n\n try {\n healthy = await provider.checkCredentials();\n } catch (error) {\n logError(\n `status:${summary.name}`,\n error instanceof Error ? error : new Error(String(error))\n );\n }\n\n if (healthy && provider.checkCredits) {\n try {\n credits = await provider.checkCredits();\n } catch (error) {\n logError(\n `status:credits:${summary.name}`,\n error instanceof Error ? error : new Error(String(error))\n );\n }\n }\n\n return {\n provider: summary.name,\n capabilities: summary.capabilities,\n notes: summary.notes,\n healthy,\n credits,\n };\n })\n );\n\n const client = ctx.session.getActiveContext();\n const detail = (args.detail as string) ?? 'summary';\n\n if (detail !== 'full') {\n // Summary: provider name, health, credits only\n return {\n client: client.clientName,\n providers: results.map(({ provider, healthy, credits }) => ({\n provider,\n healthy,\n ...(credits && { credits }),\n })),\n };\n }\n\n // Full: include capabilities, notes, unconfigured details, waterfall\n const configuredCapabilities = new Set(results.flatMap((r) => r.capabilities));\n const unconfigured = TOOL_CAPABILITY_REQUIREMENTS.filter(\n (req) => !configuredCapabilities.has(req.capability as Capability)\n ).map(({ tool, requires, setup }) => ({ tool, requires, setup }));\n\n return {\n client: client.clientName,\n providers: results,\n waterfall: client.config.waterfall,\n unconfigured: unconfigured.length > 0 ? unconfigured : undefined,\n };\n}\n"],"mappings":";;;;;;AAYA,IAAM,+BAKD;AAAA,EACH;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,EAAE,MAAM,OAAO,UAAU,SAAS,YAAY,YAAY,OAAO,wBAAwB;AAAA,EACzF;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AACF;AAIA,eAAsB,aACpB,MACA,KACkB;AAClB,QAAM,iBAAiB,KAAK;AAC5B,QAAM,eAAe,IAAI,SAAS,KAAK;AAEvC,QAAM,UAAU,iBACZ,aAAa,OAAO,CAAC,MAAM,EAAE,SAAS,cAAc,IACpD;AAEJ,QAAM,UAAU,MAAM,QAAQ;AAAA,IAC5B,QAAQ,IAAI,OAAO,YAAY;AAC7B,YAAM,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI;AAC9C,UAAI,UAAU;AACd,UAAI,UAAgC;AAEpC,UAAI;AACF,kBAAU,MAAM,SAAS,iBAAiB;AAAA,MAC5C,SAAS,OAAO;AACd;AAAA,UACE,UAAU,QAAQ,IAAI;AAAA,UACtB,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,QAC1D;AAAA,MACF;AAEA,UAAI,WAAW,SAAS,cAAc;AACpC,YAAI;AACF,oBAAU,MAAM,SAAS,aAAa;AAAA,QACxC,SAAS,OAAO;AACd;AAAA,YACE,kBAAkB,QAAQ,IAAI;AAAA,YAC9B,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL,UAAU,QAAQ;AAAA,QAClB,cAAc,QAAQ;AAAA,QACtB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,IAAI,QAAQ,iBAAiB;AAC5C,QAAM,SAAU,KAAK,UAAqB;AAE1C,MAAI,WAAW,QAAQ;AAErB,WAAO;AAAA,MACL,QAAQ,OAAO;AAAA,MACf,WAAW,QAAQ,IAAI,CAAC,EAAE,UAAU,SAAS,QAAQ,OAAO;AAAA,QAC1D;AAAA,QACA;AAAA,QACA,GAAI,WAAW,EAAE,QAAQ;AAAA,MAC3B,EAAE;AAAA,IACJ;AAAA,EACF;AAGA,QAAM,yBAAyB,IAAI,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;AAC7E,QAAM,eAAe,6BAA6B;AAAA,IAChD,CAAC,QAAQ,CAAC,uBAAuB,IAAI,IAAI,UAAwB;AAAA,EACnE,EAAE,IAAI,CAAC,EAAE,MAAM,UAAU,MAAM,OAAO,EAAE,MAAM,UAAU,MAAM,EAAE;AAEhE,SAAO;AAAA,IACL,QAAQ,OAAO;AAAA,IACf,WAAW;AAAA,IACX,WAAW,OAAO,OAAO;AAAA,IACzB,cAAc,aAAa,SAAS,IAAI,eAAe;AAAA,EACzD;AACF;","names":[]}
|