@objectstack/core 4.0.4 → 4.1.0

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 (75) hide show
  1. package/README.md +95 -10
  2. package/dist/index.cjs +172 -507
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +24 -223
  5. package/dist/index.d.ts +24 -223
  6. package/dist/index.js +178 -505
  7. package/dist/index.js.map +1 -1
  8. package/dist/logger.cjs +177 -0
  9. package/dist/logger.cjs.map +1 -0
  10. package/dist/logger.d.cts +26 -0
  11. package/dist/logger.d.ts +26 -0
  12. package/dist/logger.js +158 -0
  13. package/dist/logger.js.map +1 -0
  14. package/package.json +36 -15
  15. package/.turbo/turbo-build.log +0 -22
  16. package/ADVANCED_FEATURES.md +0 -380
  17. package/API_REGISTRY.md +0 -392
  18. package/CHANGELOG.md +0 -472
  19. package/PHASE2_IMPLEMENTATION.md +0 -388
  20. package/REFACTORING_SUMMARY.md +0 -40
  21. package/examples/api-registry-example.ts +0 -559
  22. package/examples/kernel-features-example.ts +0 -311
  23. package/examples/phase2-integration.ts +0 -357
  24. package/src/api-registry-plugin.test.ts +0 -393
  25. package/src/api-registry-plugin.ts +0 -89
  26. package/src/api-registry.test.ts +0 -1089
  27. package/src/api-registry.ts +0 -739
  28. package/src/contracts/data-engine.ts +0 -57
  29. package/src/contracts/http-server.ts +0 -151
  30. package/src/contracts/logger.ts +0 -72
  31. package/src/dependency-resolver.test.ts +0 -287
  32. package/src/dependency-resolver.ts +0 -390
  33. package/src/fallbacks/fallbacks.test.ts +0 -281
  34. package/src/fallbacks/index.ts +0 -26
  35. package/src/fallbacks/memory-cache.ts +0 -34
  36. package/src/fallbacks/memory-i18n.ts +0 -112
  37. package/src/fallbacks/memory-job.ts +0 -23
  38. package/src/fallbacks/memory-metadata.ts +0 -50
  39. package/src/fallbacks/memory-queue.ts +0 -28
  40. package/src/health-monitor.test.ts +0 -81
  41. package/src/health-monitor.ts +0 -318
  42. package/src/hot-reload.ts +0 -382
  43. package/src/index.ts +0 -50
  44. package/src/kernel-base.ts +0 -273
  45. package/src/kernel.test.ts +0 -624
  46. package/src/kernel.ts +0 -631
  47. package/src/lite-kernel.test.ts +0 -248
  48. package/src/lite-kernel.ts +0 -137
  49. package/src/logger.test.ts +0 -116
  50. package/src/logger.ts +0 -355
  51. package/src/namespace-resolver.test.ts +0 -130
  52. package/src/namespace-resolver.ts +0 -188
  53. package/src/package-manager.test.ts +0 -225
  54. package/src/package-manager.ts +0 -428
  55. package/src/plugin-loader.test.ts +0 -421
  56. package/src/plugin-loader.ts +0 -484
  57. package/src/qa/adapter.ts +0 -16
  58. package/src/qa/http-adapter.ts +0 -116
  59. package/src/qa/index.ts +0 -5
  60. package/src/qa/runner.ts +0 -189
  61. package/src/security/index.ts +0 -50
  62. package/src/security/permission-manager.test.ts +0 -256
  63. package/src/security/permission-manager.ts +0 -338
  64. package/src/security/plugin-config-validator.test.ts +0 -276
  65. package/src/security/plugin-config-validator.ts +0 -193
  66. package/src/security/plugin-permission-enforcer.test.ts +0 -251
  67. package/src/security/plugin-permission-enforcer.ts +0 -436
  68. package/src/security/plugin-signature-verifier.ts +0 -403
  69. package/src/security/sandbox-runtime.ts +0 -462
  70. package/src/security/security-scanner.ts +0 -367
  71. package/src/types.ts +0 -120
  72. package/src/utils/env.test.ts +0 -62
  73. package/src/utils/env.ts +0 -53
  74. package/tsconfig.json +0 -10
  75. package/vitest.config.ts +0 -10
package/README.md CHANGED
@@ -1,13 +1,18 @@
1
1
  # @objectstack/core
2
2
 
3
- The **Kernel** of the ObjectStack architecture. It provides the fundamental building blocks for a modular, plugin-based system.
3
+ > ObjectStack microkernel dependency injection, plugin lifecycle, event bus, and service registry for metadata-driven runtimes.
4
4
 
