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.
Files changed (105) hide show
  1. package/dist/bin/cli.js +11 -22
  2. package/dist/bin/cli.js.map +1 -1
  3. package/dist/src/api-client.d.ts +1 -1
  4. package/dist/src/api-client.js +9 -1
  5. package/dist/src/api-client.js.map +1 -1
  6. package/dist/src/commands/reset.js +1 -1
  7. package/dist/src/commands/reset.js.map +1 -1
  8. package/dist/src/mcp/server.d.ts +1 -5
  9. package/dist/src/mcp/server.js +20 -75
  10. package/dist/src/mcp/server.js.map +1 -1
  11. package/dist/src/store/local-store.d.ts +13 -2
  12. package/dist/src/store/local-store.js +21 -0
  13. package/dist/src/store/local-store.js.map +1 -1
  14. package/package.json +2 -6
  15. package/dist/src/classifiers/activity-classifier.d.ts +0 -12
  16. package/dist/src/classifiers/activity-classifier.js +0 -300
  17. package/dist/src/classifiers/activity-classifier.js.map +0 -1
  18. package/dist/src/classifiers/path-detector.d.ts +0 -33
  19. package/dist/src/classifiers/path-detector.js +0 -98
  20. package/dist/src/classifiers/path-detector.js.map +0 -1
  21. package/dist/src/commands/log-session.d.ts +0 -7
  22. package/dist/src/commands/log-session.js +0 -23
  23. package/dist/src/commands/log-session.js.map +0 -1
  24. package/dist/src/commands/sync.d.ts +0 -6
  25. package/dist/src/commands/sync.js +0 -36
  26. package/dist/src/commands/sync.js.map +0 -1
  27. package/dist/src/installer/hook-installer.d.ts +0 -19
  28. package/dist/src/installer/hook-installer.js +0 -114
  29. package/dist/src/installer/hook-installer.js.map +0 -1
  30. package/dist/src/installer/mcp-installer.d.ts +0 -9
  31. package/dist/src/installer/mcp-installer.js +0 -80
  32. package/dist/src/installer/mcp-installer.js.map +0 -1
  33. package/dist/src/installer/skill-installer.d.ts +0 -5
  34. package/dist/src/installer/skill-installer.js +0 -55
  35. package/dist/src/installer/skill-installer.js.map +0 -1
  36. package/dist/src/installer/skill-sync.d.ts +0 -10
  37. package/dist/src/installer/skill-sync.js +0 -80
  38. package/dist/src/installer/skill-sync.js.map +0 -1
  39. package/dist/src/mcp/catch-up.d.ts +0 -6
  40. package/dist/src/mcp/catch-up.js +0 -28
  41. package/dist/src/mcp/catch-up.js.map +0 -1
  42. package/dist/src/mcp/tools/ai-profile.d.ts +0 -88
  43. package/dist/src/mcp/tools/ai-profile.js +0 -123
  44. package/dist/src/mcp/tools/ai-profile.js.map +0 -1
  45. package/dist/src/mcp/tools/classify-session.d.ts +0 -31
  46. package/dist/src/mcp/tools/classify-session.js +0 -34
  47. package/dist/src/mcp/tools/classify-session.js.map +0 -1
  48. package/dist/src/mcp/tools/get-knowledge.d.ts +0 -25
  49. package/dist/src/mcp/tools/get-knowledge.js +0 -31
  50. package/dist/src/mcp/tools/get-knowledge.js.map +0 -1
  51. package/dist/src/mcp/tools/get-profile.d.ts +0 -1
  52. package/dist/src/mcp/tools/get-profile.js +0 -14
  53. package/dist/src/mcp/tools/get-profile.js.map +0 -1
  54. package/dist/src/mcp/tools/get-stats.d.ts +0 -32
  55. package/dist/src/mcp/tools/get-stats.js +0 -45
  56. package/dist/src/mcp/tools/get-stats.js.map +0 -1
  57. package/dist/src/mcp/tools/get-suggestions.d.ts +0 -7
  58. package/dist/src/mcp/tools/get-suggestions.js +0 -65
  59. package/dist/src/mcp/tools/get-suggestions.js.map +0 -1
  60. package/dist/src/mcp/tools/get-training.d.ts +0 -48
  61. package/dist/src/mcp/tools/get-training.js +0 -102
  62. package/dist/src/mcp/tools/get-training.js.map +0 -1
  63. package/dist/src/mcp/tools/log-highlight.d.ts +0 -24
  64. package/dist/src/mcp/tools/log-highlight.js +0 -25
  65. package/dist/src/mcp/tools/log-highlight.js.map +0 -1
  66. package/dist/src/mcp/tools/quest.d.ts +0 -4
  67. package/dist/src/mcp/tools/quest.js +0 -8
  68. package/dist/src/mcp/tools/quest.js.map +0 -1
  69. package/dist/src/mcp/tools/web-search.d.ts +0 -15
  70. package/dist/src/mcp/tools/web-search.js +0 -17
  71. package/dist/src/mcp/tools/web-search.js.map +0 -1
  72. package/dist/src/readers/extract-signals.d.ts +0 -23
  73. package/dist/src/readers/extract-signals.js +0 -50
  74. package/dist/src/readers/extract-signals.js.map +0 -1
  75. package/dist/src/readers/history-reader.d.ts +0 -28
  76. package/dist/src/readers/history-reader.js +0 -83
  77. package/dist/src/readers/history-reader.js.map +0 -1
  78. package/dist/src/readers/session-reader.d.ts +0 -75
  79. package/dist/src/readers/session-reader.js +0 -191
  80. package/dist/src/readers/session-reader.js.map +0 -1
  81. package/dist/src/readers/session-sync.d.ts +0 -24
  82. package/dist/src/readers/session-sync.js +0 -114
  83. package/dist/src/readers/session-sync.js.map +0 -1
  84. package/dist/src/readers/stats-reader.d.ts +0 -38
  85. package/dist/src/readers/stats-reader.js +0 -125
  86. package/dist/src/readers/stats-reader.js.map +0 -1
  87. package/skills/bp-claude-coach/SKILL.md +0 -314
  88. package/skills/bp-enhance-claude-md/SKILL.md +0 -62
  89. package/skills/bp-expert-advice/SKILL.md +0 -62
  90. package/skills/bp-flex-socials/SKILL.md +0 -54
  91. package/skills/bp-full-audit/SKILL.md +0 -145
  92. package/skills/bp-generate-personalized-training-data/SKILL.md +0 -145
  93. package/skills/bp-improve-skill/SKILL.md +0 -115
  94. package/skills/bp-interview/SKILL.md +0 -64
  95. package/skills/bp-interview-me/SKILL.md +0 -120
  96. package/skills/bp-life-story/SKILL.md +0 -68
  97. package/skills/bp-log-experience/SKILL.md +0 -72
  98. package/skills/bp-open-dashboard/SKILL.md +0 -31
  99. package/skills/bp-quest-status/SKILL.md +0 -52
  100. package/skills/bp-recap-week/SKILL.md +0 -53
  101. package/skills/bp-setup-coach/SKILL.md +0 -64
  102. package/skills/bp-shorts-ideation/SKILL.md +0 -108
  103. package/skills/bp-shorts-script/SKILL.md +0 -126
  104. package/skills/bp-youtube-ideation/SKILL.md +0 -99
  105. package/skills/bp-youtube-script/SKILL.md +0 -149
