@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/index.js
CHANGED
|
@@ -146,6 +146,8 @@ function saveApiKey(apiKey) {
|
|
|
146
146
|
saveCredentialsFile({ ...loadCredentialsFile(), apiKey });
|
|
147
147
|
}
|
|
148
148
|
function loadRunnerToken(agentOsId) {
|
|
149
|
+
const envToken = process.env.KYNVER_RUNNER_TOKEN?.trim();
|
|
150
|
+
if (envToken) return envToken;
|
|
149
151
|
const creds = loadCredentialsFile();
|
|
150
152
|
if (!creds.runnerToken) return void 0;
|
|
151
153
|
if (agentOsId && creds.runnerTokenAgentOsId && creds.runnerTokenAgentOsId !== agentOsId) {
|
|
@@ -161,11 +163,15 @@ function saveRunnerToken(agentOsId, token) {
|
|
|
161
163
|
});
|
|
162
164
|
}
|
|
163
165
|
function resolveBaseUrl(argsBaseUrl) {
|
|
164
|
-
const baseUrl = argsBaseUrl
|
|
166
|
+
const baseUrl = resolveConfiguredBaseUrl(argsBaseUrl);
|
|
165
167
|
if (!baseUrl) failConfig("requires --base-url, KYNVER_API_URL, OPENCLAW_CRON_FIRE_BASE_URL, or ~/.kynver/config.json apiBaseUrl");
|
|
166
|
-
return
|
|
168
|
+
return baseUrl;
|
|
167
169
|
}
|
|
168
|
-
function
|
|
170
|
+
function resolveConfiguredBaseUrl(argsBaseUrl) {
|
|
171
|
+
const baseUrl = argsBaseUrl || process.env.KYNVER_API_URL || process.env.OPENCLAW_CRON_FIRE_BASE_URL || loadUserConfig().apiBaseUrl;
|
|
172
|
+
return baseUrl ? trimTrailingSlash(String(baseUrl)) : void 0;
|
|
173
|
+
}
|
|
174
|
+
function resolveConfiguredCallbackSecret(argsSecret, agentOsId) {
|
|
169
175
|
const scoped = argsSecret || loadRunnerToken(agentOsId) || loadRunnerToken(loadUserConfig().agentOsId);
|
|
170
176
|
if (scoped) return String(scoped);
|
|
171
177
|
const globalSecret = process.env.KYNVER_RUNTIME_SECRET || process.env.OPENCLAW_CRON_SECRET;
|
|
@@ -175,8 +181,31 @@ function resolveCallbackSecret(argsSecret, agentOsId) {
|
|
|
175
181
|
);
|
|
176
182
|
return String(globalSecret);
|
|
177
183
|
}
|
|
184
|
+
return void 0;
|
|
185
|
+
}
|
|
186
|
+
function resolveCallbackSecret(argsSecret, agentOsId) {
|
|
187
|
+
const configured = resolveConfiguredCallbackSecret(argsSecret, agentOsId);
|
|
188
|
+
if (configured) return configured;
|
|
189
|
+
failConfig(
|
|
190
|
+
"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"
|
|
191
|
+
);
|
|
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
|
+
}
|
|
178
207
|
failConfig(
|
|
179
|
-
"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"
|
|
180
209
|
);
|
|
181
210
|
}
|
|
182
211
|
async function fetchRunnerCredential(agentOsId, opts) {
|
|
@@ -1050,7 +1079,7 @@ async function dispatchRun(args) {
|
|
|
1050
1079
|
const run = loadRun(String(required(String(args.run || ""), "--run")));
|
|
1051
1080
|
const agentOsId = String(required(String(args.agentOsId || ""), "--agent-os-id"));
|
|
1052
1081
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1053
|
-
const secret =
|
|
1082
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1054
1083
|
const execute = args.execute === true || args.execute === "true";
|
|
1055
1084
|
const dryRun = !execute;
|
|
1056
1085
|
const leaseOwner = `openclaw-harness:${run.id}`;
|
|
@@ -1278,7 +1307,7 @@ async function sweepRun(args) {
|
|
|
1278
1307
|
const run = loadRun(String(required(String(args.run || ""), "--run")));
|
|
1279
1308
|
const agentOsId = String(required(String(args.agentOsId || ""), "--agent-os-id"));
|
|
1280
1309
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1281
|
-
const secret =
|
|
1310
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1282
1311
|
const leaseOwner = `openclaw-harness:${run.id}`;
|
|
1283
1312
|
const releasedLocalOrphans = [];
|
|
1284
1313
|
for (const name of Object.keys(run.workers || {})) {
|
|
@@ -1339,7 +1368,7 @@ async function tryCompleteWorker(args) {
|
|
|
1339
1368
|
return { ok: true, skipped: true, reason: "worker-not-finished" };
|
|
1340
1369
|
}
|
|
1341
1370
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1342
|
-
const secret =
|
|
1371
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1343
1372
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(agentOsId)}/harness/completion`;
|
|
1344
1373
|
const body = {
|
|
1345
1374
|
source: "openclaw-harness",
|
|
@@ -1501,7 +1530,7 @@ import path12 from "node:path";
|
|
|
1501
1530
|
// src/plan-progress-sync.ts
|
|
1502
1531
|
async function syncPlanProgress(args) {
|
|
1503
1532
|
const base = resolveBaseUrl(args.baseUrl);
|
|
1504
|
-
const secret =
|
|
1533
|
+
const secret = await resolveCallbackSecretWithMint(args.secret, args.agentOsId, { baseUrl: base });
|
|
1505
1534
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(args.agentOsId)}/tasks/${encodeURIComponent(args.taskId)}/plan-progress-sync`;
|
|
1506
1535
|
const res = await postJson(url, secret, {
|
|
1507
1536
|
phase: args.phase,
|
|
@@ -1550,7 +1579,7 @@ async function syncActiveWorkerPlanProgress(runId, args) {
|
|
|
1550
1579
|
// src/workspace-runtime-config.ts
|
|
1551
1580
|
async function fetchWorkspaceRuntimePreferences(agentOsId, args) {
|
|
1552
1581
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1553
|
-
const secret =
|
|
1582
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1554
1583
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(agentOsId)}/runtime`;
|
|
1555
1584
|
try {
|
|
1556
1585
|
const res = await getJson(url, secret);
|
|
@@ -1593,7 +1622,7 @@ async function completeFinishedWorkers(runId, args) {
|
|
|
1593
1622
|
}
|
|
1594
1623
|
async function postOperatorTick(agentOsId, runId, resourceGate, args) {
|
|
1595
1624
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1596
|
-
const secret =
|
|
1625
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1597
1626
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(agentOsId)}/operator/tick`;
|
|
1598
1627
|
const res = await postJson(url, secret, {
|
|
1599
1628
|
agentOsId,
|
|
@@ -1717,7 +1746,7 @@ async function emitPlanProgress(args) {
|
|
|
1717
1746
|
evidence.push(parseEvidenceArg(rawEvidence));
|
|
1718
1747
|
}
|
|
1719
1748
|
const base = resolveBaseUrl(args.baseUrl ? String(args.baseUrl) : void 0);
|
|
1720
|
-
const secret =
|
|
1749
|
+
const secret = await resolveCallbackSecretWithMint(args.secret ? String(args.secret) : void 0, agentOsId, { baseUrl: base });
|
|
1721
1750
|
const url = `${base}/api/agent-os/by-id/${encodeURIComponent(agentOsId)}/plans/${encodeURIComponent(planId)}/progress-events`;
|
|
1722
1751
|
const cfg = loadUserConfig();
|
|
1723
1752
|
const provider = cfg.workerProvider ? `provider:${cfg.workerProvider}` : void 0;
|
|
@@ -1884,6 +1913,7 @@ export {
|
|
|
1884
1913
|
redactHarness,
|
|
1885
1914
|
resolveBaseUrl,
|
|
1886
1915
|
resolveCallbackSecret,
|
|
1916
|
+
resolveCallbackSecretWithMint,
|
|
1887
1917
|
resolveHarnessRoot,
|
|
1888
1918
|
runDaemon,
|
|
1889
1919
|
runStatus,
|