@claude-flow/cli 3.7.0-alpha.81 → 3.7.0-alpha.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/.claude/agents/core/coder.md +453 -0
- package/.claude/agents/core/researcher.md +369 -0
- package/.claude/agents/core/reviewer.md +520 -0
- package/.claude/agents/core/tester.md +512 -0
- package/.claude/agents/github/release-manager.md +2 -2
- package/.claude/agents/github/release-swarm.md +1 -1
- package/.claude/agents/github/repo-architect.md +2 -2
- package/.claude/agents/github/swarm-pr.md +1 -1
- package/.claude/agents/github/workflow-automation.md +2 -2
- package/.claude/agents/goal/goal-planner.md +73 -0
- package/.claude/agents/v3/adr-architect.md +184 -0
- package/.claude/agents/v3/memory-specialist.md +995 -0
- package/.claude/agents/v3/security-auditor.md +771 -0
- package/.claude/agents/v3/sparc-orchestrator.md +182 -0
- package/.claude/commands/flow-nexus/app-store.md +124 -0
- package/.claude/commands/flow-nexus/challenges.md +120 -0
- package/.claude/commands/flow-nexus/login-registration.md +65 -0
- package/.claude/commands/flow-nexus/neural-network.md +134 -0
- package/.claude/commands/flow-nexus/payments.md +116 -0
- package/.claude/commands/flow-nexus/sandbox.md +83 -0
- package/.claude/commands/flow-nexus/swarm.md +87 -0
- package/.claude/commands/flow-nexus/user-tools.md +152 -0
- package/.claude/commands/flow-nexus/workflow.md +115 -0
- package/.claude/commands/github/code-review-swarm.md +1 -1
- package/.claude/commands/github/issue-tracker.md +3 -3
- package/.claude/commands/github/release-manager.md +3 -5
- package/.claude/commands/github/release-swarm.md +1 -1
- package/.claude/commands/github/repo-architect.md +2 -2
- package/.claude/commands/github/swarm-issue.md +1 -4
- package/.claude/commands/github/swarm-pr.md +3 -6
- package/.claude/commands/github/sync-coordinator.md +1 -3
- package/.claude/commands/github/workflow-automation.md +2 -2
- package/.claude/helpers/github-safe.js +60 -95
- package/.claude/helpers/github-setup.sh +9 -26
- package/.claude/helpers/hook-handler.cjs +4 -12
- package/.claude/helpers/statusline.cjs +2 -31
- package/.claude/settings.json +1 -1
- package/README.md +38 -55
- package/dist/src/commands/daemon.d.ts +0 -20
- package/dist/src/commands/daemon.d.ts.map +1 -1
- package/dist/src/commands/daemon.js +5 -82
- package/dist/src/commands/daemon.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +6 -17
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/embeddings.d.ts.map +1 -1
- package/dist/src/commands/embeddings.js +9 -18
- package/dist/src/commands/embeddings.js.map +1 -1
- package/dist/src/commands/index.d.ts +26 -26
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +1 -21
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +5 -43
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/start.js +1 -1
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/swarm.js +1 -1
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +0 -1
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +0 -41
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts +0 -1
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +2 -19
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +15 -74
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +31 -75
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +0 -23
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +5 -18
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +0 -12
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +5 -38
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-execute-core.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-execute-core.js +74 -141
- package/dist/src/mcp-tools/agent-execute-core.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +4 -112
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/browser-session-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/browser-session-tools.js +2 -13
- package/dist/src/mcp-tools/browser-session-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +0 -44
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts +0 -2
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +6 -100
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +7 -332
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.js +1 -17
- package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -1
- package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/session-tools.js +1 -125
- package/dist/src/mcp-tools/session-tools.js.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts +0 -28
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +2 -4
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +0 -48
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +0 -48
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +0 -108
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +0 -4
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +8 -49
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +0 -4
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +6 -24
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/plugins/store/discovery.d.ts +4 -15
- package/dist/src/plugins/store/discovery.d.ts.map +1 -1
- package/dist/src/plugins/store/discovery.js +18 -40
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/prompt.d.ts +3 -3
- package/dist/src/prompt.d.ts.map +1 -1
- package/dist/src/ruvector/coverage-tools.js +6 -6
- package/dist/src/ruvector/coverage-tools.js.map +1 -1
- package/dist/src/ruvector/vector-db.d.ts.map +1 -1
- package/dist/src/ruvector/vector-db.js +12 -3
- package/dist/src/ruvector/vector-db.js.map +1 -1
- package/dist/src/services/headless-worker-executor.d.ts +1 -14
- package/dist/src/services/headless-worker-executor.d.ts.map +1 -1
- package/dist/src/services/headless-worker-executor.js +10 -54
- package/dist/src/services/headless-worker-executor.js.map +1 -1
- package/dist/src/services/worker-daemon.d.ts +0 -12
- package/dist/src/services/worker-daemon.d.ts.map +1 -1
- package/dist/src/services/worker-daemon.js +14 -68
- package/dist/src/services/worker-daemon.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -10
- package/.claude/skills/agentdb-advanced/SKILL.md +0 -550
- package/.claude/skills/agentdb-learning/SKILL.md +0 -545
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +0 -339
- package/.claude/skills/agentdb-optimization/SKILL.md +0 -509
- package/.claude/skills/agentdb-vector-search/SKILL.md +0 -339
- package/.claude/skills/browser/SKILL.md +0 -204
- package/.claude/skills/dual-mode/README.md +0 -71
- package/.claude/skills/dual-mode/dual-collect.md +0 -103
- package/.claude/skills/dual-mode/dual-coordinate.md +0 -85
- package/.claude/skills/dual-mode/dual-spawn.md +0 -81
- package/.claude/skills/flow-nexus-neural/SKILL.md +0 -727
- package/.claude/skills/flow-nexus-platform/SKILL.md +0 -1154
- package/.claude/skills/flow-nexus-swarm/SKILL.md +0 -604
- package/.claude/skills/github-code-review/SKILL.md +0 -1125
- package/.claude/skills/github-multi-repo/SKILL.md +0 -862
- package/.claude/skills/github-project-management/SKILL.md +0 -1262
- package/.claude/skills/github-release-management/SKILL.md +0 -1064
- package/.claude/skills/github-workflow-automation/SKILL.md +0 -1047
- package/.claude/skills/hooks-automation/SKILL.md +0 -1201
- package/.claude/skills/pair-programming/SKILL.md +0 -1202
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +0 -446
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +0 -201
- package/.claude/skills/skill-builder/SKILL.md +0 -910
- package/.claude/skills/sparc-methodology/SKILL.md +0 -1106
- package/.claude/skills/stream-chain/SKILL.md +0 -560
- package/.claude/skills/swarm-advanced/SKILL.md +0 -970
- package/.claude/skills/swarm-orchestration/SKILL.md +0 -179
- package/.claude/skills/v3-cli-modernization/SKILL.md +0 -872
- package/.claude/skills/v3-core-implementation/SKILL.md +0 -797
- package/.claude/skills/v3-ddd-architecture/SKILL.md +0 -442
- package/.claude/skills/v3-integration-deep/SKILL.md +0 -241
- package/.claude/skills/v3-mcp-optimization/SKILL.md +0 -777
- package/.claude/skills/v3-memory-unification/SKILL.md +0 -174
- package/.claude/skills/v3-performance-optimization/SKILL.md +0 -390
- package/.claude/skills/v3-security-overhaul/SKILL.md +0 -82
- package/.claude/skills/v3-swarm-coordination/SKILL.md +0 -340
- package/.claude/skills/verification-quality/SKILL.md +0 -691
- package/dist/src/__probe.d.ts +0 -2
- package/dist/src/__probe.d.ts.map +0 -1
- package/dist/src/__probe.js +0 -5
- package/dist/src/__probe.js.map +0 -1
- package/dist/src/commands/benchmark-cosign.d.ts +0 -29
- package/dist/src/commands/benchmark-cosign.d.ts.map +0 -1
- package/dist/src/commands/benchmark-cosign.js +0 -222
- package/dist/src/commands/benchmark-cosign.js.map +0 -1
- package/dist/src/commands/benchmark-verify.d.ts +0 -21
- package/dist/src/commands/benchmark-verify.d.ts.map +0 -1
- package/dist/src/commands/benchmark-verify.js +0 -202
- package/dist/src/commands/benchmark-verify.js.map +0 -1
- package/dist/src/mcp-tools/hive-consensus-runtime.d.ts +0 -149
- package/dist/src/mcp-tools/hive-consensus-runtime.d.ts.map +0 -1
- package/dist/src/mcp-tools/hive-consensus-runtime.js +0 -296
- package/dist/src/mcp-tools/hive-consensus-runtime.js.map +0 -1
- package/dist/src/mcp-tools/managed-agent-tools.d.ts +0 -22
- package/dist/src/mcp-tools/managed-agent-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/managed-agent-tools.js +0 -357
- package/dist/src/mcp-tools/managed-agent-tools.js.map +0 -1
- package/dist/src/memory/ann-router-registry.d.ts +0 -61
- package/dist/src/memory/ann-router-registry.d.ts.map +0 -1
- package/dist/src/memory/ann-router-registry.js +0 -72
- package/dist/src/memory/ann-router-registry.js.map +0 -1
- package/dist/src/memory/diskann-registry.d.ts +0 -56
- package/dist/src/memory/diskann-registry.d.ts.map +0 -1
- package/dist/src/memory/diskann-registry.js +0 -88
- package/dist/src/memory/diskann-registry.js.map +0 -1
|
@@ -15,7 +15,7 @@ jobs:
|
|
|
15
15
|
swarm-analysis:
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v3
|
|
19
19
|
|
|
20
20
|
- name: Initialize Swarm
|
|
21
21
|
uses: ruvnet/swarm-action@v1
|
|
@@ -63,7 +63,7 @@ jobs:
|
|
|
63
63
|
detect-and-build:
|
|
64
64
|
runs-on: ubuntu-latest
|
|
65
65
|
steps:
|
|
66
|
-
- uses: actions/checkout@
|
|
66
|
+
- uses: actions/checkout@v3
|
|
67
67
|
|
|
68
68
|
- name: Detect Languages
|
|
69
69
|
id: detect
|
|
@@ -1,43 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
|
|
2
3
|
/**
|
|
3
|
-
* Safe GitHub CLI Helper
|
|
4
|
-
*
|
|
5
|
-
* Prevents injection issues when using `gh` commands with untrusted content
|
|
6
|
-
* (PR bodies, issue bodies, comment bodies) by routing the body through a
|
|
7
|
-
* temp file and using `--body-file` rather than interpolating into shell args.
|
|
4
|
+
* Safe GitHub CLI Helper
|
|
8
5
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
6
|
+
* Prevents two classes of issue when calling `gh`:
|
|
7
|
+
* 1. Timeout / shell-quoting bugs when issue/PR bodies contain backticks,
|
|
8
|
+
* `$(...)`, or other special characters — bodies go through a temp file
|
|
9
|
+
* via `--body-file` instead of being inlined in the command line.
|
|
10
|
+
* 2. Command injection (audit_1776853149979 finding) — args were
|
|
11
|
+
* previously concatenated into a shell string and passed to
|
|
12
|
+
* `execSync`, so a caller passing `; rm -rf …` would have it
|
|
13
|
+
* executed by /bin/sh. Now uses `execFileSync('gh', argArray)`
|
|
14
|
+
* which goes through execve directly with no shell interpretation.
|
|
16
15
|
*
|
|
17
16
|
* Usage:
|
|
18
|
-
* ./github-safe.js issue comment 123 "Message with
|
|
17
|
+
* ./github-safe.js issue comment 123 "Message with `backticks`"
|
|
19
18
|
* ./github-safe.js pr create --title "Title" --body "Complex body"
|
|
20
19
|
*/
|
|
21
20
|
|
|
22
|
-
import {
|
|
21
|
+
import { execFileSync } from 'child_process';
|
|
23
22
|
import { writeFileSync, unlinkSync } from 'fs';
|
|
24
23
|
import { tmpdir } from 'os';
|
|
25
24
|
import { join } from 'path';
|
|
26
25
|
import { randomBytes } from 'crypto';
|
|
27
26
|
|
|
28
|
-
// Version constant — asserted by smoke-github-safe-injection.mjs.
|
|
29
|
-
export const GITHUB_SAFE_VERSION = '1.0.0';
|
|
30
|
-
|
|
31
|
-
// Maximum body size allowed (bytes). The GitHub API enforces 65536 chars for
|
|
32
|
-
// issue/PR bodies; the CLI is more lenient but the 256KB limit is a
|
|
33
|
-
// conservative safety cap that prevents accidental oversized writes.
|
|
34
|
-
const MAX_BODY_BYTES = 256 * 1024;
|
|
35
|
-
|
|
36
27
|
const args = process.argv.slice(2);
|
|
37
28
|
|
|
38
29
|
if (args.length < 2) {
|
|
39
30
|
console.log(`
|
|
40
|
-
Safe GitHub CLI Helper
|
|
31
|
+
Safe GitHub CLI Helper
|
|
41
32
|
|
|
42
33
|
Usage:
|
|
43
34
|
./github-safe.js issue comment <number> <body>
|
|
@@ -45,18 +36,44 @@ Usage:
|
|
|
45
36
|
./github-safe.js issue create --title <title> --body <body>
|
|
46
37
|
./github-safe.js pr create --title <title> --body <body>
|
|
47
38
|
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
- Semicolons and other shell metacharacters
|
|
52
|
-
- Oversized bodies (> 256 KB rejected)
|
|
39
|
+
Bodies with backticks, command substitution, and other special shell
|
|
40
|
+
characters are routed through a tempfile via --body-file. All gh args
|
|
41
|
+
are passed via execFileSync (no shell interpretation).
|
|
53
42
|
`);
|
|
54
43
|
process.exit(1);
|
|
55
44
|
}
|
|
56
45
|
|
|
46
|
+
// Whitelist of gh top-level commands we forward. Restricting this is
|
|
47
|
+
// defense-in-depth even though execFileSync would already block shell
|
|
48
|
+
// metacharacters in args.
|
|
49
|
+
const ALLOWED_COMMANDS = new Set(['issue', 'pr', 'repo', 'api', 'workflow', 'run', 'release', 'auth', 'gist']);
|
|
50
|
+
|
|
57
51
|
const [command, subcommand, ...restArgs] = args;
|
|
58
52
|
|
|
59
|
-
|
|
53
|
+
if (!ALLOWED_COMMANDS.has(command)) {
|
|
54
|
+
console.error(`Refusing to forward unknown gh command: ${command}`);
|
|
55
|
+
console.error(`Allowed: ${Array.from(ALLOWED_COMMANDS).join(', ')}`);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Build the final argv that gets passed to execFileSync.
|
|
60
|
+
// IMPORTANT: never join into a shell string. Each element is one argv slot.
|
|
61
|
+
function runGh(argv) {
|
|
62
|
+
try {
|
|
63
|
+
execFileSync('gh', argv, {
|
|
64
|
+
stdio: 'inherit',
|
|
65
|
+
timeout: 30000,
|
|
66
|
+
// shell:false is the default — kept explicit so a future refactor
|
|
67
|
+
// doesn't accidentally turn it on.
|
|
68
|
+
shell: false,
|
|
69
|
+
});
|
|
70
|
+
} catch (error) {
|
|
71
|
+
console.error('Error:', error?.message ?? String(error));
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Handle commands that take body content
|
|
60
77
|
if ((command === 'issue' || command === 'pr') &&
|
|
61
78
|
(subcommand === 'comment' || subcommand === 'create')) {
|
|
62
79
|
|
|
@@ -64,11 +81,10 @@ if ((command === 'issue' || command === 'pr') &&
|
|
|
64
81
|
let body = '';
|
|
65
82
|
|
|
66
83
|
if (subcommand === 'comment' && restArgs.length >= 2) {
|
|
67
|
-
//
|
|
84
|
+
// Positional: github-safe.js issue comment 123 "body"
|
|
68
85
|
body = restArgs[1];
|
|
69
86
|
bodyIndex = 1;
|
|
70
87
|
} else {
|
|
71
|
-
// Flag format: --body "content"
|
|
72
88
|
bodyIndex = restArgs.indexOf('--body');
|
|
73
89
|
if (bodyIndex !== -1 && bodyIndex < restArgs.length - 1) {
|
|
74
90
|
body = restArgs[bodyIndex + 1];
|
|
@@ -76,81 +92,30 @@ if ((command === 'issue' || command === 'pr') &&
|
|
|
76
92
|
}
|
|
77
93
|
|
|
78
94
|
if (body) {
|
|
79
|
-
// Enforce 256KB cap before any file I/O.
|
|
80
|
-
const bodyBytes = Buffer.byteLength(body, 'utf8');
|
|
81
|
-
if (bodyBytes > MAX_BODY_BYTES) {
|
|
82
|
-
console.error(
|
|
83
|
-
`[ERROR] Body exceeds maximum allowed size (${bodyBytes} bytes > ${MAX_BODY_BYTES} bytes). ` +
|
|
84
|
-
'GitHub API body fields are capped at 256KB. Truncate the body before passing it to github-safe.js.'
|
|
85
|
-
);
|
|
86
|
-
process.exit(1);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Use temporary file for body content — never interpolate into argv.
|
|
90
95
|
const tmpFile = join(tmpdir(), `gh-body-${randomBytes(8).toString('hex')}.tmp`);
|
|
91
|
-
|
|
92
96
|
try {
|
|
93
97
|
writeFileSync(tmpFile, body, 'utf8');
|
|
94
98
|
|
|
95
|
-
// Build
|
|
96
|
-
const
|
|
99
|
+
// Build the gh argv with --body-file instead of --body / inline body
|
|
100
|
+
const finalArgs = [command, subcommand, ...restArgs];
|
|
101
|
+
const offset = 2; // command + subcommand
|
|
97
102
|
if (subcommand === 'comment' && bodyIndex === 1) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
newArgs.push(tmpFile);
|
|
103
|
+
finalArgs[offset + 1] = '--body-file';
|
|
104
|
+
finalArgs.push(tmpFile);
|
|
101
105
|
} else if (bodyIndex !== -1) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
newArgs[bodyIndex + 1] = tmpFile;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Skip actual gh exec in dry-run mode (used by smoke tests).
|
|
108
|
-
if (process.env.GITHUB_SAFE_DRY_RUN === '1') {
|
|
109
|
-
const ghArgs = [command, subcommand, ...newArgs];
|
|
110
|
-
console.log(`[DRY-RUN] gh ${ghArgs.join(' ')}`);
|
|
111
|
-
process.exit(0);
|
|
106
|
+
finalArgs[offset + bodyIndex] = '--body-file';
|
|
107
|
+
finalArgs[offset + bodyIndex + 1] = tmpFile;
|
|
112
108
|
}
|
|
113
109
|
|
|
114
|
-
|
|
115
|
-
console.log(`Executing: gh ${ghArgv.join(' ')}`);
|
|
116
|
-
|
|
117
|
-
// Use execFileSync to avoid shell interpolation — args are passed as an
|
|
118
|
-
// array so shell metacharacters in tmpFile path cannot be exploited.
|
|
119
|
-
execFileSync('gh', ghArgv, {
|
|
120
|
-
stdio: 'inherit',
|
|
121
|
-
timeout: 30000,
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
} catch (error) {
|
|
125
|
-
console.error('[ERROR]', error.message);
|
|
126
|
-
process.exit(1);
|
|
110
|
+
runGh(finalArgs);
|
|
127
111
|
} finally {
|
|
128
|
-
|
|
129
|
-
try { unlinkSync(tmpFile); } catch (_) { /* ignore cleanup errors */ }
|
|
112
|
+
try { unlinkSync(tmpFile); } catch { /* ignore cleanup errors */ }
|
|
130
113
|
}
|
|
131
114
|
} else {
|
|
132
|
-
// No body
|
|
133
|
-
|
|
134
|
-
console.log(`[DRY-RUN] gh ${args.join(' ')}`);
|
|
135
|
-
process.exit(0);
|
|
136
|
-
}
|
|
137
|
-
try {
|
|
138
|
-
execFileSync('gh', args, { stdio: 'inherit' });
|
|
139
|
-
} catch (error) {
|
|
140
|
-
console.error('[ERROR]', error.message);
|
|
141
|
-
process.exit(1);
|
|
142
|
-
}
|
|
115
|
+
// No body — forward all args as-is (still via execFileSync)
|
|
116
|
+
runGh(args);
|
|
143
117
|
}
|
|
144
118
|
} else {
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
console.log(`[DRY-RUN] gh ${args.join(' ')}`);
|
|
148
|
-
process.exit(0);
|
|
149
|
-
}
|
|
150
|
-
try {
|
|
151
|
-
execFileSync('gh', args, { stdio: 'inherit' });
|
|
152
|
-
} catch (error) {
|
|
153
|
-
console.error('[ERROR]', error.message);
|
|
154
|
-
process.exit(1);
|
|
155
|
-
}
|
|
119
|
+
// Other gh subcommands — forward as-is
|
|
120
|
+
runGh(args);
|
|
156
121
|
}
|
|
@@ -1,44 +1,27 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# Security rationale: set -euo pipefail ensures that:
|
|
3
|
-
# -e — exit immediately if any command fails (no silent failures)
|
|
4
|
-
# -u — treat unset variables as errors (prevents empty-string expansion bugs)
|
|
5
|
-
# -o pipefail — pipeline fails if any command in it fails (not just last)
|
|
6
|
-
# This matches the ADR-127 Phase 2 requirement for github-setup.sh hardening.
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
|
|
9
2
|
# Setup GitHub integration for Claude Flow
|
|
10
3
|
|
|
11
|
-
echo "Setting up GitHub integration..."
|
|
4
|
+
echo "🔗 Setting up GitHub integration..."
|
|
12
5
|
|
|
13
6
|
# Check for gh CLI
|
|
14
7
|
if ! command -v gh &> /dev/null; then
|
|
15
|
-
echo "
|
|
8
|
+
echo "⚠️ GitHub CLI (gh) not found"
|
|
16
9
|
echo "Install from: https://cli.github.com/"
|
|
17
10
|
echo "Continuing without GitHub features..."
|
|
18
11
|
else
|
|
19
|
-
echo "
|
|
20
|
-
|
|
21
|
-
# Check auth status
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
# 'repo' scope, which is required for PR/issue operations.
|
|
25
|
-
if gh auth status 2>&1 | grep -q "Logged in"; then
|
|
26
|
-
echo "OK: GitHub authentication active"
|
|
27
|
-
# Verify repo scope is present for PR/issue operations.
|
|
28
|
-
if gh auth status 2>&1 | grep -q "repo"; then
|
|
29
|
-
echo "OK: 'repo' scope available"
|
|
30
|
-
else
|
|
31
|
-
echo "WARNING: 'repo' scope not confirmed — PR/issue operations may fail"
|
|
32
|
-
echo "Run: gh auth login --scopes repo,read:org"
|
|
33
|
-
fi
|
|
12
|
+
echo "✅ GitHub CLI found"
|
|
13
|
+
|
|
14
|
+
# Check auth status
|
|
15
|
+
if gh auth status &> /dev/null; then
|
|
16
|
+
echo "✅ GitHub authentication active"
|
|
34
17
|
else
|
|
35
|
-
echo "
|
|
18
|
+
echo "⚠️ Not authenticated with GitHub"
|
|
36
19
|
echo "Run: gh auth login"
|
|
37
20
|
fi
|
|
38
21
|
fi
|
|
39
22
|
|
|
40
23
|
echo ""
|
|
41
|
-
echo "GitHub swarm commands available:"
|
|
24
|
+
echo "📦 GitHub swarm commands available:"
|
|
42
25
|
echo " - npx claude-flow github swarm"
|
|
43
26
|
echo " - npx claude-flow repo analyze"
|
|
44
27
|
echo " - npx claude-flow pr enhance"
|
|
@@ -112,12 +112,8 @@ async function main() {
|
|
|
112
112
|
const toolInput = hookInput.toolInput || hookInput.tool_input || {};
|
|
113
113
|
const toolName = hookInput.toolName || hookInput.tool_name || '';
|
|
114
114
|
|
|
115
|
-
// Merge stdin data into prompt resolution: prefer stdin fields, then env, then argv
|
|
116
|
-
|
|
117
|
-
// so falling back to it directly bound `prompt` to the object and tripped
|
|
118
|
-
// `.toLowerCase()` / `.substring()` on every Bash hook (#1944). Use the
|
|
119
|
-
// `.command` field instead, which is the actual string the hook needs.
|
|
120
|
-
const prompt = hookInput.prompt || hookInput.command || toolInput.command
|
|
115
|
+
// Merge stdin data into prompt resolution: prefer stdin fields, then env, then argv
|
|
116
|
+
const prompt = hookInput.prompt || hookInput.command || toolInput
|
|
121
117
|
|| process.env.PROMPT || process.env.TOOL_INPUT_command || args.join(' ') || '';
|
|
122
118
|
|
|
123
119
|
const handlers = {
|
|
@@ -148,12 +144,8 @@ const handlers = {
|
|
|
148
144
|
},
|
|
149
145
|
|
|
150
146
|
'pre-bash': () => {
|
|
151
|
-
// Basic command safety check — prefer stdin command data from Claude Code
|
|
152
|
-
|
|
153
|
-
// re-binds `prompt` or `hookInput.command` to a non-string, `.toLowerCase()`
|
|
154
|
-
// can no longer throw a TypeError that the global try/catch would swallow
|
|
155
|
-
// (silently exiting 0 and letting the dangerous command through).
|
|
156
|
-
const cmd = String(hookInput.command || toolInput.command || prompt || '').toLowerCase();
|
|
147
|
+
// Basic command safety check — prefer stdin command data from Claude Code
|
|
148
|
+
const cmd = (hookInput.command || prompt).toLowerCase();
|
|
157
149
|
const dangerous = ['rm -rf /', 'format c:', 'del /s /q c:\\', ':(){:|:&};:'];
|
|
158
150
|
for (const d of dangerous) {
|
|
159
151
|
if (cmd.includes(d)) {
|
|
@@ -25,37 +25,8 @@
|
|
|
25
25
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
26
26
|
const fs = require('fs');
|
|
27
27
|
const path = require('path');
|
|
28
|
-
const os = require('os');
|
|
29
28
|
const { execSync, execFileSync } = require('child_process');
|
|
30
29
|
|
|
31
|
-
// Read the installed plugin version once at startup. Probe the plugin's own
|
|
32
|
-
// install location first (`~/.claude/plugins/marketplaces/ruflo/package.json`),
|
|
33
|
-
// then npm-style installs, then the source-checkout location. The previous
|
|
34
|
-
// code hardcoded `RuFlo V3.5` in the header — so users on alpha.27+ still
|
|
35
|
-
// saw V3.5 in the statusline even though `ruflo doctor` reported the real
|
|
36
|
-
// version (#1951).
|
|
37
|
-
let RUFLO_VERSION = '3.6';
|
|
38
|
-
try {
|
|
39
|
-
const home = os.homedir();
|
|
40
|
-
const cwd = process.cwd();
|
|
41
|
-
const pkgPaths = [
|
|
42
|
-
path.join(home, '.claude', 'plugins', 'marketplaces', 'ruflo', 'package.json'),
|
|
43
|
-
path.join(cwd, 'node_modules', '@claude-flow', 'cli', 'package.json'),
|
|
44
|
-
path.join(cwd, 'node_modules', 'ruflo', 'package.json'),
|
|
45
|
-
path.join(cwd, 'v3', '@claude-flow', 'cli', 'package.json'),
|
|
46
|
-
];
|
|
47
|
-
for (const p of pkgPaths) {
|
|
48
|
-
if (!fs.existsSync(p)) continue;
|
|
49
|
-
try {
|
|
50
|
-
const pkg = JSON.parse(fs.readFileSync(p, 'utf-8'));
|
|
51
|
-
if (pkg && typeof pkg.version === 'string' && pkg.version.length > 0) {
|
|
52
|
-
RUFLO_VERSION = pkg.version;
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
} catch { /* malformed package.json — try next */ }
|
|
56
|
-
}
|
|
57
|
-
} catch { /* fall through to the hardcoded default */ }
|
|
58
|
-
|
|
59
30
|
// Configuration
|
|
60
31
|
const CONFIG = {
|
|
61
32
|
enabled: true,
|
|
@@ -431,7 +402,7 @@ function generateStatusline() {
|
|
|
431
402
|
const lines = [];
|
|
432
403
|
|
|
433
404
|
// Header Line
|
|
434
|
-
let header = `${c.bold}${c.brightPurple}▊ RuFlo
|
|
405
|
+
let header = `${c.bold}${c.brightPurple}▊ RuFlo V3.5 ${c.reset}`;
|
|
435
406
|
header += `${swarm.coordinationActive ? c.brightCyan : c.dim}● ${c.brightCyan}${user.name}${c.reset}`;
|
|
436
407
|
if (user.gitBranch) {
|
|
437
408
|
header += ` ${c.dim}│${c.reset} ${c.brightBlue}⎇ ${user.gitBranch}${c.reset}`;
|
|
@@ -537,7 +508,7 @@ function generateSafeStatusline() {
|
|
|
537
508
|
const lines = [];
|
|
538
509
|
|
|
539
510
|
// Header Line
|
|
540
|
-
let header = `${c.bold}${c.brightPurple}▊ RuFlo
|
|
511
|
+
let header = `${c.bold}${c.brightPurple}▊ RuFlo V3.5 ${c.reset}`;
|
|
541
512
|
header += `${swarm.coordinationActive ? c.brightCyan : c.dim}● ${c.brightCyan}${user.name}${c.reset}`;
|
|
542
513
|
if (user.gitBranch) {
|
|
543
514
|
header += ` ${c.dim}│${c.reset} ${c.brightBlue}⎇ ${user.gitBranch}${c.reset}`;
|
package/.claude/settings.json
CHANGED
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
]
|
|
116
116
|
},
|
|
117
117
|
"attribution": {
|
|
118
|
-
"commit": "Co-Authored-By:
|
|
118
|
+
"commit": "Co-Authored-By: claude-flow <ruv@ruv.net>",
|
|
119
119
|
"pr": "Generated with [claude-flow](https://github.com/ruvnet/claude-flow)"
|
|
120
120
|
},
|
|
121
121
|
"claudeFlow": {
|
package/README.md
CHANGED
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
[](https://
|
|
3
|
+
[](https://flo.ruv.io/)
|
|
4
4
|
|
|
5
5
|
[](https://flo.ruv.io/)
|
|
6
6
|
[](https://goal.ruv.io/)
|
|
7
7
|
[](https://goal.ruv.io/agents)
|
|
8
8
|
|
|
9
|
-
[](https://www.npmjs.com/package/ruflo)
|
|
10
|
-
[](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.proof.json)
|
|
11
|
-
[](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.ledger.json)
|
|
12
|
-
|
|
13
9
|
[](https://github.com/ruvnet/claude-flow)
|
|
14
10
|
[](https://opensource.org/licenses/MIT)
|
|
15
11
|
[](https://github.com/ruvnet/claude-flow)
|
|
16
12
|
[](https://www.npmjs.com/package/@claude-flow/codex)
|
|
17
13
|
[](https://github.com/ruvnet/ruvector)
|
|
18
14
|
|
|
19
|
-
[](https://cognitum.one/appliance)
|
|
20
|
-
|
|
21
|
-
[](https://github.com/ruvnet/ruflo/issues/1967)
|
|
22
|
-
|
|
23
15
|
# Ruflo
|
|
24
16
|
|
|
25
17
|
**Multi-agent AI orchestration for Claude Code**
|
|
@@ -72,108 +64,101 @@ There are **two different install paths** with very different surface areas. Pic
|
|
|
72
64
|
# Install core + any plugins you need
|
|
73
65
|
/plugin install ruflo-core@ruflo
|
|
74
66
|
/plugin install ruflo-swarm@ruflo
|
|
75
|
-
/plugin install ruflo-
|
|
76
|
-
/plugin install ruflo-
|
|
67
|
+
/plugin install ruflo-autopilot@ruflo
|
|
68
|
+
/plugin install ruflo-federation@ruflo
|
|
77
69
|
```
|
|
78
70
|
|
|
79
71
|
This adds slash commands and agent definitions only. The Ruflo MCP server is NOT registered, so `memory_store`, `swarm_init`, `agent_spawn`, etc. won't be callable from Claude. For the full loop, use Path B below.
|
|
80
72
|
|
|
81
73
|
<details>
|
|
82
|
-
<summary><strong>🔌 All
|
|
74
|
+
<summary><strong>🔌 All 32 plugins</strong></summary>
|
|
83
75
|
|
|
84
76
|
#### Core & Orchestration
|
|
85
77
|
|
|
86
78
|
| Plugin | What it does |
|
|
87
79
|
|--------|-------------|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
80
|
+
| **ruflo-core** | Foundation — server, health checks, plugin discovery |
|
|
81
|
+
| **ruflo-swarm** | Coordinate multiple agents as a team |
|
|
82
|
+
| **ruflo-autopilot** | Let agents run autonomously in a loop |
|
|
83
|
+
| **ruflo-loop-workers** | Schedule background tasks on a timer |
|
|
84
|
+
| **ruflo-workflows** | Reusable multi-step task templates |
|
|
85
|
+
| **ruflo-federation** | Agents on different machines collaborate securely |
|
|
94
86
|
|
|
95
87
|
#### Memory & Knowledge
|
|
96
88
|
|
|
97
89
|
| Plugin | What it does |
|
|
98
90
|
|--------|-------------|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
|
|
|
91
|
+
| **ruflo-agentdb** | Fast vector database for agent memory |
|
|
92
|
+
| **ruflo-rag-memory** | Smart retrieval — hybrid search, graph hops, diversity ranking |
|
|
93
|
+
| **ruflo-rvf** | Save and restore agent memory across sessions |
|
|
94
|
+
| **ruflo-ruvector** | [`ruvector`](https://npmjs.com/package/ruvector) — GPU-accelerated search, Graph RAG, 103 tools |
|
|
95
|
+
| **ruflo-knowledge-graph** | Build and traverse entity relationship maps |
|
|
104
96
|
|
|
105
97
|
#### Intelligence & Learning
|
|
106
98
|
|
|
107
99
|
| Plugin | What it does |
|
|
108
100
|
|--------|-------------|
|
|
109
|
-
|
|
|
110
|
-
|
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
| [**ruflo-goals**](plugins/ruflo-goals/README.md) | Break big goals into plans and track progress |
|
|
101
|
+
| **ruflo-intelligence** | Agents learn from past successes and get smarter |
|
|
102
|
+
| **ruflo-daa** | Dynamic agent behavior and cognitive patterns |
|
|
103
|
+
| **ruflo-ruvllm** | Run local LLMs (Ollama, etc.) with smart routing |
|
|
104
|
+
| **ruflo-goals** | Break big goals into plans and track progress |
|
|
114
105
|
|
|
115
106
|
#### Code Quality & Testing
|
|
116
107
|
|
|
117
108
|
| Plugin | What it does |
|
|
118
109
|
|--------|-------------|
|
|
119
|
-
|
|
|
120
|
-
|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
110
|
+
| **ruflo-testgen** | Find missing tests and generate them automatically |
|
|
111
|
+
| **ruflo-browser** | Automate browser testing with Playwright |
|
|
112
|
+
| **ruflo-jujutsu** | Analyze git diffs, score risk, suggest reviewers |
|
|
113
|
+
| **ruflo-docs** | Generate and maintain documentation automatically |
|
|
123
114
|
|
|
124
115
|
#### Security & Compliance
|
|
125
116
|
|
|
126
117
|
| Plugin | What it does |
|
|
127
118
|
|--------|-------------|
|
|
128
|
-
|
|
|
129
|
-
|
|
|
119
|
+
| **ruflo-security-audit** | Scan for vulnerabilities and CVEs |
|
|
120
|
+
| **ruflo-aidefence** | Block prompt injection, detect PII, safety scanning |
|
|
130
121
|
|
|
131
122
|
#### Architecture & Methodology
|
|
132
123
|
|
|
133
124
|
| Plugin | What it does |
|
|
134
125
|
|--------|-------------|
|
|
135
|
-
|
|
|
136
|
-
|
|
|
137
|
-
|
|
|
126
|
+
| **ruflo-adr** | Track architecture decisions with a living record |
|
|
127
|
+
| **ruflo-ddd** | Scaffold domain-driven design — contexts, aggregates, events |
|
|
128
|
+
| **ruflo-sparc** | Guided 5-phase development methodology with quality gates |
|
|
138
129
|
|
|
139
130
|
#### DevOps & Observability
|
|
140
131
|
|
|
141
132
|
| Plugin | What it does |
|
|
142
133
|
|--------|-------------|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
134
|
+
| **ruflo-migrations** | Manage database schema changes safely |
|
|
135
|
+
| **ruflo-observability** | Structured logs, traces, and metrics in one place |
|
|
136
|
+
| **ruflo-cost-tracker** | Track token usage, set budgets, get cost alerts |
|
|
146
137
|
|
|
147
138
|
#### Extensibility
|
|
148
139
|
|
|
149
140
|
| Plugin | What it does |
|
|
150
141
|
|--------|-------------|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
142
|
+
| **ruflo-wasm** | Run sandboxed WebAssembly agents |
|
|
143
|
+
| **ruflo-plugin-creator** | Scaffold, validate, and publish your own plugins |
|
|
153
144
|
|
|
154
145
|
#### Domain-Specific
|
|
155
146
|
|
|
156
147
|
| Plugin | What it does |
|
|
157
148
|
|--------|-------------|
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
149
|
+
| **ruflo-iot-cognitum** | IoT device management — trust scoring, anomaly detection, fleets |
|
|
150
|
+
| **ruflo-neural-trader** | [`neural-trader`](https://npmjs.com/package/neural-trader) — AI trading with 4 agents, backtesting, 112+ tools |
|
|
151
|
+
| **ruflo-market-data** | Ingest market data, vectorize OHLCV, detect patterns |
|
|
161
152
|
|
|
162
153
|
</details>
|
|
163
154
|
|
|
164
155
|
### CLI Install
|
|
165
156
|
|
|
166
|
-
**macOS / Linux / WSL / Git-Bash:**
|
|
167
|
-
|
|
168
157
|
```bash
|
|
169
|
-
# One-line install
|
|
158
|
+
# One-line install
|
|
170
159
|
curl -fsSL https://cdn.jsdelivr.net/gh/ruvnet/ruflo@main/scripts/install.sh | bash
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
**All platforms (including native Windows PowerShell / cmd):**
|
|
174
160
|
|
|
175
|
-
|
|
176
|
-
# Interactive setup wizard — runs identically on every platform
|
|
161
|
+
# Or via npx (interactive setup)
|
|
177
162
|
npx ruflo@latest init wizard
|
|
178
163
|
|
|
179
164
|
# Quick non-interactive init
|
|
@@ -183,8 +168,6 @@ npx ruflo@latest init wizard
|
|
|
183
168
|
npm install -g ruflo@latest
|
|
184
169
|
```
|
|
185
170
|
|
|
186
|
-
> 💡 **Windows users:** the `curl ... | bash` form needs a POSIX shell (Git-Bash, WSL, MSYS). The `npx ruflo@latest init wizard` line works natively in PowerShell and cmd. If you hit an `'bash' is not recognized` error, use the `npx` line instead — both end up running the same init flow.
|
|
187
|
-
|
|
188
171
|
### MCP Server
|
|
189
172
|
|
|
190
173
|
```bash
|
|
@@ -3,26 +3,6 @@
|
|
|
3
3
|
* Manages background worker daemon (Node.js-based, similar to shell helpers)
|
|
4
4
|
*/
|
|
5
5
|
import type { Command } from '../types.js';
|
|
6
|
-
/**
|
|
7
|
-
* #1914: Resolve the `--workspace` flag to an absolute path, or return null
|
|
8
|
-
* if it is absent / not a usable string. Rejects values with null bytes or
|
|
9
|
-
* shell metacharacters (defence-in-depth — the value is later embedded in a
|
|
10
|
-
* forked child's argv and compared against `ps`/`tasklist` output).
|
|
11
|
-
*/
|
|
12
|
-
export declare function resolveWorkspaceFlag(raw: unknown): string | null;
|
|
13
|
-
/**
|
|
14
|
-
* #1914: True when a process command line (from `ps -eo command` on POSIX or
|
|
15
|
-
* the tasklist Window Title column on Windows) belongs to a daemon started
|
|
16
|
-
* for `workspaceRoot`. The launcher (`startBackgroundDaemon`) always appends
|
|
17
|
-
* `--workspace <root>` as the FINAL argv entry, so an exact trailing match
|
|
18
|
-
* after stripping trailing whitespace/quotes is unambiguous — even for
|
|
19
|
-
* workspace paths containing spaces — and never a bare path-prefix match,
|
|
20
|
-
* so workspace `/a/proj` does not reap `/a/proj-other`'s daemon. A daemon
|
|
21
|
-
* whose argv puts `--workspace` mid-list (only possible via a hand-rolled
|
|
22
|
-
* invocation) simply won't be auto-reaped — `daemon stop` still handles it
|
|
23
|
-
* via the PID file.
|
|
24
|
-
*/
|
|
25
|
-
export declare function daemonCommandLineBelongsToWorkspace(commandLine: string, workspaceRoot: string): boolean;
|
|
26
6
|
export declare const daemonCommand: Command;
|
|
27
7
|
export default daemonCommand;
|
|
28
8
|
//# sourceMappingURL=daemon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAu/B1E,eAAO,MAAM,aAAa,EAAE,OA+D3B,CAAC;AAEF,eAAe,aAAa,CAAC"}
|