@synth-coder/memhub 0.2.4 → 0.2.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.
Files changed (53) hide show
  1. package/.eslintrc.cjs +45 -45
  2. package/.factory/commands/opsx-apply.md +150 -150
  3. package/.factory/commands/opsx-archive.md +155 -155
  4. package/.factory/commands/opsx-explore.md +171 -171
  5. package/.factory/commands/opsx-propose.md +104 -104
  6. package/.factory/skills/openspec-apply-change/SKILL.md +156 -156
  7. package/.factory/skills/openspec-archive-change/SKILL.md +114 -114
  8. package/.factory/skills/openspec-explore/SKILL.md +288 -288
  9. package/.factory/skills/openspec-propose/SKILL.md +110 -110
  10. package/.github/workflows/ci.yml +110 -110
  11. package/.github/workflows/release.yml +3 -0
  12. package/.iflow/commands/opsx-apply.md +152 -152
  13. package/.iflow/commands/opsx-archive.md +157 -157
  14. package/.iflow/commands/opsx-explore.md +173 -173
  15. package/.iflow/commands/opsx-propose.md +106 -106
  16. package/.iflow/skills/openspec-apply-change/SKILL.md +156 -156
  17. package/.iflow/skills/openspec-archive-change/SKILL.md +114 -114
  18. package/.iflow/skills/openspec-explore/SKILL.md +288 -288
  19. package/.iflow/skills/openspec-propose/SKILL.md +110 -110
  20. package/.prettierrc +11 -11
  21. package/AGENTS.md +167 -167
  22. package/README.md +17 -9
  23. package/README.zh-CN.md +246 -238
  24. package/dist/src/cli/agents/index.d.ts +0 -1
  25. package/dist/src/cli/agents/index.d.ts.map +1 -1
  26. package/dist/src/cli/agents/index.js +0 -3
  27. package/dist/src/cli/agents/index.js.map +1 -1
  28. package/dist/src/cli/index.js +0 -0
  29. package/dist/src/cli/init.d.ts.map +1 -1
  30. package/dist/src/cli/init.js +4 -24
  31. package/dist/src/cli/init.js.map +1 -1
  32. package/dist/src/cli/types.d.ts +2 -2
  33. package/dist/src/cli/types.d.ts.map +1 -1
  34. package/dist/src/cli/types.js +0 -11
  35. package/dist/src/cli/types.js.map +1 -1
  36. package/docs/user-guide.md +8 -6
  37. package/package.json +16 -16
  38. package/src/cli/agents/claude-code.ts +1 -1
  39. package/src/cli/agents/cline.ts +1 -1
  40. package/src/cli/agents/codex.ts +2 -2
  41. package/src/cli/agents/cursor.ts +1 -1
  42. package/src/cli/agents/factory-droid.ts +1 -1
  43. package/src/cli/agents/gemini-cli.ts +1 -1
  44. package/src/cli/agents/windsurf.ts +1 -1
  45. package/src/cli/init.ts +14 -14
  46. package/test/cli/init.test.ts +23 -1
  47. package/tsconfig.json +25 -25
  48. package/tsconfig.test.json +8 -8
  49. package/vitest.config.ts +29 -29
  50. package/dist/src/cli/agents/codex.d.ts +0 -5
  51. package/dist/src/cli/agents/codex.d.ts.map +0 -1
  52. package/dist/src/cli/agents/codex.js +0 -14
  53. package/dist/src/cli/agents/codex.js.map +0 -1
@@ -68,17 +68,6 @@ export const AGENTS = [
68
68
  globalInstructionsFile: '.gemini/GEMINI.md',
69
69
  instructionsFormat: 'markdown',
70
70
  },
71
- {
72
- id: 'codex',
73
- name: 'Codex',
74
- description: 'OpenAI CLI coding agent',
75
- configFile: '.codex/config.toml',
76
- globalConfigFile: '.codex/config.toml',
77
- configFormat: 'toml',
78
- instructionsFile: 'AGENTS.md',
79
- globalInstructionsFile: '.codex/AGENTS.md',
80
- instructionsFormat: 'markdown',
81
- },
82
71
  ];
