@sowonai/crewx-cli 0.4.0-dev.1

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 (173) hide show
  1. package/README.md +529 -0
  2. package/dist/ai-provider.service.d.ts +36 -0
  3. package/dist/ai-provider.service.js +191 -0
  4. package/dist/ai-provider.service.js.map +1 -0
  5. package/dist/ai.service.d.ts +57 -0
  6. package/dist/ai.service.js +628 -0
  7. package/dist/ai.service.js.map +1 -0
  8. package/dist/app.module.d.ts +5 -0
  9. package/dist/app.module.js +103 -0
  10. package/dist/app.module.js.map +1 -0
  11. package/dist/cli/agent.handler.d.ts +2 -0
  12. package/dist/cli/agent.handler.js +140 -0
  13. package/dist/cli/agent.handler.js.map +1 -0
  14. package/dist/cli/chat.handler.d.ts +19 -0
  15. package/dist/cli/chat.handler.js +431 -0
  16. package/dist/cli/chat.handler.js.map +1 -0
  17. package/dist/cli/cli.handler.d.ts +4 -0
  18. package/dist/cli/cli.handler.js +97 -0
  19. package/dist/cli/cli.handler.js.map +1 -0
  20. package/dist/cli/doctor.handler.d.ts +36 -0
  21. package/dist/cli/doctor.handler.js +382 -0
  22. package/dist/cli/doctor.handler.js.map +1 -0
  23. package/dist/cli/execute.handler.d.ts +2 -0
  24. package/dist/cli/execute.handler.js +319 -0
  25. package/dist/cli/execute.handler.js.map +1 -0
  26. package/dist/cli/help.handler.d.ts +2 -0
  27. package/dist/cli/help.handler.js +10 -0
  28. package/dist/cli/help.handler.js.map +1 -0
  29. package/dist/cli/init.handler.d.ts +26 -0
  30. package/dist/cli/init.handler.js +450 -0
  31. package/dist/cli/init.handler.js.map +1 -0
  32. package/dist/cli/mcp.handler.d.ts +3 -0
  33. package/dist/cli/mcp.handler.js +121 -0
  34. package/dist/cli/mcp.handler.js.map +1 -0
  35. package/dist/cli/query.handler.d.ts +2 -0
  36. package/dist/cli/query.handler.js +380 -0
  37. package/dist/cli/query.handler.js.map +1 -0
  38. package/dist/cli/templates.handler.d.ts +2 -0
  39. package/dist/cli/templates.handler.js +100 -0
  40. package/dist/cli/templates.handler.js.map +1 -0
  41. package/dist/cli-options.d.ts +29 -0
  42. package/dist/cli-options.js +234 -0
  43. package/dist/cli-options.js.map +1 -0
  44. package/dist/config/timeout.config.d.ts +14 -0
  45. package/dist/config/timeout.config.js +34 -0
  46. package/dist/config/timeout.config.js.map +1 -0
  47. package/dist/conversation/base-conversation-history.provider.d.ts +12 -0
  48. package/dist/conversation/base-conversation-history.provider.js +45 -0
  49. package/dist/conversation/base-conversation-history.provider.js.map +1 -0
  50. package/dist/conversation/cli-conversation-history.provider.d.ts +16 -0
  51. package/dist/conversation/cli-conversation-history.provider.js +111 -0
  52. package/dist/conversation/cli-conversation-history.provider.js.map +1 -0
  53. package/dist/conversation/conversation-provider.factory.d.ts +10 -0
  54. package/dist/conversation/conversation-provider.factory.js +50 -0
  55. package/dist/conversation/conversation-provider.factory.js.map +1 -0
  56. package/dist/conversation/index.d.ts +6 -0
  57. package/dist/conversation/index.js +27 -0
  58. package/dist/conversation/index.js.map +1 -0
  59. package/dist/conversation/slack-conversation-history.provider.d.ts +28 -0
  60. package/dist/conversation/slack-conversation-history.provider.js +278 -0
  61. package/dist/conversation/slack-conversation-history.provider.js.map +1 -0
  62. package/dist/crewx.tool.d.ts +332 -0
  63. package/dist/crewx.tool.js +1461 -0
  64. package/dist/crewx.tool.js.map +1 -0
  65. package/dist/guards/bearer-auth.guard.d.ts +7 -0
  66. package/dist/guards/bearer-auth.guard.js +44 -0
  67. package/dist/guards/bearer-auth.guard.js.map +1 -0
  68. package/dist/health.controller.d.ts +6 -0
  69. package/dist/health.controller.js +32 -0
  70. package/dist/health.controller.js.map +1 -0
  71. package/dist/main.d.ts +1 -0
  72. package/dist/main.js +267 -0
  73. package/dist/main.js.map +1 -0
  74. package/dist/mcp.controller.d.ts +8 -0
  75. package/dist/mcp.controller.js +62 -0
  76. package/dist/mcp.controller.js.map +1 -0
  77. package/dist/project.service.d.ts +44 -0
  78. package/dist/project.service.js +299 -0
  79. package/dist/project.service.js.map +1 -0
  80. package/dist/providers/base-ai.provider.d.ts +50 -0
  81. package/dist/providers/base-ai.provider.js +624 -0
  82. package/dist/providers/base-ai.provider.js.map +1 -0
  83. package/dist/providers/claude.provider.d.ts +25 -0
  84. package/dist/providers/claude.provider.js +362 -0
  85. package/dist/providers/claude.provider.js.map +1 -0
  86. package/dist/providers/codex.provider.d.ts +17 -0
  87. package/dist/providers/codex.provider.js +99 -0
  88. package/dist/providers/codex.provider.js.map +1 -0
  89. package/dist/providers/copilot.provider.d.ts +25 -0
  90. package/dist/providers/copilot.provider.js +266 -0
  91. package/dist/providers/copilot.provider.js.map +1 -0
  92. package/dist/providers/dynamic-provider.factory.d.ts +55 -0
  93. package/dist/providers/dynamic-provider.factory.js +586 -0
  94. package/dist/providers/dynamic-provider.factory.js.map +1 -0
  95. package/dist/providers/gemini.provider.d.ts +22 -0
  96. package/dist/providers/gemini.provider.js +147 -0
  97. package/dist/providers/gemini.provider.js.map +1 -0
  98. package/dist/services/agent-loader.service.d.ts +29 -0
  99. package/dist/services/agent-loader.service.js +370 -0
  100. package/dist/services/agent-loader.service.js.map +1 -0
  101. package/dist/services/auth.service.d.ts +9 -0
  102. package/dist/services/auth.service.js +47 -0
  103. package/dist/services/auth.service.js.map +1 -0
  104. package/dist/services/config-validator.service.d.ts +28 -0
  105. package/dist/services/config-validator.service.js +467 -0
  106. package/dist/services/config-validator.service.js.map +1 -0
  107. package/dist/services/config.service.d.ts +45 -0
  108. package/dist/services/config.service.js +180 -0
  109. package/dist/services/config.service.js.map +1 -0
  110. package/dist/services/context-enhancement.service.d.ts +13 -0
  111. package/dist/services/context-enhancement.service.js +169 -0
  112. package/dist/services/context-enhancement.service.js.map +1 -0
  113. package/dist/services/document-loader.service.d.ts +16 -0
  114. package/dist/services/document-loader.service.js +137 -0
  115. package/dist/services/document-loader.service.js.map +1 -0
  116. package/dist/services/help.service.d.ts +5 -0
  117. package/dist/services/help.service.js +117 -0
  118. package/dist/services/help.service.js.map +1 -0
  119. package/dist/services/intelligent-compression.service.d.ts +20 -0
  120. package/dist/services/intelligent-compression.service.js +179 -0
  121. package/dist/services/intelligent-compression.service.js.map +1 -0
  122. package/dist/services/mcp-client.service.d.ts +26 -0
  123. package/dist/services/mcp-client.service.js +81 -0
  124. package/dist/services/mcp-client.service.js.map +1 -0
  125. package/dist/services/parallel-processing.service.d.ts +108 -0
  126. package/dist/services/parallel-processing.service.js +268 -0
  127. package/dist/services/parallel-processing.service.js.map +1 -0
  128. package/dist/services/remote-agent.service.d.ts +49 -0
  129. package/dist/services/remote-agent.service.js +215 -0
  130. package/dist/services/remote-agent.service.js.map +1 -0
  131. package/dist/services/result-formatter.service.d.ts +27 -0
  132. package/dist/services/result-formatter.service.js +126 -0
  133. package/dist/services/result-formatter.service.js.map +1 -0
  134. package/dist/services/task-management.service.d.ts +63 -0
  135. package/dist/services/task-management.service.js +272 -0
  136. package/dist/services/task-management.service.js.map +1 -0
  137. package/dist/services/template.service.d.ts +36 -0
  138. package/dist/services/template.service.js +195 -0
  139. package/dist/services/template.service.js.map +1 -0
  140. package/dist/services/tool-call.service.d.ts +53 -0
  141. package/dist/services/tool-call.service.js +1061 -0
  142. package/dist/services/tool-call.service.js.map +1 -0
  143. package/dist/slack/formatters/message.formatter.d.ts +25 -0
  144. package/dist/slack/formatters/message.formatter.js +246 -0
  145. package/dist/slack/formatters/message.formatter.js.map +1 -0
  146. package/dist/slack/slack-bot.d.ts +24 -0
  147. package/dist/slack/slack-bot.js +467 -0
  148. package/dist/slack/slack-bot.js.map +1 -0
  149. package/dist/stderr.logger.d.ts +8 -0
  150. package/dist/stderr.logger.js +26 -0
  151. package/dist/stderr.logger.js.map +1 -0
  152. package/dist/utils/config-utils.d.ts +15 -0
  153. package/dist/utils/config-utils.js +69 -0
  154. package/dist/utils/config-utils.js.map +1 -0
  155. package/dist/utils/mcp-installer.d.ts +20 -0
  156. package/dist/utils/mcp-installer.js +199 -0
  157. package/dist/utils/mcp-installer.js.map +1 -0
  158. package/dist/utils/mention-parser.d.ts +18 -0
  159. package/dist/utils/mention-parser.js +136 -0
  160. package/dist/utils/mention-parser.js.map +1 -0
  161. package/dist/utils/simple-security.d.ts +3 -0
  162. package/dist/utils/simple-security.js +20 -0
  163. package/dist/utils/simple-security.js.map +1 -0
  164. package/dist/utils/stdin-utils.d.ts +27 -0
  165. package/dist/utils/stdin-utils.js +130 -0
  166. package/dist/utils/stdin-utils.js.map +1 -0
  167. package/dist/utils/template-processor.d.ts +32 -0
  168. package/dist/utils/template-processor.js +202 -0
  169. package/dist/utils/template-processor.js.map +1 -0
  170. package/dist/version.d.ts +1 -0
  171. package/dist/version.js +17 -0
  172. package/dist/version.js.map +1 -0
  173. package/package.json +122 -0
