@openviking/openclaw-plugin 2026.5.8 → 2026.5.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.
@@ -1,331 +1,335 @@
1
- {
2
- "id": "openviking",
3
- "name": "OpenViking",
4
- "kind": "context-engine",
5
- "description": "OpenClaw context-engine plugin for memory management — powered by OpenViking",
6
- "activation": {
7
- "onStartup": true,
8
- "onCapabilities": [
9
- "hook",
10
- "tool"
11
- ]
12
- },
13
- "contracts": {
14
- "tools": [
15
- "ov_import",
16
- "memory_search",
17
- "memory_recall",
18
- "memory_store",
19
- "memory_forget",
20
- "ov_archive_search",
21
- "ov_archive_expand"
22
- ]
23
- },
24
- "commandAliases": [
25
- {
26
- "name": "setup",
27
- "kind": "runtime-slash",
28
- "cliCommand": "openviking"
29
- },
30
- {
31
- "name": "status",
32
- "kind": "runtime-slash",
33
- "cliCommand": "openviking"
34
- }
35
- ],
36
- "providerAuthEnvVars": {
37
- "openviking": [
38
- "OPENVIKING_API_KEY",
39
- "OPENVIKING_BASE_URL"
40
- ]
41
- },
42
- "skills": [
43
- "./skills/install-openviking-memory"
44
- ],
45
- "setup": {
46
- "providers": [
47
- {
48
- "id": "openviking",
49
- "authMethods": [
50
- "api_key",
51
- "trusted"
52
- ],
53
- "envVars": [
54
- "OPENVIKING_API_KEY",
55
- "OPENVIKING_BASE_URL"
56
- ],
57
- "cliFlags": {
58
- "api_key": [
59
- "--base-url",
60
- "--api-key"
61
- ],
62
- "trusted": [
63
- "--base-url"
64
- ]
65
- }
66
- }
67
- ],
68
- "requiresRuntime": true,
69
- "cliCommand": "openclaw openviking setup"
70
- },
71
- "uiHints": {
72
- "baseUrl": {
73
- "label": "OpenViking Base URL",
74
- "placeholder": "http://127.0.0.1:1933",
75
- "help": "HTTP URL when mode is remote (or ${OPENVIKING_BASE_URL})"
76
- },
77
- "agent_prefix": {
78
- "label": "Agent Prefix",
79
- "placeholder": "optional-prefix",
80
- "help": "Optional OpenViking agent prefix. Empty: follow OpenClaw ctx.agentId directly. Non-empty: use `<prefix>_<OpenClaw ctx.agentId>` (sanitized to letters/digits/_/-). If OpenClaw ctx.agentId is unavailable, use OpenClaw default agent `main`."
81
- },
82
- "apiKey": {
83
- "label": "OpenViking API Key",
84
- "sensitive": true,
85
- "placeholder": "${OPENVIKING_API_KEY}",
86
- "help": "Optional API key for OpenViking server"
87
- },
88
- "accountId": {
89
- "label": "Account ID",
90
- "placeholder": "(derived from API key)",
91
- "help": "Advanced option. Tenant account ID. Only needed when explicitly sending identity headers, such as root-key or trusted deployments. With a user key the server derives identity from the key.",
92
- "advanced": true
93
- },
94
- "userId": {
95
- "label": "User ID",
96
- "placeholder": "(derived from API key)",
97
- "help": "Advanced option. Tenant user ID. Only needed when explicitly sending identity headers.",
98
- "advanced": true
99
- },
100
- "isolateUserScopeByAgent": {
101
- "label": "Isolate User Scope By Agent",
102
- "placeholder": "false",
103
- "help": "Canonical namespace policy. false (default): user alias expands to viking://user/<user_id>/... . true: expands to viking://user/<user_id>/agent/<agent_id>/... . Must match the server-side account namespace policy.",
104
- "advanced": true
105
- },
106
- "isolateAgentScopeByUser": {
107
- "label": "Isolate Agent Scope By User",
108
- "placeholder": "false",
109
- "help": "Canonical namespace policy. false (default): agent alias expands to viking://agent/<agent_id>/... . true: expands to viking://agent/<agent_id>/user/<user_id>/... . Must match the server-side account namespace policy.",
110
- "advanced": true
111
- },
112
- "agentScopeMode": {
113
- "label": "Deprecated Agent Scope Mode",
114
- "placeholder": "agent",
115
- "help": "Deprecated compatibility alias for older routing. Prefer isolateUserScopeByAgent / isolateAgentScopeByUser. Explicit user_agent => false/true, explicit agent => false/false. When fully unset, the plugin defaults to false/false to match the current server-side policy.",
116
- "advanced": true
117
- },
118
- "targetUri": {
119
- "label": "Search Target URI",
120
- "placeholder": "viking://user/memories",
121
- "help": "Default OpenViking target URI for memory search"
122
- },
123
- "timeoutMs": {
124
- "label": "Request Timeout (ms)",
125
- "placeholder": "15000",
126
- "advanced": true
127
- },
128
- "autoCapture": {
129
- "label": "Auto-Capture",
130
- "help": "Extract memories from recent conversation messages via OpenViking sessions"
131
- },
132
- "captureMode": {
133
- "label": "Capture Mode",
134
- "placeholder": "semantic",
135
- "advanced": true,
136
- "help": "semantic captures all eligible user text; keyword uses trigger regex first"
137
- },
138
- "captureMaxLength": {
139
- "label": "Capture Max Length",
140
- "placeholder": "24000",
141
- "advanced": true,
142
- "help": "Maximum sanitized user text length allowed for auto-capture"
143
- },
144
- "autoRecall": {
145
- "label": "Auto-Recall",
146
- "help": "Inject relevant OpenViking memories into agent context"
147
- },
148
- "recallResources": {
149
- "label": "Recall Resources",
150
- "help": "Include resources (viking://resources) in auto-recall and default memory_recall search. Enables account-level shared knowledge retrieval.",
151
- "advanced": true
152
- },
153
- "recallLimit": {
154
- "label": "Recall Limit",
155
- "placeholder": "6",
156
- "advanced": true
157
- },
158
- "recallScoreThreshold": {
159
- "label": "Recall Score Threshold",
160
- "placeholder": "0.15",
161
- "advanced": true
162
- },
163
- "recallMaxInjectedChars": {
164
- "label": "Recall Max Injected Chars",
165
- "placeholder": "4000",
166
- "advanced": true,
167
- "help": "Maximum total characters for auto-recall memory injection. Complete memories that do not fit are skipped, not truncated."
168
- },
169
- "recallMaxContentChars": {
170
- "label": "Deprecated Recall Max Content Chars",
171
- "placeholder": "5000",
172
- "advanced": true,
173
- "help": "Deprecated compatibility option and will be removed in a future release. Auto-recall now keeps individual memories intact and uses recallMaxInjectedChars."
174
- },
175
- "recallPreferAbstract": {
176
- "label": "Recall Prefer Abstract",
177
- "advanced": true,
178
- "help": "Use memory abstract instead of fetching full content when available"
179
- },
180
- "recallTokenBudget": {
181
- "label": "Deprecated Recall Token Budget",
182
- "placeholder": "4000",
183
- "advanced": true,
184
- "help": "Deprecated compatibility alias and will be removed in a future release. Use recallMaxInjectedChars."
185
- },
186
- "bypassSessionPatterns": {
187
- "label": "Bypass Session Patterns",
188
- "placeholder": "agent:*:cron:**",
189
- "help": "Completely bypass OpenViking for matching session keys. Use * within one segment and ** across segments.",
190
- "advanced": true
191
- },
192
- "commitTokenThreshold": {
193
- "label": "Commit Token Threshold",
194
- "placeholder": "20000",
195
- "advanced": true,
196
- "help": "Minimum estimated pending tokens before auto-commit triggers. Set to 0 to commit every turn."
197
- },
198
- "commitKeepRecentCount": {
199
- "label": "Commit Keep Recent Count",
200
- "placeholder": "10",
201
- "advanced": true,
202
- "help": "WM v2: number of most-recent messages kept live after an afterTurn commit. Compact path always uses 0."
203
- },
204
- "emitStandardDiagnostics": {
205
- "label": "Standard diagnostics (diag JSON lines)",
206
- "advanced": true,
207
- "help": "Emit structured openviking: diag {...} for assemble/afterTurn. Set false to disable."
208
- },
209
- "logFindRequests": {
210
- "label": "Log find requests",
211
- "help": "Log tenant routing: /search/find + session messages/commit (X-OpenViking-*; not apiKey). Or set env OPENVIKING_LOG_ROUTING=1 or OPENVIKING_DEBUG=1.",
212
- "advanced": true
213
- }
214
- },
215
- "configSchema": {
216
- "type": "object",
217
- "additionalProperties": false,
218
- "properties": {
219
- "mode": {
220
- "type": "string",
221
- "description": "Legacy field kept for backward compatibility. Only 'remote' is supported."
222
- },
223
- "baseUrl": {
224
- "type": "string"
225
- },
226
- "agent_prefix": {
227
- "type": "string"
228
- },
229
- "agentId": {
230
- "type": "string",
231
- "description": "Deprecated: use agent_prefix instead"
232
- },
233
- "serverAuthMode": {
234
- "type": "string",
235
- "description": "Deprecated and ignored. Tenant identity headers are controlled by explicit accountId/userId."
236
- },
237
- "apiKey": {
238
- "type": "string"
239
- },
240
- "accountId": {
241
- "type": "string"
242
- },
243
- "userId": {
244
- "type": "string"
245
- },
246
- "isolateUserScopeByAgent": {
247
- "type": "boolean"
248
- },
249
- "isolateAgentScopeByUser": {
250
- "type": "boolean"
251
- },
252
- "agentScopeMode": {
253
- "type": "string"
254
- },
255
- "targetUri": {
256
- "type": "string"
257
- },
258
- "timeoutMs": {
259
- "type": "number"
260
- },
261
- "autoCapture": {
262
- "type": "boolean"
263
- },
264
- "captureMode": {
265
- "type": "string"
266
- },
267
- "captureMaxLength": {
268
- "type": "number"
269
- },
270
- "autoRecall": {
271
- "type": "boolean"
272
- },
273
- "recallResources": {
274
- "type": "boolean"
275
- },
276
- "recallLimit": {
277
- "type": "number"
278
- },
279
- "recallScoreThreshold": {
280
- "type": "number"
281
- },
282
- "recallMaxInjectedChars": {
283
- "type": "number"
284
- },
285
- "recallMaxContentChars": {
286
- "type": "number"
287
- },
288
- "recallPreferAbstract": {
289
- "type": "boolean"
290
- },
291
- "recallTokenBudget": {
292
- "type": "number"
293
- },
294
- "commitTokenThreshold": {
295
- "type": "number"
296
- },
297
- "commitKeepRecentCount": {
298
- "type": "number",
299
- "minimum": 0,
300
- "maximum": 1000
301
- },
302
- "bypassSessionPatterns": {
303
- "type": "array",
304
- "items": {
305
- "type": "string"
306
- }
307
- },
308
- "ingestReplyAssist": {
309
- "type": "boolean"
310
- },
311
- "ingestReplyAssistMinSpeakerTurns": {
312
- "type": "number"
313
- },
314
- "ingestReplyAssistMinChars": {
315
- "type": "number"
316
- },
317
- "ingestReplyAssistIgnoreSessionPatterns": {
318
- "type": "array",
319
- "items": {
320
- "type": "string"
321
- }
322
- },
323
- "emitStandardDiagnostics": {
324
- "type": "boolean"
325
- },
326
- "logFindRequests": {
327
- "type": "boolean"
328
- }
329
- }
330
- }
331
- }
1
+ {
2
+ "id": "openviking",
3
+ "name": "OpenViking",
4
+ "kind": "context-engine",
5
+ "description": "OpenClaw context-engine plugin for memory management — powered by OpenViking",
6
+ "activation": {
7
+ "onStartup": true,
8
+ "onCapabilities": [
9
+ "hook",
10
+ "tool"
11
+ ]
12
+ },
13
+ "contracts": {
14
+ "tools": [
15
+ "add_resource",
16
+ "add_skill",
17
+ "memory_search",
18
+ "memory_recall",
19
+ "memory_store",
20
+ "memory_forget",
21
+ "ov_archive_search",
22
+ "ov_archive_expand",
23
+ "openviking_tool_result_read",
24
+ "openviking_tool_result_search",
25
+ "openviking_tool_result_list"
26
+ ]
27
+ },
28
+ "commandAliases": [
29
+ {
30
+ "name": "setup",
31
+ "kind": "runtime-slash",
32
+ "cliCommand": "openviking"
33
+ },
34
+ {
35
+ "name": "status",
36
+ "kind": "runtime-slash",
37
+ "cliCommand": "openviking"
38
+ }
39
+ ],
40
+ "providerAuthEnvVars": {
41
+ "openviking": [
42
+ "OPENVIKING_API_KEY",
43
+ "OPENVIKING_BASE_URL"
44
+ ]
45
+ },
46
+ "skills": [
47
+ "./skills/install-openviking-memory"
48
+ ],
49
+ "setup": {
50
+ "providers": [
51
+ {
52
+ "id": "openviking",
53
+ "authMethods": [
54
+ "api_key",
55
+ "trusted"
56
+ ],
57
+ "envVars": [
58
+ "OPENVIKING_API_KEY",
59
+ "OPENVIKING_BASE_URL"
60
+ ],
61
+ "cliFlags": {
62
+ "api_key": [
63
+ "--base-url",
64
+ "--api-key"
65
+ ],
66
+ "trusted": [
67
+ "--base-url"
68
+ ]
69
+ }
70
+ }
71
+ ],
72
+ "requiresRuntime": true,
73
+ "cliCommand": "openclaw openviking setup"
74
+ },
75
+ "uiHints": {
76
+ "baseUrl": {
77
+ "label": "OpenViking Base URL",
78
+ "placeholder": "http://127.0.0.1:1933",
79
+ "help": "HTTP URL when mode is remote (or ${OPENVIKING_BASE_URL})"
80
+ },
81
+ "agent_prefix": {
82
+ "label": "Agent Prefix",
83
+ "placeholder": "optional-prefix",
84
+ "help": "Optional OpenViking agent prefix. Empty: follow OpenClaw ctx.agentId directly. Non-empty: use `<prefix>_<OpenClaw ctx.agentId>` (sanitized to letters/digits/_/-). If OpenClaw ctx.agentId is unavailable, use OpenClaw default agent `main`."
85
+ },
86
+ "apiKey": {
87
+ "label": "OpenViking API Key",
88
+ "sensitive": true,
89
+ "placeholder": "${OPENVIKING_API_KEY}",
90
+ "help": "Optional API key for OpenViking server"
91
+ },
92
+ "accountId": {
93
+ "label": "Account ID",
94
+ "placeholder": "(derived from API key)",
95
+ "help": "Advanced option. Tenant account ID. Only needed when explicitly sending identity headers, such as root-key or trusted deployments. With a user key the server derives identity from the key.",
96
+ "advanced": true
97
+ },
98
+ "userId": {
99
+ "label": "User ID",
100
+ "placeholder": "(derived from API key)",
101
+ "help": "Advanced option. Tenant user ID. Only needed when explicitly sending identity headers.",
102
+ "advanced": true
103
+ },
104
+ "isolateUserScopeByAgent": {
105
+ "label": "Isolate User Scope By Agent",
106
+ "placeholder": "false",
107
+ "help": "Canonical namespace policy. false (default): user alias expands to viking://user/<user_id>/... . true: expands to viking://user/<user_id>/agent/<agent_id>/... . Must match the server-side account namespace policy.",
108
+ "advanced": true
109
+ },
110
+ "isolateAgentScopeByUser": {
111
+ "label": "Isolate Agent Scope By User",
112
+ "placeholder": "false",
113
+ "help": "Canonical namespace policy. false (default): agent alias expands to viking://agent/<agent_id>/... . true: expands to viking://agent/<agent_id>/user/<user_id>/... . Must match the server-side account namespace policy.",
114
+ "advanced": true
115
+ },
116
+ "agentScopeMode": {
117
+ "label": "Deprecated Agent Scope Mode",
118
+ "placeholder": "agent",
119
+ "help": "Deprecated compatibility alias for older routing. Prefer isolateUserScopeByAgent / isolateAgentScopeByUser. Explicit user_agent => false/true, explicit agent => false/false. When fully unset, the plugin defaults to false/false to match the current server-side policy.",
120
+ "advanced": true
121
+ },
122
+ "targetUri": {
123
+ "label": "Search Target URI",
124
+ "placeholder": "viking://user/memories",
125
+ "help": "Default OpenViking target URI for memory search"
126
+ },
127
+ "timeoutMs": {
128
+ "label": "Request Timeout (ms)",
129
+ "placeholder": "15000",
130
+ "advanced": true
131
+ },
132
+ "autoCapture": {
133
+ "label": "Auto-Capture",
134
+ "help": "Extract memories from recent conversation messages via OpenViking sessions"
135
+ },
136
+ "captureMode": {
137
+ "label": "Capture Mode",
138
+ "placeholder": "semantic",
139
+ "advanced": true,
140
+ "help": "semantic captures all eligible user text; keyword uses trigger regex first"
141
+ },
142
+ "captureMaxLength": {
143
+ "label": "Capture Max Length",
144
+ "placeholder": "24000",
145
+ "advanced": true,
146
+ "help": "Maximum sanitized user text length allowed for auto-capture"
147
+ },
148
+ "autoRecall": {
149
+ "label": "Auto-Recall",
150
+ "help": "Inject relevant OpenViking memories into agent context"
151
+ },
152
+ "recallResources": {
153
+ "label": "Recall Resources",
154
+ "help": "Include resources (viking://resources) in auto-recall and default memory_recall search. Enables account-level shared knowledge retrieval.",
155
+ "advanced": true
156
+ },
157
+ "recallLimit": {
158
+ "label": "Recall Limit",
159
+ "placeholder": "6",
160
+ "advanced": true
161
+ },
162
+ "recallScoreThreshold": {
163
+ "label": "Recall Score Threshold",
164
+ "placeholder": "0.15",
165
+ "advanced": true
166
+ },
167
+ "recallMaxInjectedChars": {
168
+ "label": "Recall Max Injected Chars",
169
+ "placeholder": "4000",
170
+ "advanced": true,
171
+ "help": "Maximum total characters for auto-recall memory injection. Complete memories that do not fit are skipped, not truncated."
172
+ },
173
+ "recallMaxContentChars": {
174
+ "label": "Deprecated Recall Max Content Chars",
175
+ "placeholder": "5000",
176
+ "advanced": true,
177
+ "help": "Deprecated compatibility option and will be removed in a future release. Auto-recall now keeps individual memories intact and uses recallMaxInjectedChars."
178
+ },
179
+ "recallPreferAbstract": {
180
+ "label": "Recall Prefer Abstract",
181
+ "advanced": true,
182
+ "help": "Use memory abstract instead of fetching full content when available"
183
+ },
184
+ "recallTokenBudget": {
185
+ "label": "Deprecated Recall Token Budget",
186
+ "placeholder": "4000",
187
+ "advanced": true,
188
+ "help": "Deprecated compatibility alias and will be removed in a future release. Use recallMaxInjectedChars."
189
+ },
190
+ "bypassSessionPatterns": {
191
+ "label": "Bypass Session Patterns",
192
+ "placeholder": "agent:*:cron:**",
193
+ "help": "Completely bypass OpenViking for matching session keys. Use * within one segment and ** across segments.",
194
+ "advanced": true
195
+ },
196
+ "commitTokenThreshold": {
197
+ "label": "Commit Token Threshold",
198
+ "placeholder": "20000",
199
+ "advanced": true,
200
+ "help": "Minimum estimated pending tokens before auto-commit triggers. Set to 0 to commit every turn."
201
+ },
202
+ "commitKeepRecentCount": {
203
+ "label": "Commit Keep Recent Count",
204
+ "placeholder": "10",
205
+ "advanced": true,
206
+ "help": "WM v2: number of most-recent messages kept live after an afterTurn commit. Compact path always uses 0."
207
+ },
208
+ "emitStandardDiagnostics": {
209
+ "label": "Standard diagnostics (diag JSON lines)",
210
+ "advanced": true,
211
+ "help": "Emit structured openviking: diag {...} for assemble/afterTurn. Set false to disable."
212
+ },
213
+ "logFindRequests": {
214
+ "label": "Log find requests",
215
+ "help": "Log tenant routing: /search/find + session messages/commit (X-OpenViking-*; not apiKey). Or set env OPENVIKING_LOG_ROUTING=1 or OPENVIKING_DEBUG=1.",
216
+ "advanced": true
217
+ }
218
+ },
219
+ "configSchema": {
220
+ "type": "object",
221
+ "additionalProperties": false,
222
+ "properties": {
223
+ "mode": {
224
+ "type": "string",
225
+ "description": "Legacy field kept for backward compatibility. Only 'remote' is supported."
226
+ },
227
+ "baseUrl": {
228
+ "type": "string"
229
+ },
230
+ "agent_prefix": {
231
+ "type": "string"
232
+ },
233
+ "agentId": {
234
+ "type": "string",
235
+ "description": "Deprecated: use agent_prefix instead"
236
+ },
237
+ "serverAuthMode": {
238
+ "type": "string",
239
+ "description": "Deprecated and ignored. Tenant identity headers are controlled by explicit accountId/userId."
240
+ },
241
+ "apiKey": {
242
+ "type": "string"
243
+ },
244
+ "accountId": {
245
+ "type": "string"
246
+ },
247
+ "userId": {
248
+ "type": "string"
249
+ },
250
+ "isolateUserScopeByAgent": {
251
+ "type": "boolean"
252
+ },
253
+ "isolateAgentScopeByUser": {
254
+ "type": "boolean"
255
+ },
256
+ "agentScopeMode": {
257
+ "type": "string"
258
+ },
259
+ "targetUri": {
260
+ "type": "string"
261
+ },
262
+ "timeoutMs": {
263
+ "type": "number"
264
+ },
265
+ "autoCapture": {
266
+ "type": "boolean"
267
+ },
268
+ "captureMode": {
269
+ "type": "string"
270
+ },
271
+ "captureMaxLength": {
272
+ "type": "number"
273
+ },
274
+ "autoRecall": {
275
+ "type": "boolean"
276
+ },
277
+ "recallResources": {
278
+ "type": "boolean"
279
+ },
280
+ "recallLimit": {
281
+ "type": "number"
282
+ },
283
+ "recallScoreThreshold": {
284
+ "type": "number"
285
+ },
286
+ "recallMaxInjectedChars": {
287
+ "type": "number"
288
+ },
289
+ "recallMaxContentChars": {
290
+ "type": "number"
291
+ },
292
+ "recallPreferAbstract": {
293
+ "type": "boolean"
294
+ },
295
+ "recallTokenBudget": {
296
+ "type": "number"
297
+ },
298
+ "commitTokenThreshold": {
299
+ "type": "number"
300
+ },
301
+ "commitKeepRecentCount": {
302
+ "type": "number",
303
+ "minimum": 0,
304
+ "maximum": 1000
305
+ },
306
+ "bypassSessionPatterns": {
307
+ "type": "array",
308
+ "items": {
309
+ "type": "string"
310
+ }
311
+ },
312
+ "ingestReplyAssist": {
313
+ "type": "boolean"
314
+ },
315
+ "ingestReplyAssistMinSpeakerTurns": {
316
+ "type": "number"
317
+ },
318
+ "ingestReplyAssistMinChars": {
319
+ "type": "number"
320
+ },
321
+ "ingestReplyAssistIgnoreSessionPatterns": {
322
+ "type": "array",
323
+ "items": {
324
+ "type": "string"
325
+ }
326
+ },
327
+ "emitStandardDiagnostics": {
328
+ "type": "boolean"
329
+ },
330
+ "logFindRequests": {
331
+ "type": "boolean"
332
+ }
333
+ }
334
+ }
335
+ }