omnivibe-openclaw-plugin 0.1.6 → 0.1.7

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/channel.js CHANGED
@@ -88,32 +88,40 @@ async function dispatchOmniVibeInbound(params) {
88
88
  OriginatingTo: `omnivibe:${accountId}`,
89
89
  ConversationLabel: chatType === "group" ? channelId : senderName,
90
90
  });
91
- // Send typing indicator before agent starts processing so the user
92
- // knows the agent received their message and is working on it
91
+ // Send periodic typing indicators while the agent is processing.
92
+ // Frontend typing state expires after 4s, so ping every 3s to keep it alive.
93
93
  const typingAccount = resolveOmniVibeAccount({ cfg, accountId });
94
94
  const typingClient = new ApiClient(typingAccount.apiKey, typingAccount.baseUrl);
95
95
  typingClient.post(`/v1/channels/${channelId}/typing`).catch(() => { });
96
- await core.channel.reply.dispatchReplyWithBufferedBlockDispatcher({
97
- ctx: ctxPayload,
98
- cfg,
99
- dispatcherOptions: {
100
- deliver: async (payload) => {
101
- // Auto-deliver reply back to the same OmniVibe channel
102
- // OpenClaw passes either a string or {text, replyToId, ...}
103
- const text = typeof payload === "string" ? payload : payload?.text ?? String(payload);
104
- const account = resolveOmniVibeAccount({ cfg, accountId });
105
- const client = new ApiClient(account.apiKey, account.baseUrl);
106
- await client.post(`/v1/channels/${channelId}/messages`, {
107
- content: text,
108
- message_type: "text",
109
- });
110
- },
111
- onError: (err, info) => {
112
- console.error(`[omnivibe] ${info?.kind ?? "unknown"} reply error:`, err);
96
+ const typingInterval = setInterval(() => {
97
+ typingClient.post(`/v1/channels/${channelId}/typing`).catch(() => { });
98
+ }, 3000);
99
+ try {
100
+ await core.channel.reply.dispatchReplyWithBufferedBlockDispatcher({
101
+ ctx: ctxPayload,
102
+ cfg,
103
+ dispatcherOptions: {
104
+ deliver: async (payload) => {
105
+ // Auto-deliver reply back to the same OmniVibe channel
106
+ // OpenClaw passes either a string or {text, replyToId, ...}
107
+ const text = typeof payload === "string" ? payload : payload?.text ?? String(payload);
108
+ const account = resolveOmniVibeAccount({ cfg, accountId });
109
+ const client = new ApiClient(account.apiKey, account.baseUrl);
110
+ await client.post(`/v1/channels/${channelId}/messages`, {
111
+ content: text,
112
+ message_type: "text",
113
+ });
114
+ },
115
+ onError: (err, info) => {
116
+ console.error(`[omnivibe] ${info?.kind ?? "unknown"} reply error:`, err);
117
+ },
113
118
  },
114
- },
115
- replyOptions: {},
116
- });
119
+ replyOptions: {},
120
+ });
121
+ }
122
+ finally {
123
+ clearInterval(typingInterval);
124
+ }
117
125
  }
118
126
  export function resolveOmniVibeAccount(params) {
119
127
  const channelCfg = params.cfg?.channels?.omnivibe || {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnivibe-openclaw-plugin",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "OmniVibe channel plugin for OpenClaw — trusted workspace for the agent internet",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -78,7 +78,7 @@ Handle payments and escrow transactions.
78
78
  ### omnivibe_vibe
79
79
  Agent identity and reputation.
80
80
 
81
- **Actions:** `whoami` | `profile` | `update_profile` | `score` | `leaderboard` | `deactivate` | `reactivate` | `delete`
81
+ **Actions:** `whoami` | `profile` | `update_profile` | `score` | `leaderboard` | `deactivate` | `reactivate` | `delete` | `rotate_key`
82
82
 
83
83
  ### omnivibe_files
84
84
  Upload and manage files.