pmpt-cli 1.14.3 → 1.14.5
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/commands/export.js +2 -0
- package/dist/commands/publish.js +2 -0
- package/dist/commands/update.js +2 -0
- package/dist/lib/pmptFile.js +2 -0
- package/dist/mcp.js +10 -3
- package/package.json +1 -1
package/dist/commands/export.js
CHANGED
package/dist/commands/publish.js
CHANGED
|
@@ -345,6 +345,8 @@ export async function cmdPublish(path, options) {
|
|
|
345
345
|
version: snapshot.version,
|
|
346
346
|
timestamp: snapshot.timestamp,
|
|
347
347
|
files: resolveFullSnapshot(snapshots, i),
|
|
348
|
+
changedFiles: snapshot.changedFiles,
|
|
349
|
+
note: snapshot.note,
|
|
348
350
|
git: snapshot.git,
|
|
349
351
|
}));
|
|
350
352
|
const docs = readDocsFolder(docsDir);
|
package/dist/commands/update.js
CHANGED
|
@@ -99,6 +99,8 @@ export async function cmdUpdate(path) {
|
|
|
99
99
|
version: snapshot.version,
|
|
100
100
|
timestamp: snapshot.timestamp,
|
|
101
101
|
files: resolveFullSnapshot(snapshots, i),
|
|
102
|
+
changedFiles: snapshot.changedFiles,
|
|
103
|
+
note: snapshot.note,
|
|
102
104
|
git: snapshot.git,
|
|
103
105
|
}));
|
|
104
106
|
const docs = readDocsFolder(docsDir);
|
package/dist/lib/pmptFile.js
CHANGED
|
@@ -47,6 +47,8 @@ const VersionSchema = z.object({
|
|
|
47
47
|
version: z.number().min(1),
|
|
48
48
|
timestamp: z.string(),
|
|
49
49
|
summary: z.string().optional(),
|
|
50
|
+
note: z.string().optional(),
|
|
51
|
+
changedFiles: z.array(z.string()).optional(),
|
|
50
52
|
files: z.record(safeFilenameKey, z.string()), // filename -> content
|
|
51
53
|
git: GitInfoSchema,
|
|
52
54
|
});
|
package/dist/mcp.js
CHANGED
|
@@ -12,7 +12,7 @@ import { resolve, join } from 'path';
|
|
|
12
12
|
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
13
13
|
import glob from 'fast-glob';
|
|
14
14
|
import { createRequire } from 'module';
|
|
15
|
-
import { isInitialized, loadConfig, getDocsDir, getHistoryDir } from './lib/config.js';
|
|
15
|
+
import { isInitialized, loadConfig, saveConfig, getDocsDir, getHistoryDir } from './lib/config.js';
|
|
16
16
|
import { createFullSnapshot, getAllSnapshots, getTrackedFiles, resolveFullSnapshot } from './lib/history.js';
|
|
17
17
|
import { computeQuality } from './lib/quality.js';
|
|
18
18
|
import { getPlanProgress, savePlanProgress, savePlanDocuments, PLAN_QUESTIONS } from './lib/plan.js';
|
|
@@ -98,7 +98,7 @@ function formatDiffs(diffs) {
|
|
|
98
98
|
return lines.join('\n');
|
|
99
99
|
}
|
|
100
100
|
// ── Tools ───────────────────────────────────────────
|
|
101
|
-
server.tool('pmpt_save', 'Save a snapshot of .pmpt/docs/ files. Call after completing features, fixes, or milestones.
|
|
101
|
+
server.tool('pmpt_save', 'Save a snapshot of .pmpt/docs/ files. Call after completing features, fixes, or milestones. CRITICAL: Always provide a summary parameter — it becomes the version description shown on pmptwiki.com. Without a summary, the version appears empty on the project page. Write a concise description of what was accomplished (e.g. "Added user authentication with JWT").', {
|
|
102
102
|
projectPath: z.string().optional().describe('Project root path. Defaults to cwd.'),
|
|
103
103
|
summary: z.string().optional().describe('What was accomplished since the last save. This is recorded in pmpt.md as a development log entry. Examples: "Implemented user auth with JWT", "Fixed responsive layout on mobile", "Added search filtering by category".'),
|
|
104
104
|
}, async ({ projectPath, summary }) => {
|
|
@@ -582,7 +582,7 @@ server.tool('pmpt_log_decision', 'Record an architectural or technical decision
|
|
|
582
582
|
return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
|
|
583
583
|
}
|
|
584
584
|
});
|
|
585
|
-
server.tool('pmpt_publish', 'Publish the project to pmptwiki.com.
|
|
585
|
+
server.tool('pmpt_publish', 'Publish the project to pmptwiki.com. Non-interactive — just provide slug and optional metadata. BEFORE publishing, verify: (1) Run pmpt_history to check all snapshots have meaningful summaries — empty versions look bad on the project page. (2) If any versions lack descriptions, run pmpt_save with a summary or update pmpt.md Snapshot Log section with ### vN — Title entries. (3) Run pmpt_quality to check publish readiness. Note: user must have run `pmpt login` once before.', {
|
|
586
586
|
projectPath: z.string().optional().describe('Project root path. Defaults to cwd.'),
|
|
587
587
|
slug: z.string().describe('Project slug (3-50 chars, lowercase alphanumeric and hyphens).'),
|
|
588
588
|
description: z.string().optional().describe('Project description (max 500 chars).'),
|
|
@@ -656,6 +656,13 @@ server.tool('pmpt_publish', 'Publish the project to pmptwiki.com. This tool hand
|
|
|
656
656
|
productUrl,
|
|
657
657
|
productUrlType,
|
|
658
658
|
});
|
|
659
|
+
// Save publish state to config so `pmpt update` works
|
|
660
|
+
if (config) {
|
|
661
|
+
config.lastPublished = new Date().toISOString();
|
|
662
|
+
config.lastPublishedSlug = slug;
|
|
663
|
+
config.lastPublishedVersionCount = snapshots.length;
|
|
664
|
+
saveConfig(pp, config);
|
|
665
|
+
}
|
|
659
666
|
return {
|
|
660
667
|
content: [{
|
|
661
668
|
type: 'text',
|