pmem-ai 0.5.0 → 0.6.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 (54) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +75 -17
  3. package/dist/commands/ask.d.ts.map +1 -1
  4. package/dist/commands/ask.js +14 -1
  5. package/dist/commands/ask.js.map +1 -1
  6. package/dist/commands/doctor.d.ts +3 -0
  7. package/dist/commands/doctor.d.ts.map +1 -0
  8. package/dist/commands/doctor.js +164 -0
  9. package/dist/commands/doctor.js.map +1 -0
  10. package/dist/commands/init.d.ts +4 -0
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +111 -6
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/install.d.ts +8 -0
  15. package/dist/commands/install.d.ts.map +1 -0
  16. package/dist/commands/install.js +119 -0
  17. package/dist/commands/install.js.map +1 -0
  18. package/dist/commands/integration.d.ts.map +1 -1
  19. package/dist/commands/integration.js +113 -35
  20. package/dist/commands/integration.js.map +1 -1
  21. package/dist/commands/session.d.ts.map +1 -1
  22. package/dist/commands/session.js +3 -1
  23. package/dist/commands/session.js.map +1 -1
  24. package/dist/commands/update.d.ts +1 -0
  25. package/dist/commands/update.d.ts.map +1 -1
  26. package/dist/commands/update.js +376 -107
  27. package/dist/commands/update.js.map +1 -1
  28. package/dist/commands/verify.d.ts.map +1 -1
  29. package/dist/commands/verify.js +17 -33
  30. package/dist/commands/verify.js.map +1 -1
  31. package/dist/core/consistency.d.ts +10 -0
  32. package/dist/core/consistency.d.ts.map +1 -0
  33. package/dist/core/consistency.js +97 -0
  34. package/dist/core/consistency.js.map +1 -0
  35. package/dist/core/db.d.ts +9 -0
  36. package/dist/core/db.d.ts.map +1 -1
  37. package/dist/core/db.js +4 -0
  38. package/dist/core/db.js.map +1 -1
  39. package/dist/index.js +40 -2
  40. package/dist/index.js.map +1 -1
  41. package/dist/types.d.ts +40 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/docs/handover-v0.6.md +149 -0
  44. package/docs/project-roadmap.md +94 -25
  45. package/docs/release-checklist-v0.6.md +72 -0
  46. package/docs/usage.md +374 -0
  47. package/docs/v0.6 pre-design.md +550 -0
  48. package/docs/v0.6.1 pre-design.md +566 -0
  49. package/package.json +10 -2
  50. package/skills/pmem/SKILL.md +194 -0
  51. package/skills/pmem/references/first-init.md +90 -0
  52. package/skills/pmem/references/memory-cards.md +86 -0
  53. package/skills/pmem/references/session-workflow.md +83 -0
  54. package/skills/pmem/references/troubleshooting.md +60 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,54 @@
2
2
 
3
3
  All notable changes to pmem are documented here.
4
4
 
