@auxiora/os-bridge 1.10.19 → 1.10.20

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
@@ -1,6 +1,7 @@
1
- export type { Platform, ClipboardEntry, FileEvent, FileClassification, AppInfo, SystemState, OsBridgeConfig, } from './types.js';
1
+ export type { Platform, ClipboardEntry, FileEvent, FileClassification, AppInfo, SystemState, OsBridgeConfig, GpuInfo, ResourceSnapshot, MachineClass, MachineProfile, } from './types.js';
2
2
  export { ClipboardMonitor } from './clipboard.js';
3
3
  export { FileWatcher } from './file-watcher.js';
4
4
  export { AppController } from './app-controller.js';
5
5
  export { SystemStateMonitor } from './system-state.js';
6
+ export { ResourceProbe } from './resource-probe.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -2,4 +2,5 @@ export { ClipboardMonitor } from './clipboard.js';
2
2
  export { FileWatcher } from './file-watcher.js';
3
3
  export { AppController } from './app-controller.js';
4
4
  export { SystemStateMonitor } from './system-state.js';
5
+ export { ResourceProbe } from './resource-probe.js';
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ResourceSnapshot, MachineProfile } from './types.js';
2
+ export declare class ResourceProbe {
3
+ private gpuCache;
4
+ private gpuCacheTtlMs;
5
+ probe(): Promise<ResourceSnapshot>;
6
+ classify(snapshot: ResourceSnapshot): MachineProfile;
7
+ safeSlots(snapshot: ResourceSnapshot, profile: MachineProfile): number;
8
+ private readMemory;
9
+ private readSwap;
10
+ private readGpu;
11
+ private readDisk;
12
+ }
13
+ //# sourceMappingURL=resource-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-probe.d.ts","sourceRoot":"","sources":["../src/resource-probe.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAyB,cAAc,EAAE,MAAM,YAAY,CAAC;AAkB1F,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAA8D;IAC9E,OAAO,CAAC,aAAa,CAAU;IAEzB,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA6BxC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc;IAkCpD,SAAS,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM;YAMxD,UAAU;YAsBV,QAAQ;YAwCR,OAAO;YAgDP,QAAQ;CAYvB"}
@@ -0,0 +1,203 @@
1
+ import os from 'node:os';
2
+ import { execFile } from 'node:child_process';
3
+ import { readFile, statfs } from 'node:fs/promises';
4
+ function execFilePromise(cmd, args) {
5
+ return new Promise((resolve, reject) => {
6
+ execFile(cmd, args, { timeout: 5000 }, (error, stdout) => {
7
+ if (error) {
8
+ reject(error);
9
+ return;
10
+ }
11
+ resolve(stdout);
12
+ });
13
+ });
14
+ }
15
+ function bytesToMB(bytes) {
16
+ return Math.round(bytes / 1024 / 1024);
17
+ }
18
+ export class ResourceProbe {
19
+ gpuCache = null;
20
+ gpuCacheTtlMs = 60_000;
21
+ async probe() {
22
+ const [memory, swap, gpu, disk] = await Promise.all([
23
+ this.readMemory(),
24
+ this.readSwap(),
25
+ this.readGpu(),
26
+ this.readDisk(),
27
+ ]);
28
+ const cpus = os.cpus();
29
+ const [loadAvg1m, loadAvg5m] = os.loadavg();
30
+ const cores = cpus.length;
31
+ const utilization = Math.min(1, Math.max(0, loadAvg1m / cores));
32
+ return {
33
+ cpu: {
34
+ cores,
35
+ model: cpus[0]?.model ?? 'unknown',
36
+ loadAvg1m,
37
+ loadAvg5m,
38
+ utilization,
39
+ },
40
+ memory,
41
+ swap,
42
+ gpu,
43
+ disk,
44
+ timestamp: Date.now(),
45
+ };
46
+ }
47
+ classify(snapshot) {
48
+ const cores = snapshot.cpu.cores;
49
+ const ramMB = snapshot.memory.totalMB;
50
+ const hasGpu = snapshot.gpu !== null;
51
+ let machineClass;
52
+ let recommendedMaxAgents;
53
+ if (cores <= 2 || ramMB <= 2048) {
54
+ machineClass = 'minimal';
55
+ recommendedMaxAgents = 1;
56
+ }
57
+ else if (cores <= 4 && ramMB <= 8192) {
58
+ machineClass = 'light';
59
+ recommendedMaxAgents = 2;
60
+ }
61
+ else if (cores <= 8 && ramMB <= 16384) {
62
+ machineClass = 'standard';
63
+ recommendedMaxAgents = 3;
64
+ }
65
+ else if (cores <= 16 && ramMB <= 65536) {
66
+ machineClass = 'workstation';
67
+ recommendedMaxAgents = 5;
68
+ }
69
+ else {
70
+ machineClass = 'server';
71
+ recommendedMaxAgents = 8;
72
+ }
73
+ return {
74
+ machineClass,
75
+ hasGpu,
76
+ recommendedMaxAgents,
77
+ cpuCeiling: 0.8,
78
+ ramCeiling: 0.8,
79
+ };
80
+ }
81
+ safeSlots(snapshot, profile) {
82
+ const memSlots = Math.floor(snapshot.memory.availableMB / 512);
83
+ const cpuSlots = Math.floor((1 - snapshot.cpu.utilization) * snapshot.cpu.cores);
84
+ return Math.max(1, Math.min(profile.recommendedMaxAgents, memSlots, cpuSlots));
85
+ }
86
+ async readMemory() {
87
+ const totalMB = bytesToMB(os.totalmem());
88
+ const freeMB = bytesToMB(os.freemem());
89
+ let availableMB = freeMB;
90
+ if (os.platform() === 'linux') {
91
+ try {
92
+ const meminfo = await readFile('/proc/meminfo', 'utf-8');
93
+ const match = meminfo.match(/MemAvailable:\s+(\d+)\s+kB/);
94
+ if (match) {
95
+ availableMB = Math.round(Number(match[1]) / 1024);
96
+ }
97
+ }
98
+ catch {
99
+ // fall back to freemem
100
+ }
101
+ }
102
+ const usedPercent = totalMB > 0 ? Math.round(((totalMB - availableMB) / totalMB) * 100) : 0;
103
+ return { totalMB, freeMB, availableMB, usedPercent };
104
+ }
105
+ async readSwap() {
106
+ const platform = os.platform();
107
+ if (platform === 'linux') {
108
+ try {
109
+ const meminfo = await readFile('/proc/meminfo', 'utf-8');
110
+ const totalMatch = meminfo.match(/SwapTotal:\s+(\d+)\s+kB/);
111
+ const freeMatch = meminfo.match(/SwapFree:\s+(\d+)\s+kB/);
112
+ if (totalMatch && freeMatch) {
113
+ const totalMB = Math.round(Number(totalMatch[1]) / 1024);
114
+ const freeMB = Math.round(Number(freeMatch[1]) / 1024);
115
+ const usedMB = totalMB - freeMB;
116
+ const usedPercent = totalMB > 0 ? Math.round((usedMB / totalMB) * 100) : 0;
117
+ return { totalMB, usedMB, usedPercent };
118
+ }
119
+ }
120
+ catch {
121
+ // fall through
122
+ }
123
+ }
124
+ if (platform === 'darwin') {
125
+ try {
126
+ const output = await execFilePromise('sysctl', ['vm.swapusage']);
127
+ // Format: "vm.swapusage: total = 2048.00M used = 512.00M free = 1536.00M ..."
128
+ const totalMatch = output.match(/total\s*=\s*([\d.]+)M/);
129
+ const usedMatch = output.match(/used\s*=\s*([\d.]+)M/);
130
+ if (totalMatch && usedMatch) {
131
+ const totalMB = Math.round(Number(totalMatch[1]));
132
+ const usedMB = Math.round(Number(usedMatch[1]));
133
+ const usedPercent = totalMB > 0 ? Math.round((usedMB / totalMB) * 100) : 0;
134
+ return { totalMB, usedMB, usedPercent };
135
+ }
136
+ }
137
+ catch {
138
+ // fall through
139
+ }
140
+ }
141
+ return { totalMB: 0, usedMB: 0, usedPercent: 0 };
142
+ }
143
+ async readGpu() {
144
+ const now = Date.now();
145
+ if (this.gpuCache && now - this.gpuCache.timestamp < this.gpuCacheTtlMs) {
146
+ return this.gpuCache.result;
147
+ }
148
+ let result = null;
149
+ // Try NVIDIA first
150
+ try {
151
+ const output = await execFilePromise('nvidia-smi', [
152
+ '--query-gpu=name,memory.total,memory.used,utilization.gpu',
153
+ '--format=csv,noheader,nounits',
154
+ ]);
155
+ const parts = output.trim().split(',').map((s) => s.trim());
156
+ if (parts.length >= 4) {
157
+ result = {
158
+ name: parts[0],
159
+ memoryTotalMB: Number(parts[1]),
160
+ memoryUsedMB: Number(parts[2]),
161
+ utilizationPercent: Number(parts[3]),
162
+ };
163
+ }
164
+ }
165
+ catch {
166
+ // Try AMD ROCm
167
+ try {
168
+ const output = await execFilePromise('rocm-smi', ['--showmeminfo', 'vram', '--showuse']);
169
+ // Parse ROCm output — best effort
170
+ const usedMatch = output.match(/Used\s*:\s*(\d+)/);
171
+ const totalMatch = output.match(/Total\s*:\s*(\d+)/);
172
+ const utilMatch = output.match(/GPU use\s*\(%\)\s*:\s*(\d+)/i);
173
+ if (totalMatch) {
174
+ result = {
175
+ name: 'AMD GPU',
176
+ memoryTotalMB: Math.round(Number(totalMatch[1]) / (1024 * 1024)),
177
+ memoryUsedMB: usedMatch ? Math.round(Number(usedMatch[1]) / (1024 * 1024)) : 0,
178
+ utilizationPercent: utilMatch ? Number(utilMatch[1]) : 0,
179
+ };
180
+ }
181
+ }
182
+ catch {
183
+ // No GPU available
184
+ }
185
+ }
186
+ this.gpuCache = { result, timestamp: now };
187
+ return result;
188
+ }
189
+ async readDisk() {
190
+ try {
191
+ const stats = await statfs(process.cwd());
192
+ const blockSize = stats.bsize;
193
+ const totalMB = bytesToMB(stats.blocks * blockSize);
194
+ const freeMB = bytesToMB(stats.bavail * blockSize);
195
+ const usedPercent = totalMB > 0 ? Math.round(((totalMB - freeMB) / totalMB) * 100) : 0;
196
+ return { totalMB, freeMB, usedPercent };
197
+ }
198
+ catch {
199
+ return null;
200
+ }
201
+ }
202
+ }
203
+ //# sourceMappingURL=resource-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-probe.js","sourceRoot":"","sources":["../src/resource-probe.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -40,6 +40,47 @@ export interface SystemState {
40
40
  charging: boolean;
