agentmesh-ai 0.1.0

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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +247 -0
  3. package/dist/cli/commands/init.d.ts +2 -0
  4. package/dist/cli/commands/init.d.ts.map +1 -0
  5. package/dist/cli/commands/init.js +134 -0
  6. package/dist/cli/commands/init.js.map +1 -0
  7. package/dist/cli/commands/memory.d.ts +8 -0
  8. package/dist/cli/commands/memory.d.ts.map +1 -0
  9. package/dist/cli/commands/memory.js +40 -0
  10. package/dist/cli/commands/memory.js.map +1 -0
  11. package/dist/cli/commands/serve.d.ts +8 -0
  12. package/dist/cli/commands/serve.d.ts.map +1 -0
  13. package/dist/cli/commands/serve.js +90 -0
  14. package/dist/cli/commands/serve.js.map +1 -0
  15. package/dist/cli/commands/setup.d.ts +2 -0
  16. package/dist/cli/commands/setup.d.ts.map +1 -0
  17. package/dist/cli/commands/setup.js +117 -0
  18. package/dist/cli/commands/setup.js.map +1 -0
  19. package/dist/cli/commands/status.d.ts +2 -0
  20. package/dist/cli/commands/status.d.ts.map +1 -0
  21. package/dist/cli/commands/status.js +66 -0
  22. package/dist/cli/commands/status.js.map +1 -0
  23. package/dist/cli/index.d.ts +3 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +50 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/conversation/client.d.ts +72 -0
  28. package/dist/conversation/client.d.ts.map +1 -0
  29. package/dist/conversation/client.js +245 -0
  30. package/dist/conversation/client.js.map +1 -0
  31. package/dist/conversation/index.d.ts +7 -0
  32. package/dist/conversation/index.d.ts.map +1 -0
  33. package/dist/conversation/index.js +4 -0
  34. package/dist/conversation/index.js.map +1 -0
  35. package/dist/conversation/protocol.d.ts +217 -0
  36. package/dist/conversation/protocol.d.ts.map +1 -0
  37. package/dist/conversation/protocol.js +7 -0
  38. package/dist/conversation/protocol.js.map +1 -0
  39. package/dist/conversation/recorder.d.ts +4 -0
  40. package/dist/conversation/recorder.d.ts.map +1 -0
  41. package/dist/conversation/recorder.js +60 -0
  42. package/dist/conversation/recorder.js.map +1 -0
  43. package/dist/conversation/server.d.ts +59 -0
  44. package/dist/conversation/server.d.ts.map +1 -0
  45. package/dist/conversation/server.js +529 -0
  46. package/dist/conversation/server.js.map +1 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +3 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/integrations/claude-md.d.ts +2 -0
  52. package/dist/integrations/claude-md.d.ts.map +1 -0
  53. package/dist/integrations/claude-md.js +35 -0
  54. package/dist/integrations/claude-md.js.map +1 -0
  55. package/dist/integrations/copilot.d.ts +2 -0
  56. package/dist/integrations/copilot.d.ts.map +1 -0
  57. package/dist/integrations/copilot.js +39 -0
  58. package/dist/integrations/copilot.js.map +1 -0
  59. package/dist/integrations/detect.d.ts +9 -0
  60. package/dist/integrations/detect.d.ts.map +1 -0
  61. package/dist/integrations/detect.js +34 -0
  62. package/dist/integrations/detect.js.map +1 -0
  63. package/dist/mcp/conversation-tools.d.ts +4 -0
  64. package/dist/mcp/conversation-tools.d.ts.map +1 -0
  65. package/dist/mcp/conversation-tools.js +540 -0
  66. package/dist/mcp/conversation-tools.js.map +1 -0
  67. package/dist/mcp/index.d.ts +3 -0
  68. package/dist/mcp/index.d.ts.map +1 -0
  69. package/dist/mcp/index.js +86 -0
  70. package/dist/mcp/index.js.map +1 -0
  71. package/dist/mcp/memory-tools.d.ts +4 -0
  72. package/dist/mcp/memory-tools.d.ts.map +1 -0
  73. package/dist/mcp/memory-tools.js +195 -0
  74. package/dist/mcp/memory-tools.js.map +1 -0
  75. package/dist/mcp/resources.d.ts +3 -0
  76. package/dist/mcp/resources.d.ts.map +1 -0
  77. package/dist/mcp/resources.js +23 -0
  78. package/dist/mcp/resources.js.map +1 -0
  79. package/dist/memory/index.d.ts +7 -0
  80. package/dist/memory/index.d.ts.map +1 -0
  81. package/dist/memory/index.js +6 -0
  82. package/dist/memory/index.js.map +1 -0
  83. package/dist/memory/merge-view.d.ts +9 -0
  84. package/dist/memory/merge-view.d.ts.map +1 -0
  85. package/dist/memory/merge-view.js +88 -0
  86. package/dist/memory/merge-view.js.map +1 -0
  87. package/dist/memory/reader.d.ts +8 -0
  88. package/dist/memory/reader.d.ts.map +1 -0
  89. package/dist/memory/reader.js +53 -0
  90. package/dist/memory/reader.js.map +1 -0
  91. package/dist/memory/schema.d.ts +154 -0
  92. package/dist/memory/schema.d.ts.map +1 -0
  93. package/dist/memory/schema.js +34 -0
  94. package/dist/memory/schema.js.map +1 -0
  95. package/dist/memory/searcher.d.ts +7 -0
  96. package/dist/memory/searcher.d.ts.map +1 -0
  97. package/dist/memory/searcher.js +49 -0
  98. package/dist/memory/searcher.js.map +1 -0
  99. package/dist/memory/secret-scanner.d.ts +21 -0
  100. package/dist/memory/secret-scanner.d.ts.map +1 -0
  101. package/dist/memory/secret-scanner.js +54 -0
  102. package/dist/memory/secret-scanner.js.map +1 -0
  103. package/dist/memory/types.d.ts +71 -0
  104. package/dist/memory/types.d.ts.map +1 -0
  105. package/dist/memory/types.js +5 -0
  106. package/dist/memory/types.js.map +1 -0
  107. package/dist/memory/writer.d.ts +4 -0
  108. package/dist/memory/writer.d.ts.map +1 -0
  109. package/dist/memory/writer.js +114 -0
  110. package/dist/memory/writer.js.map +1 -0
  111. package/dist/utils/git.d.ts +7 -0
  112. package/dist/utils/git.d.ts.map +1 -0
  113. package/dist/utils/git.js +46 -0
  114. package/dist/utils/git.js.map +1 -0
  115. package/dist/utils/id.d.ts +6 -0
  116. package/dist/utils/id.d.ts.map +1 -0
  117. package/dist/utils/id.js +20 -0
  118. package/dist/utils/id.js.map +1 -0
  119. package/dist/utils/yaml.d.ts +7 -0
  120. package/dist/utils/yaml.d.ts.map +1 -0
  121. package/dist/utils/yaml.js +50 -0
  122. package/dist/utils/yaml.js.map +1 -0
  123. package/package.json +59 -0
