@beomjk/emdd 0.1.2 → 0.1.3
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/README.md +4 -2
- package/dist/cli.js +11 -1
- package/dist/commands/list.d.ts +4 -0
- package/dist/commands/list.js +22 -0
- package/dist/graph/types.js +2 -2
- package/dist/mcp-server/index.js +2 -1
- package/dist/version.d.ts +1 -0
- package/dist/version.js +4 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -97,7 +97,8 @@ See the [Quick Start Guide](docs/QUICK_START.md) for a full walkthrough.
|
|
|
97
97
|
|
|
98
98
|
| Command | Description |
|
|
99
99
|
|---------|-------------|
|
|
100
|
-
| `emdd init [path]` | Initialize a new EMDD project |
|
|
100
|
+
| `emdd init [path]` | Initialize a new EMDD project (`--tool claude\|cursor\|windsurf\|cline\|copilot\|all`, `--lang en\|ko`) |
|
|
101
|
+
| `emdd list [path]` | List nodes (`--type`, `--status` filters) |
|
|
101
102
|
| `emdd new <type> <slug>` | Create a node (hypothesis, experiment, finding, ...) |
|
|
102
103
|
| `emdd link <source> <target> <relation>` | Add a link between nodes |
|
|
103
104
|
| `emdd update <node-id> --set key=value` | Update node frontmatter |
|
|
@@ -109,8 +110,9 @@ See the [Quick Start Guide](docs/QUICK_START.md) for a full walkthrough.
|
|
|
109
110
|
| `emdd backlog [path]` | List incomplete items across all nodes |
|
|
110
111
|
| `emdd index [path]` | Generate `_index.md` |
|
|
111
112
|
| `emdd graph [path]` | Generate `_graph.mmd` (Mermaid) |
|
|
113
|
+
| `emdd mcp` | Start MCP server (stdio transport) |
|
|
112
114
|
|
|
113
|
-
|
|
115
|
+
The `init` command supports `--lang en|ko` for bilingual project setup.
|
|
114
116
|
|
|
115
117
|
## Phased Adoption
|
|
116
118
|
|
package/dist/cli.js
CHANGED
|
@@ -12,8 +12,10 @@ import { doneCommand } from './commands/done.js';
|
|
|
12
12
|
import { indexCommand } from './commands/index.js';
|
|
13
13
|
import { graphCommand } from './commands/graph.js';
|
|
14
14
|
import { backlogCommand } from './commands/backlog.js';
|
|
15
|
+
import { listCommand } from './commands/list.js';
|
|
15
16
|
import { resolveGraphDir } from './graph/loader.js';
|
|
16
17
|
import { startMcpServer } from './mcp-server/index.js';
|
|
18
|
+
import { VERSION } from './version.js';
|
|
17
19
|
function withCliErrorHandling(fn) {
|
|
18
20
|
return async (...args) => {
|
|
19
21
|
try {
|
|
@@ -30,7 +32,7 @@ const program = new Command();
|
|
|
30
32
|
program
|
|
31
33
|
.name('emdd')
|
|
32
34
|
.description('CLI for Evolving Mindmap-Driven Development')
|
|
33
|
-
.version(
|
|
35
|
+
.version(VERSION);
|
|
34
36
|
program
|
|
35
37
|
.command('init [path]')
|
|
36
38
|
.description('Initialize EMDD project')
|
|
@@ -46,6 +48,14 @@ program
|
|
|
46
48
|
.action(withCliErrorHandling(async (type, slug, options) => {
|
|
47
49
|
await newCommand(type, slug, options);
|
|
48
50
|
}));
|
|
51
|
+
program
|
|
52
|
+
.command('list [path]')
|
|
53
|
+
.description('List nodes, optionally filtered by type and/or status')
|
|
54
|
+
.option('--type <type>', 'Filter by node type')
|
|
55
|
+
.option('--status <status>', 'Filter by status')
|
|
56
|
+
.action(withCliErrorHandling(async (path, options) => {
|
|
57
|
+
await listCommand(path, options);
|
|
58
|
+
}));
|
|
49
59
|
program
|
|
50
60
|
.command('lint [path]')
|
|
51
61
|
.description('Validate graph schema and links')
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { resolveGraphDir } from '../graph/loader.js';
|
|
2
|
+
import { listNodes } from '../graph/operations.js';
|
|
3
|
+
export async function listCommand(targetPath, options) {
|
|
4
|
+
const graphDir = resolveGraphDir(targetPath);
|
|
5
|
+
const filter = {};
|
|
6
|
+
if (options.type)
|
|
7
|
+
filter.type = options.type;
|
|
8
|
+
if (options.status)
|
|
9
|
+
filter.status = options.status.toUpperCase();
|
|
10
|
+
const nodes = await listNodes(graphDir, filter);
|
|
11
|
+
if (nodes.length === 0) {
|
|
12
|
+
console.log('No nodes found.');
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
for (const node of nodes) {
|
|
16
|
+
const status = node.status ?? '-';
|
|
17
|
+
const conf = node.confidence !== null && node.confidence !== undefined
|
|
18
|
+
? ` (${node.confidence.toFixed(2)})`
|
|
19
|
+
: '';
|
|
20
|
+
console.log(`[${node.id}] ${node.title} ${node.type} ${status}${conf}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
package/dist/graph/types.js
CHANGED
|
@@ -50,11 +50,11 @@ export const ID_PREFIXES = {
|
|
|
50
50
|
export const PREFIX_TO_TYPE = Object.fromEntries(Object.entries(ID_PREFIXES).map(([type, prefix]) => [prefix, type]));
|
|
51
51
|
// ── Valid Statuses per Node Type ────────────────────────────────────
|
|
52
52
|
export const VALID_STATUSES = {
|
|
53
|
-
hypothesis: ['PROPOSED', 'TESTING', 'SUPPORTED', 'REFUTED', 'REVISED', 'DEFERRED'],
|
|
53
|
+
hypothesis: ['PROPOSED', 'TESTING', 'SUPPORTED', 'REFUTED', 'REVISED', 'DEFERRED', 'CONTESTED'],
|
|
54
54
|
experiment: ['PLANNED', 'RUNNING', 'COMPLETED', 'FAILED', 'ABANDONED'],
|
|
55
55
|
finding: ['DRAFT', 'VALIDATED', 'PROMOTED', 'RETRACTED'],
|
|
56
56
|
knowledge: ['ACTIVE', 'DISPUTED', 'SUPERSEDED', 'RETRACTED'],
|
|
57
|
-
question: ['OPEN', 'RESOLVED', 'ANSWERED', 'DEFERRED'],
|
|
57
|
+
question: ['OPEN', 'RESOLVED', 'ANSWERED', 'DEFERRED', 'CONVERGED', 'MERGED', 'ABANDONED'],
|
|
58
58
|
decision: ['PROPOSED', 'ACCEPTED', 'SUPERSEDED', 'REVERTED'],
|
|
59
59
|
episode: ['ACTIVE', 'COMPLETED'],
|
|
60
60
|
};
|
package/dist/mcp-server/index.js
CHANGED
|
@@ -11,8 +11,9 @@ import { registerContextLoading } from './prompts/context-loading.js';
|
|
|
11
11
|
import { registerEpisodeCreation } from './prompts/episode-creation.js';
|
|
12
12
|
import { registerConsolidation } from './prompts/consolidation.js';
|
|
13
13
|
import { registerHealthReview } from './prompts/health-review.js';
|
|
14
|
+
import { VERSION } from '../version.js';
|
|
14
15
|
export function createEmddMcpServer() {
|
|
15
|
-
const server = new McpServer({ name: 'emdd', version:
|
|
16
|
+
const server = new McpServer({ name: 'emdd', version: VERSION });
|
|
16
17
|
// Tools
|
|
17
18
|
registerListNodes(server);
|
|
18
19
|
registerReadNode(server);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const VERSION: string;
|
package/dist/version.js
ADDED