@perkos/perkos-a2a 0.12.64 → 0.12.66
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/a2a-maintenance.d.ts +3 -6
- package/dist/a2a-maintenance.d.ts.map +1 -1
- package/dist/a2a-maintenance.js +2 -18
- package/dist/a2a-maintenance.js.map +1 -1
- package/dist/a2a-maintenance.test.js +10 -0
- package/dist/a2a-maintenance.test.js.map +1 -1
- package/dist/index.js +18 -30
- package/dist/index.js.map +4 -4
- package/dist/platform-control-plane.d.ts +9 -0
- package/dist/platform-control-plane.d.ts.map +1 -0
- package/dist/platform-control-plane.js +25 -0
- package/dist/platform-control-plane.js.map +1 -0
- package/dist/platform-control-plane.test.d.ts +2 -0
- package/dist/platform-control-plane.test.d.ts.map +1 -0
- package/dist/platform-control-plane.test.js +32 -0
- package/dist/platform-control-plane.test.js.map +1 -0
- package/dist/voice-capability.d.ts.map +1 -1
- package/dist/voice-capability.js +3 -20
- package/dist/voice-capability.js.map +1 -1
- package/docs/plans/2026-09-02-runtime-env-control-plane-design.md +15 -0
- package/docs/plans/2026-09-02-voice-0.1.1-resolution-design.md +20 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { A2APluginConfig } from "./types.js";
|
|
2
|
+
import { resolvePlatformControlPlane, type PlatformControlPlane } from "./platform-control-plane.js";
|
|
2
3
|
export declare const PERKOS_A2A_UPDATE_PREFIX: "PERKOS_A2A_UPDATE:";
|
|
3
4
|
export type A2AUpdateMarker = {
|
|
4
5
|
requestId: string;
|
|
@@ -21,13 +22,9 @@ export type MaintenanceReceipt = {
|
|
|
21
22
|
installedVersion?: string;
|
|
22
23
|
errorCode?: string;
|
|
23
24
|
};
|
|
24
|
-
type ControlPlane =
|
|
25
|
-
apiBaseUrl: string;
|
|
26
|
-
agentId: string;
|
|
27
|
-
relayApiKey: string;
|
|
28
|
-
};
|
|
25
|
+
type ControlPlane = PlatformControlPlane;
|
|
29
26
|
export declare function parseA2AUpdateMarker(message: string): A2AUpdateMarker | null;
|
|
30
|
-
export declare
|
|
27
|
+
export declare const maintenanceControlPlane: typeof resolvePlatformControlPlane;
|
|
31
28
|
declare function claimRequest(target: ControlPlane, requestId: string, bridgeInstanceId: string): Promise<{
|
|
32
29
|
targetVersion: string;
|
|
33
30
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-maintenance.d.ts","sourceRoot":"","sources":["../src/a2a-maintenance.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"a2a-maintenance.d.ts","sourceRoot":"","sources":["../src/a2a-maintenance.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAErG,eAAO,MAAM,wBAAwB,EAAG,oBAA6B,CAAC;AAItE,MAAM,MAAM,eAAe,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG,oBAAoB,CAAC;AAEzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAQ5E;AAED,eAAO,MAAM,uBAAuB,oCAA8B,CAAC;AA6BnE,iBAAe,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAWjI;AAED,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAUlF;AAED,oEAAoE;AACpE,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,IAAI,GAAE;IACJ,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACrC,GACL,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BxB;AAiBD,2EAA2E;AAC3E,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBrF"}
|
package/dist/a2a-maintenance.js
CHANGED
|
@@ -3,6 +3,7 @@ import { chmod, mkdir, readdir, readFile, rename, unlink, writeFile } from "node
|
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { resolvePlatformControlPlane } from "./platform-control-plane.js";
|
|
6
7
|
export const PERKOS_A2A_UPDATE_PREFIX = "PERKOS_A2A_UPDATE:";
|
|
7
8
|
const REQUEST_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
8
9
|
const BRIDGE_INSTANCE_ID = REQUEST_ID;
|
|
@@ -16,24 +17,7 @@ export function parseA2AUpdateMarker(message) {
|
|
|
16
17
|
? { requestId, bridgeInstanceId }
|
|
17
18
|
: null;
|
|
18
19
|
}
|
|
19
|
-
export
|
|
20
|
-
const heartbeat = config.platform?.heartbeatUrl;
|
|
21
|
-
const relayApiKey = config.relay?.apiKey || config.chat?.apiKey;
|
|
22
|
-
if (!heartbeat || !relayApiKey)
|
|
23
|
-
return null;
|
|
24
|
-
let url;
|
|
25
|
-
try {
|
|
26
|
-
url = new URL(heartbeat);
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
const match = url.pathname.match(/^(.*)\/agents\/([^/]+)\/heartbeat\/?$/u);
|
|
32
|
-
const agentId = config.platform?.agentId || (match ? decodeURIComponent(match[2]) : "");
|
|
33
|
-
if (!match || !agentId)
|
|
34
|
-
return null;
|
|
35
|
-
return { apiBaseUrl: `${url.origin}${match[1]}`, agentId, relayApiKey };
|
|
36
|
-
}
|
|
20
|
+
export const maintenanceControlPlane = resolvePlatformControlPlane;
|
|
37
21
|
function maintenanceRoot(agentId) {
|
|
38
22
|
return join(homedir(), ".perkos", "a2a", "hermes", agentId, "maintenance");
|
|
39
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-maintenance.js","sourceRoot":"","sources":["../src/a2a-maintenance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"a2a-maintenance.js","sourceRoot":"","sources":["../src/a2a-maintenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,16 @@ describe("managed A2A update marker", () => {
|
|
|
29
29
|
relayApiKey: "rk_private",
|
|
30
30
|
});
|
|
31
31
|
});
|
|
32
|
+
it("derives the control plane from the service environment used by Hermes", () => {
|
|
33
|
+
expect(maintenanceControlPlane({ ...config(), relay: undefined, chat: undefined, platform: undefined }, {
|
|
34
|
+
PERKOS_HEARTBEAT_URL: "https://dev.api.perkos.xyz/agents/agent-athena/heartbeat",
|
|
35
|
+
A2A_RELAY_API_KEY: "rk_env",
|
|
36
|
+
})).toEqual({
|
|
37
|
+
apiBaseUrl: "https://dev.api.perkos.xyz",
|
|
38
|
+
agentId: "agent-athena",
|
|
39
|
+
relayApiKey: "rk_env",
|
|
40
|
+
});
|
|
41
|
+
});
|
|
32
42
|
it("claims and queues before returning a fixed acknowledgement", async () => {
|
|
33
43
|
const claim = vi.fn().mockResolvedValue({ targetVersion: "0.12.64" });
|
|
34
44
|
const queue = vi.fn().mockResolvedValue(undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-maintenance.test.js","sourceRoot":"","sources":["../src/a2a-maintenance.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"a2a-maintenance.test.js","sourceRoot":"","sources":["../src/a2a-maintenance.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -29244,18 +29244,10 @@ function usesHttpDelivery(runtimeKind) {
|
|
|
29244
29244
|
return runtimeKind === "hermes" || runtimeKind === "hermes-api" || runtimeKind === "zeroclaw" || runtimeKind === "custom";
|
|
29245
29245
|
}
|
|
29246
29246
|
|
|
29247
|
-
// src/
|
|
29248
|
-
|
|
29249
|
-
|
|
29250
|
-
|
|
29251
|
-
if (runtimeKind === "hermes" || runtimeKind === "hermes-api") return "hermes";
|
|
29252
|
-
if (runtimeKind === "openclaw") return "openclaw";
|
|
29253
|
-
if (runtimeKind === "zeroclaw") return "zeroclaw";
|
|
29254
|
-
return null;
|
|
29255
|
-
}
|
|
29256
|
-
function controlPlane(config) {
|
|
29257
|
-
const heartbeat = config.platform?.heartbeatUrl;
|
|
29258
|
-
const relayApiKey = config.relay?.apiKey || config.chat?.apiKey;
|
|
29247
|
+
// src/platform-control-plane.ts
|
|
29248
|
+
function resolvePlatformControlPlane(config, env = process.env) {
|
|
29249
|
+
const heartbeat = config.platform?.heartbeatUrl?.trim() || env.PERKOS_HEARTBEAT_URL?.trim();
|
|
29250
|
+
const relayApiKey = config.relay?.apiKey?.trim() || config.chat?.apiKey?.trim() || env.A2A_RELAY_API_KEY?.trim() || env.A2A_CHAT_API_KEY?.trim();
|
|
29259
29251
|
if (!heartbeat || !relayApiKey) return null;
|
|
29260
29252
|
let url;
|
|
29261
29253
|
try {
|
|
@@ -29264,13 +29256,23 @@ function controlPlane(config) {
|
|
|
29264
29256
|
return null;
|
|
29265
29257
|
}
|
|
29266
29258
|
const match = url.pathname.match(/^(.*)\/agents\/([^/]+)\/heartbeat\/?$/u);
|
|
29267
|
-
const agentId = config.platform?.agentId || (match ? decodeURIComponent(match[2]) : "");
|
|
29259
|
+
const agentId = config.platform?.agentId?.trim() || (match ? decodeURIComponent(match[2]) : "") || env.PERKOS_AGENT_ID?.trim();
|
|
29268
29260
|
if (!match || !agentId) return null;
|
|
29269
29261
|
return { apiBaseUrl: `${url.origin}${match[1]}`, agentId, relayApiKey };
|
|
29270
29262
|
}
|
|
29263
|
+
|
|
29264
|
+
// src/voice-capability.ts
|
|
29265
|
+
var PERKOS_VOICE_PROBE_MARKER = "PERKOS_VOICE_PROBE";
|
|
29266
|
+
var PERKOS_VOICE_ENROLL_MARKER = "PERKOS_VOICE_ENROLL";
|
|
29267
|
+
function runtime(runtimeKind) {
|
|
29268
|
+
if (runtimeKind === "hermes" || runtimeKind === "hermes-api") return "hermes";
|
|
29269
|
+
if (runtimeKind === "openclaw") return "openclaw";
|
|
29270
|
+
if (runtimeKind === "zeroclaw") return "zeroclaw";
|
|
29271
|
+
return null;
|
|
29272
|
+
}
|
|
29271
29273
|
async function reportPluginMissing(message, config) {
|
|
29272
29274
|
if (message !== PERKOS_VOICE_PROBE_MARKER) return "PERKOS_VOICE_FAILED:voice_plugin_missing";
|
|
29273
|
-
const target =
|
|
29275
|
+
const target = resolvePlatformControlPlane(config);
|
|
29274
29276
|
if (!target) return "PERKOS_VOICE_FAILED:a2a_identity_unavailable";
|
|
29275
29277
|
const response = await fetch(`${target.apiBaseUrl}/agents/${encodeURIComponent(target.agentId)}/voice-credential/capability-report`, {
|
|
29276
29278
|
method: "POST",
|
|
@@ -29286,7 +29288,7 @@ async function defaultLoader() {
|
|
|
29286
29288
|
async function tryHandleInstalledVoiceMarker(message, config, loadVoice = defaultLoader) {
|
|
29287
29289
|
const marker = message.trim();
|
|
29288
29290
|
if (marker !== PERKOS_VOICE_PROBE_MARKER && marker !== PERKOS_VOICE_ENROLL_MARKER) return null;
|
|
29289
|
-
const target =
|
|
29291
|
+
const target = resolvePlatformControlPlane(config);
|
|
29290
29292
|
if (!target) return "PERKOS_VOICE_FAILED:a2a_identity_unavailable";
|
|
29291
29293
|
const runtimeKind = runtime(config.runtime?.kind);
|
|
29292
29294
|
if (!runtimeKind) return reportPluginMissing(marker, config);
|
|
@@ -29321,21 +29323,7 @@ function parseA2AUpdateMarker(message) {
|
|
|
29321
29323
|
const [requestId, bridgeInstanceId, extra] = marker.slice(PERKOS_A2A_UPDATE_PREFIX.length).split(":");
|
|
29322
29324
|
return !extra && requestId && bridgeInstanceId && REQUEST_ID.test(requestId) && BRIDGE_INSTANCE_ID.test(bridgeInstanceId) ? { requestId, bridgeInstanceId } : null;
|
|
29323
29325
|
}
|
|
29324
|
-
|
|
29325
|
-
const heartbeat = config.platform?.heartbeatUrl;
|
|
29326
|
-
const relayApiKey = config.relay?.apiKey || config.chat?.apiKey;
|
|
29327
|
-
if (!heartbeat || !relayApiKey) return null;
|
|
29328
|
-
let url;
|
|
29329
|
-
try {
|
|
29330
|
-
url = new URL(heartbeat);
|
|
29331
|
-
} catch {
|
|
29332
|
-
return null;
|
|
29333
|
-
}
|
|
29334
|
-
const match = url.pathname.match(/^(.*)\/agents\/([^/]+)\/heartbeat\/?$/u);
|
|
29335
|
-
const agentId = config.platform?.agentId || (match ? decodeURIComponent(match[2]) : "");
|
|
29336
|
-
if (!match || !agentId) return null;
|
|
29337
|
-
return { apiBaseUrl: `${url.origin}${match[1]}`, agentId, relayApiKey };
|
|
29338
|
-
}
|
|
29326
|
+
var maintenanceControlPlane = resolvePlatformControlPlane;
|
|
29339
29327
|
function maintenanceRoot(agentId) {
|
|
29340
29328
|
return join4(homedir5(), ".perkos", "a2a", "hermes", agentId, "maintenance");
|
|
29341
29329
|
}
|