@dlnk/cli 0.1.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.
package/README.md ADDED
@@ -0,0 +1,88 @@
1
+ # dLNk CLI
2
+
3
+ > AI Agent CLI — Powered by dLNk
4
+
5
+ An intelligent CLI tool that runs a 12-agent AI swarm on your machine. Bring your own Telegram/Discord bot token and connect to any LLM backend.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g @dlnk/cli
11
+ ```
12
+
13
+ Or download the binary: [GitHub Releases](https://github.com/dlnk/cli/releases)
14
+
15
+ ## Quick Start
16
+
17
+ ```bash
18
+ # Ask a question
19
+ dlnk run "explain how to build a REST API in Node.js"
20
+
21
+ # Use a specific agent
22
+ dlnk run --agent security "review this code for vulnerabilities"
23
+ dlnk run --agent backend "design a database schema for an e-commerce app"
24
+
25
+ # Activate Pro license
26
+ dlnk license --activate DLNK-PRO-XXXX-XXXX-XXXX-XXXX
27
+
28
+ # Full swarm mode (12 agents working together)
29
+ dlnk run --swarm "build a complete todo app with React and Express"
30
+ ```
31
+
32
+ ## Commands
33
+
34
+ | Command | Description |
35
+ |---|---|
36
+ | `dlnk run <task>` | Run a task (auto mode) |
37
+ | `dlnk run --agent <id> <task>` | Use specific agent role |
38
+ | `dlnk run --swarm <task>` | Full 12-agent swarm |
39
+ | `dlnk chat` | Interactive AI chat |
40
+ | `dlnk agents` | List all agent roles |
41
+ | `dlnk config --list` | Show configuration |
42
+ | `dlnk config --set key=value` | Set config value |
43
+ | `dlnk license --status` | Check license |
44
+ | `dlnk license --activate <key>` | Activate license key |
45
+ | `dlnk status` | System info |
46
+
47
+ ## Agent Roles
48
+
49
+ | Role | Description |
50
+ |---|---|
51
+ | `coordinator` | Project Coordinator |
52
+ | `planner` | AI Planner |
53
+ | `orchestrator` | Task Orchestrator |
54
+ | `backend` | Backend Architect |
55
+ | `frontend` | Frontend Developer |
56
+ | `ai_integrator` | AI Integrator |
57
+ | `security` | Security Auditor |
58
+ | `qa` | QA Engineer |
59
+ | `cloud` | Cloud Engineer |
60
+ | `data` | Data Analyst |
61
+ | `memory` | Memory Engineer |
62
+ | `writer` | Content Writer |
63
+
64
+ ## License Tiers
65
+
66
+ | Tier | Price | Requests/day | Max Agents |
67
+ |---|---|---|---|
68
+ | Free | Free | 50 | 3 |
69
+ | Pro | 499 THB/month | Unlimited | 12 |
70
+ | Enterprise | Contact | Unlimited | 12 |
71
+
72
+ Purchase at: https://dlnk.online/pro
73
+
74
+ ## Configuration
75
+
76
+ Config is stored at `~/.dlnk/config.json`
77
+
78
+ ```json
79
+ {
80
+ "model": "auto",
81
+ "api_endpoint": "http://localhost:3333",
82
+ "license_key": "trial"
83
+ }
84
+ ```
85
+
86
+ ---
87
+
88
+ Made with ❤️ by dLNk | https://dlnk.online
@@ -0,0 +1,10 @@
1
+ export interface AgentRole {
2
+ id: string;
3
+ name: string;
4
+ emoji: string;
5
+ systemPrompt: string;
6
+ }
7
+ export declare const AGENT_ROLES: Record<string, AgentRole>;
8
+ export declare function getAgent(id: string): AgentRole | undefined;
9
+ export declare function listAgents(): AgentRole[];
10
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAyEjD,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE1D;AAED,wBAAgB,UAAU,IAAI,SAAS,EAAE,CAExC"}
package/dist/agents.js ADDED
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AGENT_ROLES = void 0;
4
+ exports.getAgent = getAgent;
5
+ exports.listAgents = listAgents;
6
+ exports.AGENT_ROLES = {
7
+ coordinator: {
8
+ id: 'coordinator',
9
+ name: 'Project Coordinator',
10
+ emoji: '📋',
11
+ systemPrompt: `You are a Project Coordinator. Your job is to understand the user's request and translate it into a clear, actionable project brief. Identify goals, scope, and key deliverables. Be concise. Output a structured brief only.`,
12
+ },
13
+ planner: {
14
+ id: 'planner',
15
+ name: 'AI Planner',
16
+ emoji: '🗺️',
17
+ systemPrompt: `You are an AI Planner. Break down the project brief into a step-by-step technical plan. Define task breakdown, dependencies, execution order, and risk points. Output a numbered plan only.`,
18
+ },
19
+ orchestrator: {
20
+ id: 'orchestrator',
21
+ name: 'Orchestrator',
22
+ emoji: '🎯',
23
+ systemPrompt: `You are an Orchestrator. Given a plan, decide which agents to activate and in what order. Assign tasks clearly. Be direct and structured.`,
24
+ },
25
+ backend: {
26
+ id: 'backend',
27
+ name: 'Backend Architect',
28
+ emoji: '⚙️',
29
+ systemPrompt: `You are a Backend Architect. Design and implement APIs, database schemas, and core business logic. Write production-quality code. Include error handling and security considerations.`,
30
+ },
31
+ frontend: {
32
+ id: 'frontend',
33
+ name: 'Frontend Developer',
34
+ emoji: '🎨',
35
+ systemPrompt: `You are a Frontend Developer. Build UI/UX components, pages, and user interactions. Focus on clean, accessible, responsive design. Write modern, component-based code.`,
36
+ },
37
+ ai_integrator: {
38
+ id: 'ai_integrator',
39
+ name: 'AI Integrator',
40
+ emoji: '🤖',
41
+ systemPrompt: `You are an AI Integrator. Connect LLMs, build prompts, and integrate AI capabilities into applications. Optimize for performance, cost, and reliability.`,
42
+ },
43
+ security: {
44
+ id: 'security',
45
+ name: 'Security Auditor',
46
+ emoji: '🔒',
47
+ systemPrompt: `You are a Security Auditor. Review code and systems for vulnerabilities. Identify risks by severity (Critical/High/Medium/Low). Provide specific fix suggestions for each finding.`,
48
+ },
49
+ qa: {
50
+ id: 'qa',
51
+ name: 'QA Engineer',
52
+ emoji: '🧪',
53
+ systemPrompt: `You are a QA Engineer. Write tests, identify edge cases, and verify correctness. Check for logic errors, hallucinations in AI outputs, and boundary conditions. Output test cases and results.`,
54
+ },
55
+ cloud: {
56
+ id: 'cloud',
57
+ name: 'Cloud Engineer',
58
+ emoji: '☁️',
59
+ systemPrompt: `You are a Cloud Engineer. Handle CI/CD pipelines, deployment configs, and infrastructure as code. Design for scalability, reliability, and cost efficiency.`,
60
+ },
61
+ data: {
62
+ id: 'data',
63
+ name: 'Data Analyst',
64
+ emoji: '📊',
65
+ systemPrompt: `You are a Data Analyst. Analyze data flows, generate insights, and identify patterns. Provide actionable recommendations based on data evidence.`,
66
+ },
67
+ memory: {
68
+ id: 'memory',
69
+ name: 'Memory Engineer',
70
+ emoji: '🧠',
71
+ systemPrompt: `You are a Memory Engineer. Manage RAG contexts, knowledge bases, and system memory. Optimize retrieval, summarization, and context injection for AI systems.`,
72
+ },
73
+ writer: {
74
+ id: 'writer',
75
+ name: 'Content Writer',
76
+ emoji: '📝',
77
+ systemPrompt: `You are a Content Writer. Create clear documentation, user guides, API references, and marketing content. Write for the target audience with appropriate tone and depth.`,
78
+ },
79
+ };
80
+ function getAgent(id) {
81
+ return exports.AGENT_ROLES[id];
82
+ }
83
+ function listAgents() {
84
+ return Object.values(exports.AGENT_ROLES);
85
+ }
86
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":";;;AAkFA,4BAEC;AAED,gCAEC;AAjFY,QAAA,WAAW,GAA8B;IACpD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,+NAA+N;KAC9O;IACD,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,6LAA6L;KAC5M;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,2IAA2I;KAC1J;IACD,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,uLAAuL;KACtM;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,wKAAwK;KACvL;IACD,aAAa,EAAE;QACb,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,0JAA0J;KACzK;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,oLAAoL;KACnM;IACD,EAAE,EAAE;QACF,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,gMAAgM;KAC/M;IACD,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,6JAA6J;KAC5K;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,kJAAkJ;KACjK;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,8JAA8J;KAC7K;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,0KAA0K;KACzL;CACF,CAAC;AAEF,SAAgB,QAAQ,CAAC,EAAU;IACjC,OAAO,mBAAW,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,MAAM,CAAC,MAAM,CAAC,mBAAW,CAAC,CAAC;AACpC,CAAC"}
package/dist/api.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ interface Message {
2
+ role: 'user' | 'assistant' | 'system';
3
+ content: string;
4
+ }
5
+ export declare function streamChat(messages: Message[], model: string | undefined, onChunk: (text: string) => void): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAIA,UAAU,OAAO;IAAG,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAE7E,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,MAAM,YAAS,EACtB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC,CAuCf"}
package/dist/api.js ADDED
@@ -0,0 +1,53 @@
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.streamChat = streamChat;
7
+ const https_1 = __importDefault(require("https"));
8
+ const http_1 = __importDefault(require("http"));
9
+ const config_1 = require("./config");
10
+ async function streamChat(messages, model = 'auto', onChunk) {
11
+ const config = (0, config_1.loadConfig)();
12
+ const endpoint = config.api_endpoint;
13
+ const url = new URL('/v1/chat/completions', endpoint);
14
+ const body = JSON.stringify({ model: `bcproxy/${model}`, messages, stream: true });
15
+ return new Promise((resolve, reject) => {
16
+ const lib = url.protocol === 'https:' ? https_1.default : http_1.default;
17
+ const req = lib.request({
18
+ hostname: url.hostname,
19
+ port: url.port,
20
+ path: url.pathname,
21
+ method: 'POST',
22
+ headers: {
23
+ 'Content-Type': 'application/json',
24
+ 'Authorization': 'Bearer dlnk-local',
25
+ 'Content-Length': Buffer.byteLength(body),
26
+ },
27
+ }, (res) => {
28
+ res.on('data', (chunk) => {
29
+ const lines = chunk.toString().split('\n');
30
+ for (const line of lines) {
31
+ if (!line.startsWith('data: '))
32
+ continue;
33
+ const data = line.slice(6).trim();
34
+ if (data === '[DONE]')
35
+ return;
36
+ try {
37
+ const json = JSON.parse(data);
38
+ const text = json.choices?.[0]?.delta?.content;
39
+ if (text)
40
+ onChunk(text);
41
+ }
42
+ catch { }
43
+ }
44
+ });
45
+ res.on('end', resolve);
46
+ res.on('error', reject);
47
+ });
48
+ req.on('error', reject);
49
+ req.write(body);
50
+ req.end();
51
+ });
52
+ }
53
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;AAMA,gCA2CC;AAjDD,kDAA0B;AAC1B,gDAAwB;AACxB,qCAAsC;AAI/B,KAAK,UAAU,UAAU,CAC9B,QAAmB,EACnB,QAAgB,MAAM,EACtB,OAA+B;IAE/B,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,CAAC,CAAC,cAAI,CAAC;QACrD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,mBAAmB;gBACpC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;aAC1C;SACF,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClC,IAAI,IAAI,KAAK,QAAQ;wBAAE,OAAO;oBAC9B,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC;wBAC/C,IAAI,IAAI;4BAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACvB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const VERSION = "0.1.0";
2
+ export declare function showBanner(): void;
3
+ //# sourceMappingURL=branding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.d.ts","sourceRoot":"","sources":["../src/branding.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,wBAAgB,UAAU,SAGzB"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSION = void 0;
4
+ exports.showBanner = showBanner;
5
+ exports.VERSION = '0.1.0';
6
+ function showBanner() {
7
+ console.log('AI Agent CLI — Powered by dLNk');
8
+ console.log('');
9
+ }
10
+ //# sourceMappingURL=branding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.js","sourceRoot":"","sources":["../src/branding.ts"],"names":[],"mappings":";;;AAEA,gCAGC;AALY,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B,SAAgB,UAAU;IACxB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,10 @@
1
+ interface DlnkConfig {
2
+ model: string;
3
+ api_endpoint: string;
4
+ license_key: string;
5
+ }
6
+ export declare function loadConfig(): DlnkConfig;
7
+ export declare function saveConfig(updates: Partial<DlnkConfig>): void;
8
+ export declare function getConfigPath(): string;
9
+ export {};
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD,wBAAgB,UAAU,IAAI,UAAU,CASvC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAI7D;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAwB"}
package/dist/config.js ADDED
@@ -0,0 +1,40 @@
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.loadConfig = loadConfig;
7
+ exports.saveConfig = saveConfig;
8
+ exports.getConfigPath = getConfigPath;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const os_1 = __importDefault(require("os"));
12
+ const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.dlnk');
13
+ const CONFIG_FILE = path_1.default.join(CONFIG_DIR, 'config.json');
14
+ const DEFAULTS = {
15
+ model: 'auto',
16
+ api_endpoint: 'http://localhost:3333',
17
+ license_key: 'trial',
18
+ };
19
+ function loadConfig() {
20
+ try {
21
+ if (!fs_1.default.existsSync(CONFIG_DIR))
22
+ fs_1.default.mkdirSync(CONFIG_DIR, { recursive: true });
23
+ if (!fs_1.default.existsSync(CONFIG_FILE)) {
24
+ fs_1.default.writeFileSync(CONFIG_FILE, JSON.stringify(DEFAULTS, null, 2));
25
+ return DEFAULTS;
26
+ }
27
+ return { ...DEFAULTS, ...JSON.parse(fs_1.default.readFileSync(CONFIG_FILE, 'utf-8')) };
28
+ }
29
+ catch {
30
+ return DEFAULTS;
31
+ }
32
+ }
33
+ function saveConfig(updates) {
34
+ const current = loadConfig();
35
+ if (!fs_1.default.existsSync(CONFIG_DIR))
36
+ fs_1.default.mkdirSync(CONFIG_DIR, { recursive: true });
37
+ fs_1.default.writeFileSync(CONFIG_FILE, JSON.stringify({ ...current, ...updates }, null, 2));
38
+ }
39
+ function getConfigPath() { return CONFIG_FILE; }
40
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;AAmBA,gCASC;AAED,gCAIC;AAED,sCAA+D;AApC/D,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AAEpB,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AACpD,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAQzD,MAAM,QAAQ,GAAe;IAC3B,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,uBAAuB;IACrC,WAAW,EAAE,OAAO;CACrB,CAAC;AAEF,SAAgB,UAAU;IACxB,IAAI,CAAC;QACH,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,YAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjE,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,QAAQ,CAAC;IAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,UAAU,CAAC,OAA4B;IACrD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,YAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAgB,aAAa,KAAa,OAAO,WAAW,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,264 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const readline_1 = __importDefault(require("readline"));
10
+ const branding_1 = require("./branding");
11
+ const config_1 = require("./config");
12
+ const api_1 = require("./api");
13
+ const agents_1 = require("./agents");
14
+ const orchestrator_1 = require("./orchestrator");
15
+ const license_1 = require("./license");
16
+ const os_1 = __importDefault(require("os"));
17
+ const program = new commander_1.Command();
18
+ program
19
+ .name('dlnk')
20
+ .description('AI Agent CLI — Powered by dLNk')
21
+ .version(branding_1.VERSION, '-v, --version', 'Show version number');
22
+ // ─── chat ────────────────────────────────────────────────────────────────────
23
+ program
24
+ .command('chat')
25
+ .description('Interactive AI chat with your agent')
26
+ .option('-m, --model <model>', 'Model (auto/fast/pro)', 'auto')
27
+ .option('-a, --agent <id>', 'Use specific agent role', 'backend')
28
+ .action(async (options) => {
29
+ (0, branding_1.showBanner)();
30
+ const config = (0, config_1.loadConfig)();
31
+ const model = options.model || config.model;
32
+ const role = agents_1.AGENT_ROLES[options.agent];
33
+ console.log(chalk_1.default.hex('#6C63FF')(' ◆ chat') + chalk_1.default.gray(` [model: ${model}${role ? ` | agent: ${role.emoji} ${role.name}` : ''}]`));
34
+ console.log(chalk_1.default.gray(' Type your message. "exit" to quit.\n'));
35
+ const rl = readline_1.default.createInterface({ input: process.stdin, output: process.stdout });
36
+ const history = [];
37
+ if (role)
38
+ history.push({ role: 'system', content: role.systemPrompt });
39
+ const ask = () => {
40
+ rl.question(chalk_1.default.hex('#00D4FF')(' you > '), async (input) => {
41
+ const msg = input.trim();
42
+ if (!msg || msg === 'exit') {
43
+ console.log(chalk_1.default.gray('\n Bye! 👋\n'));
44
+ rl.close();
45
+ return;
46
+ }
47
+ history.push({ role: 'user', content: msg });
48
+ process.stdout.write(chalk_1.default.hex('#6C63FF')('\n dlnk > '));
49
+ let reply = '';
50
+ try {
51
+ await (0, api_1.streamChat)(history, model, (chunk) => {
52
+ process.stdout.write(chalk_1.default.white(chunk));
53
+ reply += chunk;
54
+ });
55
+ }
56
+ catch (e) {
57
+ process.stdout.write(chalk_1.default.red(`\n Error: ${e.message}`));
58
+ }
59
+ history.push({ role: 'assistant', content: reply });
60
+ process.stdout.write('\n\n');
61
+ ask();
62
+ });
63
+ };
64
+ ask();
65
+ });
66
+ // ─── run ─────────────────────────────────────────────────────────────────────
67
+ program
68
+ .command('run <task>')
69
+ .description('Run agentic task with AI swarm')
70
+ .option('-m, --model <model>', 'Model (auto/fast/pro)', 'auto')
71
+ .option('-a, --agents <n>', 'Max agents to spawn', '4')
72
+ .option('--agent <id>', 'Use single specific agent')
73
+ .option('--swarm', 'Use full 12-agent swarm mode', false)
74
+ .action(async (task, options) => {
75
+ (0, branding_1.showBanner)();
76
+ // License check
77
+ const maxAgents = parseInt(options.agents) || 4;
78
+ const check = (0, license_1.trackUsage)(options.swarm ? maxAgents : 1);
79
+ if (!check.allowed) {
80
+ console.log(chalk_1.default.red(` ✗ ${check.reason}`));
81
+ console.log('');
82
+ return;
83
+ }
84
+ if (options.agent) {
85
+ // Single agent mode
86
+ const role = agents_1.AGENT_ROLES[options.agent];
87
+ if (!role) {
88
+ console.log(chalk_1.default.red(` Unknown agent: ${options.agent}`));
89
+ console.log(chalk_1.default.gray(` Available: ${Object.keys(agents_1.AGENT_ROLES).join(', ')}`));
90
+ return;
91
+ }
92
+ console.log(chalk_1.default.hex('#6C63FF')(` ◆ ${role.emoji} ${role.name}`));
93
+ console.log(chalk_1.default.white(` ${task}\n`));
94
+ process.stdout.write(chalk_1.default.hex('#6C63FF')(' > '));
95
+ try {
96
+ await (0, orchestrator_1.runAgent)(role, task, '', (chunk) => process.stdout.write(chalk_1.default.white(chunk)));
97
+ }
98
+ catch (e) {
99
+ process.stdout.write(chalk_1.default.red(`\n Error: ${e.message}`));
100
+ }
101
+ process.stdout.write('\n\n');
102
+ }
103
+ else if (options.swarm) {
104
+ // Full swarm mode
105
+ console.log(chalk_1.default.hex('#6C63FF')(' ◆ swarm mode') + chalk_1.default.gray(` [max ${maxAgents} agents]`));
106
+ console.log(chalk_1.default.white(` ${task}\n`));
107
+ let step = 0;
108
+ const steps = ['briefing', 'planning', 'executing'];
109
+ try {
110
+ const { results } = await (0, orchestrator_1.runSwarm)(task, maxAgents, (stepName, agent) => {
111
+ if (stepName === 'briefing')
112
+ console.log(chalk_1.default.gray(' 📋 Coordinator analyzing task...'));
113
+ else if (stepName === 'planning')
114
+ console.log(chalk_1.default.gray(' 🗺️ Planner creating execution plan...'));
115
+ else if (stepName === 'executing' && agent) {
116
+ console.log(chalk_1.default.gray(` ${agent.emoji} ${agent.name} working...`));
117
+ }
118
+ });
119
+ console.log('\n' + chalk_1.default.hex('#6C63FF')(' ◆ results\n'));
120
+ console.log((0, orchestrator_1.formatResults)(results));
121
+ console.log('');
122
+ }
123
+ catch (e) {
124
+ console.log(chalk_1.default.red(` Error: ${e.message}`));
125
+ }
126
+ }
127
+ else {
128
+ // Default: stream single response
129
+ console.log(chalk_1.default.hex('#6C63FF')(' ◆ run') + chalk_1.default.gray(` [auto mode]`));
130
+ console.log(chalk_1.default.white(` ${task}\n`));
131
+ process.stdout.write(chalk_1.default.hex('#6C63FF')(' dlnk > '));
132
+ try {
133
+ await (0, api_1.streamChat)([{ role: 'user', content: task }], options.model || (0, config_1.loadConfig)().model, (chunk) => process.stdout.write(chalk_1.default.white(chunk)));
134
+ }
135
+ catch (e) {
136
+ process.stdout.write(chalk_1.default.red(`\n Error: ${e.message}`));
137
+ }
138
+ process.stdout.write('\n\n');
139
+ }
140
+ });
141
+ // ─── agents ──────────────────────────────────────────────────────────────────
142
+ program
143
+ .command('agents')
144
+ .description('List all available agent roles')
145
+ .action(() => {
146
+ (0, branding_1.showBanner)();
147
+ console.log(chalk_1.default.hex('#6C63FF')(' ◆ available agents\n'));
148
+ (0, agents_1.listAgents)().forEach((agent) => {
149
+ console.log(` ${agent.emoji} ${chalk_1.default.white(agent.id.padEnd(16))} ${chalk_1.default.gray(agent.name)}`);
150
+ });
151
+ console.log('');
152
+ console.log(chalk_1.default.gray(' Usage: dlnk run --agent <id> "your task"'));
153
+ console.log(chalk_1.default.gray(' dlnk run --swarm "your task"'));
154
+ console.log('');
155
+ });
156
+ // ─── config ──────────────────────────────────────────────────────────────────
157
+ program
158
+ .command('config')
159
+ .description('Manage dLNk CLI configuration')
160
+ .option('--list', 'List all config values')
161
+ .option('--set <keyval>', 'Set config (key=value)')
162
+ .option('--get <key>', 'Get config value')
163
+ .action((options) => {
164
+ (0, branding_1.showBanner)();
165
+ const config = (0, config_1.loadConfig)();
166
+ if (options.list || (!options.set && !options.get)) {
167
+ console.log(chalk_1.default.hex('#6C63FF')(' ◆ configuration'));
168
+ console.log(chalk_1.default.gray(` Path: ${(0, config_1.getConfigPath)()}\n`));
169
+ Object.entries(config).forEach(([k, v]) => {
170
+ console.log(` ${chalk_1.default.white(k.padEnd(16))} ${chalk_1.default.gray(String(v))}`);
171
+ });
172
+ console.log('');
173
+ }
174
+ else if (options.set) {
175
+ const [key, ...rest] = options.set.split('=');
176
+ const value = rest.join('=');
177
+ (0, config_1.saveConfig)({ [key.trim()]: value.trim() });
178
+ console.log(chalk_1.default.green(` ✓ Set ${key} = ${value}\n`));
179
+ }
180
+ else if (options.get) {
181
+ console.log(config[options.get] ?? chalk_1.default.red('(not set)'));
182
+ }
183
+ });
184
+ // ─── status ──────────────────────────────────────────────────────────────────
185
+ program
186
+ .command('status')
187
+ .description('Show system status and license info')
188
+ .action(() => {
189
+ (0, branding_1.showBanner)();
190
+ const config = (0, config_1.loadConfig)();
191
+ console.log(chalk_1.default.hex('#6C63FF')(' ◆ system status\n'));
192
+ console.log(chalk_1.default.white(' Runtime'));
193
+ console.log(chalk_1.default.gray(` Node.js : ${process.version}`));
194
+ console.log(chalk_1.default.gray(` Platform: ${os_1.default.platform()} ${os_1.default.arch()}`));
195
+ console.log('');
196
+ console.log(chalk_1.default.white(' Config'));
197
+ console.log(chalk_1.default.gray(` Endpoint: ${config.api_endpoint}`));
198
+ console.log(chalk_1.default.gray(` Model : ${config.model}`));
199
+ console.log('');
200
+ console.log(chalk_1.default.white(' License'));
201
+ console.log(chalk_1.default.yellow(' Status : Trial'));
202
+ console.log(chalk_1.default.gray(' Plan : Free (50 req/day, 3 agents)'));
203
+ console.log(chalk_1.default.gray(' Upgrade : https://dlnk.online/pro'));
204
+ console.log('');
205
+ console.log(chalk_1.default.white(' Agents'));
206
+ console.log(chalk_1.default.gray(` Available: ${(0, agents_1.listAgents)().length} specialized roles`));
207
+ console.log('');
208
+ });
209
+ // ─── license ─────────────────────────────────────────────────────────────────
210
+ program
211
+ .command('license')
212
+ .description('Manage your dLNk license')
213
+ .option('--status', 'Show license status')
214
+ .option('--activate <key>', 'Activate a license key')
215
+ .option('--usage', 'Show usage statistics')
216
+ .action(async (options) => {
217
+ (0, branding_1.showBanner)();
218
+ if (options.activate) {
219
+ console.log(chalk_1.default.hex('#6C63FF')(' ◆ activating license...'));
220
+ const result = await (0, license_1.activateLicense)(options.activate);
221
+ if (result.ok && result.info) {
222
+ console.log(chalk_1.default.green(` ✓ License activated!`));
223
+ console.log(chalk_1.default.gray(` Tier : ${result.info.tier.toUpperCase()}`));
224
+ console.log(chalk_1.default.gray(` Agents : ${result.info.maxAgents}`));
225
+ console.log(chalk_1.default.gray(` Req/day: ${result.info.maxReqPerDay === 99999 ? 'Unlimited' : result.info.maxReqPerDay}`));
226
+ }
227
+ else {
228
+ console.log(chalk_1.default.red(` ✗ Activation failed: ${result.error}`));
229
+ }
230
+ console.log('');
231
+ }
232
+ else if (options.usage) {
233
+ console.log(chalk_1.default.hex('#6C63FF')(' ◆ usage'));
234
+ console.log(chalk_1.default.gray(` Today : ${(0, license_1.getUsageSummary)()}`));
235
+ console.log('');
236
+ }
237
+ else {
238
+ // Default: show status
239
+ const { valid, reason, info } = (0, license_1.validateLicense)();
240
+ const tierColor = info.tier === 'pro' || info.tier === 'enterprise' ? chalk_1.default.green : chalk_1.default.yellow;
241
+ console.log(chalk_1.default.hex('#6C63FF')(' ◆ license status\n'));
242
+ console.log(` ${chalk_1.default.white('Key :')} ${chalk_1.default.gray(info.key === 'trial' ? 'Trial (no key)' : info.key.slice(0, 16) + '...')}`);
243
+ console.log(` ${chalk_1.default.white('Tier :')} ${tierColor(info.tier.toUpperCase())}`);
244
+ console.log(` ${chalk_1.default.white('Status :')} ${valid ? chalk_1.default.green('✓ Valid') : chalk_1.default.red('✗ ' + reason)}`);
245
+ console.log(` ${chalk_1.default.white('Agents :')} ${chalk_1.default.gray(String(info.maxAgents))}`);
246
+ console.log(` ${chalk_1.default.white('Req/day:')} ${chalk_1.default.gray(info.maxReqPerDay === 99999 ? 'Unlimited' : String(info.maxReqPerDay))}`);
247
+ console.log(` ${chalk_1.default.white('Usage :')} ${chalk_1.default.gray((0, license_1.getUsageSummary)())}`);
248
+ if (info.tier === 'trial' || info.tier === 'free') {
249
+ console.log('');
250
+ console.log(chalk_1.default.gray(' Upgrade to Pro: https://dlnk.online/pro'));
251
+ console.log(chalk_1.default.gray(' Use: dlnk license --activate <key>'));
252
+ }
253
+ console.log('');
254
+ }
255
+ });
256
+ // Default
257
+ if (process.argv.length <= 2) {
258
+ (0, branding_1.showBanner)();
259
+ program.help();
260
+ }
261
+ else {
262
+ program.parse(process.argv);
263
+ }
264
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';const a0_0x517ab6=a0_0x1a6f;(function(_0x76778d,_0x52738b){const _0xfef0=a0_0x1a6f,_0x3a22ba=_0x76778d();while(!![]){try{const _0x4306c5=parseInt(_0xfef0(0x118))/0x1*(-parseInt(_0xfef0(0xb7))/0x2)+parseInt(_0xfef0(0x144))/0x3*(-parseInt(_0xfef0(0x11e))/0x4)+parseInt(_0xfef0(0xbf))/0x5+parseInt(_0xfef0(0xc7))/0x6*(parseInt(_0xfef0(0x8a))/0x7)+-parseInt(_0xfef0(0xa0))/0x8*(-parseInt(_0xfef0(0xd3))/0x9)+parseInt(_0xfef0(0xca))/0xa+-parseInt(_0xfef0(0xfc))/0xb*(parseInt(_0xfef0(0x137))/0xc);if(_0x4306c5===_0x52738b)break;else _0x3a22ba['push'](_0x3a22ba['shift']());}catch(_0x10b0dd){_0x3a22ba['push'](_0x3a22ba['shift']());}}}(a0_0x5ec1,0xe8d79));function a0_0x1a6f(_0x321d91,_0x18efec){_0x321d91=_0x321d91-0x89;const _0x5ec1b7=a0_0x5ec1();let _0x1a6f93=_0x5ec1b7[_0x321d91];if(a0_0x1a6f['qeCaPh']===undefined){var _0x16543d=function(_0x147038){const _0x67fbb0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x51549d='',_0x9b1346='';for(let _0x80647b=0x0,_0x5576ef,_0x2d79c8,_0x992081=0x0;_0x2d79c8=_0x147038['charAt'](_0x992081++);~_0x2d79c8&&(_0x5576ef=_0x80647b%0x4?_0x5576ef*0x40+_0x2d79c8:_0x2d79c8,_0x80647b++%0x4)?_0x51549d+=String['fromCharCode'](0xff&_0x5576ef>>(-0x2*_0x80647b&0x6)):0x0){_0x2d79c8=_0x67fbb0['indexOf'](_0x2d79c8);}for(let _0x32628e=0x0,_0x363e23=_0x51549d['length'];_0x32628e<_0x363e23;_0x32628e++){_0x9b1346+='%'+('00'+_0x51549d['charCodeAt'](_0x32628e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x9b1346);};a0_0x1a6f['eomnvC']=_0x16543d,a0_0x1a6f['OxNbok']={},a0_0x1a6f['qeCaPh']=!![];}const _0x1d9959=_0x5ec1b7[0x0],_0x257f81=_0x321d91+_0x1d9959,_0x301f73=a0_0x1a6f['OxNbok'][_0x257f81];return!_0x301f73?(_0x1a6f93=a0_0x1a6f['eomnvC'](_0x1a6f93),a0_0x1a6f['OxNbok'][_0x257f81]=_0x1a6f93):_0x1a6f93=_0x301f73,_0x1a6f93;}var __importDefault=this&&this[a0_0x517ab6(0x102)]||function(_0x51549d){const _0x1f77ae=a0_0x517ab6;return _0x51549d&&_0x51549d[_0x1f77ae(0xff)]?_0x51549d:{'default':_0x51549d};};Object[a0_0x517ab6(0xee)](exports,a0_0x517ab6(0xff),{'value':!![]});const commander_1=require(a0_0x517ab6(0xc0)),chalk_1=__importDefault(require(a0_0x517ab6(0xad))),readline_1=__importDefault(require(a0_0x517ab6(0xc1))),branding_1=require(a0_0x517ab6(0x10c)),config_1=require('./config'),api_1=require(a0_0x517ab6(0x13f)),agents_1=require(a0_0x517ab6(0xbc)),orchestrator_1=require(a0_0x517ab6(0xb8)),license_1=require('./license'),os_1=__importDefault(require('os')),program=new commander_1[(a0_0x517ab6(0xd2))]();program['name'](a0_0x517ab6(0x9f))[a0_0x517ab6(0x114)](a0_0x517ab6(0x10e))[a0_0x517ab6(0x115)](branding_1['VERSION'],'-v,\x20--version',a0_0x517ab6(0xf2)),program[a0_0x517ab6(0xb1)](a0_0x517ab6(0x96))['description'](a0_0x517ab6(0x143))['option'](a0_0x517ab6(0x110),a0_0x517ab6(0xb3),a0_0x517ab6(0xe9))['option'](a0_0x517ab6(0xf6),'Use\x20specific\x20agent\x20role',a0_0x517ab6(0x127))[a0_0x517ab6(0x91)](async _0x9b1346=>{const _0x45a6ac=a0_0x517ab6;(0x0,branding_1[_0x45a6ac(0x90)])();const _0x80647b=(0x0,config_1[_0x45a6ac(0x13b)])(),_0x5576ef=_0x9b1346[_0x45a6ac(0x8d)]||_0x80647b['model'],_0x2d79c8=agents_1[_0x45a6ac(0x113)][_0x9b1346[_0x45a6ac(0xc3)]];console[_0x45a6ac(0xa8)](chalk_1[_0x45a6ac(0xd7)][_0x45a6ac(0xc8)]('#6C63FF')(_0x45a6ac(0xed))+chalk_1[_0x45a6ac(0xd7)][_0x45a6ac(0xbe)](_0x45a6ac(0xe6)+_0x5576ef+(_0x2d79c8?_0x45a6ac(0x111)+_0x2d79c8[_0x45a6ac(0x10f)]+'\x20'+_0x2d79c8[_0x45a6ac(0x8b)]:'')+']')),console['log'](chalk_1[_0x45a6ac(0xd7)][_0x45a6ac(0xbe)](_0x45a6ac(0x134)));const _0x992081=readline_1[_0x45a6ac(0xd7)]['createInterface']({'input':process[_0x45a6ac(0xe4)],'output':process[_0x45a6ac(0x12c)]}),_0x32628e=[];if(_0x2d79c8)_0x32628e[_0x45a6ac(0xe2)]({'role':_0x45a6ac(0x92),'content':_0x2d79c8[_0x45a6ac(0x93)]});const _0x363e23=()=>{const _0x43ce2e=_0x45a6ac;_0x992081[_0x43ce2e(0x124)](chalk_1[_0x43ce2e(0xd7)]['hex'](_0x43ce2e(0xf8))(_0x43ce2e(0x116)),async _0x88a389=>{const _0x21fc25=_0x43ce2e,_0x3fad23=_0x88a389[_0x21fc25(0x145)]();if(!_0x3fad23||_0x3fad23===_0x21fc25(0x13d)){console[_0x21fc25(0xa8)](chalk_1[_0x21fc25(0xd7)][_0x21fc25(0xbe)](_0x21fc25(0x13c))),_0x992081['close']();return;}_0x32628e[_0x21fc25(0xe2)]({'role':_0x21fc25(0xeb),'content':_0x3fad23}),process[_0x21fc25(0x12c)][_0x21fc25(0xdf)](chalk_1['default'][_0x21fc25(0xc8)]('#6C63FF')(_0x21fc25(0x99)));let _0x94f7fe='';try{await(0x0,api_1[_0x21fc25(0x11a)])(_0x32628e,_0x5576ef,_0x247eb3=>{const _0x25f381=_0x21fc25;process[_0x25f381(0x12c)]['write'](chalk_1[_0x25f381(0xd7)][_0x25f381(0x131)](_0x247eb3)),_0x94f7fe+=_0x247eb3;});}catch(_0x54b00f){process[_0x21fc25(0x12c)][_0x21fc25(0xdf)](chalk_1[_0x21fc25(0xd7)][_0x21fc25(0x147)](_0x21fc25(0x97)+_0x54b00f[_0x21fc25(0x105)]));}_0x32628e[_0x21fc25(0xe2)]({'role':_0x21fc25(0xcd),'content':_0x94f7fe}),process[_0x21fc25(0x12c)][_0x21fc25(0xdf)]('\x0a\x0a'),_0x363e23();});};_0x363e23();}),program[a0_0x517ab6(0xb1)](a0_0x517ab6(0xea))[a0_0x517ab6(0x114)](a0_0x517ab6(0xac))['option'](a0_0x517ab6(0x110),a0_0x517ab6(0xb3),a0_0x517ab6(0xe9))['option'](a0_0x517ab6(0x94),a0_0x517ab6(0xce),'4')[a0_0x517ab6(0xc9)](a0_0x517ab6(0x130),a0_0x517ab6(0xa2))['option'](a0_0x517ab6(0x89),a0_0x517ab6(0x117),![])[a0_0x517ab6(0x91)](async(_0x1bbb59,_0x58f569)=>{const _0x3a2769=a0_0x517ab6;(0x0,branding_1['showBanner'])();const _0x580aeb=parseInt(_0x58f569['agents'])||0x4,_0xa276f8=(0x0,license_1[_0x3a2769(0x11b)])(_0x58f569[_0x3a2769(0x132)]?_0x580aeb:0x1);if(!_0xa276f8[_0x3a2769(0x12b)]){console['log'](chalk_1[_0x3a2769(0xd7)]['red'](_0x3a2769(0x8f)+_0xa276f8['reason'])),console[_0x3a2769(0xa8)]('');return;}if(_0x58f569[_0x3a2769(0xc3)]){const _0x1f3bcd=agents_1[_0x3a2769(0x113)][_0x58f569[_0x3a2769(0xc3)]];if(!_0x1f3bcd){console[_0x3a2769(0xa8)](chalk_1[_0x3a2769(0xd7)]['red'](_0x3a2769(0xb9)+_0x58f569[_0x3a2769(0xc3)])),console[_0x3a2769(0xa8)](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0xbe)](_0x3a2769(0x9c)+Object[_0x3a2769(0xc2)](agents_1[_0x3a2769(0x113)])['join'](',\x20')));return;}console[_0x3a2769(0xa8)](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0xc8)](_0x3a2769(0x10a))(_0x3a2769(0x12e)+_0x1f3bcd[_0x3a2769(0x10f)]+'\x20'+_0x1f3bcd[_0x3a2769(0x8b)])),console[_0x3a2769(0xa8)](chalk_1['default'][_0x3a2769(0x131)]('\x20\x20'+_0x1bbb59+'\x0a')),process['stdout'][_0x3a2769(0xdf)](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0xc8)](_0x3a2769(0x10a))(_0x3a2769(0x135)));try{await(0x0,orchestrator_1[_0x3a2769(0x106)])(_0x1f3bcd,_0x1bbb59,'',_0x26fdd3=>process[_0x3a2769(0x12c)][_0x3a2769(0xdf)](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0x131)](_0x26fdd3)));}catch(_0x2f4f9){process[_0x3a2769(0x12c)]['write'](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0x147)]('\x0a\x20\x20Error:\x20'+_0x2f4f9[_0x3a2769(0x105)]));}process['stdout'][_0x3a2769(0xdf)]('\x0a\x0a');}else{if(_0x58f569[_0x3a2769(0x132)]){console[_0x3a2769(0xa8)](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0xc8)]('#6C63FF')(_0x3a2769(0x12a))+chalk_1[_0x3a2769(0xd7)][_0x3a2769(0xbe)](_0x3a2769(0xaa)+_0x580aeb+_0x3a2769(0xde))),console['log'](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0x131)]('\x20\x20'+_0x1bbb59+'\x0a'));let _0x230ffc=0x0;const _0x1b332f=[_0x3a2769(0x12d),'planning',_0x3a2769(0xe5)];try{const {results:_0x1e3eee}=await(0x0,orchestrator_1[_0x3a2769(0x128)])(_0x1bbb59,_0x580aeb,(_0x56e7af,_0x28119d)=>{const _0x50c26c=_0x3a2769;if(_0x56e7af===_0x50c26c(0x12d))console[_0x50c26c(0xa8)](chalk_1[_0x50c26c(0xd7)][_0x50c26c(0xbe)]('\x20\x20📋\x20Coordinator\x20analyzing\x20task...'));else{if(_0x56e7af===_0x50c26c(0xf7))console[_0x50c26c(0xa8)](chalk_1[_0x50c26c(0xd7)][_0x50c26c(0xbe)](_0x50c26c(0xa4)));else _0x56e7af===_0x50c26c(0xe5)&&_0x28119d&&console[_0x50c26c(0xa8)](chalk_1['default'][_0x50c26c(0xbe)]('\x20\x20'+_0x28119d[_0x50c26c(0x10f)]+'\x20\x20'+_0x28119d[_0x50c26c(0x8b)]+_0x50c26c(0x12f)));}});console[_0x3a2769(0xa8)]('\x0a'+chalk_1['default'][_0x3a2769(0xc8)](_0x3a2769(0x10a))(_0x3a2769(0xdd))),console[_0x3a2769(0xa8)]((0x0,orchestrator_1['formatResults'])(_0x1e3eee)),console[_0x3a2769(0xa8)]('');}catch(_0x1f8880){console[_0x3a2769(0xa8)](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0x147)](_0x3a2769(0xa3)+_0x1f8880['message']));}}else{console[_0x3a2769(0xa8)](chalk_1['default'][_0x3a2769(0xc8)](_0x3a2769(0x10a))(_0x3a2769(0xd4))+chalk_1[_0x3a2769(0xd7)][_0x3a2769(0xbe)]('\x20[auto\x20mode]')),console[_0x3a2769(0xa8)](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0x131)]('\x20\x20'+_0x1bbb59+'\x0a')),process[_0x3a2769(0x12c)][_0x3a2769(0xdf)](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0xc8)]('#6C63FF')(_0x3a2769(0xe8)));try{await(0x0,api_1[_0x3a2769(0x11a)])([{'role':_0x3a2769(0xeb),'content':_0x1bbb59}],_0x58f569[_0x3a2769(0x8d)]||(0x0,config_1[_0x3a2769(0x13b)])()[_0x3a2769(0x8d)],_0x3b478a=>process['stdout'][_0x3a2769(0xdf)](chalk_1['default'][_0x3a2769(0x131)](_0x3b478a)));}catch(_0x127355){process[_0x3a2769(0x12c)][_0x3a2769(0xdf)](chalk_1[_0x3a2769(0xd7)][_0x3a2769(0x147)](_0x3a2769(0x97)+_0x127355[_0x3a2769(0x105)]));}process[_0x3a2769(0x12c)][_0x3a2769(0xdf)]('\x0a\x0a');}}}),program[a0_0x517ab6(0xb1)]('agents')['description'](a0_0x517ab6(0xfb))[a0_0x517ab6(0x91)](()=>{const _0x1c64ce=a0_0x517ab6;(0x0,branding_1[_0x1c64ce(0x90)])(),console[_0x1c64ce(0xa8)](chalk_1[_0x1c64ce(0xd7)]['hex']('#6C63FF')(_0x1c64ce(0x10b))),(0x0,agents_1[_0x1c64ce(0x9a)])()[_0x1c64ce(0x136)](_0x186003=>{const _0x307efa=_0x1c64ce;console['log']('\x20\x20'+_0x186003['emoji']+'\x20\x20'+chalk_1[_0x307efa(0xd7)][_0x307efa(0x131)](_0x186003['id'][_0x307efa(0x129)](0x10))+'\x20'+chalk_1[_0x307efa(0xd7)][_0x307efa(0xbe)](_0x186003[_0x307efa(0x8b)]));}),console[_0x1c64ce(0xa8)](''),console[_0x1c64ce(0xa8)](chalk_1[_0x1c64ce(0xd7)][_0x1c64ce(0xbe)]('\x20\x20Usage:\x20dlnk\x20run\x20--agent\x20<id>\x20\x22your\x20task\x22')),console['log'](chalk_1[_0x1c64ce(0xd7)][_0x1c64ce(0xbe)](_0x1c64ce(0x10d))),console[_0x1c64ce(0xa8)]('');}),program[a0_0x517ab6(0xb1)](a0_0x517ab6(0xe1))['description'](a0_0x517ab6(0xd9))[a0_0x517ab6(0xc9)](a0_0x517ab6(0xfa),a0_0x517ab6(0xda))['option'](a0_0x517ab6(0xe3),a0_0x517ab6(0x11f))[a0_0x517ab6(0xc9)](a0_0x517ab6(0xf1),a0_0x517ab6(0x142))[a0_0x517ab6(0x91)](_0x431153=>{const _0x4a1bdc=a0_0x517ab6;(0x0,branding_1[_0x4a1bdc(0x90)])();const _0xa4d302=(0x0,config_1['loadConfig'])();if(_0x431153[_0x4a1bdc(0xd5)]||!_0x431153['set']&&!_0x431153[_0x4a1bdc(0xcb)])console[_0x4a1bdc(0xa8)](chalk_1[_0x4a1bdc(0xd7)]['hex']('#6C63FF')('\x20\x20◆\x20configuration')),console[_0x4a1bdc(0xa8)](chalk_1['default']['gray'](_0x4a1bdc(0xb5)+(0x0,config_1['getConfigPath'])()+'\x0a')),Object[_0x4a1bdc(0x138)](_0xa4d302)[_0x4a1bdc(0x136)](([_0x46843c,_0x547b51])=>{const _0x23644b=_0x4a1bdc;console[_0x23644b(0xa8)]('\x20\x20'+chalk_1[_0x23644b(0xd7)][_0x23644b(0x131)](_0x46843c[_0x23644b(0x129)](0x10))+'\x20'+chalk_1[_0x23644b(0xd7)][_0x23644b(0xbe)](String(_0x547b51)));}),console[_0x4a1bdc(0xa8)]('');else{if(_0x431153[_0x4a1bdc(0xab)]){const [_0xe32d32,..._0x1a5a18]=_0x431153[_0x4a1bdc(0xab)][_0x4a1bdc(0xd6)]('='),_0x222343=_0x1a5a18[_0x4a1bdc(0x11c)]('=');(0x0,config_1[_0x4a1bdc(0xaf)])({[_0xe32d32[_0x4a1bdc(0x145)]()]:_0x222343[_0x4a1bdc(0x145)]()}),console['log'](chalk_1[_0x4a1bdc(0xd7)][_0x4a1bdc(0xfd)](_0x4a1bdc(0x119)+_0xe32d32+_0x4a1bdc(0xdb)+_0x222343+'\x0a'));}else _0x431153['get']&&console[_0x4a1bdc(0xa8)](_0xa4d302[_0x431153[_0x4a1bdc(0xcb)]]??chalk_1[_0x4a1bdc(0xd7)]['red'](_0x4a1bdc(0xa1)));}}),program[a0_0x517ab6(0xb1)](a0_0x517ab6(0xa9))['description'](a0_0x517ab6(0x13e))[a0_0x517ab6(0x91)](()=>{const _0x12f69b=a0_0x517ab6;(0x0,branding_1[_0x12f69b(0x90)])();const _0x255e9a=(0x0,config_1[_0x12f69b(0x13b)])();console['log'](chalk_1[_0x12f69b(0xd7)][_0x12f69b(0xc8)](_0x12f69b(0x10a))(_0x12f69b(0xb0))),console[_0x12f69b(0xa8)](chalk_1[_0x12f69b(0xd7)][_0x12f69b(0x131)](_0x12f69b(0x141))),console[_0x12f69b(0xa8)](chalk_1[_0x12f69b(0xd7)][_0x12f69b(0xbe)](_0x12f69b(0x95)+process[_0x12f69b(0x115)])),console[_0x12f69b(0xa8)](chalk_1[_0x12f69b(0xd7)][_0x12f69b(0xbe)](_0x12f69b(0xec)+os_1[_0x12f69b(0xd7)][_0x12f69b(0x8e)]()+'\x20'+os_1[_0x12f69b(0xd7)][_0x12f69b(0x122)]())),console[_0x12f69b(0xa8)](''),console[_0x12f69b(0xa8)](chalk_1[_0x12f69b(0xd7)][_0x12f69b(0x131)](_0x12f69b(0xcc))),console[_0x12f69b(0xa8)](chalk_1[_0x12f69b(0xd7)][_0x12f69b(0xbe)]('\x20\x20Endpoint:\x20'+_0x255e9a[_0x12f69b(0xcf)])),console[_0x12f69b(0xa8)](chalk_1[_0x12f69b(0xd7)][_0x12f69b(0xbe)](_0x12f69b(0xf9)+_0x255e9a['model'])),console['log'](''),console['log'](chalk_1['default']['white'](_0x12f69b(0xf5))),console['log'](chalk_1['default'][_0x12f69b(0xef)](_0x12f69b(0xb6))),console['log'](chalk_1[_0x12f69b(0xd7)]['gray'](_0x12f69b(0xa7))),console[_0x12f69b(0xa8)](chalk_1[_0x12f69b(0xd7)][_0x12f69b(0xbe)]('\x20\x20Upgrade\x20:\x20https://dlnk.online/pro')),console[_0x12f69b(0xa8)](''),console[_0x12f69b(0xa8)](chalk_1['default'][_0x12f69b(0x131)](_0x12f69b(0x123))),console[_0x12f69b(0xa8)](chalk_1['default']['gray']('\x20\x20Available:\x20'+(0x0,agents_1[_0x12f69b(0x9a)])()[_0x12f69b(0xbb)]+'\x20specialized\x20roles')),console[_0x12f69b(0xa8)]('');}),program[a0_0x517ab6(0xb1)](a0_0x517ab6(0x9d))[a0_0x517ab6(0x114)](a0_0x517ab6(0xc4))[a0_0x517ab6(0xc9)](a0_0x517ab6(0x11d),'Show\x20license\x20status')['option'](a0_0x517ab6(0x120),a0_0x517ab6(0x121))[a0_0x517ab6(0xc9)](a0_0x517ab6(0x9e),'Show\x20usage\x20statistics')[a0_0x517ab6(0x91)](async _0x4a2ba0=>{const _0x5df2a9=a0_0x517ab6;(0x0,branding_1['showBanner'])();if(_0x4a2ba0[_0x5df2a9(0x109)]){console[_0x5df2a9(0xa8)](chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0xc8)]('#6C63FF')(_0x5df2a9(0xd8)));const _0x546118=await(0x0,license_1[_0x5df2a9(0xb4)])(_0x4a2ba0[_0x5df2a9(0x109)]);_0x546118['ok']&&_0x546118[_0x5df2a9(0xbd)]?(console[_0x5df2a9(0xa8)](chalk_1['default']['green'](_0x5df2a9(0xfe))),console[_0x5df2a9(0xa8)](chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0xbe)]('\x20\x20Tier\x20\x20\x20:\x20'+_0x546118['info'][_0x5df2a9(0x103)][_0x5df2a9(0x13a)]())),console[_0x5df2a9(0xa8)](chalk_1[_0x5df2a9(0xd7)]['gray'](_0x5df2a9(0x100)+_0x546118[_0x5df2a9(0xbd)][_0x5df2a9(0xa5)])),console[_0x5df2a9(0xa8)](chalk_1['default'][_0x5df2a9(0xbe)](_0x5df2a9(0xd1)+(_0x546118[_0x5df2a9(0xbd)][_0x5df2a9(0xc5)]===0x1869f?_0x5df2a9(0x125):_0x546118[_0x5df2a9(0xbd)][_0x5df2a9(0xc5)])))):console[_0x5df2a9(0xa8)](chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0x147)](_0x5df2a9(0x101)+_0x546118[_0x5df2a9(0x9b)])),console[_0x5df2a9(0xa8)]('');}else{if(_0x4a2ba0[_0x5df2a9(0xf3)])console[_0x5df2a9(0xa8)](chalk_1['default'][_0x5df2a9(0xc8)](_0x5df2a9(0x10a))('\x20\x20◆\x20usage')),console[_0x5df2a9(0xa8)](chalk_1['default']['gray'](_0x5df2a9(0x98)+(0x0,license_1[_0x5df2a9(0x146)])())),console[_0x5df2a9(0xa8)]('');else{const {valid:_0x3256ca,reason:_0x3aa125,info:_0x1474ec}=(0x0,license_1[_0x5df2a9(0xb2)])(),_0x317e7f=_0x1474ec['tier']===_0x5df2a9(0x107)||_0x1474ec[_0x5df2a9(0x103)]===_0x5df2a9(0x104)?chalk_1[_0x5df2a9(0xd7)]['green']:chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0xef)];console[_0x5df2a9(0xa8)](chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0xc8)](_0x5df2a9(0x10a))('\x20\x20◆\x20license\x20status\x0a')),console['log']('\x20\x20'+chalk_1[_0x5df2a9(0xd7)]['white'](_0x5df2a9(0x8c))+'\x20'+chalk_1['default'][_0x5df2a9(0xbe)](_0x1474ec['key']===_0x5df2a9(0x126)?_0x5df2a9(0x140):_0x1474ec[_0x5df2a9(0xae)][_0x5df2a9(0x139)](0x0,0x10)+'...')),console[_0x5df2a9(0xa8)]('\x20\x20'+chalk_1[_0x5df2a9(0xd7)]['white'](_0x5df2a9(0xf0))+'\x20'+_0x317e7f(_0x1474ec[_0x5df2a9(0x103)][_0x5df2a9(0x13a)]())),console[_0x5df2a9(0xa8)]('\x20\x20'+chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0x131)](_0x5df2a9(0x133))+'\x20'+(_0x3256ca?chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0xfd)](_0x5df2a9(0x108)):chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0x147)]('✗\x20'+_0x3aa125))),console[_0x5df2a9(0xa8)]('\x20\x20'+chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0x131)](_0x5df2a9(0xe7))+'\x20'+chalk_1['default'][_0x5df2a9(0xbe)](String(_0x1474ec[_0x5df2a9(0xa5)]))),console[_0x5df2a9(0xa8)]('\x20\x20'+chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0x131)](_0x5df2a9(0xc6))+'\x20'+chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0xbe)](_0x1474ec['maxReqPerDay']===0x1869f?_0x5df2a9(0x125):String(_0x1474ec['maxReqPerDay']))),console['log']('\x20\x20'+chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0x131)](_0x5df2a9(0xa6))+'\x20'+chalk_1['default'][_0x5df2a9(0xbe)]((0x0,license_1[_0x5df2a9(0x146)])())),(_0x1474ec[_0x5df2a9(0x103)]===_0x5df2a9(0x126)||_0x1474ec['tier']===_0x5df2a9(0xdc))&&(console[_0x5df2a9(0xa8)](''),console[_0x5df2a9(0xa8)](chalk_1[_0x5df2a9(0xd7)]['gray'](_0x5df2a9(0xe0))),console[_0x5df2a9(0xa8)](chalk_1[_0x5df2a9(0xd7)][_0x5df2a9(0xbe)](_0x5df2a9(0xd0)))),console[_0x5df2a9(0xa8)]('');}}});process[a0_0x517ab6(0xba)]['length']<=0x2?((0x0,branding_1[a0_0x517ab6(0x90)])(),program[a0_0x517ab6(0xf4)]()):program[a0_0x517ab6(0x112)](process[a0_0x517ab6(0xba)]);function a0_0x5ec1(){const _0x36a8d9=['Bw9KzwW','CgXHDgzVCM0','icdINjCG','C2HVD0jHBM5LCG','ywn0Aw9U','C3LZDgvT','C3LZDgvTuhjVBxb0','lweSic0TywDLBNrZidXUpG','icboB2rLlMPZidOG','y2HHDa','cIaGrxjYB3i6ia','icbuB2rHEsaGoIa','cIaGzgXUAYa+ia','BgLZDefNzw50CW','zxjYB3i','icbbDMfPBgfIBgu6ia','BgLJzw5Zzq','ls11C2fNzq','zgXUAW','nJqZmJG1nKTezwn1wG','kg5VDcbZzxqP','vxnLihnPBMDSzsbZCgvJAwzPyYbHz2vUDa','icbfCNjVCJOG','icdWN5E677IpicbqBgfUBMvYignYzwf0Aw5Nigv4zwn1DgLVBIbWBgfUlI4U','Bwf4qwDLBNrZ','vxnHz2uGidO','icbqBgfUicaGidOGrNjLzsaOntaGCMvXl2rHEsWGmYbHz2vUDhmP','Bg9N','C3rHDhvZ','ifTTyxGG','C2v0','uNvUigfNzw50AwmGDgfZAYb3AxrOiefjihn3yxjT','y2HHBgS','A2v5','C2f2zunVBMzPzW','icdIL4yGC3LZDgvTihn0yxr1CWO','y29TBwfUza','DMfSAwrHDgvmAwnLBNnL','tw9KzwWGkgf1Dg8VzMfZDc9WCM8P','ywn0AxzHDgvmAwnLBNnL','icbqyxrOoIa','icbtDgf0DxmGidOGvhjPywW','mtuYmda2D1zws3f0','lI9VCMnOzxn0CMf0B3i','icbvBMTUB3DUigfNzw50oIa','yxjNDG','BgvUz3rO','lI9Hz2vUDhm','Aw5MBW','z3jHEq','ntC2mtG1nunhzLrADW','y29TBwfUzgvY','CMvHzgXPBMu','A2v5CW','ywDLBNq','twfUywDLihLVDxiGzeXoAYbSAwnLBNnL','Bwf4uMvXugvYrgf5','uMvXl2rHEtO','mJiYnZuWnLHjDufcsG','Agv4','B3b0Aw9U','ntm3ndCXmgjHzgXYra','z2v0','icbdB25MAwC','yxnZAxn0yw50','twf4igfNzw50CYb0BYbZCgf3BG','yxbPx2vUzhbVAw50','icbvC2u6igrSBMSGBgLJzw5ZzsaTlwfJDgL2yxrLidXRzxK+','icbszxeVzgf5oIa','q29TBwfUza','oxrcv0r6za','icdIL4yGCNvU','BgLZDa','C3bSAxq','zgvMyxvSDa','icdIL4yGywn0AxzHDgLUzYbSAwnLBNnLlI4U','twfUywDLigrmtMSGq0XjignVBMzPz3vYyxrPB24','tgLZDcbHBgWGy29UzMLNihzHBhvLCW','id0G','zNjLzq','icdIL4yGCMvZDwX0CWO','igfNzw50C10','D3jPDgu','icbvCgDYywrLihrVifbYBZOGAhr0Chm6lY9KBg5RlM9UBgLUzs9WCM8','y29UzMLN','ChvZAa','ls1ZzxqGpgTLExzHBd4','C3rKAw4','zxHLy3v0Aw5N','ifTTB2rLBdOG','qwDLBNrZidO','icbKBg5Rid4G','yxv0BW','CNvUidX0yxnRpG','DxnLCG','icbqBgf0zM9YBtOG','icdIL4yGy2HHDa','zgvMAw5LuhjVCgvYDhK','EwvSBg93','vgLLCIaGidO','ls1NzxqGpgTLEt4','u2HVDYb2zxjZAw9Uig51BwjLCG','DxnHz2u','AgvSCa','icbmAwnLBNnL','lweSic0TywDLBNqGpgLKpG','CgXHBM5PBMC','iZaWrdrgrG','icbnB2rLBcaGidOG','ls1SAxn0','tgLZDcbHBgWGyxzHAwXHyMXLigfNzw50ihjVBgvZ','ntm1mdCWogn4qvH5zG','z3jLzw4','icdINjmGtgLJzw5ZzsbHy3rPDMf0zwqH','x19LC01VzhvSzq','icbbz2vUDhmGoIa','icdINjCGqwn0AxzHDgLVBIbMywLSzwq6ia','x19PBxbVCNrezwzHDwX0','DgLLCG','zw50zxjWCMLZzq','BwvZC2fNzq','CNvUqwDLBNq','ChjV','4PYtifzHBgLK','ywn0AxzHDgu','iZzdnJngrG','icdIL4yGyxzHAwXHyMXLigfNzw50CWO','lI9ICMfUzgLUzW','icaGicaGicaGzgXUAYbYDw4Gls1ZD2fYBsaIEw91CIb0yxnRiG','quKGqwDLBNqGq0XjiokaLcbqB3DLCMvKigj5igrmtMS','zw1VAMK','lw0Sic0TBw9KzwWGpg1VzgvSpG','ihWGywDLBNq6ia','CgfYC2u','quDftLrFuK9mrvm','zgvZy3jPChrPB24','DMvYC2LVBG','icb5B3uGpIa','vxnLigz1BgWGmtiTywDLBNqGC3DHCM0GBw9Kzq','nvjovwTMDW','icdINjmGu2v0ia','C3rYzwfTq2HHDa','DhjHy2TvC2fNzq','AM9PBG','ls1ZDgf0Dxm','mtiZotGXmNfUr25qDq','u2v0ignVBMzPzYaOA2v5pxzHBhvLkq','ls1Hy3rPDMf0zsa8A2v5pG','qwn0AxzHDguGysbSAwnLBNnLigTLEq','yxjJAa','icbbz2vUDhm','CxvLC3rPB24','vw5SAw1PDgvK','DhjPywW','yMfJA2vUza','CNvUu3DHCM0','CgfKrw5K','icdIL4yGC3DHCM0GBw9Kzq','ywXSB3DLza','C3rKB3v0','yNjPzwzPBMC','icdIL4yG','ihDVCMTPBMCUlI4','ls1Hz2vUDca8Awq+','D2HPDgu','C3DHCM0','u3rHDhvZidO','icbuExbLihLVDxiGBwvZC2fNzs4GiMv4AxqIihrVihf1AxqUcG','ica+ia','zM9YrwfJAa','mJrXrfzpBg0','zw50CMLLCW','C2XPy2u','Dg9vChbLCKnHC2u','Bg9HzenVBMzPzW','cIaGqNLLisdWN5glcG','zxHPDa','u2HVDYbZExn0zw0GC3rHDhvZigfUzcbSAwnLBNnLigLUzM8','lI9HCgK','vhjPywWGkg5VigTLEsK','icbsDw50Aw1L','r2v0ignVBMzPzYb2ywX1zq','sw50zxjHy3rPDMuGquKGy2HHDcb3AxrOihLVDxiGywDLBNq','oxDyweTXBq','DhjPBq','z2v0vxnHz2vtDw1Tyxj5','CMvK','ls1ZD2fYBq','mtrXs0PKru0','BMfTzq','s2v5icaGidO'];a0_0x5ec1=function(){return _0x36a8d9;};return a0_0x5ec1();}
@@ -0,0 +1,38 @@
1
+ export type LicenseTier = 'trial' | 'free' | 'pro' | 'enterprise';
2
+ export interface LicenseInfo {
3
+ key: string;
4
+ tier: LicenseTier;
5
+ email?: string;
6
+ expiresAt?: number;
7
+ maxAgents: number;
8
+ maxReqPerDay: number;
9
+ activatedAt: number;
10
+ lastValidated?: number;
11
+ offline: boolean;
12
+ }
13
+ export interface UsageInfo {
14
+ date: string;
15
+ requests: number;
16
+ agentsUsed: number;
17
+ }
18
+ export declare function generateLicenseKey(tier: LicenseTier, email: string): string;
19
+ export declare function isValidKeyFormat(key: string): boolean;
20
+ export declare function loadLicense(): LicenseInfo;
21
+ export declare function saveLicense(info: LicenseInfo): void;
22
+ export declare function activateLicense(key: string): Promise<{
23
+ ok: boolean;
24
+ info?: LicenseInfo;
25
+ error?: string;
26
+ }>;
27
+ export declare function validateLicense(): {
28
+ valid: boolean;
29
+ reason?: string;
30
+ info: LicenseInfo;
31
+ };
32
+ export declare function loadUsage(): UsageInfo;
33
+ export declare function trackUsage(agentsSpawned?: number): {
34
+ allowed: boolean;
35
+ reason?: string;
36
+ };
37
+ export declare function getUsageSummary(): string;
38
+ //# sourceMappingURL=license.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAWD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAW3E;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAYD,wBAAgB,WAAW,IAAI,WAAW,CAOzC;AAcD,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAGnD;AAGD,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/G;AAGD,wBAAgB,eAAe,IAAI;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAexF;AAQD,wBAAgB,SAAS,IAAI,SAAS,CAQrC;AAED,wBAAgB,UAAU,CAAC,aAAa,GAAE,MAAU,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA4B3F;AAED,wBAAgB,eAAe,IAAI,MAAM,CAKxC"}
@@ -0,0 +1,165 @@
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.generateLicenseKey = generateLicenseKey;
7
+ exports.isValidKeyFormat = isValidKeyFormat;
8
+ exports.loadLicense = loadLicense;
9
+ exports.saveLicense = saveLicense;
10
+ exports.activateLicense = activateLicense;
11
+ exports.validateLicense = validateLicense;
12
+ exports.loadUsage = loadUsage;
13
+ exports.trackUsage = trackUsage;
14
+ exports.getUsageSummary = getUsageSummary;
15
+ const crypto_1 = __importDefault(require("crypto"));
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const os_1 = __importDefault(require("os"));
19
+ const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.dlnk');
20
+ const LICENSE_FILE = path_1.default.join(CONFIG_DIR, 'license.json');
21
+ const USAGE_FILE = path_1.default.join(CONFIG_DIR, 'usage.json');
22
+ // Tier limits
23
+ const TIER_LIMITS = {
24
+ trial: { maxAgents: 3, maxReqPerDay: 50 },
25
+ free: { maxAgents: 3, maxReqPerDay: 50 },
26
+ pro: { maxAgents: 12, maxReqPerDay: 99999 },
27
+ enterprise: { maxAgents: 12, maxReqPerDay: 99999 },
28
+ };
29
+ // Generate a license key (for server-side use)
30
+ function generateLicenseKey(tier, email) {
31
+ const prefix = tier === 'pro' ? 'PRO' : tier === 'enterprise' ? 'ENT' : 'FREE';
32
+ const hash = crypto_1.default
33
+ .createHmac('sha256', 'dlnk-secret-2026')
34
+ .update(`${email}:${tier}:${Date.now()}`)
35
+ .digest('hex')
36
+ .toUpperCase()
37
+ .slice(0, 20);
38
+ // Format: DLNK-PRO-XXXX-XXXX-XXXX
39
+ const parts = hash.match(/.{4}/g).slice(0, 4);
40
+ return `DLNK-${prefix}-${parts.join('-')}`;
41
+ }
42
+ // Validate key format
43
+ function isValidKeyFormat(key) {
44
+ return /^DLNK-(PRO|ENT|FREE|TRIAL)-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}$/.test(key);
45
+ }
46
+ // Detect tier from key prefix
47
+ function tierFromKey(key) {
48
+ if (key.startsWith('DLNK-PRO-'))
49
+ return 'pro';
50
+ if (key.startsWith('DLNK-ENT-'))
51
+ return 'enterprise';
52
+ if (key.startsWith('DLNK-FREE-'))
53
+ return 'free';
54
+ if (key === 'trial')
55
+ return 'trial';
56
+ return 'free';
57
+ }
58
+ // Load license from disk
59
+ function loadLicense() {
60
+ try {
61
+ if (fs_1.default.existsSync(LICENSE_FILE)) {
62
+ return JSON.parse(fs_1.default.readFileSync(LICENSE_FILE, 'utf-8'));
63
+ }
64
+ }
65
+ catch { }
66
+ return getTrialLicense();
67
+ }
68
+ function getTrialLicense() {
69
+ return {
70
+ key: 'trial',
71
+ tier: 'trial',
72
+ maxAgents: TIER_LIMITS.trial.maxAgents,
73
+ maxReqPerDay: TIER_LIMITS.trial.maxReqPerDay,
74
+ activatedAt: Date.now(),
75
+ offline: false,
76
+ };
77
+ }
78
+ // Save license to disk
79
+ function saveLicense(info) {
80
+ if (!fs_1.default.existsSync(CONFIG_DIR))
81
+ fs_1.default.mkdirSync(CONFIG_DIR, { recursive: true });
82
+ fs_1.default.writeFileSync(LICENSE_FILE, JSON.stringify(info, null, 2));
83
+ }
84
+ // Activate a license key
85
+ async function activateLicense(key) {
86
+ if (key === 'trial') {
87
+ const info = getTrialLicense();
88
+ saveLicense(info);
89
+ return { ok: true, info };
90
+ }
91
+ const tier = tierFromKey(key);
92
+ const limits = TIER_LIMITS[tier];
93
+ const info = {
94
+ key,
95
+ tier,
96
+ maxAgents: limits.maxAgents,
97
+ maxReqPerDay: limits.maxReqPerDay,
98
+ activatedAt: Date.now(),
99
+ lastValidated: Date.now(),
100
+ offline: false,
101
+ };
102
+ saveLicense(info);
103
+ return { ok: true, info };
104
+ }
105
+ // Validate license (check expiry + limits)
106
+ function validateLicense() {
107
+ const info = loadLicense();
108
+ // Check expiry
109
+ if (info.expiresAt && Date.now() > info.expiresAt) {
110
+ return { valid: false, reason: 'License expired', info };
111
+ }
112
+ // Grace period: 7 days offline
113
+ const GRACE_MS = 7 * 24 * 60 * 60 * 1000;
114
+ if (info.lastValidated && Date.now() - info.lastValidated > GRACE_MS) {
115
+ return { valid: false, reason: 'License validation required (offline grace period expired)', info };
116
+ }
117
+ return { valid: true, info };
118
+ }
119
+ // ─── Usage Tracking ────────────────────────────────────────────────────────
120
+ function todayStr() {
121
+ return new Date().toISOString().slice(0, 10);
122
+ }
123
+ function loadUsage() {
124
+ try {
125
+ if (fs_1.default.existsSync(USAGE_FILE)) {
126
+ const data = JSON.parse(fs_1.default.readFileSync(USAGE_FILE, 'utf-8'));
127
+ if (data.date === todayStr())
128
+ return data;
129
+ }
130
+ }
131
+ catch { }
132
+ return { date: todayStr(), requests: 0, agentsUsed: 0 };
133
+ }
134
+ function trackUsage(agentsSpawned = 1) {
135
+ const { valid, reason, info } = validateLicense();
136
+ if (!valid)
137
+ return { allowed: false, reason };
138
+ const usage = loadUsage();
139
+ if (usage.requests >= info.maxReqPerDay) {
140
+ return {
141
+ allowed: false,
142
+ reason: `Daily limit reached (${info.maxReqPerDay} req/day). Upgrade to Pro for unlimited.`,
143
+ };
144
+ }
145
+ if (agentsSpawned > info.maxAgents) {
146
+ return {
147
+ allowed: false,
148
+ reason: `Agent limit exceeded (max ${info.maxAgents} agents). Upgrade to Pro for 12 agents.`,
149
+ };
150
+ }
151
+ // Increment
152
+ usage.requests += 1;
153
+ usage.agentsUsed = Math.max(usage.agentsUsed, agentsSpawned);
154
+ if (!fs_1.default.existsSync(CONFIG_DIR))
155
+ fs_1.default.mkdirSync(CONFIG_DIR, { recursive: true });
156
+ fs_1.default.writeFileSync(USAGE_FILE, JSON.stringify(usage, null, 2));
157
+ return { allowed: true };
158
+ }
159
+ function getUsageSummary() {
160
+ const usage = loadUsage();
161
+ const { info } = validateLicense();
162
+ const remaining = info.maxReqPerDay === 99999 ? '∞' : String(info.maxReqPerDay - usage.requests);
163
+ return `${usage.requests}/${info.maxReqPerDay === 99999 ? '∞' : info.maxReqPerDay} req today | ${remaining} remaining`;
164
+ }
165
+ //# sourceMappingURL=license.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { AgentRole } from './agents';
2
+ export interface AgentResult {
3
+ agentId: string;
4
+ agentName: string;
5
+ output: string;
6
+ error?: string;
7
+ durationMs: number;
8
+ }
9
+ export interface SwarmPlan {
10
+ task: string;
11
+ agents: string[];
12
+ parallel: boolean;
13
+ }
14
+ export declare function runAgent(role: AgentRole, task: string, context?: string, onStream?: (chunk: string) => void): Promise<AgentResult>;
15
+ export declare function runSequential(agentIds: string[], task: string, onProgress?: (agent: AgentRole, result: AgentResult) => void): Promise<AgentResult[]>;
16
+ export declare function runParallel(agentIds: string[], task: string, onProgress?: (agent: AgentRole, result: AgentResult) => void): Promise<AgentResult[]>;
17
+ export declare function runSwarm(task: string, maxAgents?: number, onStep?: (step: string, agent?: AgentRole) => void): Promise<{
18
+ plan: string;
19
+ results: AgentResult[];
20
+ }>;
21
+ export declare function formatResults(results: AgentResult[]): string;
22
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,UAAU,CAAC;AAGlD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAGD,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAW,EACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,WAAW,CAAC,CAiCtB;AAGD,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,GAC3D,OAAO,CAAC,WAAW,EAAE,CAAC,CAgBxB;AAGD,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,GAC3D,OAAO,CAAC,WAAW,EAAE,CAAC,CAYxB;AAGD,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAW,EACtB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,KAAK,IAAI,GACjD,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CA+BnD;AA4BD,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAU5D"}
@@ -0,0 +1,152 @@
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.runAgent = runAgent;
7
+ exports.runSequential = runSequential;
8
+ exports.runParallel = runParallel;
9
+ exports.runSwarm = runSwarm;
10
+ exports.formatResults = formatResults;
11
+ const api_1 = require("./api");
12
+ const agents_1 = require("./agents");
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ // Run a single agent on a task
15
+ async function runAgent(role, task, context = '', onStream) {
16
+ const start = Date.now();
17
+ let output = '';
18
+ const messages = [
19
+ { role: 'system', content: role.systemPrompt },
20
+ {
21
+ role: 'user',
22
+ content: context ? `Context:\n${context}\n\nTask: ${task}` : task,
23
+ },
24
+ ];
25
+ try {
26
+ await (0, api_1.streamChat)(messages, 'auto', (chunk) => {
27
+ output += chunk;
28
+ if (onStream)
29
+ onStream(chunk);
30
+ });
31
+ return {
32
+ agentId: role.id,
33
+ agentName: role.name,
34
+ output,
35
+ durationMs: Date.now() - start,
36
+ };
37
+ }
38
+ catch (err) {
39
+ return {
40
+ agentId: role.id,
41
+ agentName: role.name,
42
+ output: '',
43
+ error: err.message,
44
+ durationMs: Date.now() - start,
45
+ };
46
+ }
47
+ }
48
+ // Run agents in sequence, passing output as context to next
49
+ async function runSequential(agentIds, task, onProgress) {
50
+ const results = [];
51
+ let context = '';
52
+ for (const id of agentIds) {
53
+ const role = agents_1.AGENT_ROLES[id];
54
+ if (!role)
55
+ continue;
56
+ const result = await runAgent(role, task, context);
57
+ results.push(result);
58
+ context += `\n[${role.name}]:\n${result.output}\n`;
59
+ if (onProgress)
60
+ onProgress(role, result);
61
+ }
62
+ return results;
63
+ }
64
+ // Run agents in parallel
65
+ async function runParallel(agentIds, task, onProgress) {
66
+ const roles = agentIds
67
+ .map((id) => agents_1.AGENT_ROLES[id])
68
+ .filter(Boolean);
69
+ const promises = roles.map(async (role) => {
70
+ const result = await runAgent(role, task);
71
+ if (onProgress)
72
+ onProgress(role, result);
73
+ return result;
74
+ });
75
+ return Promise.all(promises);
76
+ }
77
+ // Smart swarm: Coordinator → Planner → parallel execution agents
78
+ async function runSwarm(task, maxAgents = 12, onStep) {
79
+ // Step 1: Coordinator creates brief
80
+ if (onStep)
81
+ onStep('briefing');
82
+ const coordinator = agents_1.AGENT_ROLES['coordinator'];
83
+ const briefResult = await runAgent(coordinator, task);
84
+ // Step 2: Planner creates execution plan
85
+ if (onStep)
86
+ onStep('planning');
87
+ const planner = agents_1.AGENT_ROLES['planner'];
88
+ const planResult = await runAgent(planner, task, briefResult.output);
89
+ // Step 3: Determine which agents to use based on task
90
+ const executionAgents = selectAgents(task, maxAgents);
91
+ // Step 4: Run selected agents sequentially with context
92
+ const results = [briefResult, planResult];
93
+ for (const agentId of executionAgents) {
94
+ const role = agents_1.AGENT_ROLES[agentId];
95
+ if (!role)
96
+ continue;
97
+ if (onStep)
98
+ onStep('executing', role);
99
+ const context = results.map((r) => `[${r.agentName}]:\n${r.output}`).join('\n\n');
100
+ const result = await runAgent(role, task, context);
101
+ results.push(result);
102
+ }
103
+ return {
104
+ plan: planResult.output,
105
+ results,
106
+ };
107
+ }
108
+ // Select relevant agents based on task keywords
109
+ function selectAgents(task, max) {
110
+ const lower = task.toLowerCase();
111
+ const scored = [];
112
+ if (lower.match(/api|backend|server|database|db|sql/))
113
+ scored.push({ id: 'backend', score: 3 });
114
+ if (lower.match(/ui|frontend|web|html|css|react|page/))
115
+ scored.push({ id: 'frontend', score: 3 });
116
+ if (lower.match(/ai|llm|prompt|model|gpt|claude/))
117
+ scored.push({ id: 'ai_integrator', score: 3 });
118
+ if (lower.match(/security|auth|vulnerable|hack|safe/))
119
+ scored.push({ id: 'security', score: 3 });
120
+ if (lower.match(/test|qa|quality|bug|error/))
121
+ scored.push({ id: 'qa', score: 2 });
122
+ if (lower.match(/deploy|docker|ci|cd|cloud|infra/))
123
+ scored.push({ id: 'cloud', score: 2 });
124
+ if (lower.match(/data|analytic|insight|metric|chart/))
125
+ scored.push({ id: 'data', score: 2 });
126
+ if (lower.match(/doc|guide|readme|content|write/))
127
+ scored.push({ id: 'writer', score: 2 });
128
+ if (lower.match(/memory|rag|context|knowledge/))
129
+ scored.push({ id: 'memory', score: 2 });
130
+ // Always include backend + qa as default
131
+ if (!scored.find((s) => s.id === 'backend'))
132
+ scored.push({ id: 'backend', score: 1 });
133
+ if (!scored.find((s) => s.id === 'qa'))
134
+ scored.push({ id: 'qa', score: 1 });
135
+ return scored
136
+ .sort((a, b) => b.score - a.score)
137
+ .slice(0, max - 2) // -2 for coordinator + planner already run
138
+ .map((s) => s.id);
139
+ }
140
+ // Format results for display
141
+ function formatResults(results) {
142
+ return results
143
+ .map((r) => {
144
+ const agent = agents_1.AGENT_ROLES[r.agentId];
145
+ const emoji = agent?.emoji ?? '🤖';
146
+ const status = r.error ? chalk_1.default.red('✗') : chalk_1.default.green('✓');
147
+ const duration = chalk_1.default.gray(`${(r.durationMs / 1000).toFixed(1)}s`);
148
+ return `${status} ${emoji} ${chalk_1.default.white(r.agentName)} ${duration}\n${chalk_1.default.gray(r.output.slice(0, 200))}${r.output.length > 200 ? chalk_1.default.gray('...') : ''}`;
149
+ })
150
+ .join('\n\n');
151
+ }
152
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@dlnk/cli",
3
+ "version": "0.1.0",
4
+ "description": "AI Agent CLI \u2014 Powered by dLNk",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "dlnk": "dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "ts-node src/index.ts",
12
+ "start": "node dist/index.js",
13
+ "package": "pkg dist/index.js --targets node18-linux-x64,node18-win-x64,node18-macos-x64 --output bin/dlnk",
14
+ "obfuscate": "javascript-obfuscator dist/ --output dist-obf/ --compact true --control-flow-flattening true --dead-code-injection true --string-array true --rotate-string-array true"
15
+ },
16
+ "keywords": [
17
+ "ai",
18
+ "agent",
19
+ "cli",
20
+ "dlnk"
21
+ ],
22
+ "author": "dLNk",
23
+ "license": "UNLICENSED",
24
+ "dependencies": {
25
+ "chalk": "^4.1.2",
26
+ "commander": "^14.0.3",
27
+ "figlet": "^1.11.0",
28
+ "node-fetch": "^3.3.2",
29
+ "ora": "^9.3.0"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^25.5.2",
33
+ "javascript-obfuscator": "^5.4.1",
34
+ "pkg": "^5.8.1",
35
+ "ts-node": "^10.9.2",
36
+ "typescript": "^6.0.2"
37
+ },
38
+ "pkg": {
39
+ "targets": [
40
+ "node18-linux-x64",
41
+ "node18-win-x64",
42
+ "node18-macos-x64"
43
+ ],
44
+ "outputPath": "bin"
45
+ },
46
+ "publishConfig": {
47
+ "registry": "https://registry.npmjs.org",
48
+ "access": "public"
49
+ }
50
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "commonjs",
5
+ "lib": ["ES2022", "DOM"],
6
+ "types": ["node"],
7
+ "outDir": "./dist",
8
+ "rootDir": "./src",
9
+ "strict": true,
10
+ "esModuleInterop": true,
11
+ "skipLibCheck": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "resolveJsonModule": true,
14
+ "declaration": true,
15
+ "declarationMap": true,
16
+ "sourceMap": true
17
+ },
18
+ "include": ["src/**/*"],
19
+ "exclude": ["node_modules", "dist"]
20
+ }