@helloworlkd/pam-cli 0.1.16

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 (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/dist/commands/add.d.ts +3 -0
  4. package/dist/commands/add.d.ts.map +1 -0
  5. package/dist/commands/add.js +42 -0
  6. package/dist/commands/add.js.map +1 -0
  7. package/dist/commands/approve.d.ts +3 -0
  8. package/dist/commands/approve.d.ts.map +1 -0
  9. package/dist/commands/approve.js +16 -0
  10. package/dist/commands/approve.js.map +1 -0
  11. package/dist/commands/archive.d.ts +3 -0
  12. package/dist/commands/archive.d.ts.map +1 -0
  13. package/dist/commands/archive.js +16 -0
  14. package/dist/commands/archive.js.map +1 -0
  15. package/dist/commands/audit.d.ts +3 -0
  16. package/dist/commands/audit.d.ts.map +1 -0
  17. package/dist/commands/audit.js +62 -0
  18. package/dist/commands/audit.js.map +1 -0
  19. package/dist/commands/capture.d.ts +3 -0
  20. package/dist/commands/capture.d.ts.map +1 -0
  21. package/dist/commands/capture.js +39 -0
  22. package/dist/commands/capture.js.map +1 -0
  23. package/dist/commands/checkpoint.d.ts +3 -0
  24. package/dist/commands/checkpoint.d.ts.map +1 -0
  25. package/dist/commands/checkpoint.js +48 -0
  26. package/dist/commands/checkpoint.js.map +1 -0
  27. package/dist/commands/context.d.ts +3 -0
  28. package/dist/commands/context.d.ts.map +1 -0
  29. package/dist/commands/context.js +35 -0
  30. package/dist/commands/context.js.map +1 -0
  31. package/dist/commands/debug.d.ts +3 -0
  32. package/dist/commands/debug.d.ts.map +1 -0
  33. package/dist/commands/debug.js +58 -0
  34. package/dist/commands/debug.js.map +1 -0
  35. package/dist/commands/decay.d.ts +3 -0
  36. package/dist/commands/decay.d.ts.map +1 -0
  37. package/dist/commands/decay.js +73 -0
  38. package/dist/commands/decay.js.map +1 -0
  39. package/dist/commands/delete.d.ts +3 -0
  40. package/dist/commands/delete.d.ts.map +1 -0
  41. package/dist/commands/delete.js +31 -0
  42. package/dist/commands/delete.js.map +1 -0
  43. package/dist/commands/doctor.d.ts +3 -0
  44. package/dist/commands/doctor.d.ts.map +1 -0
  45. package/dist/commands/doctor.js +145 -0
  46. package/dist/commands/doctor.js.map +1 -0
  47. package/dist/commands/edit.d.ts +3 -0
  48. package/dist/commands/edit.d.ts.map +1 -0
  49. package/dist/commands/edit.js +35 -0
  50. package/dist/commands/edit.js.map +1 -0
  51. package/dist/commands/export-cmd.d.ts +3 -0
  52. package/dist/commands/export-cmd.d.ts.map +1 -0
  53. package/dist/commands/export-cmd.js +26 -0
  54. package/dist/commands/export-cmd.js.map +1 -0
  55. package/dist/commands/handoff.d.ts +3 -0
  56. package/dist/commands/handoff.d.ts.map +1 -0
  57. package/dist/commands/handoff.js +87 -0
  58. package/dist/commands/handoff.js.map +1 -0
  59. package/dist/commands/hook.d.ts +3 -0
  60. package/dist/commands/hook.d.ts.map +1 -0
  61. package/dist/commands/hook.js +92 -0
  62. package/dist/commands/hook.js.map +1 -0
  63. package/dist/commands/import-cmd.d.ts +3 -0
  64. package/dist/commands/import-cmd.d.ts.map +1 -0
  65. package/dist/commands/import-cmd.js +36 -0
  66. package/dist/commands/import-cmd.js.map +1 -0
  67. package/dist/commands/index-cmd.d.ts +3 -0
  68. package/dist/commands/index-cmd.d.ts.map +1 -0
  69. package/dist/commands/index-cmd.js +32 -0
  70. package/dist/commands/index-cmd.js.map +1 -0
  71. package/dist/commands/init.d.ts +3 -0
  72. package/dist/commands/init.d.ts.map +1 -0
  73. package/dist/commands/init.js +29 -0
  74. package/dist/commands/init.js.map +1 -0
  75. package/dist/commands/intelligence.d.ts +3 -0
  76. package/dist/commands/intelligence.d.ts.map +1 -0
  77. package/dist/commands/intelligence.js +165 -0
  78. package/dist/commands/intelligence.js.map +1 -0
  79. package/dist/commands/list.d.ts +3 -0
  80. package/dist/commands/list.d.ts.map +1 -0
  81. package/dist/commands/list.js +34 -0
  82. package/dist/commands/list.js.map +1 -0
  83. package/dist/commands/redact.d.ts +3 -0
  84. package/dist/commands/redact.d.ts.map +1 -0
  85. package/dist/commands/redact.js +25 -0
  86. package/dist/commands/redact.js.map +1 -0
  87. package/dist/commands/reject.d.ts +3 -0
  88. package/dist/commands/reject.d.ts.map +1 -0
  89. package/dist/commands/reject.js +16 -0
  90. package/dist/commands/reject.js.map +1 -0
  91. package/dist/commands/restore.d.ts +3 -0
  92. package/dist/commands/restore.d.ts.map +1 -0
  93. package/dist/commands/restore.js +16 -0
  94. package/dist/commands/restore.js.map +1 -0
  95. package/dist/commands/review.d.ts +3 -0
  96. package/dist/commands/review.d.ts.map +1 -0
  97. package/dist/commands/review.js +26 -0
  98. package/dist/commands/review.js.map +1 -0
  99. package/dist/commands/search.d.ts +3 -0
  100. package/dist/commands/search.d.ts.map +1 -0
  101. package/dist/commands/search.js +99 -0
  102. package/dist/commands/search.js.map +1 -0
  103. package/dist/commands/semantic.d.ts +3 -0
  104. package/dist/commands/semantic.d.ts.map +1 -0
  105. package/dist/commands/semantic.js +49 -0
  106. package/dist/commands/semantic.js.map +1 -0
  107. package/dist/commands/server.d.ts +3 -0
  108. package/dist/commands/server.d.ts.map +1 -0
  109. package/dist/commands/server.js +11 -0
  110. package/dist/commands/server.js.map +1 -0
  111. package/dist/commands/show.d.ts +3 -0
  112. package/dist/commands/show.d.ts.map +1 -0
  113. package/dist/commands/show.js +27 -0
  114. package/dist/commands/show.js.map +1 -0
  115. package/dist/commands/smoke-test.d.ts +3 -0
  116. package/dist/commands/smoke-test.d.ts.map +1 -0
  117. package/dist/commands/smoke-test.js +32 -0
  118. package/dist/commands/smoke-test.js.map +1 -0
  119. package/dist/commands/status.d.ts +3 -0
  120. package/dist/commands/status.d.ts.map +1 -0
  121. package/dist/commands/status.js +39 -0
  122. package/dist/commands/status.js.map +1 -0
  123. package/dist/commands/supersede.d.ts +3 -0
  124. package/dist/commands/supersede.d.ts.map +1 -0
  125. package/dist/commands/supersede.js +78 -0
  126. package/dist/commands/supersede.js.map +1 -0
  127. package/dist/commands/ui.d.ts +3 -0
  128. package/dist/commands/ui.d.ts.map +1 -0
  129. package/dist/commands/ui.js +159 -0
  130. package/dist/commands/ui.js.map +1 -0
  131. package/dist/commands/upgrade-state.d.ts +24 -0
  132. package/dist/commands/upgrade-state.d.ts.map +1 -0
  133. package/dist/commands/upgrade-state.js +52 -0
  134. package/dist/commands/upgrade-state.js.map +1 -0
  135. package/dist/commands/upgrade.d.ts +3 -0
  136. package/dist/commands/upgrade.d.ts.map +1 -0
  137. package/dist/commands/upgrade.js +78 -0
  138. package/dist/commands/upgrade.js.map +1 -0
  139. package/dist/index.d.ts +3 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +73 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/mcp/server.d.ts +2 -0
  144. package/dist/mcp/server.d.ts.map +1 -0
  145. package/dist/mcp/server.js +2 -0
  146. package/dist/mcp/server.js.map +1 -0
  147. package/dist/self-upgrade.d.ts +3 -0
  148. package/dist/self-upgrade.d.ts.map +1 -0
  149. package/dist/self-upgrade.js +203 -0
  150. package/dist/self-upgrade.js.map +1 -0
  151. package/dist/version.d.ts +2 -0
  152. package/dist/version.d.ts.map +1 -0
  153. package/dist/version.js +15 -0
  154. package/dist/version.js.map +1 -0
  155. package/package.json +61 -0
  156. package/scripts/postinstall.mjs +128 -0
@@ -0,0 +1,29 @@
1
+ import { configureCodexGlobalIntegration, configureProjectIntegrations, initAutoCaptureConfig, initProjectMemory, } from '@helloworlkd/pam-core';
2
+ export function registerInitCommand(program) {
3
+ const init = program.command('init').description('Initialize memory storage');
4
+ init
5
+ .option('--codex-global', 'Also configure the global Codex MCP server in ~/.codex/config.toml')
6
+ .option('--no-integrations', 'Skip agent and IDE integration files')
7
+ .action(async (options) => {
8
+ const cwd = process.cwd();
9
+ const path = await initProjectMemory(cwd);
10
+ await initAutoCaptureConfig(path);
11
+ console.log(`Memory initialized at: ${path}`);
12
+ if (options.integrations !== false) {
13
+ const { results } = await configureProjectIntegrations(cwd);
14
+ console.log('\nProject integrations:');
15
+ for (const result of results) {
16
+ const suffix = result.reason ? ` (${result.reason})` : '';
17
+ console.log(` ${result.status}: ${result.path}${suffix}`);
18
+ }
19
+ }
20
+ if (options.codexGlobal) {
21
+ const result = await configureCodexGlobalIntegration();
22
+ const suffix = result.reason ? ` (${result.reason})` : '';
23
+ console.log('\nCodex global integration:');
24
+ console.log(` ${result.status}: ${result.path}${suffix}`);
25
+ console.log(' Restart Codex for the MCP server to be available in new sessions.');
26
+ }
27
+ });
28
+ }
29
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,uBAAuB,CAAA;AAO9B,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAA;IAE7E,IAAI;SACD,MAAM,CAAC,gBAAgB,EAAE,oEAAoE,CAAC;SAC9F,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACzC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;QAE7C,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YACnC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,4BAA4B,CAAC,GAAG,CAAC,CAAA;YAC3D,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;YACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBACzD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,+BAA+B,EAAE,CAAA;YACtD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YACzD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAA;YAC1D,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAA;QACpF,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerIntelligenceCommand(program: Command): void;
3
+ //# sourceMappingURL=intelligence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../src/commands/intelligence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsBnC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,QAmI3D"}
@@ -0,0 +1,165 @@
1
+ import { analyzeCleanup, analyzeDistillation, applyDistillationProposal, applyRecommendation, buildKnowledgeGraph, deferRecommendation, generateRecommendations, getProjectMemoryPath, listRecommendations, rejectRecommendation, seedIntelligenceEvaluationDataset, } from '@helloworlkd/pam-core';
2
+ export function registerIntelligenceCommand(program) {
3
+ const intelligence = program
4
+ .command('intelligence')
5
+ .description('Analyze memory quality, recommendations, distillation, cleanup, and graph');
6
+ intelligence
7
+ .command('recommend')
8
+ .description('Generate reviewable AI maintenance recommendations')
9
+ .option('--json', 'Print JSON')
10
+ .action(async (options) => {
11
+ const report = await generateRecommendations(resolveBasePath(options));
12
+ if (options.json)
13
+ return printJson(report);
14
+ printRecommendations(report.recommendations);
15
+ console.log(`\nOpen recommendations: ${report.metrics.proposed_recommendations}`);
16
+ });
17
+ intelligence
18
+ .command('list')
19
+ .description('List stored recommendations')
20
+ .option('--json', 'Print JSON')
21
+ .action(async (options) => {
22
+ const recommendations = await listRecommendations(resolveBasePath(options));
23
+ if (options.json)
24
+ return printJson(recommendations);
25
+ printRecommendations(recommendations);
26
+ });
27
+ intelligence
28
+ .command('apply <id>')
29
+ .description('Accept and apply a recommendation')
30
+ .option('--confirm-physical-delete', 'Allow a physical delete recommendation to delete files')
31
+ .option('--json', 'Print JSON')
32
+ .action(async (id, options) => {
33
+ const result = await applyRecommendation(resolveBasePath(options), id, {
34
+ confirmPhysicalDelete: options.confirmPhysicalDelete,
35
+ });
36
+ if (options.json)
37
+ return printJson(result);
38
+ console.log(`Applied recommendation ${result.recommendation.id}`);
39
+ if (result.memory)
40
+ console.log(`Created/updated memory: ${result.memory.metadata.id}`);
41
+ });
42
+ intelligence
43
+ .command('reject <id>')
44
+ .description('Reject a recommendation so it does not immediately reappear')
45
+ .action(async (id, options) => {
46
+ const recommendation = await rejectRecommendation(resolveBasePath(options), id);
47
+ if (!recommendation) {
48
+ console.error(`Recommendation not found: ${id}`);
49
+ process.exit(1);
50
+ }
51
+ console.log(`Rejected recommendation ${id}`);
52
+ });
53
+ intelligence
54
+ .command('defer <id>')
55
+ .description('Defer a recommendation')
56
+ .action(async (id, options) => {
57
+ const recommendation = await deferRecommendation(resolveBasePath(options), id);
58
+ if (!recommendation) {
59
+ console.error(`Recommendation not found: ${id}`);
60
+ process.exit(1);
61
+ }
62
+ console.log(`Deferred recommendation ${id}`);
63
+ });
64
+ intelligence
65
+ .command('cleanup')
66
+ .description('Preview grouped cleanup recommendations')
67
+ .option('--json', 'Print JSON')
68
+ .action(async (options) => {
69
+ const cleanup = await analyzeCleanup(resolveBasePath(options));
70
+ if (options.json)
71
+ return printJson(cleanup);
72
+ const groups = groupBy(cleanup, (item) => item.action);
73
+ for (const [action, items] of Object.entries(groups)) {
74
+ console.log(`\n${action} (${items.length})`);
75
+ printRecommendations(items.map((item) => item.recommendation), ' ');
76
+ }
77
+ });
78
+ intelligence
79
+ .command('distill')
80
+ .description('Preview distillation proposals, or create distilled memories with --apply')
81
+ .option('--apply', 'Create distilled memories')
82
+ .option('--json', 'Print JSON')
83
+ .action(async (options) => {
84
+ const basePath = resolveBasePath(options);
85
+ const proposals = await analyzeDistillation(basePath);
86
+ if (options.apply) {
87
+ const created = [];
88
+ for (const proposal of proposals) {
89
+ created.push(await applyDistillationProposal(basePath, proposal));
90
+ }
91
+ if (options.json)
92
+ return printJson({ proposals, created });
93
+ console.log(`Created ${created.length} distilled memories`);
94
+ return;
95
+ }
96
+ if (options.json)
97
+ return printJson(proposals);
98
+ printDistillationProposals(proposals);
99
+ });
100
+ intelligence
101
+ .command('graph')
102
+ .description('Preview the Knowledge Graph with typed evidence-backed relations')
103
+ .option('--json', 'Print JSON')
104
+ .action(async (options) => {
105
+ const graph = await buildKnowledgeGraph(resolveBasePath(options));
106
+ if (options.json)
107
+ return printJson(graph);
108
+ console.log(`Entities: ${graph.metrics.entity_count}`);
109
+ console.log(`Relations: ${graph.metrics.relation_count}`);
110
+ console.log(`Evidence coverage: ${Math.round(graph.metrics.evidence_coverage * 100)}%`);
111
+ graph.relations.slice(0, 25).forEach((relation) => {
112
+ console.log(`${relation.id} | ${relation.type} | ${relation.source} -> ${relation.target} | evidence ${relation.evidence_ids.join(', ')}`);
113
+ });
114
+ });
115
+ intelligence
116
+ .command('seed-eval')
117
+ .description('Create the shared intelligence evaluation dataset')
118
+ .option('--json', 'Print JSON')
119
+ .action(async (options) => {
120
+ const result = await seedIntelligenceEvaluationDataset(resolveBasePath(options));
121
+ if (options.json)
122
+ return printJson(result);
123
+ console.log(`Created ${result.created} evaluation memories`);
124
+ for (const [category, count] of Object.entries(result.categories)) {
125
+ console.log(` ${category}: ${count}`);
126
+ }
127
+ });
128
+ }
129
+ function resolveBasePath(options) {
130
+ void options;
131
+ return getProjectMemoryPath(process.cwd());
132
+ }
133
+ function printRecommendations(recommendations, indent = '') {
134
+ if (!recommendations.length) {
135
+ console.log(`${indent}No recommendations`);
136
+ return;
137
+ }
138
+ for (const recommendation of recommendations) {
139
+ console.log(`${indent}${recommendation.id} | ${recommendation.status} | ${recommendation.type} | ${recommendation.action ?? 'inspect'}`);
140
+ console.log(`${indent} ${recommendation.title}`);
141
+ console.log(`${indent} Evidence: ${recommendation.evidence_ids.join(', ') || 'none'}`);
142
+ }
143
+ }
144
+ function printDistillationProposals(proposals) {
145
+ if (!proposals.length) {
146
+ console.log('No distillation proposals');
147
+ return;
148
+ }
149
+ for (const proposal of proposals) {
150
+ console.log(`${proposal.id} | ${proposal.type} | ${proposal.source_count} sources`);
151
+ console.log(` ${proposal.concept} | compression ratio ${proposal.compression_ratio}`);
152
+ console.log(` Sources: ${proposal.source_ids.slice(0, 12).join(', ')}`);
153
+ }
154
+ }
155
+ function printJson(value) {
156
+ console.log(JSON.stringify(value, null, 2));
157
+ }
158
+ function groupBy(items, getKey) {
159
+ return items.reduce((acc, item) => {
160
+ const key = getKey(item);
161
+ acc[key] = [...(acc[key] ?? []), item];
162
+ return acc;
163
+ }, {});
164
+ }
165
+ //# sourceMappingURL=intelligence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intelligence.js","sourceRoot":"","sources":["../../src/commands/intelligence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerListCommand(program: Command): void;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAoCnD"}
@@ -0,0 +1,34 @@
1
+ import { listMemories, getProjectMemoryPath } from '@helloworlkd/pam-core';
2
+ export function registerListCommand(program) {
3
+ program
4
+ .command('list')
5
+ .description('List all memories')
6
+ .option('--type <type>', 'Filter by type')
7
+ .option('--tag <tag>', 'Filter by tag')
8
+ .option('--status <status>', 'Filter by status')
9
+ .action(async (options) => {
10
+ const basePath = getProjectMemoryPath(process.cwd());
11
+ let memories = await listMemories(basePath);
12
+ if (options.type) {
13
+ memories = memories.filter((m) => m.metadata.type === options.type);
14
+ }
15
+ if (options.tag) {
16
+ memories = memories.filter((m) => m.metadata.tags.includes(options.tag));
17
+ }
18
+ if (options.status) {
19
+ memories = memories.filter((m) => m.metadata.status === options.status);
20
+ }
21
+ if (memories.length === 0) {
22
+ console.log('No memories found');
23
+ return;
24
+ }
25
+ for (const memory of memories) {
26
+ const { id, type, scope, status, tags } = memory.metadata;
27
+ const preview = memory.content.slice(0, 50).replace(/\n/g, ' ');
28
+ const tagStr = tags.length > 0 ? ` [${tags.join(', ')}]` : '';
29
+ console.log(`${id} | ${type} | ${scope} | ${status}${tagStr} | ${preview}...`);
30
+ }
31
+ console.log(`\nTotal: ${memories.length} memories`);
32
+ });
33
+ }
34
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE1E,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;SACzC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC;SACtC,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAEpD,IAAI,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAA;QAE3C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACrE,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QACzE,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;YAChC,OAAM;QACR,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;YACzD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,GAAG,MAAM,MAAM,OAAO,KAAK,CAAC,CAAA;QAChF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerRedactCommand(program: Command): void;
3
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/commands/redact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA2BrD"}
@@ -0,0 +1,25 @@
1
+ import { readMemory, updateMemory, redactContent, getProjectMemoryPath, } from '@helloworlkd/pam-core';
2
+ export function registerRedactCommand(program) {
3
+ program
4
+ .command('redact <id>')
5
+ .description('Redact sensitive information from a memory')
6
+ .action(async (id) => {
7
+ const basePath = getProjectMemoryPath(process.cwd());
8
+ const memory = await readMemory(basePath, id);
9
+ if (!memory) {
10
+ console.error(`Memory not found: ${id}`);
11
+ process.exit(1);
12
+ }
13
+ const result = redactContent(memory.content);
14
+ if (result.redactions.length === 0) {
15
+ console.log('No sensitive information found to redact');
16
+ return;
17
+ }
18
+ await updateMemory(basePath, id, { content: result.content });
19
+ console.log(`Redacted ${result.redactions.length} item(s):`);
20
+ for (const redaction of result.redactions) {
21
+ console.log(` - ${redaction.type}: ${redaction.count}`);
22
+ }
23
+ });
24
+ }
25
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/commands/redact.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAEpD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAE5C,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;YACvD,OAAM;QACR,CAAC;QAED,MAAM,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QAE7D,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,UAAU,CAAC,MAAM,WAAW,CAAC,CAAA;QAC5D,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerRejectCommand(program: Command): void;
3
+ //# sourceMappingURL=reject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reject.d.ts","sourceRoot":"","sources":["../../src/commands/reject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAgBrD"}
@@ -0,0 +1,16 @@
1
+ import { rejectMemory, getProjectMemoryPath } from '@helloworlkd/pam-core';
2
+ export function registerRejectCommand(program) {
3
+ program
4
+ .command('reject <id>')
5
+ .description('Reject a proposed memory')
6
+ .action(async (id) => {
7
+ const basePath = getProjectMemoryPath(process.cwd());
8
+ const rejected = await rejectMemory(basePath, id);
9
+ if (!rejected) {
10
+ console.error(`Memory not found or not proposed: ${id}`);
11
+ process.exit(1);
12
+ }
13
+ console.log(`Memory rejected: ${id}`);
14
+ });
15
+ }
16
+ //# sourceMappingURL=reject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reject.js","sourceRoot":"","sources":["../../src/commands/reject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE1E,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAEpD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAEjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAA;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerRestoreCommand(program: Command): void;
3
+ //# sourceMappingURL=restore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAgBtD"}
@@ -0,0 +1,16 @@
1
+ import { restoreMemory, getProjectMemoryPath } from '@helloworlkd/pam-core';
2
+ export function registerRestoreCommand(program) {
3
+ program
4
+ .command('restore <id>')
5
+ .description('Restore a deleted memory')
6
+ .action(async (id) => {
7
+ const basePath = getProjectMemoryPath(process.cwd());
8
+ const restored = await restoreMemory(basePath, id);
9
+ if (!restored) {
10
+ console.error(`Memory not found or not deleted: ${id}`);
11
+ process.exit(1);
12
+ }
13
+ console.log(`Memory restored: ${id}`);
14
+ });
15
+ }
16
+ //# sourceMappingURL=restore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE3E,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAEpD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAA;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerReviewCommand(program: Command): void;
3
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAyBrD"}
@@ -0,0 +1,26 @@
1
+ import { getProjectMemoryPath, listMemories } from '@helloworlkd/pam-core';
2
+ export function registerReviewCommand(program) {
3
+ program
4
+ .command('review')
5
+ .description('Show proposed memories waiting for approval')
6
+ .option('--limit <limit>', 'Maximum proposed memories to show', '20')
7
+ .action(async (options) => {
8
+ const basePath = getProjectMemoryPath(process.cwd());
9
+ const limit = Number.parseInt(options.limit, 10);
10
+ const memories = (await listMemories(basePath))
11
+ .filter((memory) => memory.metadata.status === 'proposed')
12
+ .sort((a, b) => b.metadata.updated_at.localeCompare(a.metadata.updated_at))
13
+ .slice(0, Number.isFinite(limit) ? limit : 20);
14
+ if (memories.length === 0) {
15
+ console.log('No proposed memories waiting for review.');
16
+ return;
17
+ }
18
+ console.log(`Proposed memories (${memories.length} shown):\n`);
19
+ for (const memory of memories) {
20
+ const preview = memory.content.replace(/\s+/g, ' ').slice(0, 120);
21
+ console.log(`${memory.metadata.id} | ${memory.metadata.type} | ${preview}...`);
22
+ }
23
+ console.log('\nApprove with `pam approve <id>` or open `pam ui`.');
24
+ });
25
+ }
26
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAE1E,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,EAAE,IAAI,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;aAC5C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;aACzD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC1E,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAEhD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;YACvD,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAA;QAC9D,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACjE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,OAAO,KAAK,CAAC,CAAA;QAChF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSearchCommand(program: Command): void;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAiHrD"}
@@ -0,0 +1,99 @@
1
+ import { MemoryIndex, SemanticIndex, getProjectMemoryPath, indexAllMemories, listMemories, readMemory, } from '@helloworlkd/pam-core';
2
+ export function registerSearchCommand(program) {
3
+ program
4
+ .command('search [query]')
5
+ .description('Search memories')
6
+ .option('--type <type>', 'Filter by type')
7
+ .option('--tag <tag>', 'Filter by tag')
8
+ .option('--limit <limit>', 'Maximum results', '50')
9
+ .option('--semantic', 'Use semantic vector search')
10
+ .action(async (query, options) => {
11
+ const basePath = getProjectMemoryPath(process.cwd());
12
+ const limit = parseInt(options.limit, 10);
13
+ if (options.semantic) {
14
+ if (!query) {
15
+ console.error('Semantic search requires a query');
16
+ process.exit(1);
17
+ }
18
+ console.log('Loading embedding provider and indexing active memories...');
19
+ try {
20
+ const semanticIndex = new SemanticIndex(basePath);
21
+ const memories = (await listMemories(basePath)).filter((memory) => memory.metadata.status === 'active');
22
+ for (const memory of memories) {
23
+ await semanticIndex.indexMemory(memory.metadata.id, memory.content);
24
+ }
25
+ const semanticResults = await semanticIndex.search(query, limit);
26
+ semanticIndex.close();
27
+ const hydratedResults = [];
28
+ for (const result of semanticResults) {
29
+ const memory = await readMemory(basePath, result.id);
30
+ if (!memory || memory.metadata.status !== 'active')
31
+ continue;
32
+ if (options.type && memory.metadata.type !== options.type)
33
+ continue;
34
+ if (options.tag && !memory.metadata.tags.includes(options.tag))
35
+ continue;
36
+ hydratedResults.push({ memory, score: result.score });
37
+ }
38
+ if (hydratedResults.length === 0) {
39
+ console.log('No memories found');
40
+ return;
41
+ }
42
+ for (const result of hydratedResults) {
43
+ const preview = result.memory.content.slice(0, 60).replace(/\n/g, ' ');
44
+ const tagStr = result.memory.metadata.tags.length > 0
45
+ ? ` [${result.memory.metadata.tags.join(', ')}]`
46
+ : '';
47
+ const score = (result.score * 100).toFixed(1);
48
+ console.log(`${result.memory.metadata.id} | ${result.memory.metadata.type} | ${result.memory.metadata.scope}${tagStr} | ${score}% | ${preview}...`);
49
+ }
50
+ console.log(`\nTotal: ${hydratedResults.length} results`);
51
+ }
52
+ catch (error) {
53
+ console.error('Error during semantic search:', formatSemanticError(error));
54
+ process.exit(1);
55
+ }
56
+ return;
57
+ }
58
+ await indexAllMemories(basePath);
59
+ const index = new MemoryIndex(basePath);
60
+ let usedNaturalFallback = false;
61
+ let results = index.search({
62
+ query,
63
+ type: options.type,
64
+ tag: options.tag,
65
+ limit,
66
+ natural: false,
67
+ });
68
+ if (query && results.length === 0) {
69
+ results = index.search({
70
+ query,
71
+ type: options.type,
72
+ tag: options.tag,
73
+ limit,
74
+ natural: true,
75
+ });
76
+ usedNaturalFallback = results.length > 0;
77
+ }
78
+ index.close();
79
+ if (results.length === 0) {
80
+ console.log(query
81
+ ? 'No memories found. Try --semantic for embedding search if lexical matching is too narrow.'
82
+ : 'No memories found');
83
+ return;
84
+ }
85
+ if (usedNaturalFallback) {
86
+ console.log('No exact lexical hits; showing related matches from tags and synonyms.\n');
87
+ }
88
+ for (const result of results) {
89
+ const preview = result.content.slice(0, 60).replace(/\n/g, ' ');
90
+ const tagStr = result.tags.length > 0 ? ` [${result.tags.join(', ')}]` : '';
91
+ console.log(`${result.id} | ${result.type} | ${result.scope}${tagStr} | ${preview}...`);
92
+ }
93
+ console.log(`\nTotal: ${results.length} results`);
94
+ });
95
+ }
96
+ function formatSemanticError(error) {
97
+ return error instanceof Error ? error.message : String(error);
98
+ }
99
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSemanticCommand(program: Command): void;
3
+ //# sourceMappingURL=semantic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/commands/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QAuDvD"}
@@ -0,0 +1,49 @@
1
+ import { SemanticIndex, listMemories, readMemory, getProjectMemoryPath, } from '@helloworlkd/pam-core';
2
+ export function registerSemanticCommand(program) {
3
+ program
4
+ .command('semantic-search <query>')
5
+ .description('Search memories using semantic similarity')
6
+ .option('-l, --limit <number>', 'Maximum number of results', '10')
7
+ .action(async (query, options) => {
8
+ const basePath = getProjectMemoryPath(process.cwd());
9
+ const limit = parseInt(options.limit, 10);
10
+ console.log(`Searching semantically for: "${query}"`);
11
+ console.log('Loading embedding provider (first local run may take a moment)...\n');
12
+ try {
13
+ const semanticIndex = new SemanticIndex(basePath);
14
+ const memories = (await listMemories(basePath)).filter((memory) => memory.metadata.status === 'active');
15
+ for (const memory of memories) {
16
+ await semanticIndex.indexMemory(memory.metadata.id, memory.content);
17
+ }
18
+ const results = await semanticIndex.search(query, limit);
19
+ if (results.length === 0) {
20
+ console.log('No results found.');
21
+ semanticIndex.close();
22
+ return;
23
+ }
24
+ console.log(`Found ${results.length} result(s):\n`);
25
+ for (const result of results) {
26
+ const memory = await readMemory(basePath, result.id);
27
+ if (!memory) {
28
+ continue;
29
+ }
30
+ const score = (result.score * 100).toFixed(1);
31
+ const preview = memory.content.slice(0, 100).replace(/\n/g, ' ');
32
+ console.log(`[${score}%] ${memory.metadata.id}`);
33
+ console.log(` Type: ${memory.metadata.type} | Scope: ${memory.metadata.scope}`);
34
+ console.log(` Tags: ${memory.metadata.tags.join(', ') || 'none'}`);
35
+ console.log(` Preview: ${preview}...`);
36
+ console.log();
37
+ }
38
+ semanticIndex.close();
39
+ }
40
+ catch (error) {
41
+ console.error('Error during semantic search:', formatSemanticError(error));
42
+ process.exit(1);
43
+ }
44
+ });
45
+ }
46
+ function formatSemanticError(error) {
47
+ return error instanceof Error ? error.message : String(error);
48
+ }
49
+ //# sourceMappingURL=semantic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/commands/semantic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerServerCommand(program: Command): void;
3
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAUrD"}
@@ -0,0 +1,11 @@
1
+ export function registerServerCommand(program) {
2
+ const server = program.command('server').description('Run PAM servers');
3
+ server
4
+ .command('start')
5
+ .description('Start the PAM MCP server over stdio')
6
+ .action(async () => {
7
+ const { startPamMcpServer } = await import('../mcp/server.js');
8
+ await startPamMcpServer({ cwd: process.cwd() });
9
+ });
10
+ }
11
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;IAEvE,MAAM;SACH,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC9D,MAAM,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;AACN,CAAC"}