@almadar/runtime 3.1.4 → 3.2.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.
- package/dist/{OrbitalServerRuntime-DWJYcIJG.d.ts → OrbitalServerRuntime-CQsVhY4Y.d.ts} +1 -1
- package/dist/OrbitalServerRuntime.d.ts +2 -2
- package/dist/OrbitalServerRuntime.js +41 -17
- package/dist/OrbitalServerRuntime.js.map +1 -1
- package/dist/ServerBridge.d.ts +1 -1
- package/dist/{chunk-6PAKTVTR.js → chunk-PXASRZKG.js} +157 -29
- package/dist/chunk-PXASRZKG.js.map +1 -0
- package/dist/index.d.ts +13 -3
- package/dist/index.js +1 -1
- package/dist/{types-CM6txTNy.d.ts → types-B8OfRFfV.d.ts} +14 -15
- package/package.json +2 -2
- package/dist/chunk-6PAKTVTR.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { I as IEventBus, g as RuntimeEvent, f as EventListener, U as Unsubscribe, T as TraitDefinition, R as RuntimeConfig, i as TransitionObserver, h as TraitState, j as TransitionResult, E as EvaluationContextExtensions, a as EffectHandlers } from './types-
|
|
2
|
+
import { I as IEventBus, g as RuntimeEvent, f as EventListener, U as Unsubscribe, T as TraitDefinition, R as RuntimeConfig, i as TransitionObserver, h as TraitState, j as TransitionResult, E as EvaluationContextExtensions, a as EffectHandlers } from './types-B8OfRFfV.js';
|
|
3
3
|
import { EventPayload, EntityRow, OrbitalSchema, Orbital, Trait, OrbitalDefinition, Entity, TraitTick } from '@almadar/core';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import 'express';
|
|
2
|
-
export { v as EffectResult, L as LoaderConfig, w as LocalPersistenceAdapter, O as OrbitalEventRequest, c as OrbitalEventResponse, x as OrbitalServerRuntime, d as OrbitalServerRuntimeConfig, P as PersistenceAdapter, R as RegisteredOrbital, i as RuntimeOrbital, j as RuntimeOrbitalSchema, k as RuntimeTrait, y as RuntimeTraitTick, z as createOrbitalServerRuntime } from './OrbitalServerRuntime-
|
|
3
|
-
import './types-
|
|
2
|
+
export { v as EffectResult, L as LoaderConfig, w as LocalPersistenceAdapter, O as OrbitalEventRequest, c as OrbitalEventResponse, x as OrbitalServerRuntime, d as OrbitalServerRuntimeConfig, P as PersistenceAdapter, R as RegisteredOrbital, i as RuntimeOrbital, j as RuntimeOrbitalSchema, k as RuntimeTrait, y as RuntimeTraitTick, z as createOrbitalServerRuntime } from './OrbitalServerRuntime-CQsVhY4Y.js';
|
|
3
|
+
import './types-B8OfRFfV.js';
|
|
4
4
|
import '@almadar/core';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventBus, createUnifiedLoader, preprocessSchema, StateMachineManager, createContextFromBindings, EffectExecutor } from './chunk-
|
|
1
|
+
import { EventBus, createUnifiedLoader, preprocessSchema, StateMachineManager, createContextFromBindings, EffectExecutor } from './chunk-PXASRZKG.js';
|
|
2
2
|
import './chunk-PZ5AY32C.js';
|
|
3
3
|
import { Router } from 'express';
|
|
4
4
|
import * as fs from 'fs';
|
|
@@ -429,14 +429,16 @@ function createOsHandlers(ctx) {
|
|
|
429
429
|
ctx.emitEvent(eventType, payload);
|
|
430
430
|
}
|
|
431
431
|
}
|
|
432
|
+
const resolveOnMessage = (emit, fallback) => emit?.on_message ?? fallback;
|
|
432
433
|
const handlers = {
|
|
433
|
-
osWatchFiles: (glob, options) => {
|
|
434
|
+
osWatchFiles: (glob, options, emit) => {
|
|
434
435
|
const recursive = options.recursive !== false;
|
|
435
436
|
const pattern = globToRegex(glob);
|
|
437
|
+
const eventName = resolveOnMessage(emit, "OS_FILE_MODIFIED");
|
|
436
438
|
try {
|
|
437
439
|
const watcher = fs.watch(cwd, { recursive }, (_event, filename) => {
|
|
438
440
|
if (filename && pattern.test(filename)) {
|
|
439
|
-
debouncedEmit(
|
|
441
|
+
debouncedEmit(eventName, {
|
|
440
442
|
file: filename,
|
|
441
443
|
glob,
|
|
442
444
|
cwd
|
|
@@ -445,12 +447,19 @@ function createOsHandlers(ctx) {
|
|
|
445
447
|
});
|
|
446
448
|
watchers.push(watcher);
|
|
447
449
|
} catch (err) {
|
|
450
|
+
if (emit?.failure) {
|
|
451
|
+
ctx.emitEvent(emit.failure, {
|
|
452
|
+
error: err instanceof Error ? err.message : String(err)
|
|
453
|
+
});
|
|
454
|
+
}
|
|
448
455
|
console.warn("[os/watch-files] Failed to start watcher:", err);
|
|
449
456
|
}
|
|
450
457
|
},
|
|
451
|
-
osWatchProcess: (name, subcommand) => {
|
|
458
|
+
osWatchProcess: (name, subcommand, emit) => {
|
|
452
459
|
const searchTerm = subcommand ? `${name} ${subcommand}` : name;
|
|
453
460
|
let wasRunning = false;
|
|
461
|
+
const startEvent = resolveOnMessage(emit, "OS_PROCESS_STARTED");
|
|
462
|
+
const exitEvent = resolveOnMessage(emit, "OS_PROCESS_EXITED");
|
|
454
463
|
const interval = setInterval(() => {
|
|
455
464
|
let isRunning = false;
|
|
456
465
|
try {
|
|
@@ -463,20 +472,22 @@ function createOsHandlers(ctx) {
|
|
|
463
472
|
isRunning = false;
|
|
464
473
|
}
|
|
465
474
|
if (isRunning && !wasRunning) {
|
|
466
|
-
debouncedEmit(
|
|
475
|
+
debouncedEmit(startEvent, { process: name, subcommand: subcommand ?? null });
|
|
467
476
|
} else if (!isRunning && wasRunning) {
|
|
468
|
-
debouncedEmit(
|
|
477
|
+
debouncedEmit(exitEvent, { process: name, subcommand: subcommand ?? null });
|
|
469
478
|
}
|
|
470
479
|
wasRunning = isRunning;
|
|
471
480
|
}, 2e3);
|
|
472
481
|
intervals.push(interval);
|
|
473
482
|
},
|
|
474
|
-
osWatchPort: (port, protocol) => {
|
|
483
|
+
osWatchPort: (port, protocol, emit) => {
|
|
475
484
|
if (protocol !== "tcp") {
|
|
476
485
|
console.warn(`[os/watch-port] Only TCP is supported, got: ${protocol}`);
|
|
477
486
|
return;
|
|
478
487
|
}
|
|
479
488
|
let wasOpen = false;
|
|
489
|
+
const openEvent = resolveOnMessage(emit, "OS_PORT_OPENED");
|
|
490
|
+
const closeEvent = resolveOnMessage(emit, "OS_PORT_CLOSED");
|
|
480
491
|
const interval = setInterval(() => {
|
|
481
492
|
const socket = new net.Socket();
|
|
482
493
|
socket.setTimeout(1e3);
|
|
@@ -484,28 +495,28 @@ function createOsHandlers(ctx) {
|
|
|
484
495
|
socket.destroy();
|
|
485
496
|
if (!wasOpen) {
|
|
486
497
|
wasOpen = true;
|
|
487
|
-
debouncedEmit(
|
|
498
|
+
debouncedEmit(openEvent, { port, protocol });
|
|
488
499
|
}
|
|
489
500
|
});
|
|
490
501
|
socket.on("error", () => {
|
|
491
502
|
socket.destroy();
|
|
492
503
|
if (wasOpen) {
|
|
493
504
|
wasOpen = false;
|
|
494
|
-
debouncedEmit(
|
|
505
|
+
debouncedEmit(closeEvent, { port, protocol });
|
|
495
506
|
}
|
|
496
507
|
});
|
|
497
508
|
socket.on("timeout", () => {
|
|
498
509
|
socket.destroy();
|
|
499
510
|
if (wasOpen) {
|
|
500
511
|
wasOpen = false;
|
|
501
|
-
debouncedEmit(
|
|
512
|
+
debouncedEmit(closeEvent, { port, protocol });
|
|
502
513
|
}
|
|
503
514
|
});
|
|
504
515
|
socket.connect(port, "127.0.0.1");
|
|
505
516
|
}, 3e3);
|
|
506
517
|
intervals.push(interval);
|
|
507
518
|
},
|
|
508
|
-
osWatchHttp: (urlPattern, method) => {
|
|
519
|
+
osWatchHttp: (urlPattern, method, _emit) => {
|
|
509
520
|
if (!httpWatchActive) {
|
|
510
521
|
httpWatchActive = true;
|
|
511
522
|
console.warn(
|
|
@@ -513,21 +524,27 @@ function createOsHandlers(ctx) {
|
|
|
513
524
|
);
|
|
514
525
|
}
|
|
515
526
|
},
|
|
516
|
-
osWatchCron: (expression) => {
|
|
527
|
+
osWatchCron: (expression, emit) => {
|
|
517
528
|
let fields;
|
|
518
529
|
try {
|
|
519
530
|
fields = parseCron(expression);
|
|
520
531
|
} catch (err) {
|
|
532
|
+
if (emit?.failure) {
|
|
533
|
+
ctx.emitEvent(emit.failure, {
|
|
534
|
+
error: err instanceof Error ? err.message : String(err)
|
|
535
|
+
});
|
|
536
|
+
}
|
|
521
537
|
console.warn("[os/watch-cron] Invalid expression:", err);
|
|
522
538
|
return;
|
|
523
539
|
}
|
|
524
540
|
let lastFired = -1;
|
|
541
|
+
const eventName = resolveOnMessage(emit, "OS_CRON_FIRE");
|
|
525
542
|
const interval = setInterval(() => {
|
|
526
543
|
const now = /* @__PURE__ */ new Date();
|
|
527
544
|
const minuteKey = now.getFullYear() * 1e8 + now.getMonth() * 1e6 + now.getDate() * 1e4 + now.getHours() * 100 + now.getMinutes();
|
|
528
545
|
if (minuteKey !== lastFired && cronMatches(fields, now)) {
|
|
529
546
|
lastFired = minuteKey;
|
|
530
|
-
debouncedEmit(
|
|
547
|
+
debouncedEmit(eventName, {
|
|
531
548
|
expression,
|
|
532
549
|
firedAt: now.toISOString()
|
|
533
550
|
});
|
|
@@ -535,26 +552,33 @@ function createOsHandlers(ctx) {
|
|
|
535
552
|
}, 1e3);
|
|
536
553
|
intervals.push(interval);
|
|
537
554
|
},
|
|
538
|
-
osWatchSignal: (signal) => {
|
|
555
|
+
osWatchSignal: (signal, emit) => {
|
|
539
556
|
const sig = signal.toUpperCase();
|
|
540
557
|
const handler = () => {
|
|
541
|
-
|
|
558
|
+
const eventName = emit?.on_message ?? `OS_SIGNAL_${sig}`;
|
|
559
|
+
debouncedEmit(eventName, { signal: sig });
|
|
542
560
|
};
|
|
543
561
|
try {
|
|
544
562
|
process.on(sig, handler);
|
|
545
563
|
signalHandlers.push({ signal: sig, handler });
|
|
546
564
|
} catch (err) {
|
|
565
|
+
if (emit?.failure) {
|
|
566
|
+
ctx.emitEvent(emit.failure, {
|
|
567
|
+
error: err instanceof Error ? err.message : String(err)
|
|
568
|
+
});
|
|
569
|
+
}
|
|
547
570
|
console.warn(`[os/watch-signal] Cannot listen for ${sig}:`, err);
|
|
548
571
|
}
|
|
549
572
|
},
|
|
550
|
-
osWatchEnv: (variable) => {
|
|
573
|
+
osWatchEnv: (variable, emit) => {
|
|
551
574
|
let lastValue = process.env[variable];
|
|
575
|
+
const eventName = resolveOnMessage(emit, "OS_ENV_CHANGED");
|
|
552
576
|
const interval = setInterval(() => {
|
|
553
577
|
const current = process.env[variable];
|
|
554
578
|
if (current !== lastValue) {
|
|
555
579
|
const previous = lastValue;
|
|
556
580
|
lastValue = current;
|
|
557
|
-
debouncedEmit(
|
|
581
|
+
debouncedEmit(eventName, {
|
|
558
582
|
variable,
|
|
559
583
|
value: current ?? null,
|
|
560
584
|
previous: previous ?? null
|