41
41
  } | null;
42
42
  }
43
+ export interface GpuInfo {
44
+ name: string;
45
+ memoryTotalMB: number;
46
+ memoryUsedMB: number;
47
+ utilizationPercent: number;
48
+ }
49
+ export interface ResourceSnapshot {
50
+ cpu: {
51
+ cores: number;
52
+ model: string;
53
+ loadAvg1m: number;
54
+ loadAvg5m: number;
55
+ utilization: number;
56
+ };
57
+ memory: {
58
+ totalMB: number;
59
+ freeMB: number;
60
+ availableMB: number;
61
+ usedPercent: number;
62
+ };
63
+ swap: {
64
+ totalMB: number;
65
+ usedMB: number;
66
+ usedPercent: number;
67
+ };
68
+ gpu: GpuInfo | null;
69
+ disk: {
70
+ totalMB: number;
71
+ freeMB: number;
72
+ usedPercent: number;
73
+ } | null;
74
+ timestamp: number;
75
+ }
76
+ export type MachineClass = 'minimal' | 'light' | 'standard' | 'workstation' | 'server';
77
+ export interface MachineProfile {
78
+ machineClass: MachineClass;
79
+ hasGpu: boolean;
80
+ recommendedMaxAgents: number;
81
+ cpuCeiling: number;
82
+ ramCeiling: number;
83
+ }
43
84
  export interface OsBridgeConfig {
44
85
  watchDirs?: string[];
45
86
  clipboardPollMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GACV,OAAO,GACP,OAAO,GACP,OAAO,GACP,MAAM,GACN,SAAS,GACT,aAAa,GACb,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KACnB,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GACV,OAAO,GACP,OAAO,GACP,OAAO,GACP,MAAM,GACN,SAAS,GACT,aAAa,GACb,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KACnB,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACjG,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEvF,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auxiora/os-bridge",
3
- "version": "1.10.19",
3
+ "version": "1.10.20",
4
4
  "description": "Deep OS integration: clipboard, file watching, app control, system state",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,8 +13,8 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "nanoid": "^5.1.2",
16
- "@auxiora/logger": "1.10.19",
17
- "@auxiora/audit": "1.10.19"
16
+ "@auxiora/logger": "1.10.20",
17
+ "@auxiora/audit": "1.10.20"
18
18
  },
19
19
  "engines": {
20
20
  "node": ">=22.0.0"