buildpartner 0.4.2 → 0.8.0-dev.20260430072343
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/bin/cli.js +11 -22
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/api-client.d.ts +1 -1
- package/dist/src/api-client.js +9 -1
- package/dist/src/api-client.js.map +1 -1
- package/dist/src/commands/reset.js +1 -1
- package/dist/src/commands/reset.js.map +1 -1
- package/dist/src/mcp/server.d.ts +1 -5
- package/dist/src/mcp/server.js +20 -75
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/store/local-store.d.ts +13 -2
- package/dist/src/store/local-store.js +21 -0
- package/dist/src/store/local-store.js.map +1 -1
- package/package.json +2 -6
- package/dist/src/classifiers/activity-classifier.d.ts +0 -12
- package/dist/src/classifiers/activity-classifier.js +0 -300
- package/dist/src/classifiers/activity-classifier.js.map +0 -1
- package/dist/src/classifiers/path-detector.d.ts +0 -33
- package/dist/src/classifiers/path-detector.js +0 -98
- package/dist/src/classifiers/path-detector.js.map +0 -1
- package/dist/src/commands/log-session.d.ts +0 -7
- package/dist/src/commands/log-session.js +0 -23
- package/dist/src/commands/log-session.js.map +0 -1
- package/dist/src/commands/sync.d.ts +0 -6
- package/dist/src/commands/sync.js +0 -36
- package/dist/src/commands/sync.js.map +0 -1
- package/dist/src/installer/hook-installer.d.ts +0 -19
- package/dist/src/installer/hook-installer.js +0 -114
- package/dist/src/installer/hook-installer.js.map +0 -1
- package/dist/src/installer/mcp-installer.d.ts +0 -9
- package/dist/src/installer/mcp-installer.js +0 -80
- package/dist/src/installer/mcp-installer.js.map +0 -1
- package/dist/src/installer/skill-installer.d.ts +0 -5
- package/dist/src/installer/skill-installer.js +0 -55
- package/dist/src/installer/skill-installer.js.map +0 -1
- package/dist/src/installer/skill-sync.d.ts +0 -10
- package/dist/src/installer/skill-sync.js +0 -80
- package/dist/src/installer/skill-sync.js.map +0 -1
- package/dist/src/mcp/catch-up.d.ts +0 -6
- package/dist/src/mcp/catch-up.js +0 -28
- package/dist/src/mcp/catch-up.js.map +0 -1
- package/dist/src/mcp/tools/ai-profile.d.ts +0 -88
- package/dist/src/mcp/tools/ai-profile.js +0 -123
- package/dist/src/mcp/tools/ai-profile.js.map +0 -1
- package/dist/src/mcp/tools/classify-session.d.ts +0 -31
- package/dist/src/mcp/tools/classify-session.js +0 -34
- package/dist/src/mcp/tools/classify-session.js.map +0 -1
- package/dist/src/mcp/tools/get-knowledge.d.ts +0 -25
- package/dist/src/mcp/tools/get-knowledge.js +0 -31
- package/dist/src/mcp/tools/get-knowledge.js.map +0 -1
- package/dist/src/mcp/tools/get-profile.d.ts +0 -1
- package/dist/src/mcp/tools/get-profile.js +0 -14
- package/dist/src/mcp/tools/get-profile.js.map +0 -1
- package/dist/src/mcp/tools/get-stats.d.ts +0 -32
- package/dist/src/mcp/tools/get-stats.js +0 -45
- package/dist/src/mcp/tools/get-stats.js.map +0 -1
- package/dist/src/mcp/tools/get-suggestions.d.ts +0 -7
- package/dist/src/mcp/tools/get-suggestions.js +0 -65
- package/dist/src/mcp/tools/get-suggestions.js.map +0 -1
- package/dist/src/mcp/tools/get-training.d.ts +0 -48
- package/dist/src/mcp/tools/get-training.js +0 -102
- package/dist/src/mcp/tools/get-training.js.map +0 -1
- package/dist/src/mcp/tools/log-highlight.d.ts +0 -24
- package/dist/src/mcp/tools/log-highlight.js +0 -25
- package/dist/src/mcp/tools/log-highlight.js.map +0 -1
- package/dist/src/mcp/tools/quest.d.ts +0 -4
- package/dist/src/mcp/tools/quest.js +0 -8
- package/dist/src/mcp/tools/quest.js.map +0 -1
- package/dist/src/mcp/tools/web-search.d.ts +0 -15
- package/dist/src/mcp/tools/web-search.js +0 -17
- package/dist/src/mcp/tools/web-search.js.map +0 -1
- package/dist/src/readers/extract-signals.d.ts +0 -23
- package/dist/src/readers/extract-signals.js +0 -50
- package/dist/src/readers/extract-signals.js.map +0 -1
- package/dist/src/readers/history-reader.d.ts +0 -28
- package/dist/src/readers/history-reader.js +0 -83
- package/dist/src/readers/history-reader.js.map +0 -1
- package/dist/src/readers/session-reader.d.ts +0 -75
- package/dist/src/readers/session-reader.js +0 -191
- package/dist/src/readers/session-reader.js.map +0 -1
- package/dist/src/readers/session-sync.d.ts +0 -24
- package/dist/src/readers/session-sync.js +0 -114
- package/dist/src/readers/session-sync.js.map +0 -1
- package/dist/src/readers/stats-reader.d.ts +0 -38
- package/dist/src/readers/stats-reader.js +0 -125
- package/dist/src/readers/stats-reader.js.map +0 -1
- package/skills/bp-claude-coach/SKILL.md +0 -314
- package/skills/bp-enhance-claude-md/SKILL.md +0 -62
- package/skills/bp-expert-advice/SKILL.md +0 -62
- package/skills/bp-flex-socials/SKILL.md +0 -54
- package/skills/bp-full-audit/SKILL.md +0 -145
- package/skills/bp-generate-personalized-training-data/SKILL.md +0 -145
- package/skills/bp-improve-skill/SKILL.md +0 -115
- package/skills/bp-interview/SKILL.md +0 -64
- package/skills/bp-interview-me/SKILL.md +0 -120
- package/skills/bp-life-story/SKILL.md +0 -68
- package/skills/bp-log-experience/SKILL.md +0 -72
- package/skills/bp-open-dashboard/SKILL.md +0 -31
- package/skills/bp-quest-status/SKILL.md +0 -52
- package/skills/bp-recap-week/SKILL.md +0 -53
- package/skills/bp-setup-coach/SKILL.md +0 -64
- package/skills/bp-shorts-ideation/SKILL.md +0 -108
- package/skills/bp-shorts-script/SKILL.md +0 -126
- package/skills/bp-youtube-ideation/SKILL.md +0 -99
- package/skills/bp-youtube-script/SKILL.md +0 -149
package/dist/bin/cli.js
CHANGED
|
@@ -2,43 +2,32 @@
|
|
|
2
2
|
const command = process.argv[2];
|
|
3
3
|
async function main() {
|
|
4
4
|
switch (command) {
|
|
5
|
-
case "setup": {
|
|
6
|
-
const { setup } = await import("../src/commands/setup.js");
|
|
7
|
-
await setup();
|
|
8
|
-
break;
|
|
9
|
-
}
|
|
10
5
|
case "serve": {
|
|
11
6
|
const { serve } = await import("../src/commands/serve.js");
|
|
12
7
|
await serve();
|
|
13
8
|
break;
|
|
14
9
|
}
|
|
15
|
-
case "log-session": {
|
|
16
|
-
const { logSession } = await import("../src/commands/log-session.js");
|
|
17
|
-
await logSession();
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
case "sync": {
|
|
21
|
-
const { sync } = await import("../src/commands/sync.js");
|
|
22
|
-
await sync();
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
25
10
|
case "login": {
|
|
26
11
|
const { login } = await import("../src/commands/login.js");
|
|
27
12
|
await login();
|
|
28
13
|
break;
|
|
29
14
|
}
|
|
30
|
-
|
|
15
|
+
case undefined:
|
|
31
16
|
console.log(`
|
|
32
|
-
BuildPartner - Your AI Build Partner
|
|
17
|
+
BuildPartner.ai - Your AI Build Partner
|
|
33
18
|
|
|
34
19
|
Usage:
|
|
35
|
-
buildpartner setup Interactive setup + backfill
|
|
36
|
-
buildpartner setup --token X Pre-authenticated setup
|
|
37
|
-
buildpartner login <token> Connect existing account on new machine
|
|
38
20
|
buildpartner serve Start MCP server
|
|
39
|
-
buildpartner
|
|
40
|
-
|
|
21
|
+
buildpartner login <token> Connect existing account on new machine
|
|
22
|
+
|
|
23
|
+
Install via plugin marketplace:
|
|
24
|
+
claude plugin marketplace add austinmarchese/buildpartner-plugin
|
|
25
|
+
claude plugin install buildpartner@buildpartner
|
|
41
26
|
`);
|
|
27
|
+
break;
|
|
28
|
+
default:
|
|
29
|
+
// Unknown commands exit silently (old hooks may call removed commands like log-session)
|
|
30
|
+
break;
|
|
42
31
|
}
|
|
43
32
|
}
|
|
44
33
|
main().catch((err) => {
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AAEA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AAEA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;CAUjB,CAAC,CAAC;YACG,MAAM;QACR;YACE,wFAAwF;YACxF,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/src/api-client.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* All API calls from the CLI go through this module.
|
|
4
4
|
* Handles auth headers, timeouts, and error logging automatically.
|
|
5
5
|
*/
|
|
6
|
-
export declare const API_BASE
|
|
6
|
+
export declare const API_BASE: string;
|
|
7
7
|
/**
|
|
8
8
|
* Make an authenticated request to the BuildPartner API.
|
|
9
9
|
* Returns the raw Response, or null if offline/unauthenticated.
|
package/dist/src/api-client.js
CHANGED
|
@@ -4,7 +4,15 @@
|
|
|
4
4
|
* Handles auth headers, timeouts, and error logging automatically.
|
|
5
5
|
*/
|
|
6
6
|
import { readAuth, logError } from "./store/local-store.js";
|
|
7
|
-
|
|
7
|
+
function getApiBase() {
|
|
8
|
+
if (process.env.BP_API_BASE)
|
|
9
|
+
return process.env.BP_API_BASE;
|
|
10
|
+
const auth = readAuth();
|
|
11
|
+
if (auth?.api_base)
|
|
12
|
+
return auth.api_base;
|
|
13
|
+
return "https://www.buildpartner.ai";
|
|
14
|
+
}
|
|
15
|
+
export const API_BASE = getApiBase();
|
|
8
16
|
/**
|
|
9
17
|
* Make an authenticated request to the BuildPartner API.
|
|
10
18
|
* Returns the raw Response, or null if offline/unauthenticated.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAE5D,SAAS,UAAU;IACjB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5D,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,IAAI,IAAI,EAAE,QAAQ;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzC,OAAO,6BAA6B,CAAC;AACvC,CAAC;AACD,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,OAAqB;IAChE,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,KAAK;QAAE,OAAO,IAAI,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE;YAC5C,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;gBACvC,cAAc,EAAE,kBAAkB;gBAClC,GAAG,OAAO,EAAE,OAAO;aACpB;YACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAI,IAAY;IAC1C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,IAAY,EAAE,IAAa;IAC1D,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;QAC/B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC"}
|
|
@@ -124,7 +124,7 @@ export async function reset() {
|
|
|
124
124
|
for (const item of removed) {
|
|
125
125
|
console.log(` - ${item}`);
|
|
126
126
|
}
|
|
127
|
-
console.log("\n Run `
|
|
127
|
+
console.log("\n Run `claude plugin marketplace add austinmarchese/buildpartner` to reinstall.\n");
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
//# sourceMappingURL=reset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/commands/reset.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/commands/reset.ts"],"names":[],"mappings":"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"}
|
package/dist/src/mcp/server.d.ts
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* BuildPartner MCP Server.
|
|
3
3
|
*
|
|
4
|
-
* Exposes
|
|
4
|
+
* Exposes tools that Claude Code can call during skill execution.
|
|
5
5
|
* Each tool is a thin wrapper around a server API call. No local state or logic.
|
|
6
6
|
*
|
|
7
7
|
* Tools:
|
|
8
|
-
* get_personal_context - fetch user stats, profile, workspace, sessions
|
|
9
8
|
* get_expert_knowledge - search expert frameworks with personalized context
|
|
10
|
-
* save_profile - update the user's AI profile (writing style, preferences, etc.)
|
|
11
|
-
* get_quest_progress - check which quests are completed/active/locked
|
|
12
|
-
* check_status - end-of-skill bookkeeping (usage tracking, quest completion, reminders)
|
|
13
9
|
*/
|
|
14
10
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
15
11
|
export declare function createServer(): McpServer;
|
package/dist/src/mcp/server.js
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* BuildPartner MCP Server.
|
|
3
3
|
*
|
|
4
|
-
* Exposes
|
|
4
|
+
* Exposes tools that Claude Code can call during skill execution.
|
|
5
5
|
* Each tool is a thin wrapper around a server API call. No local state or logic.
|
|
6
6
|
*
|
|
7
7
|
* Tools:
|
|
8
|
-
* get_personal_context - fetch user stats, profile, workspace, sessions
|
|
9
8
|
* get_expert_knowledge - search expert frameworks with personalized context
|
|
10
|
-
* save_profile - update the user's AI profile (writing style, preferences, etc.)
|
|
11
|
-
* get_quest_progress - check which quests are completed/active/locked
|
|
12
|
-
* check_status - end-of-skill bookkeeping (usage tracking, quest completion, reminders)
|
|
13
9
|
*/
|
|
14
10
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
15
11
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
16
12
|
import { z } from "zod";
|
|
17
|
-
import { apiFetch
|
|
13
|
+
import { apiFetch } from "../api-client.js";
|
|
14
|
+
import { readAuth } from "../store/local-store.js";
|
|
18
15
|
import { readFileSync } from "fs";
|
|
19
16
|
import { join, dirname } from "path";
|
|
20
17
|
import { fileURLToPath } from "url";
|
|
@@ -33,19 +30,27 @@ function getCliVersion() {
|
|
|
33
30
|
}
|
|
34
31
|
/** Helper to format a text response for MCP */
|
|
35
32
|
const textResponse = (text) => ({ content: [{ type: "text", text }] });
|
|
33
|
+
const NOT_SIGNED_IN = "Not signed in. Run this to get started: curl -fsSL https://buildpartner.ai/install.sh | sh";
|
|
34
|
+
/** Check if the user has auth. Returns an error response if not, null if OK. */
|
|
35
|
+
function requireLocalAuth() {
|
|
36
|
+
const auth = readAuth();
|
|
37
|
+
if (!auth?.token)
|
|
38
|
+
return textResponse(JSON.stringify({ error: NOT_SIGNED_IN }));
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
36
41
|
/** Turn an HTTP error status into a message the user can act on. */
|
|
37
42
|
function friendlyError(status) {
|
|
38
43
|
if (status === 401)
|
|
39
|
-
return "Not logged in.
|
|
44
|
+
return "Not logged in. Re-run the install script (curl -fsSL https://buildpartner.ai/install.sh | sh) or use `buildpartner login <token>`.";
|
|
40
45
|
if (status === 404)
|
|
41
|
-
return "Account not found. Your login may be out of date.
|
|
46
|
+
return "Account not found. Your login may be out of date. Re-run the install script or use `buildpartner login <token>` to reconnect.";
|
|
42
47
|
if (status === 403)
|
|
43
48
|
return ""; // handled separately (subscription block)
|
|
44
49
|
if (status === 503)
|
|
45
50
|
return "BuildPartner is temporarily unavailable. Try again in a minute.";
|
|
46
51
|
if (status >= 500)
|
|
47
52
|
return "BuildPartner's server hit an error. Try again in a minute. If it keeps happening, visit buildpartner.ai for status updates.";
|
|
48
|
-
return `Something went wrong (${status}).
|
|
53
|
+
return `Something went wrong (${status}). Re-run the install script or use \`buildpartner login <token>\` to re-connect, or try again shortly.`;
|
|
49
54
|
}
|
|
50
55
|
/**
|
|
51
56
|
* Handle a 403 (subscription limit) gracefully.
|
|
@@ -60,36 +65,16 @@ async function handleSubscriptionBlock(res) {
|
|
|
60
65
|
action: "To continue using BuildPartner.ai, open your dashboard to upgrade. Read ~/.buildpartner/auth.json, extract the token, and run: open \"https://buildpartner.ai/dashboard?upgrade=true&t=TOKEN\" (replace TOKEN with the actual value). Then tell the user their dashboard is open where they can upgrade.",
|
|
61
66
|
}));
|
|
62
67
|
}
|
|
63
|
-
/** Zod preprocessor: if the LLM sends a JSON string instead of an object/array, parse it. */
|
|
64
|
-
function jsonCoerce(val) {
|
|
65
|
-
if (typeof val === "string") {
|
|
66
|
-
try {
|
|
67
|
-
return JSON.parse(val);
|
|
68
|
-
}
|
|
69
|
-
catch { /* fall through to let zod report the error */ }
|
|
70
|
-
}
|
|
71
|
-
return val;
|
|
72
|
-
}
|
|
73
68
|
export function createServer() {
|
|
74
|
-
const server = new McpServer({ name: "buildpartner", version:
|
|
75
|
-
server.tool("
|
|
76
|
-
include_sessions: z.boolean().optional().describe("Include last 30 session summaries. Use for skills that need session history (claude-coach, recap, interview-me). Omit for lighter payload."),
|
|
77
|
-
}, async ({ include_sessions }) => {
|
|
78
|
-
const queryString = include_sessions ? "?include_sessions=true" : "";
|
|
79
|
-
const res = await apiFetch(`/api/buildpartner/context${queryString}`);
|
|
80
|
-
if (!res)
|
|
81
|
-
return textResponse(JSON.stringify({ error: "Could not reach BuildPartner. Check your internet connection and try again." }));
|
|
82
|
-
if (res.status === 403)
|
|
83
|
-
return handleSubscriptionBlock(res);
|
|
84
|
-
if (!res.ok)
|
|
85
|
-
return textResponse(JSON.stringify({ error: friendlyError(res.status) }));
|
|
86
|
-
return textResponse(JSON.stringify(await res.json(), null, 2));
|
|
87
|
-
});
|
|
88
|
-
server.tool("get_expert_knowledge", "Fetch expert frameworks with personal context. Preferred: pass category to get all frameworks in that category. Categories: sales, marketing, content, product, business-strategy, ai-automation, health, persuasion, copywriting, mindset. Also supports query (keyword search) or topic (specific framework by key).", {
|
|
69
|
+
const server = new McpServer({ name: "buildpartner", version: getCliVersion() });
|
|
70
|
+
server.tool("get_expert_knowledge", "Fetch expert frameworks. Preferred: pass category to get all frameworks in that category. Categories: sales, marketing, content, product, business-strategy, ai-automation, health, persuasion, copywriting, mindset. Also supports query (keyword search) or topic (specific framework by key).", {
|
|
89
71
|
category: z.string().optional().describe("Category or comma-separated categories to fetch all frameworks for (e.g. 'sales', 'product,marketing')"),
|
|
90
72
|
query: z.string().optional().describe("Search query to find relevant frameworks"),
|
|
91
73
|
topic: z.string().optional().describe("Topic key or comma-separated keys to fetch full content (e.g. 'hormozi-offers', 'brunson-funnels,miller-sales-funnel')"),
|
|
92
74
|
}, async ({ category, query, topic }) => {
|
|
75
|
+
const authErr = requireLocalAuth();
|
|
76
|
+
if (authErr)
|
|
77
|
+
return authErr;
|
|
93
78
|
const params = new URLSearchParams();
|
|
94
79
|
if (category)
|
|
95
80
|
params.set("category", category);
|
|
@@ -101,58 +86,18 @@ export function createServer() {
|
|
|
101
86
|
const path = queryString ? `/api/buildpartner/expert-knowledge?${queryString}` : "/api/buildpartner/expert-knowledge";
|
|
102
87
|
const res = await apiFetch(path);
|
|
103
88
|
if (!res)
|
|
104
|
-
return textResponse(JSON.stringify({ error: "Could not reach BuildPartner. Check your internet connection
|
|
89
|
+
return textResponse(JSON.stringify({ error: "Could not reach BuildPartner. Check your internet connection." }));
|
|
105
90
|
if (res.status === 403)
|
|
106
91
|
return handleSubscriptionBlock(res);
|
|
107
92
|
if (!res.ok)
|
|
108
93
|
return textResponse(JSON.stringify({ error: friendlyError(res.status) }));
|
|
109
94
|
return textResponse(JSON.stringify(await res.json(), null, 2));
|
|
110
95
|
});
|
|
111
|
-
server.tool("save_profile", "Save your AI profile. Updates multiple sections at once: writing_style, preferences, tech_identity, work_patterns, personality. Used after interviews or profile building.", {
|
|
112
|
-
updates: z.preprocess(jsonCoerce, z.record(z.string(), z.any())).describe("Object with section names as keys and section data as values."),
|
|
113
|
-
signals: z.preprocess(jsonCoerce, z.array(z.string()).optional()).describe("Summary of what was learned, stored as raw signals."),
|
|
114
|
-
}, async ({ updates, signals }) => {
|
|
115
|
-
const payload = { ...updates };
|
|
116
|
-
if (signals)
|
|
117
|
-
payload.raw_signals = signals;
|
|
118
|
-
const res = await apiFetch("/api/buildpartner/profile", { method: "POST", body: JSON.stringify(payload) });
|
|
119
|
-
if (!res)
|
|
120
|
-
return textResponse(JSON.stringify({ error: "Could not reach BuildPartner. Check your internet connection and try again." }));
|
|
121
|
-
if (res.status === 403)
|
|
122
|
-
return handleSubscriptionBlock(res);
|
|
123
|
-
if (!res.ok)
|
|
124
|
-
return textResponse(JSON.stringify({ error: friendlyError(res.status) }));
|
|
125
|
-
return textResponse(JSON.stringify({ saved: true, sections: Object.keys(updates) }));
|
|
126
|
-
});
|
|
127
|
-
server.tool("get_quest_progress", "Check your quest progress: which quests are completed, active, or locked.", {}, async () => {
|
|
128
|
-
const result = await apiGet("/api/buildpartner/quests");
|
|
129
|
-
if (!result)
|
|
130
|
-
return textResponse(JSON.stringify({ error: "Could not fetch quest progress." }));
|
|
131
|
-
return textResponse(JSON.stringify(result, null, 2));
|
|
132
|
-
});
|
|
133
|
-
server.tool("check_status", "Internal bookkeeping. Every skill should call this as its final step. Do NOT show the raw result to the user. Only mention something if the response contains quest_completed (celebrate it and push the next quest command), a suggestion (casually mention it), or reminders (show them). If the response is just {status: ok}, say nothing about it. If limit_reached is true, automatically open the user's dashboard so they can upgrade: read ~/.buildpartner/auth.json, extract the token, and run `open \"https://buildpartner.ai/dashboard?upgrade=true&t=TOKEN\"` (replacing TOKEN with the actual token). Then tell them their dashboard is open and they can upgrade there.", {
|
|
134
|
-
skill_name: z.string().describe("The skill that just ran (e.g., 'bp-claude-coach', 'bp-interview-me')"),
|
|
135
|
-
session_context: z.string().optional().describe("Brief description of what the session involved"),
|
|
136
|
-
}, async ({ skill_name, session_context }) => {
|
|
137
|
-
const cli_version = getCliVersion();
|
|
138
|
-
const result = await apiPost("/api/buildpartner/check-status", { skill_name, session_context, cli_version });
|
|
139
|
-
if (!result)
|
|
140
|
-
return textResponse("ok");
|
|
141
|
-
// Only return detail when there's something worth showing
|
|
142
|
-
const hasContent = result.quest_completed || result.suggestion || result.limit_reached
|
|
143
|
-
|| (Array.isArray(result.reminders) && result.reminders.length > 0);
|
|
144
|
-
if (!hasContent)
|
|
145
|
-
return textResponse("ok");
|
|
146
|
-
return textResponse(JSON.stringify(result, null, 2));
|
|
147
|
-
});
|
|
148
96
|
return server;
|
|
149
97
|
}
|
|
150
98
|
export async function startServer() {
|
|
151
99
|
const server = createServer();
|
|
152
100
|
const transport = new StdioServerTransport();
|
|
153
|
-
// Background tasks on startup (non-blocking, fire-and-forget)
|
|
154
|
-
import("../installer/skill-sync.js").then(({ syncSkills }) => syncSkills()).catch(() => { });
|
|
155
|
-
import("./catch-up.js").then(({ catchUpSessions }) => catchUpSessions()).catch(() => { });
|
|
156
101
|
await server.connect(transport);
|
|
157
102
|
}
|
|
158
103
|
//# sourceMappingURL=server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,7 @@ export interface AuthData {
|
|
|
9
9
|
token: string;
|
|
10
10
|
profile_url: string;
|
|
11
11
|
created_at: string;
|
|
12
|
-
|
|
13
|
-
last_session_sync?: string;
|
|
12
|
+
api_base?: string;
|
|
14
13
|
}
|
|
15
14
|
/** Ensure ~/.buildpartner/ directory exists */
|
|
16
15
|
export declare function ensureDir(): void;
|
|
@@ -22,3 +21,15 @@ export declare function readAuth(): AuthData | null;
|
|
|
22
21
|
export declare function writeAuth(auth: AuthData): void;
|
|
23
22
|
/** Append an error to the local error log for diagnostics. */
|
|
24
23
|
export declare function logError(error: unknown): void;
|
|
24
|
+
export interface AccessState {
|
|
25
|
+
has_access: boolean;
|
|
26
|
+
remaining: number;
|
|
27
|
+
plan: "free" | "pro";
|
|
28
|
+
checked_at: string;
|
|
29
|
+
}
|
|
30
|
+
/** Read cached access state from disk. Returns null on failure. */
|
|
31
|
+
export declare function readAccess(): AccessState | null;
|
|
32
|
+
/** Write access state to disk. */
|
|
33
|
+
export declare function writeAccess(access: AccessState): void;
|
|
34
|
+
/** Append one event as a JSON line to the spool file. */
|
|
35
|
+
export declare function appendSpool(event: Record<string, unknown>): void;
|
|
@@ -45,4 +45,25 @@ export function logError(error) {
|
|
|
45
45
|
// If we can't even log errors, silently fail
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
const ACCESS_FILE = join(BUILDPARTNER_DIR, "access.json");
|
|
49
|
+
const SPOOL_FILE = join(BUILDPARTNER_DIR, "spool.ndjson");
|
|
50
|
+
/** Read cached access state from disk. Returns null on failure. */
|
|
51
|
+
export function readAccess() {
|
|
52
|
+
try {
|
|
53
|
+
return JSON.parse(readFileSync(ACCESS_FILE, "utf-8"));
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** Write access state to disk. */
|
|
60
|
+
export function writeAccess(access) {
|
|
61
|
+
ensureDir();
|
|
62
|
+
writeFileSync(ACCESS_FILE, JSON.stringify(access, null, 2) + "\n");
|
|
63
|
+
}
|
|
64
|
+
/** Append one event as a JSON line to the spool file. */
|
|
65
|
+
export function appendSpool(event) {
|
|
66
|
+
ensureDir();
|
|
67
|
+
appendFileSync(SPOOL_FILE, JSON.stringify(event) + "\n");
|
|
68
|
+
}
|
|
48
69
|
//# sourceMappingURL=local-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../../src/store/local-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;AACtD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../../src/store/local-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;AACtD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAWvD,+CAA+C;AAC/C,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,kBAAkB;IAChC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAa,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,SAAS,EAAE,CAAC;IACZ,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,CAAC;QACH,SAAS,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtF,cAAc,CAAC,SAAS,EAAE,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAS1D,mEAAmE;AACnE,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAgB,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,SAAS,EAAE,CAAC;IACZ,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,WAAW,CAAC,KAA8B;IACxD,SAAS,EAAE,CAAC;IACZ,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "buildpartner",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0-dev.20260430072343",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Your AI build partner. Expert guidance inside Claude Code.",
|
|
6
6
|
"bin": {
|
|
@@ -11,19 +11,15 @@
|
|
|
11
11
|
"./constants": "./dist/src/constants.js"
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
|
-
"dist"
|
|
15
|
-
"skills"
|
|
14
|
+
"dist"
|
|
16
15
|
],
|
|
17
16
|
"scripts": {
|
|
18
17
|
"build": "tsc",
|
|
19
18
|
"dev": "tsx bin/cli.ts"
|
|
20
19
|
},
|
|
21
20
|
"dependencies": {
|
|
22
|
-
"@inquirer/prompts": "^7",
|
|
23
21
|
"@modelcontextprotocol/sdk": "latest",
|
|
24
22
|
"chalk": "^5",
|
|
25
|
-
"inquirer": "^12",
|
|
26
|
-
"ora": "^8",
|
|
27
23
|
"uuid": "^11"
|
|
28
24
|
},
|
|
29
25
|
"devDependencies": {
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ParsedSession } from "../readers/session-reader.js";
|
|
2
|
-
export type ActivityType = "code" | "content" | "research" | "automation" | "design" | "ops" | "data" | "debug";
|
|
3
|
-
export interface ClassificationResult {
|
|
4
|
-
activityType: ActivityType;
|
|
5
|
-
scores: Record<ActivityType, number>;
|
|
6
|
-
confidence: number;
|
|
7
|
-
signals: string[];
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Classify a parsed session into an activity type.
|
|
11
|
-
*/
|
|
12
|
-
export declare function classifySession(session: ParsedSession): ClassificationResult;
|