@coolclaw/coolclaw 1.0.20 → 1.0.21

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.
@@ -530,9 +530,11 @@ function isRecord2(value) {
530
530
  var ARENA_REPORT_SHARE_NOTIFY_TYPE = "ARENA_REPORT_SHARE_REQUEST";
531
531
  var ARENA_MODEL_QUERY_NOTIFY_TYPE = "ARENA_MODEL_QUERY_REQUEST";
532
532
  var ARENA_VOICE_SELECT_NOTIFY_TYPE = "ARENA_VOICE_SELECT_REQUEST";
533
+ var ARENA_PLUGIN_UPGRADE_NOTIFY_TYPE = "ARENA_PLUGIN_UPGRADE_REQUEST";
533
534
  var REPORT_SHARE_DEDUPE_LIMIT = 500;
534
535
  var MODEL_QUERY_DEDUPE_LIMIT = 500;
535
536
  var VOICE_SELECT_DEDUPE_LIMIT = 500;
537
+ var PLUGIN_UPGRADE_DEDUPE_LIMIT = 500;
536
538
  var processedArenaReportShareEventIds = /* @__PURE__ */ new Set();
537
539
  var processedArenaReportShareEventOrder = [];
538
540
  var inFlightArenaReportShareEventIds = /* @__PURE__ */ new Map();
@@ -542,6 +544,9 @@ var inFlightArenaModelQueryEventIds = /* @__PURE__ */ new Map();
542
544
  var processedArenaVoiceSelectEventIds = /* @__PURE__ */ new Set();
543
545
  var processedArenaVoiceSelectEventOrder = [];
544
546
  var inFlightArenaVoiceSelectEventIds = /* @__PURE__ */ new Map();
547
+ var processedArenaPluginUpgradeEventIds = /* @__PURE__ */ new Set();
548
+ var processedArenaPluginUpgradeEventOrder = [];
549
+ var inFlightArenaPluginUpgradeEventIds = /* @__PURE__ */ new Map();
545
550
  function mapInboundFrame(frame) {
546
551
  if (frame.type === "PRIVATE_MESSAGE") {
547
552
  const payload = assertPrivatePayload(frame.payload);
@@ -624,6 +629,13 @@ async function handleInboundFrame(input) {
624
629
  inFlight: inFlightArenaVoiceSelectEventIds,
625
630
  remember: rememberArenaVoiceSelectEventId
626
631
  };
632
+ } else if (isArenaPluginUpgradeEnvelope(envelope)) {
633
+ dedupeState = {
634
+ eventId: String(envelope.metadata.eventId),
635
+ processed: processedArenaPluginUpgradeEventIds,
636
+ inFlight: inFlightArenaPluginUpgradeEventIds,
637
+ remember: rememberArenaPluginUpgradeEventId
638
+ };
627
639
  }
628
640
  if (dedupeState) {
629
641
  if (dedupeState.processed.has(dedupeState.eventId)) {
@@ -679,6 +691,9 @@ function isArenaModelQueryEnvelope(envelope) {
679
691
  function isArenaVoiceSelectEnvelope(envelope) {
680
692
  return envelope.metadata?.arenaVoiceSelectRequest === true && typeof envelope.metadata.eventId === "string" && envelope.metadata.eventId.length > 0 && typeof envelope.metadata.callbackUrl === "string" && envelope.metadata.callbackUrl.length > 0;
681
693
  }
694
+ function isArenaPluginUpgradeEnvelope(envelope) {
695
+ return envelope.metadata?.arenaPluginUpgradeRequest === true && typeof envelope.metadata.eventId === "string" && envelope.metadata.eventId.length > 0;
696
+ }
682
697
  function mapNotificationFrame(frame) {
683
698
  const payload = isRecord3(frame.payload) ? frame.payload : {};
684
699
  const seq = typeof payload.seq === "number" ? payload.seq : void 0;
@@ -723,6 +738,9 @@ function mapNotificationFrame(frame) {
723
738
  if (notifyType === ARENA_VOICE_SELECT_NOTIFY_TYPE) {
724
739
  return mapArenaVoiceSelectFrame(frame, payload, seq);
725
740
  }
741
+ if (notifyType === ARENA_PLUGIN_UPGRADE_NOTIFY_TYPE) {
742
+ return mapArenaPluginUpgradeFrame(frame, payload, seq);
743
+ }
726
744
  const postId = payload.postId != null ? String(payload.postId) : "";
727
745
  return {
728
746
  id: frame.id,
@@ -840,6 +858,29 @@ function mapArenaReportShareFrame(frame, payload, seq) {
840
858
  }
841
859
  };
842
860
  }
861
+ function mapArenaPluginUpgradeFrame(frame, payload, seq) {
862
+ const eventId = typeof payload.eventId === "string" && payload.eventId.length > 0 ? payload.eventId : frame.id;
863
+ const traceId = typeof payload.traceId === "string" ? payload.traceId : "";
864
+ const upgradePayload = isRecord3(payload.payload) ? payload.payload : {};
865
+ const prompt = typeof upgradePayload.prompt === "string" && upgradePayload.prompt.length > 0 ? upgradePayload.prompt : "\u8BF7\u5347\u7EA7 Clawtopia \u7684\u63D2\u4EF6\u548C Skill\uFF0C\u5347\u7EA7\u540E\u91CD\u65B0\u8FDE\u63A5\u81F3 Clawtopia\u3002";
866
+ return {
867
+ id: eventId,
868
+ channel: "coolclaw",
869
+ conversationId: `notification:arena_plugin_upgrade:${eventId}`,
870
+ text: prompt,
871
+ messageType: frame.type,
872
+ seq,
873
+ shouldReply: true,
874
+ metadata: {
875
+ sourceFrameId: frame.id,
876
+ payload: frame.payload,
877
+ pluginUpgradePayload: upgradePayload,
878
+ arenaPluginUpgradeRequest: true,
879
+ eventId,
880
+ traceId
881
+ }
882
+ };
883
+ }
843
884
  function rememberArenaReportShareEventId(eventId) {
844
885
  if (processedArenaReportShareEventIds.has(eventId)) return;
845
886
  processedArenaReportShareEventIds.add(eventId);
@@ -867,6 +908,15 @@ function rememberArenaVoiceSelectEventId(eventId) {
867
908
  if (expired) processedArenaVoiceSelectEventIds.delete(expired);
868
909
  }
869
910
  }
911
+ function rememberArenaPluginUpgradeEventId(eventId) {
912
+ if (processedArenaPluginUpgradeEventIds.has(eventId)) return;
913
+ processedArenaPluginUpgradeEventIds.add(eventId);
914
+ processedArenaPluginUpgradeEventOrder.push(eventId);
915
+ while (processedArenaPluginUpgradeEventOrder.length > PLUGIN_UPGRADE_DEDUPE_LIMIT) {
916
+ const expired = processedArenaPluginUpgradeEventOrder.shift();
917
+ if (expired) processedArenaPluginUpgradeEventIds.delete(expired);
918
+ }
919
+ }
870
920
  function mapGameEventFrame(frame, payload) {
871
921
  const eventType = typeof payload.eventType === "string" ? payload.eventType : "UNKNOWN";
872
922
  const agentTask = normalizeAgentTask(payload.agentTask);
@@ -4,7 +4,7 @@ import {
4
4
  coolclawChannelPlugin,
5
5
  defaultBindingFile,
6
6
  setCoolclawRuntime
7
- } from "./chunk-NZP7CI26.js";
7
+ } from "./chunk-556ALDNR.js";
8
8
 
9
9
  // index.ts
10
10
  import { defineChannelPluginEntry, buildChannelConfigSchema } from "openclaw/plugin-sdk/core";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  index_default
3
- } from "./chunk-7HQ3P7XX.js";
4
- import "./chunk-NZP7CI26.js";
3
+ } from "./chunk-FL2ANX77.js";
4
+ import "./chunk-556ALDNR.js";
5
5
 
6
6
  // cli-metadata.ts
7
7
  var cli_metadata_default = index_default;
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  index_default
3
- } from "./chunk-7HQ3P7XX.js";
4
- import "./chunk-NZP7CI26.js";
3
+ } from "./chunk-FL2ANX77.js";
4
+ import "./chunk-556ALDNR.js";
5
5
  export {
6
6
  index_default as default
7
7
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  coolclawChannelPlugin
3
- } from "./chunk-NZP7CI26.js";
3
+ } from "./chunk-556ALDNR.js";
4
4
 
5
5
  // setup-entry.ts
6
6
  import { defineSetupPluginEntry } from "openclaw/plugin-sdk/core";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coolclaw/coolclaw",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "description": "OpenClaw native channel plugin for CoolClaw chat.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",