5
+ ## 0.6.1 - Actionable Update Suggestions
6
+
7
+ ### Added
8
+
9
+ - Aggregate duplicate `update --suggest` items by `target + reason + matched_file`, with counts and `sources` arrays.
10
+ - Split suggestion output into `blocking_for_verify`, `current_suggestions`, and `historical_dirty_flags` groups.
11
+ - Add machine-readable severity metadata per suggestion: `severity`, `blocks_verify`, `is_duplicate`, `is_historical`.
12
+ - Compact output summarizing affected cards, blocking issues, hidden duplicates, and hidden history.
13
+ - `--include-history` flag to inspect historical dirty flags that are hidden by default.
14
+ - Shared `checkStaleMemory()` in `src/core/consistency.ts`, aligning `update --suggest` with `pmem verify`.
15
+ - Structured JSON output with `summary`, `message`, `next_steps`, and `groups` for agent decision-making.
16
+ - v0.6.1 E2E test suite covering duplicate aggregation, historical hiding, include-history, missing DB, and blocking groups.
17
+
18
+ ### Changed
19
+
20
+ - `update --suggest --format json` output restructured from flat arrays to `summary` + `groups`.
21
+ - `pmem verify` stale-memory check now delegates to shared `checkStaleMemory()` from `consistency.ts`.
22
+ - `update --suggest` exit code: only hidden historical items return 0; missing/corrupt DB returns 2 (runtime error).
23
+
24
+ ### Fixed
25
+
26
+ - Long-term projects no longer see repeated dirty flags and historical suggestions flooding `update --suggest` output.
27
+ - `pmem verify` 100/100 and `update --suggest` now semantically aligned — verify-clean projects see "No blocking memory consistency issues."
28
+
29
+ ## 0.6.0 - Agent-native Workflow Polish
30
+
31
+ ### Added
32
+
33
+ - Non-interactive init: `--guided` now accepts `--description`, `--stage`, `--next` flags and `--answers <file.json>` for agent/script usage.
34
+ - Claude Code slash commands: `pmem integration install claude-code` generates `.claude/commands/pmem-*.md` (recall, ask, update, distill).
35
+ - `update --suggest --format json` output includes `message` and `next_steps` for empty scenarios.
36
+ - `ask --format json` output includes `message` and `next_steps` when no matches found.
37
+ - `pmem integration verify` checks slash command files and gives fix instructions for all frameworks.
38
+ - Global skills installation: `pmem install --skills --claude/--codex/--gemini/--all` copies `skills/pmem/` to agent global skills directories.
39
+ - `pmem doctor`: unified diagnostic command checking 8 aspects of project memory health.
40
+ - Agent-native E2E suite: non-interactive init, answers file, claude integration, empty guidance, non-git UX.
41
+
42
+ ### Changed
43
+
44
+ - `mark-dirty --auto` checks git availability before running git commands; gives friendly guidance instead of raw stack traces.
45
+ - `pmem session end` without an active session now provides actionable next steps.
46
+ - `pmem rebuild` differentiates missing `.pmem` from missing `manifest.yml`.
47
+ - Updated docs: README, CLAUDE.md, AGENTS.md, and integration templates to v0.6 scope.
48
+
49
+ ### Fixed
50
+
51
+ - `pmem install-smoke` E2E version check now reads expected version from `package.json` dynamically.
52
+
5
53
  ## 0.5.0 - Productization Beta
6
54
 
7
55
  ### Added
package/README.md CHANGED
@@ -31,26 +31,36 @@ It is not a vector database, MCP server, Graph UI, or remote multi-user service.
31
31
 
32
32
  ## Install
33
33
 
34
- From the repository:
34
+ ```bash
35
+ npm install -g pmem-ai
36
+ pmem --version
37
+ ```
38
+
39
+ Node.js 18 or newer is required. `better-sqlite3` is compiled during install.
40
+
41
+ Run `pmem doctor` anytime to check the health of your project memory setup.
42
+
43
+ To install from source:
35
44
 
36
45
  ```bash
46
+ git clone https://github.com/KkSss999/pmem.git
47
+ cd pmem
37
48
  npm install
38
49
  npm run build
39
50
  npm link
40
- pmem --version
41
51
  ```
42
52
 
43
- For release validation, build an installable tarball:
53
+ ### Installing Agent Skills
54
+
55
+ After installing the CLI, add pmem skills to your agent so it knows how to use pmem:
44
56
 
45
57
  ```bash
46
- npm run build
47
- npm pack
48
- npm install -g ./pmem-*.tgz
49
- pmem --help
58
+ pmem install --skills --claude # → ~/.claude/skills/pmem/
59
+ pmem install --skills --codex # → ~/.codex/skills/pmem/
60
+ pmem install --skills --gemini # → ~/.gemini/skills/pmem/
61
+ pmem install --skills --all # → all detected agents
50
62
  ```
51
63
 
52
- Node.js 18 or newer is required.
53
-
54
64
  ## 5-Minute Quick Start
55
65
 
56
66
  Create project memory in a repository:
@@ -105,6 +115,48 @@ pmem verify
105
115
 
