paput-mcp 2.7.1 → 2.8.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.
Files changed (74) hide show
  1. package/README.md +38 -0
  2. package/dist/cli/export-skill.js +177 -0
  3. package/dist/cli/export-skill.js.map +1 -0
  4. package/dist/cli/index.js +14 -0
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/cli/setup-ai.js +48 -2
  7. package/dist/cli/setup-ai.js.map +1 -1
  8. package/dist/handlers/create-goal/handler.js +68 -0
  9. package/dist/handlers/create-goal/handler.js.map +1 -0
  10. package/dist/handlers/create-goal/index.js +3 -0
  11. package/dist/handlers/create-goal/index.js.map +1 -0
  12. package/dist/handlers/create-goal/tool.js +13 -0
  13. package/dist/handlers/create-goal/tool.js.map +1 -0
  14. package/dist/handlers/delete-goal/handler.js +37 -0
  15. package/dist/handlers/delete-goal/handler.js.map +1 -0
  16. package/dist/handlers/delete-goal/index.js +3 -0
  17. package/dist/handlers/delete-goal/index.js.map +1 -0
  18. package/dist/handlers/delete-goal/tool.js +13 -0
  19. package/dist/handlers/delete-goal/tool.js.map +1 -0
  20. package/dist/handlers/get-dashboard-analysis/handler.js +51 -0
  21. package/dist/handlers/get-dashboard-analysis/handler.js.map +1 -0
  22. package/dist/handlers/get-dashboard-analysis/index.js +3 -0
  23. package/dist/handlers/get-dashboard-analysis/index.js.map +1 -0
  24. package/dist/handlers/get-dashboard-analysis/tool.js +13 -0
  25. package/dist/handlers/get-dashboard-analysis/tool.js.map +1 -0
  26. package/dist/handlers/get-dashboard-analysis-context/handler.js +125 -0
  27. package/dist/handlers/get-dashboard-analysis-context/handler.js.map +1 -0
  28. package/dist/handlers/get-dashboard-analysis-context/index.js +3 -0
  29. package/dist/handlers/get-dashboard-analysis-context/index.js.map +1 -0
  30. package/dist/handlers/get-dashboard-analysis-context/tool.js +13 -0
  31. package/dist/handlers/get-dashboard-analysis-context/tool.js.map +1 -0
  32. package/dist/handlers/index.js +7 -0
  33. package/dist/handlers/index.js.map +1 -1
  34. package/dist/handlers/list-goals/handler.js +43 -0
  35. package/dist/handlers/list-goals/handler.js.map +1 -0
  36. package/dist/handlers/list-goals/index.js +3 -0
  37. package/dist/handlers/list-goals/index.js.map +1 -0
  38. package/dist/handlers/list-goals/tool.js +13 -0
  39. package/dist/handlers/list-goals/tool.js.map +1 -0
  40. package/dist/handlers/update-dashboard-analysis/handler.js +93 -0
  41. package/dist/handlers/update-dashboard-analysis/handler.js.map +1 -0
  42. package/dist/handlers/update-dashboard-analysis/index.js +3 -0
  43. package/dist/handlers/update-dashboard-analysis/index.js.map +1 -0
  44. package/dist/handlers/update-dashboard-analysis/tool.js +13 -0
  45. package/dist/handlers/update-dashboard-analysis/tool.js.map +1 -0
  46. package/dist/handlers/update-goal/handler.js +70 -0
  47. package/dist/handlers/update-goal/handler.js.map +1 -0
  48. package/dist/handlers/update-goal/index.js +3 -0
  49. package/dist/handlers/update-goal/index.js.map +1 -0
  50. package/dist/handlers/update-goal/tool.js +13 -0
  51. package/dist/handlers/update-goal/tool.js.map +1 -0
  52. package/dist/schemas/tool-input.js +76 -0
  53. package/dist/schemas/tool-input.js.map +1 -1
  54. package/dist/services/api/dashboard-analysis.js +7 -0
  55. package/dist/services/api/dashboard-analysis.js.map +1 -0
  56. package/dist/services/api/dashboard.js +4 -0
  57. package/dist/services/api/dashboard.js.map +1 -0
  58. package/dist/services/api/goal.js +13 -0
  59. package/dist/services/api/goal.js.map +1 -0
  60. package/dist/services/api/index.js +3 -0
  61. package/dist/services/api/index.js.map +1 -1
  62. package/dist/tool.js +8 -1
  63. package/dist/tool.js.map +1 -1
  64. package/dist/types/dashboard-analysis.js +2 -0
  65. package/dist/types/dashboard-analysis.js.map +1 -0
  66. package/dist/types/dashboard.js +2 -0
  67. package/dist/types/dashboard.js.map +1 -0
  68. package/dist/types/goal.js +2 -0
  69. package/dist/types/goal.js.map +1 -0
  70. package/dist/types/index.js +3 -0
  71. package/dist/types/index.js.map +1 -1
  72. package/docs/tools.md +31 -0
  73. package/docs/usage-examples.md +18 -0
  74. package/package.json +1 -1
