@oh-my-matrix/autopilot 2.1.1

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.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -0
  3. package/dist/index.d.ts +28 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +1034 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/audit-persister.d.ts +25 -0
  8. package/dist/src/audit-persister.d.ts.map +1 -0
  9. package/dist/src/audit-persister.js +162 -0
  10. package/dist/src/audit-persister.js.map +1 -0
  11. package/dist/src/autopilot-state.d.ts +35 -0
  12. package/dist/src/autopilot-state.d.ts.map +1 -0
  13. package/dist/src/autopilot-state.js +121 -0
  14. package/dist/src/autopilot-state.js.map +1 -0
  15. package/dist/src/command-runner.d.ts +13 -0
  16. package/dist/src/command-runner.d.ts.map +1 -0
  17. package/dist/src/command-runner.js +148 -0
  18. package/dist/src/command-runner.js.map +1 -0
  19. package/dist/src/completion-detector.d.ts +21 -0
  20. package/dist/src/completion-detector.d.ts.map +1 -0
  21. package/dist/src/completion-detector.js +104 -0
  22. package/dist/src/completion-detector.js.map +1 -0
  23. package/dist/src/continuation-engine.d.ts +9 -0
  24. package/dist/src/continuation-engine.d.ts.map +1 -0
  25. package/dist/src/continuation-engine.js +76 -0
  26. package/dist/src/continuation-engine.js.map +1 -0
  27. package/dist/src/effort-injection.d.ts +9 -0
  28. package/dist/src/effort-injection.d.ts.map +1 -0
  29. package/dist/src/effort-injection.js +17 -0
  30. package/dist/src/effort-injection.js.map +1 -0
  31. package/dist/src/evidence-gate.d.ts +24 -0
  32. package/dist/src/evidence-gate.d.ts.map +1 -0
  33. package/dist/src/evidence-gate.js +86 -0
  34. package/dist/src/evidence-gate.js.map +1 -0
  35. package/dist/src/goal-manager.d.ts +5 -0
  36. package/dist/src/goal-manager.d.ts.map +1 -0
  37. package/dist/src/goal-manager.js +22 -0
  38. package/dist/src/goal-manager.js.map +1 -0
  39. package/dist/src/logger.d.ts +27 -0
  40. package/dist/src/logger.d.ts.map +1 -0
  41. package/dist/src/logger.js +90 -0
  42. package/dist/src/logger.js.map +1 -0
  43. package/dist/src/orchestrator.d.ts +16 -0
  44. package/dist/src/orchestrator.d.ts.map +1 -0
  45. package/dist/src/orchestrator.js +252 -0
  46. package/dist/src/orchestrator.js.map +1 -0
  47. package/dist/src/permission-policy.d.ts +36 -0
  48. package/dist/src/permission-policy.d.ts.map +1 -0
  49. package/dist/src/permission-policy.js +265 -0
  50. package/dist/src/permission-policy.js.map +1 -0
  51. package/dist/src/project-detector.d.ts +8 -0
  52. package/dist/src/project-detector.d.ts.map +1 -0
  53. package/dist/src/project-detector.js +130 -0
  54. package/dist/src/project-detector.js.map +1 -0
  55. package/dist/src/projection.d.ts +47 -0
  56. package/dist/src/projection.d.ts.map +1 -0
  57. package/dist/src/projection.js +58 -0
  58. package/dist/src/projection.js.map +1 -0
  59. package/dist/src/retry-queue.d.ts +25 -0
  60. package/dist/src/retry-queue.d.ts.map +1 -0
  61. package/dist/src/retry-queue.js +77 -0
  62. package/dist/src/retry-queue.js.map +1 -0
  63. package/dist/src/stall-detector.d.ts +22 -0
  64. package/dist/src/stall-detector.d.ts.map +1 -0
  65. package/dist/src/stall-detector.js +26 -0
  66. package/dist/src/stall-detector.js.map +1 -0
  67. package/dist/src/tool-error-tracker.d.ts +4 -0
  68. package/dist/src/tool-error-tracker.d.ts.map +1 -0
  69. package/dist/src/tool-error-tracker.js +18 -0
  70. package/dist/src/tool-error-tracker.js.map +1 -0
  71. package/dist/src/types.d.ts +223 -0
  72. package/dist/src/types.d.ts.map +1 -0
  73. package/dist/src/types.js +55 -0
  74. package/dist/src/types.js.map +1 -0
  75. package/dist/src/workflow-config.d.ts +13 -0
  76. package/dist/src/workflow-config.d.ts.map +1 -0
  77. package/dist/src/workflow-config.js +422 -0
  78. package/dist/src/workflow-config.js.map +1 -0
  79. package/openclaw.plugin.json +62 -0
  80. package/package.json +56 -0
