@dlnk/cli 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../src/subagent.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,WAAW,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAGD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA2ClD,CAAC;AAGF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,EAAE,CAAC;IACvE,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,YAAY,CAAC,EAAE,aAAa,CAAC;CACzB,GACL,OAAO,CAAC,kBAAkB,CAAC,CA+D7B;AAGD,wBAAsB,QAAQ,CAC5B,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAC1C,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE,GACL,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,EAAE,CAAC,CAgBnE"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SUB_AGENTS = void 0;
7
+ exports.runPipeline = runPipeline;
8
+ exports.runSwarm = runSwarm;
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const engine_js_1 = require("./engine.js");
11
+ const memory_js_1 = require("./memory.js");
12
+ // ── Predefined Sub-agent Roles ────────────────────────────────
13
+ exports.SUB_AGENTS = {
14
+ planner: {
15
+ id: 'planner',
16
+ name: 'Planner',
17
+ emoji: '🧠',
18
+ role: 'expert software architect and project planner',
19
+ systemContext: 'Break down complex tasks into clear, actionable steps. Output a numbered execution plan.',
20
+ },
21
+ coder: {
22
+ id: 'coder',
23
+ name: 'Coder',
24
+ emoji: '💻',
25
+ role: 'senior software engineer',
26
+ systemContext: 'Write clean, production-ready code. Always handle errors. Add comments for complex logic.',
27
+ },
28
+ reviewer: {
29
+ id: 'reviewer',
30
+ name: 'Reviewer',
31
+ emoji: '🔍',
32
+ role: 'senior code reviewer',
33
+ systemContext: 'Review code for bugs, security issues, performance, and best practices. Be specific.',
34
+ },
35
+ tester: {
36
+ id: 'tester',
37
+ name: 'Tester',
38
+ emoji: '🧪',
39
+ role: 'QA engineer',
40
+ systemContext: 'Write comprehensive tests. Cover edge cases, error cases, and happy paths.',
41
+ },
42
+ devops: {
43
+ id: 'devops',
44
+ name: 'DevOps',
45
+ emoji: '⚙️',
46
+ role: 'DevOps engineer',
47
+ systemContext: 'Handle deployment, CI/CD, Docker, environment configs, and infrastructure.',
48
+ },
49
+ researcher: {
50
+ id: 'researcher',
51
+ name: 'Researcher',
52
+ emoji: '🔎',
53
+ role: 'technical researcher',
54
+ systemContext: 'Search for information, summarize findings, and provide citations.',
55
+ },
56
+ };
57
+ // ── Sequential Multi-Agent Pipeline ───────────────────────────
58
+ async function runPipeline(masterTask, agentIds, options = {}) {
59
+ const cwd = options.cwd || process.cwd();
60
+ const sharedMemory = options.sharedMemory || new memory_js_1.MemoryManager(cwd);
61
+ const agentResults = [];
62
+ // Step 1: Planner breaks down the master task
63
+ let plan = masterTask;
64
+ if (agentIds.length > 1 && agentIds[0] !== 'planner') {
65
+ console.log(chalk_1.default.gray('\n 🧠 Orchestrator planning task decomposition...'));
66
+ const planResult = await (0, engine_js_1.runAgent)(`Break down this task into ${agentIds.length} subtasks for these agents: ${agentIds.join(', ')}.\nTask: ${masterTask}\n\nOutput a numbered list of subtasks, one per agent.`, {
67
+ cwd,
68
+ permissionMode: 'auto',
69
+ memory: new memory_js_1.MemoryManager(cwd),
70
+ });
71
+ plan = planResult.output;
72
+ }
73
+ // Step 2: Extract subtasks from plan (simple line parsing)
74
+ const planLines = plan.split('\n').filter(l => /^\d+\./.test(l.trim()));
75
+ const subtasks = planLines.length >= agentIds.length
76
+ ? planLines.map(l => l.replace(/^\d+\.\s*/, '').trim())
77
+ : agentIds.map(() => masterTask); // fallback: same task for all
78
+ // Step 3: Run each agent with their subtask
79
+ for (let i = 0; i < agentIds.length; i++) {
80
+ const agentId = agentIds[i];
81
+ const agentDef = exports.SUB_AGENTS[agentId];
82
+ if (!agentDef)
83
+ continue;
84
+ const task = subtasks[i] || masterTask;
85
+ if (options.onAgentStart)
86
+ options.onAgentStart(agentDef, task);
87
+ // Inject previous results as context
88
+ const contextNote = agentResults.length > 0
89
+ ? `\n\nPrevious agents' work:\n${agentResults.map(r => `[${r.agentId}]: ${r.result.output.slice(0, 500)}`).join('\n\n')}`
90
+ : '';
91
+ const result = await (0, engine_js_1.runAgent)(task + contextNote, {
92
+ cwd,
93
+ role: agentDef.role,
94
+ permissionMode: 'auto',
95
+ memory: sharedMemory,
96
+ onStep: (step) => {
97
+ if (options.onStep)
98
+ options.onStep(agentId, step.type, step.content);
99
+ }
100
+ });
101
+ agentResults.push({ agentId, task, result });
102
+ // Add to shared memory
103
+ sharedMemory.addNote(`[${agentDef.emoji} ${agentDef.name}] completed: ${task.slice(0, 100)}`);
104
+ }
105
+ // Step 4: Summarize
106
+ const summary = agentResults
107
+ .map(r => `${exports.SUB_AGENTS[r.agentId]?.emoji || '•'} **${r.agentId}**: ${r.result.success ? '✓' : '✗'} (${r.result.iterations} steps)`)
108
+ .join('\n');
109
+ return { plan, agentResults, summary };
110
+ }
111
+ // ── Parallel Swarm (fire all agents simultaneously) ───────────
112
+ async function runSwarm(tasks, options = {}) {
113
+ const cwd = options.cwd || process.cwd();
114
+ const promises = tasks.map(({ agentId, task }) => {
115
+ const agentDef = exports.SUB_AGENTS[agentId];
116
+ return (0, engine_js_1.runAgent)(task, {
117
+ cwd,
118
+ role: agentDef?.role,
119
+ permissionMode: 'auto',
120
+ onStep: (step) => {
121
+ if (options.onStep)
122
+ options.onStep(agentId, step.type, step.content);
123
+ }
124
+ }).then(result => ({ agentId, task, result }));
125
+ });
126
+ return Promise.all(promises);
127
+ }
128
+ //# sourceMappingURL=subagent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../src/subagent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env bash
2
+ # dlnk-release.sh — Local CI/CD replacement for GitHub Actions
3
+ # Usage: bash dlnk-release.sh [patch|minor|major]
4
+ set -e
5
+
6
+ PROJECT="/home/donla/projects/dlnk-cli"
7
+ REPO="MutiAgentic/Dlnk"
8
+ NPM_TOKEN="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"
9
+
10
+ cd "$PROJECT"
11
+
12
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
13
+ echo " dLNk Release Pipeline"
14
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
15
+
16
+ # ── 1. Bump version ──────────────────────────────────────────
17
+ BUMP=${1:-patch}
18
+ CURRENT=$(node -p "require('./package.json').version")
19
+
20
+ IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT"
21
+ case "$BUMP" in
22
+ major) MAJOR=$((MAJOR+1)); MINOR=0; PATCH=0 ;;
23
+ minor) MINOR=$((MINOR+1)); PATCH=0 ;;
24
+ patch) PATCH=$((PATCH+1)) ;;
25
+ esac
26
+ NEW_VERSION="$MAJOR.$MINOR.$PATCH"
27
+
28
+ python3 -c "
29
+ import json
30
+ with open('package.json') as f: d = json.load(f)
31
+ d['version'] = '$NEW_VERSION'
32
+ with open('package.json', 'w') as f: json.dump(d, f, indent=2)
33
+ "
34
+ echo "✓ Version: $CURRENT → $NEW_VERSION"
35
+
36
+ # ── 2. Build TypeScript ──────────────────────────────────────
37
+ echo "⚡ Building TypeScript..."
38
+ npm run build
39
+ echo "✓ Build complete"
40
+
41
+ # ── 3. Package binaries ──────────────────────────────────────
42
+ echo "📦 Packaging binaries..."
43
+ npx pkg dist/index.js \
44
+ --targets node18-linux-x64,node18-win-x64 \
45
+ --output bin/dlnk \
46
+ 2>&1 | grep -v "^>" | grep -v "Warning" || true
47
+ echo "✓ Binaries: $(ls -lh bin/ | grep dlnk | awk '{print $5, $9}' | tr '\n' ' ')"
48
+
49
+ # ── 4. Git commit + tag ──────────────────────────────────────
50
+ echo "📝 Committing..."
51
+ # Remove npmrc before commit
52
+ echo "" > .npmrc
53
+ git add -A
54
+ git commit -m "release: v$NEW_VERSION" --allow-empty
55
+
56
+ # Rewrite to strip any accidental secrets
57
+ git filter-branch --force --index-filter \
58
+ 'git rm --cached --ignore-unmatch .npmrc' \
59
+ --prune-empty --tag-name-filter cat -- HEAD 2>&1 | grep -v "^Ref" || true
60
+
61
+ git tag "v$NEW_VERSION"
62
+ git push origin main --force --tags 2>&1 | grep -E "->|error" | head -5
63
+ echo "✓ Pushed to GitHub"
64
+
65
+ # ── 5. GitHub Release ────────────────────────────────────────
66
+ echo "🚀 Creating GitHub Release..."
67
+ gh release create "v$NEW_VERSION" \
68
+ bin/dlnk-linux \
69
+ bin/dlnk-win.exe \
70
+ --repo "$REPO" \
71
+ --title "dLNk CLI v$NEW_VERSION" \
72
+ --generate-notes 2>&1 | tail -2
73
+ echo "✓ GitHub Release created"
74
+
75
+ # ── 6. npm publish ───────────────────────────────────────────
76
+ echo "📤 Publishing to npm..."
77
+ echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc
78
+ npm publish --access public 2>&1 | grep -E "^\+|error" | head -3
79
+ echo "" > .npmrc
80
+ echo "✓ npm published"
81
+
82
+ echo ""
83
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
84
+ echo " ✅ Released v$NEW_VERSION"
85
+ echo " npm: https://www.npmjs.com/package/@dlnk/cli"
86
+ echo " gh: https://github.com/$REPO/releases/tag/v$NEW_VERSION"
87
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dlnk/cli",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "AI Agent CLI \u2014 Powered by dLNk",
5
5
  "main": "dist/index.js",
6
6
  "bin": {