package/README.md CHANGED
@@ -10,6 +10,8 @@ PaPut MCP Server connects [PaPut](https://paput.io) to AI assistants through the
10
10
  - Create, search, read, and update notes
11
11
  - Read and update skill sheet profile fields, self PR, skills, and projects
12
12
  - Delete skill sheet projects when explicitly requested
13
+ - Create, list, update, and delete goals
14
+ - Get dashboard context and save AI-generated dashboard analysis results
13
15
 
14
16
  ### Knowledge Capture From AI Sessions
15
17
 
@@ -126,6 +128,27 @@ Generated skills:
126
128
  - `paput-sync` - Sync existing PaPut memos into the local cache.
127
129
  - `paput-capture` - Extract reusable knowledge candidates from the current conversation or a specified topic and add them to pending.
128
130
  - `paput-save` - Review pending candidates first, then save only candidates explicitly approved by the user.
131
+ - `paput-dashboard-analysis` - Analyze PaPut dashboard context and optionally save the generated dashboard analysis.
132
+
133
+ For Claude Desktop, export skill ZIP files and upload them from
134
+ `Customize > Skills`:
135
+
136
+ ```bash
137
+ npx -y paput-mcp export-skill
138
+ ```
139
+
140
+ The command writes all PaPut skill ZIP files to `~/Downloads`. To export one
141
+ skill only:
142
+
143
+ ```bash
144
+ npx -y paput-mcp export-skill paput-dashboard-analysis
145
+ ```
146
+
147
+ To choose another output directory:
148
+
149
+ ```bash
150
+ npx -y paput-mcp export-skill --output ~/Downloads/paput-skills
151
+ ```
129
152
 
130
153
  ## Knowledge Workflow
131
154
 
@@ -187,6 +210,19 @@ Detailed public tool documentation is available in [docs/tools.md](docs/tools.md
187
210
  - `paput_get_skill_sheet_project_summary_context` - Get project information and related memo bodies so the MCP client AI model can generate a project summary.
188
211
  - `paput_update_skill_sheet_project_ai_summary` - Save an AI-generated project summary.
189
212
 
213
+ ### Goal Management
214
+
215
+ - `paput_list_goals` - List active and archived goals.
216
+ - `paput_create_goal` - Create a goal.
217
+ - `paput_update_goal` - Update a goal. The update body includes the goal ID.
218
+ - `paput_delete_goal` - Delete a goal by ID.
219
+
220
+ ### Dashboard Analysis
221
+
222
+ - `paput_get_dashboard_analysis` - Get the saved dashboard analysis.
223
+ - `paput_get_dashboard_analysis_context` - Get dashboard, goal, skill sheet, memo, note, and category context so the MCP client AI model can generate an analysis.
224
+ - `paput_update_dashboard_analysis` - Save an AI-generated dashboard analysis.
225
+
190
226
  ### Knowledge Capture And Local Cache
191
227
 
192
228
  - `paput_cache_status` - Inspect the local cache state.
@@ -204,7 +240,9 @@ Write and destructive tools should be used only when the user intent is clear. I
204
240
 
205
241
  - `paput_save_pending_candidate` requires explicit user approval to save a pending candidate to PaPut.
206
242
  - `paput_delete_skill_sheet_project` should be used only when the user intends to delete a project.
243
+ - `paput_delete_goal` should be used only when the user intends to delete a goal.
207
244
  - `paput_set_skill_sheet_skills` replaces the full skill list and should be used only when the desired final list is known.
245
+ - `paput_update_dashboard_analysis` should be used only after the MCP client AI model has generated an analysis and the user intends to save it.
208
246
  - `paput_discard_pending_candidate` removes a pending candidate from the save flow.
209
247
  - Update and upsert tools should preserve existing data unless the user requests a change.
210
248
 
@@ -0,0 +1,177 @@
1
+ import { deflateRawSync } from 'node:zlib';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, extname, join, resolve } from 'node:path';
4
+ import { mkdirSync, writeFileSync } from 'node:fs';
5
+ import { findSkill, renderSkill, SKILLS } from './setup-ai.js';
6
+ export function exportSkill(args) {
7
+ const options = parseOptions(args);
8
+ const skills = options.skillName
9
+ ? [findSkill(options.skillName)]
10
+ : [...SKILLS];
11
+ if (skills.some((skill) => !skill)) {
12
+ throw new Error(`Unknown skill: ${options.skillName}`);
13
+ }
14
+ if (!options.skillName && extname(resolve(options.output)) === '.zip') {
15
+ throw new Error('--output must be a directory when exporting all skills. Omit the skill name and use --output ~/Downloads.');
16
+ }
17
+ const outputPaths = skills.map((skill) => {
18
+ if (!skill)
19
+ throw new Error('Unexpected missing skill');
20
+ const outputPath = resolveOutputPath(options.output, skill.name);
21
+ const skillMarkdown = renderSkill(skill);
22
+ const zip = createZip([
23
+ {
24
+ path: `${skill.name}/SKILL.md`,
25
+ data: Buffer.from(skillMarkdown, 'utf8'),
26
+ },
27
+ ]);
28
+ mkdirSync(dirname(outputPath), { recursive: true });
29
+ writeFileSync(outputPath, zip);
30
+ return outputPath;
31
+ });
32
+ console.log(`Exported ${outputPaths.length} skill ZIP(s):`);
33
+ for (const outputPath of outputPaths) {
34
+ console.log(`- ${outputPath}`);
35
+ }
36
+ }
37
+ function parseOptions(args) {
38
+ let skillName;
39
+ let output = expandHome('~/Downloads');
40
+ for (let index = 0; index < args.length; index += 1) {
41
+ const arg = args[index];
42
+ if (arg === '--output' || arg === '-o') {
43
+ const value = args[index + 1];
44
+ if (!value) {
45
+ throw new Error(`${arg} requires a file path`);
46
+ }
47
+ output = expandHome(value);
48
+ index += 1;
49
+ continue;
50
+ }
51
+ if (!arg.startsWith('-') && !skillName) {
52
+ skillName = arg;
53
+ continue;
54
+ }
55
+ throw new Error(`Unknown option for export-skill: ${arg}`);
56
+ }
57
+ return {
58
+ skillName,
59
+ output,
60
+ };
61
+ }
62
+ function resolveOutputPath(output, skillName) {
63
+ const resolved = resolve(output);
64
+ const looksLikeZipFile = extname(resolved) === '.zip';
65
+ if (looksLikeZipFile) {
66
+ return resolved;
67
+ }
68
+ return join(resolved, `${skillName}.zip`);
69
+ }
70
+ function expandHome(path) {
71
+ if (path === '~')
72
+ return homedir();
73
+ if (path.startsWith('~/'))
74
+ return join(homedir(), path.slice(2));
75
+ return path;
76
+ }
77
+ export function createZip(entries) {
78
+ const localParts = [];
79
+ const centralParts = [];
80
+ let offset = 0;
81
+ for (const entry of entries) {
82
+ const filename = Buffer.from(entry.path, 'utf8');
83
+ const compressed = deflateRawSync(entry.data);
84
+ const crc = crc32(entry.data);
85
+ const localHeader = createLocalFileHeader({
86
+ filename,
87
+ crc,
88
+ compressedSize: compressed.length,
89
+ uncompressedSize: entry.data.length,
90
+ });
91
+ const centralHeader = createCentralDirectoryHeader({
92
+ filename,
93
+ crc,
94
+ compressedSize: compressed.length,
95
+ uncompressedSize: entry.data.length,
96
+ localHeaderOffset: offset,
97
+ });
98
+ localParts.push(localHeader, filename, compressed);
99
+ centralParts.push(centralHeader, filename);
100
+ offset += localHeader.length + filename.length + compressed.length;
101
+ }
102
+ const centralDirectory = Buffer.concat(centralParts);
103
+ const endOfCentralDirectory = createEndOfCentralDirectory({
104
+ entryCount: entries.length,
105
+ centralDirectorySize: centralDirectory.length,
106
+ centralDirectoryOffset: offset,
107
+ });
108
+ return Buffer.concat([
109
+ ...localParts,
110
+ centralDirectory,
111
+ endOfCentralDirectory,
112
+ ]);
113
+ }
114
+ function createLocalFileHeader(params) {
115
+ const header = Buffer.alloc(30);
116
+ header.writeUInt32LE(0x04034b50, 0);
117
+ header.writeUInt16LE(20, 4);
118
+ header.writeUInt16LE(0, 6);
119
+ header.writeUInt16LE(8, 8);
120
+ header.writeUInt16LE(0, 10);
121
+ header.writeUInt16LE(0, 12);
122
+ header.writeUInt32LE(params.crc, 14);
123
+ header.writeUInt32LE(params.compressedSize, 18);
124
+ header.writeUInt32LE(params.uncompressedSize, 22);
125
+ header.writeUInt16LE(params.filename.length, 26);
126
+ header.writeUInt16LE(0, 28);
127
+ return header;
128
+ }
129
+ function createCentralDirectoryHeader(params) {
130
+ const header = Buffer.alloc(46);
131
+ header.writeUInt32LE(0x02014b50, 0);
132
+ header.writeUInt16LE(20, 4);
133
+ header.writeUInt16LE(20, 6);
134
+ header.writeUInt16LE(0, 8);
135
+ header.writeUInt16LE(8, 10);
136
+ header.writeUInt16LE(0, 12);
137
+ header.writeUInt16LE(0, 14);
138
+ header.writeUInt32LE(params.crc, 16);
139
+ header.writeUInt32LE(params.compressedSize, 20);
140
+ header.writeUInt32LE(params.uncompressedSize, 24);
141
+ header.writeUInt16LE(params.filename.length, 28);
142
+ header.writeUInt16LE(0, 30);
143
+ header.writeUInt16LE(0, 32);
144
+ header.writeUInt16LE(0, 34);
145
+ header.writeUInt16LE(0, 36);
146
+ header.writeUInt32LE(0, 38);
147
+ header.writeUInt32LE(params.localHeaderOffset, 42);
148
+ return header;
149
+ }
150
+ function createEndOfCentralDirectory(params) {
151
+ const record = Buffer.alloc(22);
152
+ record.writeUInt32LE(0x06054b50, 0);
153
+ record.writeUInt16LE(0, 4);
154
+ record.writeUInt16LE(0, 6);
155
+ record.writeUInt16LE(params.entryCount, 8);
156
+ record.writeUInt16LE(params.entryCount, 10);
157
+ record.writeUInt32LE(params.centralDirectorySize, 12);
158
+ record.writeUInt32LE(params.centralDirectoryOffset, 16);
159
+ record.writeUInt16LE(0, 20);
160
+ return record;
161
+ }
162
+ function crc32(data) {
163
+ let crc = 0xffffffff;
164
+ for (const byte of data) {
165
+ crc = (crc >>> 8) ^ CRC_TABLE[(crc ^ byte) & 0xff];
166
+ }
167
+ return (crc ^ 0xffffffff) >>> 0;
168
+ }
169
+ const CRC_TABLE = new Uint32Array(256);
170
+ for (let index = 0; index < 256; index += 1) {
171
+ let value = index;
172
+ for (let bit = 0; bit < 8; bit += 1) {
173
+ value = value & 1 ? 0xedb88320 ^ (value >>> 1) : value >>> 1;
174
+ }
175
+ CRC_TABLE[index] = value >>> 0;
176
+ }
177
+ //# sourceMappingURL=export-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-skill.js","sourceRoot":"","sources":["../../src/cli/export-skill.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { login } from './login.js';
2
2
  import { logout } from './logout.js';
3
3
  import { setupAi } from './setup-ai.js';
4
+ import { exportSkill } from './export-skill.js';
4
5
  export async function runCli(args) {
5
6
  const command = args[0];
6
7
  if (!command)
@@ -29,6 +30,16 @@ export async function runCli(args) {
29
30
  setupAi(args.slice(1));
30
31
  return true;
31
32
  }
33
+ if (command === 'export-skill') {
34
+ try {
35
+ exportSkill(args.slice(1));
36
+ }
37
+ catch (error) {
38
+ console.error(error instanceof Error ? error.message : error);
39
+ process.exitCode = 1;
40
+ }
41
+ return true;
42
+ }
32
43
  if (command === '--help' || command === '-h' || command === 'help') {
33
44
  printHelp();
34
45
  return true;
@@ -44,6 +55,8 @@ function printHelp() {
44
55
  paput-mcp login Log in to PaPut with OAuth for local CLI mode
45
56
  paput-mcp logout Revoke and remove the local OAuth token cache
46
57
  paput-mcp setup-ai Set up PaPut integration for Claude/Codex
58
+ paput-mcp export-skill [name]
59
+ Export PaPut skill ZIP files for Claude Desktop
47
60
 
48
61
  Options:
49
62
  --api-url <URL> PaPut API URL for login. Defaults to PAPUT_API_URL or https://api.paput.io
@@ -54,6 +67,7 @@ Options:
54
67
  --no-rules Do not update global rules
55
68
  --claude-only Configure Claude only
56
69
  --codex-only Configure Codex only
70
+ -o, --output <PATH> Output directory or ZIP path for export-skill. Defaults to ~/Downloads
57
71
  `);
58
72
  }
59
73
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACnE,SAAS,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACnE,SAAS,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;CAkBb,CAAC,CAAC;AACH,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { existsSync, lstatSync, mkdirSync, readFileSync, rmSync, symlinkSync, writeFileSync, } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { dirname, join } from 'node:path';
4
- const SKILLS = [
4
+ export const SKILLS = [
5
5
  {
6
6
  name: 'paput-init',
7
7
  description: 'Use this to initialize PaPut usage, sync existing memos, and inspect unprocessed sessions.',
@@ -138,6 +138,49 @@ Do not add these to pending:
138
138
  - Candidates created from past sessions use the source session updated timestamp as the PaPut memo creation timestamp when saved.
139
139
  - If there are no candidates, say that no reusable knowledge was found.`,
140
140
  },
141
+ {
142
+ name: 'paput-dashboard-analysis',
143
+ description: "Use this to analyze the user's PaPut dashboard, goals, skill sheet, memos, notes, and categories; identify current position, strengths, growing areas, thin areas, missing knowledge, next knowledge to learn, and career-history phrasing; optionally save the generated dashboard analysis when the user asks to save it.",
144
+ body: `# PaPut Dashboard Analysis
145
+
146
+ Analyze the user's PaPut dashboard and goals. Use this skill when the user asks about dashboard analysis, goals, progress, strengths, weak areas, next learning topics, or career-history phrasing.
147
+
148
+ ## Workflow
149
+
150
+ 1. Call \`paput_get_dashboard_analysis_context\`.
151
+ 2. Analyze the returned \`structuredContent\`.
152
+ 3. Present the analysis in the user's language and tone.
153
+ 4. Do not save the result unless the user explicitly asks to save it.
154
+ 5. If the user asks to save, call \`paput_update_dashboard_analysis\`.
155
+
156
+ ## Analysis Points
157
+
158
+ Include these points when relevant:
159
+
160
+ - Current position
161
+ - Areas that can be presented as strengths
162
+ - Areas that have been growing recently
163
+ - Thin or underdeveloped areas
164
+ - Knowledge missing against active goals
165
+ - Knowledge to learn next
166
+ - Phrasing suitable for a skill sheet or career history
167
+
168
+ ## Rules
169
+
170
+ - Do not claim that paput-mcp generated the analysis. The MCP client AI performs the analysis.
171
+ - Use active goals as the main analysis basis.
172
+ - Treat archived goals as historical context.
173
+ - Do not recalculate dashboard continuity from activities. Use the dashboard summary values returned by the API.
174
+ - Do not assume the user should write memos next.
175
+ - Focus on how knowledge naturally accumulated through daily development can grow toward the user's goals.
176
+ - When saving, map the generated result to:
177
+ - \`current_summary\`
178
+ - \`strengths\`
179
+ - \`growing_areas\`
180
+ - \`weak_areas\`
181
+ - \`next_knowledge_suggestions\`
182
+ - \`analyzed_at\``,
183
+ },
141
184
  ];
142
185
  const RULES = `## PaPut Knowledge Capture Rules
143
186
 
@@ -281,7 +324,10 @@ function upsertRules(path, force, label) {
281
324
  writeFileSync(path, next, 'utf8');
282
325
  console.log(`Append ${label} rules: ${path}`);
283
326
  }
284
- function renderSkill(skill) {
327
+ export function findSkill(name) {
328
+ return SKILLS.find((skill) => skill.name === name);
329
+ }
330
+ export function renderSkill(skill) {
285
331
  return `---
286
332
  name: ${skill.name}
287
333
  description: ${skill.description}
@@ -1 +1 @@
1
- {"version":3,"file":"setup-ai.js","sourceRoot":"","sources":["../../src/cli/setup-ai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-ai.js","sourceRoot":"","sources":["../../src/cli/setup-ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { createGoal } from '../../services/api/goal.js';
2
+ const goalCategories = ['career', 'learning', 'portfolio', 'project', 'other'];
3
+ const goalStatuses = ['active', 'archived'];
4
+ export async function handleCreateGoal(args, apiClient) {
5
+ const params = parseGoalParams(args);
6
+ if (!params) {
7
+ return {
8
+ content: [
9
+ {
10
+ type: 'text',
11
+ text: 'Title, category, status, and priority are required.',
12
+ },
13
+ ],
14
+ isError: true,
15
+ };
16
+ }
17
+ try {
18
+ const goal = await createGoal(apiClient, params);
19
+ return {
20
+ structuredContent: {
21
+ success: true,
22
+ goal,
23
+ },
24
+ content: [
25
+ {
26
+ type: 'text',
27
+ text: `Goal was created: ${goal.title} (ID: ${goal.id})`,
28
+ },
29
+ ],
30
+ };
31
+ }
32
+ catch (error) {
33
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
34
+ return {
35
+ content: [
36
+ {
37
+ type: 'text',
38
+ text: `Error while creating goal: ${errorMessage}`,
39
+ },
40
+ ],
41
+ isError: true,
42
+ };
43
+ }
44
+ }
45
+ function parseGoalParams(args) {
46
+ if (!args ||
47
+ typeof args.title !== 'string' ||
48
+ !isGoalCategory(args.category) ||
49
+ !isGoalStatus(args.status) ||
50
+ typeof args.priority !== 'number') {
51
+ return null;
52
+ }
53
+ return {
54
+ title: args.title,
55
+ description: typeof args.description === 'string' ? args.description : null,
56
+ category: args.category,
57
+ status: args.status,
58
+ priority: args.priority,
59
+ target_date: typeof args.target_date === 'string' ? args.target_date : null,
60
+ };
61
+ }
62
+ function isGoalCategory(value) {
63
+ return typeof value === 'string' && goalCategories.includes(value);
64
+ }
65
+ function isGoalStatus(value) {
66
+ return typeof value === 'string' && goalStatuses.includes(value);
67
+ }
68
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/create-goal/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAOxD,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/E,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAyC,EACzC,SAAoB;IAEpB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qDAAqD;iBAC5D;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEjD,OAAO;YACL,iBAAiB,EAAE;gBACjB,OAAO,EAAE,IAAI;gBACb,IAAI;aACL;YACD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qBAAqB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,EAAE,GAAG;iBACzD;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAE3D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,8BAA8B,YAAY,EAAE;iBACnD;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAAyC;IAEzC,IACE,CAAC,IAAI;QACL,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAC9B,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC9B,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1B,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;QAC3E,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './handler.js';
2
+ export * from './tool.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/create-goal/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { handleCreateGoal } from './handler.js';
2
+ export const createGoalTool = {
3
+ definition: {
4
+ name: 'paput_create_goal',
5
+ description: 'Create a PaPut goal. Use active goals for current analysis targets and archived goals for historical context.',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {},
9
+ },
10
+ },
11
+ handler: handleCreateGoal,
12
+ };
13
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/create-goal/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,UAAU,EAAE;QACV,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,+GAA+G;QACjH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD,OAAO,EAAE,gBAAgB;CAC1B,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { deleteGoal } from '../../services/api/goal.js';
2
+ export async function handleDeleteGoal(args, apiClient) {
3
+ if (!args || typeof args.id !== 'number') {
4
+ return {
5
+ content: [{ type: 'text', text: 'Goal ID is required.' }],
6
+ isError: true,
7
+ };
8
+ }
9
+ try {
10
+ await deleteGoal(apiClient, args.id);
11
+ return {
12
+ structuredContent: {
13
+ success: true,
14
+ deleted_goal_id: args.id,
15
+ },
16
+ content: [
17
+ {
18
+ type: 'text',
19
+ text: `Goal was deleted: ${args.id}`,
20
+ },
21
+ ],
22
+ };
23
+ }
24
+ catch (error) {
25
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
26
+ return {
27
+ content: [
28
+ {
29
+ type: 'text',
30
+ text: `Error while deleting goal: ${errorMessage}`,
31
+ },
32
+ ],
33
+ isError: true,
34
+ };
35
+ }
36
+ }
37
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/delete-goal/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAyC,EACzC,SAAoB;IAEpB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;YACzD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAErC,OAAO;YACL,iBAAiB,EAAE;gBACjB,OAAO,EAAE,IAAI;gBACb,eAAe,EAAE,IAAI,CAAC,EAAE;aACzB;YACD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qBAAqB,IAAI,CAAC,EAAE,EAAE;iBACrC;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAE3D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,8BAA8B,YAAY,EAAE;iBACnD;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './handler.js';
2
+ export * from './tool.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/delete-goal/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { handleDeleteGoal } from './handler.js';
2
+ export const deleteGoalTool = {
3
+ definition: {
4
+ name: 'paput_delete_goal',
5
+ description: 'Delete a PaPut goal by ID.',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {},
9
+ },
10
+ },
11
+ handler: handleDeleteGoal,
12
+ };
13
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/delete-goal/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,UAAU,EAAE;QACV,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD,OAAO,EAAE,gBAAgB;CAC1B,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { getDashboardAnalysis } from '../../services/api/dashboard-analysis.js';
2
+ export async function handleGetDashboardAnalysis(_args, apiClient) {
3
+ try {
4
+ const analysis = await getDashboardAnalysis(apiClient);
5
+ if (!analysis) {
6
+ return {
7
+ structuredContent: {
8
+ dashboard_analysis: null,
9
+ },
10
+ content: [
11
+ {
12
+ type: 'text',
13
+ text: 'Dashboard analysis has not been saved yet.',
14
+ },
15
+ ],
16
+ };
17
+ }
18
+ return {
19
+ structuredContent: {
20
+ dashboard_analysis: analysis,
21
+ },
22
+ content: [
23
+ {
24
+ type: 'text',
25
+ text: `Dashboard analysis:
26
+ Analyzed at: ${analysis.analyzed_at}
27
+ Current summary:
28
+ ${analysis.current_summary}
29
+
30
+ Strengths: ${analysis.strengths.length}
31
+ Growing areas: ${analysis.growing_areas.length}
32
+ Weak areas: ${analysis.weak_areas.length}
33
+ Next knowledge suggestions: ${analysis.next_knowledge_suggestions.length}`,
34
+ },
35
+ ],
36
+ };
37
+ }
38
+ catch (error) {
39
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
40
+ return {
41
+ content: [
42
+ {
43
+ type: 'text',
44
+ text: `Error while fetching dashboard analysis: ${errorMessage}`,
45
+ },
46
+ ],
47
+ isError: true,
48
+ };
49
+ }
50
+ }
51
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-dashboard-analysis/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAEhF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,KAA0C,EAC1C,SAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAEvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,iBAAiB,EAAE;oBACjB,kBAAkB,EAAE,IAAI;iBACzB;gBACD,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4CAA4C;qBACnD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,iBAAiB,EAAE;gBACjB,kBAAkB,EAAE,QAAQ;aAC7B;YACD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;eACD,QAAQ,CAAC,WAAW;;EAEjC,QAAQ,CAAC,eAAe;;aAEb,QAAQ,CAAC,SAAS,CAAC,MAAM;iBACrB,QAAQ,CAAC,aAAa,CAAC,MAAM;cAChC,QAAQ,CAAC,UAAU,CAAC,MAAM;8BACV,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE;iBACjE;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAE3D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,4CAA4C,YAAY,EAAE;iBACjE;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './handler.js';
2
+ export * from './tool.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/get-dashboard-analysis/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}