@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 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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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 reply = await runOpenClawChatTurn(api, pluginConfig, chatSessionKey, directRunPrompt, frame.text, logger);
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: