@crewx/cli 0.8.0-rc.66 → 0.8.0-rc.82

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 (281) hide show
  1. package/bin/crewx +2 -0
  2. package/dist/bootstrap/crewx-cli.d.ts +11 -0
  3. package/dist/bootstrap/crewx-cli.js +31 -0
  4. package/dist/builtin.d.ts +15 -0
  5. package/dist/{cli/builtin.handler.js → builtin.js} +21 -7
  6. package/dist/commands/agent.d.ts +12 -0
  7. package/dist/commands/agent.js +246 -0
  8. package/dist/commands/doctor.d.ts +12 -0
  9. package/dist/commands/doctor.js +190 -0
  10. package/dist/commands/execute.d.ts +21 -0
  11. package/dist/commands/execute.js +117 -0
  12. package/dist/commands/hook/install.d.ts +21 -0
  13. package/dist/commands/hook/install.js +175 -0
  14. package/dist/commands/hook/paths.d.ts +19 -0
  15. package/dist/commands/hook/paths.js +94 -0
  16. package/dist/commands/hook/status.d.ts +7 -0
  17. package/dist/commands/hook/status.js +86 -0
  18. package/dist/commands/hook/uninstall.d.ts +8 -0
  19. package/dist/commands/hook/uninstall.js +71 -0
  20. package/dist/commands/hook-dispatch.d.ts +15 -0
  21. package/dist/commands/hook-dispatch.js +180 -0
  22. package/dist/commands/init.d.ts +24 -0
  23. package/dist/commands/init.js +133 -0
  24. package/dist/commands/kill.d.ts +12 -0
  25. package/dist/commands/kill.js +49 -0
  26. package/dist/commands/log.d.ts +13 -0
  27. package/dist/commands/log.js +97 -0
  28. package/dist/commands/parse-agent-message.d.ts +31 -0
  29. package/dist/commands/parse-agent-message.js +52 -0
  30. package/dist/commands/parse-common-flags.d.ts +36 -0
  31. package/dist/commands/parse-common-flags.js +105 -0
  32. package/dist/commands/ps.d.ts +12 -0
  33. package/dist/commands/ps.js +71 -0
  34. package/dist/commands/query.d.ts +21 -0
  35. package/dist/commands/query.js +117 -0
  36. package/dist/commands/result.d.ts +13 -0
  37. package/dist/commands/result.js +73 -0
  38. package/dist/commands/slack.d.ts +12 -0
  39. package/dist/commands/slack.js +559 -0
  40. package/dist/commands/task-db.d.ts +33 -0
  41. package/dist/commands/task-db.js +107 -0
  42. package/dist/examples/deny-secrets-plugin.d.ts +22 -0
  43. package/dist/examples/deny-secrets-plugin.js +40 -0
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.js +5 -0
  46. package/dist/logging.d.ts +21 -0
  47. package/dist/logging.js +86 -0
  48. package/dist/main.d.ts +10 -0
  49. package/dist/main.js +246 -256
  50. package/dist/plugins/examples/echo-hook.d.ts +24 -0
  51. package/dist/plugins/examples/echo-hook.js +60 -0
  52. package/dist/plugins/examples/verify-echo-hook.d.ts +8 -0
  53. package/dist/plugins/examples/verify-echo-hook.js +47 -0
  54. package/dist/plugins/sqlite-tracing.d.ts +13 -0
  55. package/dist/plugins/sqlite-tracing.js +20 -0
  56. package/dist/register-builtin-tools.d.ts +5 -0
  57. package/dist/register-builtin-tools.js +9 -0
  58. package/dist/slack/file-download.d.ts +17 -0
  59. package/dist/slack/file-download.js +134 -0
  60. package/dist/slack/markdown.d.ts +5 -0
  61. package/dist/slack/markdown.js +33 -0
  62. package/dist/utils/env-defaults.d.ts +5 -0
  63. package/dist/utils/env-defaults.js +10 -0
  64. package/dist/utils/version.d.ts +1 -0
  65. package/dist/utils/version.js +28 -0
  66. package/package.json +32 -115
  67. package/README.md +0 -663
  68. package/dist/ai-provider.service.d.ts +0 -36
  69. package/dist/ai-provider.service.js +0 -315
  70. package/dist/ai-provider.service.js.map +0 -1
  71. package/dist/ai.service.d.ts +0 -17
  72. package/dist/ai.service.js +0 -51
  73. package/dist/ai.service.js.map +0 -1
  74. package/dist/app.module.d.ts +0 -5
  75. package/dist/app.module.js +0 -165
  76. package/dist/app.module.js.map +0 -1
  77. package/dist/cli/agent.handler.d.ts +0 -2
  78. package/dist/cli/agent.handler.js +0 -186
  79. package/dist/cli/agent.handler.js.map +0 -1
  80. package/dist/cli/builtin.handler.d.ts +0 -3
  81. package/dist/cli/builtin.handler.js.map +0 -1
  82. package/dist/cli/chat.handler.d.ts +0 -20
  83. package/dist/cli/chat.handler.js +0 -446
  84. package/dist/cli/chat.handler.js.map +0 -1
  85. package/dist/cli/cli.handler.d.ts +0 -4
  86. package/dist/cli/cli.handler.js +0 -119
  87. package/dist/cli/cli.handler.js.map +0 -1
  88. package/dist/cli/doctor.handler.d.ts +0 -38
  89. package/dist/cli/doctor.handler.js +0 -495
  90. package/dist/cli/doctor.handler.js.map +0 -1
  91. package/dist/cli/execute.handler.d.ts +0 -2
  92. package/dist/cli/execute.handler.js +0 -376
  93. package/dist/cli/execute.handler.js.map +0 -1
  94. package/dist/cli/help.handler.d.ts +0 -2
  95. package/dist/cli/help.handler.js +0 -10
  96. package/dist/cli/help.handler.js.map +0 -1
  97. package/dist/cli/init.handler.d.ts +0 -26
  98. package/dist/cli/init.handler.js +0 -450
  99. package/dist/cli/init.handler.js.map +0 -1
  100. package/dist/cli/log.handler.d.ts +0 -2
  101. package/dist/cli/log.handler.js +0 -69
  102. package/dist/cli/log.handler.js.map +0 -1
  103. package/dist/cli/mcp.handler.d.ts +0 -3
  104. package/dist/cli/mcp.handler.js +0 -121
  105. package/dist/cli/mcp.handler.js.map +0 -1
  106. package/dist/cli/query.handler.d.ts +0 -2
  107. package/dist/cli/query.handler.js +0 -392
  108. package/dist/cli/query.handler.js.map +0 -1
  109. package/dist/cli/skill.handler.d.ts +0 -2
  110. package/dist/cli/skill.handler.js +0 -252
  111. package/dist/cli/skill.handler.js.map +0 -1
  112. package/dist/cli/slack-files.handler.d.ts +0 -2
  113. package/dist/cli/slack-files.handler.js +0 -291
  114. package/dist/cli/slack-files.handler.js.map +0 -1
  115. package/dist/cli/template.handler.d.ts +0 -2
  116. package/dist/cli/template.handler.js +0 -188
  117. package/dist/cli/template.handler.js.map +0 -1
  118. package/dist/cli/templates.handler.d.ts +0 -2
  119. package/dist/cli/templates.handler.js +0 -100
  120. package/dist/cli/templates.handler.js.map +0 -1
  121. package/dist/cli-options.d.ts +0 -40
  122. package/dist/cli-options.js +0 -371
  123. package/dist/cli-options.js.map +0 -1
  124. package/dist/config/timeout.config.d.ts +0 -14
  125. package/dist/config/timeout.config.js +0 -34
  126. package/dist/config/timeout.config.js.map +0 -1
  127. package/dist/conversation/base-conversation-history.provider.d.ts +0 -12
  128. package/dist/conversation/base-conversation-history.provider.js +0 -45
  129. package/dist/conversation/base-conversation-history.provider.js.map +0 -1
  130. package/dist/conversation/cli-box-reader.adapter.d.ts +0 -6
  131. package/dist/conversation/cli-box-reader.adapter.js +0 -10
  132. package/dist/conversation/cli-box-reader.adapter.js.map +0 -1
  133. package/dist/conversation/cli-conversation-history.provider.d.ts +0 -16
  134. package/dist/conversation/cli-conversation-history.provider.js +0 -112
  135. package/dist/conversation/cli-conversation-history.provider.js.map +0 -1
  136. package/dist/conversation/cli-task-reader.adapter.d.ts +0 -6
  137. package/dist/conversation/cli-task-reader.adapter.js +0 -25
  138. package/dist/conversation/cli-task-reader.adapter.js.map +0 -1
  139. package/dist/conversation/conversation-provider.factory.d.ts +0 -10
  140. package/dist/conversation/conversation-provider.factory.js +0 -50
  141. package/dist/conversation/conversation-provider.factory.js.map +0 -1
  142. package/dist/conversation/index.d.ts +0 -8
  143. package/dist/conversation/index.js +0 -29
  144. package/dist/conversation/index.js.map +0 -1
  145. package/dist/conversation/slack-conversation-history.provider.d.ts +0 -29
  146. package/dist/conversation/slack-conversation-history.provider.js +0 -302
  147. package/dist/conversation/slack-conversation-history.provider.js.map +0 -1
  148. package/dist/crewx.tool.d.ts +0 -360
  149. package/dist/crewx.tool.js +0 -2531
  150. package/dist/crewx.tool.js.map +0 -1
  151. package/dist/crewx.tool.spec.d.ts +0 -1
  152. package/dist/crewx.tool.spec.js +0 -222
  153. package/dist/crewx.tool.spec.js.map +0 -1
  154. package/dist/guards/bearer-auth.guard.d.ts +0 -7
  155. package/dist/guards/bearer-auth.guard.js +0 -44
  156. package/dist/guards/bearer-auth.guard.js.map +0 -1
  157. package/dist/health.controller.d.ts +0 -6
  158. package/dist/health.controller.js +0 -32
  159. package/dist/health.controller.js.map +0 -1
  160. package/dist/main.js.map +0 -1
  161. package/dist/mcp.controller.d.ts +0 -8
  162. package/dist/mcp.controller.js +0 -62
  163. package/dist/mcp.controller.js.map +0 -1
  164. package/dist/package.json +0 -3
  165. package/dist/providers/dynamic-provider.factory.d.ts +0 -17
  166. package/dist/providers/dynamic-provider.factory.js +0 -138
  167. package/dist/providers/dynamic-provider.factory.js.map +0 -1
  168. package/dist/providers/logger.adapter.d.ts +0 -7
  169. package/dist/providers/logger.adapter.js +0 -107
  170. package/dist/providers/logger.adapter.js.map +0 -1
  171. package/dist/services/agent-loader.service.d.ts +0 -35
  172. package/dist/services/agent-loader.service.js +0 -623
  173. package/dist/services/agent-loader.service.js.map +0 -1
  174. package/dist/services/auth.service.d.ts +0 -9
  175. package/dist/services/auth.service.js +0 -47
  176. package/dist/services/auth.service.js.map +0 -1
  177. package/dist/services/config-validator.service.d.ts +0 -29
  178. package/dist/services/config-validator.service.js +0 -483
  179. package/dist/services/config-validator.service.js.map +0 -1
  180. package/dist/services/config.service.d.ts +0 -45
  181. package/dist/services/config.service.js +0 -352
  182. package/dist/services/config.service.js.map +0 -1
  183. package/dist/services/document-loader.service.d.ts +0 -26
  184. package/dist/services/document-loader.service.js +0 -186
  185. package/dist/services/document-loader.service.js.map +0 -1
  186. package/dist/services/help.service.d.ts +0 -5
  187. package/dist/services/help.service.js +0 -139
  188. package/dist/services/help.service.js.map +0 -1
  189. package/dist/services/intelligent-compression.service.d.ts +0 -20
  190. package/dist/services/intelligent-compression.service.js +0 -179
  191. package/dist/services/intelligent-compression.service.js.map +0 -1
  192. package/dist/services/mcp-client.service.d.ts +0 -26
  193. package/dist/services/mcp-client.service.js +0 -81
  194. package/dist/services/mcp-client.service.js.map +0 -1
  195. package/dist/services/parallel-processing.service.d.ts +0 -108
  196. package/dist/services/parallel-processing.service.js +0 -333
  197. package/dist/services/parallel-processing.service.js.map +0 -1
  198. package/dist/services/provider-bridge.service.d.ts +0 -35
  199. package/dist/services/provider-bridge.service.js +0 -224
  200. package/dist/services/provider-bridge.service.js.map +0 -1
  201. package/dist/services/remote-agent.service.d.ts +0 -50
  202. package/dist/services/remote-agent.service.js +0 -171
  203. package/dist/services/remote-agent.service.js.map +0 -1
  204. package/dist/services/result-formatter.service.d.ts +0 -27
  205. package/dist/services/result-formatter.service.js +0 -126
  206. package/dist/services/result-formatter.service.js.map +0 -1
  207. package/dist/services/skill-loader.service.d.ts +0 -15
  208. package/dist/services/skill-loader.service.js +0 -278
  209. package/dist/services/skill-loader.service.js.map +0 -1
  210. package/dist/services/skill.service.d.ts +0 -69
  211. package/dist/services/skill.service.js +0 -779
  212. package/dist/services/skill.service.js.map +0 -1
  213. package/dist/services/skill.service.spec.d.ts +0 -1
  214. package/dist/services/skill.service.spec.js +0 -168
  215. package/dist/services/skill.service.spec.js.map +0 -1
  216. package/dist/services/task-management.service.d.ts +0 -71
  217. package/dist/services/task-management.service.js +0 -324
  218. package/dist/services/task-management.service.js.map +0 -1
  219. package/dist/services/template.service.d.ts +0 -61
  220. package/dist/services/template.service.js +0 -416
  221. package/dist/services/template.service.js.map +0 -1
  222. package/dist/services/tool-call.service.d.ts +0 -16
  223. package/dist/services/tool-call.service.js +0 -302
  224. package/dist/services/tool-call.service.js.map +0 -1
  225. package/dist/services/tracing.service.d.ts +0 -197
  226. package/dist/services/tracing.service.js +0 -1267
  227. package/dist/services/tracing.service.js.map +0 -1
  228. package/dist/slack/formatters/message.formatter.d.ts +0 -43
  229. package/dist/slack/formatters/message.formatter.js +0 -505
  230. package/dist/slack/formatters/message.formatter.js.map +0 -1
  231. package/dist/slack/services/slack-file-download.service.d.ts +0 -58
  232. package/dist/slack/services/slack-file-download.service.js +0 -558
  233. package/dist/slack/services/slack-file-download.service.js.map +0 -1
  234. package/dist/slack/slack-bot.d.ts +0 -33
  235. package/dist/slack/slack-bot.js +0 -568
  236. package/dist/slack/slack-bot.js.map +0 -1
  237. package/dist/stderr.logger.d.ts +0 -8
  238. package/dist/stderr.logger.js +0 -26
  239. package/dist/stderr.logger.js.map +0 -1
  240. package/dist/types/usage.types.d.ts +0 -107
  241. package/dist/types/usage.types.js +0 -3
  242. package/dist/types/usage.types.js.map +0 -1
  243. package/dist/utils/config-utils.d.ts +0 -15
  244. package/dist/utils/config-utils.js +0 -69
  245. package/dist/utils/config-utils.js.map +0 -1
  246. package/dist/utils/extract-text.d.ts +0 -1
  247. package/dist/utils/extract-text.js +0 -15
  248. package/dist/utils/extract-text.js.map +0 -1
  249. package/dist/utils/mcp-installer.d.ts +0 -20
  250. package/dist/utils/mcp-installer.js +0 -199
  251. package/dist/utils/mcp-installer.js.map +0 -1
  252. package/dist/utils/project-hash.d.ts +0 -6
  253. package/dist/utils/project-hash.js +0 -70
  254. package/dist/utils/project-hash.js.map +0 -1
  255. package/dist/utils/simple-security.d.ts +0 -3
  256. package/dist/utils/simple-security.js +0 -20
  257. package/dist/utils/simple-security.js.map +0 -1
  258. package/dist/utils/stdin-utils.d.ts +0 -6
  259. package/dist/utils/stdin-utils.js +0 -109
  260. package/dist/utils/stdin-utils.js.map +0 -1
  261. package/dist/utils/template-processor.d.ts +0 -27
  262. package/dist/utils/template-processor.js +0 -395
  263. package/dist/utils/template-processor.js.map +0 -1
  264. package/dist/utils/terminal-message-formatter.d.ts +0 -23
  265. package/dist/utils/terminal-message-formatter.js +0 -136
  266. package/dist/utils/terminal-message-formatter.js.map +0 -1
  267. package/dist/version.d.ts +0 -1
  268. package/dist/version.js +0 -17
  269. package/dist/version.js.map +0 -1
  270. package/dist/workspace.service.d.ts +0 -44
  271. package/dist/workspace.service.js +0 -299
  272. package/dist/workspace.service.js.map +0 -1
  273. package/scripts/backfill-tokens.js +0 -218
  274. package/scripts/postbuild-cli.mjs +0 -88
  275. package/scripts/postinstall-cli.mjs +0 -30
  276. package/templates/agents/default.yaml +0 -490
  277. package/templates/agents/minimal.yaml +0 -16
  278. package/templates/documents/conversation-history-default.hbs +0 -17
  279. package/templates/documents/crewx-manual.md +0 -2278
  280. package/templates/documents/crewx-quick-guide.md +0 -147
  281. package/templates/versions.json +0 -19
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env npx tsx
2
+ "use strict";
3
+ /**
4
+ * Phase 0 e2e verification — EchoHookPlugin logs Claude Code tool calls.
5
+ *
6
+ * Run: npx tsx packages/cli/src/plugins/examples/verify-echo-hook.ts
7
+ * Prereq: claude CLI installed, crewx.yaml with @claude agent
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const sdk_1 = require("@crewx/sdk");
11
+ const echo_hook_1 = require("./echo-hook");
12
+ const fs_1 = require("fs");
13
+ const path_1 = require("path");
14
+ const os_1 = require("os");
15
+ const LOG_PATH = (0, path_1.join)((0, os_1.homedir)(), '.crewx', 'logs', 'echo-hook.log');
16
+ async function main() {
17
+ if ((0, fs_1.existsSync)(LOG_PATH))
18
+ (0, fs_1.unlinkSync)(LOG_PATH);
19
+ const crewx = await sdk_1.Crewx.loadYaml('crewx.yaml');
20
+ await crewx.use(new echo_hook_1.EchoHookPlugin());
21
+ console.log('[verify] querying @claude with "ls"...');
22
+ await crewx.query('@claude', 'Run ls in the current directory. Use the Bash tool.');
23
+ await crewx.close();
24
+ if (!(0, fs_1.existsSync)(LOG_PATH)) {
25
+ console.error('[FAIL] echo-hook.log not created');
26
+ process.exit(1);
27
+ }
28
+ const lines = (0, fs_1.readFileSync)(LOG_PATH, 'utf8').trim().split('\n');
29
+ const entries = lines.map((l) => JSON.parse(l));
30
+ const hasBeforeTool = entries.some((e) => e.event === 'beforeTool');
31
+ const hasTraceId = entries.every((e) => e.traceId?.startsWith('tsk_'));
32
+ const hasToolName = entries
33
+ .filter((e) => e.event === 'beforeTool')
34
+ .every((e) => typeof e.tool?.rawName === 'string' && e.tool.rawName.length > 0);
35
+ console.log(`[verify] entries: ${entries.length}`);
36
+ console.log(`[verify] beforeTool: ${hasBeforeTool}`);
37
+ console.log(`[verify] traceId: ${hasTraceId}`);
38
+ console.log(`[verify] toolName: ${hasToolName}`);
39
+ if (hasBeforeTool && hasTraceId && hasToolName) {
40
+ console.log('[PASS] Phase 0 e2e verification passed');
41
+ }
42
+ else {
43
+ console.error('[FAIL] Some checks failed');
44
+ process.exit(1);
45
+ }
46
+ }
47
+ main().catch((err) => { console.error(err); process.exit(1); });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * CLI convenience wrapper for SqliteTracingPlugin.
3
+ * Accepts a dbRoot string or an options object so existing CLI tests can pass
4
+ * a temp directory path directly.
5
+ */
6
+ import { SqliteTracingPlugin as SdkPlugin } from '@crewx/sdk/plugins';
7
+ export type { SqliteTracingPluginOptions } from '@crewx/sdk/plugins';
8
+ export declare class SqliteTracingPlugin extends SdkPlugin {
9
+ constructor(dbRootOrOpts?: string | {
10
+ dbRoot?: string;
11
+ version?: string;
12
+ });
13
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqliteTracingPlugin = void 0;
4
+ /**
5
+ * CLI convenience wrapper for SqliteTracingPlugin.
6
+ * Accepts a dbRoot string or an options object so existing CLI tests can pass
7
+ * a temp directory path directly.
8
+ */
9
+ const plugins_1 = require("@crewx/sdk/plugins");
10
+ class SqliteTracingPlugin extends plugins_1.SqliteTracingPlugin {
11
+ constructor(dbRootOrOpts) {
12
+ if (typeof dbRootOrOpts === 'string') {
13
+ super({ dbRoot: dbRootOrOpts });
14
+ }
15
+ else {
16
+ super(dbRootOrOpts);
17
+ }
18
+ }
19
+ }
20
+ exports.SqliteTracingPlugin = SqliteTracingPlugin;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Register built-in Node.js tools for api/* provider agents.
3
+ * Delegates to @crewx/sdk/tools/node.
4
+ */
5
+ export { registerBuiltinTools as registerBuiltinToolsIfNeeded } from '@crewx/sdk/tools/node';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerBuiltinToolsIfNeeded = void 0;
4
+ /**
5
+ * Register built-in Node.js tools for api/* provider agents.
6
+ * Delegates to @crewx/sdk/tools/node.
7
+ */
8
+ var node_1 = require("@crewx/sdk/tools/node");
9
+ Object.defineProperty(exports, "registerBuiltinToolsIfNeeded", { enumerable: true, get: function () { return node_1.registerBuiltinTools; } });
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Lightweight Slack file downloader for CLI bot mode.
3
+ * Ported from cli-bak SlackFileDownloadService, stripped of NestJS deps.
4
+ * Uses Node.js built-in https for API calls.
5
+ */
6
+ export interface DownloadedFile {
7
+ fileId: string;
8
+ fileName: string;
9
+ filePath: string;
10
+ fileSize: number;
11
+ threadId: string;
12
+ }
13
+ export declare function downloadInboundFiles(botToken: string, files: Array<{
14
+ url_private: string;
15
+ mimetype: string;
16
+ name: string;
17
+ }>, threadId: string): Promise<DownloadedFile[]>;
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * Lightweight Slack file downloader for CLI bot mode.
4
+ * Ported from cli-bak SlackFileDownloadService, stripped of NestJS deps.
5
+ * Uses Node.js built-in https for API calls.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.downloadInboundFiles = downloadInboundFiles;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const https = __importStar(require("https"));
45
+ const MAX_FILE_SIZE = 50 * 1024 * 1024;
46
+ async function downloadInboundFiles(botToken, files, threadId) {
47
+ if (!files || files.length === 0)
48
+ return [];
49
+ const results = [];
50
+ const downloadDir = path.join(process.cwd(), '.crewx', 'slack-files');
51
+ const safeThreadDir = threadId.replace(/:/g, '_');
52
+ for (const file of files) {
53
+ if (!file.url_private)
54
+ continue;
55
+ const sanitizedName = sanitizeFileName(file.name || 'unnamed_file');
56
+ const saveDir = path.join(downloadDir, safeThreadDir);
57
+ const savePath = path.join(saveDir, sanitizedName);
58
+ try {
59
+ if (fs.existsSync(savePath)) {
60
+ const stats = fs.statSync(savePath);
61
+ results.push({
62
+ fileId: '',
63
+ fileName: sanitizedName,
64
+ filePath: savePath,
65
+ fileSize: stats.size,
66
+ threadId,
67
+ });
68
+ continue;
69
+ }
70
+ await fs.promises.mkdir(saveDir, { recursive: true });
71
+ const buffer = await fetchUrl(botToken, file.url_private);
72
+ if (buffer.length > MAX_FILE_SIZE) {
73
+ console.error(`File too large: ${sanitizedName} (${formatSize(buffer.length)})`);
74
+ continue;
75
+ }
76
+ await fs.promises.writeFile(savePath, buffer);
77
+ results.push({
78
+ fileId: '',
79
+ fileName: sanitizedName,
80
+ filePath: savePath,
81
+ fileSize: buffer.length,
82
+ threadId,
83
+ });
84
+ }
85
+ catch (err) {
86
+ console.error(`Failed to download file ${sanitizedName}: ${err instanceof Error ? err.message : String(err)}`);
87
+ }
88
+ }
89
+ return results;
90
+ }
91
+ function fetchUrl(token, url) {
92
+ const parsed = new URL(url);
93
+ return new Promise((resolve, reject) => {
94
+ const options = {
95
+ hostname: parsed.hostname,
96
+ path: parsed.pathname + parsed.search,
97
+ method: 'GET',
98
+ headers: { Authorization: `Bearer ${token}` },
99
+ };
100
+ const req = https.request(options, (res) => {
101
+ if (res.statusCode === 301 || res.statusCode === 302) {
102
+ const location = res.headers.location;
103
+ if (location) {
104
+ fetchUrl(token, location).then(resolve).catch(reject);
105
+ return;
106
+ }
107
+ }
108
+ if (res.statusCode !== 200) {
109
+ reject(new Error(`HTTP ${res.statusCode}`));
110
+ return;
111
+ }
112
+ const chunks = [];
113
+ res.on('data', (chunk) => chunks.push(chunk));
114
+ res.on('end', () => resolve(Buffer.concat(chunks)));
115
+ res.on('error', reject);
116
+ });
117
+ req.on('error', reject);
118
+ req.setTimeout(30000, () => { req.destroy(); reject(new Error('Timeout')); });
119
+ req.end();
120
+ });
121
+ }
122
+ function sanitizeFileName(name) {
123
+ let safe = name.replace(/[/\\]/g, '_').replace(/\.\./g, '_');
124
+ safe = safe.replace(/[\x00-\x1f\x80-\x9f<>:"|?*]/g, '_');
125
+ safe = safe.replace(/^\.+|\.+$/g, '').trim();
126
+ return safe || 'unnamed_file';
127
+ }
128
+ function formatSize(bytes) {
129
+ if (bytes < 1024)
130
+ return `${bytes}B`;
131
+ if (bytes < 1024 * 1024)
132
+ return `${(bytes / 1024).toFixed(1)}KB`;
133
+ return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
134
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Lightweight Markdown → Slack mrkdwn converter.
3
+ * Ported from cli-bak formatters, stripped of NestJS / md-to-slack deps.
4
+ */
5
+ export declare function markdownToMrkdwn(text: string): string;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * Lightweight Markdown → Slack mrkdwn converter.
4
+ * Ported from cli-bak formatters, stripped of NestJS / md-to-slack deps.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.markdownToMrkdwn = markdownToMrkdwn;
8
+ const HEADING_RE = /^(#{1,6})\s+(.+)$/gm;
9
+ const BOLD_RE = /\*\*([^*]+)\*\*/g;
10
+ const ITALIC_RE = /(?<!\*)\*([^*]+)\*(?!\*)/g;
11
+ const CODE_BLOCK_RE = /```(\w*)\n([\s\S]*?)```/g;
12
+ const INLINE_CODE_RE = /`([^`]+)`/g;
13
+ const LINK_RE = /\[([^\]]+)\]\(([^)]+)\)/g;
14
+ const UNORDERED_LIST_RE = /^[\s]*[-*]\s+/gm;
15
+ const ORDERED_LIST_RE = /^[\s]*(\d+)\.\s+/gm;
16
+ function markdownToMrkdwn(text) {
17
+ if (!text)
18
+ return '';
19
+ let result = text;
20
+ result = result.replace(CODE_BLOCK_RE, (_match, _lang, code) => {
21
+ return `\`\`\`${code.trim()}\`\`\``;
22
+ });
23
+ result = result.replace(INLINE_CODE_RE, '`$1`');
24
+ result = result.replace(HEADING_RE, (_match, _hashes, content) => {
25
+ return `*${content.trim()}*`;
26
+ });
27
+ result = result.replace(BOLD_RE, '*$1*');
28
+ result = result.replace(ITALIC_RE, '_$1_');
29
+ result = result.replace(LINK_RE, '<$2|$1>');
30
+ result = result.replace(UNORDERED_LIST_RE, '• ');
31
+ result = result.replace(ORDERED_LIST_RE, '$1. ');
32
+ return result;
33
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * CREWX_* environment variable defaults for CLI bootstrap.
3
+ * Re-exported from @crewx/sdk for convenience.
4
+ */
5
+ export { resolveCrewxCli, resolveCrewxWorkspace } from '@crewx/sdk';
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveCrewxWorkspace = exports.resolveCrewxCli = void 0;
4
+ /**
5
+ * CREWX_* environment variable defaults for CLI bootstrap.
6
+ * Re-exported from @crewx/sdk for convenience.
7
+ */
8
+ var sdk_1 = require("@crewx/sdk");
9
+ Object.defineProperty(exports, "resolveCrewxCli", { enumerable: true, get: function () { return sdk_1.resolveCrewxCli; } });
10
+ Object.defineProperty(exports, "resolveCrewxWorkspace", { enumerable: true, get: function () { return sdk_1.resolveCrewxWorkspace; } });
@@ -0,0 +1 @@
1
+ export declare const CLI_VERSION: string;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLI_VERSION = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ /**
7
+ * Return the installed @crewx/cli package version.
8
+ *
9
+ * Resolution strategy (mirrors cli-bak version.ts):
10
+ * 1. Read the package.json that is co-located with the compiled dist tree.
11
+ * At runtime __dirname resolves to dist/utils/, so ../../package.json
12
+ * reaches the package root — both in development and in an npm-installed
13
+ * deployment (node_modules/@crewx/cli/package.json).
14
+ * 2. Fall back to '0.0.0' on any I/O or parse error.
15
+ *
16
+ * Result is cached in the module-level constant to avoid repeated disk reads.
17
+ */
18
+ function readVersion() {
19
+ try {
20
+ const pkgPath = (0, path_1.join)(__dirname, '../../package.json');
21
+ const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, 'utf8'));
22
+ return pkg.version ?? '0.0.0';
23
+ }
24
+ catch {
25
+ return '0.0.0';
26
+ }
27
+ }
28
+ exports.CLI_VERSION = readVersion();
package/package.json CHANGED
@@ -1,135 +1,52 @@
1
1
  {
2
2
  "name": "@crewx/cli",
3
- "version": "0.8.0-rc.66",
3
+ "version": "0.8.0-rc.82",
4
4
  "license": "UNLICENSED",
5
5
  "engines": {
6
6
  "node": ">=20.19.0"
7
7
  },
8
- "description": "SowonAI CrewX CLI - Bring Your Own AI(BYOA) team in Slack/IDE(MCP) with your existing subscriptions",
9
- "private": false,
8
+ "description": "CrewX CLI thin wrapper over @crewx/sdk",
10
9
  "type": "commonjs",
11
10
  "main": "dist/main.js",
12
- "module": "dist/main.js",
13
- "bin": {
14
- "crewx": "dist/main.js"
15
- },
11
+ "types": "dist/index.d.ts",
16
12
  "exports": {
17
13
  ".": {
18
- "import": "./dist/main.js",
19
- "require": "./dist/main.js"
14
+ "require": "./dist/index.js",
15
+ "import": "./dist/index.js",
16
+ "types": "./dist/index.d.ts"
20
17
  }
21
18
  },
19
+ "bin": {
20
+ "crewx": "bin/crewx"
21
+ },
22
22
  "files": [
23
23
  "dist",
24
- "scripts",
25
- "README.md",
26
- "docs",
27
- "templates"
24
+ "bin",
25
+ "README.md"
28
26
  ],
29
- "repository": {
30
- "type": "git",
31
- "url": "https://github.com/sowonlabs/crewx"
32
- },
33
- "homepage": "https://github.com/sowonlabs/crewx",
34
- "bugs": {
35
- "url": "https://github.com/sowonlabs/crewx/issues"
27
+ "dependencies": {
28
+ "better-sqlite3": "*",
29
+ "@crewx/sdk": "0.8.0-rc.82",
30
+ "@crewx/memory": "0.1.8",
31
+ "@crewx/doc": "0.1.6",
32
+ "@crewx/wbs": "0.1.7",
33
+ "@crewx/search": "0.1.6",
34
+ "@crewx/cron": "0.1.6",
35
+ "@crewx/skill": "0.1.5",
36
+ "@crewx/shared": "0.0.4",
37
+ "@crewx/workflow": "0.3.6",
38
+ "@crewx/adapter-slack": "0.1.0"
36
39
  },
37
- "author": "SowonLabs",
38
- "publishConfig": {
39
- "access": "public"
40
+ "devDependencies": {
41
+ "@types/better-sqlite3": "*",
42
+ "@types/node": "^22.0.0",
43
+ "typescript": "^5.4.0",
44
+ "vitest": "^3.1.1"
40
45
  },
41
46
  "scripts": {
42
- "build": "nest build",
43
- "postbuild": "node ./scripts/postbuild-cli.mjs",
44
- "postinstall": "node ./scripts/postinstall-cli.mjs",
45
- "start": "node dist/main.js",
46
- "start:mcp": "node dist/main.js mcp",
47
- "start:slack": "caffeinate -i dotenv -e ../../.env.slack -- node dist/main.js slack --log --agent crewx_glm_dev",
48
- "dev": "dotenv -e ../../.env.test -- nest start --watch -- --log",
49
- "dev:install": "ts-node ../../src/main.ts --install --log",
50
- "debug": "dotenv -e ../../.env.test -- nest start --debug --watch -- --log --protocol HTTP",
51
- "inspector": "npx @modelcontextprotocol/inspector --config ../../inspector.config.json --server crewx",
47
+ "build": "tsc -p tsconfig.json",
52
48
  "test": "vitest run --config ./vitest.config.ts",
53
49
  "test:watch": "vitest --config ./vitest.config.ts",
54
- "test:ui": "vitest --ui --config ./vitest.config.ts",
55
- "test:unit": "vitest run --config ./vitest.config.ts tests/unit/**/*.test.ts",
56
- "test:integration": "vitest run --config ./vitest.config.ts tests/integration/**/*.test.ts --passWithNoTests",
57
- "test:e2e": "vitest run --config ./vitest.e2e.config.ts",
58
- "test:coverage": "vitest run --config ./vitest.config.ts --coverage",
59
- "cli": "npm run build && node dist/main.js",
60
- "cli:help": "npm run build && node dist/main.js",
61
- "cli:init": "npm run build && node dist/main.js init",
62
- "cli:doctor": "npm run build && node dist/main.js doctor",
63
- "cli:query": "npm run build && node dist/main.js query",
64
- "cli:execute": "npm run build && node dist/main.js execute",
65
- "mcp": "npm run build && node dist/main.js mcp",
66
- "mcp:log": "npm run build && node dist/main.js mcp --log",
67
- "prepack": "npm run build"
68
- },
69
- "dependencies": {
70
- "@modelcontextprotocol/sdk": "^1.0.0",
71
- "@nestjs/common": "^11.0.0",
72
- "@nestjs/core": "^11.0.0",
73
- "@nestjs/platform-express": "^11.0.0",
74
- "@slack/bolt": "^4.4.0",
75
- "@slack/web-api": "^7.10.0",
76
- "@crewx/sdk": "workspace:*",
77
- "@sowonai/nestjs-mcp-adapter": "^0.1.3",
78
- "@types/js-yaml": "^4.0.9",
79
- "@types/mdast": "^4.0.4",
80
- "@types/unist": "^3.0.3",
81
- "ajv": "^8.17.1",
82
- "ajv-formats": "^3.0.1",
83
- "chalk": "^4.1.2",
84
- "dotenv": "^17.2.3",
85
- "execa": "^8.0.1",
86
- "fast-glob": "^3.3.0",
87
- "giget": "^2.0.0",
88
- "handlebars": "^4.7.8",
89
- "ignore": "^5.2.0",
90
- "js-yaml": "^4.1.0",
91
- "md-to-slack": "^1.0.0",
92
- "node-sqlite3-wasm": "^0.8.30",
93
- "reflect-metadata": "^0.2.2",
94
- "remark-parse": "^11.0.0",
95
- "remark-stringify": "^11.0.0",
96
- "rxjs": "^7.8.0",
97
- "unified": "^11.0.5",
98
- "unist-util-visit": "^5.0.0",
99
- "yargs": "^17.7.0",
100
- "zod": "^3.22.0",
101
- "@crewx/memory": "workspace:*",
102
- "@crewx/search": "workspace:*",
103
- "@crewx/doc": "workspace:*",
104
- "@crewx/wbs": "workspace:*",
105
- "@crewx/cron": "workspace:*"
106
- },
107
- "optionalDependencies": {},
108
- "devDependencies": {
109
- "@nestjs/cli": "^11.0.0",
110
- "@nestjs/schematics": "^11.0.0",
111
- "@nestjs/testing": "^11.0.0",
112
- "@types/ajv": "^0.0.5",
113
- "@types/express": "^5.0.3",
114
- "@types/node": "^20.19.19",
115
- "@types/yargs": "^17.0.0",
116
- "@vitest/ui": "^1.0.0",
117
- "dotenv-cli": "^6.0.0",
118
- "ts-loader": "^9.0.0",
119
- "ts-node": "^10.0.0",
120
- "tsconfig-paths": "^4.2.0",
121
- "typescript": "^5.0.0",
122
- "vitest": "^1.0.0"
123
- },
124
- "keywords": [
125
- "crewx",
126
- "claude",
127
- "gemini",
128
- "copilot",
129
- "mcp",
130
- "ai",
131
- "model-context-protocol",
132
- "multi-agent",
133
- "ai-collaboration"
134
- ]
135
- }
50
+ "lint": "echo 'CLI lint pending' && exit 0"
51
+ }
52
+ }