@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.
- package/bin/crewx +2 -0
- package/dist/bootstrap/crewx-cli.d.ts +11 -0
- package/dist/bootstrap/crewx-cli.js +31 -0
- package/dist/builtin.d.ts +15 -0
- package/dist/{cli/builtin.handler.js ā builtin.js} +21 -7
- package/dist/commands/agent.d.ts +12 -0
- package/dist/commands/agent.js +246 -0
- package/dist/commands/doctor.d.ts +12 -0
- package/dist/commands/doctor.js +190 -0
- package/dist/commands/execute.d.ts +21 -0
- package/dist/commands/execute.js +117 -0
- package/dist/commands/hook/install.d.ts +21 -0
- package/dist/commands/hook/install.js +175 -0
- package/dist/commands/hook/paths.d.ts +19 -0
- package/dist/commands/hook/paths.js +94 -0
- package/dist/commands/hook/status.d.ts +7 -0
- package/dist/commands/hook/status.js +86 -0
- package/dist/commands/hook/uninstall.d.ts +8 -0
- package/dist/commands/hook/uninstall.js +71 -0
- package/dist/commands/hook-dispatch.d.ts +15 -0
- package/dist/commands/hook-dispatch.js +180 -0
- package/dist/commands/init.d.ts +24 -0
- package/dist/commands/init.js +133 -0
- package/dist/commands/kill.d.ts +12 -0
- package/dist/commands/kill.js +49 -0
- package/dist/commands/log.d.ts +13 -0
- package/dist/commands/log.js +97 -0
- package/dist/commands/parse-agent-message.d.ts +31 -0
- package/dist/commands/parse-agent-message.js +52 -0
- package/dist/commands/parse-common-flags.d.ts +36 -0
- package/dist/commands/parse-common-flags.js +105 -0
- package/dist/commands/ps.d.ts +12 -0
- package/dist/commands/ps.js +71 -0
- package/dist/commands/query.d.ts +21 -0
- package/dist/commands/query.js +117 -0
- package/dist/commands/result.d.ts +13 -0
- package/dist/commands/result.js +73 -0
- package/dist/commands/slack.d.ts +12 -0
- package/dist/commands/slack.js +559 -0
- package/dist/commands/task-db.d.ts +33 -0
- package/dist/commands/task-db.js +107 -0
- package/dist/examples/deny-secrets-plugin.d.ts +22 -0
- package/dist/examples/deny-secrets-plugin.js +40 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -0
- package/dist/logging.d.ts +21 -0
- package/dist/logging.js +86 -0
- package/dist/main.d.ts +10 -0
- package/dist/main.js +246 -256
- package/dist/plugins/examples/echo-hook.d.ts +24 -0
- package/dist/plugins/examples/echo-hook.js +60 -0
- package/dist/plugins/examples/verify-echo-hook.d.ts +8 -0
- package/dist/plugins/examples/verify-echo-hook.js +47 -0
- package/dist/plugins/sqlite-tracing.d.ts +13 -0
- package/dist/plugins/sqlite-tracing.js +20 -0
- package/dist/register-builtin-tools.d.ts +5 -0
- package/dist/register-builtin-tools.js +9 -0
- package/dist/slack/file-download.d.ts +17 -0
- package/dist/slack/file-download.js +134 -0
- package/dist/slack/markdown.d.ts +5 -0
- package/dist/slack/markdown.js +33 -0
- package/dist/utils/env-defaults.d.ts +5 -0
- package/dist/utils/env-defaults.js +10 -0
- package/dist/utils/version.d.ts +1 -0
- package/dist/utils/version.js +28 -0
- package/package.json +32 -115
- package/README.md +0 -663
- package/dist/ai-provider.service.d.ts +0 -36
- package/dist/ai-provider.service.js +0 -315
- package/dist/ai-provider.service.js.map +0 -1
- package/dist/ai.service.d.ts +0 -17
- package/dist/ai.service.js +0 -51
- package/dist/ai.service.js.map +0 -1
- package/dist/app.module.d.ts +0 -5
- package/dist/app.module.js +0 -165
- package/dist/app.module.js.map +0 -1
- package/dist/cli/agent.handler.d.ts +0 -2
- package/dist/cli/agent.handler.js +0 -186
- package/dist/cli/agent.handler.js.map +0 -1
- package/dist/cli/builtin.handler.d.ts +0 -3
- package/dist/cli/builtin.handler.js.map +0 -1
- package/dist/cli/chat.handler.d.ts +0 -20
- package/dist/cli/chat.handler.js +0 -446
- package/dist/cli/chat.handler.js.map +0 -1
- package/dist/cli/cli.handler.d.ts +0 -4
- package/dist/cli/cli.handler.js +0 -119
- package/dist/cli/cli.handler.js.map +0 -1
- package/dist/cli/doctor.handler.d.ts +0 -38
- package/dist/cli/doctor.handler.js +0 -495
- package/dist/cli/doctor.handler.js.map +0 -1
- package/dist/cli/execute.handler.d.ts +0 -2
- package/dist/cli/execute.handler.js +0 -376
- package/dist/cli/execute.handler.js.map +0 -1
- package/dist/cli/help.handler.d.ts +0 -2
- package/dist/cli/help.handler.js +0 -10
- package/dist/cli/help.handler.js.map +0 -1
- package/dist/cli/init.handler.d.ts +0 -26
- package/dist/cli/init.handler.js +0 -450
- package/dist/cli/init.handler.js.map +0 -1
- package/dist/cli/log.handler.d.ts +0 -2
- package/dist/cli/log.handler.js +0 -69
- package/dist/cli/log.handler.js.map +0 -1
- package/dist/cli/mcp.handler.d.ts +0 -3
- package/dist/cli/mcp.handler.js +0 -121
- package/dist/cli/mcp.handler.js.map +0 -1
- package/dist/cli/query.handler.d.ts +0 -2
- package/dist/cli/query.handler.js +0 -392
- package/dist/cli/query.handler.js.map +0 -1
- package/dist/cli/skill.handler.d.ts +0 -2
- package/dist/cli/skill.handler.js +0 -252
- package/dist/cli/skill.handler.js.map +0 -1
- package/dist/cli/slack-files.handler.d.ts +0 -2
- package/dist/cli/slack-files.handler.js +0 -291
- package/dist/cli/slack-files.handler.js.map +0 -1
- package/dist/cli/template.handler.d.ts +0 -2
- package/dist/cli/template.handler.js +0 -188
- package/dist/cli/template.handler.js.map +0 -1
- package/dist/cli/templates.handler.d.ts +0 -2
- package/dist/cli/templates.handler.js +0 -100
- package/dist/cli/templates.handler.js.map +0 -1
- package/dist/cli-options.d.ts +0 -40
- package/dist/cli-options.js +0 -371
- package/dist/cli-options.js.map +0 -1
- package/dist/config/timeout.config.d.ts +0 -14
- package/dist/config/timeout.config.js +0 -34
- package/dist/config/timeout.config.js.map +0 -1
- package/dist/conversation/base-conversation-history.provider.d.ts +0 -12
- package/dist/conversation/base-conversation-history.provider.js +0 -45
- package/dist/conversation/base-conversation-history.provider.js.map +0 -1
- package/dist/conversation/cli-box-reader.adapter.d.ts +0 -6
- package/dist/conversation/cli-box-reader.adapter.js +0 -10
- package/dist/conversation/cli-box-reader.adapter.js.map +0 -1
- package/dist/conversation/cli-conversation-history.provider.d.ts +0 -16
- package/dist/conversation/cli-conversation-history.provider.js +0 -112
- package/dist/conversation/cli-conversation-history.provider.js.map +0 -1
- package/dist/conversation/cli-task-reader.adapter.d.ts +0 -6
- package/dist/conversation/cli-task-reader.adapter.js +0 -25
- package/dist/conversation/cli-task-reader.adapter.js.map +0 -1
- package/dist/conversation/conversation-provider.factory.d.ts +0 -10
- package/dist/conversation/conversation-provider.factory.js +0 -50
- package/dist/conversation/conversation-provider.factory.js.map +0 -1
- package/dist/conversation/index.d.ts +0 -8
- package/dist/conversation/index.js +0 -29
- package/dist/conversation/index.js.map +0 -1
- package/dist/conversation/slack-conversation-history.provider.d.ts +0 -29
- package/dist/conversation/slack-conversation-history.provider.js +0 -302
- package/dist/conversation/slack-conversation-history.provider.js.map +0 -1
- package/dist/crewx.tool.d.ts +0 -360
- package/dist/crewx.tool.js +0 -2531
- package/dist/crewx.tool.js.map +0 -1
- package/dist/crewx.tool.spec.d.ts +0 -1
- package/dist/crewx.tool.spec.js +0 -222
- package/dist/crewx.tool.spec.js.map +0 -1
- package/dist/guards/bearer-auth.guard.d.ts +0 -7
- package/dist/guards/bearer-auth.guard.js +0 -44
- package/dist/guards/bearer-auth.guard.js.map +0 -1
- package/dist/health.controller.d.ts +0 -6
- package/dist/health.controller.js +0 -32
- package/dist/health.controller.js.map +0 -1
- package/dist/main.js.map +0 -1
- package/dist/mcp.controller.d.ts +0 -8
- package/dist/mcp.controller.js +0 -62
- package/dist/mcp.controller.js.map +0 -1
- package/dist/package.json +0 -3
- package/dist/providers/dynamic-provider.factory.d.ts +0 -17
- package/dist/providers/dynamic-provider.factory.js +0 -138
- package/dist/providers/dynamic-provider.factory.js.map +0 -1
- package/dist/providers/logger.adapter.d.ts +0 -7
- package/dist/providers/logger.adapter.js +0 -107
- package/dist/providers/logger.adapter.js.map +0 -1
- package/dist/services/agent-loader.service.d.ts +0 -35
- package/dist/services/agent-loader.service.js +0 -623
- package/dist/services/agent-loader.service.js.map +0 -1
- package/dist/services/auth.service.d.ts +0 -9
- package/dist/services/auth.service.js +0 -47
- package/dist/services/auth.service.js.map +0 -1
- package/dist/services/config-validator.service.d.ts +0 -29
- package/dist/services/config-validator.service.js +0 -483
- package/dist/services/config-validator.service.js.map +0 -1
- package/dist/services/config.service.d.ts +0 -45
- package/dist/services/config.service.js +0 -352
- package/dist/services/config.service.js.map +0 -1
- package/dist/services/document-loader.service.d.ts +0 -26
- package/dist/services/document-loader.service.js +0 -186
- package/dist/services/document-loader.service.js.map +0 -1
- package/dist/services/help.service.d.ts +0 -5
- package/dist/services/help.service.js +0 -139
- package/dist/services/help.service.js.map +0 -1
- package/dist/services/intelligent-compression.service.d.ts +0 -20
- package/dist/services/intelligent-compression.service.js +0 -179
- package/dist/services/intelligent-compression.service.js.map +0 -1
- package/dist/services/mcp-client.service.d.ts +0 -26
- package/dist/services/mcp-client.service.js +0 -81
- package/dist/services/mcp-client.service.js.map +0 -1
- package/dist/services/parallel-processing.service.d.ts +0 -108
- package/dist/services/parallel-processing.service.js +0 -333
- package/dist/services/parallel-processing.service.js.map +0 -1
- package/dist/services/provider-bridge.service.d.ts +0 -35
- package/dist/services/provider-bridge.service.js +0 -224
- package/dist/services/provider-bridge.service.js.map +0 -1
- package/dist/services/remote-agent.service.d.ts +0 -50
- package/dist/services/remote-agent.service.js +0 -171
- package/dist/services/remote-agent.service.js.map +0 -1
- package/dist/services/result-formatter.service.d.ts +0 -27
- package/dist/services/result-formatter.service.js +0 -126
- package/dist/services/result-formatter.service.js.map +0 -1
- package/dist/services/skill-loader.service.d.ts +0 -15
- package/dist/services/skill-loader.service.js +0 -278
- package/dist/services/skill-loader.service.js.map +0 -1
- package/dist/services/skill.service.d.ts +0 -69
- package/dist/services/skill.service.js +0 -779
- package/dist/services/skill.service.js.map +0 -1
- package/dist/services/skill.service.spec.d.ts +0 -1
- package/dist/services/skill.service.spec.js +0 -168
- package/dist/services/skill.service.spec.js.map +0 -1
- package/dist/services/task-management.service.d.ts +0 -71
- package/dist/services/task-management.service.js +0 -324
- package/dist/services/task-management.service.js.map +0 -1
- package/dist/services/template.service.d.ts +0 -61
- package/dist/services/template.service.js +0 -416
- package/dist/services/template.service.js.map +0 -1
- package/dist/services/tool-call.service.d.ts +0 -16
- package/dist/services/tool-call.service.js +0 -302
- package/dist/services/tool-call.service.js.map +0 -1
- package/dist/services/tracing.service.d.ts +0 -197
- package/dist/services/tracing.service.js +0 -1267
- package/dist/services/tracing.service.js.map +0 -1
- package/dist/slack/formatters/message.formatter.d.ts +0 -43
- package/dist/slack/formatters/message.formatter.js +0 -505
- package/dist/slack/formatters/message.formatter.js.map +0 -1
- package/dist/slack/services/slack-file-download.service.d.ts +0 -58
- package/dist/slack/services/slack-file-download.service.js +0 -558
- package/dist/slack/services/slack-file-download.service.js.map +0 -1
- package/dist/slack/slack-bot.d.ts +0 -33
- package/dist/slack/slack-bot.js +0 -568
- package/dist/slack/slack-bot.js.map +0 -1
- package/dist/stderr.logger.d.ts +0 -8
- package/dist/stderr.logger.js +0 -26
- package/dist/stderr.logger.js.map +0 -1
- package/dist/types/usage.types.d.ts +0 -107
- package/dist/types/usage.types.js +0 -3
- package/dist/types/usage.types.js.map +0 -1
- package/dist/utils/config-utils.d.ts +0 -15
- package/dist/utils/config-utils.js +0 -69
- package/dist/utils/config-utils.js.map +0 -1
- package/dist/utils/extract-text.d.ts +0 -1
- package/dist/utils/extract-text.js +0 -15
- package/dist/utils/extract-text.js.map +0 -1
- package/dist/utils/mcp-installer.d.ts +0 -20
- package/dist/utils/mcp-installer.js +0 -199
- package/dist/utils/mcp-installer.js.map +0 -1
- package/dist/utils/project-hash.d.ts +0 -6
- package/dist/utils/project-hash.js +0 -70
- package/dist/utils/project-hash.js.map +0 -1
- package/dist/utils/simple-security.d.ts +0 -3
- package/dist/utils/simple-security.js +0 -20
- package/dist/utils/simple-security.js.map +0 -1
- package/dist/utils/stdin-utils.d.ts +0 -6
- package/dist/utils/stdin-utils.js +0 -109
- package/dist/utils/stdin-utils.js.map +0 -1
- package/dist/utils/template-processor.d.ts +0 -27
- package/dist/utils/template-processor.js +0 -395
- package/dist/utils/template-processor.js.map +0 -1
- package/dist/utils/terminal-message-formatter.d.ts +0 -23
- package/dist/utils/terminal-message-formatter.js +0 -136
- package/dist/utils/terminal-message-formatter.js.map +0 -1
- package/dist/version.d.ts +0 -1
- package/dist/version.js +0 -17
- package/dist/version.js.map +0 -1
- package/dist/workspace.service.d.ts +0 -44
- package/dist/workspace.service.js +0 -299
- package/dist/workspace.service.js.map +0 -1
- package/scripts/backfill-tokens.js +0 -218
- package/scripts/postbuild-cli.mjs +0 -88
- package/scripts/postinstall-cli.mjs +0 -30
- package/templates/agents/default.yaml +0 -490
- package/templates/agents/minimal.yaml +0 -16
- package/templates/documents/conversation-history-default.hbs +0 -17
- package/templates/documents/crewx-manual.md +0 -2278
- package/templates/documents/crewx-quick-guide.md +0 -147
- package/templates/versions.json +0 -19
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Common flag parser for query/execute commands.
|
|
4
|
+
*
|
|
5
|
+
* Supports both `--flag=value` and `--flag value` forms.
|
|
6
|
+
* Handles: --thread, --provider, --metadata, --verbose, --config/-c,
|
|
7
|
+
* --output-format, --effort.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.parseCommonFlags = parseCommonFlags;
|
|
11
|
+
exports.parseMetadata = parseMetadata;
|
|
12
|
+
/**
|
|
13
|
+
* Parse a single-value flag from an args array.
|
|
14
|
+
* Supports `--flag=value` and `--flag value` forms.
|
|
15
|
+
* Returns undefined if flag is not present.
|
|
16
|
+
*/
|
|
17
|
+
function parseFlag(args, ...names) {
|
|
18
|
+
for (let i = 0; i < args.length; i++) {
|
|
19
|
+
const arg = args[i];
|
|
20
|
+
for (const name of names) {
|
|
21
|
+
const prefix = `${name}=`;
|
|
22
|
+
if (arg.startsWith(prefix)) {
|
|
23
|
+
return arg.slice(prefix.length);
|
|
24
|
+
}
|
|
25
|
+
if (arg === name && i + 1 < args.length) {
|
|
26
|
+
return args[i + 1];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if a boolean flag is present.
|
|
34
|
+
*/
|
|
35
|
+
function hasFlag(args, ...names) {
|
|
36
|
+
return names.some(name => args.includes(name));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Parse common CLI flags from an args array.
|
|
40
|
+
* Returns parsed flags and remaining positional arguments.
|
|
41
|
+
*/
|
|
42
|
+
function parseCommonFlags(args) {
|
|
43
|
+
const thread = parseFlag(args, '--thread');
|
|
44
|
+
const provider = parseFlag(args, '--provider');
|
|
45
|
+
const metadata = parseFlag(args, '--metadata');
|
|
46
|
+
const config = parseFlag(args, '--config', '-c');
|
|
47
|
+
const outputFormat = parseFlag(args, '--output-format');
|
|
48
|
+
const effort = parseFlag(args, '--effort');
|
|
49
|
+
const verbose = hasFlag(args, '--verbose');
|
|
50
|
+
// Collect the set of consumed positions
|
|
51
|
+
const consumed = new Set();
|
|
52
|
+
const flagPairs = [
|
|
53
|
+
{ names: ['--thread'] },
|
|
54
|
+
{ names: ['--provider'] },
|
|
55
|
+
{ names: ['--metadata'] },
|
|
56
|
+
{ names: ['--config', '-c'] },
|
|
57
|
+
{ names: ['--output-format'] },
|
|
58
|
+
{ names: ['--effort'] },
|
|
59
|
+
];
|
|
60
|
+
for (let i = 0; i < args.length; i++) {
|
|
61
|
+
const arg = args[i];
|
|
62
|
+
// Boolean flags
|
|
63
|
+
if (arg === '--verbose') {
|
|
64
|
+
consumed.add(i);
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// Value flags
|
|
68
|
+
for (const { names } of flagPairs) {
|
|
69
|
+
for (const name of names) {
|
|
70
|
+
if (arg.startsWith(`${name}=`)) {
|
|
71
|
+
consumed.add(i);
|
|
72
|
+
}
|
|
73
|
+
else if (arg === name) {
|
|
74
|
+
consumed.add(i);
|
|
75
|
+
if (i + 1 < args.length)
|
|
76
|
+
consumed.add(i + 1);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const rest = args.filter((_, i) => !consumed.has(i));
|
|
82
|
+
return { thread, provider, metadata, verbose, config, outputFormat, effort, rest };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Parse metadata JSON string from --metadata flag.
|
|
86
|
+
* Returns empty object when no raw value provided.
|
|
87
|
+
* Throws Error on invalid JSON or non-object values (fail-fast).
|
|
88
|
+
*/
|
|
89
|
+
function parseMetadata(raw) {
|
|
90
|
+
if (!raw)
|
|
91
|
+
return {};
|
|
92
|
+
try {
|
|
93
|
+
const parsed = JSON.parse(raw);
|
|
94
|
+
if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {
|
|
95
|
+
return parsed;
|
|
96
|
+
}
|
|
97
|
+
throw new Error(`--metadata must be a JSON object. Got: ${raw}`);
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
if (err instanceof Error && err.message.startsWith('--metadata must be a JSON object')) {
|
|
101
|
+
throw err;
|
|
102
|
+
}
|
|
103
|
+
throw new Error(`--metadata must be valid JSON (double-quoted). Got: ${raw}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* crewx ps handler.
|
|
3
|
+
* Lists currently running tasks in table format.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* crewx ps List all running tasks
|
|
7
|
+
* crewx ps --json Output as JSON array
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Handle `crewx ps` command.
|
|
11
|
+
*/
|
|
12
|
+
export declare function handlePs(args: string[]): Promise<void>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* crewx ps handler.
|
|
4
|
+
* Lists currently running tasks in table format.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* crewx ps List all running tasks
|
|
8
|
+
* crewx ps --json Output as JSON array
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.handlePs = handlePs;
|
|
12
|
+
const task_db_1 = require("./task-db");
|
|
13
|
+
/**
|
|
14
|
+
* Format elapsed milliseconds into a human-readable string.
|
|
15
|
+
*/
|
|
16
|
+
function formatElapsed(ms) {
|
|
17
|
+
const s = Math.floor(ms / 1000);
|
|
18
|
+
if (s < 60)
|
|
19
|
+
return `${s}s`;
|
|
20
|
+
const m = Math.floor(s / 60);
|
|
21
|
+
const rs = s % 60;
|
|
22
|
+
if (m < 60)
|
|
23
|
+
return `${m}m ${rs}s`;
|
|
24
|
+
const h = Math.floor(m / 60);
|
|
25
|
+
return `${h}h ${m % 60}m`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Format a task row into a table row.
|
|
29
|
+
*/
|
|
30
|
+
function taskToRow(task) {
|
|
31
|
+
const elapsed = formatElapsed(Date.now() - new Date(task.started_at).getTime());
|
|
32
|
+
return [
|
|
33
|
+
task.id,
|
|
34
|
+
task.agent_id,
|
|
35
|
+
task.pid !== null ? String(task.pid) : 'ā',
|
|
36
|
+
elapsed,
|
|
37
|
+
task.mode,
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Render a table with padded columns.
|
|
42
|
+
*/
|
|
43
|
+
function renderTable(headers, rows) {
|
|
44
|
+
const colWidths = headers.map((h, i) => Math.max(h.length, ...rows.map(r => (r[i] ?? '').length)));
|
|
45
|
+
const separator = colWidths.map(w => '-'.repeat(w)).join(' ');
|
|
46
|
+
const headerLine = headers.map((h, i) => h.padEnd(colWidths[i] ?? h.length)).join(' ');
|
|
47
|
+
console.log(headerLine);
|
|
48
|
+
console.log(separator);
|
|
49
|
+
for (const row of rows) {
|
|
50
|
+
console.log(row.map((cell, i) => cell.padEnd(colWidths[i] ?? cell.length)).join(' '));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Handle `crewx ps` command.
|
|
55
|
+
*/
|
|
56
|
+
async function handlePs(args) {
|
|
57
|
+
const tasks = (0, task_db_1.getRunningTasks)();
|
|
58
|
+
if (tasks.length === 0) {
|
|
59
|
+
console.log('No running tasks.');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// --json output
|
|
63
|
+
if (args.includes('--json')) {
|
|
64
|
+
console.log(JSON.stringify(tasks, null, 2));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const headers = ['TASK ID', 'AGENT', 'PID', 'ELAPSED', 'MODE'];
|
|
68
|
+
const rows = tasks.map(taskToRow);
|
|
69
|
+
renderTable(headers, rows);
|
|
70
|
+
console.log(`\n ${tasks.length} running task(s)`);
|
|
71
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* crewx query handler.
|
|
3
|
+
* Parses args, loads config via Crewx SDK, and executes the query.
|
|
4
|
+
*
|
|
5
|
+
* Flags:
|
|
6
|
+
* --thread <name> Conversation thread name
|
|
7
|
+
* --provider <cli/xxx> Provider override
|
|
8
|
+
* --metadata <json> Extra metadata JSON (double-quoted object). Propagated to events/hooks/tracing.
|
|
9
|
+
* e.g. --metadata='{"workflow_id":"wf-1"}'
|
|
10
|
+
* --verbose Debug output mode (default: raw agent response only)
|
|
11
|
+
* --config/-c <path> Config file path override
|
|
12
|
+
* --output-format <fmt> Output format (json|text|stream-json)
|
|
13
|
+
* --effort <level> Model effort (high|medium|low)
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Handle `crewx query <agentRef> <message>` command.
|
|
17
|
+
*
|
|
18
|
+
* Default output: raw agent response only (stdout).
|
|
19
|
+
* --verbose: debug info written to stderr, response to stdout.
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleQuery(args: string[]): Promise<void>;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* crewx query handler.
|
|
4
|
+
* Parses args, loads config via Crewx SDK, and executes the query.
|
|
5
|
+
*
|
|
6
|
+
* Flags:
|
|
7
|
+
* --thread <name> Conversation thread name
|
|
8
|
+
* --provider <cli/xxx> Provider override
|
|
9
|
+
* --metadata <json> Extra metadata JSON (double-quoted object). Propagated to events/hooks/tracing.
|
|
10
|
+
* e.g. --metadata='{"workflow_id":"wf-1"}'
|
|
11
|
+
* --verbose Debug output mode (default: raw agent response only)
|
|
12
|
+
* --config/-c <path> Config file path override
|
|
13
|
+
* --output-format <fmt> Output format (json|text|stream-json)
|
|
14
|
+
* --effort <level> Model effort (high|medium|low)
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.handleQuery = handleQuery;
|
|
18
|
+
const sdk_1 = require("@crewx/sdk");
|
|
19
|
+
const parse_agent_message_1 = require("./parse-agent-message");
|
|
20
|
+
const parse_common_flags_1 = require("./parse-common-flags");
|
|
21
|
+
const crewx_cli_1 = require("../bootstrap/crewx-cli");
|
|
22
|
+
/**
|
|
23
|
+
* Handle `crewx query <agentRef> <message>` command.
|
|
24
|
+
*
|
|
25
|
+
* Default output: raw agent response only (stdout).
|
|
26
|
+
* --verbose: debug info written to stderr, response to stdout.
|
|
27
|
+
*/
|
|
28
|
+
async function handleQuery(args) {
|
|
29
|
+
const { thread, provider, metadata, verbose, config, outputFormat, effort, rest } = (0, parse_common_flags_1.parseCommonFlags)(args);
|
|
30
|
+
const { agentRef: parsedAgentRef, message } = (0, parse_agent_message_1.parseAgentMessage)(rest);
|
|
31
|
+
// No @mention ā default to @crewx agent (matches cli-bak behaviour)
|
|
32
|
+
const agentRef = parsedAgentRef || '@crewx';
|
|
33
|
+
if (!message) {
|
|
34
|
+
console.error('Usage: crewx query [@agent] <message> [options]');
|
|
35
|
+
console.error(' crewx q [@agent] <message> [options]');
|
|
36
|
+
console.error('');
|
|
37
|
+
console.error(' @agent is optional. Defaults to @crewx when omitted.');
|
|
38
|
+
console.error('');
|
|
39
|
+
console.error('Options:');
|
|
40
|
+
console.error(' --thread <name> Conversation thread name');
|
|
41
|
+
console.error(' --provider <cli/xxx> Provider override');
|
|
42
|
+
console.error(' --metadata <json> Extra metadata (JSON object, double-quoted).');
|
|
43
|
+
console.error(' Propagated to events/hooks/tracing.');
|
|
44
|
+
console.error(' Invalid JSON aborts with exit code 2.');
|
|
45
|
+
console.error(' e.g. --metadata=\'{"workflow_id":"wf-1"}\'');
|
|
46
|
+
console.error(' --verbose Debug output mode');
|
|
47
|
+
console.error(' --config/-c <path> Config file path');
|
|
48
|
+
console.error(' --output-format <fmt> Output format (json|text|stream-json)');
|
|
49
|
+
console.error(' --effort <level> Model effort (high|medium|low)');
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
const configPath = config ?? process.env.CREWX_CONFIG ?? 'crewx.yaml';
|
|
53
|
+
// Only show exec audit span JSON in verbose mode
|
|
54
|
+
(0, sdk_1.setAuditVerbose)(verbose);
|
|
55
|
+
const crewx = await (0, crewx_cli_1.createCliCrewx)(configPath);
|
|
56
|
+
// file:// remote agent delegation is handled transparently inside Crewx.query/execute.
|
|
57
|
+
if (verbose) {
|
|
58
|
+
process.stderr.write(`š Task: ${message}\n`);
|
|
59
|
+
process.stderr.write(`š¤ Agent: ${agentRef}\n`);
|
|
60
|
+
if (thread)
|
|
61
|
+
process.stderr.write(`š Thread: ${thread}\n`);
|
|
62
|
+
if (provider)
|
|
63
|
+
process.stderr.write(`š Provider: ${provider}\n`);
|
|
64
|
+
if (outputFormat)
|
|
65
|
+
process.stderr.write(`š Output-format: ${outputFormat}\n`);
|
|
66
|
+
if (effort)
|
|
67
|
+
process.stderr.write(`ā” Effort: ${effort}\n`);
|
|
68
|
+
process.stderr.write('ā'.repeat(60) + '\n');
|
|
69
|
+
}
|
|
70
|
+
let parsedMetadata = {};
|
|
71
|
+
try {
|
|
72
|
+
parsedMetadata = (0, parse_common_flags_1.parseMetadata)(metadata);
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
76
|
+
process.stderr.write(`Error: ${msg}\n`);
|
|
77
|
+
process.exit(2);
|
|
78
|
+
}
|
|
79
|
+
let exitCode = 0;
|
|
80
|
+
try {
|
|
81
|
+
const result = await crewx.query(agentRef, message, {
|
|
82
|
+
provider,
|
|
83
|
+
threadId: thread,
|
|
84
|
+
metadata: Object.keys(parsedMetadata).length > 0 ? parsedMetadata : undefined,
|
|
85
|
+
});
|
|
86
|
+
if (!result.ok) {
|
|
87
|
+
const errMsg = result.error?.message ?? 'Query failed';
|
|
88
|
+
console.error(errMsg);
|
|
89
|
+
exitCode = 1;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (verbose) {
|
|
93
|
+
process.stderr.write(`\nš Results from ${agentRef}:\n`);
|
|
94
|
+
process.stderr.write('ā'.repeat(60) + '\n');
|
|
95
|
+
process.stderr.write('š¢ Status: Success\n');
|
|
96
|
+
process.stderr.write(`š¤ Provider: ${result.meta.provider}\n`);
|
|
97
|
+
process.stderr.write(`ā±ļø Duration: ${result.meta.durationMs}ms\n`);
|
|
98
|
+
process.stderr.write('\nš Response:\n');
|
|
99
|
+
process.stderr.write('ā'.repeat(40) + '\n');
|
|
100
|
+
}
|
|
101
|
+
console.log(result.data);
|
|
102
|
+
if (verbose) {
|
|
103
|
+
process.stderr.write('\nā
Query completed successfully\n');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
109
|
+
console.error(`Error: ${errMsg}`);
|
|
110
|
+
exitCode = 1;
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
await crewx.close();
|
|
114
|
+
}
|
|
115
|
+
if (exitCode !== 0)
|
|
116
|
+
process.exit(exitCode);
|
|
117
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* crewx result handler.
|
|
3
|
+
* Retrieves the result of a completed task by its ID.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* crewx result <task-id> Print raw result
|
|
7
|
+
* crewx result <task-id> --json Print full task record as JSON
|
|
8
|
+
* crewx result List recent tasks (latest 10)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Handle `crewx result` command.
|
|
12
|
+
*/
|
|
13
|
+
export declare function handleResult(args: string[]): Promise<void>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* crewx result handler.
|
|
4
|
+
* Retrieves the result of a completed task by its ID.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* crewx result <task-id> Print raw result
|
|
8
|
+
* crewx result <task-id> --json Print full task record as JSON
|
|
9
|
+
* crewx result List recent tasks (latest 10)
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.handleResult = handleResult;
|
|
13
|
+
const task_db_1 = require("./task-db");
|
|
14
|
+
function statusIcon(status) {
|
|
15
|
+
switch (status) {
|
|
16
|
+
case 'running': return 'ā³';
|
|
17
|
+
case 'success': return 'ā
';
|
|
18
|
+
case 'failed': return 'ā';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Handle `crewx result` command.
|
|
23
|
+
*/
|
|
24
|
+
async function handleResult(args) {
|
|
25
|
+
const jsonMode = args.includes('--json');
|
|
26
|
+
const taskId = args.find(a => !a.startsWith('--'));
|
|
27
|
+
if (!taskId) {
|
|
28
|
+
// Show recent tasks
|
|
29
|
+
const all = (0, task_db_1.getAllTasks)();
|
|
30
|
+
const recent = all.slice(0, 10);
|
|
31
|
+
if (recent.length === 0) {
|
|
32
|
+
console.log('No tasks found.');
|
|
33
|
+
console.log('Tip: Run `crewx query` or `crewx execute` to start a task.');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.log('Recent Tasks (latest 10)\n');
|
|
37
|
+
recent.forEach((task, idx) => {
|
|
38
|
+
const icon = statusIcon(task.status);
|
|
39
|
+
console.log(`${idx + 1}. ${icon} ${task.id}`);
|
|
40
|
+
console.log(` Agent: ${task.agent_id} Mode: ${task.mode}`);
|
|
41
|
+
console.log(` Started: ${new Date(task.started_at).toLocaleString()}`);
|
|
42
|
+
if (task.completed_at) {
|
|
43
|
+
console.log(` Completed: ${new Date(task.completed_at).toLocaleString()}`);
|
|
44
|
+
}
|
|
45
|
+
console.log('');
|
|
46
|
+
});
|
|
47
|
+
console.log('Tip: Run `crewx result <task-id>` to see full output.');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const task = (0, task_db_1.getTask)(taskId);
|
|
51
|
+
if (!task) {
|
|
52
|
+
console.error(`Error: Task not found: ${taskId}`);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (jsonMode) {
|
|
57
|
+
console.log(JSON.stringify(task, null, 2));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (task.status === 'running') {
|
|
61
|
+
console.error(`Task ${taskId} is still running.`);
|
|
62
|
+
console.error(`Use \`crewx kill ${taskId}\` to stop it.`);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (task.status === 'failed') {
|
|
67
|
+
console.error(`Task ${taskId} failed: ${task.error ?? 'unknown error'}`);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Completed (success) ā print raw result
|
|
72
|
+
console.log(task.result ?? '');
|
|
73
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack files command ā crewx slack:files [--thread <thread_ts>] [--list] [--clean]
|
|
3
|
+
*
|
|
4
|
+
* Ported 1:1 from packages/cli-bak/src/cli/slack-files.handler.ts.
|
|
5
|
+
* Implements download/list/clean operations without NestJS or @slack/web-api.
|
|
6
|
+
* Uses Node.js built-in https and fetch for Slack API calls.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Handle `crewx slack` / `crewx slack:files` commands.
|
|
10
|
+
* Subcommand is determined by flags: --list ā list, --clean ā clean, default ā download.
|
|
11
|
+
*/
|
|
12
|
+
export declare function handleSlack(args: string[]): Promise<void>;
|