fullstackgtm 0.12.0 → 0.13.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/CHANGELOG.md +37 -0
- package/README.md +19 -0
- package/dist/calls.d.ts +72 -0
- package/dist/calls.js +355 -0
- package/dist/cli.js +181 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/mcp.js +24 -1
- package/llms.txt +7 -0
- package/package.json +1 -1
- package/src/calls.ts +444 -0
- package/src/cli.ts +195 -0
- package/src/index.ts +13 -0
- package/src/mcp.ts +30 -1
package/src/mcp.ts
CHANGED
|
@@ -46,6 +46,7 @@ import type { FieldMappings } from "./mappings.ts";
|
|
|
46
46
|
import { formatPatchPlanRun, patchPlanToMarkdown } from "./format.ts";
|
|
47
47
|
import { builtinAuditRules } from "./rules.ts";
|
|
48
48
|
import { sampleSnapshot } from "./sampleData.ts";
|
|
49
|
+
import { parseCall } from "./calls.ts";
|
|
49
50
|
import { suggestValues } from "./suggest.ts";
|
|
50
51
|
import type { CanonicalGtmSnapshot, GtmConnector, PatchPlan } from "./types.ts";
|
|
51
52
|
|
|
@@ -68,7 +69,10 @@ async function connectorFor(provider: string): Promise<GtmConnector> {
|
|
|
68
69
|
"No HubSpot credentials. Run `fullstackgtm login hubspot` or set HUBSPOT_ACCESS_TOKEN in the MCP server environment.",
|
|
69
70
|
);
|
|
70
71
|
}
|
|
71
|
-
return createHubspotConnector({
|
|
72
|
+
return createHubspotConnector({
|
|
73
|
+
getAccessToken: () => token,
|
|
74
|
+
apiBaseUrl: process.env.HUBSPOT_API_BASE_URL,
|
|
75
|
+
});
|
|
72
76
|
}
|
|
73
77
|
if (provider === "salesforce") {
|
|
74
78
|
const connection =
|
|
@@ -188,6 +192,31 @@ export async function startMcpServer() {
|
|
|
188
192
|
},
|
|
189
193
|
);
|
|
190
194
|
|
|
195
|
+
server.registerTool(
|
|
196
|
+
"fullstackgtm_call_parse",
|
|
197
|
+
{
|
|
198
|
+
title: "Parse Call Transcript",
|
|
199
|
+
description:
|
|
200
|
+
"Deterministically parse a call transcript (Speaker:/[Speaker]: lines or Granola " +
|
|
201
|
+
"utterance JSON) into canonical segments, keyword-derived insights (next steps, " +
|
|
202
|
+
"objections, pricing, risks, competitor mentions...), and GtmEvidence records. " +
|
|
203
|
+
"Read-only and LLM-free; pair with fullstackgtm_audit/apply for governed writes.",
|
|
204
|
+
inputSchema: {
|
|
205
|
+
transcript: z.string().optional(),
|
|
206
|
+
transcriptPath: z.string().optional(),
|
|
207
|
+
title: z.string().optional(),
|
|
208
|
+
source: z.enum(["gong", "chorus", "fathom", "manual", "csv", "unknown"]).optional(),
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
async ({ transcript, transcriptPath, title, source }) => {
|
|
212
|
+
const raw =
|
|
213
|
+
transcript ??
|
|
214
|
+
(transcriptPath ? readFileSync(resolve(process.cwd(), transcriptPath), "utf8") : null);
|
|
215
|
+
if (!raw) throw new Error("Provide transcript (text) or transcriptPath (file).");
|
|
216
|
+
return content(parseCall(raw, { title, sourceSystem: source }));
|
|
217
|
+
},
|
|
218
|
+
);
|
|
219
|
+
|
|
191
220
|
server.registerTool(
|
|
192
221
|
"fullstackgtm_rules",
|
|
193
222
|
{
|