5
- ## Features
5
+ [![npm](https://img.shields.io/npm/v/@objectstack/core.svg)](https://www.npmjs.com/package/@objectstack/core)
6
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
6
7
 
7
- - **ObjectKernel**: A robust Dependency Injection (DI) container and plugin manager.
8
- - **Plugin Architecture**: A standard interface (`Plugin`) with lifecycle hooks (`init`, `start`, `stop`).
9
- - **Service Management**: Register and resolve services with type safety.
10
- - **Logging**: Structured logging interface with swappable backends.
8
+ ## Overview
9
+
10
+ `@objectstack/core` is the foundation every ObjectStack runtime is built on. It hosts two kernels, a plugin lifecycle, a typed service registry, a structured logger, and a plugin-to-plugin event bus:
11
+
12
+ - **`ObjectKernel`** — full-featured production kernel with hot reload, health monitoring, dependency resolution, and namespace isolation.
13
+ - **`LiteKernel`** — minimal kernel for serverless, edge, and test environments.
14
+
15
+ All other ObjectStack runtime packages (`runtime`, `rest`, `plugin-*`, `driver-*`, `service-*`) plug into a kernel instance.
11
16
 
12
17
  ## Installation
13
18
 
@@ -15,21 +20,101 @@ The **Kernel** of the ObjectStack architecture. It provides the fundamental buil
15
20
  pnpm add @objectstack/core
16
21
  ```
17
22
 
18
- ## Basic Usage
23
+ ## Quick Start
19
24
 
20
25
  ```typescript
21
26
  import { ObjectKernel } from '@objectstack/core';
22
27
 
23
28
  const kernel = new ObjectKernel();
24
29
 
25
- // Register a simple plugin
26
30
  kernel.use({
27
31
  name: 'my-plugin',
28
32
  version: '1.0.0',
29
33
  async init(ctx) {
30
- ctx.logger.info('Plugin initializing...');
31
- }
34
+ ctx.logger.info('plugin initializing');
35
+ ctx.registerService('greeter', { hello: (n: string) => `hi ${n}` });
36
+ },
37
+ async start(ctx) {
38
+ const svc = ctx.getService<{ hello: (s: string) => string }>('greeter')!;
39
+ ctx.logger.info(svc.hello('world'));
40
+ },
32
41
  });
33
42
 
34
43
  await kernel.bootstrap();
44
+ // …
45
+ await kernel.shutdown();
46
+ ```
47
+
48
+ ### LiteKernel (serverless/edge/tests)
49
+
50
+ ```typescript
51
+ import { LiteKernel } from '@objectstack/core';
52
+
53
+ const kernel = new LiteKernel();
54
+ await kernel.bootstrap();
55
+ ```
56
+
57
+ ## Key Exports
58
+
59
+ | Export | Kind | Description |
60
+ |:---|:---|:---|
61
+ | `ObjectKernel` | class | Production kernel with DI, lifecycle, event bus, hot reload, health monitor. |
62
+ | `LiteKernel` | class | Minimal kernel for constrained runtimes. |
63
+ | `Plugin` | interface | Plugin contract (`init`, `start`, `stop`, lifecycle hooks). |
64
+ | `PluginContext` | interface | `{ logger, registerService, getService, eventBus, kernel }`. |
65
+ | `ObjectLogger` | class | Structured logger over pino; swappable backends. |
66
+ | `ApiRegistry` | class | Runtime route registry (consumed by `@objectstack/rest`). |
67
+ | `QA` | namespace | Built-in kernel self-tests. |
68
+ | `PackageManager` | class | Per-package DI namespace resolver. |
69
+
70
+ ## Plugin lifecycle
71
+
35
72
  ```
73
+ use() → init() → start() → [running] → stop() → unload()
74
+ ```
75
+
76
+ - **`init(ctx)`** — register services, wire dependencies. Do not make network calls.
77
+ - **`start(ctx)`** — resolve other services, begin work. Called after every plugin's `init()`.
78
+ - **`stop(ctx)`** — graceful shutdown, flush, close connections.
79
+ - **`kernel.unload(name)`** — runtime removal; pairs with `AppPlugin.onDisable()`.
80
+
81
+ ## Kernel choice
82
+
83
+ | Kernel | Use when |
84
+ |:---|:---|
85
+ | `ObjectKernel` | Default. Production servers, Studio, tests that need plugin composition. |
86
+ | `LiteKernel` | Cloudflare Workers, Vercel Edge, Vitest unit tests, footprint-sensitive sandboxes. |
87
+
88
+ `EnhancedObjectKernel` has been **removed**. Migrate to `ObjectKernel`.
89
+
90
+ ## Observability
91
+
92
+ - `ObjectLogger` is backed by pino; control verbosity with `LOG_LEVEL=info|debug|trace`.
93
+ - `kernel.getHealth()` returns per-plugin health snapshots.
94
+ - EventBus: `ctx.eventBus.on('plugin.started', …)`, `.emit(…)`.
95
+
96
+ ## When to use
97
+
98
+ - ✅ Building an ObjectStack application (always).
99
+ - ✅ Authoring a plugin, driver, or service.
100
+
101
+ ## When not to use
102
+
103
+ - ❌ You only need the schemas — import [`@objectstack/spec`](../spec) alone.
104
+ - ❌ You only need a REST client — import [`@objectstack/client`](../client).
105
+
106
+ ## Related Packages
107
+
108
+ - [`@objectstack/spec`](../spec) — protocol definitions.
109
+ - [`@objectstack/runtime`](../runtime) — `DriverPlugin` / `AppPlugin` scaffolds.
110
+ - [`@objectstack/rest`](../rest) — auto-generated REST layer.
111
+
112
+ ## Links
113
+
114
+ - 📖 Docs: <https://objectstack.ai/docs>
115
+ - 📚 API Reference: <https://objectstack.ai/docs/references/kernel>
116
+ - 🤖 Skill: [`skills/objectstack-plugin/SKILL.md`](../../skills/objectstack-plugin/SKILL.md)
117
+
118
+ ## License
119
+
120
+ Apache-2.0 © ObjectStack