aboutsummaryrefslogtreecommitdiff
path: root/modules/core/module-leases.js
diff options
context:
space:
mode:
authorAgando <roduccomm@gmail.com>2026-07-09 06:00:32 +0200
committerAgando <roduccomm@gmail.com>2026-07-09 06:00:32 +0200
commitcf7461ffeb4f53f3f50c9c692a2e4fdcecf17e82 (patch)
treee7780cd41271381cf108c9c81d71a3cb65cfd555 /modules/core/module-leases.js
parentea4d09fb5ccba12ed774fcf7c913edfa1e6a851a (diff)
auto: 2026-07-09_06:00 changes
Diffstat (limited to 'modules/core/module-leases.js')
-rw-r--r--modules/core/module-leases.js17
1 files changed, 14 insertions, 3 deletions
diff --git a/modules/core/module-leases.js b/modules/core/module-leases.js
index 7489c92..60e8d98 100644
--- a/modules/core/module-leases.js
+++ b/modules/core/module-leases.js
@@ -38,10 +38,15 @@ class LeaseModule {
this.terminal.print('πŸ“œ Lease system loaded', 'info');
}
createLease(args) {
+ // Parse --write flag
+ const writeIdx = args.indexOf('--write');
+ const writeAccess = writeIdx !== -1;
+ if (writeIdx !== -1) args.splice(writeIdx, 1);
+
const workerId = args[1];
const duration = parseInt(args[2]) || 30;
const task = args.slice(3).join(' ') || 'generic task';
- if (!workerId) return this.terminal.print('Usage: lease-create <agent-id> [duration_sec] [task]', 'error');
+ if (!workerId) return this.terminal.print('Usage: lease-create <agent-id> [duration_sec] [task] [--write]', 'error');
const lease = {
id: `lease-${Date.now()}`,
@@ -51,7 +56,8 @@ class LeaseModule {
createdAt: new Date().toISOString(),
expiresAt: new Date(Date.now() + duration * 1000).toISOString(),
status: 'active',
- duration
+ duration,
+ write_access: writeAccess
};
this._leases[lease.id] = lease;
this.terminal.fs.writeFile(`leases/${lease.id}.json`, JSON.stringify(lease));
@@ -79,9 +85,14 @@ class LeaseModule {
this.terminal.print(`πŸ“œ Leases: ${active.length} active, ${expired.length} expired, ${revoked.length} revoked`, 'header');
active.forEach(l => {
const remaining = Math.max(0, Math.round((new Date(l.expiresAt) - Date.now()) / 1000));
- this.terminal.print(` ${l.id} β†’ ${l.workerId} (${remaining}s remain) β€” ${l.task.substring(0, 40)}`, 'info');
+ const writeTag = l.write_access ? ' ✏️write' : ' πŸ”read';
+ this.terminal.print(` ${l.id} β†’ ${l.workerId} (${remaining}s remain)${writeTag} β€” ${l.task.substring(0, 40)}`, 'info');
});
}
+ hasWriteAccess(agentId) {
+ // Check if any active lease grants write access for this agent
+ return Object.values(this._leases).some(l => l.workerId === agentId && l.status === 'active' && l.write_access === true);
+ }
revokeLease(id) {
if (!this._leases[id]) return this.terminal.print(`❌ Lease ${id} not found`, 'error');
this._leases[id].status = 'revoked';