83
72
  export function getAgentById(id) {
84
73
  return AGENTS.find(agent => agent.id === id);
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,MAAM,CAAC,MAAM,MAAM,GAA2B;IAC5C;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,kBAAkB;QAC9B,gBAAgB,EAAE,kBAAkB;QACpC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,cAAc;QAChC,sBAAsB,EAAE,cAAc;QACtC,kBAAkB,EAAE,OAAO;KAC5B;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0BAA0B;QACvC,UAAU,EAAE,WAAW;QACvB,gBAAgB,EAAE,uBAAuB;QACzC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,WAAW;QAC7B,sBAAsB,EAAE,mBAAmB;QAC3C,kBAAkB,EAAE,UAAU;KAC/B;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,iBAAiB;QAC7B,gBAAgB,EAAE,iBAAiB;QACnC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,aAAa;QAC/B,sBAAsB,EAAE,aAAa;QACrC,kBAAkB,EAAE,OAAO;KAC5B;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,mCAAmC;QAC/C,gBAAgB,EAAE,mCAAmC;QACrD,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,gBAAgB;QAClC,sBAAsB,EAAE,gBAAgB;QACxC,kBAAkB,EAAE,OAAO;KAC5B;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,yBAAyB;QACtC,UAAU,EAAE,mBAAmB;QAC/B,gBAAgB,EAAE,mBAAmB;QACrC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,oBAAoB;QACtC,sBAAsB,EAAE,oBAAoB;QAC5C,kBAAkB,EAAE,UAAU;KAC/B;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,uBAAuB;QACnC,gBAAgB,EAAE,uBAAuB;QACzC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,WAAW;QAC7B,sBAAsB,EAAE,mBAAmB;QAC3C,kBAAkB,EAAE,UAAU;KAC/B;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yBAAyB;QACtC,UAAU,EAAE,oBAAoB;QAChC,gBAAgB,EAAE,oBAAoB;QACtC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,WAAW;QAC7B,sBAAsB,EAAE,kBAAkB;QAC1C,kBAAkB,EAAE,UAAU;KAC/B;CACO,CAAC;AAEX,MAAM,UAAU,YAAY,CAAC,EAAa;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0BH,MAAM,CAAC,MAAM,MAAM,GAA2B;IAC5C;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,kBAAkB;QAC9B,gBAAgB,EAAE,kBAAkB;QACpC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,cAAc;QAChC,sBAAsB,EAAE,cAAc;QACtC,kBAAkB,EAAE,OAAO;KAC5B;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0BAA0B;QACvC,UAAU,EAAE,WAAW;QACvB,gBAAgB,EAAE,uBAAuB;QACzC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,WAAW;QAC7B,sBAAsB,EAAE,mBAAmB;QAC3C,kBAAkB,EAAE,UAAU;KAC/B;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,iBAAiB;QAC7B,gBAAgB,EAAE,iBAAiB;QACnC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,aAAa;QAC/B,sBAAsB,EAAE,aAAa;QACrC,kBAAkB,EAAE,OAAO;KAC5B;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,mCAAmC;QAC/C,gBAAgB,EAAE,mCAAmC;QACrD,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,gBAAgB;QAClC,sBAAsB,EAAE,gBAAgB;QACxC,kBAAkB,EAAE,OAAO;KAC5B;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,yBAAyB;QACtC,UAAU,EAAE,mBAAmB;QAC/B,gBAAgB,EAAE,mBAAmB;QACrC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,oBAAoB;QACtC,sBAAsB,EAAE,oBAAoB;QAC5C,kBAAkB,EAAE,UAAU;KAC/B;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,uBAAuB;QACnC,gBAAgB,EAAE,uBAAuB;QACzC,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,WAAW;QAC7B,sBAAsB,EAAE,mBAAmB;QAC3C,kBAAkB,EAAE,UAAU;KAC/B;CACO,CAAC;AAEX,MAAM,UAAU,YAAY,CAAC,EAAa;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -9,7 +9,7 @@ MemHub is a Git-friendly memory system for AI coding agents. It helps your AI re
9
9
  Configure MemHub for your AI agent with one command:
10
10
 
11
11
  ```bash
12
- npx -y @synth-coder/memhub init
12
+ npx -y @synth-coder/memhub@latest init
13
13
  ```
14
14
 
15
15
  This will:
@@ -29,20 +29,22 @@ This will:
29
29
  | Gemini CLI | `~/.gemini/settings.json` | `.gemini/settings.json` |
30
30
  | Codex | `~/.codex/config.toml` | `.codex/config.toml` |
31
31
 
32
+ Note: Codex config uses TOML key `mcp_servers` (not `mcpServers`).
33
+
32
34
  ### CLI Options
33
35
 
34
36
  ```bash
35
37
  # Interactive selection (global - default)
36
- npx -y @synth-coder/memhub init
38
+ npx -y @synth-coder/memhub@latest init
37
39
 
38
40
  # Specify agent
39
- npx -y @synth-coder/memhub init -a claude-code
41
+ npx -y @synth-coder/memhub@latest init -a claude-code
40
42
 
41
43
  # Configure for current project only (local)
42
- npx -y @synth-coder/memhub init -a cursor -l
44
+ npx -y @synth-coder/memhub@latest init -a cursor -l
43
45
 
44
46
  # Update existing configuration
45
- npx -y @synth-coder/memhub init -a claude-code --force
47
+ npx -y @synth-coder/memhub@latest init -a claude-code --force
46
48
  ```
47
49
 
48
50
  | Option | Description |
@@ -95,7 +97,7 @@ By default, memories are stored in `~/.memhub/` (global) or `./memories/` (local
95
97
 
96
98
  ```bash
97
99
  # Custom storage location
98
- MEMHUB_STORAGE_PATH=/path/to/memories npx -y @synth-coder/memhub
100
+ MEMHUB_STORAGE_PATH=/path/to/memories npx -y @synth-coder/memhub@latest
99
101
  ```
100
102
 
101
103
  ### File Format
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synth-coder/memhub",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "A Git-friendly memory hub using Markdown-based storage with YAML Front Matter",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -8,6 +8,20 @@
8
8
  "bin": {
9
9
  "memhub": "dist/src/cli/index.js"
10
10
  },
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsc --watch",
14
+ "test": "vitest run",
15
+ "test:watch": "vitest",
16
+ "test:coverage": "vitest run --coverage",
17
+ "lint": "eslint src test --ext .ts",
18
+ "lint:fix": "eslint src test --ext .ts --fix",
19
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"docs/**/*.md\"",
20
+ "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" \"docs/**/*.md\"",
21
+ "typecheck": "tsc --noEmit --project tsconfig.json",
22
+ "quality": "npm run lint && npm run typecheck && npm run test:coverage",
23
+ "ci": "npm run quality"
24
+ },
11
25
  "keywords": [
12
26
  "mcp",
13
27
  "memory",
@@ -43,19 +57,5 @@
43
57
  },
44
58
  "engines": {
45
59
  "node": ">=20.0.0"
46
- },
47
- "scripts": {
48
- "build": "tsc",
49
- "dev": "tsc --watch",
50
- "test": "vitest run",
51
- "test:watch": "vitest",
52
- "test:coverage": "vitest run --coverage",
53
- "lint": "eslint src test --ext .ts",
54
- "lint:fix": "eslint src test --ext .ts --fix",
55
- "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"docs/**/*.md\"",
56
- "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" \"docs/**/*.md\"",
57
- "typecheck": "tsc --noEmit --project tsconfig.json",
58
- "quality": "npm run lint && npm run typecheck && npm run test:coverage",
59
- "ci": "npm run quality"
60
60
  }
61
- }
61
+ }
@@ -7,7 +7,7 @@ export function generateClaudeCodeConfig(_memhubPath: string): Record<string, un
7
7
  mcpServers: {
8
8
  memhub: {
9
9
  command: 'npx',
10
- args: ['-y', '@synth-coder/memhub'],
10
+ args: ['-y', '@synth-coder/memhub@latest'],
11
11
  },
12
12
  },
