arkna 1.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/bin/arkna.js +2 -0
- package/dist/commands/connect.d.ts +3 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +307 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +292 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +119 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +65 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/test.d.ts +3 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +142 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/verify.d.ts +3 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +139 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/arkna-dir.d.ts +83 -0
- package/dist/lib/arkna-dir.d.ts.map +1 -0
- package/dist/lib/arkna-dir.js +184 -0
- package/dist/lib/arkna-dir.js.map +1 -0
- package/dist/lib/connectivity.d.ts +35 -0
- package/dist/lib/connectivity.d.ts.map +1 -0
- package/dist/lib/connectivity.js +208 -0
- package/dist/lib/connectivity.js.map +1 -0
- package/dist/lib/platforms.d.ts +13 -0
- package/dist/lib/platforms.d.ts.map +1 -0
- package/dist/lib/platforms.js +348 -0
- package/dist/lib/platforms.js.map +1 -0
- package/dist/lib/ui.d.ts +28 -0
- package/dist/lib/ui.d.ts.map +1 -0
- package/dist/lib/ui.js +176 -0
- package/dist/lib/ui.js.map +1 -0
- package/dist/lib/verify.d.ts +15 -0
- package/dist/lib/verify.d.ts.map +1 -0
- package/dist/lib/verify.js +33 -0
- package/dist/lib/verify.js.map +1 -0
- package/package.json +42 -0
package/bin/arkna.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6EpC,eAAO,MAAM,cAAc,SAmOvB,CAAC"}
|
|
@@ -0,0 +1,307 @@
|
|
|
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 os = __importStar(require("os"));
|
|
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 platforms_1 = require("../lib/platforms");
|
|
48
|
+
const VALID_PLATFORMS = ['openclaw', 'crewai', 'langchain', 'custom'];
|
|
49
|
+
/**
|
|
50
|
+
* Resolve token from (in priority order):
|
|
51
|
+
* 1. ARKNA_TOKEN env var
|
|
52
|
+
* 2. .arkna/.env file
|
|
53
|
+
* 3. Interactive secure prompt
|
|
54
|
+
* 4. -t flag (last resort — leaks to shell history)
|
|
55
|
+
*/
|
|
56
|
+
async function resolveToken(flagToken, baseDir) {
|
|
57
|
+
// 1. Env var
|
|
58
|
+
if (process.env.ARKNA_TOKEN) {
|
|
59
|
+
console.log(` ${(0, ui_1.dim)('Token:')} from ARKNA_TOKEN env var`);
|
|
60
|
+
return process.env.ARKNA_TOKEN;
|
|
61
|
+
}
|
|
62
|
+
// 2. .arkna/.env
|
|
63
|
+
const envCreds = (0, arkna_dir_1.readArknaEnv)(baseDir);
|
|
64
|
+
if (envCreds?.token) {
|
|
65
|
+
console.log(` ${(0, ui_1.dim)('Token:')} from .arkna/.env`);
|
|
66
|
+
return envCreds.token;
|
|
67
|
+
}
|
|
68
|
+
// 3. -t flag (warn about shell history)
|
|
69
|
+
if (flagToken) {
|
|
70
|
+
console.log(` ${(0, ui_1.warn)('\u26A0')} ${(0, ui_1.dim)('Token passed via -t flag (visible in shell history)')}`);
|
|
71
|
+
return flagToken;
|
|
72
|
+
}
|
|
73
|
+
// 4. Interactive secure prompt
|
|
74
|
+
console.log(` ${(0, ui_1.dim)('No token found. Run')} ${(0, ui_1.brand)('arkna login')} ${(0, ui_1.dim)('first, or paste token below:')}`);
|
|
75
|
+
const { token } = await inquirer_1.default.prompt([{
|
|
76
|
+
type: 'password',
|
|
77
|
+
name: 'token',
|
|
78
|
+
message: (0, ui_1.brand)(' Token:'),
|
|
79
|
+
mask: '\u25CF',
|
|
80
|
+
prefix: '',
|
|
81
|
+
validate: (input) => {
|
|
82
|
+
if (!input || !input.startsWith('intk_')) {
|
|
83
|
+
return 'Token must start with intk_';
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
},
|
|
87
|
+
}]);
|
|
88
|
+
return token;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolve URL from (in priority order):
|
|
92
|
+
* 1. -u flag
|
|
93
|
+
* 2. ARKNA_URL env var
|
|
94
|
+
* 3. .arkna/.env file
|
|
95
|
+
* 4. Default
|
|
96
|
+
*/
|
|
97
|
+
function resolveUrl(flagUrl, baseDir) {
|
|
98
|
+
if (flagUrl)
|
|
99
|
+
return flagUrl;
|
|
100
|
+
if (process.env.ARKNA_URL)
|
|
101
|
+
return process.env.ARKNA_URL;
|
|
102
|
+
const envCreds = (0, arkna_dir_1.readArknaEnv)(baseDir);
|
|
103
|
+
if (envCreds?.url)
|
|
104
|
+
return envCreds.url;
|
|
105
|
+
return 'https://api.arkna.com.au';
|
|
106
|
+
}
|
|
107
|
+
exports.connectCommand = new commander_1.Command('connect')
|
|
108
|
+
.description('Wire an agent to route through the ARKNA governance gateway')
|
|
109
|
+
.argument('<platform>', `Agent platform (${VALID_PLATFORMS.join(', ')})`)
|
|
110
|
+
.option('-t, --token <token>', 'Integration token (prefer ARKNA_TOKEN env var instead)')
|
|
111
|
+
.option('-u, --url <url>', 'ARKNA gateway URL (or set ARKNA_URL env var)')
|
|
112
|
+
.option('-n, --name <name>', 'Agent name')
|
|
113
|
+
.option('-c, --config <path>', 'Path to agent config file (OpenClaw: YAML to modify)')
|
|
114
|
+
.option('-d, --dir <dir>', 'Output dir for wrapper files (CrewAI/LangChain)')
|
|
115
|
+
.action(async (platform, options) => {
|
|
116
|
+
(0, ui_1.banner)();
|
|
117
|
+
// ── Validate platform ────────────────────────────────────────────────
|
|
118
|
+
if (!VALID_PLATFORMS.includes(platform)) {
|
|
119
|
+
(0, ui_1.errorBox)('Invalid platform', [
|
|
120
|
+
`Got: ${platform}`,
|
|
121
|
+
(0, ui_1.dim)(`Valid platforms: ${VALID_PLATFORMS.join(', ')}`),
|
|
122
|
+
]);
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
const outputDir = options.dir || process.cwd();
|
|
126
|
+
const baseDir = options.config ? path.dirname(options.config) : outputDir;
|
|
127
|
+
// ── Resolve URL ──────────────────────────────────────────────────────
|
|
128
|
+
const url = resolveUrl(options.url, baseDir);
|
|
129
|
+
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
|
130
|
+
(0, ui_1.errorBox)('Invalid gateway URL', [
|
|
131
|
+
`Got: ${url}`,
|
|
132
|
+
(0, ui_1.dim)('URL must start with http:// or https://'),
|
|
133
|
+
]);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
// ── Resolve token (env > .arkna/.env > prompt > flag) ────────────────
|
|
137
|
+
const token = await resolveToken(options.token, baseDir);
|
|
138
|
+
if (!token.startsWith('intk_')) {
|
|
139
|
+
(0, ui_1.errorBox)('Invalid token', [
|
|
140
|
+
(0, ui_1.dim)('Token must start with intk_'),
|
|
141
|
+
(0, ui_1.dim)('Create one in Settings > External Agents.'),
|
|
142
|
+
]);
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
const agentName = options.name || os.hostname();
|
|
146
|
+
// ── Step 1: Platform-specific wiring ─────────────────────────────────
|
|
147
|
+
(0, ui_1.step)(1, 3, 'Wire Agent');
|
|
148
|
+
let patchText;
|
|
149
|
+
switch (platform) {
|
|
150
|
+
case 'openclaw': {
|
|
151
|
+
if (options.config) {
|
|
152
|
+
const spinner = (0, ui_1.startSpinner)('Modifying OpenClaw config...');
|
|
153
|
+
const result = (0, platforms_1.wireOpenClaw)(options.config, url, agentName);
|
|
154
|
+
spinner.stop();
|
|
155
|
+
if (!result.success) {
|
|
156
|
+
(0, ui_1.errorBox)('Failed to modify config', [
|
|
157
|
+
result.error || 'Unknown error',
|
|
158
|
+
]);
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
if (result.alreadyConfigured) {
|
|
162
|
+
console.log(` ${(0, ui_1.dim)('connectors.arkna already exists \u2014 skipping.')}`);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
console.log(` ${(0, ui_1.brand)('\u2714')} Modified ${options.config}`);
|
|
166
|
+
console.log(` ${(0, ui_1.dim)('Backup saved to ' + options.config + '.bak')}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// No config file provided — print the YAML block
|
|
171
|
+
console.log(` ${(0, ui_1.dim)('No --config provided. Add this to your OpenClaw YAML:')}\n`);
|
|
172
|
+
console.log((0, ui_1.dim)((0, platforms_1.getOpenClawYamlBlock)(agentName)));
|
|
173
|
+
patchText = 'Add the YAML block above to your OpenClaw config file.';
|
|
174
|
+
}
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
case 'crewai': {
|
|
178
|
+
const spinner = (0, ui_1.startSpinner)('Generating CrewAI wrapper...');
|
|
179
|
+
const result = (0, platforms_1.wireCrewAI)(outputDir, agentName);
|
|
180
|
+
spinner.stop();
|
|
181
|
+
if (!result.success) {
|
|
182
|
+
(0, ui_1.errorBox)('Failed to generate wrapper', [result.error || 'Unknown error']);
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
patchText = result.patch;
|
|
186
|
+
console.log(` ${(0, ui_1.brand)('\u2714')} Created ${result.wrapperPath}`);
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
case 'langchain': {
|
|
190
|
+
const spinner = (0, ui_1.startSpinner)('Generating LangChain wrapper...');
|
|
191
|
+
const result = (0, platforms_1.wireLangChain)(outputDir, agentName);
|
|
192
|
+
spinner.stop();
|
|
193
|
+
if (!result.success) {
|
|
194
|
+
(0, ui_1.errorBox)('Failed to generate wrapper', [result.error || 'Unknown error']);
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
patchText = result.patch;
|
|
198
|
+
console.log(` ${(0, ui_1.brand)('\u2714')} Created ${result.wrapperPath}`);
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
case 'custom': {
|
|
202
|
+
patchText = (0, platforms_1.getCustomPatch)(agentName);
|
|
203
|
+
console.log(` ${(0, ui_1.dim)('Add these API calls to your agent:')}\n`);
|
|
204
|
+
console.log((0, ui_1.dim)(patchText));
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// ── Step 2: Verify gateway ───────────────────────────────────────────
|
|
209
|
+
(0, ui_1.step)(2, 3, 'Verify Gateway');
|
|
210
|
+
let activeToken = token;
|
|
211
|
+
let { gatewayOk, tokenOk } = await (0, verify_1.verifyGateway)(url, activeToken);
|
|
212
|
+
// If env var token failed, try .arkna/.env token (may be newer from arkna login)
|
|
213
|
+
if (gatewayOk && !tokenOk && process.env.ARKNA_TOKEN) {
|
|
214
|
+
const fileEnv = (0, arkna_dir_1.readArknaEnv)(baseDir);
|
|
215
|
+
if (fileEnv?.token && fileEnv.token !== activeToken) {
|
|
216
|
+
console.log(`\n ${(0, ui_1.warn)('\u26A0')} ${(0, ui_1.dim)('Env var token rejected. Trying token from .arkna/.env...')}`);
|
|
217
|
+
const retry = await (0, verify_1.verifyGateway)(url, fileEnv.token);
|
|
218
|
+
if (retry.tokenOk) {
|
|
219
|
+
activeToken = fileEnv.token;
|
|
220
|
+
gatewayOk = retry.gatewayOk;
|
|
221
|
+
tokenOk = retry.tokenOk;
|
|
222
|
+
console.log(` ${(0, ui_1.dim)('Using newer token from .arkna/.env (run')} ${(0, ui_1.brand)('source .arkna/.env')} ${(0, ui_1.dim)('to fix your shell)')}`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// ── Step 3: Write .arkna/.env ────────────────────────────────────────
|
|
227
|
+
(0, ui_1.step)(3, 3, 'Save Credentials');
|
|
228
|
+
const files = (0, arkna_dir_1.writeTokenEnv)(url, activeToken, baseDir);
|
|
229
|
+
(0, ui_1.fileTree)('.arkna', files);
|
|
230
|
+
// ── Summary ──────────────────────────────────────────────────────────
|
|
231
|
+
(0, ui_1.divider)();
|
|
232
|
+
if (gatewayOk && tokenOk) {
|
|
233
|
+
(0, ui_1.successBox)('CONFIGURED', [
|
|
234
|
+
`${(0, ui_1.dim)('Agent:')} ${agentName}`,
|
|
235
|
+
`${(0, ui_1.dim)('Platform:')} ${platform}`,
|
|
236
|
+
`${(0, ui_1.dim)('Gateway:')} ${url}`,
|
|
237
|
+
`${(0, ui_1.dim)('Token:')} valid`,
|
|
238
|
+
]);
|
|
239
|
+
if (patchText && platform !== 'custom' && platform !== 'openclaw') {
|
|
240
|
+
(0, ui_1.hint)([
|
|
241
|
+
`${(0, ui_1.brandBold)('NEXT:')} Add these lines to your agent:`,
|
|
242
|
+
'',
|
|
243
|
+
...patchText.split('\n').map(l => ` ${(0, ui_1.dim)(l)}`),
|
|
244
|
+
]);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
else if (gatewayOk && !tokenOk) {
|
|
248
|
+
// Token failed — check if .arkna/.env has a different (newer) token
|
|
249
|
+
const fileEnv = (0, arkna_dir_1.readArknaEnv)(baseDir);
|
|
250
|
+
const usingEnvVar = !!process.env.ARKNA_TOKEN;
|
|
251
|
+
const fileHasDifferentToken = fileEnv?.token && fileEnv.token !== token;
|
|
252
|
+
if (usingEnvVar && fileHasDifferentToken) {
|
|
253
|
+
(0, ui_1.errorBox)('Stale ARKNA_TOKEN env var', [
|
|
254
|
+
`${(0, ui_1.dim)('The ARKNA_TOKEN env var contains an old token that the gateway rejected.')}`,
|
|
255
|
+
`${(0, ui_1.dim)('.arkna/.env has a newer token (from arkna login).')}`,
|
|
256
|
+
'',
|
|
257
|
+
`${(0, ui_1.dim)('Fix:')} ${(0, ui_1.brand)('unset ARKNA_TOKEN')} ${(0, ui_1.dim)('then re-run this command.')}`,
|
|
258
|
+
`${(0, ui_1.dim)(' or:')} ${(0, ui_1.brand)('source .arkna/.env')} ${(0, ui_1.dim)('then re-run this command.')}`,
|
|
259
|
+
]);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
(0, ui_1.errorBox)('Token rejected by gateway', [
|
|
263
|
+
(0, ui_1.dim)('The gateway returned 401 for this token.'),
|
|
264
|
+
(0, ui_1.dim)('Run `arkna login` to get a fresh token, then retry.'),
|
|
265
|
+
]);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
(0, ui_1.errorBox)('Gateway verification failed', [
|
|
270
|
+
(0, ui_1.dim)('The agent was wired but gateway checks did not pass.'),
|
|
271
|
+
(0, ui_1.dim)('Check the errors above and run `arkna test` to retry.'),
|
|
272
|
+
]);
|
|
273
|
+
}
|
|
274
|
+
const platformHint = {
|
|
275
|
+
openclaw: [
|
|
276
|
+
`${(0, ui_1.dim)('1.')} Add the YAML block above to your OpenClaw agent config`,
|
|
277
|
+
`${(0, ui_1.dim)('2.')} Set env vars: ${(0, ui_1.brand)('source .arkna/.env')}`,
|
|
278
|
+
`${(0, ui_1.dim)('3.')} Start your OpenClaw agent (it will auto-register with ARKNA on startup)`,
|
|
279
|
+
],
|
|
280
|
+
crewai: [
|
|
281
|
+
`${(0, ui_1.dim)('1.')} Add the import lines above to your CrewAI entrypoint`,
|
|
282
|
+
`${(0, ui_1.dim)('2.')} Set env vars: ${(0, ui_1.brand)('source .arkna/.env')}`,
|
|
283
|
+
`${(0, ui_1.dim)('3.')} Run your CrewAI agent (it will auto-register with ARKNA on startup)`,
|
|
284
|
+
],
|
|
285
|
+
langchain: [
|
|
286
|
+
`${(0, ui_1.dim)('1.')} Import ${(0, ui_1.brand)('get_arkna_tools()')} in your LangChain agent`,
|
|
287
|
+
`${(0, ui_1.dim)('2.')} Set env vars: ${(0, ui_1.brand)('source .arkna/.env')}`,
|
|
288
|
+
`${(0, ui_1.dim)('3.')} Run your LangChain agent (it will auto-register with ARKNA on startup)`,
|
|
289
|
+
],
|
|
290
|
+
custom: [
|
|
291
|
+
`${(0, ui_1.dim)('1.')} Add the API calls above to your agent code`,
|
|
292
|
+
`${(0, ui_1.dim)('2.')} Set env vars: ${(0, ui_1.brand)('source .arkna/.env')}`,
|
|
293
|
+
`${(0, ui_1.dim)('3.')} Start your agent \u2014 it must call ${(0, ui_1.brand)('POST /api/gateway/register')} on startup`,
|
|
294
|
+
],
|
|
295
|
+
}[platform] || [];
|
|
296
|
+
(0, ui_1.hint)([
|
|
297
|
+
`${(0, ui_1.brandBold)('WHAT HAPPENS NEXT:')}`,
|
|
298
|
+
` Your agent is not in ARKNA yet. It registers itself when it starts.`,
|
|
299
|
+
` Run these commands from your ${(0, ui_1.brandBold)('agent project directory')}:`,
|
|
300
|
+
'',
|
|
301
|
+
...platformHint.map(l => ` ${l}`),
|
|
302
|
+
'',
|
|
303
|
+
` ${(0, ui_1.dim)('Then verify:')}`,
|
|
304
|
+
` ${(0, ui_1.dim)('$')} arkna verify --watch ${(0, ui_1.dim)('# waits for your agent to register')}`,
|
|
305
|
+
]);
|
|
306
|
+
});
|
|
307
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyFpC,eAAO,MAAM,YAAY,SAiMrB,CAAC"}
|
|
@@ -0,0 +1,292 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loginCommand = void 0;
|
|
37
|
+
const commander_1 = require("commander");
|
|
38
|
+
const child_process_1 = require("child_process");
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const ui_1 = require("../lib/ui");
|
|
42
|
+
const connectivity_1 = require("../lib/connectivity");
|
|
43
|
+
const arkna_dir_1 = require("../lib/arkna-dir");
|
|
44
|
+
/**
|
|
45
|
+
* Resolve URL from (in priority order):
|
|
46
|
+
* 1. --url flag
|
|
47
|
+
* 2. ARKNA_URL env var
|
|
48
|
+
* 3. .arkna/.env file
|
|
49
|
+
* 4. Default
|
|
50
|
+
*/
|
|
51
|
+
function resolveUrl(flagUrl) {
|
|
52
|
+
if (flagUrl)
|
|
53
|
+
return flagUrl;
|
|
54
|
+
if (process.env.ARKNA_URL)
|
|
55
|
+
return process.env.ARKNA_URL;
|
|
56
|
+
const envCreds = (0, arkna_dir_1.readArknaEnv)();
|
|
57
|
+
if (envCreds?.url)
|
|
58
|
+
return envCreds.url;
|
|
59
|
+
return 'https://api.arkna.com.au';
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Write token to .arkna/.env (creates directory if needed)
|
|
63
|
+
*/
|
|
64
|
+
function writeTokenToEnv(url, token, baseDir) {
|
|
65
|
+
const dir = path.join(baseDir || process.cwd(), '.arkna');
|
|
66
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
67
|
+
const envPath = path.join(dir, '.env');
|
|
68
|
+
const envContent = `# ARKNA Agent Enrollment — Environment Variables
|
|
69
|
+
# This file is gitignored. Do NOT commit this file.
|
|
70
|
+
# Token created via: arkna login
|
|
71
|
+
ARKNA_URL=${url}
|
|
72
|
+
ARKNA_TOKEN=${token}
|
|
73
|
+
`;
|
|
74
|
+
fs.writeFileSync(envPath, envContent);
|
|
75
|
+
// Ensure .gitignore exists
|
|
76
|
+
const gitignorePath = path.join(dir, '.gitignore');
|
|
77
|
+
if (!fs.existsSync(gitignorePath)) {
|
|
78
|
+
fs.writeFileSync(gitignorePath, `# .arkna/ contains secrets — never commit any of it\n*\n!.gitignore\n`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Detect if we're in a headless environment (SSH, Docker, CI, no display)
|
|
83
|
+
*/
|
|
84
|
+
function isHeadless() {
|
|
85
|
+
// SSH session
|
|
86
|
+
if (process.env.SSH_CONNECTION || process.env.SSH_TTY)
|
|
87
|
+
return true;
|
|
88
|
+
// CI environments
|
|
89
|
+
if (process.env.CI || process.env.GITHUB_ACTIONS || process.env.GITLAB_CI)
|
|
90
|
+
return true;
|
|
91
|
+
// Docker / container
|
|
92
|
+
if (process.env.container || process.env.DOCKER_CONTAINER)
|
|
93
|
+
return true;
|
|
94
|
+
// Linux without display
|
|
95
|
+
if (process.platform === 'linux' && !process.env.DISPLAY && !process.env.WAYLAND_DISPLAY)
|
|
96
|
+
return true;
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Try to open a URL in the default browser. Returns true if attempted.
|
|
101
|
+
*/
|
|
102
|
+
function tryOpenBrowser(url) {
|
|
103
|
+
if (isHeadless())
|
|
104
|
+
return false;
|
|
105
|
+
const cmd = process.platform === 'darwin'
|
|
106
|
+
? `open "${url}"`
|
|
107
|
+
: process.platform === 'win32'
|
|
108
|
+
? `start "" "${url}"`
|
|
109
|
+
: `xdg-open "${url}"`;
|
|
110
|
+
(0, child_process_1.exec)(cmd, () => {
|
|
111
|
+
// Silently fail — user can open manually
|
|
112
|
+
});
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Sleep for ms milliseconds
|
|
117
|
+
*/
|
|
118
|
+
function sleep(ms) {
|
|
119
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
120
|
+
}
|
|
121
|
+
exports.loginCommand = new commander_1.Command('login')
|
|
122
|
+
.description('Authenticate the CLI via browser approval (no token pasting)')
|
|
123
|
+
.option('-u, --url <url>', 'ARKNA gateway URL (or set ARKNA_URL env var)')
|
|
124
|
+
.option('-n, --name <name>', 'Agent name (shown in token list)')
|
|
125
|
+
.action(async (options) => {
|
|
126
|
+
(0, ui_1.banner)();
|
|
127
|
+
// ── Resolve URL ──────────────────────────────────────────────────────
|
|
128
|
+
const url = resolveUrl(options.url);
|
|
129
|
+
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
|
130
|
+
(0, ui_1.errorBox)('Invalid gateway URL', [
|
|
131
|
+
`Got: ${url}`,
|
|
132
|
+
(0, ui_1.dim)('URL must start with http:// or https://'),
|
|
133
|
+
]);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
// ── Health check ─────────────────────────────────────────────────────
|
|
137
|
+
const healthSpinner = (0, ui_1.startSpinner)('Checking gateway...');
|
|
138
|
+
const health = await (0, connectivity_1.checkHealth)(url);
|
|
139
|
+
healthSpinner.stop();
|
|
140
|
+
if (!health.passed) {
|
|
141
|
+
(0, ui_1.errorBox)('Gateway unreachable', [
|
|
142
|
+
health.detail,
|
|
143
|
+
(0, ui_1.dim)(`URL: ${url}`),
|
|
144
|
+
]);
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
console.log(` ${(0, ui_1.brand)('✔')} Gateway reachable ${(0, ui_1.dim)(health.detail)}`);
|
|
148
|
+
// ── Request device code ──────────────────────────────────────────────
|
|
149
|
+
const codeSpinner = (0, ui_1.startSpinner)('Requesting device code...');
|
|
150
|
+
let deviceCode;
|
|
151
|
+
let verificationUri;
|
|
152
|
+
let verificationUriComplete;
|
|
153
|
+
try {
|
|
154
|
+
const resp = await fetch(`${url}/api/auth/device/code`, {
|
|
155
|
+
method: 'POST',
|
|
156
|
+
headers: { 'Content-Type': 'application/json' },
|
|
157
|
+
body: JSON.stringify({
|
|
158
|
+
cli_platform: `${process.platform}-${process.arch}`,
|
|
159
|
+
agent_name: options.name || undefined,
|
|
160
|
+
}),
|
|
161
|
+
});
|
|
162
|
+
if (!resp.ok) {
|
|
163
|
+
codeSpinner.stop();
|
|
164
|
+
const err = await resp.json().catch(() => ({ error: 'Request failed' }));
|
|
165
|
+
(0, ui_1.errorBox)('Failed to get device code', [
|
|
166
|
+
String(err.error || `HTTP ${resp.status}`),
|
|
167
|
+
]);
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
const data = await resp.json();
|
|
171
|
+
deviceCode = data.device_code;
|
|
172
|
+
verificationUri = data.verification_uri;
|
|
173
|
+
verificationUriComplete = data.verification_uri_complete;
|
|
174
|
+
codeSpinner.stop();
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
codeSpinner.stop();
|
|
178
|
+
(0, ui_1.errorBox)('Failed to get device code', [
|
|
179
|
+
err.message || 'Connection failed',
|
|
180
|
+
]);
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
// ── Display code ────────────────────────────────────────────────────
|
|
184
|
+
const headless = isHeadless();
|
|
185
|
+
(0, ui_1.divider)();
|
|
186
|
+
console.log('');
|
|
187
|
+
console.log(` ${(0, ui_1.brand)('▲')} Go to:`);
|
|
188
|
+
console.log(` ${(0, ui_1.brand)(verificationUri)}`);
|
|
189
|
+
console.log('');
|
|
190
|
+
console.log(` Enter code:`);
|
|
191
|
+
console.log('');
|
|
192
|
+
console.log(` ${(0, ui_1.brand)('┌──────────────┐')}`);
|
|
193
|
+
console.log(` ${(0, ui_1.brand)('│')} ${(0, ui_1.brand)(deviceCode)} ${(0, ui_1.brand)('│')}`);
|
|
194
|
+
console.log(` ${(0, ui_1.brand)('└──────────────┘')}`);
|
|
195
|
+
console.log('');
|
|
196
|
+
console.log(` ${(0, ui_1.dim)('Or open directly:')}`);
|
|
197
|
+
console.log(` ${(0, ui_1.dim)(verificationUriComplete)}`);
|
|
198
|
+
console.log('');
|
|
199
|
+
(0, ui_1.divider)();
|
|
200
|
+
// Try to open browser (skip on headless)
|
|
201
|
+
const opened = tryOpenBrowser(verificationUriComplete);
|
|
202
|
+
if (opened) {
|
|
203
|
+
console.log(` ${(0, ui_1.dim)('Opening browser...')}`);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
console.log(` ${(0, ui_1.dim)('Open the link above on any device, then approve.')}`);
|
|
207
|
+
}
|
|
208
|
+
// ── Poll for approval ────────────────────────────────────────────────
|
|
209
|
+
const pollSpinner = (0, ui_1.startSpinner)('Waiting for approval... (Ctrl+C to cancel)');
|
|
210
|
+
const maxAttempts = 180; // 15 minutes at 5s intervals
|
|
211
|
+
let token = null;
|
|
212
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
213
|
+
await sleep(5000);
|
|
214
|
+
try {
|
|
215
|
+
const resp = await fetch(`${url}/api/auth/device/token`, {
|
|
216
|
+
method: 'POST',
|
|
217
|
+
headers: { 'Content-Type': 'application/json' },
|
|
218
|
+
body: JSON.stringify({ device_code: deviceCode }),
|
|
219
|
+
});
|
|
220
|
+
if (resp.ok) {
|
|
221
|
+
const data = await resp.json();
|
|
222
|
+
token = data.token;
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
const body = await resp.json().catch(() => ({ error: 'unknown' }));
|
|
226
|
+
const error = body.error;
|
|
227
|
+
if (error === 'authorization_pending') {
|
|
228
|
+
// Keep polling
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
if (error === 'slow_down') {
|
|
232
|
+
// Wait an extra 5s before next attempt
|
|
233
|
+
await sleep(5000);
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
// Terminal errors
|
|
237
|
+
pollSpinner.stop();
|
|
238
|
+
if (error === 'expired_token') {
|
|
239
|
+
(0, ui_1.errorBox)('Code expired', [
|
|
240
|
+
(0, ui_1.dim)('The 15-minute window has passed.'),
|
|
241
|
+
(0, ui_1.dim)('Run `arkna login` again to get a new code.'),
|
|
242
|
+
]);
|
|
243
|
+
}
|
|
244
|
+
else if (error === 'access_denied') {
|
|
245
|
+
(0, ui_1.errorBox)('Login denied', [
|
|
246
|
+
(0, ui_1.dim)('The code was rejected in the browser.'),
|
|
247
|
+
]);
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
(0, ui_1.errorBox)('Login failed', [error || `HTTP ${resp.status}`]);
|
|
251
|
+
}
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
// Network error — keep trying
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
pollSpinner.stop();
|
|
260
|
+
if (!token) {
|
|
261
|
+
(0, ui_1.errorBox)('Timed out', [
|
|
262
|
+
(0, ui_1.dim)('No approval received within 15 minutes.'),
|
|
263
|
+
(0, ui_1.dim)('Run `arkna login` again to retry.'),
|
|
264
|
+
]);
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
// ── Write token ──────────────────────────────────────────────────────
|
|
268
|
+
writeTokenToEnv(url, token);
|
|
269
|
+
console.log('');
|
|
270
|
+
(0, ui_1.successBox)('AUTHENTICATED', [
|
|
271
|
+
`${(0, ui_1.dim)('Token:')} ${(0, ui_1.maskToken)(token)}`,
|
|
272
|
+
`${(0, ui_1.dim)('Gateway:')} ${url}`,
|
|
273
|
+
`${(0, ui_1.dim)('Saved to:')} .arkna/.env`,
|
|
274
|
+
`${(0, ui_1.dim)('Expires:')} 30 days`,
|
|
275
|
+
]);
|
|
276
|
+
// Warn if stale ARKNA_TOKEN env var will shadow the fresh token
|
|
277
|
+
if (process.env.ARKNA_TOKEN && process.env.ARKNA_TOKEN !== token) {
|
|
278
|
+
console.log('');
|
|
279
|
+
console.log(` ${(0, ui_1.warn)('\u26A0')} ${(0, ui_1.warn)('ARKNA_TOKEN env var contains a different token.')}`);
|
|
280
|
+
console.log(` ${(0, ui_1.dim)(' The CLI will use the env var instead of the fresh token.')}`);
|
|
281
|
+
console.log(` ${(0, ui_1.dim)(' Fix:')} ${(0, ui_1.brand)('unset ARKNA_TOKEN')} ${(0, ui_1.dim)('or:')} ${(0, ui_1.brand)('source .arkna/.env')}`);
|
|
282
|
+
}
|
|
283
|
+
(0, ui_1.hint)([
|
|
284
|
+
`${(0, ui_1.brand)('NEXT:')} Connect your agent:`,
|
|
285
|
+
'',
|
|
286
|
+
` ${(0, ui_1.dim)('$')} arkna connect openclaw -n "My Agent"`,
|
|
287
|
+
` ${(0, ui_1.dim)('$')} arkna connect crewai -n "My Agent"`,
|
|
288
|
+
` ${(0, ui_1.dim)('$')} arkna connect langchain -n "My Agent"`,
|
|
289
|
+
` ${(0, ui_1.dim)('$')} arkna connect custom -n "My Agent"`,
|
|
290
|
+
]);
|
|
291
|
+
});
|
|
292
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|