@arinova-ai/cli 0.0.18 → 0.0.20
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-openclaw.d.ts","sourceRoot":"","sources":["../../src/commands/setup-openclaw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-openclaw.d.ts","sourceRoot":"","sources":["../../src/commands/setup-openclaw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyP5D"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, copyFileSync, existsSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
|
-
import { get, post } from "../client.js";
|
|
5
4
|
import { getApiKey, getEndpoint } from "../config.js";
|
|
6
5
|
import { printSuccess, printError } from "../output.js";
|
|
7
6
|
export function registerSetupOpenclaw(program) {
|
|
@@ -13,6 +12,30 @@ export function registerSetupOpenclaw(program) {
|
|
|
13
12
|
.option("--api-url <url>", "Arinova API URL for channel config")
|
|
14
13
|
.action(async (opts) => {
|
|
15
14
|
try {
|
|
15
|
+
// Resolve API base: local --api-url > global --api-url/--staging > config
|
|
16
|
+
const globalOpts = program.optsWithGlobals();
|
|
17
|
+
const apiBase = (opts.apiUrl ?? globalOpts.apiUrl ?? getEndpoint()).replace(/\/+$/, "");
|
|
18
|
+
// Helper functions that use resolved base
|
|
19
|
+
const apiHeaders = () => {
|
|
20
|
+
const key = getApiKey();
|
|
21
|
+
return { Authorization: `Bearer ${key}`, "Content-Type": "application/json" };
|
|
22
|
+
};
|
|
23
|
+
const apiGet = async (path) => {
|
|
24
|
+
const res = await fetch(`${apiBase}${path}`, { method: "GET", headers: apiHeaders() });
|
|
25
|
+
if (!res.ok)
|
|
26
|
+
throw new Error(`HTTP ${res.status}`);
|
|
27
|
+
return res.json();
|
|
28
|
+
};
|
|
29
|
+
const apiPost = async (path, body) => {
|
|
30
|
+
const res = await fetch(`${apiBase}${path}`, {
|
|
31
|
+
method: "POST", headers: apiHeaders(),
|
|
32
|
+
body: body != null ? JSON.stringify(body) : undefined,
|
|
33
|
+
});
|
|
34
|
+
if (!res.ok)
|
|
35
|
+
throw new Error(`HTTP ${res.status}`);
|
|
36
|
+
return res.json();
|
|
37
|
+
};
|
|
38
|
+
console.log(`Using API endpoint: ${apiBase}`);
|
|
16
39
|
// 1. Check auth
|
|
17
40
|
const apiKey = getApiKey();
|
|
18
41
|
if (!apiKey) {
|
|
@@ -55,14 +78,15 @@ export function registerSetupOpenclaw(program) {
|
|
|
55
78
|
return;
|
|
56
79
|
}
|
|
57
80
|
console.log(`Found ${agents.length} agent(s) in openclaw.json: ${agents.map((a) => a.name).join(", ")}`);
|
|
58
|
-
// 6. Get existing bots from Arinova
|
|
81
|
+
// 6. Get existing bots from Arinova (use /api/agents for owned agents with name field)
|
|
59
82
|
let remoteBots = [];
|
|
60
83
|
try {
|
|
61
|
-
const data = await
|
|
84
|
+
const data = await apiGet("/api/agents");
|
|
62
85
|
const raw = data;
|
|
63
|
-
const list = raw.
|
|
86
|
+
const list = raw.agents ?? data;
|
|
64
87
|
if (Array.isArray(list)) {
|
|
65
|
-
|
|
88
|
+
// Filter to entries that have at least an id and name
|
|
89
|
+
remoteBots = list.filter((b) => b.id && (b.name || b.agent_name));
|
|
66
90
|
}
|
|
67
91
|
}
|
|
68
92
|
catch (err) {
|
|
@@ -70,8 +94,9 @@ export function registerSetupOpenclaw(program) {
|
|
|
70
94
|
}
|
|
71
95
|
console.log(`Found ${remoteBots.length} existing bot(s) on Arinova`);
|
|
72
96
|
// 7. Match agents to bots and collect tokens
|
|
73
|
-
|
|
74
|
-
|
|
97
|
+
// channelApiUrl: the URL written into openclaw.json for the plugin
|
|
98
|
+
const channelApiUrl = apiBase.startsWith("https://api.") ? apiBase : (() => {
|
|
99
|
+
const endpoint = apiBase;
|
|
75
100
|
// Convert chat.arinova.ai -> api.chat.arinova.ai
|
|
76
101
|
// Convert chat-staging.arinova.ai -> api.chat-staging.arinova.ai
|
|
77
102
|
try {
|
|
@@ -98,19 +123,19 @@ export function registerSetupOpenclaw(program) {
|
|
|
98
123
|
continue;
|
|
99
124
|
}
|
|
100
125
|
// Try to match by name (case-insensitive)
|
|
101
|
-
const match = remoteBots.find((b) => b.agent_name.toLowerCase() === agent.name.toLowerCase());
|
|
126
|
+
const match = remoteBots.find((b) => (b.name ?? b.agent_name ?? "").toLowerCase() === agent.name.toLowerCase());
|
|
102
127
|
let token;
|
|
103
128
|
if (match) {
|
|
104
|
-
token = match.botToken ?? match.secret_token;
|
|
129
|
+
token = match.botToken ?? match.secretToken ?? match.secret_token;
|
|
105
130
|
if (token) {
|
|
106
|
-
summary.push({ agent: agent.name, action: `matched existing bot "${match.agent_name}"` });
|
|
131
|
+
summary.push({ agent: agent.name, action: `matched existing bot "${match.name ?? match.agent_name}"` });
|
|
107
132
|
}
|
|
108
133
|
}
|
|
109
134
|
if (!token) {
|
|
110
135
|
// Create a new bot
|
|
111
136
|
console.log(`Creating bot for agent "${agent.name}"...`);
|
|
112
137
|
try {
|
|
113
|
-
const created = (await
|
|
138
|
+
const created = (await apiPost("/api/agents", {
|
|
114
139
|
name: agent.name,
|
|
115
140
|
description: "OpenClaw agent",
|
|
116
141
|
}));
|
|
@@ -154,7 +179,16 @@ export function registerSetupOpenclaw(program) {
|
|
|
154
179
|
apiUrl: channelApiUrl,
|
|
155
180
|
accounts: accountsConfig,
|
|
156
181
|
};
|
|
157
|
-
// 10.
|
|
182
|
+
// 10. Ensure plugins.allow includes openclaw-arinova-ai
|
|
183
|
+
if (!config.plugins) {
|
|
184
|
+
config.plugins = {};
|
|
185
|
+
}
|
|
186
|
+
const allow = (config.plugins.allow ?? []);
|
|
187
|
+
if (!allow.includes("openclaw-arinova-ai")) {
|
|
188
|
+
allow.push("openclaw-arinova-ai");
|
|
189
|
+
config.plugins.allow = allow;
|
|
190
|
+
}
|
|
191
|
+
// 11. Write bindings — ensure each agent has a binding
|
|
158
192
|
if (!config.bindings) {
|
|
159
193
|
config.bindings = [];
|
|
160
194
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-openclaw.js","sourceRoot":"","sources":["../../src/commands/setup-openclaw.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"setup-openclaw.js","sourceRoot":"","sources":["../../src/commands/setup-openclaw.ts"],"names":[],"mappings":"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"}
|