@happyvertical/smrt-core 0.51.31 → 0.51.33
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/agents/build-knowledge.md +13 -0
- package/dist/__tests__/fixtures/collection-coverage-fixtures.d.ts +8 -0
- package/dist/__tests__/fixtures/inheritance-resolver-fixtures.d.ts +9 -0
- package/dist/__tests__/fixtures/inheritance-test-classes.d.ts +5 -0
- package/dist/__tests__/fixtures/object-ai-memory-fixtures.d.ts +10 -0
- package/dist/__typechecks__/collection-read-plan.d.ts +2 -2
- package/dist/adapters/ai-usage.d.ts +5 -2
- package/dist/adapters/cost-rates.d.ts +1 -1
- package/dist/adapters/metrics.d.ts +7 -1
- package/dist/adapters/pubsub.d.ts +7 -1
- package/dist/browser.d.ts +1 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +2 -1
- package/dist/cascade.d.ts +69 -3
- package/dist/change-feed-authz.d.ts +85 -2
- package/dist/change-feed.d.ts +133 -2
- package/dist/change-signals.d.ts +66 -1
- package/dist/child-accessors.d.ts +39 -1
- package/dist/class.d.ts +17 -8
- package/dist/class.d.ts.map +1 -1
- package/dist/class.js +22 -0
- package/dist/class.js.map +1 -1
- package/dist/collection-cache.d.ts +47 -1
- package/dist/collection-read-plan.d.ts +3 -3
- package/dist/collection.d.ts +4 -3
- package/dist/config.d.ts +15 -6
- package/dist/consumer-plugin/index.d.ts +7 -3
- package/dist/consumer-plugin/index.d.ts.map +1 -1
- package/dist/consumer-plugin/index.js +2 -0
- package/dist/consumer-plugin/index.js.map +1 -1
- package/dist/data-query.d.ts +12 -1
- package/dist/database.d.ts +10 -2
- package/dist/decisions.d.ts +24 -2
- package/dist/decisions.d.ts.map +1 -1
- package/dist/decisions.js +71 -1
- package/dist/decisions.js.map +1 -1
- package/dist/decorators/index.d.ts +11 -5
- package/dist/dispatch/bus.d.ts +27 -2
- package/dist/dispatch/collections/DispatchSubscriptions.d.ts +7 -2
- package/dist/dispatch/collections/Dispatches.d.ts +8 -3
- package/dist/dispatch/models/Dispatch.d.ts +7 -1
- package/dist/dispatch/types.d.ts +7 -2
- package/dist/embedded-write-queue.d.ts +1 -1
- package/dist/embeddings/provider.d.ts +8 -1
- package/dist/embeddings/storage.d.ts +8 -2
- package/dist/filesystem-loader.d.ts +16 -1
- package/dist/generators/changes-route.d.ts +34 -1
- package/dist/generators/custom-action.d.ts +10 -2
- package/dist/generators/events-route.d.ts +41 -4
- package/dist/generators/mcp-runtime-template.d.ts +13 -2
- package/dist/generators/mcp.d.ts +6 -1
- package/dist/generators/rest.d.ts +10 -5
- package/dist/generators/tool-schema.d.ts +1 -1
- package/dist/hierarchical.d.ts +37 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/interceptors.d.ts +45 -1
- package/dist/junction.d.ts +24 -0
- package/dist/knowledge-config.d.ts +1 -1
- package/dist/knowledge-discovery.d.ts +2 -25
- package/dist/knowledge-discovery.d.ts.map +1 -1
- package/dist/knowledge-discovery.js +1 -53
- package/dist/knowledge-graph.d.ts +2 -94
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +1 -267
- package/dist/knowledge.d.ts +4 -23
- package/dist/knowledge.d.ts.map +1 -1
- package/dist/knowledge.js +3 -52
- package/dist/knowledge.js.map +1 -1
- package/dist/learning/memory.d.ts +21 -1
- package/dist/manifest/generator.d.ts +5 -1
- package/dist/manifest/index.d.ts +5 -1
- package/dist/manifest/manager.d.ts +1 -1
- package/dist/manifest/manifest-loader.d.ts +24 -2
- package/dist/manifest/sources/composite.d.ts +17 -1
- package/dist/manifest/sources/embedded.d.ts +10 -1
- package/dist/manifest/sources/explicit-paths.d.ts +13 -1
- package/dist/manifest/sources/fallback.d.ts +15 -1
- package/dist/manifest/sources/local-test.d.ts +10 -1
- package/dist/manifest/sources/static.d.ts +12 -1
- package/dist/manifest/sources/test.d.ts +9 -1
- package/dist/manifest/sources/types.d.ts +7 -1
- package/dist/manifest/static-manifest.d.ts +6 -1
- package/dist/manifest/static-manifest.js +1 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.d.ts +22 -3
- package/dist/manifest/store.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/migrations/backfill-tracker.d.ts +15 -1
- package/dist/migrations/differ.d.ts +8 -2
- package/dist/migrations/framework-base-tables.d.ts +57 -2
- package/dist/migrations/generator.d.ts +8 -2
- package/dist/migrations/integer-width.d.ts +10 -2
- package/dist/migrations/minor-units.d.ts +40 -1
- package/dist/migrations/null-equal-indexes.d.ts +3 -2
- package/dist/migrations/orchestrate.d.ts +15 -3
- package/dist/migrations/sqlite-rebuild.d.ts +67 -2
- package/dist/migrations/tracker.d.ts +9 -3
- package/dist/migrations/types.d.ts +7 -2
- package/dist/object.d.ts +7 -6
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +6 -17
- package/dist/object.js.map +1 -1
- package/dist/polymorphic-association.d.ts +44 -1
- package/dist/postgres-permissions.d.ts +1 -1
- package/dist/prebuild/index.d.ts +5 -1
- package/dist/query-bounds.d.ts +26 -0
- package/dist/registry/cache-config.d.ts +10 -1
- package/dist/registry/class-registration.d.ts +10 -2
- package/dist/registry/collection-resolution.d.ts +1 -1
- package/dist/registry/embedding-manager.d.ts +9 -1
- package/dist/registry/inheritance-resolver.d.ts +8 -3
- package/dist/registry/manifest-field-merge.d.ts +2 -2
- package/dist/registry/name-resolver.d.ts +22 -2
- package/dist/registry/relationship-graph.d.ts +9 -1
- package/dist/registry/schema-builder.d.ts +8 -3
- package/dist/registry/shared-state.d.ts +12 -2
- package/dist/registry/types.d.ts +15 -7
- package/dist/registry/validator.d.ts +10 -2
- package/dist/registry.d.ts +40 -11
- package/dist/relationship-loader.d.ts +1 -1
- package/dist/run-once.d.ts +110 -1
- package/dist/runtime/client.d.ts +4 -1
- package/dist/runtime/server.d.ts +5 -2
- package/dist/scanner/import-scanner.d.ts +1 -1
- package/dist/scanner/manifest-generator.d.ts +4 -1
- package/dist/scanner/types.d.ts +4 -1
- package/dist/schema/code-generator.d.ts +6 -2
- package/dist/schema/column-data-probes.d.ts +27 -2
- package/dist/schema/ddl/base-strategy.d.ts +8 -2
- package/dist/schema/ddl/duckdb-strategy.d.ts +14 -2
- package/dist/schema/ddl/index.d.ts +2 -2
- package/dist/schema/ddl/json-duckdb-strategy.d.ts +10 -2
- package/dist/schema/ddl/materialize-manifest.d.ts +1 -1
- package/dist/schema/ddl/null-equal-index.d.ts +1 -1
- package/dist/schema/ddl/postgres-strategy.d.ts +12 -2
- package/dist/schema/ddl/sqlite-strategy.d.ts +12 -2
- package/dist/schema/ddl/types.d.ts +10 -1
- package/dist/schema/foreign-key-ddl.d.ts +2 -2
- package/dist/schema/foreign-key-orphan-report.d.ts +25 -3
- package/dist/schema/foreign-key-planner.d.ts +2 -2
- package/dist/schema/foreign-key-policy.d.ts +1 -1
- package/dist/schema/generator.d.ts +7 -3
- package/dist/schema/index-utils.d.ts +11 -2
- package/dist/schema/live-parity.d.ts +27 -3
- package/dist/schema/manifest-schema.d.ts +21 -2
- package/dist/schema/schema-aggregator.d.ts +35 -2
- package/dist/schema/schema-manager.d.ts +13 -4
- package/dist/schema/system-table-shapes.d.ts +20 -1
- package/dist/schema/table-verifier.d.ts +1 -1
- package/dist/schema/text-cast-probe.d.ts +24 -1
- package/dist/schema/utils.d.ts +13 -4
- package/dist/schema/uuid-convergence.d.ts +32 -1
- package/dist/signals/bus.d.ts +8 -2
- package/dist/signals/sanitizer.d.ts +7 -1
- package/dist/smrt-knowledge.json +8 -9
- package/dist/system/bootstrap.d.ts +2 -1
- package/dist/system/compatibility.d.ts +1 -1
- package/dist/system/diagnostics.d.ts +17 -2
- package/dist/system/retention.d.ts +46 -1
- package/dist/system/schema.d.ts +7 -1
- package/dist/system-fields.d.ts +9 -1
- package/dist/test-utils.d.ts +7 -1
- package/dist/testing/database.d.ts +18 -1
- package/dist/testing/notifications-stub.d.ts +15 -1
- package/dist/tools/tool-executor.d.ts +6 -1
- package/dist/tools/tool-generator.d.ts +8 -2
- package/dist/utils/json.d.ts +9 -1
- package/dist/utils/qualified-names.d.ts +10 -1
- package/dist/utils/scanner-module.d.ts +2 -2
- package/dist/utils.d.ts +1 -1
- package/dist/vite-plugin/api-client-entries.d.ts +9 -1
- package/dist/vite-plugin/changes-route.d.ts +33 -2
- package/dist/vite-plugin/dev-plane-route.d.ts +12 -1
- package/dist/vite-plugin/events-route.d.ts +37 -2
- package/dist/vite-plugin/generated-client.d.ts +9 -1
- package/dist/vite-plugin/index.d.ts +9 -5
- package/dist/vite-plugin/resources-route.d.ts +82 -1
- package/dist/vite-plugin/sveltekit-generator.d.ts +8 -4
- package/dist/vite-plugin/sveltekit-route-coordinator.d.ts +3 -3
- package/dist/vite-plugin/sync-apply-route.d.ts +19 -2
- package/dist/vite-plugin/web-collections.d.ts +25 -2
- package/dist/vite-plugin/worker-registration.d.ts +21 -1
- package/package.json +7 -8
- package/dist/knowledge-discovery.js.map +0 -1
- package/dist/knowledge-graph.js.map +0 -1
package/dist/dispatch/bus.d.ts
CHANGED
|
@@ -1,7 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* DispatchBus - Central hub for inter-agent communication
|
|
3
|
+
*
|
|
4
|
+
* The DispatchBus provides both in-memory handlers and persistent subscriptions
|
|
5
|
+
* for asynchronous agent-to-agent messaging.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const bus = await createDispatchBus({ db: { type: 'sqlite', url: 'app.db' } });
|
|
10
|
+
*
|
|
11
|
+
* // In-memory handler (immediate)
|
|
12
|
+
* bus.on('campaign.completed', async (payload, metadata) => {
|
|
13
|
+
* console.log(`Campaign ${payload.campaignId} completed`);
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* // Persistent subscription (processed later)
|
|
17
|
+
* await bus.subscribe({ signalType: 'campaign.*', subscriber: 'fiscus' });
|
|
18
|
+
*
|
|
19
|
+
* // Emit a dispatch
|
|
20
|
+
* await bus.emit('campaign.completed', { campaignId: '123' }, { source: 'suasor' });
|
|
21
|
+
*
|
|
22
|
+
* // Process pending dispatches
|
|
23
|
+
* await bus.process('fiscus');
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
2
27
|
import { Dispatch } from './models/Dispatch.js';
|
|
3
28
|
import { DispatchSubscription } from './models/DispatchSubscription.js';
|
|
4
|
-
import { DispatchBusOptions, DispatchCleanupOptions, DispatchCleanupResult, DispatchEmitOptions, DispatchHandler, DispatchListOptions, DispatchProcessOptions, DispatchRetryOptions, DispatchSubscribeOptions } from './types.js';
|
|
29
|
+
import type { DispatchBusOptions, DispatchCleanupOptions, DispatchCleanupResult, DispatchEmitOptions, DispatchHandler, DispatchListOptions, DispatchProcessOptions, DispatchRetryOptions, DispatchSubscribeOptions } from './types.js';
|
|
5
30
|
/**
|
|
6
31
|
* Central hub for inter-agent messaging with both in-memory and persistent delivery.
|
|
7
32
|
*
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* DispatchSubscriptionCollection - Storage operations for dispatch subscriptions
|
|
3
|
+
*
|
|
4
|
+
* CRUD operations for the _smrt_dispatch_subscriptions system table.
|
|
5
|
+
*/
|
|
6
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
2
7
|
import { DispatchSubscription } from '../models/DispatchSubscription.js';
|
|
3
|
-
import { DispatchTenantScope } from '../tenant-resolver.js';
|
|
8
|
+
import type { DispatchTenantScope } from '../tenant-resolver.js';
|
|
4
9
|
/**
|
|
5
10
|
* Storage operations for subscriptions in _smrt_dispatch_subscriptions table
|
|
6
11
|
*/
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* DispatchCollection - Storage operations for dispatch messages
|
|
3
|
+
*
|
|
4
|
+
* CRUD operations for the _smrt_dispatch system table.
|
|
5
|
+
*/
|
|
6
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
2
7
|
import { Dispatch } from '../models/Dispatch.js';
|
|
3
|
-
import { DispatchTenantScope } from '../tenant-resolver.js';
|
|
4
|
-
import { DispatchCleanupOptions, DispatchCleanupResult, DispatchListOptions, DispatchRetryOptions, DispatchStatus } from '../types.js';
|
|
8
|
+
import type { DispatchTenantScope } from '../tenant-resolver.js';
|
|
9
|
+
import type { DispatchCleanupOptions, DispatchCleanupResult, DispatchListOptions, DispatchRetryOptions, DispatchStatus } from '../types.js';
|
|
5
10
|
/**
|
|
6
11
|
* Storage operations for dispatches in _smrt_dispatch table
|
|
7
12
|
*/
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Dispatch Model - Persistent dispatch message for inter-agent communication
|
|
3
|
+
*
|
|
4
|
+
* Dispatches are stored in the _smrt_dispatch system table and represent
|
|
5
|
+
* messages sent between agents. They support async processing with retry logic.
|
|
6
|
+
*/
|
|
7
|
+
import type { DispatchMetadata, DispatchStatus } from '../types.js';
|
|
2
8
|
/**
|
|
3
9
|
* Raw dispatch data as stored in the database
|
|
4
10
|
*/
|
package/dist/dispatch/types.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Dispatch system
|
|
3
|
+
*
|
|
4
|
+
* Provides inter-agent communication through persistent dispatch messages.
|
|
5
|
+
*/
|
|
6
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
7
|
+
import type { DispatchTenantScope } from './tenant-resolver.js';
|
|
3
8
|
/**
|
|
4
9
|
* Dispatch message status
|
|
5
10
|
*/
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Provider
|
|
3
|
+
*
|
|
4
|
+
* Unified interface for generating embeddings using local models or AI APIs.
|
|
5
|
+
* Supports transformers.js packages for local inference and @happyvertical/ai
|
|
6
|
+
* for cloud embeddings.
|
|
7
|
+
*/
|
|
8
|
+
import type { EmbeddingProviderType, ProjectEmbeddingConfig } from './types';
|
|
2
9
|
export type OptionalModuleImporter = (moduleName: string) => Promise<unknown>;
|
|
3
10
|
export declare const LOCAL_TRANSFORMERS_PACKAGES: readonly ["@huggingface/transformers", "@xenova/transformers"];
|
|
4
11
|
export type LocalTransformersPackage = (typeof LOCAL_TRANSFORMERS_PACKAGES)[number];
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Storage Operations
|
|
3
|
+
*
|
|
4
|
+
* CRUD operations for the _smrt_embeddings system table.
|
|
5
|
+
* Supports both JSON-based and native vector storage strategies.
|
|
6
|
+
*/
|
|
7
|
+
import type { DatabaseInterface, VectorCapabilities } from '@happyvertical/sql';
|
|
8
|
+
import type { StoredEmbedding } from './types';
|
|
3
9
|
/**
|
|
4
10
|
* Storage operations for embeddings in _smrt_embeddings table
|
|
5
11
|
*/
|
|
@@ -1,4 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem adapter acquisition boundary.
|
|
3
|
+
*
|
|
4
|
+
* `@happyvertical/files` statically imports @aws-sdk/client-s3 and reaches
|
|
5
|
+
* googleapis from its root, so SmrtClass must not import it eagerly — that
|
|
6
|
+
* single edge put the whole files SDK into every downstream SSR bundle
|
|
7
|
+
* (#1977/#1978). Filesystem support is acquired here instead:
|
|
8
|
+
*
|
|
9
|
+
* - Runtimes with node_modules (Node, tsx, vite dev, externalized SSR) work
|
|
10
|
+
* unchanged: the adapter is loaded on first use via a bundler-invisible
|
|
11
|
+
* import.
|
|
12
|
+
* - Fully-bundled deployments opt in explicitly with
|
|
13
|
+
* `import '@happyvertical/smrt-core/filesystem'` at server startup, which
|
|
14
|
+
* registers the statically-imported adapter factory.
|
|
15
|
+
*/
|
|
16
|
+
import type { FilesystemAdapter, FilesystemAdapterOptions } from '@happyvertical/files';
|
|
2
17
|
export type FilesystemAdapterFactory = (options: FilesystemAdapterOptions) => Promise<FilesystemAdapter>;
|
|
3
18
|
/**
|
|
4
19
|
* Registers the factory used to satisfy `fs` options on SmrtClass instances.
|
|
@@ -1,4 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Generated `_changes` HTTP route for the change feed (issue #1758).
|
|
3
|
+
*
|
|
4
|
+
* Handles `GET {basePath}/_changes` in the REST generator: an auth-guarded,
|
|
5
|
+
* tenant-scoped cursor read over the `_smrt_changes` log. This module keeps
|
|
6
|
+
* the feed logic out of `rest.ts` (which only registers the path) so
|
|
7
|
+
* sibling generator changes stay conflict-free.
|
|
8
|
+
*
|
|
9
|
+
* Contract (part of the client/mobile sync contract, PRD #1755):
|
|
10
|
+
* - `GET {basePath}/_changes?since=<cursor>&tables=<a,b>&limit=<n>` returns
|
|
11
|
+
* `{ changes, cursor, resyncRequired?, resyncCursor? }` — see
|
|
12
|
+
* `getChangesSince` for the exact cursor guarantee (strictly monotonic;
|
|
13
|
+
* reads miss no committed changes under concurrent writers).
|
|
14
|
+
* `resyncRequired: true` — served as HTTP 200, it is protocol state rather
|
|
15
|
+
* than an error — means the cursor cannot be served incrementally (pruned
|
|
16
|
+
* out of the retained window, or foreign/reset) and the client must
|
|
17
|
+
* re-fetch its data in full, then resume from `resyncCursor`.
|
|
18
|
+
* - **Auth is fail-closed** (#1540 posture): the route requires the
|
|
19
|
+
* generator's `authMiddleware`. Without one configured, every request is
|
|
20
|
+
* refused with 401 — the feed spans all tables, so per-model
|
|
21
|
+
* `api: { public }` opt-outs deliberately do NOT apply to it.
|
|
22
|
+
* - **Tenant scoping** follows the active tenant context through the same
|
|
23
|
+
* dependency-inversion hook the DispatchBus uses: with tenancy enabled, a
|
|
24
|
+
* request only ever sees its own tenant's changes plus global rows; with
|
|
25
|
+
* tenancy enabled but no active tenant, only global rows (fail-closed).
|
|
26
|
+
* - **Table/row authorization** (#3020): the read additionally applies the
|
|
27
|
+
* consumer-supplied `authorizeChangeFeed`/`isChangeFeedEntryVisible` hooks,
|
|
28
|
+
* if registered (`change-feed-authz.ts`), via
|
|
29
|
+
* `getAuthorizedTenantScopedChangesSince()`. REST has no `locals`, so the
|
|
30
|
+
* hooks receive `locals: undefined` and the `authMiddleware`-processed
|
|
31
|
+
* `Request` as `request` — a REST-hosting consumer identifies the principal
|
|
32
|
+
* from `request`. Unregistered, behavior is unchanged from pre-#3020.
|
|
33
|
+
*/
|
|
34
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
2
35
|
/**
|
|
3
36
|
* Structural copy of `APIConfig['authMiddleware']` (from `rest.ts`) so this
|
|
4
37
|
* module never imports the generator back (keeps the dependency one-way).
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Canonical custom-action metadata and transport-safe result helpers.
|
|
3
|
+
*
|
|
4
|
+
* Custom actions are intentionally distinct from generated CRUD. Their target
|
|
5
|
+
* is derived from method metadata: instance methods target an item and static
|
|
6
|
+
* methods target the collection. API route configuration may shape an HTTP
|
|
7
|
+
* route, but it cannot change a method's receiver.
|
|
8
|
+
*/
|
|
9
|
+
import type { ApiHttpMethod, ToolEffect } from '../registry/types.js';
|
|
10
|
+
import type { MethodDefinition, SmartObjectManifest } from '../scanner/types.js';
|
|
3
11
|
export type CustomActionScope = 'item' | 'collection';
|
|
4
12
|
export type { ToolEffect } from '../registry/types.js';
|
|
5
13
|
/**
|
|
@@ -1,7 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Generated `_events` SSE route — live change signals (issue #1763, SERVER
|
|
3
|
+
* half; parent PRD #1755).
|
|
4
|
+
*
|
|
5
|
+
* Handles `GET {basePath}/_events` in the REST generator: an auth-guarded,
|
|
6
|
+
* tenant-scoped Server-Sent-Events stream of coarse change signals ({table,
|
|
7
|
+
* operation, rowId, tenantId} + a `seq` cursor in the SSE `id:` field). It is
|
|
8
|
+
* the push companion to the pull-based `_changes` route (#1758): a subscriber
|
|
9
|
+
* reacts to a signal by re-reading through the authorized collection routes,
|
|
10
|
+
* so **no row payload ever crosses this channel** — authorization stays
|
|
11
|
+
* entirely on the read path.
|
|
12
|
+
*
|
|
13
|
+
* The stream lifecycle (subscribe, catch-up replay, heartbeat, teardown) lives
|
|
14
|
+
* in {@link buildChangeEventStream} so it is written and tested once; both the
|
|
15
|
+
* REST generator here and the generated SvelteKit route import it. `rest.ts`
|
|
16
|
+
* only registers the path.
|
|
17
|
+
*
|
|
18
|
+
* Contract:
|
|
19
|
+
* - **Fail-closed auth** (identical to `_changes`, #1540 posture): no
|
|
20
|
+
* `authMiddleware` configured → 401; the middleware may return a Response to
|
|
21
|
+
* short-circuit (e.g. 403). The feed spans every table, so per-model
|
|
22
|
+
* `api: { public }` opt-outs deliberately do not apply.
|
|
23
|
+
* - **Tenant scope is captured ONCE at connection open** — signal delivery
|
|
24
|
+
* happens from a different async context (the writer's afterSave, possibly
|
|
25
|
+
* another request or replica) with no tenant ALS active, so the filter must
|
|
26
|
+
* be the value resolved at subscribe time, not re-resolved per signal.
|
|
27
|
+
* - **Cross-origin is opt-in** (#1861): `rest.ts` now wraps `_events` in its
|
|
28
|
+
* CORS layer. With the fail-closed default it stays same-origin only, but
|
|
29
|
+
* when the generator is configured with `enableCors`, an `allowedOrigins`
|
|
30
|
+
* allowlist, and `allowCredentials: true`, an allow-listed cross-origin
|
|
31
|
+
* browser client can subscribe with a credentialed `EventSource`
|
|
32
|
+
* (`withCredentials: true`) — the response echoes the specific origin (never
|
|
33
|
+
* `*`) plus `Access-Control-Allow-Credentials: true`, so its cookies reach
|
|
34
|
+
* the same fail-closed auth guard. The CORS layer only lets the cookie
|
|
35
|
+
* through; it never authorizes — the auth middleware + captured tenant scope
|
|
36
|
+
* are unchanged, so the read posture holds identically across origins.
|
|
37
|
+
*/
|
|
38
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
39
|
+
import { type ChangeSignal } from '../change-signals.js';
|
|
40
|
+
import { type DispatchTenantScope } from '../dispatch/tenant-resolver.js';
|
|
41
|
+
import { type ChangesAuthMiddleware } from './changes-route.js';
|
|
5
42
|
/** Options for the `_events` route handler. */
|
|
6
43
|
export interface EventsRouteOptions {
|
|
7
44
|
/** The generator's configured auth middleware, if any. */
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Runtime bootstrap template for generated MCP servers
|
|
3
|
+
*
|
|
4
|
+
* This template provides stdio transport integration for SMRT-generated MCP servers.
|
|
5
|
+
* It handles:
|
|
6
|
+
* - Server initialization with @modelcontextprotocol/server v2
|
|
7
|
+
* - Tool registration from MCPGenerator
|
|
8
|
+
* - Stdio transport connection
|
|
9
|
+
* - Error handling and logging
|
|
10
|
+
* - Graceful shutdown
|
|
11
|
+
*/
|
|
12
|
+
import type { CustomActionScope } from './custom-action.js';
|
|
13
|
+
import type { MCPConfig, MCPContext } from './mcp.js';
|
|
3
14
|
export interface RuntimeOptions {
|
|
4
15
|
/** Server name (defaults to package name) */
|
|
5
16
|
name?: string;
|
package/dist/generators/mcp.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) server generator for smrt objects
|
|
3
|
+
*
|
|
4
|
+
* Exposes smrt objects as AI tools for Claude, GPT, and other AI models
|
|
5
|
+
*/
|
|
6
|
+
import { type ToolJsonSchema } from './tool-schema.js';
|
|
2
7
|
/**
|
|
3
8
|
* Runtime tool-call arguments. They arrive as untyped JSON from the MCP client,
|
|
4
9
|
* so individual keys are narrowed (`as`) at each action's boundary.
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* High-performance REST API generator for smrt objects using Node.js HTTP server
|
|
3
|
+
*
|
|
4
|
+
* Designed for minimal bundle size and maximum performance
|
|
5
|
+
*/
|
|
6
|
+
import http from 'node:http';
|
|
7
|
+
import type { SmrtCollection } from '../collection';
|
|
8
|
+
import type { SmrtObject } from '../object';
|
|
9
|
+
import type { RegisteredClass } from '../registry/types';
|
|
10
|
+
import { type PlaybookPreflightProvider } from './preflight-route';
|
|
6
11
|
export interface APIConfig {
|
|
7
12
|
basePath?: string;
|
|
8
13
|
enableCors?: boolean;
|
package/dist/hierarchical.d.ts
CHANGED
|
@@ -1,4 +1,40 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* SmrtHierarchical — base class for self-referencing tree hierarchies.
|
|
3
|
+
*
|
|
4
|
+
* Provides batched parent/children/ancestors/descendants/hierarchy traversal
|
|
5
|
+
* and a cycle-safe `moveTo`. Replaces five copies of the same logic across
|
|
6
|
+
* Place, Event, Tag, Account, and Zone.
|
|
7
|
+
*
|
|
8
|
+
* Examples in the monorepo:
|
|
9
|
+
*
|
|
10
|
+
* | Subclass | Domain |
|
|
11
|
+
* |----------|------------------------------------------------|
|
|
12
|
+
* | Place | hierarchical geographic places |
|
|
13
|
+
* | Event | nestable event hierarchy (game → period → …) |
|
|
14
|
+
* | Tag | tag taxonomies and category trees |
|
|
15
|
+
* | Account | chart of accounts |
|
|
16
|
+
* | Zone | placement zones inside a digital property |
|
|
17
|
+
*
|
|
18
|
+
* Convention: every subclass uses `parentId: string | null` referencing
|
|
19
|
+
* another row in the same table (or STI base table) by UUID. Classes whose
|
|
20
|
+
* self-reference has different semantics — e.g. `Fact.previousFactId` (an
|
|
21
|
+
* evolution chain) or `Asset.sourceAssetId` (a derivation DAG) — should
|
|
22
|
+
* NOT extend SmrtHierarchical. Use descriptive names and class-specific
|
|
23
|
+
* methods instead.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* @smrt({ tableStrategy: 'sti', api: true })
|
|
28
|
+
* export class Place extends SmrtHierarchical {
|
|
29
|
+
* name = '';
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* const ancestors = await place.getAncestors();
|
|
33
|
+
* const descendants = await place.getDescendants(); // BFS, one query per level
|
|
34
|
+
* await place.moveTo(newParent); // cycle-checked
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
import type { SmrtCollection } from './collection';
|
|
2
38
|
import { SmrtObject } from './object';
|
|
3
39
|
/**
|
|
4
40
|
* Aggregate hierarchy view: ancestors (root-first), self, and all descendants
|
package/dist/index.d.ts
CHANGED
|
@@ -32,7 +32,8 @@ export { config } from './config';
|
|
|
32
32
|
export { canonicalizeDataQuery, createDataQueryFingerprint, DataQueryValidationError, DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema, } from './data-query';
|
|
33
33
|
export { type DatabaseConfig, isDatabaseInterface, type ResolveDatabaseOptions, resolveDatabase, } from './database';
|
|
34
34
|
export { classifyDatabaseError, classifyDialectMessage, type DatabaseErrorClassification, type DatabaseErrorKind, isAbortedTransactionError, isDeterministicDatabaseError, isNotNullViolationError, isTransientDatabaseError, isUniqueViolationError, } from './db-errors';
|
|
35
|
-
export type { DecisionClient, DecisionConfig, EvaluateOptions, EvaluationResult, } from './decisions';
|
|
35
|
+
export type { DecisionAnswer, DecisionClient, DecisionConfig, DecisionOptions, DecisionQuestion, DecisionRequest, DecisionResult, DecisionValue, EvaluateOptions, EvaluationResult, } from './decisions';
|
|
36
|
+
export { executeDecision } from './decisions';
|
|
36
37
|
export { applyPendingDecoratorRegistrations, type CompatibleMethodDecorator, type CompatibleMethodDecoratorContext, type CompatiblePropertyDecorator, type CompatiblePropertyDecoratorContext, type LegacyPropertyDecoratorTarget, registerCompatibleFieldDecorator, registerCompatibleMethodDecorator, } from './decorators/compatibility';
|
|
37
38
|
export { type CrossPackageRefOptions, crossPackageRef, type FieldOptions, type FieldUIHints, field, foreignKey, type Meta, type MethodOptions, manyToMany, meta, method, type NumericFieldOptions, oneToMany, type RelationshipFieldOptions, type TextFieldOptions, } from './decorators/index';
|
|
38
39
|
export * from './dispatch/index';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ import { CHANGE_FEED_INTERCEPTOR_NAME, CHANGE_FEED_TABLE, DEFAULT_CHANGES_LIMIT,
|
|
|
20
20
|
import { filterVisibleChangeFeedEntries, getAuthorizedChangesSince, getAuthorizedTenantScopedChangesSince, hasChangeFeedEntryVisibilityHook, hasChangeFeedTableAuthorizerHook, isChangeFeedDenyAll, isChangeFeedEntryVisible, resolveAuthorizedChangeFeedTables, setChangeFeedAuthorizer, setChangeFeedEntryVisibility } from "./change-feed-authz.js";
|
|
21
21
|
import { applyOneToManyChildAccessors, childAccessorName } from "./child-accessors.js";
|
|
22
22
|
import { config } from "./config.js";
|
|
23
|
+
import { executeDecision } from "./decisions.js";
|
|
23
24
|
import { importOptionalDependency, registerOptionalDependency } from "./lazy-external.js";
|
|
24
25
|
import { createFilesystemAdapter, registerFilesystemAdapterFactory } from "./filesystem-loader.js";
|
|
25
26
|
import { DEFAULT_POSTGRES_TIMEOUTS, POSTGRES_TIMEOUT_ENV_VARS, applyPostgresRuntimeTimeouts, resolvePostgresTimeouts } from "./postgres-timeouts.js";
|
|
@@ -98,4 +99,4 @@ import "./system/index.js";
|
|
|
98
99
|
import { getTestDatabase } from "./testing/database.js";
|
|
99
100
|
import "./tools/index.js";
|
|
100
101
|
import { smrtPlugin } from "./vite-plugin/index.js";
|
|
101
|
-
export { AGENT_SURFACE_HASH_PREFIX, AIError, APIGenerator, AiUsageCollector, AiUsagePersistenceHandler, BOOTED_PROVENANCE, CACHE_INVALIDATION_CHANNEL, CHANGE_FEED_CREDENTIAL_TABLES, CHANGE_FEED_INTERCEPTOR_NAME, CHANGE_FEED_TABLE, CHANGE_SIGNAL_CHANNEL, CRUD_OPERATIONS, ConfigurationError, ContentHasher, CosineSimilarity, DEFAULT_AI_COST_RATES, DEFAULT_CHANGES_LIMIT, DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DEFAULT_EMBEDDING_CONFIG, DEFAULT_EVENTS_HEARTBEAT_MS, DEFAULT_EVENTS_MAX_SUBSCRIBERS, DEFAULT_EVENTS_RETRY_AFTER_SECONDS, DEFAULT_FACET_LIMIT, DEFAULT_LEARNING_CONFIG, DEFAULT_LIST_LIMIT, DEFAULT_LIST_ORDER_BY, DEFAULT_POSTGRES_TIMEOUTS, DEFAULT_RETENTION_POLICY, DIAGNOSTICS_DEFAULT_LIMIT, DataQueryValidationError, DatabaseError, Dispatch, DispatchBus, DispatchCollection, DispatchSubscription, DispatchSubscriptionCollection, EmbeddingProvider, EmbeddingStorage, EmbeddingUnavailableError, ErrorUtils, FilesystemError, GlobalInterceptors, IN_LIST_CHUNK_SIZE, LearningMemory, LiveSchemaParityError, MAX_CHANGES_LIMIT, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MAX_LIST_LIMIT, MAX_STI_READ_SCOPE_TYPES, MAX_SYNC_APPLY_BATCH_SIZE, MCPGenerator, MCP_STABLE_CATALOG_TTL_MS, MODULE_DOC_HASH_PREFIX, ManifestBuilder, ManifestGenerator, ManifestManager, MetricsAdapter, NetworkError, ObjectRegistry, PLAYBOOK_PREFLIGHT_CAPABILITY, PLAYBOOK_PREFLIGHT_ROUTE_SEGMENT, POSTGRES_REVISION_GUARD_EXPRESSION, POSTGRES_TIMEOUT_ENV_VARS, PRIVATE_READ_CACHE_CONTROL, PubSubAdapter, QueryBoundsError, QueryOrderByError, RUN_ONCE_CLAIMS_TABLE, RunOnceClaimError, RuntimeError, SMRT_COLLECTION_BASE_NAMES, SMRT_CUSTOM_ACTION_ERROR_METADATA_KEY, SMRT_SCHEMA_VERSION, SYNC_APPLY_ROUTE_SEGMENTS, SYNC_APPLY_UUID_PATTERN, SYSTEM_DIAGNOSTICS_TABLES, SYSTEM_TABLE_NAMES, SchemaComparer, SignalBus, SignalSanitizer, SmrtClass, SmrtCollection, SmrtError, SmrtHierarchical, SmrtJunction, SmrtMCPServer, SmrtObject, SmrtPolymorphicAssociation, TenantIsolationError, ValidationError, ValidationReport, ValidationUtils, appendChange, appendChanges, applyOneToManyChildAccessors, applyPendingDecoratorRegistrations, applyPostgresPermissions, applyPostgresRuntimeTimeouts, applySyncWritablePolicy, assertPlainJson, assertPostgresSystemTimestampsCurrent, broadcastCacheInvalidation, buildCascadePlan, buildChangeEventStream, buildCustomActionInputSchema, buildCustomActionInvocationArgs, buildDefaultListOrderBy, buildDomainKnowledgeManifest, buildKnowledgeGraph, bumpChangeFeed, canonicalReadRepresentation, canonicalizeDataQuery, cascadeReferencesTo, changeEventSubscribersAtCapacity, checkKnowledgeGraphFreshness, checkLiveSchemaParity, childAccessorName, chunkArray, classifyDatabaseError, classifyDialectMessage, classifyMethodWireability, classifyParameterWireability, clearRetentionTasks, clone, coerceCustomActionArgument, collectForeignKeyOrphanCounts, computeBodyEtag, computeRuntimeWebManifestHash, computeTableVersionEtag, conditionalJsonResponse, config, convertTypeToJsonSchema, createClassNamePredicate, createDataQueryFingerprint, createDispatchBus, createFilesystemAdapter, createInterceptorContext, createMCPServer, createManifestClassNamePredicate, createQualifiedName, createRestServer, createSmrtClient, createSmrtServer, crossPackageRef, customActionParameterInputName, declareChangeFeedSensitiveTable, declaredTypeAcceptsDate, declaresRuntimeRestRoute, declaresRuntimeRestRouteShape, deriveRunOnceClaimKey, detectEngine, digestRunOnceContent, discoverKnowledgeArtifactPaths, discoverManifestEntry, discoverScopedPackageDirectories, drainChangeFeed, ensureBootstrapSystemTableCompatibility, ensureCacheInvalidationListener, ensureChangeFeedTable, ensureDeferredSystemTableCompatibility, ensureDispatchSubscriptionsSystemTableCompatibility, ensureDispatchSystemTableCompatibility, ensureJobEventsSystemTableCompatibility, ensureJobsSystemTableCompatibility, ensureLegacySystemTableCompatibility, ensureSystemTables, estimateAiUsageCost, eventStreamCapacityExceededResponse, executeCollectionReadPlan, executeToolCall, executeToolCalls, field, filterVisibleChangeFeedEntries, findManifestEntryByQualifiedName, foreignKey, formatToolResults, generateDDLForEngine, generateOpenAPISpec, generateSchemaDiff, generateToolFromMethod, generateToolManifest, getAdapterInfo, getAuthorizedChangesSince, getAuthorizedTenantScopedChangesSince, getCacheGeneration, getChangeFeedSensitiveTables, getChangesSince, getClassConfigResolvers, getClassName, getConfigResolver, getDatabaseEngine, getManifest, getPackageFromQualifiedName, getRetentionTasks, getSQLFromDiff, getSystemTableShapes, getTableVersion, getTenantScopedChangesSince, getTestDatabase, handlePlaybookPreflightRoute, hasActionableChanges, hasChangeFeedEntryVisibilityHook, hasChangeFeedTableAuthorizerHook, ifNoneMatchHasConcreteMatch, ifNoneMatchSatisfied, importOptionalDependency, invalidateCollectionCache, isAbortedTransactionError, isAdvisoryOnlyChange, isApiActionEnabledForObject, isChangeFeedDenyAll, isChangeFeedEntryVisible, isChangeFeedSensitiveTable, isCrudOperation, isCrudToolAction, isDatabaseInterface, isDeterministicDatabaseError, isEmbeddedDatabase, isFrameworkBaseClass, isFromPackage, isLazyConfigSentinel, isManualOrAdvisoryChange, isNotNullViolationError, isPostgresDatabase, isQualifiedName, isRestActionRoutable, isRestRoutePublic, isSmrtCollectionExtendsName, isStaleWrite, isTenantScopedClassResolved, isTransientDatabaseError, isType, isUniqueViolationError, isValid, listConfigResolvers, loadExternalManifest, loadExternalManifestSync, loadLocalTestManifestSync, loadManifestFromPathSync, manifest, manyToMany, meta, method, migratePostgresSystemTimestamps, normalizeCustomActionFailure, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema, normalizeEventsMaxSubscribers, normalizeOnDelete, normalizeTypedHttpError, oneToMany, parse, parseQualifiedName, parseSyncApplyBatch, payloadMatchesRow, planForeignKeyCreation, planPostgresPermissions, planPostgresSystemTimestampMigrations, postgresRevisionCandidates, postgresRevisionCondition, processSyncApplyBatch, pruneAiUsage, pruneChangeFeed, pruneExpiredContexts, pruneRunOnceClaims, qualifiedNamesEqual, queryStringDecoderFor, readAgentModuleDocs, readDispatchHealth, readJobHealth, readMethodDecoratorConfig, readMigrationStatus, readPackageAgentDoc, readRecentChanges, readRegistryDrift, readScheduleHealth, readSystemDiagnostics, registerChangeFeedWriter, registerCompatibleFieldDecorator, registerCompatibleMethodDecorator, registerConfigResolver, registerFilesystemAdapterFactory, registerOptionalDependency, registerRetentionTask, resetChangeFeedWarnings, resetChangeSignals, resetCollectionCache, resetConfigResolvers, resetVerifiedTables, resolveAgentModuleDocPaths, resolveApiMethodExposure, resolveAuthorizedChangeFeedTables, resolveCustomActionMetadata, resolveDatabase, resolveDbCacheKey, resolveDeclaredScopeMismatch, resolveDispatchTenantId, resolveDispatchTenantScope, resolveEffectiveActionMetadata, resolveExistingRunOnceClaim, resolveGetStringFilter, resolveLazyConfig, resolveListLimit, resolveListOffset, resolveMCPToolListCacheHint, resolvePostgresTimeouts, resolveReadCacheControl, resolveRegisteredObjectName, resolveTenantEtagDiscriminator, restFieldReadPermissions, restMethodForApiAction, runCascadeDelete, runOnce, runRetentionSweep, runWithTenantGate, safeParse, safeStringify, sanitizeMessagePaths, setChangeFeedAuthorizer, setChangeFeedEntryVisibility, setDispatchTenantResolver, setTenantEntryPointRunner, setTenantScopedClassResolver, setupSwaggerUI, shouldIncludeMethod, signalVisibleToTenant, smrt, smrtPlugin, smrt as smrtRegistry, snapshotRegistry, sortMCPTools, stableStringify, startRestServer, staticManifest, stopCacheInvalidationListeners, stopChangeSignalListeners, stringify, subscribeToChangeSignals, tableExists, toCustomActionBoolean, toCustomActionDate, toCustomActionNumber, tryReserveChangeEventSubscriberSlot, unregisterChangeFeedWriter, unregisterConfigResolver, unregisterRetentionTask, usesEmbeddedRevisionFallback, validatePostgresPermissionContract, validateSyncApplyItem, validateToolCall, versionConditionalResponse, warnIfSharedCacheNeutralized, withEmbeddedWriteQueue, withEmbeddedWriteTransaction };
|
|
102
|
+
export { AGENT_SURFACE_HASH_PREFIX, AIError, APIGenerator, AiUsageCollector, AiUsagePersistenceHandler, BOOTED_PROVENANCE, CACHE_INVALIDATION_CHANNEL, CHANGE_FEED_CREDENTIAL_TABLES, CHANGE_FEED_INTERCEPTOR_NAME, CHANGE_FEED_TABLE, CHANGE_SIGNAL_CHANNEL, CRUD_OPERATIONS, ConfigurationError, ContentHasher, CosineSimilarity, DEFAULT_AI_COST_RATES, DEFAULT_CHANGES_LIMIT, DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DEFAULT_EMBEDDING_CONFIG, DEFAULT_EVENTS_HEARTBEAT_MS, DEFAULT_EVENTS_MAX_SUBSCRIBERS, DEFAULT_EVENTS_RETRY_AFTER_SECONDS, DEFAULT_FACET_LIMIT, DEFAULT_LEARNING_CONFIG, DEFAULT_LIST_LIMIT, DEFAULT_LIST_ORDER_BY, DEFAULT_POSTGRES_TIMEOUTS, DEFAULT_RETENTION_POLICY, DIAGNOSTICS_DEFAULT_LIMIT, DataQueryValidationError, DatabaseError, Dispatch, DispatchBus, DispatchCollection, DispatchSubscription, DispatchSubscriptionCollection, EmbeddingProvider, EmbeddingStorage, EmbeddingUnavailableError, ErrorUtils, FilesystemError, GlobalInterceptors, IN_LIST_CHUNK_SIZE, LearningMemory, LiveSchemaParityError, MAX_CHANGES_LIMIT, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MAX_LIST_LIMIT, MAX_STI_READ_SCOPE_TYPES, MAX_SYNC_APPLY_BATCH_SIZE, MCPGenerator, MCP_STABLE_CATALOG_TTL_MS, MODULE_DOC_HASH_PREFIX, ManifestBuilder, ManifestGenerator, ManifestManager, MetricsAdapter, NetworkError, ObjectRegistry, PLAYBOOK_PREFLIGHT_CAPABILITY, PLAYBOOK_PREFLIGHT_ROUTE_SEGMENT, POSTGRES_REVISION_GUARD_EXPRESSION, POSTGRES_TIMEOUT_ENV_VARS, PRIVATE_READ_CACHE_CONTROL, PubSubAdapter, QueryBoundsError, QueryOrderByError, RUN_ONCE_CLAIMS_TABLE, RunOnceClaimError, RuntimeError, SMRT_COLLECTION_BASE_NAMES, SMRT_CUSTOM_ACTION_ERROR_METADATA_KEY, SMRT_SCHEMA_VERSION, SYNC_APPLY_ROUTE_SEGMENTS, SYNC_APPLY_UUID_PATTERN, SYSTEM_DIAGNOSTICS_TABLES, SYSTEM_TABLE_NAMES, SchemaComparer, SignalBus, SignalSanitizer, SmrtClass, SmrtCollection, SmrtError, SmrtHierarchical, SmrtJunction, SmrtMCPServer, SmrtObject, SmrtPolymorphicAssociation, TenantIsolationError, ValidationError, ValidationReport, ValidationUtils, appendChange, appendChanges, applyOneToManyChildAccessors, applyPendingDecoratorRegistrations, applyPostgresPermissions, applyPostgresRuntimeTimeouts, applySyncWritablePolicy, assertPlainJson, assertPostgresSystemTimestampsCurrent, broadcastCacheInvalidation, buildCascadePlan, buildChangeEventStream, buildCustomActionInputSchema, buildCustomActionInvocationArgs, buildDefaultListOrderBy, buildDomainKnowledgeManifest, buildKnowledgeGraph, bumpChangeFeed, canonicalReadRepresentation, canonicalizeDataQuery, cascadeReferencesTo, changeEventSubscribersAtCapacity, checkKnowledgeGraphFreshness, checkLiveSchemaParity, childAccessorName, chunkArray, classifyDatabaseError, classifyDialectMessage, classifyMethodWireability, classifyParameterWireability, clearRetentionTasks, clone, coerceCustomActionArgument, collectForeignKeyOrphanCounts, computeBodyEtag, computeRuntimeWebManifestHash, computeTableVersionEtag, conditionalJsonResponse, config, convertTypeToJsonSchema, createClassNamePredicate, createDataQueryFingerprint, createDispatchBus, createFilesystemAdapter, createInterceptorContext, createMCPServer, createManifestClassNamePredicate, createQualifiedName, createRestServer, createSmrtClient, createSmrtServer, crossPackageRef, customActionParameterInputName, declareChangeFeedSensitiveTable, declaredTypeAcceptsDate, declaresRuntimeRestRoute, declaresRuntimeRestRouteShape, deriveRunOnceClaimKey, detectEngine, digestRunOnceContent, discoverKnowledgeArtifactPaths, discoverManifestEntry, discoverScopedPackageDirectories, drainChangeFeed, ensureBootstrapSystemTableCompatibility, ensureCacheInvalidationListener, ensureChangeFeedTable, ensureDeferredSystemTableCompatibility, ensureDispatchSubscriptionsSystemTableCompatibility, ensureDispatchSystemTableCompatibility, ensureJobEventsSystemTableCompatibility, ensureJobsSystemTableCompatibility, ensureLegacySystemTableCompatibility, ensureSystemTables, estimateAiUsageCost, eventStreamCapacityExceededResponse, executeCollectionReadPlan, executeDecision, executeToolCall, executeToolCalls, field, filterVisibleChangeFeedEntries, findManifestEntryByQualifiedName, foreignKey, formatToolResults, generateDDLForEngine, generateOpenAPISpec, generateSchemaDiff, generateToolFromMethod, generateToolManifest, getAdapterInfo, getAuthorizedChangesSince, getAuthorizedTenantScopedChangesSince, getCacheGeneration, getChangeFeedSensitiveTables, getChangesSince, getClassConfigResolvers, getClassName, getConfigResolver, getDatabaseEngine, getManifest, getPackageFromQualifiedName, getRetentionTasks, getSQLFromDiff, getSystemTableShapes, getTableVersion, getTenantScopedChangesSince, getTestDatabase, handlePlaybookPreflightRoute, hasActionableChanges, hasChangeFeedEntryVisibilityHook, hasChangeFeedTableAuthorizerHook, ifNoneMatchHasConcreteMatch, ifNoneMatchSatisfied, importOptionalDependency, invalidateCollectionCache, isAbortedTransactionError, isAdvisoryOnlyChange, isApiActionEnabledForObject, isChangeFeedDenyAll, isChangeFeedEntryVisible, isChangeFeedSensitiveTable, isCrudOperation, isCrudToolAction, isDatabaseInterface, isDeterministicDatabaseError, isEmbeddedDatabase, isFrameworkBaseClass, isFromPackage, isLazyConfigSentinel, isManualOrAdvisoryChange, isNotNullViolationError, isPostgresDatabase, isQualifiedName, isRestActionRoutable, isRestRoutePublic, isSmrtCollectionExtendsName, isStaleWrite, isTenantScopedClassResolved, isTransientDatabaseError, isType, isUniqueViolationError, isValid, listConfigResolvers, loadExternalManifest, loadExternalManifestSync, loadLocalTestManifestSync, loadManifestFromPathSync, manifest, manyToMany, meta, method, migratePostgresSystemTimestamps, normalizeCustomActionFailure, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema, normalizeEventsMaxSubscribers, normalizeOnDelete, normalizeTypedHttpError, oneToMany, parse, parseQualifiedName, parseSyncApplyBatch, payloadMatchesRow, planForeignKeyCreation, planPostgresPermissions, planPostgresSystemTimestampMigrations, postgresRevisionCandidates, postgresRevisionCondition, processSyncApplyBatch, pruneAiUsage, pruneChangeFeed, pruneExpiredContexts, pruneRunOnceClaims, qualifiedNamesEqual, queryStringDecoderFor, readAgentModuleDocs, readDispatchHealth, readJobHealth, readMethodDecoratorConfig, readMigrationStatus, readPackageAgentDoc, readRecentChanges, readRegistryDrift, readScheduleHealth, readSystemDiagnostics, registerChangeFeedWriter, registerCompatibleFieldDecorator, registerCompatibleMethodDecorator, registerConfigResolver, registerFilesystemAdapterFactory, registerOptionalDependency, registerRetentionTask, resetChangeFeedWarnings, resetChangeSignals, resetCollectionCache, resetConfigResolvers, resetVerifiedTables, resolveAgentModuleDocPaths, resolveApiMethodExposure, resolveAuthorizedChangeFeedTables, resolveCustomActionMetadata, resolveDatabase, resolveDbCacheKey, resolveDeclaredScopeMismatch, resolveDispatchTenantId, resolveDispatchTenantScope, resolveEffectiveActionMetadata, resolveExistingRunOnceClaim, resolveGetStringFilter, resolveLazyConfig, resolveListLimit, resolveListOffset, resolveMCPToolListCacheHint, resolvePostgresTimeouts, resolveReadCacheControl, resolveRegisteredObjectName, resolveTenantEtagDiscriminator, restFieldReadPermissions, restMethodForApiAction, runCascadeDelete, runOnce, runRetentionSweep, runWithTenantGate, safeParse, safeStringify, sanitizeMessagePaths, setChangeFeedAuthorizer, setChangeFeedEntryVisibility, setDispatchTenantResolver, setTenantEntryPointRunner, setTenantScopedClassResolver, setupSwaggerUI, shouldIncludeMethod, signalVisibleToTenant, smrt, smrtPlugin, smrt as smrtRegistry, snapshotRegistry, sortMCPTools, stableStringify, startRestServer, staticManifest, stopCacheInvalidationListeners, stopChangeSignalListeners, stringify, subscribeToChangeSignals, tableExists, toCustomActionBoolean, toCustomActionDate, toCustomActionNumber, tryReserveChangeEventSubscriberSlot, unregisterChangeFeedWriter, unregisterConfigResolver, unregisterRetentionTask, usesEmbeddedRevisionFallback, validatePostgresPermissionContract, validateSyncApplyItem, validateToolCall, versionConditionalResponse, warnIfSharedCacheNeutralized, withEmbeddedWriteQueue, withEmbeddedWriteTransaction };
|
package/dist/interceptors.d.ts
CHANGED
|
@@ -1,4 +1,48 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Global Interceptors System for SMRT Collections and Objects
|
|
3
|
+
*
|
|
4
|
+
* Provides a plugin architecture for intercepting collection and object operations.
|
|
5
|
+
* This enables external packages (like @happyvertical/smrt-tenancy) to register
|
|
6
|
+
* interceptors without creating circular dependencies.
|
|
7
|
+
*
|
|
8
|
+
* Pattern: Static methods on GlobalInterceptors class with globalThis state
|
|
9
|
+
* (matches ObjectRegistry pattern for cross-module state sharing)
|
|
10
|
+
*
|
|
11
|
+
* @example Basic interceptor registration
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { GlobalInterceptors } from '@happyvertical/smrt-core';
|
|
14
|
+
*
|
|
15
|
+
* // Register a beforeList interceptor
|
|
16
|
+
* GlobalInterceptors.register({
|
|
17
|
+
* beforeList(className, options) {
|
|
18
|
+
* console.log(`Listing ${className}`);
|
|
19
|
+
* return options; // Return modified options
|
|
20
|
+
* }
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @example Tenancy interceptor (from smrt-tenancy)
|
|
25
|
+
* ```typescript
|
|
26
|
+
* GlobalInterceptors.register({
|
|
27
|
+
* beforeList(className, options, context) {
|
|
28
|
+
* const tenantId = getCurrentTenantId();
|
|
29
|
+
* if (tenantId && isTenantScoped(className)) {
|
|
30
|
+
* return {
|
|
31
|
+
* ...options,
|
|
32
|
+
* where: { ...options.where, tenantId }
|
|
33
|
+
* };
|
|
34
|
+
* }
|
|
35
|
+
* return options;
|
|
36
|
+
* },
|
|
37
|
+
* beforeSave(instance, context) {
|
|
38
|
+
* // Validate tenant on save
|
|
39
|
+
* }
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @see https://github.com/happyvertical/smrt/issues/675
|
|
44
|
+
*/
|
|
45
|
+
import type { SmrtObject } from './object.js';
|
|
2
46
|
/**
|
|
3
47
|
* Context passed to interceptors with operation metadata
|
|
4
48
|
*/
|
package/dist/junction.d.ts
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SmrtJunction — base class for two-sided junction (many-to-many) collections.
|
|
3
|
+
*
|
|
4
|
+
* A junction collection manages rows that link a "left" entity to a "right" entity,
|
|
5
|
+
* typically with discriminator fields (relationship/role) and an optional sortOrder.
|
|
6
|
+
* Examples in the monorepo:
|
|
7
|
+
*
|
|
8
|
+
* | Subclass | Left field | Right field | Discriminator |
|
|
9
|
+
* |--------------------------------|---------------|-------------|-----------------|
|
|
10
|
+
* | ContentAssetCollection | contentId | assetId | relationship |
|
|
11
|
+
* | PerformerOwnedAssetCollection | performerId | assetId | role |
|
|
12
|
+
* | PlaceAssetCollection | placeId | assetId | relationship |
|
|
13
|
+
* | EventParticipantCollection | eventId | profileId | role |
|
|
14
|
+
* | FactContentCollection | factId | contentId | relationship |
|
|
15
|
+
*
|
|
16
|
+
* Each subclass declares `leftField` / `rightField` (camelCase) and optionally
|
|
17
|
+
* overrides `sortField` (defaults to `'sortOrder'`; set `null` to disable ORDER BY).
|
|
18
|
+
*
|
|
19
|
+
* Polymorphic subclasses (where "left" or "right" is a composite key like
|
|
20
|
+
* `metaType + metaId`) may override `byLeft` / `byRight` / `attach` / `detach`
|
|
21
|
+
* with diverging signatures — see `AssetAssociationCollection` for a reference.
|
|
22
|
+
*
|
|
23
|
+
* @typeParam TItem - The junction row class (extends `SmrtObject`)
|
|
24
|
+
*/
|
|
1
25
|
import { SmrtCollection } from './collection';
|
|
2
26
|
import { SmrtObject } from './object';
|
|
3
27
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DomainKnowledgeConfig } from '@happyvertical/smrt-types';
|
|
1
|
+
import type { DomainKnowledgeConfig } from '@happyvertical/smrt-types';
|
|
2
2
|
export declare const DEFAULT_KNOWLEDGE_CONFIG: DomainKnowledgeConfig;
|
|
3
3
|
/** Resolve the file and package portions of the documented knowledge precedence. */
|
|
4
4
|
export declare function resolveFileKnowledgeConfig(rootDir: string, packageName: string | undefined): Promise<DomainKnowledgeConfig>;
|
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
name: string;
|
|
4
|
-
/** Original node_modules path, retained for workspace-relative reporting. */
|
|
5
|
-
directory: string;
|
|
6
|
-
/** Resolved path for identity comparisons or absolute snapshot links. */
|
|
7
|
-
realDirectory: string;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Enumerate scope entries without descending into pnpm's linked dependency graph.
|
|
11
|
-
* Selection, workspace discovery and enrichment remain caller policies.
|
|
12
|
-
*/
|
|
13
|
-
export declare function discoverScopedPackageDirectories(scopeDirectories: string[]): ScopedPackageDirectory[];
|
|
14
|
-
/** Read authored docs only; never load artifacts, package code or object scans. */
|
|
15
|
-
export declare function readPackageAgentDoc(directory: string, options?: {
|
|
16
|
-
inspectAdapter?: boolean;
|
|
17
|
-
}): {
|
|
18
|
-
hasAgentsMd: boolean;
|
|
19
|
-
hasClaudeMd: boolean;
|
|
20
|
-
hasClaudeShim: boolean;
|
|
21
|
-
agentsContent: string;
|
|
22
|
-
claudeContent: string;
|
|
23
|
-
source: "AGENTS.md" | "CLAUDE.md" | null;
|
|
24
|
-
content: string | null;
|
|
25
|
-
};
|
|
1
|
+
/** Compatibility exports; filesystem knowledge is owned by the lightweight scanner. */
|
|
2
|
+
export { discoverScopedPackageDirectories, readPackageAgentDoc, type ScopedPackageDirectory, } from '@happyvertical/smrt-scanner/knowledge';
|
|
26
3
|
//# sourceMappingURL=knowledge-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-discovery.d.ts","sourceRoot":"","sources":["../src/knowledge-discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"knowledge-discovery.d.ts","sourceRoot":"","sources":["../src/knowledge-discovery.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,KAAK,sBAAsB,GAC5B,MAAM,uCAAuC,CAAC"}
|
|
@@ -1,54 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
//#region src/knowledge-discovery.ts
|
|
4
|
-
/**
|
|
5
|
-
* Enumerate scope entries without descending into pnpm's linked dependency graph.
|
|
6
|
-
* Selection, workspace discovery and enrichment remain caller policies.
|
|
7
|
-
*/
|
|
8
|
-
function discoverScopedPackageDirectories(scopeDirectories) {
|
|
9
|
-
const packages = [];
|
|
10
|
-
for (const scopeDirectory of new Set(scopeDirectories)) {
|
|
11
|
-
let entries;
|
|
12
|
-
try {
|
|
13
|
-
entries = readdirSync(scopeDirectory, { withFileTypes: true });
|
|
14
|
-
} catch {
|
|
15
|
-
continue;
|
|
16
|
-
}
|
|
17
|
-
for (const entry of entries) {
|
|
18
|
-
if (!entry.isDirectory() && !entry.isSymbolicLink()) continue;
|
|
19
|
-
const directory = join(scopeDirectory, entry.name);
|
|
20
|
-
try {
|
|
21
|
-
packages.push({
|
|
22
|
-
name: entry.name,
|
|
23
|
-
directory,
|
|
24
|
-
realDirectory: realpathSync(directory)
|
|
25
|
-
});
|
|
26
|
-
} catch {}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return packages;
|
|
30
|
-
}
|
|
31
|
-
/** Read authored docs only; never load artifacts, package code or object scans. */
|
|
32
|
-
function readPackageAgentDoc(directory, options = {}) {
|
|
33
|
-
const agentsPath = join(directory, "AGENTS.md");
|
|
34
|
-
const claudePath = join(directory, "CLAUDE.md");
|
|
35
|
-
const hasAgentsMd = existsSync(agentsPath);
|
|
36
|
-
const hasClaudeMd = existsSync(claudePath);
|
|
37
|
-
const agentsContent = hasAgentsMd ? readFileSync(agentsPath, "utf8") : "";
|
|
38
|
-
const claudeContent = hasClaudeMd && (!hasAgentsMd || options.inspectAdapter) ? readFileSync(claudePath, "utf8") : "";
|
|
39
|
-
const hasClaudeShim = hasClaudeMd && claudeContent.trim() === "@AGENTS.md";
|
|
40
|
-
const source = hasAgentsMd ? "AGENTS.md" : hasClaudeMd && !hasClaudeShim ? "CLAUDE.md" : null;
|
|
41
|
-
return {
|
|
42
|
-
hasAgentsMd,
|
|
43
|
-
hasClaudeMd,
|
|
44
|
-
hasClaudeShim,
|
|
45
|
-
agentsContent,
|
|
46
|
-
claudeContent,
|
|
47
|
-
source,
|
|
48
|
-
content: hasAgentsMd ? agentsContent : source ? claudeContent : null
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
//#endregion
|
|
1
|
+
import { discoverScopedPackageDirectories, readPackageAgentDoc } from "@happyvertical/smrt-scanner/knowledge";
|
|
52
2
|
export { discoverScopedPackageDirectories, readPackageAgentDoc };
|
|
53
|
-
|
|
54
|
-
//# sourceMappingURL=knowledge-discovery.js.map
|