13
13
  };
@@ -7,7 +7,7 @@ export function generateClineConfig(_memhubPath: string): Record<string, unknown
7
7
  mcpServers: {
8
8
  memhub: {
9
9
  command: 'npx',
10
- args: ['-y', '@synth-coder/memhub'],
10
+ args: ['-y', '@synth-coder/memhub@latest'],
11
11
  },
12
12
  },
13
13
  };
@@ -4,10 +4,10 @@
4
4
 
5
5
  export function generateCodexConfig(_memhubPath: string): Record<string, unknown> {
6
6
  return {
7
- mcpServers: {
7
+ mcp_servers: {
8
8
  memhub: {
9
9
  command: 'npx',
10
- args: ['-y', '@synth-coder/memhub'],
10
+ args: ['-y', '@synth-coder/memhub@latest'],
11
11
  },
12
12
  },
13
13
  };
@@ -7,7 +7,7 @@ export function generateCursorConfig(_memhubPath: string): Record<string, unknow
7
7
  mcpServers: {
8
8
  memhub: {
9
9
  command: 'npx',
10
- args: ['-y', '@synth-coder/memhub'],
10
+ args: ['-y', '@synth-coder/memhub@latest'],
11
11
  },
12
12
  },
13
13
  };
@@ -7,7 +7,7 @@ export function generateFactoryDroidConfig(_memhubPath: string): Record<string,
7
7
  mcpServers: {
8
8
  memhub: {
9
9
  command: 'npx',
10
- args: ['-y', '@synth-coder/memhub'],
10
+ args: ['-y', '@synth-coder/memhub@latest'],
11
11
  },
12
12
  },
13
13
  };