@@ -0,0 +1,422 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DEFAULT_WORKFLOW_CONFIG = void 0;
37
+ exports.loadWorkflowConfig = loadWorkflowConfig;
38
+ /**
39
+ * M2.2: Workflow config parser
40
+ *
41
+ * Parses WORKFLOW.md YAML front matter for autopilot configuration.
42
+ * Lookup order: workspacePath/WORKFLOW.md -> baseRepoPath/WORKFLOW.md -> default config.
43
+ */
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ exports.DEFAULT_WORKFLOW_CONFIG = {
47
+ version: 1,
48
+ source: 'default',
49
+ maxConcurrent: 5,
50
+ maxRetries: 3,
51
+ stallTimeoutMs: 300_000,
52
+ maxRetryBackoffMs: 300_000,
53
+ workspace: {
54
+ root: '.matrix/autopilot-worktrees',
55
+ cleanup: 'manual',
56
+ branchPrefix: 'autopilot',
57
+ allowDirtyBase: false,
58
+ },
59
+ validation: {
60
+ commands: [],
61
+ failOnOptional: false,
62
+ },
63
+ destructiveGit: {
64
+ allow: false,
65
+ },
66
+ warnings: [],
67
+ };
68
+ /**
69
+ * Parse a YAML-like autopilot section from front matter.
70
+ * Minimal parser — only handles the autopilot schema we define.
71
+ * Not a general-purpose YAML parser.
72
+ */
73
+ function parseAutopilotSection(raw) {
74
+ const warnings = [];
75
+ const result = {};
76
+ // Track unknown fields
77
+ const knownKeys = new Set([
78
+ 'version', 'max_concurrent', 'max_retries',
79
+ 'stall_timeout_ms', 'max_retry_backoff_ms', 'workspace', 'validation',
80
+ 'destructive_git',
81
+ ]);
82
+ for (const key of Object.keys(raw)) {
83
+ if (!knownKeys.has(key)) {
84
+ warnings.push(`Unknown field: ${key}`);
85
+ }
86
+ }
87
+ if ('version' in raw) {
88
+ if (raw.version !== 1) {
89
+ warnings.push(`Unsupported version: ${raw.version}, expected 1`);
90
+ }
91
+ result.version = 1;
92
+ }
93
+ else {
94
+ warnings.push('Missing version field, defaulting to 1');
95
+ }
96
+ if ('max_concurrent' in raw && typeof raw.max_concurrent === 'number') {
97
+ result.maxConcurrent = raw.max_concurrent;
98
+ }
99
+ if ('max_retries' in raw && typeof raw.max_retries === 'number') {
100
+ result.maxRetries = raw.max_retries;
101
+ }
102
+ if ('stall_timeout_ms' in raw && typeof raw.stall_timeout_ms === 'number') {
103
+ result.stallTimeoutMs = raw.stall_timeout_ms;
104
+ }
105
+ if ('max_retry_backoff_ms' in raw && typeof raw.max_retry_backoff_ms === 'number') {
106
+ result.maxRetryBackoffMs = raw.max_retry_backoff_ms;
107
+ }
108
+ if ('workspace' in raw && typeof raw.workspace === 'object' && raw.workspace !== null) {
109
+ const ws = raw.workspace;
110
+ result.workspace = {
111
+ root: typeof ws.root === 'string' ? ws.root : exports.DEFAULT_WORKFLOW_CONFIG.workspace.root,
112
+ cleanup: ws.cleanup === 'delete_on_done' ? 'delete_on_done' : 'manual',
113
+ branchPrefix: typeof ws.branch_prefix === 'string' ? ws.branch_prefix : 'autopilot',
114
+ baseRef: typeof ws.base_ref === 'string' ? ws.base_ref : undefined,
115
+ allowDirtyBase: ws.allow_dirty_base === true,
116
+ };
117
+ }
118
+ if ('validation' in raw && typeof raw.validation === 'object' && raw.validation !== null) {
119
+ const val = raw.validation;
120
+ const commands = [];
121
+ if (Array.isArray(val.commands)) {
122
+ for (const cmd of val.commands) {
123
+ if (typeof cmd === 'object' && cmd !== null) {
124
+ const c = cmd;
125
+ if (typeof c.id === 'string' && typeof c.command === 'string') {
126
+ commands.push({
127
+ id: c.id,
128
+ command: c.command,
129
+ timeoutMs: typeof c.timeout_ms === 'number' ? c.timeout_ms : 120_000,
130
+ required: c.required !== false,
131
+ });
132
+ }
133
+ }
134
+ }
135
+ }
136
+ result.validation = {
137
+ commands,
138
+ failOnOptional: val.fail_on_optional === true,
139
+ };
140
+ }
141
+ if ('destructive_git' in raw && typeof raw.destructive_git === 'object' && raw.destructive_git !== null) {
142
+ const dg = raw.destructive_git;
143
+ result.destructiveGit = {
144
+ allow: dg.allow === true,
145
+ };
146
+ }
147
+ return { config: result, warnings };
148
+ }
149
+ /**
150
+ * Extract YAML front matter from markdown content.
151
+ * Returns the parsed object or null if no valid front matter found.
152
+ */
153
+ function extractFrontMatter(content) {
154
+ // Normalise CRLF → LF so Windows-edited files parse identically to Unix files (X-7, X-8)
155
+ const normalised = content.replace(/\r\n/g, '\n');
156
+ const match = normalised.match(/^---\s*\n([\s\S]*?)\n---/);
157
+ if (!match)
158
+ return null;
159
+ const yaml = match[1];
160
+ // Minimal YAML parsing for our flat autopilot schema
161
+ // We use a simple approach: find the autopilot: key and parse its block
162
+ try {
163
+ return parseSimpleYaml(yaml);
164
+ }
165
+ catch {
166
+ return null;
167
+ }
168
+ }
169
+ /**
170
+ * Very simple YAML parser that handles our specific autopilot schema.
171
+ * Not a general YAML parser — only handles nested objects, arrays, and scalars.
172
+ */
173
+ function parseSimpleYaml(yaml) {
174
+ const lines = yaml.split('\n');
175
+ const root = {};
176
+ let i = 0;
177
+ function parseValue(indent) {
178
+ if (i >= lines.length)
179
+ return null;
180
+ const line = lines[i];
181
+ const trimmed = line.trimStart();
182
+ if (trimmed === '' || trimmed.startsWith('#')) {
183
+ i++;
184
+ return parseValue(indent);
185
+ }
186
+ // Array item
187
+ if (trimmed.startsWith('- ')) {
188
+ const items = [];
189
+ while (i < lines.length) {
190
+ const l = lines[i];
191
+ const t = l.trimStart();
192
+ const currentIndent = l.length - t.length;
193
+ if (currentIndent < indent)
194
+ break;
195
+ if (t.startsWith('- ')) {
196
+ i++;
197
+ const itemStr = t.substring(2).trim();
198
+ if (itemStr.includes(':')) {
199
+ // Inline object or nested object
200
+ // Check if next lines are indented further
201
+ const itemObj = {};
202
+ // Try inline key: value
203
+ const inlineMatch = itemStr.match(/^(\w[\w_-]*):\s*(.*)/);
204
+ if (inlineMatch) {
205
+ const k = inlineMatch[1];
206
+ const v = inlineMatch[2].trim();
207
+ if (v === '' || v === '|' || v === '>') {
208
+ // Nested object
209
+ const subIndent = currentIndent + 2;
210
+ const sub = {};
211
+ while (i < lines.length) {
212
+ const sl = lines[i];
213
+ const st = sl.trimStart();
214
+ const si = sl.length - st.length;
215
+ if (si < subIndent || st === '' || st.startsWith('#'))
216
+ break;
217
+ const kv = st.match(/^(\w[\w_-]*):\s*(.*)/);
218
+ if (kv) {
219
+ i++;
220
+ const key = kv[1];
221
+ const val = kv[2].trim();
222
+ if (val === '') {
223
+ // Deeper nesting — not needed for our schema
224
+ }
225
+ else {
226
+ sub[key] = parseScalar(val);
227
+ }
228
+ }
229
+ else {
230
+ i++;
231
+ }
232
+ }
233
+ itemObj[k] = sub;
234
+ }
235
+ else {
236
+ itemObj[k] = parseScalar(v);
237
+ }
238
+ }
239
+ // Continue parsing key: value pairs at this indent level
240
+ while (i < lines.length) {
241
+ const nl = lines[i];
242
+ const nt = nl.trimStart();
243
+ const ni = nl.length - nt.length;
244
+ const expectedIndent = currentIndent + 2;
245
+ if (ni < expectedIndent || nt === '' || nt.startsWith('#'))
246
+ break;
247
+ if (nt.startsWith('- '))
248
+ break;
249
+ const kv = nt.match(/^(\w[\w_-]*):\s*(.*)/);
250
+ if (kv) {
251
+ i++;
252
+ itemObj[kv[1]] = parseScalar(kv[2].trim());
253
+ }
254
+ else {
255
+ i++;
256
+ }
257
+ }
258
+ items.push(itemObj);
259
+ }
260
+ else {
261
+ items.push(parseScalar(itemStr));
262
+ }
263
+ }
264
+ else {
265
+ break;
266
+ }
267
+ }
268
+ return items;
269
+ }
270
+ // Object: parse key: value pairs at this indent level
271
+ const obj = {};
272
+ while (i < lines.length) {
273
+ const l = lines[i];
274
+ const t = l.trimStart();
275
+ const ci = l.length - t.length;
276
+ if (ci < indent && l.trim() !== '')
277
+ break;
278
+ if (t === '' || t.startsWith('#')) {
279
+ i++;
280
+ continue;
281
+ }
282
+ if (t.startsWith('- '))
283
+ break;
284
+ const kv = t.match(/^(\w[\w_-]*):\s*(.*)/);
285
+ if (kv) {
286
+ const key = kv[1];
287
+ const val = kv[2].trim();
288
+ i++;
289
+ if (val === '' || val === '|' || val === '>') {
290
+ // Nested block — check next line indent
291
+ if (i < lines.length) {
292
+ const nextLine = lines[i];
293
+ const nextIndent = nextLine.length - nextLine.trimStart().length;
294
+ if (nextIndent > ci) {
295
+ obj[key] = parseValue(nextIndent);
296
+ }
297
+ else {
298
+ obj[key] = null;
299
+ }
300
+ }
301
+ else {
302
+ obj[key] = null;
303
+ }
304
+ }
305
+ else {
306
+ obj[key] = parseScalar(val);
307
+ }
308
+ }
309
+ else {
310
+ i++;
311
+ }
312
+ }
313
+ return obj;
314
+ }
315
+ // Parse root level
316
+ while (i < lines.length) {
317
+ const line = lines[i];
318
+ const trimmed = line.trimStart();
319
+ if (trimmed === '' || trimmed.startsWith('#')) {
320
+ i++;
321
+ continue;
322
+ }
323
+ const kv = trimmed.match(/^(\w[\w_-]*):\s*(.*)/);
324
+ if (kv) {
325
+ const key = kv[1];
326
+ const val = kv[2].trim();
327
+ i++;
328
+ if (val === '' || val === '|' || val === '>') {
329
+ // Nested block
330
+ if (i < lines.length) {
331
+ const nextLine = lines[i];
332
+ const nextIndent = nextLine.length - nextLine.trimStart().length;
333
+ const currentIndent = line.length - trimmed.length;
334
+ if (nextIndent > currentIndent) {
335
+ root[key] = parseValue(nextIndent);
336
+ }
337
+ else {
338
+ root[key] = null;
339
+ }
340
+ }
341
+ else {
342
+ root[key] = null;
343
+ }
344
+ }
345
+ else {
346
+ root[key] = parseScalar(val);
347
+ }
348
+ }
349
+ else {
350
+ i++;
351
+ }
352
+ }
353
+ return root;
354
+ }
355
+ function parseScalar(val) {
356
+ if (val === 'true')
357
+ return true;
358
+ if (val === 'false')
359
+ return false;
360
+ if (val === 'null' || val === '~')
361
+ return null;
362
+ // Remove quotes
363
+ if ((val.startsWith('"') && val.endsWith('"')) || (val.startsWith("'") && val.endsWith("'"))) {
364
+ return val.slice(1, -1);
365
+ }
366
+ // Try number
367
+ const num = Number(val);
368
+ if (!isNaN(num) && val !== '')
369
+ return num;
370
+ return val;
371
+ }
372
+ /**
373
+ * Load workflow config from WORKFLOW.md in the given repo path.
374
+ * Returns default config if no WORKFLOW.md exists or if parsing fails.
375
+ */
376
+ function loadWorkflowConfig(baseRepoPath, workspacePath) {
377
+ // Lookup order: workspacePath/WORKFLOW.md -> baseRepoPath/WORKFLOW.md -> default
378
+ const searchPaths = workspacePath
379
+ ? [path.join(workspacePath, 'WORKFLOW.md'), path.join(baseRepoPath, 'WORKFLOW.md')]
380
+ : [path.join(baseRepoPath, 'WORKFLOW.md')];
381
+ for (const filePath of searchPaths) {
382
+ if (!fs.existsSync(filePath))
383
+ continue;
384
+ try {
385
+ const content = fs.readFileSync(filePath, 'utf-8');
386
+ const parsed = extractFrontMatter(content);
387
+ if (!parsed || !('autopilot' in parsed)) {
388
+ // File exists but no autopilot section — treat as missing
389
+ continue;
390
+ }
391
+ const autopilot = parsed.autopilot;
392
+ if (typeof autopilot !== 'object' || autopilot === null) {
393
+ // Invalid autopilot section (e.g., autopilot: {})
394
+ if (autopilot === null || (typeof autopilot === 'object' && Object.keys(autopilot).length === 0)) {
395
+ // autopilot: {} or autopilot: null — use defaults but mark as workflow_md source
396
+ return {
397
+ config: { ...exports.DEFAULT_WORKFLOW_CONFIG, source: 'workflow_md', warnings: [] },
398
+ warnings: [],
399
+ };
400
+ }
401
+ continue;
402
+ }
403
+ const { config: partial, warnings } = parseAutopilotSection(autopilot);
404
+ const merged = {
405
+ ...exports.DEFAULT_WORKFLOW_CONFIG,
406
+ ...partial,
407
+ source: 'workflow_md',
408
+ workspace: { ...exports.DEFAULT_WORKFLOW_CONFIG.workspace, ...partial.workspace },
409
+ validation: { ...exports.DEFAULT_WORKFLOW_CONFIG.validation, ...partial.validation },
410
+ destructiveGit: { ...exports.DEFAULT_WORKFLOW_CONFIG.destructiveGit, ...partial.destructiveGit },
411
+ warnings,
412
+ };
413
+ return { config: merged, warnings };
414
+ }
415
+ catch {
416
+ // Parsing error — fallback to default
417
+ continue;
418
+ }
419
+ }
420
+ return { config: exports.DEFAULT_WORKFLOW_CONFIG, warnings: [] };
421
+ }
422
+ //# sourceMappingURL=workflow-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-config.js","sourceRoot":"","sources":["../../src/workflow-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ {
2
+ "id": "autopilot",
3
+ "name": "Autopilot Continuous Mode",
4
+ "description": "OpenClaw-native continuous execution for long-running tasks",
5
+ "version": "2.0.0",
6
+ "main": "dist/index.js",
7
+ "activation": {
8
+ "onStartup": true
9
+ },
10
+ "hooks": [
11
+ "before_agent_finalize",
12
+ "agent_end",
13
+ "after_tool_call",
14
+ "before_compaction",
15
+ "after_compaction",
16
+ "session_start",
17
+ "session_end",
18
+ "agent_turn_prepare",
19
+ "before_agent_run",
20
+ "before_tool_call",
21
+ "llm_output"
22
+ ],
23
+ "configSchema": {
24
+ "type": "object",
25
+ "properties": {
26
+ "enabled": {
27
+ "type": "boolean",
28
+ "default": true
29
+ },
30
+ "maxAttemptsPerTurn": {
31
+ "type": "number",
32
+ "default": 5
33
+ },
34
+ "maxTotalContinuations": {
35
+ "type": "number",
36
+ "default": 50
37
+ },
38
+ "toolErrorThreshold": {
39
+ "type": "number",
40
+ "default": 3
41
+ },
42
+ "excludedAgents": {
43
+ "type": "array",
44
+ "items": { "type": "string" },
45
+ "default": []
46
+ },
47
+ "highRiskTools": {
48
+ "type": "array",
49
+ "items": { "type": "string" },
50
+ "default": []
51
+ },
52
+ "tokenBudget": {
53
+ "type": "number"
54
+ },
55
+ "maxConcurrentAutopilot": {
56
+ "type": "number",
57
+ "default": 5,
58
+ "description": "Max concurrent autopilot sessions"
59
+ }
60
+ }
61
+ }
62
+ }
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@oh-my-matrix/autopilot",
3
+ "version": "2.1.1",
4
+ "description": "Autopilot: OpenClaw-native continuous execution for long-running tasks",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/TeFuirnever/oh-my-matrix.git",
12
+ "directory": "packages/autopilot"
13
+ },
14
+ "main": "dist/index.js",
15
+ "types": "dist/index.d.ts",
16
+ "files": [
17
+ "dist",
18
+ "openclaw.plugin.json"
19
+ ],
20
+ "openclaw": {
21
+ "extensions": [
22
+ "./dist/index.js"
23
+ ],
24
+ "plugin": true,
25
+ "hooks": [
26
+ "before_agent_finalize",
27
+ "agent_end",
28
+ "after_tool_call",
29
+ "before_compaction",
30
+ "after_compaction",
31
+ "session_start",
32
+ "session_end",
33
+ "agent_turn_prepare",
34
+ "before_agent_run",
35
+ "before_tool_call",
36
+ "llm_output"
37
+ ]
38
+ },
39
+ "peerDependencies": {
40
+ "openclaw": ">=2026.5.28",
41
+ "@oh-my-matrix/permission-policy": "0.1.0"
42
+ },
43
+ "devDependencies": {
44
+ "openclaw": "2026.5.28",
45
+ "typescript": "^5.0.0",
46
+ "vitest": "^3.0.0",
47
+ "@types/node": "^22.0.0",
48
+ "@oh-my-matrix/permission-policy": "0.1.0"
49
+ },
50
+ "scripts": {
51
+ "build": "tsc",
52
+ "test": "vitest run",
53
+ "pack": "pnpm pack",
54
+ "typecheck": "tsc --noEmit"
55
+ }
56
+ }