@almadar/server 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/deepagent/__tests__/memory.test.d.ts +6 -0
  2. package/dist/deepagent/__tests__/memory.test.d.ts.map +1 -0
  3. package/dist/deepagent/__tests__/session.test.d.ts +6 -0
  4. package/dist/deepagent/__tests__/session.test.d.ts.map +1 -0
  5. package/dist/deepagent/__tests__/skill-agent.test.d.ts +6 -0
  6. package/dist/deepagent/__tests__/skill-agent.test.d.ts.map +1 -0
  7. package/dist/deepagent/memory.d.ts +17 -0
  8. package/dist/deepagent/memory.d.ts.map +1 -0
  9. package/dist/deepagent/session.d.ts +17 -0
  10. package/dist/deepagent/session.d.ts.map +1 -0
  11. package/dist/deepagent/skill-agent.d.ts +22 -0
  12. package/dist/deepagent/skill-agent.d.ts.map +1 -0
  13. package/dist/index.d.ts +35 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/lib/db.d.ts +36 -0
  16. package/dist/lib/db.d.ts.map +1 -0
  17. package/dist/lib/debugRouter.d.ts +20 -0
  18. package/dist/lib/debugRouter.d.ts.map +1 -0
  19. package/dist/lib/env.d.ts +16 -0
  20. package/dist/lib/env.d.ts.map +1 -0
  21. package/dist/lib/eventBus.d.ts +46 -0
  22. package/dist/lib/eventBus.d.ts.map +1 -0
  23. package/dist/lib/eventBusTransport.d.ts +143 -0
  24. package/dist/lib/eventBusTransport.d.ts.map +1 -0
  25. package/dist/lib/eventPersistence.d.ts +151 -0
  26. package/dist/lib/eventPersistence.d.ts.map +1 -0
  27. package/dist/lib/index.d.ts +6 -0
  28. package/dist/lib/index.d.ts.map +1 -0
  29. package/dist/lib/logger.d.ts +7 -0
  30. package/dist/lib/logger.d.ts.map +1 -0
  31. package/dist/lib/serviceDiscovery.d.ts +168 -0
  32. package/dist/lib/serviceDiscovery.d.ts.map +1 -0
  33. package/dist/lib/websocket.d.ts +41 -0
  34. package/dist/lib/websocket.d.ts.map +1 -0
  35. package/dist/middleware/__tests__/multi-user.test.d.ts +6 -0
  36. package/dist/middleware/__tests__/multi-user.test.d.ts.map +1 -0
  37. package/dist/middleware/authenticateFirebase.d.ts +4 -0
  38. package/dist/middleware/authenticateFirebase.d.ts.map +1 -0
  39. package/dist/middleware/errorHandler.d.ts +53 -0
  40. package/dist/middleware/errorHandler.d.ts.map +1 -0
  41. package/dist/middleware/index.d.ts +4 -0
  42. package/dist/middleware/index.d.ts.map +1 -0
  43. package/dist/middleware/multi-user.d.ts +34 -0
  44. package/dist/middleware/multi-user.d.ts.map +1 -0
  45. package/dist/middleware/validation.d.ts +15 -0
  46. package/dist/middleware/validation.d.ts.map +1 -0
  47. package/dist/routes/__tests__/observability.test.d.ts +6 -0
  48. package/dist/routes/__tests__/observability.test.d.ts.map +1 -0
  49. package/dist/services/DataService.d.ts +69 -0
  50. package/dist/services/DataService.d.ts.map +1 -0
  51. package/dist/services/MockDataService.d.ts +109 -0
  52. package/dist/services/MockDataService.d.ts.map +1 -0
  53. package/dist/services/index.d.ts +8 -0
  54. package/dist/services/index.d.ts.map +1 -0
  55. package/dist/stores/ChangeSetStore.d.ts +24 -0
  56. package/dist/stores/ChangeSetStore.d.ts.map +1 -0
  57. package/dist/stores/SchemaProtectionService.d.ts +23 -0
  58. package/dist/stores/SchemaProtectionService.d.ts.map +1 -0
  59. package/dist/stores/SchemaStore.d.ts +52 -0
  60. package/dist/stores/SchemaStore.d.ts.map +1 -0
  61. package/dist/stores/SnapshotStore.d.ts +26 -0
  62. package/dist/stores/SnapshotStore.d.ts.map +1 -0
  63. package/dist/stores/ValidationStore.d.ts +19 -0
  64. package/dist/stores/ValidationStore.d.ts.map +1 -0
  65. package/dist/stores/firestoreFormat.d.ts +21 -0
  66. package/dist/stores/firestoreFormat.d.ts.map +1 -0
  67. package/dist/stores/index.d.ts +14 -0
  68. package/dist/stores/index.d.ts.map +1 -0
  69. package/dist/utils/index.d.ts +9 -0
  70. package/dist/utils/index.d.ts.map +1 -0
  71. package/dist/utils/queryFilters.d.ts +77 -0
  72. package/dist/utils/queryFilters.d.ts.map +1 -0
  73. package/dist/websocket/__tests__/state-sync.test.d.ts +6 -0
  74. package/dist/websocket/__tests__/state-sync.test.d.ts.map +1 -0
  75. package/dist/websocket/state-sync.d.ts +39 -0
  76. package/dist/websocket/state-sync.d.ts.map +1 -0
  77. package/package.json +3 -3