@@ -0,0 +1,117 @@
1
+ /**
2
+ * agenthub setup — Auto-configure MCP for AI tools.
3
+ */
4
+ import { join } from 'node:path';
5
+ import { existsSync } from 'node:fs';
6
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
7
+ import inquirer from 'inquirer';
8
+ import chalk from 'chalk';
9
+ import { findAgentHubDir } from '../../utils/git.js';
10
+ import { readHubConfig } from '../../memory/reader.js';
11
+ export async function setupCommand() {
12
+ const cwd = process.cwd();
13
+ // Find .agenthub/ directory
14
+ const agentHubDir = findAgentHubDir(cwd);
15
+ if (!agentHubDir) {
16
+ console.log(chalk.red('❌ No .agenthub/ found. Run "npx agenthub init" first.'));
17
+ return;
18
+ }
19
+ const hub = await readHubConfig(agentHubDir);
20
+ // Detect which tools are available
21
+ const tools = [
22
+ {
23
+ name: 'Claude Code',
24
+ detected: existsSync(join(cwd, '.claude')) || true, // Claude Code is always an option
25
+ configPath: join(cwd, '.claude', 'mcp.json'),
26
+ configDir: join(cwd, '.claude'),
27
+ },
28
+ {
29
+ name: 'Cursor',
30
+ detected: existsSync(join(cwd, '.cursor')) || existsSync(join(cwd, '.cursorrc')),
31
+ configPath: join(cwd, '.cursor', 'mcp.json'),
32
+ configDir: join(cwd, '.cursor'),
33
+ },
34
+ ];
35
+ console.log('');
36
+ console.log(chalk.dim(' Detected AI tools:'));
37
+ for (const tool of tools) {
38
+ const status = tool.detected ? chalk.green('✓') : chalk.dim('—');
39
+ console.log(` ${status} ${tool.name}`);
40
+ }
41
+ console.log('');
42
+ const { selectedTools } = await inquirer.prompt([{
43
+ type: 'checkbox',
44
+ name: 'selectedTools',
45
+ message: 'Configure AgentHub for which tools?',
46
+ choices: tools.map(t => ({
47
+ name: t.name,
48
+ value: t.name,
49
+ checked: t.detected,
50
+ })),
51
+ }]);
52
+ // Ask for agent ID if not already configured
53
+ let agentId = process.env.AGENTHUB_AGENT_ID;
54
+ if (!agentId && hub?.agents.length) {
55
+ if (hub.agents.length === 1) {
56
+ agentId = hub.agents[0].id;
57
+ }
58
+ else {
59
+ const { selected } = await inquirer.prompt([{
60
+ type: 'list',
61
+ name: 'selected',
62
+ message: 'Which agent are you?',
63
+ choices: hub.agents.map(a => ({
64
+ name: `${a.display_name} (${a.role})`,
65
+ value: a.id,
66
+ })),
67
+ }]);
68
+ agentId = selected;
69
+ }
70
+ }
71
+ if (!agentId) {
72
+ console.log(chalk.yellow('⚠️ No agents registered. Run "npx agenthub init" first.'));
73
+ return;
74
+ }
75
+ const mcpConfig = {
76
+ mcpServers: {
77
+ agenthub: {
78
+ command: 'npx',
79
+ args: ['-y', 'agenthub', 'mcp'],
80
+ env: {
81
+ AGENTHUB_AGENT_ID: agentId,
82
+ },
83
+ },
84
+ },
85
+ };
86
+ for (const toolName of selectedTools) {
87
+ const tool = tools.find(t => t.name === toolName);
88
+ // Ensure config directory exists
89
+ if (!existsSync(tool.configDir)) {
90
+ await mkdir(tool.configDir, { recursive: true });
91
+ }
92
+ // Read existing config and merge
93
+ let existing = {};
94
+ if (existsSync(tool.configPath)) {
95
+ try {
96
+ existing = JSON.parse(await readFile(tool.configPath, 'utf-8'));
97
+ }
98
+ catch {
99
+ existing = {};
100
+ }
101
+ }
102
+ const merged = {
103
+ ...existing,
104
+ mcpServers: {
105
+ ...existing.mcpServers,
106
+ ...mcpConfig.mcpServers,
107
+ },
108
+ };
109
+ await writeFile(tool.configPath, JSON.stringify(merged, null, 2), 'utf-8');
110
+ console.log(chalk.green(` ✅ ${tool.name}: ${tool.configPath}`));
111
+ }
112
+ console.log('');
113
+ console.log(chalk.dim(' Restart your AI tool for changes to take effect.'));
114
+ console.log(chalk.dim(` Your Agent ID: ${agentId}`));
115
+ console.log('');
116
+ }
117
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function statusCommand(): Promise<void>;
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAOA,wBAAsB,aAAa,kBAuElC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * agenthub status — Show shared memory status overview.
3
+ */
4
+ import chalk from 'chalk';
5
+ import { findAgentHubDir } from '../../utils/git.js';
6
+ import { readHubConfig, readAllAgentMemories } from '../../memory/reader.js';
7
+ export async function statusCommand() {
8
+ const cwd = process.cwd();
9
+ const agentHubDir = findAgentHubDir(cwd);
10
+ if (!agentHubDir) {
11
+ console.log(chalk.red('❌ No .agenthub/ found. Run "npx agenthub init" first.'));
12
+ return;
13
+ }
14
+ const hub = await readHubConfig(agentHubDir);
15
+ const memories = await readAllAgentMemories(agentHubDir);
16
+ console.log('');
17
+ if (hub) {
18
+ console.log(` ${chalk.bold(hub.project)}`);
19
+ console.log(chalk.dim(` AgentHub v${hub.version}`));
20
+ }
21
+ else {
22
+ console.log(chalk.dim(' (no hub.yaml found)'));
23
+ }
24
+ console.log('');
25
+ // Agents
26
+ const agentCount = hub?.agents.length ?? 0;
27
+ console.log(` ${chalk.cyan('Agents:')} ${agentCount}`);
28
+ if (hub?.agents) {
29
+ for (const agent of hub.agents) {
30
+ const memory = memories.find(m => m.agent === agent.id);
31
+ const entryCount = memory?.entries.length ?? 0;
32
+ const lastActive = memory?.last_active ?? 'never';
33
+ console.log(chalk.dim(` ${agent.display_name} (${agent.role}) — ${entryCount} entries, last active: ${lastActive}`));
34
+ }
35
+ }
36
+ console.log('');
37
+ // Memory stats
38
+ const totalEntries = memories.reduce((sum, m) => sum + m.entries.length, 0);
39
+ console.log(` ${chalk.cyan('Shared Memory:')} ${totalEntries} entries across ${memories.length} agent(s)`);
40
+ // Collect all unique tags
41
+ const allTags = new Set();
42
+ for (const memory of memories) {
43
+ for (const entry of memory.entries) {
44
+ for (const tag of entry.tags) {
45
+ allTags.add(tag);
46
+ }
47
+ }
48
+ }
49
+ if (allTags.size > 0) {
50
+ console.log(chalk.dim(` Tags: ${[...allTags].sort().join(', ')}`));
51
+ }
52
+ // Recent entries
53
+ if (totalEntries > 0) {
54
+ console.log('');
55
+ console.log(` ${chalk.cyan('Recent:')}`);
56
+ const allEntries = memories
57
+ .flatMap(m => m.entries.map(e => ({ ...e, agent: m.agent })))
58
+ .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime())
59
+ .slice(0, 5);
60
+ for (const entry of allEntries) {
61
+ console.log(chalk.dim(` ${entry.date.slice(0, 10)} ${entry.agent}: ${entry.topic}`));
62
+ }
63
+ }
64
+ console.log('');
65
+ }
66
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAEzC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,SAAS;IACT,MAAM,UAAU,GAAG,GAAG,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IACxD,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,MAAM,EAAE,WAAW,IAAI,OAAO,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI,OAAO,UAAU,0BAA0B,UAAU,EAAE,CAAC,CAAC,CAAC;QAC1H,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,eAAe;IACf,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,YAAY,mBAAmB,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;IAE5G,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,iBAAiB;IACjB,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,QAAQ;aACxB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;aACvE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEf,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * AgentHub CLI entry point.
4
+ */
5
+ import { Command } from 'commander';
6
+ import { initCommand } from './commands/init.js';
7
+ import { setupCommand } from './commands/setup.js';
8
+ import { statusCommand } from './commands/status.js';
9
+ import { memoryCommand } from './commands/memory.js';
10
+ import { serveCommand } from './commands/serve.js';
11
+ const program = new Command();
12
+ program
13
+ .name('agenthub')
14
+ .description('Shared memory & conversation protocol for AI coding agents')
15
+ .version('0.1.0');
16
+ program
17
+ .command('init')
18
+ .description('Initialize .agenthub/ in your project')
19
+ .action(initCommand);
20
+ program
21
+ .command('setup')
22
+ .description('Auto-configure MCP for your AI tools (Claude Code, Cursor, etc.)')
23
+ .action(setupCommand);
24
+ program
25
+ .command('status')
26
+ .description('Show shared memory status')
27
+ .action(statusCommand);
28
+ program
29
+ .command('memory')
30
+ .description('View or search shared memory')
31
+ .option('-s, --search <query>', 'Search for specific information')
32
+ .option('-a, --agent <id>', 'Filter by agent')
33
+ .option('-t, --tags <tags>', 'Filter by tags (comma-separated)')
34
+ .action(memoryCommand);
35
+ program
36
+ .command('serve')
37
+ .description('Start a conversation space for real-time agent discussion')
38
+ .option('-p, --port <port>', 'Port number', '4800')
39
+ .option('--host <host>', 'Host to bind to', '0.0.0.0')
40
+ .option('-k, --key <key>', 'Room key (auto-generated if not provided)')
41
+ .action(serveCommand);
42
+ program
43
+ .command('mcp')
44
+ .description('Start the MCP server (used by AI tools, not humans)')
45
+ .action(async () => {
46
+ // Dynamic import to avoid loading MCP deps when running other commands
47
+ await import('../mcp/index.js');
48
+ });
49
+ program.parse();
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;KACjE,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;KAC7C,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;KAC/D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC;KAClD,MAAM,CAAC,eAAe,EAAE,iBAAiB,EAAE,SAAS,CAAC;KACrD,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;KACtE,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,uEAAuE;IACvE,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,72 @@
1
+ import type { AgentIdentity, ServerMessage, StoredMessage, DecisionProposedMessage, DecisionResolvedMessage, MeetingStatusMessage, MemorySyncedMessage } from './protocol.js';
2
+ export interface ConversationClientOptions {
3
+ url: string;
4
+ agent: AgentIdentity;
5
+ key?: string;
6
+ }
7
+ export declare class ConversationClient {
8
+ private ws;
9
+ private options;
10
+ private messageBuffer;
11
+ private connectedAgents;
12
+ private activeTopics;
13
+ private connected;
14
+ private reconnecting;
15
+ private reconnectAttempts;
16
+ private readonly maxReconnectAttempts;
17
+ private lastSyncedEntries;
18
+ private messageHandlers;
19
+ private pendingDecisionsList;
20
+ private resolvedDecisionsList;
21
+ private meetingStatusList;
22
+ private syncedMemoriesMap;
23
+ constructor(options: ConversationClientOptions);
24
+ get isConnected(): boolean;
25
+ get agents(): AgentIdentity[];
26
+ get topics(): string[];
27
+ get recentMessages(): StoredMessage[];
28
+ get pendingDecisions(): DecisionProposedMessage[];
29
+ get resolvedDecisions(): DecisionResolvedMessage[];
30
+ get meetings(): MeetingStatusMessage[];
31
+ /** Get all synced memories from other agents (received via conversation space). */
32
+ get syncedMemories(): MemorySyncedMessage[];
33
+ /** Connect to the conversation server. */
34
+ connect(): Promise<void>;
35
+ /** Disconnect from the server. */
36
+ disconnect(): void;
37
+ /** Send a chat message to a topic. */
38
+ sendMessage(topic: string, content: string, related_to?: string): void;
39
+ /** Record a conclusion (will be broadcast to all agents). */
40
+ conclude(topic: string, summary: string, tags: string[]): void;
41
+ /** Propose a decision that requires all agents' human approval. */
42
+ proposeDecision(decisionId: string, topic: string, options: Array<{
43
+ label: string;
44
+ description: string;
45
+ }>, recommendation?: string): void;
46
+ /** Vote on a pending decision. */
47
+ vote(decisionId: string, vote: 'approve' | 'reject', choice?: string, reason?: string): void;
48
+ /** Start a meeting that requires specific agents to be present. */
49
+ startMeeting(meetingId: string, topic: string, requiredAgents: string[]): void;
50
+ /** Conclude an active meeting. */
51
+ concludeMeeting(meetingId: string): void;
52
+ /** Cancel a waiting meeting. */
53
+ cancelMeeting(meetingId: string, reason?: string): void;
54
+ /** Upload local memory entries to the conversation space. */
55
+ syncMemory(entries: Array<{
56
+ topic: string;
57
+ tags: string[];
58
+ content: string;
59
+ date: string;
60
+ protected?: boolean;
61
+ owner?: string;
62
+ decided_with?: string[];
63
+ }>): void;
64
+ /** Get messages for a specific topic. */
65
+ getTopicMessages(topic: string): StoredMessage[];
66
+ /** Register a handler for incoming server messages. */
67
+ onServerMessage(handler: (msg: ServerMessage) => void): void;
68
+ private handleMessage;
69
+ private send;
70
+ private attemptReconnect;
71
+ }
72
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/conversation/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Conversation space WebSocket client.
3
+ *
4
+ * Used by the MCP plugin to connect to a running conversation server.
5
+ */
6
+ import WebSocket from 'ws';
7
+ export class ConversationClient {
8
+ ws = null;
9
+ options;
10
+ messageBuffer = [];
11
+ connectedAgents = [];
12
+ activeTopics = [];
13
+ connected = false;
14
+ reconnecting = false;
15
+ reconnectAttempts = 0;
16
+ maxReconnectAttempts = 5;
17
+ lastSyncedEntries = null;
18
+ messageHandlers = [];
19
+ pendingDecisionsList = [];
20
+ resolvedDecisionsList = [];
21
+ meetingStatusList = [];
22
+ syncedMemoriesMap = new Map();
23
+ constructor(options) {
24
+ this.options = options;
25
+ }
26
+ get isConnected() {
27
+ return this.connected;
28
+ }
29
+ get agents() {
30
+ return [...this.connectedAgents];
31
+ }
32
+ get topics() {
33
+ return [...this.activeTopics];
34
+ }
35
+ get recentMessages() {
36
+ return [...this.messageBuffer];
37
+ }
38
+ get pendingDecisions() {
39
+ return [...this.pendingDecisionsList];
40
+ }
41
+ get resolvedDecisions() {
42
+ return [...this.resolvedDecisionsList];
43
+ }
44
+ get meetings() {
45
+ return [...this.meetingStatusList];
46
+ }
47
+ /** Get all synced memories from other agents (received via conversation space). */
48
+ get syncedMemories() {
49
+ return [...this.syncedMemoriesMap.values()];
50
+ }
51
+ /** Connect to the conversation server. */
52
+ connect() {
53
+ return new Promise((resolve, reject) => {
54
+ this.ws = new WebSocket(this.options.url);
55
+ const timeout = setTimeout(() => {
56
+ reject(new Error('Connection timeout'));
57
+ this.ws?.close();
58
+ }, 10000);
59
+ this.ws.on('open', () => {
60
+ // Send JOIN message
61
+ this.send({
62
+ type: 'JOIN',
63
+ agent: this.options.agent,
64
+ key: this.options.key,
65
+ });
66
+ });
67
+ this.ws.on('message', (raw) => {
68
+ let msg;
69
+ try {
70
+ msg = JSON.parse(raw.toString());
71
+ }
72
+ catch {
73
+ return;
74
+ }
75
+ this.handleMessage(msg);
76
+ // Resolve on WELCOME (successful join)
77
+ if (msg.type === 'WELCOME') {
78
+ clearTimeout(timeout);
79
+ this.connected = true;
80
+ resolve();
81
+ }
82
+ // Reject on ERROR during join
83
+ if (msg.type === 'ERROR' && !this.connected) {
84
+ clearTimeout(timeout);
85
+ reject(new Error(msg.message));
86
+ }
87
+ });
88
+ this.ws.on('close', () => {
89
+ const wasConnected = this.connected;
90
+ this.connected = false;
91
+ if (wasConnected) {
92
+ this.attemptReconnect();
93
+ }
94
+ });
95
+ this.ws.on('error', (err) => {
96
+ if (!this.connected) {
97
+ clearTimeout(timeout);
98
+ reject(err);
99
+ }
100
+ this.connected = false;
101
+ });
102
+ });
103
+ }
104
+ /** Disconnect from the server. */
105
+ disconnect() {
106
+ if (this.ws) {
107
+ this.send({ type: 'LEAVE' });
108
+ this.ws.close();
109
+ this.ws = null;
110
+ this.connected = false;
111
+ }
112
+ }
113
+ /** Send a chat message to a topic. */
114
+ sendMessage(topic, content, related_to) {
115
+ this.send({ type: 'MESSAGE', topic, content, ...(related_to ? { related_to } : {}) });
116
+ }
117
+ /** Record a conclusion (will be broadcast to all agents). */
118
+ conclude(topic, summary, tags) {
119
+ this.send({ type: 'CONCLUDE', topic, summary, tags });
120
+ }
121
+ /** Propose a decision that requires all agents' human approval. */
122
+ proposeDecision(decisionId, topic, options, recommendation) {
123
+ this.send({
124
+ type: 'PROPOSE_DECISION',
125
+ decisionId,
126
+ topic,
127
+ options,
128
+ recommendation,
129
+ proposedBy: this.options.agent.id,
130
+ });
131
+ }
132
+ /** Vote on a pending decision. */
133
+ vote(decisionId, vote, choice, reason) {
134
+ this.send({ type: 'VOTE', decisionId, vote, choice, reason });
135
+ }
136
+ /** Start a meeting that requires specific agents to be present. */
137
+ startMeeting(meetingId, topic, requiredAgents) {
138
+ this.send({ type: 'START_MEETING', meetingId, topic, requiredAgents });
139
+ }
140
+ /** Conclude an active meeting. */
141
+ concludeMeeting(meetingId) {
142
+ this.send({ type: 'CONCLUDE_MEETING', meetingId });
143
+ }
144
+ /** Cancel a waiting meeting. */
145
+ cancelMeeting(meetingId, reason) {
146
+ this.send({ type: 'CANCEL_MEETING', meetingId, reason });
147
+ }
148
+ /** Upload local memory entries to the conversation space. */
149
+ syncMemory(entries) {
150
+ this.lastSyncedEntries = entries;
151
+ this.send({ type: 'SYNC_MEMORY', entries });
152
+ }
153
+ /** Get messages for a specific topic. */
154
+ getTopicMessages(topic) {
155
+ return this.messageBuffer.filter(m => m.topic === topic);
156
+ }
157
+ /** Register a handler for incoming server messages. */
158
+ onServerMessage(handler) {
159
+ this.messageHandlers.push(handler);
160
+ }
161
+ handleMessage(msg) {
162
+ switch (msg.type) {
163
+ case 'WELCOME':
164
+ this.connectedAgents = msg.agents;
165
+ this.activeTopics = msg.activeTopics;
166
+ break;
167
+ case 'MESSAGE':
168
+ this.messageBuffer.push({
169
+ from: msg.from,
170
+ topic: msg.topic,
171
+ content: msg.content,
172
+ timestamp: msg.timestamp,
173
+ ...(msg.related_to ? { related_to: msg.related_to } : {}),
174
+ });
175
+ // Cap buffer at 1000 messages to prevent memory leak
176
+ if (this.messageBuffer.length > 1000) {
177
+ this.messageBuffer = this.messageBuffer.slice(-1000);
178
+ }
179
+ if (!this.activeTopics.includes(msg.topic)) {
180
+ this.activeTopics.push(msg.topic);
181
+ }
182
+ break;
183
+ case 'AGENT_JOINED':
184
+ this.connectedAgents.push(msg.agent);
185
+ break;
186
+ case 'AGENT_LEFT':
187
+ this.connectedAgents = this.connectedAgents.filter(a => a.id !== msg.agentId);
188
+ break;
189
+ case 'DECISION_PROPOSED':
190
+ this.pendingDecisionsList.push(msg);
191
+ break;
192
+ case 'DECISION_RESOLVED':
193
+ this.resolvedDecisionsList.push(msg);
194
+ this.pendingDecisionsList = this.pendingDecisionsList.filter(d => d.decisionId !== msg.decisionId);
195
+ break;
196
+ case 'MEETING_STATUS': {
197
+ const existingIdx = this.meetingStatusList.findIndex(m => m.meetingId === msg.meetingId);
198
+ if (existingIdx >= 0) {
199
+ this.meetingStatusList[existingIdx] = msg;
200
+ }
201
+ else {
202
+ this.meetingStatusList.push(msg);
203
+ }
204
+ break;
205
+ }
206
+ case 'MEMORY_SYNCED':
207
+ this.syncedMemoriesMap.set(msg.agent.id, msg);
208
+ break;
209
+ }
210
+ // Notify all registered handlers
211
+ for (const handler of this.messageHandlers) {
212
+ handler(msg);
213
+ }
214
+ }
215
+ send(msg) {
216
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
217
+ this.ws.send(JSON.stringify(msg));
218
+ }
219
+ }
220
+ async attemptReconnect() {
221
+ if (this.reconnecting || this.reconnectAttempts >= this.maxReconnectAttempts)
222
+ return;
223
+ this.reconnecting = true;
224
+ while (this.reconnectAttempts < this.maxReconnectAttempts) {
225
+ this.reconnectAttempts++;
226
+ const delay = Math.min(3000 * Math.pow(2, this.reconnectAttempts - 1), 30000);
227
+ await new Promise(resolve => setTimeout(resolve, delay));
228
+ try {
229
+ await this.connect();
230
+ // Reconnected — re-sync memory if we had any
231
+ if (this.lastSyncedEntries) {
232
+ this.syncMemory(this.lastSyncedEntries);
233
+ }
234
+ this.reconnectAttempts = 0;
235
+ this.reconnecting = false;
236
+ return;
237
+ }
238
+ catch {
239
+ // Will retry
240
+ }
241
+ }
242
+ this.reconnecting = false;
243
+ }
244
+ }
245
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/conversation/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,SAAS,MAAM,IAAI,CAAC;AAkB3B,MAAM,OAAO,kBAAkB;IACrB,EAAE,GAAqB,IAAI,CAAC;IAC5B,OAAO,CAA4B;IACnC,aAAa,GAAoB,EAAE,CAAC;IACpC,eAAe,GAAoB,EAAE,CAAC;IACtC,YAAY,GAAa,EAAE,CAAC;IAC5B,SAAS,GAAG,KAAK,CAAC;IAClB,YAAY,GAAG,KAAK,CAAC;IACrB,iBAAiB,GAAG,CAAC,CAAC;IACb,oBAAoB,GAAG,CAAC,CAAC;IAClC,iBAAiB,GAAiB,IAAI,CAAC;IACvC,eAAe,GAAwC,EAAE,CAAC;IAC1D,oBAAoB,GAA8B,EAAE,CAAC;IACrD,qBAAqB,GAA8B,EAAE,CAAC;IACtD,iBAAiB,GAA2B,EAAE,CAAC;IAC/C,iBAAiB,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEnE,YAAY,OAAkC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,mFAAmF;IACnF,IAAI,cAAc;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACL,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE1C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;YACnB,CAAC,EAAE,KAAK,CAAC,CAAC;YAEV,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACtB,oBAAoB;gBACpB,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;oBACzB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;iBACtB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC5B,IAAI,GAAkB,CAAC;gBACvB,IAAI,CAAC;oBACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAExB,uCAAuC;gBACvC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC3B,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,8BAA8B;gBAC9B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC5C,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;gBACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpB,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kCAAkC;IAClC,UAAU;QACR,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,WAAW,CAAC,KAAa,EAAE,OAAe,EAAE,UAAmB;QAC7D,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,6DAA6D;IAC7D,QAAQ,CAAC,KAAa,EAAE,OAAe,EAAE,IAAc;QACrD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,mEAAmE;IACnE,eAAe,CAAC,UAAkB,EAAE,KAAa,EAAE,OAAsD,EAAE,cAAuB;QAChI,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,kBAAkB;YACxB,UAAU;YACV,KAAK;YACL,OAAO;YACP,cAAc;YACd,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;SAClC,CAAC,CAAC;IACL,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,UAAkB,EAAE,IAA0B,EAAE,MAAe,EAAE,MAAe;QACnF,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,mEAAmE;IACnE,YAAY,CAAC,SAAiB,EAAE,KAAa,EAAE,cAAwB;QACrE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,kCAAkC;IAClC,eAAe,CAAC,SAAiB;QAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,gCAAgC;IAChC,aAAa,CAAC,SAAiB,EAAE,MAAe;QAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,6DAA6D;IAC7D,UAAU,CAAC,OAA8I;QACvJ,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,yCAAyC;IACzC,gBAAgB,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,uDAAuD;IACvD,eAAe,CAAC,OAAqC;QACnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEO,aAAa,CAAC,GAAkB;QACtC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;gBACrC,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1D,CAAC,CAAC;gBACH,qDAAqD;gBACrD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;oBACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;gBACvD,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM;YAER,KAAK,cAAc;gBACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,YAAY;gBACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9E,MAAM;YAER,KAAK,mBAAmB;gBACtB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpC,MAAM;YAER,KAAK,mBAAmB;gBACtB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;gBACnG,MAAM;YAER,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;gBACzF,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnC,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,eAAe;gBAClB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9C,MAAM;QACV,CAAC;QAED,iCAAiC;QACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,GAAkB;QAC7B,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB;YAAE,OAAO;QACrF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,OAAO,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,6CAA6C;gBAC7C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa;YACf,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ export { ConversationServer } from './server.js';
2
+ export type { ConversationServerOptions } from './server.js';
3
+ export { ConversationClient } from './client.js';
4
+ export type { ConversationClientOptions } from './client.js';
5
+ export { saveConversation } from './recorder.js';
6
+ export type * from './protocol.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,mBAAmB,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { ConversationServer } from './server.js';
2
+ export { ConversationClient } from './client.js';
3
+ export { saveConversation } from './recorder.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}