@@ -7,7 +7,7 @@ export function generateGeminiCliConfig(_memhubPath: string): Record<string, unk
7
7
  mcpServers: {
8
8
  memhub: {
9
9
  command: 'npx',
10
- args: ['-y', '@synth-coder/memhub'],
10
+ args: ['-y', '@synth-coder/memhub@latest'],
11
11
  },
12
12
  },
13
13
  };
@@ -7,7 +7,7 @@ export function generateWindsurfConfig(_memhubPath: string): Record<string, unkn
7
7
  mcpServers: {
8
8
  memhub: {
9
9
  command: 'npx',
10
- args: ['-y', '@synth-coder/memhub'],
10
+ args: ['-y', '@synth-coder/memhub@latest'],
11
11
  },
12
12
  },
13
13
  };
package/src/cli/init.ts CHANGED
@@ -62,6 +62,14 @@ function stringifyConfig(
62
62
  return JSON.stringify(config, null, 2);
63
63
  }
64
64
 
65
+ function isRecord(value: unknown): value is Record<string, unknown> {
66
+ return typeof value === 'object' && value !== null;
67
+ }
68
+
69
+ function getTargetMcpKey(config: Record<string, unknown>): 'mcpServers' | 'mcp_servers' {
70
+ return isRecord(config.mcp_servers) ? 'mcp_servers' : 'mcpServers';
71
+ }
72
+
65
73
  /**
66
74
  * Merge memhub config into existing config
67
75
  * Preserves all existing servers, adds/updates memhub
@@ -71,19 +79,10 @@ function mergeMcpConfig(
71
79
  newConfig: Record<string, unknown>
72
80
  ): Record<string, unknown> {
73
81
  const result = { ...existing };
74
-
75
- // Ensure mcpServers object exists
76
- if (typeof result.mcpServers !== 'object' || result.mcpServers === null) {
77
- result.mcpServers = {};
78
- }
79
-
80
- // Merge memhub server
81
- const existingServers = result.mcpServers as Record<string, unknown>;
82
- const newServers = newConfig.mcpServers as Record<string, unknown>;
83
-
84
- for (const [serverName, serverConfig] of Object.entries(newServers)) {
85
- existingServers[serverName] = serverConfig;
86
- }
82
+ const targetKey = getTargetMcpKey(newConfig);
83
+ const existingServers = isRecord(result[targetKey]) ? result[targetKey] : {};
84
+ const newServers = (newConfig[targetKey] as Record<string, unknown>) ?? {};
85
+ result[targetKey] = { ...existingServers, ...newServers };
87
86
 
88
87
  return result;
89
88
  }
@@ -158,7 +157,8 @@ export function initAgent(options: InitOptions): InitOutcome {
158
157
  try {
159
158
  const existingContent = readFileSync(configPath, 'utf-8');
160
159
  const existingConfig = parseConfig(existingContent, configFormat);
161
- const servers = existingConfig.mcpServers as Record<string, unknown> | undefined;
160
+ const targetKey = getTargetMcpKey(newConfig);
161
+ const servers = existingConfig[targetKey] as Record<string, unknown> | undefined;
162
162
 
163
163
  if (servers && 'memhub' in servers) {
164
164
  return {
@@ -7,6 +7,7 @@ import { mkdirSync, rmSync, existsSync, readFileSync, writeFileSync } from 'fs';
7
7
  import { join } from 'path';
8
8
  import { initAgent } from '../../src/cli/init.js';
9
9
  import { AGENTS, type AgentType } from '../../src/cli/types.js';
10
+ import { parse as parseToml } from 'smol-toml';
10
11
  import {
11
12
  extractMemHubVersion,
12
13
  needsUpdate,
@@ -209,6 +210,26 @@ describe('CLI Init Command', () => {
209
210
  expect(config.mcpServers.memhub.command).toBe('npx');
210
211
  });
211
212
 
213
+ it('should generate valid TOML config for codex', () => {
214
+ initAgent({
215
+ agent: 'codex',
216
+ local: true,
217
+ projectPath: TEST_DIR,
218
+ });
219
+
220
+ const configPath = join(TEST_DIR, '.codex/config.toml');
221
+ const content = readFileSync(configPath, 'utf-8');
222
+ const config = parseToml(content) as Record<string, unknown>;
223
+ const servers = config.mcp_servers as Record<string, unknown>;
224
+ const memhub = servers.memhub as Record<string, unknown>;
225
+ const args = memhub.args as string[];
226
+
227
+ expect(config).toHaveProperty('mcp_servers');
228
+ expect(servers).toHaveProperty('memhub');
229
+ expect(memhub.command).toBe('npx');
230
+ expect(args).toContain('@synth-coder/memhub@latest');
231
+ });
232
+
212
233
  it('should generate instructions with version tag', () => {
213
234
  initAgent({
214
235
  agent: 'claude-code',
@@ -260,7 +281,7 @@ describe('CLI Init Command', () => {
260
281
  mcpServers: {
261
282
  memhub: {
262
283
  command: 'npx',
263
- args: ['-y', '@synth-coder/memhub'],
284
+ args: ['-y', '@synth-coder/memhub@latest'],
264
285
  },
265
286
  },
266
287
  };
@@ -315,6 +336,7 @@ describe('CLI Init Command', () => {
315
336
  expect(config.mcpServers).toHaveProperty('memhub');
316
337
  expect(config.mcpServers.memhub.command).toBe('npx');
317
338
  });
339
+
318
340
  });
319
341
 
320
342
  describe('Instructions Update', () => {
package/tsconfig.json CHANGED
@@ -1,26 +1,26 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "NodeNext",
5
- "moduleResolution": "NodeNext",
6
- "lib": ["ES2022"],
7
- "outDir": "./dist",
8
- "rootDir": ".",
9
- "strict": true,
10
- "esModuleInterop": true,
11
- "skipLibCheck": true,
12
- "forceConsistentCasingInFileNames": true,
13
- "resolveJsonModule": true,
14
- "declaration": true,
15
- "declarationMap": true,
16
- "sourceMap": true,
17
- "noUnusedLocals": true,
18
- "noUnusedParameters": true,
19
- "noImplicitReturns": true,
20
- "noFallthroughCasesInSwitch": true,
21
- "verbatimModuleSyntax": true,
22
- "isolatedModules": true
23
- },
24
- "include": ["src/**/*"],
25
- "exclude": ["node_modules", "dist"]
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "lib": ["ES2022"],
7
+ "outDir": "./dist",
8
+ "rootDir": ".",
9
+ "strict": true,
10
+ "esModuleInterop": true,
11
+ "skipLibCheck": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "resolveJsonModule": true,
14
+ "declaration": true,
15
+ "declarationMap": true,
16
+ "sourceMap": true,
17
+ "noUnusedLocals": true,
18
+ "noUnusedParameters": true,
19
+ "noImplicitReturns": true,
20
+ "noFallthroughCasesInSwitch": true,
21
+ "verbatimModuleSyntax": true,
22
+ "isolatedModules": true
23
+ },
24
+ "include": ["src/**/*"],
25
+ "exclude": ["node_modules", "dist"]
26
26
  }