@@ -0,0 +1,199 @@
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.registerCrewXMCP = registerCrewXMCP;
37
+ exports.checkMCPRegistration = checkMCPRegistration;
38
+ const child_process_1 = require("child_process");
39
+ const util_1 = require("util");
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const os = __importStar(require("os"));
43
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
44
+ async function registerCrewXMCP() {
45
+ const result = {
46
+ claude: { success: false, message: '' },
47
+ gemini: { success: false, message: '' },
48
+ copilot: { success: false, message: '' },
49
+ };
50
+ const claudeAvailable = await checkCommandAvailable('claude');
51
+ const geminiAvailable = await checkCommandAvailable('gemini');
52
+ const copilotAvailable = await checkCommandAvailable('copilot');
53
+ if (claudeAvailable) {
54
+ try {
55
+ result.claude = await registerClaudeMCP();
56
+ }
57
+ catch (error) {
58
+ result.claude = { success: false, message: error.message };
59
+ }
60
+ }
61
+ else {
62
+ result.claude = { success: false, message: 'Claude CLI not installed' };
63
+ }
64
+ if (geminiAvailable) {
65
+ try {
66
+ result.gemini = await registerGeminiMCP();
67
+ }
68
+ catch (error) {
69
+ result.gemini = { success: false, message: error.message };
70
+ }
71
+ }
72
+ else {
73
+ result.gemini = { success: false, message: 'Gemini CLI not installed' };
74
+ }
75
+ if (copilotAvailable) {
76
+ try {
77
+ result.copilot = await registerCopilotMCP();
78
+ }
79
+ catch (error) {
80
+ result.copilot = { success: false, message: error.message };
81
+ }
82
+ }
83
+ else {
84
+ result.copilot = { success: false, message: 'Copilot CLI not installed' };
85
+ }
86
+ return result;
87
+ }
88
+ async function checkCommandAvailable(command) {
89
+ try {
90
+ await execAsync(`which ${command}`);
91
+ return true;
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ }
97
+ async function registerClaudeMCP() {
98
+ try {
99
+ try {
100
+ await execAsync('claude mcp remove crewx -s user');
101
+ }
102
+ catch {
103
+ }
104
+ const { stdout, stderr } = await execAsync('claude mcp add -s user crewx crewx mcp');
105
+ if (stderr && !stderr.includes('File modified')) {
106
+ return { success: false, message: stderr };
107
+ }
108
+ return {
109
+ success: true,
110
+ message: 'Claude MCP registered successfully. Use: claude "Use crewx_listAgents tool"'
111
+ };
112
+ }
113
+ catch (error) {
114
+ return { success: false, message: error.message };
115
+ }
116
+ }
117
+ async function registerGeminiMCP() {
118
+ try {
119
+ try {
120
+ await execAsync('gemini mcp remove crewx');
121
+ }
122
+ catch {
123
+ }
124
+ const { stdout, stderr } = await execAsync('gemini mcp add -s user --trust crewx crewx mcp');
125
+ if (stderr && stderr.includes('error')) {
126
+ return { success: false, message: stderr };
127
+ }
128
+ return {
129
+ success: true,
130
+ message: 'Gemini MCP registered successfully. Use: gemini -p "Use crewx_listAgents" --allowed-mcp-server-names=crewx --yolo'
131
+ };
132
+ }
133
+ catch (error) {
134
+ return { success: false, message: error.message };
135
+ }
136
+ }
137
+ async function registerCopilotMCP() {
138
+ try {
139
+ const homeDir = os.homedir();
140
+ const copilotConfigDir = path.join(homeDir, '.config', 'github-copilot');
141
+ const copilotConfigPath = path.join(copilotConfigDir, 'mcp-servers.json');
142
+ if (!fs.existsSync(copilotConfigDir)) {
143
+ fs.mkdirSync(copilotConfigDir, { recursive: true });
144
+ }
145
+ let config = { mcpServers: {} };
146
+ if (fs.existsSync(copilotConfigPath)) {
147
+ const content = fs.readFileSync(copilotConfigPath, 'utf-8');
148
+ config = JSON.parse(content);
149
+ }
150
+ config.mcpServers = config.mcpServers || {};
151
+ config.mcpServers.crewx = {
152
+ command: 'crewx',
153
+ args: ['mcp']
154
+ };
155
+ fs.writeFileSync(copilotConfigPath, JSON.stringify(config, null, 2));
156
+ return {
157
+ success: true,
158
+ message: 'Copilot MCP config updated. Note: MCP tools may not work in CLI mode (VS Code only)'
159
+ };
160
+ }
161
+ catch (error) {
162
+ return { success: false, message: error.message };
163
+ }
164
+ }
165
+ async function checkMCPRegistration() {
166
+ const result = {
167
+ claude: false,
168
+ gemini: false,
169
+ copilot: false,
170
+ };
171
+ try {
172
+ const homeDir = os.homedir();
173
+ const claudeConfigPath = path.join(homeDir, '.claude.json');
174
+ if (fs.existsSync(claudeConfigPath)) {
175
+ const content = fs.readFileSync(claudeConfigPath, 'utf-8');
176
+ result.claude = content.includes('"crewx"');
177
+ }
178
+ }
179
+ catch {
180
+ }
181
+ try {
182
+ const { stdout } = await execAsync('gemini mcp list');
183
+ result.gemini = stdout.includes('crewx');
184
+ }
185
+ catch {
186
+ }
187
+ try {
188
+ const homeDir = os.homedir();
189
+ const copilotConfigPath = path.join(homeDir, '.config', 'github-copilot', 'mcp-servers.json');
190
+ if (fs.existsSync(copilotConfigPath)) {
191
+ const content = fs.readFileSync(copilotConfigPath, 'utf-8');
192
+ result.copilot = content.includes('"crewx"');
193
+ }
194
+ }
195
+ catch {
196
+ }
197
+ return result;
198
+ }
199
+ //# sourceMappingURL=mcp-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-installer.js","sourceRoot":"","sources":["../../src/utils/mcp-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
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[]>;
@@ -0,0 +1,136 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention-parser.js","sourceRoot":"","sources":["../../src/utils/mention-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare class CliOptionSorter {
2
+ static sortOptions(options: string[]): string[];
3
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CliOptionSorter = void 0;
4
+ class CliOptionSorter {
5
+ static sortOptions(options) {
6
+ return [...options].sort((a, b) => {
7
+ const aIsLong = a.startsWith('--');
8
+ const aIsShort = a.startsWith('-') && !a.startsWith('--');
9
+ const bIsLong = b.startsWith('--');
10
+ const bIsShort = b.startsWith('-') && !b.startsWith('--');
11
+ if (aIsLong && bIsShort)
12
+ return -1;
13
+ if (bIsLong && aIsShort)
14
+ return 1;
15
+ return 0;
16
+ });
17
+ }
18
+ }
19
+ exports.CliOptionSorter = CliOptionSorter;
20
+ //# sourceMappingURL=simple-security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-security.js","sourceRoot":"","sources":["../../src/utils/simple-security.ts"],"names":[],"mappings":";;;AAQA,MAAa,eAAe;IAO1B,MAAM,CAAC,WAAW,CAAC,OAAiB;QAClC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAG1D,IAAI,OAAO,IAAI,QAAQ;gBAAE,OAAO,CAAC,CAAC,CAAC;YACnC,IAAI,OAAO,IAAI,QAAQ;gBAAE,OAAO,CAAC,CAAC;YAGlC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAtBD,0CAsBC"}
@@ -0,0 +1,27 @@
1
+ export declare function readStdin(): Promise<string | null>;
2
+ export declare function formatPipedContext(pipedContent: string): string;
3
+ export interface StructuredContextPayload {
4
+ version?: string;
5
+ agent?: {
6
+ id?: string | null;
7
+ provider?: string;
8
+ mode?: string;
9
+ model?: string | null;
10
+ };
11
+ prompt?: string;
12
+ context?: string;
13
+ messages?: Array<{
14
+ text: string;
15
+ isAssistant: boolean;
16
+ metadata?: Record<string, any>;
17
+ }>;
18
+ metadata?: {
19
+ platform?: string;
20
+ formattedHistory?: string;
21
+ originalContext?: string;
22
+ messageCount?: number;
23
+ generatedAt?: string;
24
+ };
25
+ }
26
+ export declare function parseStructuredPayload(input: string | null | undefined): StructuredContextPayload | null;
27
+ export declare function buildContextFromStructuredPayload(payload: StructuredContextPayload | null): string | undefined;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readStdin = readStdin;
4
+ exports.formatPipedContext = formatPipedContext;
5
+ exports.parseStructuredPayload = parseStructuredPayload;
6
+ exports.buildContextFromStructuredPayload = buildContextFromStructuredPayload;
7
+ const crewx_sdk_1 = require("@sowonai/crewx-sdk");
8
+ async function readStdin() {
9
+ const timeoutConfig = (0, crewx_sdk_1.getTimeoutConfig)();
10
+ if (process.stdin.isTTY) {
11
+ return null;
12
+ }
13
+ return new Promise((resolve, reject) => {
14
+ let data = '';
15
+ let chunks = 0;
16
+ let dataTimeout = null;
17
+ process.stdin.setEncoding('utf8');
18
+ const debug = process.env.DEBUG_STDIN === '1';
19
+ if (debug) {
20
+ console.error('[STDIN] Waiting for piped input...');
21
+ }
22
+ const dataHandler = (chunk) => {
23
+ chunks++;
24
+ data += chunk;
25
+ if (debug) {
26
+ console.error(`[STDIN] Received chunk ${chunks}: "${chunk.substring(0, 50)}..."`);
27
+ }
28
+ if (dataTimeout) {
29
+ clearTimeout(dataTimeout);
30
+ }
31
+ const looksComplete = /āœ….*completed successfully\s*$/.test(data);
32
+ const timeout = looksComplete ? timeoutConfig.stdinComplete : timeoutConfig.stdinChunk;
33
+ dataTimeout = setTimeout(() => {
34
+ cleanup();
35
+ resolve(data.trim() || null);
36
+ }, timeout);
37
+ };
38
+ const endHandler = () => {
39
+ cleanup();
40
+ resolve(data.trim() || null);
41
+ };
42
+ const errorHandler = (error) => {
43
+ cleanup();
44
+ reject(error);
45
+ };
46
+ const cleanup = () => {
47
+ if (dataTimeout) {
48
+ clearTimeout(dataTimeout);
49
+ dataTimeout = null;
50
+ }
51
+ process.stdin.removeListener('data', dataHandler);
52
+ process.stdin.removeListener('end', endHandler);
53
+ process.stdin.removeListener('error', errorHandler);
54
+ };
55
+ process.stdin.on('data', dataHandler);
56
+ process.stdin.on('end', endHandler);
57
+ process.stdin.on('error', errorHandler);
58
+ const initialTimeout = setTimeout(() => {
59
+ if (chunks === 0) {
60
+ if (debug) {
61
+ console.error('[STDIN] Timeout - no data received');
62
+ }
63
+ cleanup();
64
+ resolve(null);
65
+ }
66
+ }, timeoutConfig.stdinInitial);
67
+ process.stdin.once('data', () => clearTimeout(initialTimeout));
68
+ process.stdin.once('end', () => clearTimeout(initialTimeout));
69
+ });
70
+ }
71
+ function extractAIResponse(content) {
72
+ const debug = process.env.DEBUG_STDIN === '1';
73
+ const responseMatch = content.match(/šŸ“„ Response:\s*\n[-─]+\s*\n([\s\S]*?)(?:\n\nšŸ“|$)/);
74
+ if (debug) {
75
+ console.error(`[STDIN] Extract: input length=${content.length}, hasMatch=${!!responseMatch}`);
76
+ if (responseMatch && responseMatch[1]) {
77
+ console.error(`[STDIN] Extracted: "${responseMatch[1].substring(0, 100)}..."`);
78
+ }
79
+ }
80
+ if (responseMatch && responseMatch[1]) {
81
+ return responseMatch[1].trim();
82
+ }
83
+ return content.trim();
84
+ }
85
+ function formatPipedContext(pipedContent) {
86
+ const cleanContent = extractAIResponse(pipedContent);
87
+ return `Previous step result:\n${cleanContent}\n\nPlease use this information as context for the current task.`;
88
+ }
89
+ function parseStructuredPayload(input) {
90
+ if (!input) {
91
+ return null;
92
+ }
93
+ const trimmed = input.trim();
94
+ if (!trimmed.startsWith('{') || !trimmed.endsWith('}')) {
95
+ return null;
96
+ }
97
+ try {
98
+ const parsed = JSON.parse(trimmed);
99
+ if (parsed && typeof parsed === 'object' && 'prompt' in parsed && 'messages' in parsed) {
100
+ const payload = parsed;
101
+ if (!Array.isArray(payload.messages)) {
102
+ payload.messages = [];
103
+ }
104
+ return payload;
105
+ }
106
+ }
107
+ catch (error) {
108
+ }
109
+ return null;
110
+ }
111
+ function buildContextFromStructuredPayload(payload) {
112
+ if (!payload) {
113
+ return undefined;
114
+ }
115
+ const hasMessages = Array.isArray(payload.messages) && payload.messages.length > 0;
116
+ if (hasMessages) {
117
+ const candidateWithMessages = payload.context && payload.context.trim();
118
+ return candidateWithMessages || undefined;
119
+ }
120
+ const candidate = payload.context && payload.context.trim();
121
+ if (candidate) {
122
+ return candidate;
123
+ }
124
+ const formatted = payload.metadata?.formattedHistory && payload.metadata.formattedHistory.trim();
125
+ if (formatted) {
126
+ return formatted;
127
+ }
128
+ return undefined;
129
+ }
130
+ //# sourceMappingURL=stdin-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdin-utils.js","sourceRoot":"","sources":["../../src/utils/stdin-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { DocumentLoaderService } from '../services/document-loader.service';
2
+ export interface TemplateContext {
3
+ env?: Record<string, string | undefined>;
4
+ options?: string[];
5
+ agent?: {
6
+ id: string;
7
+ name: string;
8
+ provider: string;
9
+ model?: string;
10
+ workingDirectory?: string;
11
+ };
12
+ mode?: 'query' | 'execute';
13
+ messages?: Array<{
14
+ text: string;
15
+ isAssistant: boolean;
16
+ metadata?: Record<string, any>;
17
+ }>;
18
+ platform?: 'slack' | 'cli';
19
+ tools?: {
20
+ list: Array<{
21
+ name: string;
22
+ description: string;
23
+ input_schema: any;
24
+ output_schema?: any;
25
+ }>;
26
+ json: string;
27
+ count: number;
28
+ };
29
+ vars?: Record<string, any>;
30
+ }
31
+ export declare function processDocumentTemplate(template: string, documentLoader: DocumentLoaderService, additionalContext?: TemplateContext): Promise<string>;
32
+ export declare function hasDocumentReferences(template: string): boolean;