106
116
  Note: `pmem update --suggest` exits with code `1` when it found suggestions. That means "action suggested", not "command failed".
107
117
 
118
+ ### The Second Session (Cross-Session Recall)
119
+
120
+ pmem's value appears when you come back. Open a new terminal or start a new agent session the next day:
121
+
122
+ ```bash
123
+ pmem session start -a "Claude"
124
+ pmem recall --format compact --budget 2000
125
+ ```
126
+
127
+ Output:
128
+ ```
129
+ PROJECT: my-project
130
+ STAGE: Active development
131
+ FOCUS: Updated core module
132
+ NEXT: Continue development
133
+ STATE:
134
+ - Core module value updated to 2
135
+ READ_IF_NEEDED:
136
+ .pmem/state.md
137
+ .pmem/next.md
138
+ .pmem/modules/core.md
139
+ ```
140
+
141
+ In a single command you restored the project context, last state, and what to read next — without re-reading all your source files or asking "where were we?" This is pmem's core value: **cross-session project memory**.
142
+
143
+ ### Agent-Native Init (for scripts and CI)
144
+
145
+ For agents and scripts that can't answer TTY prompts:
146
+
147
+ ```bash
148
+ pmem init my-project --guided \
149
+ --description "A backend service" \
150
+ --stage "Alpha" \
151
+ --next "Set up CI/CD"
152
+ ```
153
+
154
+ Or with a JSON file:
155
+
156
+ ```bash
157
+ pmem init my-project --answers ./pmem-init.json
158
+ ```
159
+
108
160
  ## Core Concepts
109
161
 
110
162
  ### Markdown Cards
@@ -275,6 +327,10 @@ Agents should parse command output and treat code `1` according to the command c
275
327
 
276
328
  Source-of-truth files are Markdown cards. `pmem.db` and `indexes/` are generated runtime data.
277
329
 
330
+ ## Integrating with Agent Frameworks
331
+
332
+ See [docs/usage.md](docs/usage.md) for a step-by-step guide to integrating pmem with Claude Code, Codex, and Cursor.
333
+
278
334
  ## Troubleshooting
279
335
 
280
336
  ### No `.pmem` Directory
@@ -327,16 +383,18 @@ pmem verify
327
383
 
328
384
  ## Roadmap
329
385
 
330
- v0.5 is the Productization Beta milestone:
386
+ **v0.5 Productization Beta** — shipped on npm as `pmem-ai`:
387
+ - README, quick start, and [usage guide](docs/usage.md)
388
+ - E2E suite, CI/CD, error UX, release checklist
331
389
 
332
- - README and quick start
333
- - npm package readiness
334
- - install smoke E2E
335
- - real project workflow E2E
336
- - agent instruction sync
337
- - release checklist
390
+ **v0.6 Agent-native Workflow Polish** in development:
391
+ - Non-interactive init (`--description`/`--stage`/`--next` flags, `--answers` file)
392
+ - Claude Code slash commands (`/pmem-recall`, `/pmem-ask`, `/pmem-update`, `/pmem-distill`)
393
+ - Actionable empty states and error messages
394
+ - Session fault tolerance
395
+ - Integration verification enhanced
338
396
 
339
- Deferred beyond v0.5:
397
+ Deferred:
340
398
 
341
399
  - embedding
342
400
  - `pmem serve` / MCP / REST
