@perkos/perkos-a2a 0.12.41 → 0.12.43
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/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -3
- package/dist/index.js.map +2 -2
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -55,6 +55,21 @@ type EmbeddedChatRunResult = {
|
|
|
55
55
|
};
|
|
56
56
|
};
|
|
57
57
|
export declare function extractOpenClawChatReply(result: EmbeddedChatRunResult): string | null;
|
|
58
|
+
/** Remove the conversation routing marker if an external model echoes it. */
|
|
59
|
+
export declare function stripPerkosChatTransportMarker(reply: string, convId: string): string;
|
|
60
|
+
export type OpenClawRuntimeModelRoute = {
|
|
61
|
+
provider: string;
|
|
62
|
+
model: string;
|
|
63
|
+
source: "plugin-override" | "agent-default" | "gateway-default";
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Resolve the provider/model route already owned by OpenClaw. The embedded
|
|
67
|
+
* runner in OpenClaw 2026.5.x does not resolve `agents.defaults.model` when a
|
|
68
|
+
* plugin calls it directly; without explicit run parameters it silently
|
|
69
|
+
* starts from openai/gpt-5.5. Passing this resolved route is therefore an
|
|
70
|
+
* adapter responsibility, not a PerkOS model choice.
|
|
71
|
+
*/
|
|
72
|
+
export declare function resolveOpenClawRuntimeModelRoute(runtimeConfig: unknown, agentId: string, explicitPluginOverride?: string): OpenClawRuntimeModelRoute | null;
|
|
58
73
|
export declare function runOpenClawChatTurn(api: any, config: A2APluginConfig, sessionKey: string, prompt: string, transcriptPrompt: string, logger: {
|
|
59
74
|
info: (...args: unknown[]) => void;
|
|
60
75
|
error: (...args: unknown[]) => void;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAGV,WAAW,EAEZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,cAAc,YAAY,CAAC;AA0C3B,kEAAkE;AAClE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAItF;AAED,KAAK,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAoFpD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CA2BT;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAsCT;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,oBAAoB,EAC3B,eAAe,CAAC,EAAE,MAAM,GACvB,oBAAoB,CA+BtB;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAAE,GAClF,OAAO,CAAC,IAAI,CAAC,CAsBf;AA+BD,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC,CAAC;IACH,IAAI,CAAC,EAAE;QACL,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;CACH,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAYrF;AAQD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAAE,GAClF,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -29626,11 +29626,40 @@ function extractOpenClawChatReply(result) {
|
|
|
29626
29626
|
const payloadText = result.payloads?.filter((payload) => !payload.isError && !payload.isReasoning && !payload.isCommentary).map((payload) => payload.text?.trim()).filter((text) => Boolean(text)).join("\n\n").trim();
|
|
29627
29627
|
return payloadText || null;
|
|
29628
29628
|
}
|
|
29629
|
+
function stripPerkosChatTransportMarker(reply, convId) {
|
|
29630
|
+
const marker = `[PERKOS_CHAT:${convId}]`;
|
|
29631
|
+
return reply.split(marker).join("").trim();
|
|
29632
|
+
}
|
|
29629
29633
|
function openclawAgentId(config) {
|
|
29630
29634
|
const sessionKey = config.runtime?.sessionKey || "agent:main";
|
|
29631
29635
|
const parts = sessionKey.split(":");
|
|
29632
29636
|
return parts[0] === "agent" && parts[1] ? parts[1] : "main";
|
|
29633
29637
|
}
|
|
29638
|
+
function parseOpenClawModelRef(value) {
|
|
29639
|
+
const modelRef = typeof value === "string" ? value.trim() : value && typeof value === "object" && typeof value.primary === "string" ? String(value.primary).trim() : "";
|
|
29640
|
+
const separator = modelRef.indexOf("/");
|
|
29641
|
+
if (separator <= 0 || separator >= modelRef.length - 1) return null;
|
|
29642
|
+
return {
|
|
29643
|
+
provider: modelRef.slice(0, separator),
|
|
29644
|
+
model: modelRef.slice(separator + 1)
|
|
29645
|
+
};
|
|
29646
|
+
}
|
|
29647
|
+
function resolveOpenClawRuntimeModelRoute(runtimeConfig, agentId, explicitPluginOverride) {
|
|
29648
|
+
const explicit = parseOpenClawModelRef(explicitPluginOverride);
|
|
29649
|
+
if (explicit) return { ...explicit, source: "plugin-override" };
|
|
29650
|
+
if (!runtimeConfig || typeof runtimeConfig !== "object") return null;
|
|
29651
|
+
const agents = runtimeConfig.agents;
|
|
29652
|
+
if (!agents || typeof agents !== "object") return null;
|
|
29653
|
+
const agentConfig = agents;
|
|
29654
|
+
const list = Array.isArray(agentConfig.list) ? agentConfig.list : [];
|
|
29655
|
+
const selectedAgent = list.find((entry) => entry && typeof entry === "object" && String(entry.id ?? "").trim() === agentId);
|
|
29656
|
+
const selected = parseOpenClawModelRef(selectedAgent?.model);
|
|
29657
|
+
if (selected) return { ...selected, source: "agent-default" };
|
|
29658
|
+
const defaults = agentConfig.defaults;
|
|
29659
|
+
if (!defaults || typeof defaults !== "object") return null;
|
|
29660
|
+
const gateway = parseOpenClawModelRef(defaults.model);
|
|
29661
|
+
return gateway ? { ...gateway, source: "gateway-default" } : null;
|
|
29662
|
+
}
|
|
29634
29663
|
async function runOpenClawChatTurn(api, config, sessionKey, prompt, transcriptPrompt, logger) {
|
|
29635
29664
|
const runEmbeddedAgent = api.runtime?.agent?.runEmbeddedAgent;
|
|
29636
29665
|
const currentConfig = api.runtime?.config?.current;
|
|
@@ -29641,6 +29670,11 @@ async function runOpenClawChatTurn(api, config, sessionKey, prompt, transcriptPr
|
|
|
29641
29670
|
}
|
|
29642
29671
|
const agentId = openclawAgentId(config);
|
|
29643
29672
|
const runtimeConfig = currentConfig();
|
|
29673
|
+
const runtimeRoute = resolveOpenClawRuntimeModelRoute(
|
|
29674
|
+
runtimeConfig,
|
|
29675
|
+
agentId,
|
|
29676
|
+
config.runtime?.model
|
|
29677
|
+
);
|
|
29644
29678
|
const workspaceDir = resolveAgentWorkspaceDir(runtimeConfig, agentId);
|
|
29645
29679
|
const sessionContext = readOpenClawChatSession(api, agentId, sessionKey);
|
|
29646
29680
|
const entry = sessionContext.entry;
|
|
@@ -29650,8 +29684,13 @@ async function runOpenClawChatTurn(api, config, sessionKey, prompt, transcriptPr
|
|
|
29650
29684
|
75e3,
|
|
29651
29685
|
typeof configuredTimeout === "number" && configuredTimeout > 0 ? configuredTimeout : 75e3
|
|
29652
29686
|
);
|
|
29653
|
-
let selectedProvider;
|
|
29654
|
-
let selectedModel;
|
|
29687
|
+
let selectedProvider = runtimeRoute?.provider;
|
|
29688
|
+
let selectedModel = runtimeRoute?.model;
|
|
29689
|
+
if (runtimeRoute) {
|
|
29690
|
+
logger.info(
|
|
29691
|
+
`[perkos-chat] using OpenClaw runtime-owned route ${runtimeRoute.provider}/${runtimeRoute.model} (${runtimeRoute.source})`
|
|
29692
|
+
);
|
|
29693
|
+
}
|
|
29655
29694
|
const run = async (configOverride, retryNative = false) => runEmbeddedAgent({
|
|
29656
29695
|
sessionId,
|
|
29657
29696
|
sessionKey,
|
|
@@ -29670,6 +29709,7 @@ async function runOpenClawChatTurn(api, config, sessionKey, prompt, transcriptPr
|
|
|
29670
29709
|
terminalReplyExpectation: "required",
|
|
29671
29710
|
suppressLiveStreamOutput: true,
|
|
29672
29711
|
cleanupBundleMcpOnRunEnd: true,
|
|
29712
|
+
...selectedProvider && selectedModel ? { provider: selectedProvider, model: selectedModel } : {},
|
|
29673
29713
|
onExecutionPhase: (info) => {
|
|
29674
29714
|
if (info.provider?.trim()) selectedProvider = info.provider.trim();
|
|
29675
29715
|
if (info.model?.trim()) selectedModel = info.model.trim();
|
|
@@ -30032,7 +30072,8 @@ function register(api) {
|
|
|
30032
30072
|
const chatSessionKey = openclawChatSessionKey(pluginConfig, frame.convId);
|
|
30033
30073
|
await prepareOpenClawChatSession(api, pluginConfig, chatSessionKey, logger);
|
|
30034
30074
|
if (walletAddress) {
|
|
30035
|
-
const
|
|
30075
|
+
const embeddedReply = await runOpenClawChatTurn(api, pluginConfig, chatSessionKey, directRunPrompt, frame.text, logger);
|
|
30076
|
+
const reply = embeddedReply ? stripPerkosChatTransportMarker(embeddedReply, frame.convId) : null;
|
|
30036
30077
|
if (reply) {
|
|
30037
30078
|
const result = await supervisorClient.sendChatReply({
|
|
30038
30079
|
convId: frame.convId,
|
|
@@ -30043,6 +30084,9 @@ function register(api) {
|
|
|
30043
30084
|
logger.info(`[perkos-chat] embedded reply ${result.delivered ? "delivered" : "queued (offline)"} for ${frame.convId}`);
|
|
30044
30085
|
return;
|
|
30045
30086
|
}
|
|
30087
|
+
if (embeddedReply) {
|
|
30088
|
+
logger.error(`[perkos-chat] embedded OpenClaw reply contained only transport metadata for ${frame.convId}`);
|
|
30089
|
+
}
|
|
30046
30090
|
}
|
|
30047
30091
|
if (enqueueSystemEvent) enqueueSystemEvent(eventText, { sessionKey: chatSessionKey });
|
|
30048
30092
|
wakeGatewayAgent(requestHeartbeatNow, `[PerkOS-Chat] inbound message in ${frame.convId}`, logger, chatSessionKey);
|
|
@@ -30507,7 +30551,9 @@ export {
|
|
|
30507
30551
|
omitUnavailableAgentHarness,
|
|
30508
30552
|
openclawChatSessionKey,
|
|
30509
30553
|
prepareOpenClawChatSession,
|
|
30554
|
+
resolveOpenClawRuntimeModelRoute,
|
|
30510
30555
|
runOpenClawChatTurn,
|
|
30556
|
+
stripPerkosChatTransportMarker,
|
|
30511
30557
|
useNativeHarnessForResolvedRoute
|
|
30512
30558
|
};
|
|
30513
30559
|
/*! Bundled license information:
|