arkna 1.3.2 → 2.0.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/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +276 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +2 -5
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +47 -116
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +87 -114
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.js +6 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/arkna-dir.d.ts +4 -86
- package/dist/lib/arkna-dir.d.ts.map +1 -1
- package/dist/lib/arkna-dir.js +6 -110
- package/dist/lib/arkna-dir.js.map +1 -1
- package/dist/lib/connectivity.d.ts +7 -50
- package/dist/lib/connectivity.d.ts.map +1 -1
- package/dist/lib/connectivity.js +39 -255
- package/dist/lib/connectivity.js.map +1 -1
- package/dist/lib/detect.d.ts +35 -0
- package/dist/lib/detect.d.ts.map +1 -0
- package/dist/lib/detect.js +335 -0
- package/dist/lib/detect.js.map +1 -0
- package/dist/lib/ui.js +2 -2
- package/dist/lib/ui.js.map +1 -1
- package/package.json +8 -7
- package/dist/commands/connect.d.ts +0 -3
- package/dist/commands/connect.d.ts.map +0 -1
- package/dist/commands/connect.js +0 -582
- package/dist/commands/connect.js.map +0 -1
- package/dist/commands/pull-governance.d.ts +0 -3
- package/dist/commands/pull-governance.d.ts.map +0 -1
- package/dist/commands/pull-governance.js +0 -116
- package/dist/commands/pull-governance.js.map +0 -1
- package/dist/commands/push-manifest.d.ts +0 -3
- package/dist/commands/push-manifest.d.ts.map +0 -1
- package/dist/commands/push-manifest.js +0 -138
- package/dist/commands/push-manifest.js.map +0 -1
- package/dist/commands/sync.d.ts +0 -3
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js +0 -65
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/test.d.ts +0 -3
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/commands/test.js +0 -142
- package/dist/commands/test.js.map +0 -1
- package/dist/lib/platforms.d.ts +0 -45
- package/dist/lib/platforms.d.ts.map +0 -1
- package/dist/lib/platforms.js +0 -638
- package/dist/lib/platforms.js.map +0 -1
package/dist/commands/connect.js
DELETED
|
@@ -1,582 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.connectCommand = void 0;
|
|
40
|
-
const commander_1 = require("commander");
|
|
41
|
-
const inquirer_1 = __importDefault(require("inquirer"));
|
|
42
|
-
const fs = __importStar(require("fs"));
|
|
43
|
-
const path = __importStar(require("path"));
|
|
44
|
-
const ui_1 = require("../lib/ui");
|
|
45
|
-
const arkna_dir_1 = require("../lib/arkna-dir");
|
|
46
|
-
const verify_1 = require("../lib/verify");
|
|
47
|
-
const connectivity_1 = require("../lib/connectivity");
|
|
48
|
-
const platforms_1 = require("../lib/platforms");
|
|
49
|
-
const VALID_PLATFORMS = ['openclaw', 'crewai', 'langchain', 'custom'];
|
|
50
|
-
// ── Admin session cache (login once, reuse for all agents) ──────────────────
|
|
51
|
-
let cachedJwt = null;
|
|
52
|
-
async function ensureAdminSession(url) {
|
|
53
|
-
if (cachedJwt)
|
|
54
|
-
return cachedJwt;
|
|
55
|
-
console.log(`\n ${(0, ui_1.dim)('Login to ARKNA to auto-create integration tokens.')}`);
|
|
56
|
-
const { email } = await inquirer_1.default.prompt([{
|
|
57
|
-
type: 'input',
|
|
58
|
-
name: 'email',
|
|
59
|
-
message: (0, ui_1.dim)(' Email:'),
|
|
60
|
-
prefix: '',
|
|
61
|
-
validate: (v) => v.includes('@') || 'Enter a valid email',
|
|
62
|
-
}]);
|
|
63
|
-
const { password } = await inquirer_1.default.prompt([{
|
|
64
|
-
type: 'password',
|
|
65
|
-
name: 'password',
|
|
66
|
-
message: (0, ui_1.dim)(' Password:'),
|
|
67
|
-
mask: '\u25CF',
|
|
68
|
-
prefix: '',
|
|
69
|
-
validate: (v) => v.length > 0 || 'Password is required',
|
|
70
|
-
}]);
|
|
71
|
-
const s = (0, ui_1.startSpinner)('Authenticating...');
|
|
72
|
-
const result = await (0, connectivity_1.adminLogin)(url, email, password);
|
|
73
|
-
s.stop();
|
|
74
|
-
if (!result.success || !result.session) {
|
|
75
|
-
console.log(` ${(0, ui_1.warn)('\u2718')} Login failed: ${(0, ui_1.dim)(result.error || 'unknown error')}`);
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
if (result.session.user.role !== 'Admin') {
|
|
79
|
-
console.log(` ${(0, ui_1.warn)('\u2718')} ${(0, ui_1.dim)('Account is not an Admin. Token creation requires Admin role.')}`);
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Logged in as ${result.session.user.email}`);
|
|
83
|
-
cachedJwt = result.session.jwt;
|
|
84
|
-
return cachedJwt;
|
|
85
|
-
}
|
|
86
|
-
// ── Token resolution ────────────────────────────────────────────────────────
|
|
87
|
-
/**
|
|
88
|
-
* Resolve token for an agent. Priority:
|
|
89
|
-
* 1. ARKNA_TOKEN env var
|
|
90
|
-
* 2. .arkna/.env file in the agent's directory
|
|
91
|
-
* 3. -t flag
|
|
92
|
-
* 4. Auto-create via admin API (login once, reuse session)
|
|
93
|
-
* 5. Manual paste fallback
|
|
94
|
-
*/
|
|
95
|
-
async function resolveToken(url, agentName, flagToken, baseDir) {
|
|
96
|
-
// 1. Env var
|
|
97
|
-
if (process.env.ARKNA_TOKEN) {
|
|
98
|
-
console.log(` ${(0, ui_1.dim)('Token:')} from ARKNA_TOKEN env var`);
|
|
99
|
-
return process.env.ARKNA_TOKEN;
|
|
100
|
-
}
|
|
101
|
-
// 2. .arkna/.env
|
|
102
|
-
const envCreds = (0, arkna_dir_1.readArknaEnv)(baseDir);
|
|
103
|
-
if (envCreds?.token) {
|
|
104
|
-
console.log(` ${(0, ui_1.dim)('Token:')} from .arkna/.env`);
|
|
105
|
-
return envCreds.token;
|
|
106
|
-
}
|
|
107
|
-
// 3. -t flag (warn about shell history)
|
|
108
|
-
if (flagToken) {
|
|
109
|
-
console.log(` ${(0, ui_1.warn)('\u26A0')} ${(0, ui_1.dim)('Token passed via -t flag (visible in shell history)')}`);
|
|
110
|
-
return flagToken;
|
|
111
|
-
}
|
|
112
|
-
// 4. Offer auto-create vs manual paste
|
|
113
|
-
const { method } = await inquirer_1.default.prompt([{
|
|
114
|
-
type: 'list',
|
|
115
|
-
name: 'method',
|
|
116
|
-
message: 'No token found. How to authenticate?',
|
|
117
|
-
choices: [
|
|
118
|
-
{ name: `Login to ARKNA ${(0, ui_1.dim)('(auto-create token)')}`, value: 'login' },
|
|
119
|
-
{ name: `Paste token manually`, value: 'paste' },
|
|
120
|
-
],
|
|
121
|
-
}]);
|
|
122
|
-
if (method === 'login') {
|
|
123
|
-
const jwt = await ensureAdminSession(url);
|
|
124
|
-
if (jwt) {
|
|
125
|
-
const s = (0, ui_1.startSpinner)(`Creating token for ${agentName}...`);
|
|
126
|
-
const result = await (0, connectivity_1.provisionToken)(url, jwt, agentName);
|
|
127
|
-
s.stop();
|
|
128
|
-
if (result.success && result.token) {
|
|
129
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Token created ${(0, ui_1.dim)(`(${(0, ui_1.maskToken)(result.token)})`)}`);
|
|
130
|
-
return result.token;
|
|
131
|
-
}
|
|
132
|
-
console.log(` ${(0, ui_1.warn)('\u2718')} Failed to create token: ${(0, ui_1.dim)(result.error || 'unknown')}`);
|
|
133
|
-
console.log(` ${(0, ui_1.dim)('Falling back to manual paste...')}`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
// 5. Manual paste fallback
|
|
137
|
-
console.log(` ${(0, ui_1.dim)('Paste your token from Settings > External Agents:')}`);
|
|
138
|
-
const { token } = await inquirer_1.default.prompt([{
|
|
139
|
-
type: 'password',
|
|
140
|
-
name: 'token',
|
|
141
|
-
message: (0, ui_1.brand)(' Token:'),
|
|
142
|
-
mask: '\u25CF',
|
|
143
|
-
prefix: '',
|
|
144
|
-
validate: (input) => {
|
|
145
|
-
if (!input || !input.startsWith('intk_')) {
|
|
146
|
-
return 'Token must start with intk_';
|
|
147
|
-
}
|
|
148
|
-
return true;
|
|
149
|
-
},
|
|
150
|
-
}]);
|
|
151
|
-
return token;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Resolve URL from (in priority order):
|
|
155
|
-
* 1. -u flag
|
|
156
|
-
* 2. ARKNA_URL env var
|
|
157
|
-
* 3. .arkna/.env file
|
|
158
|
-
* 4. Default
|
|
159
|
-
*/
|
|
160
|
-
function resolveUrl(flagUrl, baseDir) {
|
|
161
|
-
if (flagUrl)
|
|
162
|
-
return flagUrl;
|
|
163
|
-
if (process.env.ARKNA_URL)
|
|
164
|
-
return process.env.ARKNA_URL;
|
|
165
|
-
const envCreds = (0, arkna_dir_1.readArknaEnv)(baseDir);
|
|
166
|
-
if (envCreds?.url)
|
|
167
|
-
return envCreds.url;
|
|
168
|
-
return 'https://api.arkna.com.au';
|
|
169
|
-
}
|
|
170
|
-
async function connectSingleAgent(platform, agentDir, configFile, agentName, url, token, stepOffset, replyUrl) {
|
|
171
|
-
// ── Wire Agent ──────────────────────────────────────────────────────────
|
|
172
|
-
(0, ui_1.step)(stepOffset.wire, stepOffset.total, `Wire Agent${stepOffset.total > 4 ? ` \u2014 ${agentName}` : ''}`);
|
|
173
|
-
let patchText;
|
|
174
|
-
switch (platform) {
|
|
175
|
-
case 'openclaw': {
|
|
176
|
-
if (configFile) {
|
|
177
|
-
const spinner = (0, ui_1.startSpinner)('Modifying OpenClaw config...');
|
|
178
|
-
const result = (0, platforms_1.wireOpenClaw)(configFile, url, agentName);
|
|
179
|
-
spinner.stop();
|
|
180
|
-
if (!result.success) {
|
|
181
|
-
(0, ui_1.errorBox)('Failed to modify config', [result.error || 'Unknown error']);
|
|
182
|
-
return { name: agentName, platform, ok: false };
|
|
183
|
-
}
|
|
184
|
-
if (result.alreadyConfigured) {
|
|
185
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} connectors.arkna already exists ${(0, ui_1.dim)('\u2014 skipping.')}`);
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Patched ${path.basename(configFile)} with ARKNA connector`);
|
|
189
|
-
console.log(` ${(0, ui_1.dim)('Backup saved to ' + configFile + '.bak')}`);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
193
|
-
console.log(` ${(0, ui_1.dim)('No OpenClaw config YAML found. Add this to your config:')}\n`);
|
|
194
|
-
console.log((0, ui_1.dim)((0, platforms_1.getOpenClawYamlBlock)(agentName)));
|
|
195
|
-
patchText = 'Add the YAML block above to your OpenClaw config file.';
|
|
196
|
-
}
|
|
197
|
-
break;
|
|
198
|
-
}
|
|
199
|
-
case 'crewai': {
|
|
200
|
-
const wrapperPath = path.join(agentDir, 'arkna_gateway.py');
|
|
201
|
-
if (existsAndNotEmpty(wrapperPath)) {
|
|
202
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} arkna_gateway.py already exists ${(0, ui_1.dim)('\u2014 skipping.')}`);
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
const spinner = (0, ui_1.startSpinner)('Generating CrewAI wrapper...');
|
|
206
|
-
const result = (0, platforms_1.wireCrewAI)(agentDir, agentName);
|
|
207
|
-
spinner.stop();
|
|
208
|
-
if (!result.success) {
|
|
209
|
-
(0, ui_1.errorBox)('Failed to generate wrapper', [result.error || 'Unknown error']);
|
|
210
|
-
return { name: agentName, platform, ok: false };
|
|
211
|
-
}
|
|
212
|
-
patchText = result.patch;
|
|
213
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Created ${result.wrapperPath}`);
|
|
214
|
-
}
|
|
215
|
-
break;
|
|
216
|
-
}
|
|
217
|
-
case 'langchain': {
|
|
218
|
-
const wrapperPath = path.join(agentDir, 'arkna_tool.py');
|
|
219
|
-
if (existsAndNotEmpty(wrapperPath)) {
|
|
220
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} arkna_tool.py already exists ${(0, ui_1.dim)('\u2014 skipping.')}`);
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
const spinner = (0, ui_1.startSpinner)('Generating LangChain wrapper...');
|
|
224
|
-
const result = (0, platforms_1.wireLangChain)(agentDir, agentName);
|
|
225
|
-
spinner.stop();
|
|
226
|
-
if (!result.success) {
|
|
227
|
-
(0, ui_1.errorBox)('Failed to generate wrapper', [result.error || 'Unknown error']);
|
|
228
|
-
return { name: agentName, platform, ok: false };
|
|
229
|
-
}
|
|
230
|
-
patchText = result.patch;
|
|
231
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Created ${result.wrapperPath}`);
|
|
232
|
-
}
|
|
233
|
-
break;
|
|
234
|
-
}
|
|
235
|
-
case 'custom': {
|
|
236
|
-
patchText = (0, platforms_1.getCustomPatch)(agentName);
|
|
237
|
-
console.log(` ${(0, ui_1.dim)('Add these API calls to your agent:')}\n`);
|
|
238
|
-
console.log((0, ui_1.dim)(patchText));
|
|
239
|
-
break;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
// ── Register + Pull Config + Verify ──────────────────────────────────────
|
|
243
|
-
(0, ui_1.step)(stepOffset.verify, stepOffset.total, `Register & Verify${stepOffset.total > 4 ? ` \u2014 ${agentName}` : ''}`);
|
|
244
|
-
let activeToken = token;
|
|
245
|
-
// If env var token failed, try .arkna/.env token
|
|
246
|
-
{
|
|
247
|
-
const { gatewayOk: gOk, tokenOk: tOk } = await (0, verify_1.verifyGateway)(url, activeToken);
|
|
248
|
-
if (gOk && !tOk && process.env.ARKNA_TOKEN) {
|
|
249
|
-
const fileEnv = (0, arkna_dir_1.readArknaEnv)(agentDir);
|
|
250
|
-
if (fileEnv?.token && fileEnv.token !== activeToken) {
|
|
251
|
-
console.log(` ${(0, ui_1.warn)('\u26A0')} ${(0, ui_1.dim)('Env var token rejected. Trying token from .arkna/.env...')}`);
|
|
252
|
-
const retry = await (0, verify_1.verifyGateway)(url, fileEnv.token);
|
|
253
|
-
if (retry.tokenOk) {
|
|
254
|
-
activeToken = fileEnv.token;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
if (!gOk) {
|
|
259
|
-
(0, ui_1.errorBox)('Gateway unreachable', [(0, ui_1.dim)(`Could not reach ${url}`)]);
|
|
260
|
-
return { name: agentName, platform, ok: false };
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
// Register agent with ARKNA gateway
|
|
264
|
-
const regSpinner = (0, ui_1.startSpinner)('Registering agent with ARKNA...');
|
|
265
|
-
const regResult = await (0, connectivity_1.registerAgent)(url, activeToken, agentName, platform, replyUrl);
|
|
266
|
-
regSpinner.stop();
|
|
267
|
-
if (regResult.success) {
|
|
268
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Agent registered ${(0, ui_1.dim)(`(${regResult.agent?.id?.substring(0, 8) || 'ok'}...)`)}`);
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
// "already registered" is fine — it means connect was run before
|
|
272
|
-
if (regResult.error?.toLowerCase().includes('already')) {
|
|
273
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Agent already registered`);
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
console.log(` ${(0, ui_1.warn)('\u26A0')} Registration: ${(0, ui_1.dim)(regResult.error || 'failed')} ${(0, ui_1.dim)('(continuing...)')}`);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
// Pull full policy envelope from gateway
|
|
280
|
-
const cfgSpinner = (0, ui_1.startSpinner)('Pulling policy envelope...');
|
|
281
|
-
const cfgResult = await (0, connectivity_1.pullConfig)(url, activeToken);
|
|
282
|
-
cfgSpinner.stop();
|
|
283
|
-
let files;
|
|
284
|
-
if (cfgResult.success && cfgResult.data) {
|
|
285
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Policy envelope pulled ${(0, ui_1.dim)(`(version ${cfgResult.data.config_version || '?'})`)}`);
|
|
286
|
-
// Write full .arkna/ directory (config.json, tools.json, policy.json, .env, .gitignore)
|
|
287
|
-
files = (0, arkna_dir_1.writeArknaDir)(cfgResult.data, url, activeToken, platform, agentDir);
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
console.log(` ${(0, ui_1.warn)('\u26A0')} Config pull: ${(0, ui_1.dim)(cfgResult.error || 'failed')} ${(0, ui_1.dim)('(saving credentials only)')}`);
|
|
291
|
-
// Fallback: save just credentials
|
|
292
|
-
files = (0, arkna_dir_1.writeTokenEnv)(url, activeToken, agentDir);
|
|
293
|
-
}
|
|
294
|
-
// Verify final state
|
|
295
|
-
const { gatewayOk, tokenOk } = await (0, verify_1.verifyGateway)(url, activeToken);
|
|
296
|
-
console.log(` ${gatewayOk ? (0, ui_1.brand)('\u2714') : (0, ui_1.warn)('\u2718')} Gateway reachable`);
|
|
297
|
-
console.log(` ${tokenOk ? (0, ui_1.brand)('\u2714') : (0, ui_1.warn)('\u2718')} Token valid`);
|
|
298
|
-
(0, ui_1.fileTree)(`${path.basename(agentDir)}/.arkna`, files);
|
|
299
|
-
// Show patch text for single-agent flow
|
|
300
|
-
if (patchText && platform !== 'custom' && platform !== 'openclaw' && stepOffset.total <= 4) {
|
|
301
|
-
(0, ui_1.hint)([
|
|
302
|
-
`${(0, ui_1.brandBold)('NEXT:')} Add these lines to your agent:`,
|
|
303
|
-
'',
|
|
304
|
-
...patchText.split('\n').map(l => ` ${(0, ui_1.dim)(l)}`),
|
|
305
|
-
]);
|
|
306
|
-
}
|
|
307
|
-
return { name: agentName, platform, ok: gatewayOk && tokenOk };
|
|
308
|
-
}
|
|
309
|
-
// ── Command ─────────────────────────────────────────────────────────────────
|
|
310
|
-
exports.connectCommand = new commander_1.Command('connect')
|
|
311
|
-
.description('Wire an agent to route through the ARKNA governance gateway')
|
|
312
|
-
.argument('[platform]', `Agent platform (${VALID_PLATFORMS.join(', ')}) \u2014 auto-detected if omitted`)
|
|
313
|
-
.option('-t, --token <token>', 'Integration token (prefer ARKNA_TOKEN env var instead)')
|
|
314
|
-
.option('-u, --url <url>', 'ARKNA gateway URL (or set ARKNA_URL env var)')
|
|
315
|
-
.option('-n, --name <name>', 'Agent name (defaults to directory name)')
|
|
316
|
-
.option('-c, --config <path>', 'Path to agent config file (OpenClaw: YAML to modify)')
|
|
317
|
-
.option('-d, --dir <dir>', 'Output dir for wrapper files (CrewAI/LangChain)')
|
|
318
|
-
.option('--reply-url <url>', 'URL where ARKNA sends visitor messages (enables push delivery)')
|
|
319
|
-
.action(async (platformArg, options) => {
|
|
320
|
-
(0, ui_1.banner)();
|
|
321
|
-
const workDir = options.dir || process.cwd();
|
|
322
|
-
// ── Step 1: Detect Agent(s) ─────────────────────────────────────────────
|
|
323
|
-
(0, ui_1.step)(1, 4, 'Detect Agent');
|
|
324
|
-
// Check for multi-agent project (only when no platform/config explicitly given)
|
|
325
|
-
if (!platformArg && !options.config) {
|
|
326
|
-
const agents = (0, platforms_1.detectAgents)(workDir);
|
|
327
|
-
if (agents.length > 1) {
|
|
328
|
-
// ── Multi-agent flow ──────────────────────────────────────────────
|
|
329
|
-
console.log(` Found ${(0, ui_1.brand)(String(agents.length))} agents:\n`);
|
|
330
|
-
for (const a of agents) {
|
|
331
|
-
console.log(` ${(0, ui_1.brand)('\u2022')} ${a.name} ${(0, ui_1.dim)(`(${a.platform} \u2014 ${a.evidence})`)}`);
|
|
332
|
-
}
|
|
333
|
-
console.log('');
|
|
334
|
-
const { selected } = await inquirer_1.default.prompt([{
|
|
335
|
-
type: 'checkbox',
|
|
336
|
-
name: 'selected',
|
|
337
|
-
message: 'Select agents to connect:',
|
|
338
|
-
choices: agents.map(a => ({
|
|
339
|
-
name: `${a.name} ${(0, ui_1.dim)(`(${a.platform})`)}`,
|
|
340
|
-
value: a.name,
|
|
341
|
-
checked: true,
|
|
342
|
-
})),
|
|
343
|
-
validate: (input) => input.length > 0 || 'Select at least one agent',
|
|
344
|
-
}]);
|
|
345
|
-
const selectedAgents = agents.filter(a => selected.includes(a.name));
|
|
346
|
-
console.log(`\n Connecting ${(0, ui_1.brand)(String(selectedAgents.length))} agent${selectedAgents.length > 1 ? 's' : ''}...`);
|
|
347
|
-
const url = resolveUrl(options.url, workDir);
|
|
348
|
-
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
|
349
|
-
(0, ui_1.errorBox)('Invalid gateway URL', [`Got: ${url}`, (0, ui_1.dim)('URL must start with http:// or https://')]);
|
|
350
|
-
process.exit(1);
|
|
351
|
-
}
|
|
352
|
-
// ── Resolve tokens ──────────────────────────────────────────────
|
|
353
|
-
// Check which agents already have valid tokens
|
|
354
|
-
(0, ui_1.step)(2, 4, 'Credentials');
|
|
355
|
-
const resolved = [];
|
|
356
|
-
const needsToken = [];
|
|
357
|
-
for (const agent of selectedAgents) {
|
|
358
|
-
const existing = (0, arkna_dir_1.readArknaEnv)(agent.path);
|
|
359
|
-
if (existing?.token && !process.env.ARKNA_TOKEN) {
|
|
360
|
-
const s = (0, ui_1.startSpinner)(`Checking ${agent.name}...`);
|
|
361
|
-
const { tokenOk } = await (0, verify_1.verifyGateway)(existing.url || url, existing.token);
|
|
362
|
-
s.stop();
|
|
363
|
-
if (tokenOk) {
|
|
364
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} ${agent.name}: saved token valid`);
|
|
365
|
-
resolved.push({ agent, token: existing.token });
|
|
366
|
-
continue;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
needsToken.push(agent);
|
|
370
|
-
}
|
|
371
|
-
// Auto-provision tokens for agents that need them
|
|
372
|
-
if (needsToken.length > 0) {
|
|
373
|
-
console.log(`\n ${needsToken.length} agent${needsToken.length > 1 ? 's' : ''} need${needsToken.length === 1 ? 's' : ''} a new token.`);
|
|
374
|
-
const jwt = await ensureAdminSession(url);
|
|
375
|
-
if (jwt) {
|
|
376
|
-
for (const agent of needsToken) {
|
|
377
|
-
const s = (0, ui_1.startSpinner)(`Creating token for ${agent.name}...`);
|
|
378
|
-
const result = await (0, connectivity_1.provisionToken)(url, jwt, agent.name);
|
|
379
|
-
s.stop();
|
|
380
|
-
if (result.success && result.token) {
|
|
381
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} ${agent.name}: token created ${(0, ui_1.dim)(`(${(0, ui_1.maskToken)(result.token)})`)}`);
|
|
382
|
-
resolved.push({ agent, token: result.token });
|
|
383
|
-
}
|
|
384
|
-
else {
|
|
385
|
-
console.log(` ${(0, ui_1.warn)('\u2718')} ${agent.name}: ${(0, ui_1.dim)(result.error || 'failed')}`);
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
// Login failed — fall back to manual paste per agent
|
|
391
|
-
console.log(` ${(0, ui_1.dim)('Falling back to manual token entry...')}\n`);
|
|
392
|
-
for (const agent of needsToken) {
|
|
393
|
-
console.log(` ${(0, ui_1.dim)(`Paste token for ${(0, ui_1.brand)(agent.name)}:`)}`);
|
|
394
|
-
const { token } = await inquirer_1.default.prompt([{
|
|
395
|
-
type: 'password',
|
|
396
|
-
name: 'token',
|
|
397
|
-
message: (0, ui_1.brand)(` ${agent.name}:`),
|
|
398
|
-
mask: '\u25CF',
|
|
399
|
-
prefix: '',
|
|
400
|
-
validate: (v) => v.startsWith('intk_') || 'Token must start with intk_',
|
|
401
|
-
}]);
|
|
402
|
-
resolved.push({ agent, token });
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
// ── Wire + Verify each agent ────────────────────────────────────
|
|
407
|
-
const results = [];
|
|
408
|
-
for (let i = 0; i < resolved.length; i++) {
|
|
409
|
-
const { agent, token } = resolved[i];
|
|
410
|
-
(0, ui_1.divider)();
|
|
411
|
-
console.log(`\n ${(0, ui_1.brandBold)(`\u25B6 ${agent.name}`)} ${(0, ui_1.dim)(`(${i + 1}/${resolved.length})`)}`);
|
|
412
|
-
let configFile = agent.configFile;
|
|
413
|
-
if (agent.platform === 'openclaw' && !configFile) {
|
|
414
|
-
configFile = (0, platforms_1.findOpenClawConfig)(agent.path) ?? undefined;
|
|
415
|
-
}
|
|
416
|
-
const result = await connectSingleAgent(agent.platform, agent.path, configFile, agent.name, url, token, { wire: 3, verify: 4, total: 4 });
|
|
417
|
-
results.push(result);
|
|
418
|
-
}
|
|
419
|
-
// ── Multi-agent summary ──────────────────────────────────────────
|
|
420
|
-
(0, ui_1.divider)();
|
|
421
|
-
const okCount = results.filter(r => r.ok).length;
|
|
422
|
-
const failCount = results.filter(r => !r.ok).length;
|
|
423
|
-
const skippedCount = selectedAgents.length - resolved.length;
|
|
424
|
-
if (failCount === 0 && skippedCount === 0) {
|
|
425
|
-
(0, ui_1.successBox)(`${okCount} of ${selectedAgents.length} agents connected`, results.map(r => ` ${(0, ui_1.brand)('\u2714')} ${r.name} ${(0, ui_1.dim)(`(${r.platform})`)}`));
|
|
426
|
-
}
|
|
427
|
-
else {
|
|
428
|
-
console.log('');
|
|
429
|
-
for (const r of results) {
|
|
430
|
-
const icon = r.ok ? (0, ui_1.brand)('\u2714') : (0, ui_1.warn)('\u2718');
|
|
431
|
-
console.log(` ${icon} ${r.name} ${(0, ui_1.dim)(`(${r.platform})`)}`);
|
|
432
|
-
}
|
|
433
|
-
if (skippedCount > 0) {
|
|
434
|
-
console.log(` ${(0, ui_1.warn)('\u2718')} ${skippedCount} agent${skippedCount > 1 ? 's' : ''} skipped (no token)`);
|
|
435
|
-
}
|
|
436
|
-
if (okCount > 0) {
|
|
437
|
-
console.log(`\n ${(0, ui_1.brand)(String(okCount))} connected, ${(0, ui_1.warn)(String(failCount + skippedCount))} failed`);
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
(0, ui_1.hint)([
|
|
441
|
-
`${(0, ui_1.brandBold)('WHAT HAPPENS NEXT:')}`,
|
|
442
|
-
` Each agent registers itself when it starts.`,
|
|
443
|
-
` ${(0, ui_1.dim)('1.')} Set env vars per agent: ${(0, ui_1.brand)('source <agent-dir>/.arkna/.env')}`,
|
|
444
|
-
` ${(0, ui_1.dim)('2.')} Start your agents — ${(0, ui_1.brand)('enforcement is automatic')}`,
|
|
445
|
-
` Direct API calls to governed domains are intercepted by the SDK.`,
|
|
446
|
-
` ${(0, ui_1.dim)('Then:')} arkna status`,
|
|
447
|
-
]);
|
|
448
|
-
return; // Done — multi-agent flow complete
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
// ── Single-agent flow ───────────────────────────────────────────────────
|
|
452
|
-
const baseDir = options.config ? path.dirname(options.config) : workDir;
|
|
453
|
-
let platform;
|
|
454
|
-
let configFile = options.config;
|
|
455
|
-
if (platformArg) {
|
|
456
|
-
if (!VALID_PLATFORMS.includes(platformArg)) {
|
|
457
|
-
(0, ui_1.errorBox)('Invalid platform', [
|
|
458
|
-
`Got: ${platformArg}`,
|
|
459
|
-
(0, ui_1.dim)(`Valid platforms: ${VALID_PLATFORMS.join(', ')}`),
|
|
460
|
-
]);
|
|
461
|
-
process.exit(1);
|
|
462
|
-
}
|
|
463
|
-
platform = platformArg;
|
|
464
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} ${platform} ${(0, ui_1.dim)('(specified)')}`);
|
|
465
|
-
}
|
|
466
|
-
else {
|
|
467
|
-
const detection = (0, platforms_1.detectPlatform)(workDir);
|
|
468
|
-
if (detection) {
|
|
469
|
-
platform = detection.platform;
|
|
470
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} ${detection.platform} agent detected ${(0, ui_1.dim)(`(${detection.evidence})`)}`);
|
|
471
|
-
if (detection.configFile && !configFile) {
|
|
472
|
-
configFile = detection.configFile;
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
else {
|
|
476
|
-
const { selectedPlatform } = await inquirer_1.default.prompt([{
|
|
477
|
-
type: 'list',
|
|
478
|
-
name: 'selectedPlatform',
|
|
479
|
-
message: 'What agent platform are you using?',
|
|
480
|
-
choices: [
|
|
481
|
-
{ name: 'OpenClaw', value: 'openclaw' },
|
|
482
|
-
{ name: 'CrewAI', value: 'crewai' },
|
|
483
|
-
{ name: 'LangChain', value: 'langchain' },
|
|
484
|
-
{ name: 'Custom / Other', value: 'custom' },
|
|
485
|
-
],
|
|
486
|
-
}]);
|
|
487
|
-
platform = selectedPlatform;
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
// For OpenClaw without a config file specified, try to auto-find one
|
|
491
|
-
if (platform === 'openclaw' && !configFile) {
|
|
492
|
-
configFile = (0, platforms_1.findOpenClawConfig)(workDir) ?? undefined;
|
|
493
|
-
}
|
|
494
|
-
// ── Step 2: Credentials ─────────────────────────────────────────────────
|
|
495
|
-
(0, ui_1.step)(2, 4, 'Credentials');
|
|
496
|
-
const url = resolveUrl(options.url, baseDir);
|
|
497
|
-
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
|
498
|
-
(0, ui_1.errorBox)('Invalid gateway URL', [
|
|
499
|
-
`Got: ${url}`,
|
|
500
|
-
(0, ui_1.dim)('URL must start with http:// or https://'),
|
|
501
|
-
]);
|
|
502
|
-
process.exit(1);
|
|
503
|
-
}
|
|
504
|
-
const agentName = options.name || path.basename(process.cwd());
|
|
505
|
-
// Check if existing .arkna/.env has a valid token — skip prompt if so
|
|
506
|
-
const existingEnv = (0, arkna_dir_1.readArknaEnv)(baseDir);
|
|
507
|
-
let skipTokenPrompt = false;
|
|
508
|
-
if (existingEnv?.token && !options.token && !process.env.ARKNA_TOKEN) {
|
|
509
|
-
const s = (0, ui_1.startSpinner)('Checking saved token...');
|
|
510
|
-
const { tokenOk } = await (0, verify_1.verifyGateway)(existingEnv.url || url, existingEnv.token);
|
|
511
|
-
s.stop();
|
|
512
|
-
if (tokenOk) {
|
|
513
|
-
skipTokenPrompt = true;
|
|
514
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Saved token is valid ${(0, ui_1.dim)('(from .arkna/.env)')}`);
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
const token = skipTokenPrompt
|
|
518
|
-
? existingEnv.token
|
|
519
|
-
: await resolveToken(url, agentName, options.token, baseDir);
|
|
520
|
-
if (!token.startsWith('intk_')) {
|
|
521
|
-
(0, ui_1.errorBox)('Invalid token', [
|
|
522
|
-
(0, ui_1.dim)('Token must start with intk_'),
|
|
523
|
-
(0, ui_1.dim)('Create one in Settings > External Agents.'),
|
|
524
|
-
]);
|
|
525
|
-
process.exit(1);
|
|
526
|
-
}
|
|
527
|
-
console.log(` ${(0, ui_1.brand)('\u2714')} Gateway: ${(0, ui_1.dim)(url)}`);
|
|
528
|
-
// ── Steps 3-4: Wire + Verify ────────────────────────────────────────────
|
|
529
|
-
const result = await connectSingleAgent(platform, workDir, configFile, agentName, url, token, { wire: 3, verify: 4, total: 4 }, options.replyUrl);
|
|
530
|
-
// ── Summary ─────────────────────────────────────────────────────────────
|
|
531
|
-
(0, ui_1.divider)();
|
|
532
|
-
if (result.ok) {
|
|
533
|
-
(0, ui_1.successBox)('CONFIGURED', [
|
|
534
|
-
`${(0, ui_1.dim)('Agent:')} ${agentName}`,
|
|
535
|
-
`${(0, ui_1.dim)('Platform:')} ${platform}`,
|
|
536
|
-
`${(0, ui_1.dim)('Gateway:')} ${url}`,
|
|
537
|
-
`${(0, ui_1.dim)('Token:')} valid`,
|
|
538
|
-
]);
|
|
539
|
-
}
|
|
540
|
-
else {
|
|
541
|
-
const fileEnv = (0, arkna_dir_1.readArknaEnv)(baseDir);
|
|
542
|
-
const usingEnvVar = !!process.env.ARKNA_TOKEN;
|
|
543
|
-
const fileHasDifferentToken = fileEnv?.token && fileEnv.token !== token;
|
|
544
|
-
if (usingEnvVar && fileHasDifferentToken) {
|
|
545
|
-
(0, ui_1.errorBox)('Stale ARKNA_TOKEN env var', [
|
|
546
|
-
`${(0, ui_1.dim)('The ARKNA_TOKEN env var contains an old token that the gateway rejected.')}`,
|
|
547
|
-
`${(0, ui_1.dim)('.arkna/.env has a newer token (from arkna login).')}`,
|
|
548
|
-
'',
|
|
549
|
-
`${(0, ui_1.dim)('Fix:')} ${(0, ui_1.brand)('unset ARKNA_TOKEN')} ${(0, ui_1.dim)('then re-run this command.')}`,
|
|
550
|
-
`${(0, ui_1.dim)(' or:')} ${(0, ui_1.brand)('source .arkna/.env')} ${(0, ui_1.dim)('then re-run this command.')}`,
|
|
551
|
-
]);
|
|
552
|
-
}
|
|
553
|
-
else {
|
|
554
|
-
(0, ui_1.errorBox)('Gateway verification failed', [
|
|
555
|
-
(0, ui_1.dim)('Check the errors above and run `arkna test` to retry.'),
|
|
556
|
-
]);
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
// Streamlined "WHAT HAPPENS NEXT"
|
|
560
|
-
(0, ui_1.hint)([
|
|
561
|
-
`${(0, ui_1.brandBold)('WHAT HAPPENS NEXT:')}`,
|
|
562
|
-
` Agent is registered and governance enforcement is active.`,
|
|
563
|
-
` ${(0, ui_1.dim)('1.')} Set env vars: ${(0, ui_1.brand)('source .arkna/.env')}`,
|
|
564
|
-
` ${(0, ui_1.dim)('2.')} Start your agent — ${(0, ui_1.brand)('enforcement is automatic')}`,
|
|
565
|
-
` The SDK intercepts direct API calls to governed domains`,
|
|
566
|
-
` (Gmail, Slack, Calendly, etc.) and blocks them in strict mode.`,
|
|
567
|
-
` ${(0, ui_1.dim)('3.')} Check status: ${(0, ui_1.brand)('arkna status')}`,
|
|
568
|
-
``,
|
|
569
|
-
` ${(0, ui_1.dim)('Enforcement modes: strict (block) | advisory (warn) | transparent (log)')}`,
|
|
570
|
-
` ${(0, ui_1.dim)('Configure in ARKNA UI: Agents > [agent] > Governance tab')}`,
|
|
571
|
-
]);
|
|
572
|
-
});
|
|
573
|
-
function existsAndNotEmpty(filePath) {
|
|
574
|
-
try {
|
|
575
|
-
const stat = fs.statSync(filePath);
|
|
576
|
-
return stat.isFile() && stat.size > 0;
|
|
577
|
-
}
|
|
578
|
-
catch {
|
|
579
|
-
return false;
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
//# sourceMappingURL=connect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pull-governance.d.ts","sourceRoot":"","sources":["../../src/commands/pull-governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,qBAAqB,SAsF9B,CAAC"}
|