@@ -1 +1 @@
1
- {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../src/commands/ask.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,UAAU,CAAC;AAwB5D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,SAAqB,GAAG,IAAI,CAwR7E"}
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../src/commands/ask.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,UAAU,CAAC;AAwB5D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,SAAqB,GAAG,IAAI,CAsS7E"}
@@ -254,9 +254,22 @@ function askCommand(query, format = 'compact') {
254
254
  recommended_files: recommendedFiles,
255
255
  evidence_paths: evidencePaths,
256
256
  };
257
+ // Build guidance for empty results
258
+ const askMessage = deduped.length > 0
259
+ ? `Found ${deduped.length} match(es).`
260
+ : 'No matching memory cards found.';
261
+ const askNextSteps = deduped.length > 0 ? [] : [
262
+ 'Try a different query keyword',
263
+ 'Run `pmem recall` for full project context',
264
+ 'Check that cards have relevant aliases and tags',
265
+ ];
257
266
  // Output
258
267
  if (format === 'json') {
259
- console.log(JSON.stringify(result, null, 2));
268
+ console.log(JSON.stringify({
269
+ ...result,
270
+ message: askMessage,
271
+ next_steps: askNextSteps,
272
+ }, null, 2));
260
273
  }
261
274
  else {
262
275
  // Adapt to formatOutput's expected shape
@@ -1 +1 @@
1
- {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/commands/ask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/commands/ask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CliFormat } from '../types';
2
+ export declare function doctorCommand(format?: CliFormat): void;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAW1C,wBAAgB,aAAa,CAAC,MAAM,GAAE,SAAqB,GAAG,IAAI,CA8FjE"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.doctorCommand = doctorCommand;
37
+ const path = __importStar(require("path"));
38
+ const child_process_1 = require("child_process");
39
+ const fs_1 = require("../core/fs");
40
+ const manifest_1 = require("../core/manifest");
41
+ const db_1 = require("../core/db");
42
+ const PMEM_DIR = '.pmem';
43
+ function doctorCommand(format = 'compact') {
44
+ const cwd = process.cwd();
45
+ const pmemPath = path.join(cwd, PMEM_DIR);
46
+ const checks = [];
47
+ // 1. .pmem/ exists
48
+ if (!(0, fs_1.fileExists)(pmemPath)) {
49
+ checks.push({ name: 'pmem_dir', status: 'error', message: '.pmem/ directory not found.', fix: 'Run: pmem init <project-name>' });
50
+ outputDoctor(checks, format);
51
+ return;
52
+ }
53
+ checks.push({ name: 'pmem_dir', status: 'ok', message: '.pmem/ directory exists.' });
54
+ // 2. Manifest
55
+ const manifest = (0, manifest_1.loadManifest)(pmemPath);
56
+ if (!manifest) {
57
+ checks.push({ name: 'manifest', status: 'error', message: 'manifest.yml not found or invalid.', fix: 'Run: pmem init' });
58
+ }
59
+ else {
60
+ const schemaVer = manifest.pmem?.schema_version;
61
+ checks.push({
62
+ name: 'manifest',
63
+ status: schemaVer ? 'ok' : 'warn',
64
+ message: schemaVer ? `manifest.yml valid (schema ${schemaVer}).` : 'manifest.yml valid but missing schema_version.',
65
+ fix: schemaVer ? undefined : 'Run: pmem migrate --to 0.3',
66
+ });
67
+ }
68
+ // 3. Database
69
+ const dbPath = path.join(pmemPath, 'pmem.db');
70
+ if (!(0, fs_1.fileExists)(dbPath)) {
71
+ checks.push({ name: 'database', status: 'warn', message: 'pmem.db not found.', fix: 'Run: pmem rebuild' });
72
+ }
73
+ else {
74
+ try {
75
+ const db = (0, db_1.openDatabase)(pmemPath);
76
+ (0, db_1.createSchema)(db);
77
+ // Card count
78
+ const cardRow = db.prepare('SELECT COUNT(*) as count FROM cards WHERE is_deleted = 0').get();
79
+ const cardCount = cardRow?.count ?? 0;
80
+ const isCandidate = db.prepare('SELECT COUNT(*) as count FROM cards WHERE is_deleted = 0 AND is_candidate = 1').get();
81
+ checks.push({
82
+ name: 'database',
83
+ status: 'ok',
84
+ message: `pmem.db healthy. ${cardCount} card(s)${isCandidate?.count > 0 ? ` (${isCandidate.count} candidate(s))` : ''}.`,
85
+ });
86
+ // 4. Cards
87
+ if (cardCount === 0) {
88
+ checks.push({ name: 'cards', status: 'warn', message: 'No memory cards found.', fix: 'Create a module card with source_files, then run: pmem rebuild' });
89
+ }
90
+ else {
91
+ checks.push({ name: 'cards', status: 'ok', message: `${cardCount} active card(s).` });
92
+ }
93
+ // 5. Dirty flags
94
+ const dirtyRow = db.prepare('SELECT COUNT(*) as count FROM dirty_flags WHERE resolved_at IS NULL').get();
95
+ const dirtyCount = dirtyRow?.count ?? 0;
96
+ if (dirtyCount > 0) {
97
+ checks.push({ name: 'dirty_flags', status: 'warn', message: `${dirtyCount} unresolved dirty flag(s).`, fix: 'Run: pmem update --suggest' });
98
+ }
99
+ else {
100
+ checks.push({ name: 'dirty_flags', status: 'ok', message: 'No unresolved dirty flags.' });
101
+ }
102
+ // 6. Active session
103
+ const sessionRow = db.prepare("SELECT id, agent_name FROM sessions WHERE ended_at IS NULL ORDER BY created_at DESC LIMIT 1").get();
104
+ if (sessionRow) {
105
+ checks.push({ name: 'session', status: 'ok', message: `Active session: ${sessionRow.id}${sessionRow.agent_name ? ` (${sessionRow.agent_name})` : ''}.` });
106
+ }
107
+ else {
108
+ checks.push({ name: 'session', status: 'warn', message: 'No active session.', fix: 'Run: pmem session start -a "<agent-name>"' });
109
+ }
110
+ (0, db_1.closeDatabase)();
111
+ }
112
+ catch {
113
+ checks.push({ name: 'database', status: 'error', message: 'pmem.db is corrupted or not a valid database.', fix: 'Back up the file, then run: pmem rebuild --full' });
114
+ }
115
+ }
116
+ // 7. Git availability
117
+ try {
118
+ (0, child_process_1.execSync)('git rev-parse --git-dir', { cwd, stdio: 'ignore' });
119
+ checks.push({ name: 'git', status: 'ok', message: 'Git repository detected.' });
120
+ }
121
+ catch {
122
+ checks.push({ name: 'git', status: 'warn', message: 'Not a Git repository.', fix: 'pmem status and mark-dirty --auto will use mtime fallback.' });
123
+ }
124
+ // 8. Integrations
125
+ if (manifest && manifest.integrations?.active?.length > 0) {
126
+ const active = manifest.integrations.active;
127
+ checks.push({ name: 'integrations', status: 'ok', message: `${active.length} active: ${active.join(', ')}.` });
128
+ }
129
+ else {
130
+ checks.push({ name: 'integrations', status: 'warn', message: 'No integrations installed.', fix: 'Run: pmem integration install <framework>' });
131
+ }
132
+ outputDoctor(checks, format);
133
+ }
134
+ function outputDoctor(checks, format) {
135
+ if (format === 'json') {
136
+ const okCount = checks.filter(c => c.status === 'ok').length;
137
+ const warnCount = checks.filter(c => c.status === 'warn').length;
138
+ const errorCount = checks.filter(c => c.status === 'error').length;
139
+ console.log(JSON.stringify({
140
+ overall: errorCount > 0 ? 'error' : warnCount > 0 ? 'warn' : 'ok',
141
+ summary: `${okCount} ok, ${warnCount} warning(s), ${errorCount} error(s)`,
142
+ checks: checks.map(c => ({
143
+ name: c.name,
144
+ status: c.status,
145
+ message: c.message,
146
+ ...(c.fix ? { fix: c.fix } : {}),
147
+ })),
148
+ }, null, 2));
149
+ }
150
+ else {
151
+ const icons = { ok: '✓', warn: '⚠', error: '✗' };
152
+ for (const check of checks) {
153
+ console.log(`${icons[check.status]} ${check.message}`);
154
+ if (check.fix)
155
+ console.log(` ${check.fix}`);
156
+ }
157
+ const errorCount = checks.filter(c => c.status === 'error').length;
158
+ const warnCount = checks.filter(c => c.status === 'warn').length;
159
+ if (errorCount > 0 || warnCount > 0) {
160
+ process.exit(errorCount > 0 ? 2 : 1);
161
+ }
162
+ }
163
+ }
164
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  export declare function initCommand(options: {
2
2
  guided?: boolean;
3
3
  projectName?: string;
4
+ description?: string;
5
+ stage?: string;
6
+ next?: string;
7
+ answers?: string;
4
8
  }): Promise<void>;
5
9
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA6XA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsLpG"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA8ZA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwPhB"}
@@ -386,6 +386,32 @@ pmem init --guided
386
386
  `;
387
387
  (0, fs_1.atomicWrite)(path.join(pmemPath, 'candidates', 'modules.generated.md'), candidatesContent);
388
388
  }
389
+ // === Answers File ===
390
+ function loadAnswersFile(filePath) {
391
+ const cwd = process.cwd();
392
+ const absPath = path.resolve(cwd, filePath);
393
+ if (!fs.existsSync(absPath)) {
394
+ console.error(`Answers file not found: ${absPath}`);
395
+ return null;
396
+ }
397
+ try {
398
+ const raw = fs.readFileSync(absPath, 'utf-8');
399
+ const parsed = JSON.parse(raw);
400
+ if (typeof parsed !== 'object' || parsed === null) {
401
+ console.error('Answers file must contain a JSON object.');
402
+ return null;
403
+ }
404
+ return {
405
+ description: typeof parsed.description === 'string' ? parsed.description : undefined,
406
+ stage: typeof parsed.stage === 'string' ? parsed.stage : undefined,
407
+ next: typeof parsed.next === 'string' ? parsed.next : undefined,
408
+ };
409
+ }
410
+ catch (err) {
411
+ console.error(`Failed to parse answers file: ${err?.message || err}`);
412
+ return null;
413
+ }
414
+ }
389
415
  // === Main Command ===
390
416
  async function initCommand(options) {
391
417
  const cwd = process.cwd();
@@ -398,10 +424,87 @@ async function initCommand(options) {
398
424
  const name = options.projectName || path.basename(cwd);
399
425
  // Run project scan (used by both modes)
400
426
  const scan = scanProject();
401
- // Guided mode: ask questions interactively
427
+ // Resolve guided info from args, answers file, or interactive prompt
402
428
  let guidedInfo = null;
403
429
  if (options.guided) {
404
- guidedInfo = await guidedInit(name);
430
+ // Merge: answers file first, then CLI args override
431
+ const answers = {};
432
+ if (options.answers) {
433
+ const fileAnswers = loadAnswersFile(options.answers);
434
+ if (!fileAnswers) {
435
+ console.error('Failed to load answers file. Falling back to defaults.');
436
+ }
437
+ else {
438
+ Object.assign(answers, fileAnswers);
439
+ }
440
+ }
441
+ if (options.description)
442
+ answers.description = options.description;
443
+ if (options.stage)
444
+ answers.stage = options.stage;
445
+ if (options.next)
446
+ answers.next = options.next;
447
+ const hasDescription = !!answers.description;
448
+ const hasStage = !!answers.stage;
449
+ const hasNext = !!answers.next;
450
+ // All three present → non-interactive mode
451
+ if (hasDescription && hasStage && hasNext) {
452
+ guidedInfo = {
453
+ description: answers.description,
454
+ stage: answers.stage,
455
+ nextStep: answers.next,
456
+ };
457
+ }
458
+ else if (hasDescription || hasStage || hasNext) {
459
+ // Partial args → error with guidance
460
+ const missing = [];
461
+ if (!hasDescription)
462
+ missing.push('--description');
463
+ if (!hasStage)
464
+ missing.push('--stage');
465
+ if (!hasNext)
466
+ missing.push('--next');
467
+ console.error(`Incomplete non-interactive init. Missing: ${missing.join(', ')}`);
468
+ console.error('Provide all three flags, use --answers <file.json>, or run without flags for interactive mode.');
469
+ return;
470
+ }
471
+ else {
472
+ // No args → interactive TTY
473
+ guidedInfo = await guidedInit(name);
474
+ }
475
+ }
476
+ else if (options.answers) {
477
+ // --answers without --guided: also valid, implied guided
478
+ const fileAnswers = loadAnswersFile(options.answers);
479
+ if (!fileAnswers) {
480
+ console.error('Failed to load answers file.');
481
+ return;
482
+ }
483
+ if (options.description)
484
+ fileAnswers.description = options.description;
485
+ if (options.stage)
486
+ fileAnswers.stage = options.stage;
487
+ if (options.next)
488
+ fileAnswers.next = options.next;
489
+ if (fileAnswers.description && fileAnswers.stage && fileAnswers.next) {
490
+ guidedInfo = {
491
+ description: fileAnswers.description,
492
+ stage: fileAnswers.stage,
493
+ nextStep: fileAnswers.next,
494
+ };
495
+ }
496
+ else {
497
+ const missing = [];
498
+ if (!fileAnswers.description)
499
+ missing.push('description');
500
+ if (!fileAnswers.stage)
501
+ missing.push('stage');
502
+ if (!fileAnswers.next)
503
+ missing.push('next');
504
+ console.error(`Answers file missing required fields: ${missing.join(', ')}`);
505
+ console.error('File must contain: { "description": "...", "stage": "...", "next": "..." }');
506
+ return;
507
+ }
405
508
  }
406
509
  // Create directory structure
407
510
  const dirs = [
@@ -424,7 +527,7 @@ async function initCommand(options) {
424
527
  (0, fs_1.ensureDir)(path.join(cwd, dir));
425
528
  }
426
529
  // Write manifest with appropriate init mode
427
- if (options.guided && guidedInfo) {
530
+ if (guidedInfo) {
428
531
  const manifest = (0, manifest_1.getDefaultManifest)(name, 'guided');
429
532
  (0, manifest_1.saveManifest)(pmemPath, manifest);
430
533
  // Write richer guided memory files
@@ -446,7 +549,7 @@ async function initCommand(options) {
446
549
  (0, fs_1.writeFile)(path.join(pmemPath, 'skills', 'code-task.md'), CODE_TASK_SKILL);
447
550
  (0, fs_1.writeFile)(path.join(pmemPath, 'skills', 'update.md'), UPDATE_SKILL);
448
551
  (0, fs_1.writeFile)(path.join(pmemPath, 'skills', 'distill.md'), DISTILL_SKILL);
449
- // Write integration templates with v0.5 Productization Beta workflow instructions
552
+ // Write integration templates with v0.6 Agent-native Workflow Polish instructions
450
553
  (0, fs_1.writeFile)(path.join(pmemPath, 'integrations', 'claude-code', 'CLAUDE.md'), `# pmem integration for Claude Code
451
554
 
452
555
  pmem keeps project memory in Markdown cards under .pmem/ and rebuilds SQLite indexes for fast recall. Markdown cards are the source of truth; do not edit .pmem/pmem.db directly.
@@ -549,8 +652,10 @@ Markdown cards under \`.pmem/\` are canonical. \`.pmem/pmem.db\` is a rebuildabl
549
652
  if (scan.candidates.length > 0) {
550
653
  console.log(`Module candidates: ${scan.candidates.map(c => c.suggestedId).join(', ')}`);
551
654
  }
552
- if (options.guided) {
553
- console.log(`\nGuided setup complete. Run \`pmem recall\` to see your project state.`);
655
+ if (guidedInfo) {
656
+ const mode = options.guided && !options.description && !options.stage && !options.next && !options.answers
657
+ ? 'interactive' : 'non-interactive';
658
+ console.log(`\nGuided setup (${mode}) complete. Run \`pmem recall\` to see your project state.`);
554
659
  }
555
660
  else {
556
661
  console.log(`\nNext: run \`pmem recall\` to see your project state, or \`pmem init --guided\` for interactive setup.`);