@@ -1,31 +0,0 @@
1
- import { z } from "zod";
2
- export declare const classifySessionSchema: {
3
- session_path: z.ZodString;
4
- };
5
- export declare function classifySessionTool({ session_path }: {
6
- session_path: string;
7
- }): Promise<{
8
- error: string;
9
- activity_type?: undefined;
10
- confidence?: undefined;
11
- signals?: undefined;
12
- scores?: undefined;
13
- tokens?: undefined;
14
- duration_minutes?: undefined;
15
- prompts?: undefined;
16
- summary?: undefined;
17
- files_touched?: undefined;
18
- project?: undefined;
19
- } | {
20
- activity_type: import("../../classifiers/activity-classifier.js").ActivityType;
21
- confidence: number;
22
- signals: string[];
23
- scores: Record<import("../../classifiers/activity-classifier.js").ActivityType, number>;
24
- tokens: number;
25
- duration_minutes: number;
26
- prompts: number;
27
- summary: string | null;
28
- files_touched: string[];
29
- project: string;
30
- error?: undefined;
31
- }>;
@@ -1,34 +0,0 @@
1
- import { z } from "zod";
2
- import { parseSession } from "../../readers/session-reader.js";
3
- import { classifySession } from "../../classifiers/activity-classifier.js";
4
- export const classifySessionSchema = {
5
- session_path: z.string().describe("Absolute path to a session JSONL file"),
6
- };
7
- export async function classifySessionTool({ session_path }) {
8
- const session = parseSession(session_path);
9
- if (!session) {
10
- return { error: "Could not parse session file" };
11
- }
12
- const result = classifySession(session);
13
- // Compute duration in minutes
14
- let durationMinutes = 0;
15
- if (session.startTime && session.endTime) {
16
- const ms = new Date(session.endTime).getTime() - new Date(session.startTime).getTime();
17
- durationMinutes = Math.round(ms / 60000);
18
- }
19
- // Estimate tokens from tool call count (rough heuristic: ~1500 tokens per tool call + prompts)
20
- const estimatedTokens = session.toolCalls.length * 1500 + session.userPromptCount * 2000;
21
- return {
22
- activity_type: result.activityType,
23
- confidence: Math.round(result.confidence * 100),
24
- signals: result.signals,
25
- scores: result.scores,
26
- tokens: estimatedTokens,
27
- duration_minutes: durationMinutes,
28
- prompts: session.userPromptCount,
29
- summary: session.summary,
30
- files_touched: session.filesTouched,
31
- project: session.projectPath,
32
- };
33
- }
34
- //# sourceMappingURL=classify-session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"classify-session.js","sourceRoot":"","sources":["../../../../src/mcp/tools/classify-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CAC3E,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAAE,YAAY,EAA4B;IAClF,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAExC,8BAA8B;IAC9B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACvF,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,+FAA+F;IAC/F,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAEzF,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;QAC/C,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,eAAe;QACvB,gBAAgB,EAAE,eAAe;QACjC,OAAO,EAAE,OAAO,CAAC,eAAe;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,OAAO,CAAC,YAAY;QACnC,OAAO,EAAE,OAAO,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC"}
@@ -1,25 +0,0 @@
1
- import { z } from "zod";
2
- export declare const getKnowledgeSchema: {
3
- topic: z.ZodOptional<z.ZodString>;
4
- query: z.ZodOptional<z.ZodString>;
5
- };
6
- export declare function getKnowledge({ topic, query }: {
7
- topic?: string;
8
- query?: string;
9
- }): Promise<{
10
- topics: {
11
- key: string;
12
- title: string;
13
- }[];
14
- } | {
15
- title: string;
16
- content: string;
17
- } | {
18
- results: {
19
- key: string;
20
- title: string;
21
- excerpt: string;
22
- }[];
23
- } | {
24
- error: string;
25
- }>;
@@ -1,31 +0,0 @@
1
- import { z } from "zod";
2
- import { apiGet } from "../../api-client.js";
3
- export const getKnowledgeSchema = {
4
- topic: z.string().optional().describe("Specific topic key (e.g. 'augment-vs-automate', 'mcp-architecture'). Omit to list all topics."),
5
- query: z.string().optional().describe("Search query to find relevant knowledge across all topics."),
6
- };
7
- export async function getKnowledge({ topic, query }) {
8
- // List topics
9
- if (!topic && !query) {
10
- const data = await apiGet("/api/buildpartner/knowledge");
11
- if (data)
12
- return data;
13
- return { error: "Could not fetch knowledge base. Check your connection." };
14
- }
15
- // Get specific topic
16
- if (topic) {
17
- const data = await apiGet(`/api/buildpartner/knowledge?topic=${encodeURIComponent(topic)}`);
18
- if (data)
19
- return data;
20
- return { error: `Topic '${topic}' not found.` };
21
- }
22
- // Search
23
- if (query) {
24
- const data = await apiGet(`/api/buildpartner/knowledge?q=${encodeURIComponent(query)}`);
25
- if (data)
26
- return data;
27
- return { error: "Search failed. Check your connection." };
28
- }
29
- return { error: "Provide a topic or query." };
30
- }
31
- //# sourceMappingURL=get-knowledge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-knowledge.js","sourceRoot":"","sources":["../../../../src/mcp/tools/get-knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+FAA+F,CAAC;IACtI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;CACpG,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAsC;IACrF,cAAc;IACd,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,MAAM,CAA+C,6BAA6B,CAAC,CAAC;QACvG,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;IAC7E,CAAC;IAED,qBAAqB;IACrB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,MAAM,MAAM,CAAqC,qCAAqC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChI,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,UAAU,KAAK,cAAc,EAAE,CAAC;IAClD,CAAC;IAED,SAAS;IACT,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,MAAM,MAAM,CAAiE,iCAAiC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxJ,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;AAChD,CAAC"}
@@ -1 +0,0 @@
1
- export declare function getProfile(): Promise<{}>;
@@ -1,14 +0,0 @@
1
- import { readAuth } from "../../store/local-store.js";
2
- import { apiGet } from "../../api-client.js";
3
- export async function getProfile() {
4
- const auth = readAuth();
5
- if (!auth?.username) {
6
- return { error: "Not set up. Run: npx buildpartner setup" };
7
- }
8
- const data = await apiGet(`/api/buildpartner/dashboard?username=${auth.username}`);
9
- if (!data) {
10
- return { error: "Could not fetch profile. Check your connection." };
11
- }
12
- return data;
13
- }
14
- //# sourceMappingURL=get-profile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-profile.js","sourceRoot":"","sources":["../../../../src/mcp/tools/get-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,wCAAwC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,32 +0,0 @@
1
- import { z } from "zod";
2
- export declare const getStatsSchema: {
3
- period: z.ZodEnum<{
4
- week: "week";
5
- month: "month";
6
- all: "all";
7
- }>;
8
- };
9
- export declare function getStats({ period }: {
10
- period: "week" | "month" | "all";
11
- }): Promise<{
12
- error: string;
13
- period?: undefined;
14
- sessionCount?: undefined;
15
- totalTokens?: undefined;
16
- distribution?: undefined;
17
- streak?: undefined;
18
- allTime?: undefined;
19
- } | {
20
- period: "week" | "month" | "all";
21
- sessionCount: number;
22
- totalTokens: number;
23
- distribution: Record<string, number>;
24
- streak: {
25
- current: number;
26
- };
27
- allTime: {
28
- totalSessions: number;
29
- totalTokens: number;
30
- };
31
- error?: undefined;
32
- }>;
@@ -1,45 +0,0 @@
1
- import { z } from "zod";
2
- import { readAuth } from "../../store/local-store.js";
3
- import { apiGet } from "../../api-client.js";
4
- export const getStatsSchema = {
5
- period: z.enum(["week", "month", "all"]).describe("Time period for stats"),
6
- };
7
- export async function getStats({ period }) {
8
- const auth = readAuth();
9
- if (!auth?.username) {
10
- return { error: "Not set up. Run: npx buildpartner setup" };
11
- }
12
- const data = await apiGet(`/api/buildpartner/dashboard?username=${auth.username}`);
13
- if (!data) {
14
- return { error: "Could not fetch stats. Check your connection." };
15
- }
16
- const now = new Date();
17
- let sessions = data.sessions;
18
- if (period === "week") {
19
- const weekAgo = new Date(now);
20
- weekAgo.setDate(weekAgo.getDate() - 7);
21
- sessions = sessions.filter((s) => new Date(s.timestamp) >= weekAgo);
22
- }
23
- else if (period === "month") {
24
- const monthAgo = new Date(now);
25
- monthAgo.setMonth(monthAgo.getMonth() - 1);
26
- sessions = sessions.filter((s) => new Date(s.timestamp) >= monthAgo);
27
- }
28
- const totalTokens = sessions.reduce((sum, s) => sum + (s.tokens || 0), 0);
29
- const distribution = {};
30
- for (const s of sessions) {
31
- distribution[s.activity_type] = (distribution[s.activity_type] || 0) + 1;
32
- }
33
- return {
34
- period,
35
- sessionCount: sessions.length,
36
- totalTokens,
37
- distribution,
38
- streak: { current: data.stats.current_streak },
39
- allTime: {
40
- totalSessions: data.stats.total_sessions,
41
- totalTokens: data.stats.total_tokens,
42
- },
43
- };
44
- }
45
- //# sourceMappingURL=get-stats.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-stats.js","sourceRoot":"","sources":["../../../../src/mcp/tools/get-stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CAC3E,CAAC;AAUF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAwC;IAC7E,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAoB,wCAAwC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtG,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE7B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACvC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO;QACL,MAAM;QACN,YAAY,EAAE,QAAQ,CAAC,MAAM;QAC7B,WAAW;QACX,YAAY;QACZ,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;QAC9C,OAAO,EAAE;YACP,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YACxC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;SACrC;KACF,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- interface Suggestion {
2
- message: string;
3
- category: string;
4
- video?: string;
5
- }
6
- export declare function getSuggestions(): Promise<Suggestion[]>;
7
- export {};
@@ -1,65 +0,0 @@
1
- import { readAuth } from "../../store/local-store.js";
2
- import { apiGet } from "../../api-client.js";
3
- export async function getSuggestions() {
4
- const auth = readAuth();
5
- if (!auth?.username) {
6
- return [{ message: "Run npx buildpartner setup to get started.", category: "getting-started" }];
7
- }
8
- const data = await apiGet(`/api/buildpartner/dashboard?username=${auth.username}`);
9
- if (!data) {
10
- return [{ message: "Could not fetch data. Check your connection.", category: "error" }];
11
- }
12
- return generateSuggestions(data);
13
- }
14
- function generateSuggestions(data) {
15
- const suggestions = [];
16
- const sessions = data.sessions;
17
- const total = data.stats.total_sessions || 1;
18
- if (sessions.length < 5) {
19
- return [{ message: "Keep going! Log a few more sessions and your AI trainer will have personalized tips for you.", category: "getting-started" }];
20
- }
21
- const twoWeeksAgo = new Date();
22
- twoWeeksAgo.setDate(twoWeeksAgo.getDate() - 14);
23
- const recent = sessions.filter((s) => new Date(s.timestamp) >= twoWeeksAgo);
24
- const recentTotal = recent.length || 1;
25
- const recentDist = {};
26
- for (const s of recent)
27
- recentDist[s.activity_type] = (recentDist[s.activity_type] || 0) + 1;
28
- for (const [type, count] of Object.entries(recentDist)) {
29
- if (count / recentTotal > 0.7 && recent.length >= 5) {
30
- const adjacent = getAdjacentType(type);
31
- suggestions.push({
32
- message: `You're deep in ${capitalize(type)}. Try ${capitalize(adjacent)} to expand your range.`,
33
- category: "activity-balance",
34
- });
35
- break;
36
- }
37
- }
38
- if (data.stats.total_sessions >= 10 && data.stats.total_highlights === 0) {
39
- suggestions.push({
40
- message: `You've got ${data.stats.total_sessions} sessions but no highlights. Promote your best work with /bp-log-experience.`,
41
- category: "progression",
42
- });
43
- }
44
- const tools = data.workspace.tools;
45
- const readCount = tools["Read"] || 0;
46
- const grepCount = tools["Grep"] || 0;
47
- if (readCount > 100 && grepCount < readCount * 0.1) {
48
- suggestions.push({
49
- message: `You've used Read ${readCount} times but Grep only ${grepCount} times. Try Grep to search code instead of reading files one by one.`,
50
- category: "tool-tip",
51
- });
52
- }
53
- return suggestions.slice(0, 3);
54
- }
55
- function capitalize(s) {
56
- return s.charAt(0).toUpperCase() + s.slice(1);
57
- }
58
- function getAdjacentType(type) {
59
- const adjacency = {
60
- code: "automation", content: "research", research: "code", automation: "data",
61
- design: "code", ops: "automation", data: "research", debug: "code",
62
- };
63
- return adjacency[type] || "code";
64
- }
65
- //# sourceMappingURL=get-suggestions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-suggestions.js","sourceRoot":"","sources":["../../../../src/mcp/tools/get-suggestions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAkB7C,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAoB,wCAAwC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtG,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAuB;IAClD,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC;IAE7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,EAAE,OAAO,EAAE,8FAA8F,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACpJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;IAC/B,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAEvC,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAE7F,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,GAAG,WAAW,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAoB,CAAC,CAAC;YACvD,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,kBAAkB,UAAU,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,QAAQ,CAAC,wBAAwB;gBAChG,QAAQ,EAAE,kBAAkB;aAC7B,CAAC,CAAC;YACH,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;QACzE,WAAW,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,cAAc,IAAI,CAAC,KAAK,CAAC,cAAc,8EAA8E;YAC9H,QAAQ,EAAE,aAAa;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACnC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,SAAS,GAAG,GAAG,IAAI,SAAS,GAAG,SAAS,GAAG,GAAG,EAAE,CAAC;QACnD,WAAW,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,oBAAoB,SAAS,wBAAwB,SAAS,sEAAsE;YAC7I,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,IAAkB;IACzC,MAAM,SAAS,GAAuC;QACpD,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;QAC7E,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;KACnE,CAAC;IACF,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;AACnC,CAAC"}
@@ -1,48 +0,0 @@
1
- import { z } from "zod";
2
- export declare const getTrainingSchema: {
3
- topic: z.ZodString;
4
- };
5
- export declare const listTrainingSchema: {
6
- expert: z.ZodOptional<z.ZodString>;
7
- category: z.ZodOptional<z.ZodString>;
8
- };
9
- interface TrainingResponse {
10
- topic: string;
11
- title: string;
12
- expert?: string;
13
- category?: string;
14
- version: string;
15
- tier_required: string;
16
- user_tier: string;
17
- content: string;
18
- content_length: number;
19
- full_content_length?: number;
20
- upgrade_url?: string;
21
- last_updated: string;
22
- }
23
- interface TrainingListResponse {
24
- user_tier: string;
25
- topics: {
26
- id: string;
27
- title: string;
28
- expert: string;
29
- category: string;
30
- description: string;
31
- tier: string;
32
- version: string;
33
- locked: boolean;
34
- }[];
35
- upgrade_url: string;
36
- }
37
- export declare function getTraining({ topic }: {
38
- topic: string;
39
- }): Promise<TrainingResponse | {
40
- error: string;
41
- }>;
42
- export declare function listTraining({ expert, category }?: {
43
- expert?: string;
44
- category?: string;
45
- }): Promise<TrainingListResponse | {
46
- error: string;
47
- }>;
48
- export {};
@@ -1,102 +0,0 @@
1
- import { z } from "zod";
2
- import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
3
- import { join } from "path";
4
- import { homedir } from "os";
5
- import { apiFetch } from "../../api-client.js";
6
- const CACHE_DIR = join(homedir(), ".buildpartner", "cache", "training");
7
- const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
8
- export const getTrainingSchema = {
9
- topic: z.string().describe("The training data topic slug to fetch (e.g., 'sales-value-equation', 'content-hooks')"),
10
- };
11
- export const listTrainingSchema = {
12
- expert: z.string().optional().describe("Filter by expert (e.g., 'gary-halbert', 'austin-marchese'). Omit to list all."),
13
- category: z.string().optional().describe("Filter by category (e.g., 'copywriting', 'marketing', 'sales', 'ai-automation'). Omit to list all."),
14
- };
15
- export async function getTraining({ topic }) {
16
- // Check cache first
17
- const cached = readCache(topic);
18
- if (cached) {
19
- return {
20
- topic: cached.topic,
21
- title: cached.title,
22
- version: cached.version,
23
- tier_required: cached.tier,
24
- user_tier: cached.tier,
25
- content: cached.content,
26
- content_length: cached.content.length,
27
- last_updated: cached.fetched_at,
28
- };
29
- }
30
- // Fetch from API
31
- const res = await apiFetch(`/api/training/${encodeURIComponent(topic)}`);
32
- if (!res || !res.ok) {
33
- // Try cache even if expired
34
- const staleCache = readCache(topic, true);
35
- if (staleCache) {
36
- return {
37
- topic: staleCache.topic,
38
- title: staleCache.title,
39
- version: staleCache.version,
40
- tier_required: staleCache.tier,
41
- user_tier: staleCache.tier,
42
- content: staleCache.content + "\n\n[Cached version - could not reach API]",
43
- content_length: staleCache.content.length,
44
- last_updated: staleCache.fetched_at,
45
- };
46
- }
47
- return { error: `Could not fetch training data for '${topic}'. Check your connection.` };
48
- }
49
- const data = (await res.json());
50
- // Cache the result
51
- writeCache(topic, {
52
- topic: data.topic,
53
- version: data.version,
54
- fetched_at: new Date().toISOString(),
55
- content: data.content,
56
- tier: data.tier_required,
57
- title: data.title,
58
- });
59
- return data;
60
- }
61
- export async function listTraining({ expert, category } = {}) {
62
- const params = new URLSearchParams();
63
- if (expert)
64
- params.set("expert", expert);
65
- if (category)
66
- params.set("category", category);
67
- const qs = params.toString();
68
- const path = qs ? `/api/training?${qs}` : "/api/training";
69
- const res = await apiFetch(path);
70
- if (!res || !res.ok) {
71
- return { error: "Could not fetch training topics. Check your connection." };
72
- }
73
- return (await res.json());
74
- }
75
- // --- Cache ---
76
- function readCache(topic, ignoreExpiry = false) {
77
- try {
78
- const cachePath = join(CACHE_DIR, `${topic}.json`);
79
- if (!existsSync(cachePath))
80
- return null;
81
- const cached = JSON.parse(readFileSync(cachePath, "utf-8"));
82
- if (!ignoreExpiry) {
83
- const age = Date.now() - new Date(cached.fetched_at).getTime();
84
- if (age > CACHE_TTL_MS)
85
- return null;
86
- }
87
- return cached;
88
- }
89
- catch {
90
- return null;
91
- }
92
- }
93
- function writeCache(topic, data) {
94
- try {
95
- mkdirSync(CACHE_DIR, { recursive: true });
96
- writeFileSync(join(CACHE_DIR, `${topic}.json`), JSON.stringify(data, null, 2));
97
- }
98
- catch {
99
- // Cache write failures are non-fatal
100
- }
101
- }
102
- //# sourceMappingURL=get-training.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-training.js","sourceRoot":"","sources":["../../../../src/mcp/tools/get-training.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { z } from "zod";
2
- export declare const logHighlightSchema: {
3
- title: z.ZodString;
4
- description: z.ZodString;
5
- activity_type: z.ZodEnum<{
6
- content: "content";
7
- code: "code";
8
- research: "research";
9
- automation: "automation";
10
- design: "design";
11
- ops: "ops";
12
- data: "data";
13
- debug: "debug";
14
- }>;
15
- tech_stack: z.ZodArray<z.ZodString>;
16
- session_id: z.ZodOptional<z.ZodString>;
17
- };
18
- export declare function logHighlight({ title, description, activity_type, tech_stack, session_id, }: {
19
- title: string;
20
- description: string;
21
- activity_type: string;
22
- tech_stack: string[];
23
- session_id?: string;
24
- }): Promise<{}>;
@@ -1,25 +0,0 @@
1
- import { z } from "zod";
2
- import { apiPost } from "../../api-client.js";
3
- export const logHighlightSchema = {
4
- title: z.string().describe("Title for the highlight build"),
5
- description: z.string().describe("Description of what was built"),
6
- activity_type: z
7
- .enum(["code", "content", "research", "automation", "design", "ops", "data", "debug"])
8
- .describe("Activity type"),
9
- tech_stack: z.array(z.string()).describe("Technologies used"),
10
- session_id: z.string().optional().describe("Associated session ID"),
11
- };
12
- export async function logHighlight({ title, description, activity_type, tech_stack, session_id, }) {
13
- const result = await apiPost("/api/buildpartner/highlights", {
14
- title,
15
- description,
16
- activity_type,
17
- tech_stack,
18
- session_id: session_id || null,
19
- });
20
- if (!result) {
21
- return { error: "Could not save highlight. Check your connection." };
22
- }
23
- return result;
24
- }
25
- //# sourceMappingURL=log-highlight.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-highlight.js","sourceRoot":"","sources":["../../../../src/mcp/tools/log-highlight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACjE,aAAa,EAAE,CAAC;SACb,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;SACrF,QAAQ,CAAC,eAAe,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC7D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CACpE,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EACjC,KAAK,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,GAOX;IACC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,8BAA8B,EAAE;QAC3D,KAAK;QACL,WAAW;QACX,aAAa;QACb,UAAU;QACV,UAAU,EAAE,UAAU,IAAI,IAAI;KAC/B,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Quest tool - now fetches quest state from server.
3
- */
4
- export declare const getQuestSchema: {};
@@ -1,8 +0,0 @@
1
- /**
2
- * Quest tool - now fetches quest state from server.
3
- */
4
- export const getQuestSchema = {};
5
- // getQuestStatus is no longer needed locally.
6
- // The MCP server calls GET /api/buildpartner/quests directly.
7
- // This file is kept for the schema export.
8
- //# sourceMappingURL=quest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quest.js","sourceRoot":"","sources":["../../../../src/mcp/tools/quest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,8CAA8C;AAC9C,8DAA8D;AAC9D,2CAA2C"}
@@ -1,15 +0,0 @@
1
- import { z } from "zod";
2
- export declare const webSearchSchema: {
3
- query: z.ZodString;
4
- num_results: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
5
- };
6
- interface SearchResult {
7
- title: string;
8
- url: string;
9
- snippet: string;
10
- }
11
- export declare function webSearch({ query, num_results }: {
12
- query: string;
13
- num_results: number;
14
- }): Promise<SearchResult[]>;
15
- export {};
@@ -1,17 +0,0 @@
1
- import { z } from "zod";
2
- import { apiPost } from "../../api-client.js";
3
- export const webSearchSchema = {
4
- query: z.string().describe("The search query"),
5
- num_results: z.number().optional().default(5).describe("Number of results to return (default 5)"),
6
- };
7
- export async function webSearch({ query, num_results }) {
8
- const response = await apiPost("/api/buildpartner/search", {
9
- query,
10
- num_results,
11
- });
12
- if (!response || !response.results) {
13
- return [{ title: "Search unavailable", url: "", snippet: "Could not reach the search API. Check your internet connection and try again." }];
14
- }
15
- return response.results;
16
- }
17
- //# sourceMappingURL=web-search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../../src/mcp/tools/web-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAClG,CAAC;AAYF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAA0C;IAC5F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAiB,sBAAsB,EAAE;QACrE,KAAK;QACL,WAAW;KACZ,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,+EAA+E,EAAE,CAAC,CAAC;IAC9I,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Extracts classification signals from a parsed session.
3
- * This is pure data extraction - no scoring or classification.
4
- * The server handles all classification logic.
5
- */
6
- import type { ParsedSession } from "./session-reader.js";
7
- export interface SessionSignals {
8
- timestamp: string;
9
- end_time: string | null;
10
- project_name: string;
11
- user_prompt_count: number;
12
- duration_minutes: number;
13
- estimated_tokens: number;
14
- summary: string;
15
- permission_mode: string | null;
16
- tool_counts: Record<string, number>;
17
- files_touched: string[];
18
- write_edit_paths: string[];
19
- bash_commands: string[];
20
- mcp_servers_used: string[];
21
- skills_invoked: string[];
22
- }
23
- export declare function extractSignals(parsed: ParsedSession): SessionSignals;