@sowonai/crewx-cli 0.4.0-dev.9 → 0.4.0-rc.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.
- package/README.md +34 -12
- package/dist/ai-provider.service.d.ts +7 -12
- package/dist/ai-provider.service.js +42 -20
- package/dist/ai-provider.service.js.map +1 -1
- package/dist/ai.service.d.ts +5 -45
- package/dist/ai.service.js +10 -587
- package/dist/ai.service.js.map +1 -1
- package/dist/app.module.js +67 -11
- package/dist/app.module.js.map +1 -1
- package/dist/cli/agent.handler.js +3 -4
- package/dist/cli/agent.handler.js.map +1 -1
- package/dist/cli/chat.handler.d.ts +2 -1
- package/dist/cli/chat.handler.js +17 -6
- package/dist/cli/chat.handler.js.map +1 -1
- package/dist/cli/cli.handler.js +4 -0
- package/dist/cli/cli.handler.js.map +1 -1
- package/dist/cli/doctor.handler.js +8 -40
- package/dist/cli/doctor.handler.js.map +1 -1
- package/dist/cli/execute.handler.js +8 -6
- package/dist/cli/execute.handler.js.map +1 -1
- package/dist/cli/log.handler.d.ts +2 -0
- package/dist/cli/log.handler.js +69 -0
- package/dist/cli/log.handler.js.map +1 -0
- package/dist/cli/query.handler.js +4 -2
- package/dist/cli/query.handler.js.map +1 -1
- package/dist/cli-options.d.ts +4 -2
- package/dist/cli-options.js +19 -12
- package/dist/cli-options.js.map +1 -1
- package/dist/crewx.tool.d.ts +18 -2
- package/dist/crewx.tool.js +542 -105
- package/dist/crewx.tool.js.map +1 -1
- package/dist/providers/dynamic-provider.factory.d.ts +9 -51
- package/dist/providers/dynamic-provider.factory.js +44 -506
- package/dist/providers/dynamic-provider.factory.js.map +1 -1
- package/dist/services/agent-loader.service.d.ts +6 -2
- package/dist/services/agent-loader.service.js +210 -26
- package/dist/services/agent-loader.service.js.map +1 -1
- package/dist/services/config.service.d.ts +7 -27
- package/dist/services/config.service.js +80 -38
- package/dist/services/config.service.js.map +1 -1
- package/dist/services/document-loader.service.d.ts +9 -4
- package/dist/services/document-loader.service.js +26 -7
- package/dist/services/document-loader.service.js.map +1 -1
- package/dist/services/help.service.js +6 -0
- package/dist/services/help.service.js.map +1 -1
- package/dist/services/parallel-processing.service.d.ts +2 -0
- package/dist/services/parallel-processing.service.js +40 -6
- package/dist/services/parallel-processing.service.js.map +1 -1
- package/dist/services/provider-bridge.service.d.ts +35 -0
- package/dist/services/provider-bridge.service.js +224 -0
- package/dist/services/provider-bridge.service.js.map +1 -0
- package/dist/services/remote-agent.service.d.ts +1 -1
- package/dist/services/task-management.service.d.ts +3 -3
- package/dist/services/task-management.service.js +2 -1
- package/dist/services/task-management.service.js.map +1 -1
- package/dist/services/template.service.d.ts +2 -0
- package/dist/services/template.service.js +46 -1
- package/dist/services/template.service.js.map +1 -1
- package/dist/utils/stdin-utils.d.ts +4 -25
- package/dist/utils/stdin-utils.js +2 -23
- package/dist/utils/stdin-utils.js.map +1 -1
- package/dist/utils/template-processor.d.ts +1 -29
- package/dist/utils/template-processor.js +38 -11
- package/dist/utils/template-processor.js.map +1 -1
- package/package.json +2 -3
- package/scripts/postbuild-cli.mjs +20 -1
- package/templates/agents/default.yaml +455 -0
- package/templates/agents/minimal.yaml +16 -0
- package/templates/documents/crewx-manual.md +390 -0
- package/templates/versions.json +19 -0
- package/dist/providers/base-ai.provider.d.ts +0 -1
- package/dist/providers/base-ai.provider.js +0 -6
- package/dist/providers/base-ai.provider.js.map +0 -1
- package/dist/providers/claude.provider.d.ts +0 -5
- package/dist/providers/claude.provider.js +0 -32
- package/dist/providers/claude.provider.js.map +0 -1
- package/dist/providers/codex.provider.d.ts +0 -4
- package/dist/providers/codex.provider.js +0 -30
- package/dist/providers/codex.provider.js.map +0 -1
- package/dist/providers/copilot.provider.d.ts +0 -5
- package/dist/providers/copilot.provider.js +0 -32
- package/dist/providers/copilot.provider.js.map +0 -1
- package/dist/providers/gemini.provider.d.ts +0 -5
- package/dist/providers/gemini.provider.js +0 -32
- package/dist/providers/gemini.provider.js.map +0 -1
- package/dist/services/context-enhancement.service.d.ts +0 -13
- package/dist/services/context-enhancement.service.js +0 -169
- package/dist/services/context-enhancement.service.js.map +0 -1
- package/dist/utils/mention-parser.d.ts +0 -18
- package/dist/utils/mention-parser.js +0 -136
- package/dist/utils/mention-parser.js.map +0 -1
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
-
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
var ContextEnhancementService_1;
|
|
42
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.ContextEnhancementService = void 0;
|
|
44
|
-
const common_1 = require("@nestjs/common");
|
|
45
|
-
const fs = __importStar(require("fs"));
|
|
46
|
-
const path = __importStar(require("path"));
|
|
47
|
-
const os = __importStar(require("os"));
|
|
48
|
-
let ContextEnhancementService = ContextEnhancementService_1 = class ContextEnhancementService {
|
|
49
|
-
constructor() {
|
|
50
|
-
this.logger = new common_1.Logger(ContextEnhancementService_1.name);
|
|
51
|
-
this.projectContextCache = new Map();
|
|
52
|
-
this.CACHE_TTL = 30000;
|
|
53
|
-
}
|
|
54
|
-
async loadProjectContext(workingDir) {
|
|
55
|
-
const cacheKey = workingDir;
|
|
56
|
-
const cached = this.projectContextCache.get(cacheKey);
|
|
57
|
-
if (cached && Date.now() - cached.timestamp < this.CACHE_TTL) {
|
|
58
|
-
this.logger.debug(`Using cached project context for ${workingDir}`);
|
|
59
|
-
return cached.content;
|
|
60
|
-
}
|
|
61
|
-
const claudeMdPaths = [
|
|
62
|
-
path.join(workingDir, 'CLAUDE.md'),
|
|
63
|
-
path.join(workingDir, '.claude/CLAUDE.md'),
|
|
64
|
-
path.join(os.homedir(), '.claude/CLAUDE.md')
|
|
65
|
-
];
|
|
66
|
-
let projectContext = '';
|
|
67
|
-
for (const claudeMdPath of claudeMdPaths) {
|
|
68
|
-
try {
|
|
69
|
-
if (fs.existsSync(claudeMdPath)) {
|
|
70
|
-
const content = fs.readFileSync(claudeMdPath, 'utf-8');
|
|
71
|
-
projectContext += `\n# Project Context from ${path.basename(claudeMdPath)}\n${content}`;
|
|
72
|
-
this.logger.debug(`Loaded project context from ${claudeMdPath}`);
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
78
|
-
this.logger.warn(`Failed to read ${claudeMdPath}: ${errorMessage}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (projectContext) {
|
|
82
|
-
this.projectContextCache.set(cacheKey, {
|
|
83
|
-
content: projectContext,
|
|
84
|
-
timestamp: Date.now()
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
return projectContext;
|
|
88
|
-
}
|
|
89
|
-
async enhancePromptWithProjectContext(prompt, workingDir, options) {
|
|
90
|
-
const includeProjectContext = options?.includeProjectContext ?? true;
|
|
91
|
-
const maxLength = options?.maxProjectContextLength ?? 2000;
|
|
92
|
-
if (!includeProjectContext) {
|
|
93
|
-
return prompt;
|
|
94
|
-
}
|
|
95
|
-
const projectContext = await this.loadProjectContext(workingDir);
|
|
96
|
-
if (!projectContext) {
|
|
97
|
-
return prompt;
|
|
98
|
-
}
|
|
99
|
-
const truncatedContext = projectContext.length > maxLength
|
|
100
|
-
? projectContext.substring(0, maxLength) + '\n... (truncated)'
|
|
101
|
-
: projectContext;
|
|
102
|
-
return `${truncatedContext}\n\n---\n\n${prompt}`;
|
|
103
|
-
}
|
|
104
|
-
async hasProjectContext(workingDir) {
|
|
105
|
-
const claudeMdPaths = [
|
|
106
|
-
path.join(workingDir, 'CLAUDE.md'),
|
|
107
|
-
path.join(workingDir, '.claude/CLAUDE.md'),
|
|
108
|
-
path.join(os.homedir(), '.claude/CLAUDE.md')
|
|
109
|
-
];
|
|
110
|
-
return claudeMdPaths.some(filePath => fs.existsSync(filePath));
|
|
111
|
-
}
|
|
112
|
-
async createSampleClaudeMd(workingDir, projectName) {
|
|
113
|
-
const claudeDir = path.join(workingDir, '.claude');
|
|
114
|
-
const claudeMdPath = path.join(claudeDir, 'CLAUDE.md');
|
|
115
|
-
if (!fs.existsSync(claudeDir)) {
|
|
116
|
-
fs.mkdirSync(claudeDir, { recursive: true });
|
|
117
|
-
}
|
|
118
|
-
const sampleContent = `# ${projectName || 'Project'} Context
|
|
119
|
-
|
|
120
|
-
## Project Overview
|
|
121
|
-
This project uses CrewX for multi-AI agent collaboration.
|
|
122
|
-
|
|
123
|
-
## Key Architecture Points
|
|
124
|
-
- NestJS-based MCP server architecture
|
|
125
|
-
- Multiple AI provider integration (Claude, Gemini, Copilot)
|
|
126
|
-
- Conversation history management with pluggable providers
|
|
127
|
-
- Slack and CLI interfaces
|
|
128
|
-
|
|
129
|
-
## Coding Conventions
|
|
130
|
-
- Use NestJS dependency injection patterns
|
|
131
|
-
- Follow SOLID principles
|
|
132
|
-
- Implement comprehensive error handling
|
|
133
|
-
- Write unit and integration tests
|
|
134
|
-
|
|
135
|
-
## Current Focus
|
|
136
|
-
Implementing enhanced context management with Claude Agent SDK integration.
|
|
137
|
-
|
|
138
|
-
## Important Files
|
|
139
|
-
- \`src/services/\`: Core business logic services
|
|
140
|
-
- \`src/providers/\`: AI provider implementations
|
|
141
|
-
- \`src/conversation/\`: Conversation history management
|
|
142
|
-
- \`agents.yaml\`: Agent configuration
|
|
143
|
-
|
|
144
|
-
## Development Notes
|
|
145
|
-
- Use TypeScript strict mode
|
|
146
|
-
- Follow the existing provider pattern for new integrations
|
|
147
|
-
- Maintain backward compatibility with existing CLI interfaces
|
|
148
|
-
`;
|
|
149
|
-
try {
|
|
150
|
-
fs.writeFileSync(claudeMdPath, sampleContent, 'utf-8');
|
|
151
|
-
this.logger.log(`Created sample CLAUDE.md at ${claudeMdPath}`);
|
|
152
|
-
return claudeMdPath;
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
156
|
-
this.logger.error(`Failed to create CLAUDE.md: ${errorMessage}`);
|
|
157
|
-
throw error;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
clearCache() {
|
|
161
|
-
this.projectContextCache.clear();
|
|
162
|
-
this.logger.debug('Project context cache cleared');
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
exports.ContextEnhancementService = ContextEnhancementService;
|
|
166
|
-
exports.ContextEnhancementService = ContextEnhancementService = ContextEnhancementService_1 = __decorate([
|
|
167
|
-
(0, common_1.Injectable)()
|
|
168
|
-
], ContextEnhancementService);
|
|
169
|
-
//# sourceMappingURL=context-enhancement.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-enhancement.service.js","sourceRoot":"","sources":["../../src/services/context-enhancement.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export interface MentionTask {
|
|
2
|
-
agents: string[];
|
|
3
|
-
task: string;
|
|
4
|
-
type: 'shared' | 'individual';
|
|
5
|
-
models?: Map<string, string>;
|
|
6
|
-
}
|
|
7
|
-
export interface ParsedMentions {
|
|
8
|
-
tasks: MentionTask[];
|
|
9
|
-
unmatchedText: string[];
|
|
10
|
-
errors: string[];
|
|
11
|
-
}
|
|
12
|
-
export declare class MentionParser {
|
|
13
|
-
private readonly agentPattern;
|
|
14
|
-
private readonly validAgents;
|
|
15
|
-
constructor(validAgents: string[]);
|
|
16
|
-
parse(text: string): ParsedMentions;
|
|
17
|
-
}
|
|
18
|
-
export declare function loadAvailableAgents(configPath?: string): Promise<string[]>;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.MentionParser = void 0;
|
|
37
|
-
exports.loadAvailableAgents = loadAvailableAgents;
|
|
38
|
-
const fs = __importStar(require("fs"));
|
|
39
|
-
const yaml = __importStar(require("js-yaml"));
|
|
40
|
-
class MentionParser {
|
|
41
|
-
constructor(validAgents) {
|
|
42
|
-
this.agentPattern = /(@[a-zA-Z0-9_]+(?::[a-zA-Z0-9._-]+)?)/g;
|
|
43
|
-
this.validAgents = new Set(validAgents);
|
|
44
|
-
}
|
|
45
|
-
parse(text) {
|
|
46
|
-
const tasks = [];
|
|
47
|
-
const errors = [];
|
|
48
|
-
const unmatchedText = [];
|
|
49
|
-
const parts = text.split(this.agentPattern);
|
|
50
|
-
let agentGroup = [];
|
|
51
|
-
let modelMap = new Map();
|
|
52
|
-
let taskText = '';
|
|
53
|
-
let leadingText = '';
|
|
54
|
-
if (parts.length > 0 && parts[0] && !parts[0].startsWith('@')) {
|
|
55
|
-
leadingText = parts.shift()?.trim() || '';
|
|
56
|
-
}
|
|
57
|
-
for (const part of parts) {
|
|
58
|
-
if (!part)
|
|
59
|
-
continue;
|
|
60
|
-
if (part.startsWith('@')) {
|
|
61
|
-
const mentionPart = part.substring(1);
|
|
62
|
-
const [agentId, model] = mentionPart.split(':');
|
|
63
|
-
if (!agentId)
|
|
64
|
-
continue;
|
|
65
|
-
if (this.validAgents.has(agentId)) {
|
|
66
|
-
if (taskText.trim() && agentGroup.length > 0) {
|
|
67
|
-
tasks.push({
|
|
68
|
-
agents: agentGroup,
|
|
69
|
-
task: taskText.trim(),
|
|
70
|
-
type: agentGroup.length > 1 ? 'shared' : 'individual',
|
|
71
|
-
models: modelMap.size > 0 ? modelMap : undefined,
|
|
72
|
-
});
|
|
73
|
-
agentGroup = [agentId];
|
|
74
|
-
modelMap = new Map();
|
|
75
|
-
if (model) {
|
|
76
|
-
modelMap.set(agentId, model);
|
|
77
|
-
}
|
|
78
|
-
taskText = '';
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
agentGroup.push(agentId);
|
|
82
|
-
if (model) {
|
|
83
|
-
modelMap.set(agentId, model);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
errors.push(`Unknown agent: @${agentId}`);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
taskText += part;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (agentGroup.length > 0) {
|
|
96
|
-
const trimmedTask = taskText.trim();
|
|
97
|
-
if (trimmedTask) {
|
|
98
|
-
tasks.push({
|
|
99
|
-
agents: agentGroup,
|
|
100
|
-
task: trimmedTask,
|
|
101
|
-
type: agentGroup.length > 1 ? 'shared' : 'individual',
|
|
102
|
-
models: modelMap.size > 0 ? modelMap : undefined,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
else if (taskText.trim()) {
|
|
107
|
-
unmatchedText.push(taskText.trim());
|
|
108
|
-
}
|
|
109
|
-
if (leadingText) {
|
|
110
|
-
if (tasks.length > 0 && tasks[0]) {
|
|
111
|
-
tasks[0].task = leadingText + ' ' + (tasks[0].task || '');
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
unmatchedText.push(leadingText);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return { tasks, unmatchedText, errors };
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.MentionParser = MentionParser;
|
|
121
|
-
async function loadAvailableAgents(configPath = 'agents.yaml') {
|
|
122
|
-
try {
|
|
123
|
-
const fileContents = await fs.promises.readFile(configPath, 'utf8');
|
|
124
|
-
const config = yaml.load(fileContents);
|
|
125
|
-
if (config && Array.isArray(config.agents)) {
|
|
126
|
-
return config.agents.map((agent) => agent.id);
|
|
127
|
-
}
|
|
128
|
-
console.warn(`Warning: Could not find agents in ${configPath}.`);
|
|
129
|
-
return [];
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
console.error(`Error loading or parsing ${configPath}:`, error);
|
|
133
|
-
return [];
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=mention-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mention-parser.js","sourceRoot":"","sources":["../../src/utils/mention-parser.ts"],"names":[],"mappings":"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"}
|