@objectstack/runtime 4.0.1 → 4.0.2
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/.turbo/turbo-build.log +11 -11
- package/CHANGELOG.md +10 -0
- package/dist/index.cjs +198 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -1
- package/dist/index.d.ts +42 -1
- package/dist/index.js +198 -8
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/src/app-plugin.test.ts +8 -3
- package/src/app-plugin.ts +4 -8
- package/src/dispatcher-plugin.ts +107 -2
- package/src/http-dispatcher.root.test.ts +5 -2
- package/src/http-dispatcher.ts +157 -12
- package/vitest.config.ts +25 -0
package/dist/index.d.cts
CHANGED
|
@@ -287,6 +287,10 @@ declare class HttpDispatcher {
|
|
|
287
287
|
constructor(kernel: ObjectKernel);
|
|
288
288
|
private success;
|
|
289
289
|
private error;
|
|
290
|
+
/**
|
|
291
|
+
* 404 Route Not Found — no route is registered for this path.
|
|
292
|
+
*/
|
|
293
|
+
private routeNotFound;
|
|
290
294
|
private ensureBroker;
|
|
291
295
|
/**
|
|
292
296
|
* Generates the discovery JSON response for the API root.
|
|
@@ -346,6 +350,7 @@ declare class HttpDispatcher {
|
|
|
346
350
|
metadata: {
|
|
347
351
|
enabled: boolean;
|
|
348
352
|
status: "degraded";
|
|
353
|
+
handlerReady: boolean;
|
|
349
354
|
route: string;
|
|
350
355
|
provider: string;
|
|
351
356
|
message: string;
|
|
@@ -353,157 +358,188 @@ declare class HttpDispatcher {
|
|
|
353
358
|
data: {
|
|
354
359
|
enabled: boolean;
|
|
355
360
|
status: "available";
|
|
361
|
+
handlerReady: boolean;
|
|
356
362
|
route: string | undefined;
|
|
357
363
|
provider: string | undefined;
|
|
358
364
|
};
|
|
359
365
|
auth: {
|
|
360
366
|
enabled: boolean;
|
|
361
367
|
status: "available";
|
|
368
|
+
handlerReady: boolean;
|
|
362
369
|
route: string | undefined;
|
|
363
370
|
provider: string | undefined;
|
|
364
371
|
} | {
|
|
365
372
|
enabled: boolean;
|
|
366
373
|
status: "unavailable";
|
|
374
|
+
handlerReady: boolean;
|
|
367
375
|
message: string;
|
|
368
376
|
};
|
|
369
377
|
automation: {
|
|
370
378
|
enabled: boolean;
|
|
371
379
|
status: "available";
|
|
380
|
+
handlerReady: boolean;
|
|
372
381
|
route: string | undefined;
|
|
373
382
|
provider: string | undefined;
|
|
374
383
|
} | {
|
|
375
384
|
enabled: boolean;
|
|
376
385
|
status: "unavailable";
|
|
386
|
+
handlerReady: boolean;
|
|
377
387
|
message: string;
|
|
378
388
|
};
|
|
379
389
|
analytics: {
|
|
380
390
|
enabled: boolean;
|
|
381
391
|
status: "available";
|
|
392
|
+
handlerReady: boolean;
|
|
382
393
|
route: string | undefined;
|
|
383
394
|
provider: string | undefined;
|
|
384
395
|
} | {
|
|
385
396
|
enabled: boolean;
|
|
386
397
|
status: "unavailable";
|
|
398
|
+
handlerReady: boolean;
|
|
387
399
|
message: string;
|
|
388
400
|
};
|
|
389
401
|
cache: {
|
|
390
402
|
enabled: boolean;
|
|
391
403
|
status: "available";
|
|
404
|
+
handlerReady: boolean;
|
|
392
405
|
route: string | undefined;
|
|
393
406
|
provider: string | undefined;
|
|
394
407
|
} | {
|
|
395
408
|
enabled: boolean;
|
|
396
409
|
status: "unavailable";
|
|
410
|
+
handlerReady: boolean;
|
|
397
411
|
message: string;
|
|
398
412
|
};
|
|
399
413
|
queue: {
|
|
400
414
|
enabled: boolean;
|
|
401
415
|
status: "available";
|
|
416
|
+
handlerReady: boolean;
|
|
402
417
|
route: string | undefined;
|
|
403
418
|
provider: string | undefined;
|
|
404
419
|
} | {
|
|
405
420
|
enabled: boolean;
|
|
406
421
|
status: "unavailable";
|
|
422
|
+
handlerReady: boolean;
|
|
407
423
|
message: string;
|
|
408
424
|
};
|
|
409
425
|
job: {
|
|
410
426
|
enabled: boolean;
|
|
411
427
|
status: "available";
|
|
428
|
+
handlerReady: boolean;
|
|
412
429
|
route: string | undefined;
|
|
413
430
|
provider: string | undefined;
|
|
414
431
|
} | {
|
|
415
432
|
enabled: boolean;
|
|
416
433
|
status: "unavailable";
|
|
434
|
+
handlerReady: boolean;
|
|
417
435
|
message: string;
|
|
418
436
|
};
|
|
419
437
|
ui: {
|
|
420
438
|
enabled: boolean;
|
|
421
439
|
status: "available";
|
|
440
|
+
handlerReady: boolean;
|
|
422
441
|
route: string | undefined;
|
|
423
442
|
provider: string | undefined;
|
|
424
443
|
} | {
|
|
425
444
|
enabled: boolean;
|
|
426
445
|
status: "unavailable";
|
|
446
|
+
handlerReady: boolean;
|
|
427
447
|
message: string;
|
|
428
448
|
};
|
|
429
449
|
workflow: {
|
|
430
450
|
enabled: boolean;
|
|
431
451
|
status: "available";
|
|
452
|
+
handlerReady: boolean;
|
|
432
453
|
route: string | undefined;
|
|
433
454
|
provider: string | undefined;
|
|
434
455
|
} | {
|
|
435
456
|
enabled: boolean;
|
|
436
457
|
status: "unavailable";
|
|
458
|
+
handlerReady: boolean;
|
|
437
459
|
message: string;
|
|
438
460
|
};
|
|
439
461
|
realtime: {
|
|
440
462
|
enabled: boolean;
|
|
441
463
|
status: "available";
|
|
464
|
+
handlerReady: boolean;
|
|
442
465
|
route: string | undefined;
|
|
443
466
|
provider: string | undefined;
|
|
444
467
|
} | {
|
|
445
468
|
enabled: boolean;
|
|
446
469
|
status: "unavailable";
|
|
470
|
+
handlerReady: boolean;
|
|
447
471
|
message: string;
|
|
448
472
|
};
|
|
449
473
|
notification: {
|
|
450
474
|
enabled: boolean;
|
|
451
475
|
status: "available";
|
|
476
|
+
handlerReady: boolean;
|
|
452
477
|
route: string | undefined;
|
|
453
478
|
provider: string | undefined;
|
|
454
479
|
} | {
|
|
455
480
|
enabled: boolean;
|
|
456
481
|
status: "unavailable";
|
|
482
|
+
handlerReady: boolean;
|
|
457
483
|
message: string;
|
|
458
484
|
};
|
|
459
485
|
ai: {
|
|
460
486
|
enabled: boolean;
|
|
461
487
|
status: "available";
|
|
488
|
+
handlerReady: boolean;
|
|
462
489
|
route: string | undefined;
|
|
463
490
|
provider: string | undefined;
|
|
464
491
|
} | {
|
|
465
492
|
enabled: boolean;
|
|
466
493
|
status: "unavailable";
|
|
494
|
+
handlerReady: boolean;
|
|
467
495
|
message: string;
|
|
468
496
|
};
|
|
469
497
|
i18n: {
|
|
470
498
|
enabled: boolean;
|
|
471
499
|
status: "available";
|
|
500
|
+
handlerReady: boolean;
|
|
472
501
|
route: string | undefined;
|
|
473
502
|
provider: string | undefined;
|
|
474
503
|
} | {
|
|
475
504
|
enabled: boolean;
|
|
476
505
|
status: "unavailable";
|
|
506
|
+
handlerReady: boolean;
|
|
477
507
|
message: string;
|
|
478
508
|
};
|
|
479
509
|
graphql: {
|
|
480
510
|
enabled: boolean;
|
|
481
511
|
status: "available";
|
|
512
|
+
handlerReady: boolean;
|
|
482
513
|
route: string | undefined;
|
|
483
514
|
provider: string | undefined;
|
|
484
515
|
} | {
|
|
485
516
|
enabled: boolean;
|
|
486
517
|
status: "unavailable";
|
|
518
|
+
handlerReady: boolean;
|
|
487
519
|
message: string;
|
|
488
520
|
};
|
|
489
521
|
'file-storage': {
|
|
490
522
|
enabled: boolean;
|
|
491
523
|
status: "available";
|
|
524
|
+
handlerReady: boolean;
|
|
492
525
|
route: string | undefined;
|
|
493
526
|
provider: string | undefined;
|
|
494
527
|
} | {
|
|
495
528
|
enabled: boolean;
|
|
496
529
|
status: "unavailable";
|
|
530
|
+
handlerReady: boolean;
|
|
497
531
|
message: string;
|
|
498
532
|
};
|
|
499
533
|
search: {
|
|
500
534
|
enabled: boolean;
|
|
501
535
|
status: "available";
|
|
536
|
+
handlerReady: boolean;
|
|
502
537
|
route: string | undefined;
|
|
503
538
|
provider: string | undefined;
|
|
504
539
|
} | {
|
|
505
540
|
enabled: boolean;
|
|
506
541
|
status: "unavailable";
|
|
542
|
+
handlerReady: boolean;
|
|
507
543
|
message: string;
|
|
508
544
|
};
|
|
509
545
|
};
|
|
@@ -620,11 +656,16 @@ declare class HttpDispatcher {
|
|
|
620
656
|
*/
|
|
621
657
|
private getObjectQLService;
|
|
622
658
|
private capitalize;
|
|
659
|
+
/**
|
|
660
|
+
* Handle AI service routes (/ai/chat, /ai/models, /ai/conversations, etc.)
|
|
661
|
+
* Resolves the AI service and its built-in route handlers, then dispatches.
|
|
662
|
+
*/
|
|
663
|
+
handleAI(subPath: string, method: string, body: any, query: any, _context: HttpProtocolContext): Promise<HttpDispatcherResult>;
|
|
623
664
|
/**
|
|
624
665
|
* Main Dispatcher Entry Point
|
|
625
666
|
* Routes the request to the appropriate handler based on path and precedence
|
|
626
667
|
*/
|
|
627
|
-
dispatch(method: string, path: string, body: any, query: any, context: HttpProtocolContext): Promise<HttpDispatcherResult>;
|
|
668
|
+
dispatch(method: string, path: string, body: any, query: any, context: HttpProtocolContext, prefix?: string): Promise<HttpDispatcherResult>;
|
|
628
669
|
/**
|
|
629
670
|
* Handles Custom API Endpoints defined in metadata
|
|
630
671
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -287,6 +287,10 @@ declare class HttpDispatcher {
|
|
|
287
287
|
constructor(kernel: ObjectKernel);
|
|
288
288
|
private success;
|
|
289
289
|
private error;
|
|
290
|
+
/**
|
|
291
|
+
* 404 Route Not Found — no route is registered for this path.
|
|
292
|
+
*/
|
|
293
|
+
private routeNotFound;
|
|
290
294
|
private ensureBroker;
|
|
291
295
|
/**
|
|
292
296
|
* Generates the discovery JSON response for the API root.
|
|
@@ -346,6 +350,7 @@ declare class HttpDispatcher {
|
|
|
346
350
|
metadata: {
|
|
347
351
|
enabled: boolean;
|
|
348
352
|
status: "degraded";
|
|
353
|
+
handlerReady: boolean;
|
|
349
354
|
route: string;
|
|
350
355
|
provider: string;
|
|
351
356
|
message: string;
|
|
@@ -353,157 +358,188 @@ declare class HttpDispatcher {
|
|
|
353
358
|
data: {
|
|
354
359
|
enabled: boolean;
|
|
355
360
|
status: "available";
|
|
361
|
+
handlerReady: boolean;
|
|
356
362
|
route: string | undefined;
|
|
357
363
|
provider: string | undefined;
|
|
358
364
|
};
|
|
359
365
|
auth: {
|
|
360
366
|
enabled: boolean;
|
|
361
367
|
status: "available";
|
|
368
|
+
handlerReady: boolean;
|
|
362
369
|
route: string | undefined;
|
|
363
370
|
provider: string | undefined;
|
|
364
371
|
} | {
|
|
365
372
|
enabled: boolean;
|
|
366
373
|
status: "unavailable";
|
|
374
|
+
handlerReady: boolean;
|
|
367
375
|
message: string;
|
|
368
376
|
};
|
|
369
377
|
automation: {
|
|
370
378
|
enabled: boolean;
|
|
371
379
|
status: "available";
|
|
380
|
+
handlerReady: boolean;
|
|
372
381
|
route: string | undefined;
|
|
373
382
|
provider: string | undefined;
|
|
374
383
|
} | {
|
|
375
384
|
enabled: boolean;
|
|
376
385
|
status: "unavailable";
|
|
386
|
+
handlerReady: boolean;
|
|
377
387
|
message: string;
|
|
378
388
|
};
|
|
379
389
|
analytics: {
|
|
380
390
|
enabled: boolean;
|
|
381
391
|
status: "available";
|
|
392
|
+
handlerReady: boolean;
|
|
382
393
|
route: string | undefined;
|
|
383
394
|
provider: string | undefined;
|
|
384
395
|
} | {
|
|
385
396
|
enabled: boolean;
|
|
386
397
|
status: "unavailable";
|
|
398
|
+
handlerReady: boolean;
|
|
387
399
|
message: string;
|
|
388
400
|
};
|
|
389
401
|
cache: {
|
|
390
402
|
enabled: boolean;
|
|
391
403
|
status: "available";
|
|
404
|
+
handlerReady: boolean;
|
|
392
405
|
route: string | undefined;
|
|
393
406
|
provider: string | undefined;
|
|
394
407
|
} | {
|
|
395
408
|
enabled: boolean;
|
|
396
409
|
status: "unavailable";
|
|
410
|
+
handlerReady: boolean;
|
|
397
411
|
message: string;
|
|
398
412
|
};
|
|
399
413
|
queue: {
|
|
400
414
|
enabled: boolean;
|
|
401
415
|
status: "available";
|
|
416
|
+
handlerReady: boolean;
|
|
402
417
|
route: string | undefined;
|
|
403
418
|
provider: string | undefined;
|
|
404
419
|
} | {
|
|
405
420
|
enabled: boolean;
|
|
406
421
|
status: "unavailable";
|
|
422
|
+
handlerReady: boolean;
|
|
407
423
|
message: string;
|
|
408
424
|
};
|
|
409
425
|
job: {
|
|
410
426
|
enabled: boolean;
|
|
411
427
|
status: "available";
|
|
428
|
+
handlerReady: boolean;
|
|
412
429
|
route: string | undefined;
|
|
413
430
|
provider: string | undefined;
|
|
414
431
|
} | {
|
|
415
432
|
enabled: boolean;
|
|
416
433
|
status: "unavailable";
|
|
434
|
+
handlerReady: boolean;
|
|
417
435
|
message: string;
|
|
418
436
|
};
|
|
419
437
|
ui: {
|
|
420
438
|
enabled: boolean;
|
|
421
439
|
status: "available";
|
|
440
|
+
handlerReady: boolean;
|
|
422
441
|
route: string | undefined;
|
|
423
442
|
provider: string | undefined;
|
|
424
443
|
} | {
|
|
425
444
|
enabled: boolean;
|
|
426
445
|
status: "unavailable";
|
|
446
|
+
handlerReady: boolean;
|
|
427
447
|
message: string;
|
|
428
448
|
};
|
|
429
449
|
workflow: {
|
|
430
450
|
enabled: boolean;
|
|
431
451
|
status: "available";
|
|
452
|
+
handlerReady: boolean;
|
|
432
453
|
route: string | undefined;
|
|
433
454
|
provider: string | undefined;
|
|
434
455
|
} | {
|
|
435
456
|
enabled: boolean;
|
|
436
457
|
status: "unavailable";
|
|
458
|
+
handlerReady: boolean;
|
|
437
459
|
message: string;
|
|
438
460
|
};
|
|
439
461
|
realtime: {
|
|
440
462
|
enabled: boolean;
|
|
441
463
|
status: "available";
|
|
464
|
+
handlerReady: boolean;
|
|
442
465
|
route: string | undefined;
|
|
443
466
|
provider: string | undefined;
|
|
444
467
|
} | {
|
|
445
468
|
enabled: boolean;
|
|
446
469
|
status: "unavailable";
|
|
470
|
+
handlerReady: boolean;
|
|
447
471
|
message: string;
|
|
448
472
|
};
|
|
449
473
|
notification: {
|
|
450
474
|
enabled: boolean;
|
|
451
475
|
status: "available";
|
|
476
|
+
handlerReady: boolean;
|
|
452
477
|
route: string | undefined;
|
|
453
478
|
provider: string | undefined;
|
|
454
479
|
} | {
|
|
455
480
|
enabled: boolean;
|
|
456
481
|
status: "unavailable";
|
|
482
|
+
handlerReady: boolean;
|
|
457
483
|
message: string;
|
|
458
484
|
};
|
|
459
485
|
ai: {
|
|
460
486
|
enabled: boolean;
|
|
461
487
|
status: "available";
|
|
488
|
+
handlerReady: boolean;
|
|
462
489
|
route: string | undefined;
|
|
463
490
|
provider: string | undefined;
|
|
464
491
|
} | {
|
|
465
492
|
enabled: boolean;
|
|
466
493
|
status: "unavailable";
|
|
494
|
+
handlerReady: boolean;
|
|
467
495
|
message: string;
|
|
468
496
|
};
|
|
469
497
|
i18n: {
|
|
470
498
|
enabled: boolean;
|
|
471
499
|
status: "available";
|
|
500
|
+
handlerReady: boolean;
|
|
472
501
|
route: string | undefined;
|
|
473
502
|
provider: string | undefined;
|
|
474
503
|
} | {
|
|
475
504
|
enabled: boolean;
|
|
476
505
|
status: "unavailable";
|
|
506
|
+
handlerReady: boolean;
|
|
477
507
|
message: string;
|
|
478
508
|
};
|
|
479
509
|
graphql: {
|
|
480
510
|
enabled: boolean;
|
|
481
511
|
status: "available";
|
|
512
|
+
handlerReady: boolean;
|
|
482
513
|
route: string | undefined;
|
|
483
514
|
provider: string | undefined;
|
|
484
515
|
} | {
|
|
485
516
|
enabled: boolean;
|
|
486
517
|
status: "unavailable";
|
|
518
|
+
handlerReady: boolean;
|
|
487
519
|
message: string;
|
|
488
520
|
};
|
|
489
521
|
'file-storage': {
|
|
490
522
|
enabled: boolean;
|
|
491
523
|
status: "available";
|
|
524
|
+
handlerReady: boolean;
|
|
492
525
|
route: string | undefined;
|
|
493
526
|
provider: string | undefined;
|
|
494
527
|
} | {
|
|
495
528
|
enabled: boolean;
|
|
496
529
|
status: "unavailable";
|
|
530
|
+
handlerReady: boolean;
|
|
497
531
|
message: string;
|
|
498
532
|
};
|
|
499
533
|
search: {
|
|
500
534
|
enabled: boolean;
|
|
501
535
|
status: "available";
|
|
536
|
+
handlerReady: boolean;
|
|
502
537
|
route: string | undefined;
|
|
503
538
|
provider: string | undefined;
|
|
504
539
|
} | {
|
|
505
540
|
enabled: boolean;
|
|
506
541
|
status: "unavailable";
|
|
542
|
+
handlerReady: boolean;
|
|
507
543
|
message: string;
|
|
508
544
|
};
|
|
509
545
|
};
|
|
@@ -620,11 +656,16 @@ declare class HttpDispatcher {
|
|
|
620
656
|
*/
|
|
621
657
|
private getObjectQLService;
|
|
622
658
|
private capitalize;
|
|
659
|
+
/**
|
|
660
|
+
* Handle AI service routes (/ai/chat, /ai/models, /ai/conversations, etc.)
|
|
661
|
+
* Resolves the AI service and its built-in route handlers, then dispatches.
|
|
662
|
+
*/
|
|
663
|
+
handleAI(subPath: string, method: string, body: any, query: any, _context: HttpProtocolContext): Promise<HttpDispatcherResult>;
|
|
623
664
|
/**
|
|
624
665
|
* Main Dispatcher Entry Point
|
|
625
666
|
* Routes the request to the appropriate handler based on path and precedence
|
|
626
667
|
*/
|
|
627
|
-
dispatch(method: string, path: string, body: any, query: any, context: HttpProtocolContext): Promise<HttpDispatcherResult>;
|
|
668
|
+
dispatch(method: string, path: string, body: any, query: any, context: HttpProtocolContext, prefix?: string): Promise<HttpDispatcherResult>;
|
|
628
669
|
/**
|
|
629
670
|
* Handles Custom API Endpoints defined in metadata
|
|
630
671
|
*/
|