@happyvertical/smrt-types 0.51.32 → 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,2BAA2B,EAC3B,2BAA2B,EAC3B,+BAA+B,EAC/B,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,UAAU,EACV,IAAI,EACJ,gBAAgB,EAChB,MAAM,EACN,IAAI,GACL,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,2BAA2B,EAC3B,qCAAqC,EACrC,qBAAqB,EACrB,oBAAoB,EACpB,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,8BAA8B,EAC9B,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,UAAU,GACX,MAAM,WAAW,CAAC"}
@@ -0,0 +1,279 @@
1
+ import type { CapabilityClassification } from './capability.js';
2
+ /** Kind of generated surface a knowledge entry describes (REST/CLI/MCP/AI). */
3
+ export type DomainKnowledgeSurfaceKind = 'api' | 'cli' | 'mcp' | 'ai';
4
+ /** A single generated surface (one api/cli/mcp/ai operation) exposed by an object. */
5
+ export interface DomainKnowledgeSurface {
6
+ kind: DomainKnowledgeSurfaceKind;
7
+ name: string;
8
+ operation: string;
9
+ path?: string;
10
+ method?: string;
11
+ description?: string;
12
+ objectName?: string;
13
+ }
14
+ /**
15
+ * A public method a generated surface deliberately does NOT expose, and why.
16
+ *
17
+ * Silence is the failure mode this closes: before #2686 a method that produced
18
+ * no route simply did not appear, leaving an author to guess whether they had
19
+ * mistyped a name, hit an `exclude`, or written a signature no HTTP caller can
20
+ * satisfy. `reason` is human-readable prose; `code` is the stable key to react
21
+ * to programmatically.
22
+ */
23
+ export interface DomainKnowledgeWithheldSurface {
24
+ kind: DomainKnowledgeSurfaceKind;
25
+ /** The method name that was withheld. */
26
+ operation: string;
27
+ /**
28
+ * Stable rejection key — `not-wireable`, `excluded`, `not-included`,
29
+ * `withheld`, `lifecycle-method`, `no-receiver`, `api-disabled`.
30
+ */
31
+ code: string;
32
+ /** Human-readable explanation, e.g. why a parameter cannot cross a wire. */
33
+ reason: string;
34
+ objectName?: string;
35
+ }
36
+ /** Per-object configuration controlling domain-knowledge generation and exposure. */
37
+ export interface DomainKnowledgeConfig {
38
+ enabled?: boolean;
39
+ api?: {
40
+ /**
41
+ * Generate HTTP knowledge routes. Disabled by default; prefer CLI/MCP for
42
+ * agent workflows unless this is a guarded dev/admin endpoint.
43
+ */
44
+ enabled?: boolean;
45
+ basePath?: string;
46
+ includeDocs?: boolean;
47
+ includePrompts?: boolean;
48
+ /**
49
+ * Require dev mode or admin locals for HTTP knowledge access. Setting this
50
+ * to false makes the route public and should only be used when sanitized
51
+ * anonymous schema/surface metadata is acceptable.
52
+ */
53
+ requireAdmin?: boolean;
54
+ };
55
+ includeDocs?: boolean;
56
+ includePrompts?: boolean;
57
+ tags?: string[];
58
+ summary?: string;
59
+ risks?: string[];
60
+ }
61
+ /** Validation constraints retained in the curated agent-facing field shape. */
62
+ export interface DomainKnowledgeFieldConstraints {
63
+ min?: number;
64
+ max?: number;
65
+ minLength?: number;
66
+ maxLength?: number;
67
+ pattern?: string;
68
+ }
69
+ /** A field retained in the curated agent-facing object shape. */
70
+ export interface DomainKnowledgeField {
71
+ name: string;
72
+ type: string;
73
+ required?: boolean;
74
+ related?: string;
75
+ columnType?: string;
76
+ default?: unknown;
77
+ constraints?: DomainKnowledgeFieldConstraints;
78
+ readonly?: boolean;
79
+ transient?: boolean;
80
+ }
81
+ /** Additive structured signature; `methods: string[]` remains the compatibility surface. */
82
+ export interface DomainKnowledgeMethodSignature {
83
+ name: string;
84
+ async?: boolean;
85
+ static?: boolean;
86
+ params?: string[];
87
+ returns?: string;
88
+ }
89
+ /** Normalized tenancy facts from `@smrt({ tenantScoped })`. */
90
+ export interface DomainKnowledgeTenant {
91
+ scoped: boolean;
92
+ mode?: 'required' | 'optional';
93
+ field?: string;
94
+ }
95
+ /** One object's entry in the domain-knowledge manifest (fields, relationships, surfaces). */
96
+ export interface DomainKnowledgeObject {
97
+ name: string;
98
+ qualifiedName?: string;
99
+ collection: string;
100
+ tableName?: string;
101
+ packageName?: string;
102
+ extends?: string;
103
+ visibility?: string;
104
+ fields: DomainKnowledgeField[];
105
+ relationships: DomainKnowledgeField[];
106
+ methods: string[];
107
+ methodSignatures?: DomainKnowledgeMethodSignature[];
108
+ tenant?: DomainKnowledgeTenant;
109
+ tableStrategy?: 'cti' | 'sti';
110
+ conflictColumns?: string[];
111
+ surfaces: DomainKnowledgeSurface[];
112
+ /**
113
+ * Public methods a generated surface withheld, with the reason for each.
114
+ * Omitted entirely when nothing was withheld, so an artifact for a fully
115
+ * exposed object is unchanged (#2686).
116
+ */
117
+ withheldSurfaces?: DomainKnowledgeWithheldSurface[];
118
+ relationshipFeatures: string[];
119
+ tags: string[];
120
+ summary?: string;
121
+ risks: string[];
122
+ }
123
+ /**
124
+ * A sibling module doc linked from a package's `AGENTS.md` (#2108).
125
+ *
126
+ * Oversized package docs are split by module into `packages/<pkg>/agents/<module>.md`
127
+ * rather than nested `AGENTS.md` files, because instruction chains are additive.
128
+ * The link in `AGENTS.md` is the registration: the knowledge tooling resolves it
129
+ * so the moved prose — which is curated and not regenerable from the manifest —
130
+ * stays reachable from agent context.
131
+ */
132
+ export interface DomainKnowledgeModuleDoc {
133
+ /** Path relative to the package root, e.g. `agents/commissions.md`. */
134
+ path: string;
135
+ /** Module name derived from the file's basename, e.g. `commissions`. */
136
+ module: string;
137
+ content: string;
138
+ }
139
+ /**
140
+ * A declared view intent (#2588) as emitted into the knowledge artifact (#2591).
141
+ *
142
+ * `id` is the entry's identity everywhere: in this artifact, in a playbook step
143
+ * (`{ kind: 'intent', id }`), and in `smrt doctor`'s surface report. It is
144
+ * declared, never derived from a namespace, a generated tool name, or a route,
145
+ * so it survives every rename those could undergo.
146
+ */
147
+ export interface DomainKnowledgeViewIntent {
148
+ id: string;
149
+ description: string;
150
+ /** Resolved through the #2587 fail-closed rule at declaration time. */
151
+ capability: CapabilityClassification;
152
+ /** The browser registry this intent compiles into, and what it addresses. */
153
+ target: Record<string, unknown>;
154
+ hasInputSchema: boolean;
155
+ /**
156
+ * Always exactly `['browser']`. An intent moves mounted browser state; a
157
+ * server-side agent reaches one only through the #2446 command/ack bridge,
158
+ * which the referencing playbook declares. Typed as the literal tuple so a
159
+ * consumer cannot read the contract as wider than it is.
160
+ */
161
+ planes: ['browser'];
162
+ /** Declaring module, relative to the package root, in POSIX form. */
163
+ sourceFile: string;
164
+ }
165
+ /** One step of an emitted playbook. Steps never nest another playbook. */
166
+ export type DomainKnowledgePlaybookStep = {
167
+ kind: 'operation';
168
+ model: string;
169
+ action: string;
170
+ } | {
171
+ kind: 'intent';
172
+ id: string;
173
+ };
174
+ /** A registered playbook (#2589) as emitted into the knowledge artifact (#2591). */
175
+ export interface DomainKnowledgePlaybook {
176
+ key: string;
177
+ title: string;
178
+ description: string;
179
+ steps: DomainKnowledgePlaybookStep[];
180
+ planes: Array<'browser' | 'server'>;
181
+ /** False when `planes` was derived from the step kinds rather than declared. */
182
+ planesDeclared: boolean;
183
+ onStepFailure: 'abort' | 'continue';
184
+ enabled: boolean;
185
+ /** Declaring module, relative to the package root, in POSIX form. */
186
+ sourceFile: string;
187
+ }
188
+ /**
189
+ * A declaration the scanner recognized but could not emit.
190
+ *
191
+ * Recorded rather than dropped: the whole point of emitting the agent surface
192
+ * is that "what can an agent do here" has one answer, and an invisible
193
+ * declaration would quietly make that answer wrong. Every message names
194
+ * `useWebMcpTool`, the escape hatch for a genuinely computed tool set.
195
+ */
196
+ export interface DomainKnowledgeAgentSurfaceDiagnostic {
197
+ code: string;
198
+ helper: 'defineIntent' | 'definePlaybook';
199
+ message: string;
200
+ /** Declaring module, relative to the package root, in POSIX form. */
201
+ sourceFile: string;
202
+ line?: number;
203
+ column?: number;
204
+ }
205
+ /**
206
+ * The package's declared agent-addressable surface beyond its generated model
207
+ * tools (#2591).
208
+ *
209
+ * Omitted entirely when a package declares no intents, playbooks, or
210
+ * diagnostics, so an artifact for a package with none stays byte-identical to
211
+ * what it emitted before this field existed.
212
+ */
213
+ export interface DomainKnowledgeAgentSurface {
214
+ intents: DomainKnowledgeViewIntent[];
215
+ playbooks: DomainKnowledgePlaybook[];
216
+ diagnostics: DomainKnowledgeAgentSurfaceDiagnostic[];
217
+ }
218
+ /** The package-level domain-knowledge artifact (`smrt-knowledge.json`) — the agent/developer contract. */
219
+ export interface DomainKnowledgeManifest {
220
+ schemaVersion: 1;
221
+ /** True when generation removed sensitive fields before projecting objects. */
222
+ sensitiveFieldsExcluded?: true;
223
+ generatedAt: string;
224
+ packageName?: string;
225
+ packageVersion?: string;
226
+ sourceManifestPath?: string;
227
+ agentDocPath?: string;
228
+ sourceHashes: Record<string, string>;
229
+ exports: string[];
230
+ dependencies: Record<string, string>;
231
+ smrtDependencies: string[];
232
+ sdkDependencies: string[];
233
+ tags: string[];
234
+ summary?: string;
235
+ risks: string[];
236
+ objects: DomainKnowledgeObject[];
237
+ surfaces: DomainKnowledgeSurface[];
238
+ prompts: Array<{
239
+ filePath: string;
240
+ key?: string;
241
+ }>;
242
+ relationshipsV2: {
243
+ foreignKeyFields: number;
244
+ crossPackageRefFields: number;
245
+ junctionCollections: number;
246
+ hierarchicalObjects: number;
247
+ polymorphicAssociations: number;
248
+ uuidColumns: number;
249
+ };
250
+ agentDoc?: string;
251
+ /** Sibling module docs linked from `AGENTS.md`; omitted when the package links none. */
252
+ moduleDocs?: DomainKnowledgeModuleDoc[];
253
+ /**
254
+ * Declared view intents and playbooks (#2591). Omitted when the package
255
+ * declares none, so this field is additive to schema version 1.
256
+ *
257
+ * This is deliberately a knowledge-artifact field and not a runtime-manifest
258
+ * field: `manifest.json` stays runtime-focused, and the agent-addressable
259
+ * surface is an agent/developer contract.
260
+ */
261
+ agentSurface?: DomainKnowledgeAgentSurface;
262
+ }
263
+ /** Result of a domain-knowledge freshness check (stale references, error/warning counts). */
264
+ export interface DomainKnowledgeFreshnessResult {
265
+ ok: boolean;
266
+ checkedAt: string;
267
+ artifactPath?: string;
268
+ issueCount: number;
269
+ errorCount: number;
270
+ warningCount: number;
271
+ issues: Array<{
272
+ severity: 'error' | 'warning';
273
+ code: string;
274
+ message: string;
275
+ file?: string;
276
+ packageName?: string;
277
+ }>;
278
+ }
279
+ //# sourceMappingURL=knowledge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../src/knowledge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Module type definitions for SMRT Framework
3
+ *
4
+ * These types allow SMRT modules to declare their capabilities,
5
+ * including models, collections, and optional Svelte UI components.
6
+ *
7
+ * @example Module with UI components
8
+ * ```typescript
9
+ * // In core module: packages/commerce/src/ui.ts
10
+ * import type { SmrtModuleMeta, ModuleUISlot } from '@happyvertical/smrt-types';
11
+ *
12
+ * export const COMMERCE_UI_SLOTS: Record<string, ModuleUISlot> = {
13
+ * 'invoice-card': { id: 'invoice-card', label: 'Invoice Card', category: 'display' },
14
+ * };
15
+ *
16
+ * export const COMMERCE_MODULE_META: SmrtModuleMeta = {
17
+ * name: '@happyvertical/smrt-commerce',
18
+ * displayName: 'Commerce',
19
+ * uiSlots: COMMERCE_UI_SLOTS,
20
+ * };
21
+ *
22
+ * // In svelte subpath: packages/commerce/src/svelte/index.ts
23
+ * import { ModuleUIRegistry } from '@happyvertical/smrt-ui/registry';
24
+ * import { COMMERCE_MODULE_META } from '../ui.js';
25
+ * import InvoiceCard from './components/InvoiceCard.svelte';
26
+ *
27
+ * ModuleUIRegistry.registerModule(COMMERCE_MODULE_META);
28
+ * ModuleUIRegistry.register('@happyvertical/smrt-commerce', 'invoice-card', InvoiceCard);
29
+ * ```
30
+ */
31
+ /**
32
+ * UI slot definition for a SMRT module.
33
+ *
34
+ * Modules declare the slots they support in their `SmrtModuleMeta`. Svelte UI
35
+ * packages then implement those slots by registering components against the
36
+ * same `id` via `ModuleUIRegistryInterface.register()`.
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const slot: ModuleUISlot = {
41
+ * id: 'invoice-card',
42
+ * label: 'Invoice Card',
43
+ * description: 'Compact card view for a single invoice',
44
+ * category: 'display',
45
+ * order: 10,
46
+ * };
47
+ * ```
48
+ *
49
+ * @see {@link SmrtModuleMeta} for how slots are declared on a module
50
+ * @see {@link ModuleUIRegistryInterface} for registering component implementations
51
+ */
52
+ export interface ModuleUISlot {
53
+ /** Unique identifier (e.g., 'invoice-card', 'customer-form') */
54
+ id: string;
55
+ /** Human-readable label */
56
+ label: string;
57
+ /** Description of the component's purpose */
58
+ description?: string;
59
+ /** Icon identifier (lucide icon names) */
60
+ icon?: string;
61
+ /** Display order (lower first) */
62
+ order?: number;
63
+ /** Component category for grouping */
64
+ category?: 'display' | 'form' | 'admin' | 'list' | 'detail' | 'action' | 'dashboard' | 'navigation';
65
+ /** Required props interface name (for documentation) */
66
+ propsInterface?: string;
67
+ }
68
+ /**
69
+ * Metadata declaration for a SMRT module.
70
+ *
71
+ * Each module exports a `SmrtModuleMeta` constant describing its package
72
+ * identity, the UI slots it declares, and the model/collection classes it
73
+ * provides. The UI registry uses this to resolve component lookups at runtime.
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * export const COMMERCE_MODULE_META: SmrtModuleMeta = {
78
+ * name: '@happyvertical/smrt-commerce',
79
+ * displayName: 'Commerce',
80
+ * description: 'Invoicing, contracts, and fulfillment',
81
+ * models: ['Customer', 'Invoice', 'Contract'],
82
+ * uiSlots: {
83
+ * 'invoice-card': { id: 'invoice-card', label: 'Invoice Card', category: 'display' },
84
+ * },
85
+ * };
86
+ * ```
87
+ *
88
+ * @see {@link ModuleUISlot} for the shape of each declared slot
89
+ * @see {@link ModuleUIRegistryInterface} for registering and retrieving module components
90
+ */
91
+ export interface SmrtModuleMeta {
92
+ /** Package name (e.g., '@happyvertical/smrt-commerce') */
93
+ name: string;
94
+ /** Human-readable display name */
95
+ displayName: string;
96
+ /** Module description */
97
+ description?: string;
98
+ /** Module version */
99
+ version?: string;
100
+ /** UI slots this module declares */
101
+ uiSlots?: Record<string, ModuleUISlot>;
102
+ /** Model classes this module provides */
103
+ models?: string[];
104
+ /** Collection classes this module provides */
105
+ collections?: string[];
106
+ /** Peer dependencies for UI (e.g., ['@happyvertical/smrt-profiles']) */
107
+ uiDependencies?: string[];
108
+ }
109
+ /**
110
+ * Generic component type for SMRT module UI slots.
111
+ *
112
+ * Intentionally opaque — defined as a loose function signature rather than
113
+ * `import('svelte').ComponentType` to avoid pulling Svelte (and its DOM types)
114
+ * into server-side Node.js builds. The actual Svelte component constructor
115
+ * is assignable to this type at runtime.
116
+ *
117
+ * @typeParam Props - The props interface the component accepts; defaults to `unknown`.
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * import InvoiceCard from './InvoiceCard.svelte';
122
+ * // InvoiceCard is assignable to ModuleComponentType<InvoiceCardProps>
123
+ * registry.register('@happyvertical/smrt-commerce', 'invoice-card', InvoiceCard);
124
+ * ```
125
+ *
126
+ * @see {@link ModuleUIBaseProps} for the base props all slot components receive
127
+ * @see {@link ModuleUIRegistryInterface} for storing and retrieving components
128
+ */
129
+ export type ModuleComponentType<Props = unknown> = (...args: any[]) => any;
130
+ /**
131
+ * Base props contract for all SMRT module UI slot components.
132
+ *
133
+ * Every component registered against a `ModuleUISlot` should accept at least
134
+ * these props. Individual slot components may extend this interface with
135
+ * slot-specific required props.
136
+ *
137
+ * @typeParam TData - Shape of the primary data object(s) the component renders.
138
+ * @typeParam TConfig - Shape of the optional configuration/settings object.
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * interface InvoiceCardProps extends ModuleUIBaseProps<Invoice> {
143
+ * showLineItems?: boolean;
144
+ * }
145
+ * ```
146
+ *
147
+ * @see {@link ModuleComponentType} for the component type that accepts these props
148
+ * @see {@link ModuleUISlot} for the slot declaration that names the `propsInterface`
149
+ */
150
+ export interface ModuleUIBaseProps<TData = unknown, TConfig = unknown> {
151
+ /** Primary data object(s) the component operates on */
152
+ data?: TData;
153
+ /** Configuration/settings */
154
+ config?: TConfig;
155
+ /** Callback for data changes */
156
+ onChange?: (data: TData) => void | Promise<void>;
157
+ /** Callback for saving */
158
+ onSave?: (data: TData) => Promise<void>;
159
+ /** Whether component is read-only */
160
+ readonly?: boolean;
161
+ /** CSS class for styling */
162
+ class?: string;
163
+ /** Loading state */
164
+ loading?: boolean;
165
+ }
166
+ /**
167
+ * Registry interface for mapping SMRT module slots to Svelte components.
168
+ *
169
+ * Implemented by `ModuleUIRegistry` in `@happyvertical/smrt-ui`. Consumers
170
+ * call `register()` once per slot at Svelte package initialisation time and
171
+ * `get()` when rendering to retrieve the correct component.
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * // Registration (in packages/commerce/src/svelte/index.ts)
176
+ * ModuleUIRegistry.registerModule(COMMERCE_MODULE_META);
177
+ * ModuleUIRegistry.register('@happyvertical/smrt-commerce', 'invoice-card', InvoiceCard);
178
+ *
179
+ * // Retrieval (in a host Svelte app)
180
+ * const InvoiceCard = ModuleUIRegistry.get('@happyvertical/smrt-commerce', 'invoice-card');
181
+ * ```
182
+ *
183
+ * @see {@link SmrtModuleMeta} for the module metadata structure passed to `registerModule()`
184
+ * @see {@link ModuleUISlot} for the slot identifiers used as `slotId`
185
+ * @see {@link ModuleComponentType} for the component type stored in the registry
186
+ */
187
+ export interface ModuleUIRegistryInterface {
188
+ /** Register a component for a module's slot */
189
+ register<TProps extends ModuleUIBaseProps>(moduleName: string, slotId: string, component: ModuleComponentType<TProps>): void;
190
+ /** Get a component for a module's slot */
191
+ get<TProps extends ModuleUIBaseProps>(moduleName: string, slotId: string): ModuleComponentType<TProps> | undefined;
192
+ /** Check if component is registered */
193
+ has(moduleName: string, slotId: string): boolean;
194
+ /** Get all registered slot IDs for a module */
195
+ getSlots(moduleName: string): string[];
196
+ /** Get all registered module names */
197
+ getModules(): string[];
198
+ /** Get module metadata */
199
+ getModuleMeta(moduleName: string): SmrtModuleMeta | undefined;
200
+ /** Register module metadata */
201
+ registerModule(meta: SmrtModuleMeta): void;
202
+ /** Unregister for testing */
203
+ unregister(moduleName: string, slotId: string): boolean;
204
+ /** Clear all for testing */
205
+ clear(): void;
206
+ }
207
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Shared route contract types for SMRT packages.
3
+ *
4
+ * Packages can export route modules that describe their page surfaces without
5
+ * owning the consuming app's physical route tree. Apps stay responsible for
6
+ * URL shape, auth, tenancy, and layout composition while reusing package-owned
7
+ * page components and loader helpers.
8
+ */
9
+ import type { ModuleComponentType } from './module.js';
10
+ /**
11
+ * Route load function category.
12
+ *
13
+ * `page` maps naturally to SvelteKit's `+page.ts`, while `page-server` maps to
14
+ * `+page.server.ts`.
15
+ */
16
+ export type SmrtRouteLoadKind = 'page' | 'page-server';
17
+ /**
18
+ * Navigation metadata for a package route.
19
+ */
20
+ export interface SmrtRouteNavigationMeta {
21
+ /** Label shown in app navigation. */
22
+ label: string;
23
+ /** Optional route description for menus or docs. */
24
+ description?: string;
25
+ /** Optional icon identifier. */
26
+ icon?: string;
27
+ /** Display order (lower first). */
28
+ order?: number;
29
+ /** Optional grouping key for larger menus. */
30
+ group?: string;
31
+ }
32
+ /**
33
+ * Resolved navigation entry for a mounted route.
34
+ */
35
+ export interface SmrtRouteNavigationItem {
36
+ /** Stable route identifier. */
37
+ routeId: string;
38
+ /** Link href as mounted by the consuming app. */
39
+ href: string;
40
+ /** Label shown in the app navigation. */
41
+ label: string;
42
+ /** Optional description for menu UI. */
43
+ description?: string;
44
+ /** Optional icon identifier. */
45
+ icon?: string;
46
+ /** Display order (lower first). */
47
+ order?: number;
48
+ /** Optional grouping key for larger menus. */
49
+ group?: string;
50
+ }
51
+ /**
52
+ * Package-owned route definition.
53
+ *
54
+ * @typeParam TData - Data shape the route component expects.
55
+ * @typeParam TLoadInput - Input accepted by the optional `load` helper.
56
+ * @typeParam TProps - Component props shape. Defaults to `{ data?: TData }`.
57
+ */
58
+ export interface SmrtRouteDefinition<TData = unknown, TLoadInput = unknown, TProps = {
59
+ data?: TData;
60
+ }> {
61
+ /** Stable route identifier, namespaced by package. */
62
+ id: string;
63
+ /** Human-readable page title. */
64
+ title: string;
65
+ /** Optional description for docs and tooling. */
66
+ description?: string;
67
+ /** Canonical path the package recommends by default. */
68
+ defaultPath: string;
69
+ /** Page component exported by the package. */
70
+ component: ModuleComponentType<TProps>;
71
+ /** Optional reusable load helper for app-owned route files. */
72
+ load?: (input: TLoadInput) => Promise<TData> | TData;
73
+ /** Which SvelteKit route file the `load` helper belongs in. */
74
+ loadKind?: SmrtRouteLoadKind;
75
+ /** Optional navigation metadata. */
76
+ nav?: SmrtRouteNavigationMeta;
77
+ /** Optional tags for docs, hosts, or filtering. */
78
+ tags?: string[];
79
+ }
80
+ /**
81
+ * Package-owned route module.
82
+ *
83
+ * Consumers import one of these from `@happyvertical/smrt-<pkg>/routes`, then
84
+ * mount the exported components and loaders inside their own app route tree.
85
+ *
86
+ */
87
+ export interface SmrtRouteModule {
88
+ /** Package name, usually `@happyvertical/smrt-<pkg>`. */
89
+ packageName: string;
90
+ /** Human-readable module name. */
91
+ displayName: string;
92
+ /** Optional module description. */
93
+ description?: string;
94
+ /**
95
+ * Route definitions keyed by package-local name.
96
+ *
97
+ * A heterogeneous registry: each entry is a `SmrtRouteDefinition` with its
98
+ * own `TData`/`TLoadInput`/`TProps`. `TLoadInput` sits in a contravariant
99
+ * position (`load?: (input: TLoadInput) => …`), so a concrete route
100
+ * (`SmrtRouteDefinition<Foo, Bar>`) is NOT assignable to
101
+ * `SmrtRouteDefinition<unknown, unknown, unknown>` — narrowing the params to
102
+ * `unknown` would reject every real route registration. Like
103
+ * {@link ModuleComponentType}, this is an irreducible registry `any`.
104
+ */
105
+ routes: Record<string, SmrtRouteDefinition<any, any, any>>;
106
+ }
107
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,aAAa,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB,CAClC,KAAK,GAAG,OAAO,EACf,UAAU,GAAG,OAAO,EACpB,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE;IAEzB,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACvC,+DAA+D;IAC/D,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACrD,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,oCAAoC;IACpC,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;OAUG;IAEH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;CAC5D"}