@kynver-app/runtime 0.1.8 → 0.1.9
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/cli.js +33 -11
- package/dist/cli.js.map +2 -2
- package/dist/index.js +41 -11
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -153,6 +153,8 @@ function saveApiKey(apiKey) {
|
|
|
153
153
|
saveCredentialsFile({ ...loadCredentialsFile(), apiKey });
|
|
154
154
|
}
|
|
155
155
|
function loadRunnerToken(agentOsId) {
|
|
156
|
+
const envToken = process.env.KYNVER_RUNNER_TOKEN?.trim();
|
|
157
|
+
if (envToken) return envToken;
|
|
156
158
|
const creds = loadCredentialsFile();
|
|
157
159
|
if (!creds.runnerToken) return void 0;
|
|
158
160
|
if (agentOsId && creds.runnerTokenAgentOsId && creds.runnerTokenAgentOsId !== agentOsId) {
|
|
@@ -168,11 +170,15 @@ function saveRunnerToken(agentOsId, token) {
|
|
|
168
170
|
});
|
|
169
171
|
}
|
|
170
172
|
function resolveBaseUrl(argsBaseUrl) {
|
|
171
|
-
const baseUrl = argsBaseUrl
|
|
173
|
+
const baseUrl = resolveConfiguredBaseUrl(argsBaseUrl);
|
|
172
174
|
if (!baseUrl) failConfig("requires --base-url, KYNVER_API_URL, OPENCLAW_CRON_FIRE_BASE_URL, or ~/.kynver/config.json apiBaseUrl");
|
|
173
|
-
return
|
|
175
|
+
return baseUrl;
|
|
176
|
+
}
|
|
177
|
+
function resolveConfiguredBaseUrl(argsBaseUrl) {
|
|
178
|
+
const baseUrl = argsBaseUrl || process.env.KYNVER_API_URL || process.env.OPENCLAW_CRON_FIRE_BASE_URL || loadUserConfig().apiBaseUrl;
|
|
179
|
+
return baseUrl ? trimTrailingSlash(String(baseUrl)) : void 0;
|
|
174
180
|
}
|
|
175
|
-
function
|
|
181
|
+
function resolveConfiguredCallbackSecret(argsSecret, agentOsId) {
|
|
176
182
|
const scoped = argsSecret || loadRunnerToken(agentOsId) || loadRunnerToken(loadUserConfig().agentOsId);
|
|
177
183
|
if (scoped) return String(scoped);
|
|
178
184
|
const globalSecret = process.env.KYNVER_RUNTIME_SECRET || process.env.OPENCLAW_CRON_SECRET;
|
|
@@ -182,8 +188,24 @@ function resolveCallbackSecret(argsSecret, agentOsId) {
|
|
|
182
188
|
);
|
|
183
189
|
return String(globalSecret);
|
|
184
190
|
}
|
|
191
|
+
return void 0;
|
|
192
|
+
}
|
|
193
|
+
async function resolveCallbackSecretWithMint(argsSecret, agentOsId, opts) {
|
|
194
|
+
const configured = resolveConfiguredCallbackSecret(argsSecret, agentOsId);
|
|
195
|
+
if (configured) return configured;
|
|
196
|
+
const apiKey = loadApiKey();
|
|
197
|
+
const baseUrl = resolveConfiguredBaseUrl(opts?.baseUrl);
|
|
198
|
+
if (apiKey && agentOsId && baseUrl) {
|
|
199
|
+
try {
|
|
200
|
+
const token = await fetchRunnerCredential(agentOsId, { baseUrl, apiKey });
|
|
201
|
+
saveRunnerToken(agentOsId, token);
|
|
202
|
+
return token;
|
|
203
|
+
} catch (error) {
|
|
204
|
+
failConfig(`runner credential mint failed: ${error.message}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
185
207
|
failConfig(
|
|
186
|
-
"requires --secret, a scoped runner token (`kynver runner credential`), ~/.kynver/credentials runnerToken, or (legacy) KYNVER_RUNTIME_SECRET / OPENCLAW_CRON_SECRET"
|
|
208
|
+
"requires --secret, KYNVER_RUNNER_TOKEN, a scoped runner token (`kynver runner credential`), ~/.kynver/credentials runnerToken, KYNVER_API_KEY with an API base URL to mint one, or (legacy) KYNVER_RUNTIME_SECRET / OPENCLAW_CRON_SECRET"
|
|
187
209
|
);
|
|
188
210
|
}
|
|
189
211
|
async function fetchRunnerCredential(agentOsId, opts) {
|
|
@@ -1057,7 +1079,7 @@ async function dispatchRun(args) {
|
|
|
1057
1079
|
const run = loadRun(String(required(String(args.run || ""), "--run")));
|
|
1058
1080
|
const agentOsId = String(required(String(args.agentOsId || ""), "--agent-os-id"));
|
|
1059
1081
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1060
|
-
const secret =
|
|
1082
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1061
1083
|
const execute = args.execute === true || args.execute === "true";
|
|
1062
1084
|
const dryRun = !execute;
|
|
1063
1085
|
const leaseOwner = `openclaw-harness:${run.id}`;
|
|
@@ -1201,7 +1223,7 @@ async function sweepRun(args) {
|
|
|
1201
1223
|
const run = loadRun(String(required(String(args.run || ""), "--run")));
|
|
1202
1224
|
const agentOsId = String(required(String(args.agentOsId || ""), "--agent-os-id"));
|
|
1203
1225
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1204
|
-
const secret =
|
|
1226
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1205
1227
|
const leaseOwner = `openclaw-harness:${run.id}`;
|
|
1206
1228
|
const releasedLocalOrphans = [];
|
|
1207
1229
|
for (const name of Object.keys(run.workers || {})) {
|
|
@@ -1319,7 +1341,7 @@ async function tryCompleteWorker(args) {
|
|
|
1319
1341
|
return { ok: true, skipped: true, reason: "worker-not-finished" };
|
|
1320
1342
|
}
|
|
1321
1343
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1322
|
-
const secret =
|
|
1344
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1323
1345
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(agentOsId)}/harness/completion`;
|
|
1324
1346
|
const body = {
|
|
1325
1347
|
source: "openclaw-harness",
|
|
@@ -1476,7 +1498,7 @@ import path12 from "node:path";
|
|
|
1476
1498
|
// src/plan-progress-sync.ts
|
|
1477
1499
|
async function syncPlanProgress(args) {
|
|
1478
1500
|
const base = resolveBaseUrl(args.baseUrl);
|
|
1479
|
-
const secret =
|
|
1501
|
+
const secret = await resolveCallbackSecretWithMint(args.secret, args.agentOsId, { baseUrl: base });
|
|
1480
1502
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(args.agentOsId)}/tasks/${encodeURIComponent(args.taskId)}/plan-progress-sync`;
|
|
1481
1503
|
const res = await postJson(url, secret, {
|
|
1482
1504
|
phase: args.phase,
|
|
@@ -1525,7 +1547,7 @@ async function syncActiveWorkerPlanProgress(runId, args) {
|
|
|
1525
1547
|
// src/workspace-runtime-config.ts
|
|
1526
1548
|
async function fetchWorkspaceRuntimePreferences(agentOsId, args) {
|
|
1527
1549
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1528
|
-
const secret =
|
|
1550
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1529
1551
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(agentOsId)}/runtime`;
|
|
1530
1552
|
try {
|
|
1531
1553
|
const res = await getJson(url, secret);
|
|
@@ -1568,7 +1590,7 @@ async function completeFinishedWorkers(runId, args) {
|
|
|
1568
1590
|
}
|
|
1569
1591
|
async function postOperatorTick(agentOsId, runId, resourceGate, args) {
|
|
1570
1592
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1571
|
-
const secret =
|
|
1593
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1572
1594
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(agentOsId)}/operator/tick`;
|
|
1573
1595
|
const res = await postJson(url, secret, {
|
|
1574
1596
|
agentOsId,
|
|
@@ -1692,7 +1714,7 @@ async function emitPlanProgress(args) {
|
|
|
1692
1714
|
evidence.push(parseEvidenceArg(rawEvidence));
|
|
1693
1715
|
}
|
|
1694
1716
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1695
|
-
const secret =
|
|
1717
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1696
1718
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(agentOsId)}/plans/${encodeURIComponent(planId)}/progress-events`;
|
|
1697
1719
|
const cfg = loadUserConfig();
|
|
1698
1720
|
const provider = cfg.workerProvider ? `provider:${cfg.workerProvider}` : void 0;
|