@@ -1,8 +1,8 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "noUnusedLocals": false,
5
- "noUnusedParameters": false
6
- },
7
- "include": ["src/**/*", "test/**/*", "vitest.config.ts"]
8
- }
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "noUnusedLocals": false,
5
+ "noUnusedParameters": false
6
+ },
7
+ "include": ["src/**/*", "test/**/*", "vitest.config.ts"]
8
+ }
package/vitest.config.ts CHANGED
@@ -1,29 +1,29 @@
1
- import { defineConfig } from 'vitest/config';
2
-
3
- export default defineConfig({
4
- test: {
5
- globals: true,
6
- environment: 'node',
7
- coverage: {
8
- provider: 'v8',
9
- reporter: ['text', 'json', 'html', 'lcov'],
10
- thresholds: {
11
- lines: 80,
12
- functions: 80,
13
- branches: 78,
14
- statements: 80,
15
- },
16
- exclude: [
17
- 'node_modules/',
18
- 'dist/',
19
- 'test/',
20
- '**/*.d.ts',
21
- '**/*.config.*',
22
- '**/index.ts',
23
- '.eslintrc.cjs',
24
- 'src/services/embedding-service.ts',
25
- 'src/server/mcp-server.ts',
26
- ],
27
- },
28
- },
29
- });
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ globals: true,
6
+ environment: 'node',
7
+ coverage: {
8
+ provider: 'v8',
9
+ reporter: ['text', 'json', 'html', 'lcov'],
10
+ thresholds: {
11
+ lines: 80,
12
+ functions: 80,
13
+ branches: 78,
14
+ statements: 80,
15
+ },
16
+ exclude: [
17
+ 'node_modules/',
18
+ 'dist/',
19
+ 'test/',
20
+ '**/*.d.ts',
21
+ '**/*.config.*',
22
+ '**/index.ts',
23
+ '.eslintrc.cjs',
24
+ 'src/services/embedding-service.ts',
25
+ 'src/server/mcp-server.ts',
26
+ ],
27
+ },
28
+ },
29
+ });
@@ -1,5 +0,0 @@
1
- /**
2
- * Codex MCP configuration generator
3
- */
4
- export declare function generateCodexConfig(_memhubPath: string): Record<string, unknown>;
5
- //# sourceMappingURL=codex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../../src/cli/agents/codex.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAShF"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Codex MCP configuration generator
3
- */
4
- export function generateCodexConfig(_memhubPath) {
5
- return {
6
- mcpServers: {
7
- memhub: {
8
- command: 'npx',
9
- args: ['-y', '@synth-coder/memhub'],
10
- },
11
- },
12
- };
13
- }
14
- //# sourceMappingURL=codex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../src/cli/agents/codex.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,OAAO;QACL,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,qBAAqB,CAAC;aACpC;SACF;KACF,CAAC;AACJ,CAAC"}