@@ -0,0 +1,52 @@
1
+ /**
2
+ * SchemaStore - Firestore CRUD for OrbitalSchema documents
3
+ *
4
+ * Handles schema get/save/create/delete/list with caching
5
+ * and Firestore serialization.
6
+ */
7
+ import type { OrbitalSchema, StatsView, AppSummary, SaveOptions, SaveResult } from '@almadar/core';
8
+ import type { SnapshotStore } from './SnapshotStore.js';
9
+ export declare class SchemaStore {
10
+ private appsCollection;
11
+ private schemaCache;
12
+ private listCache;
13
+ private protectionService;
14
+ private snapshotStore;
15
+ constructor(appsCollection?: string);
16
+ /** Set snapshot store for auto-snapshot on destructive saves */
17
+ setSnapshotStore(store: SnapshotStore): void;
18
+ /** Get a schema by app ID */
19
+ get(uid: string, appId: string): Promise<OrbitalSchema | null>;
20
+ /**
21
+ * Save a schema (create or full replace).
22
+ *
23
+ * Features:
24
+ * - Detects destructive changes (removals)
25
+ * - Requires confirmation for critical removals
26
+ * - Auto-creates snapshots before destructive changes (if SnapshotStore attached)
27
+ */
28
+ save(uid: string, appId: string, schema: OrbitalSchema, options?: SaveOptions): Promise<SaveResult>;
29
+ /** Create a new app with initial schema */
30
+ create(uid: string, metadata: {
31
+ name: string;
32
+ description?: string;
33
+ }): Promise<{
34
+ appId: string;
35
+ schema: OrbitalSchema;
36
+ }>;
37
+ /** Delete an app */
38
+ delete(uid: string, appId: string): Promise<boolean>;
39
+ /** List all apps for a user */
40
+ list(uid: string): Promise<AppSummary[]>;
41
+ /** Compute stats from OrbitalSchema */
42
+ computeStats(schema: OrbitalSchema): StatsView;
43
+ /** Invalidate caches for a specific app */
44
+ invalidateCache(uid: string, appId: string): void;
45
+ /** Clear all caches */
46
+ clearCaches(): void;
47
+ /** Get the collection path for an app */
48
+ getAppDocPath(uid: string, appId: string): string;
49
+ /** Expose apps collection name for subcollection stores */
50
+ getAppsCollection(): string;
51
+ }
52
+ //# sourceMappingURL=SchemaStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaStore.d.ts","sourceRoot":"","sources":["../../src/stores/SchemaStore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAInG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAmE;IACtF,OAAO,CAAC,SAAS,CAAgE;IACjF,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,aAAa,CAA8B;gBAEvC,cAAc,SAAS;IAInC,gEAAgE;IAChE,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAI5C,6BAA6B;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA0BpE;;;;;;;OAOG;IACG,IAAI,CACR,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC;IA0EtB,2CAA2C;IACrC,MAAM,CACV,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC;IAuBpD,oBAAoB;IACd,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB1D,+BAA+B;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAuC9C,uCAAuC;IACvC,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS;IAqB9C,2CAA2C;IAC3C,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKjD,uBAAuB;IACvB,WAAW,IAAI,IAAI;IAKnB,yCAAyC;IACzC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjD,2DAA2D;IAC3D,iBAAiB,IAAI,MAAM;CAG5B"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * SnapshotStore - Firestore CRUD for schema snapshots
3
+ *
4
+ * Snapshots are full copies of the schema at a point in time,
5
+ * stored in subcollection: users/{uid}/apps/{appId}/snapshots/{snapshotId}
6
+ */
7
+ import type { OrbitalSchema, SnapshotDocument } from '@almadar/core';
8
+ export declare class SnapshotStore {
9
+ private appsCollection;
10
+ constructor(appsCollection?: string);
11
+ private getCollectionPath;
12
+ private getAppDocPath;
13
+ /** Create a snapshot of the current schema */
14
+ create(uid: string, appId: string, schema: OrbitalSchema, reason: string): Promise<string>;
15
+ /** Get all snapshots for an app (ordered by timestamp desc) */
16
+ getAll(uid: string, appId: string): Promise<SnapshotDocument[]>;
17
+ /** Get a specific snapshot by ID */
18
+ get(uid: string, appId: string, snapshotId: string): Promise<SnapshotDocument | null>;
19
+ /** Delete a snapshot */
20
+ delete(uid: string, appId: string, snapshotId: string): Promise<boolean>;
21
+ /** Get schema snapshot at a specific version */
22
+ getByVersion(uid: string, appId: string, version: number): Promise<OrbitalSchema | null>;
23
+ /** Get the schema from a snapshot (deserialized) */
24
+ getSchemaFromSnapshot(snapshot: SnapshotDocument): OrbitalSchema;
25
+ }
26
+ //# sourceMappingURL=SnapshotStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnapshotStore.d.ts","sourceRoot":"","sources":["../../src/stores/SnapshotStore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAe,MAAM,eAAe,CAAC;AAMlF,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAS;gBAEnB,cAAc,SAAS;IAInC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,aAAa;IAIrB,8CAA8C;IACxC,MAAM,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IA6BlB,+DAA+D;IACzD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAUrE,oCAAoC;IAC9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAO3F,wBAAwB;IAClB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B9E,gDAAgD;IAC1C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAa9F,oDAAoD;IACpD,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,aAAa;CAGjE"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ValidationStore - Firestore CRUD for validation results
3
+ *
4
+ * Validation results stored at: users/{uid}/apps/{appId}/validation/current
5
+ */
6
+ import type { ValidationResults } from '@almadar/core';
7
+ export declare class ValidationStore {
8
+ private appsCollection;
9
+ constructor(appsCollection?: string);
10
+ private getDocPath;
11
+ private getAppDocPath;
12
+ /** Save validation results */
13
+ save(uid: string, appId: string, results: ValidationResults): Promise<void>;
14
+ /** Get validation results */
15
+ get(uid: string, appId: string): Promise<ValidationResults | null>;
16
+ /** Clear validation results */
17
+ clear(uid: string, appId: string): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=ValidationStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationStore.d.ts","sourceRoot":"","sources":["../../src/stores/ValidationStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,eAAe,CAAC;AAMvE,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAS;gBAEnB,cAAc,SAAS;IAInC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAIrB,8BAA8B;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjF,6BAA6B;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAYxE,+BAA+B;IACzB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUvD"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Firestore Serialization Utilities
3
+ *
4
+ * Handles the Firestore 20-level depth limit by serializing deeply nested
5
+ * OrbitalSchema fields (orbitals, traits, services) to JSON strings.
6
+ */
7
+ import type { OrbitalSchema } from '@almadar/core';
8
+ /**
9
+ * Convert OrbitalSchema to Firestore-safe format.
10
+ *
11
+ * Serializes orbitals, traits, and services to JSON strings to avoid
12
+ * Firestore's 20-level nesting limit.
13
+ */
14
+ export declare function toFirestoreFormat(schema: OrbitalSchema): Record<string, unknown>;
15
+ /**
16
+ * Convert Firestore document back to OrbitalSchema.
17
+ *
18
+ * Deserializes JSON strings back to arrays.
19
+ */
20
+ export declare function fromFirestoreFormat(data: Record<string, unknown>): OrbitalSchema;
21
+ //# sourceMappingURL=firestoreFormat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestoreFormat.d.ts","sourceRoot":"","sources":["../../src/stores/firestoreFormat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BhF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAsChF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Stores barrel export
3
+ *
4
+ * Firestore-backed stores for OrbitalSchema, snapshots, changesets, and validation.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { toFirestoreFormat, fromFirestoreFormat } from './firestoreFormat.js';
9
+ export { SchemaStore } from './SchemaStore.js';
10
+ export { SnapshotStore } from './SnapshotStore.js';
11
+ export { ChangeSetStore } from './ChangeSetStore.js';
12
+ export { ValidationStore } from './ValidationStore.js';
13
+ export { SchemaProtectionService } from './SchemaProtectionService.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Server Utilities
3
+ *
4
+ * Reusable utility functions for Express routes and handlers.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export * from './queryFilters.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Query Filter Utilities
3
+ *
4
+ * Parses URL query parameters into Firestore-compatible filter objects.
5
+ * Supports operator encoding in parameter names: field__operator=value
6
+ *
7
+ * @example
8
+ * // URL: /api/tasks?status=active&date__gte=2025-01-01&tags__contains=urgent
9
+ * const filters = parseQueryFilters(req.query);
10
+ * // Returns:
11
+ * // [
12
+ * // { field: 'status', operator: '==', value: 'active' },
13
+ * // { field: 'date', operator: '>=', value: '2025-01-01' },
14
+ * // { field: 'tags', operator: 'array-contains', value: 'urgent' }
15
+ * // ]
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ /**
20
+ * Parsed filter ready for Firestore query
21
+ */
22
+ export interface ParsedFilter {
23
+ field: string;
24
+ operator: FirestoreWhereFilterOp;
25
+ value: unknown;
26
+ }
27
+ /**
28
+ * Firestore where filter operators
29
+ */
30
+ export type FirestoreWhereFilterOp = '==' | '!=' | '>' | '>=' | '<' | '<=' | 'array-contains' | 'array-contains-any' | 'in' | 'not-in';
31
+ /**
32
+ * Parse query parameters into Firestore-compatible filters.
33
+ *
34
+ * Supports operator encoding: field__operator=value
35
+ *
36
+ * @param query - Express req.query object
37
+ * @returns Array of parsed filters ready for Firestore .where() calls
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * // In Express route handler:
42
+ * const filters = parseQueryFilters(req.query);
43
+ *
44
+ * let query = db.collection('tasks');
45
+ * for (const filter of filters) {
46
+ * query = query.where(filter.field, filter.operator, filter.value);
47
+ * }
48
+ * ```
49
+ */
50
+ export declare function parseQueryFilters(query: Record<string, unknown>): ParsedFilter[];
51
+ /**
52
+ * Build a Firestore query with filters applied.
53
+ *
54
+ * @param collection - Base Firestore collection reference or query
55
+ * @param filters - Parsed filters from parseQueryFilters
56
+ * @returns Query with all filters applied
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const filters = parseQueryFilters(req.query);
61
+ * const baseQuery = db.collection('tasks');
62
+ * const filteredQuery = applyFiltersToQuery(baseQuery, filters);
63
+ * const snapshot = await filteredQuery.get();
64
+ * ```
65
+ */
66
+ export declare function applyFiltersToQuery<T>(collection: FirebaseFirestore.Query<T>, filters: ParsedFilter[]): FirebaseFirestore.Query<T>;
67
+ /**
68
+ * Extract pagination parameters from query
69
+ */
70
+ export interface PaginationParams {
71
+ page: number;
72
+ pageSize: number;
73
+ sortBy?: string;
74
+ sortOrder: 'asc' | 'desc';
75
+ }
76
+ export declare function extractPaginationParams(query: Record<string, unknown>, defaults?: Partial<PaginationParams>): PaginationParams;
77
+ //# sourceMappingURL=queryFilters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryFilters.d.ts","sourceRoot":"","sources":["../../src/utils/queryFilters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,sBAAsB,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAC9B,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,gBAAgB,GAChB,oBAAoB,GACpB,IAAI,GACJ,QAAQ,CAAC;AAsCb;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,YAAY,EAAE,CA0ChB;AAoCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EACtC,OAAO,EAAE,YAAY,EAAE,GACtB,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAY5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,QAAQ,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACvC,gBAAgB,CAOlB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Unit tests for state sync WebSocket handler
3
+ * @module @almadar/server/websocket/state-sync.test
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=state-sync.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-sync.test.d.ts","sourceRoot":"","sources":["../../../src/websocket/__tests__/state-sync.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * State Sync WebSocket Handler
3
+ *
4
+ * Provides real-time state synchronization using Socket.IO.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ interface Socket {
9
+ data: {
10
+ user: {
11
+ uid: string;
12
+ roles: string[];
13
+ orgId?: string;
14
+ };
15
+ };
16
+ handshake: {
17
+ auth: {
18
+ token: string;
19
+ clientId: string;
20
+ };
21
+ };
22
+ join: (room: string) => void;
23
+ leave: (room: string) => void;
24
+ on: (event: string, handler: (...args: unknown[]) => void) => void;
25
+ emit: (event: string, ...args: unknown[]) => void;
26
+ to: (room: string) => {
27
+ emit: (event: string, ...args: unknown[]) => void;
28
+ };
29
+ }
30
+ interface SocketServer {
31
+ use: (middleware: (socket: Socket, next: (err?: Error) => void) => void) => void;
32
+ on: (event: string, handler: (socket: Socket) => void) => void;
33
+ }
34
+ /**
35
+ * Set up state sync WebSocket with Firebase Auth
36
+ */
37
+ export declare function setupStateSyncWebSocket(io: SocketServer): void;
38
+ export {};
39
+ //# sourceMappingURL=state-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-sync.d.ts","sourceRoot":"","sources":["../../src/websocket/state-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,UAAU,MAAM;IACd,IAAI,EAAE;QAAE,IAAI,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACjE,SAAS,EAAE;QAAE,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACzD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClD,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;CAC7E;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC;IACjF,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;CAChE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAmE9D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/server",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Shared server infrastructure for Almadar applications",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -39,7 +39,7 @@
39
39
  "access": "public"
40
40
  },
41
41
  "dependencies": {
42
- "@almadar/agent": ">=2.0.0",
42
+ "@almadar/agent": ">=2.0.1",
43
43
  "@almadar/core": ">=2.0.0",
44
44
  "@faker-js/faker": "^9.3.0",
45
45
  "cors": "^2.8.5",
@@ -77,7 +77,7 @@
77
77
  ],
78
78
  "homepage": "https://github.com/almadar-io/almadar#readme",
79
79
  "scripts": {
80
- "build": "NODE_OPTIONS='--max-old-space-size=4096' tsup",
80
+ "build": "tsup && tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src --skipLibCheck || true",
81
81
  "build:watch": "tsup --watch",
82
82
  "lint": "eslint src/",
83
83
  "typecheck": "tsc --noEmit",