stateful-mcp 0.1.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 (126) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/config/about/dictionary.md +8 -0
  4. package/config/about/event.md +8 -0
  5. package/config/about/filter.md +9 -0
  6. package/config/about/form.md +9 -0
  7. package/config/about/log.md +9 -0
  8. package/config/about/middleware.md +18 -0
  9. package/config/about/object.md +8 -0
  10. package/config/about.config.json +37 -0
  11. package/config/examples/dictionary.md +9 -0
  12. package/config/examples/event.md +10 -0
  13. package/config/examples/filter.md +13 -0
  14. package/config/examples/form.md +23 -0
  15. package/config/examples/log.md +14 -0
  16. package/config/examples/object.md +12 -0
  17. package/config/storage.config.json +39 -0
  18. package/config/tools.config.json +14 -0
  19. package/dist/adapters/engines/dataframe-bridge.py +89 -0
  20. package/dist/index.d.ts +3 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +37412 -0
  23. package/dist/src/adapters/engines/dataframe-engine.d.ts +33 -0
  24. package/dist/src/adapters/engines/dataframe-engine.d.ts.map +1 -0
  25. package/dist/src/adapters/engines/interfaces.d.ts +11 -0
  26. package/dist/src/adapters/engines/interfaces.d.ts.map +1 -0
  27. package/dist/src/adapters/engines/memory-query.d.ts +12 -0
  28. package/dist/src/adapters/engines/memory-query.d.ts.map +1 -0
  29. package/dist/src/adapters/engines/pg-query.d.ts +16 -0
  30. package/dist/src/adapters/engines/pg-query.d.ts.map +1 -0
  31. package/dist/src/adapters/engines/sqlite-query.d.ts +16 -0
  32. package/dist/src/adapters/engines/sqlite-query.d.ts.map +1 -0
  33. package/dist/src/adapters/storage/browser-repo.d.ts +116 -0
  34. package/dist/src/adapters/storage/browser-repo.d.ts.map +1 -0
  35. package/dist/src/adapters/storage/compliance.d.ts +13 -0
  36. package/dist/src/adapters/storage/compliance.d.ts.map +1 -0
  37. package/dist/src/adapters/storage/interfaces.d.ts +134 -0
  38. package/dist/src/adapters/storage/interfaces.d.ts.map +1 -0
  39. package/dist/src/adapters/storage/jsonl-repo.d.ts +178 -0
  40. package/dist/src/adapters/storage/jsonl-repo.d.ts.map +1 -0
  41. package/dist/src/adapters/storage/memory-repo.d.ts +129 -0
  42. package/dist/src/adapters/storage/memory-repo.d.ts.map +1 -0
  43. package/dist/src/adapters/storage/pg-repo.d.ts +38 -0
  44. package/dist/src/adapters/storage/pg-repo.d.ts.map +1 -0
  45. package/dist/src/adapters/storage/sqlite-repo.d.ts +91 -0
  46. package/dist/src/adapters/storage/sqlite-repo.d.ts.map +1 -0
  47. package/dist/src/adapters/validation/references.d.ts +6 -0
  48. package/dist/src/adapters/validation/references.d.ts.map +1 -0
  49. package/dist/src/adapters/validation/runner.d.ts +28 -0
  50. package/dist/src/adapters/validation/runner.d.ts.map +1 -0
  51. package/dist/src/config/loader.d.ts +33 -0
  52. package/dist/src/config/loader.d.ts.map +1 -0
  53. package/dist/src/config/loader.js +232 -0
  54. package/dist/src/config/pagination.d.ts +44 -0
  55. package/dist/src/config/pagination.d.ts.map +1 -0
  56. package/dist/src/config/types.d.ts +152 -0
  57. package/dist/src/config/types.d.ts.map +1 -0
  58. package/dist/src/config/types.js +1 -0
  59. package/dist/src/config/validator.d.ts +3 -0
  60. package/dist/src/config/validator.d.ts.map +1 -0
  61. package/dist/src/errors/format.d.ts +8 -0
  62. package/dist/src/errors/format.d.ts.map +1 -0
  63. package/dist/src/errors/types.d.ts +32 -0
  64. package/dist/src/errors/types.d.ts.map +1 -0
  65. package/dist/src/errors/types.js +44 -0
  66. package/dist/src/middleware/dictionary/interfaces.d.ts +43 -0
  67. package/dist/src/middleware/dictionary/interfaces.d.ts.map +1 -0
  68. package/dist/src/middleware/dictionary/resolver.d.ts +47 -0
  69. package/dist/src/middleware/dictionary/resolver.d.ts.map +1 -0
  70. package/dist/src/middleware/dictionary/store.d.ts +73 -0
  71. package/dist/src/middleware/dictionary/store.d.ts.map +1 -0
  72. package/dist/src/middleware/dictionary/types.d.ts +152 -0
  73. package/dist/src/middleware/dictionary/types.d.ts.map +1 -0
  74. package/dist/src/middleware/event/store.d.ts +59 -0
  75. package/dist/src/middleware/event/store.d.ts.map +1 -0
  76. package/dist/src/middleware/event/types.d.ts +48 -0
  77. package/dist/src/middleware/event/types.d.ts.map +1 -0
  78. package/dist/src/middleware/filter/store.d.ts +44 -0
  79. package/dist/src/middleware/filter/store.d.ts.map +1 -0
  80. package/dist/src/middleware/filter/types.d.ts +65 -0
  81. package/dist/src/middleware/filter/types.d.ts.map +1 -0
  82. package/dist/src/middleware/form/store.d.ts +43 -0
  83. package/dist/src/middleware/form/store.d.ts.map +1 -0
  84. package/dist/src/middleware/form/types.d.ts +21 -0
  85. package/dist/src/middleware/form/types.d.ts.map +1 -0
  86. package/dist/src/middleware/object/schema-walker.d.ts +4 -0
  87. package/dist/src/middleware/object/schema-walker.d.ts.map +1 -0
  88. package/dist/src/middleware/object/store.d.ts +62 -0
  89. package/dist/src/middleware/object/store.d.ts.map +1 -0
  90. package/dist/src/middleware/object/types.d.ts +19 -0
  91. package/dist/src/middleware/object/types.d.ts.map +1 -0
  92. package/dist/src/services/dictionary.d.ts +2 -0
  93. package/dist/src/services/dictionary.d.ts.map +1 -0
  94. package/dist/src/services/event.d.ts +2 -0
  95. package/dist/src/services/event.d.ts.map +1 -0
  96. package/dist/src/services/filter.d.ts +2 -0
  97. package/dist/src/services/filter.d.ts.map +1 -0
  98. package/dist/src/services/form.d.ts +2 -0
  99. package/dist/src/services/form.d.ts.map +1 -0
  100. package/dist/src/services/helper.d.ts +8 -0
  101. package/dist/src/services/helper.d.ts.map +1 -0
  102. package/dist/src/services/log.d.ts +2 -0
  103. package/dist/src/services/log.d.ts.map +1 -0
  104. package/dist/src/services/object.d.ts +2 -0
  105. package/dist/src/services/object.d.ts.map +1 -0
  106. package/dist/src/translation/compiler.d.ts +3 -0
  107. package/dist/src/translation/compiler.d.ts.map +1 -0
  108. package/dist/src/translation/pipeline.d.ts +3 -0
  109. package/dist/src/translation/pipeline.d.ts.map +1 -0
  110. package/dist/src/translation/resolver.d.ts +4 -0
  111. package/dist/src/translation/resolver.d.ts.map +1 -0
  112. package/dist/src/translation/types.d.ts +32 -0
  113. package/dist/src/translation/types.d.ts.map +1 -0
  114. package/dist/src/translation/validator.d.ts +3 -0
  115. package/dist/src/translation/validator.d.ts.map +1 -0
  116. package/docs/browser.md +96 -0
  117. package/docs/config.md +498 -0
  118. package/docs/dictionary.md +37 -0
  119. package/docs/event.md +35 -0
  120. package/docs/filter.md +32 -0
  121. package/docs/log.md +54 -0
  122. package/docs/object.md +29 -0
  123. package/docs/pipeline.md +116 -0
  124. package/docs/resource_types.md +138 -0
  125. package/docs/validation_examples.md +230 -0
  126. package/package.json +91 -0
@@ -0,0 +1,129 @@
1
+ import type { OwnerScope } from "../../config/types";
2
+ import type { FilterState } from "../../middleware/filter/types";
3
+ import type { ObjectState } from "../../middleware/object/types";
4
+ import type { EventCommit } from "../../middleware/event/types";
5
+ import type { SessionFilterStore, PersistentFilterStore, PersistedFilterState, SessionObjectStore, PersistentObjectStore, PersistedObjectState, SessionEventStore, PersistentEventStore, PersistedEventState, SessionFormStore, PersistentFormStore, PersistedFormStateDetails } from "./interfaces";
6
+ import type { FormState } from "../../middleware/form/types";
7
+ export declare class MemorySessionFilterStore implements SessionFilterStore {
8
+ private store;
9
+ private aliases;
10
+ getAlias(sessionId: string, alias: string): Promise<string | null>;
11
+ setAlias(sessionId: string, alias: string, targetId: string): Promise<void>;
12
+ deleteAlias(sessionId: string, alias: string): Promise<void>;
13
+ listAliases(sessionId: string): Promise<Array<{
14
+ alias: string;
15
+ targetId: string;
16
+ }>>;
17
+ create(sessionId: string, state: Omit<FilterState, "filterId"> & {
18
+ filterId?: string;
19
+ }, alias?: string): Promise<string>;
20
+ get(sessionId: string, id: string): Promise<FilterState | null>;
21
+ set(sessionId: string, id: string, state: FilterState): Promise<void>;
22
+ delete(sessionId: string, id: string): Promise<void>;
23
+ listSession(sessionId: string): Promise<string[]>;
24
+ listChildren(sessionId: string, parentId: string): Promise<string[]>;
25
+ expireSession(sessionId: string, olderThanMs?: number): Promise<void>;
26
+ }
27
+ export declare class MemoryPersistentFilterStore implements PersistentFilterStore {
28
+ private store;
29
+ private getScopeKey;
30
+ get(id: string, scope: OwnerScope): Promise<PersistedFilterState | null>;
31
+ set(id: string, state: PersistedFilterState, scope: OwnerScope): Promise<void>;
32
+ delete(id: string, scope: OwnerScope): Promise<void>;
33
+ findByTag(tag: string, scope: OwnerScope): Promise<PersistedFilterState[]>;
34
+ list(scope: OwnerScope, includeGlobal?: boolean): Promise<Array<PersistedFilterState & {
35
+ scope: OwnerScope;
36
+ }>>;
37
+ }
38
+ export declare class MemorySessionObjectStore implements SessionObjectStore {
39
+ private store;
40
+ private aliases;
41
+ getAlias(sessionId: string, alias: string): Promise<string | null>;
42
+ setAlias(sessionId: string, alias: string, targetId: string): Promise<void>;
43
+ deleteAlias(sessionId: string, alias: string): Promise<void>;
44
+ listAliases(sessionId: string): Promise<Array<{
45
+ alias: string;
46
+ targetId: string;
47
+ }>>;
48
+ create(sessionId: string, state: Omit<ObjectState, "objectId"> & {
49
+ objectId?: string;
50
+ }, alias?: string): Promise<string>;
51
+ get(sessionId: string, id: string): Promise<ObjectState | null>;
52
+ set(sessionId: string, id: string, state: ObjectState): Promise<void>;
53
+ delete(sessionId: string, id: string): Promise<void>;
54
+ listSession(sessionId: string): Promise<string[]>;
55
+ listChildren(sessionId: string, parentId: string): Promise<string[]>;
56
+ expireSession(sessionId: string, olderThanMs?: number): Promise<void>;
57
+ }
58
+ export declare class MemoryPersistentObjectStore implements PersistentObjectStore {
59
+ private store;
60
+ private getScopeKey;
61
+ get(id: string, scope: OwnerScope): Promise<PersistedObjectState | null>;
62
+ set(id: string, state: PersistedObjectState, scope: OwnerScope): Promise<void>;
63
+ delete(id: string, scope: OwnerScope): Promise<void>;
64
+ findByTag(tag: string, scope: OwnerScope): Promise<PersistedObjectState[]>;
65
+ list(scope: OwnerScope, includeGlobal?: boolean): Promise<Array<PersistedObjectState & {
66
+ scope: OwnerScope;
67
+ }>>;
68
+ }
69
+ export declare class MemorySessionEventStore implements SessionEventStore {
70
+ private store;
71
+ private aliases;
72
+ getAlias(sessionId: string, alias: string): Promise<string | null>;
73
+ setAlias(sessionId: string, alias: string, targetId: string): Promise<void>;
74
+ deleteAlias(sessionId: string, alias: string): Promise<void>;
75
+ listAliases(sessionId: string): Promise<Array<{
76
+ alias: string;
77
+ targetId: string;
78
+ }>>;
79
+ get(sessionId: string, commitId: string): Promise<EventCommit | null>;
80
+ set(sessionId: string, commitId: string, state: EventCommit): Promise<void>;
81
+ delete(sessionId: string, commitId: string): Promise<void>;
82
+ listSession(sessionId: string): Promise<string[]>;
83
+ listChildren(sessionId: string, parentId: string): Promise<string[]>;
84
+ expireSession(sessionId: string, olderThanMs?: number): Promise<void>;
85
+ create(sessionId: string, state: Omit<EventCommit, "commitId"> & {
86
+ commitId?: string;
87
+ }, alias?: string): Promise<string>;
88
+ }
89
+ export declare class MemoryPersistentEventStore implements PersistentEventStore {
90
+ private store;
91
+ get(commitId: string, scope: OwnerScope): Promise<PersistedEventState | null>;
92
+ set(commitId: string, state: PersistedEventState, scope: OwnerScope): Promise<void>;
93
+ delete(commitId: string, scope: OwnerScope): Promise<void>;
94
+ findByTag(tag: string, scope: OwnerScope): Promise<PersistedEventState[]>;
95
+ list(scope: OwnerScope, includeGlobal?: boolean): Promise<Array<PersistedEventState & {
96
+ scope: OwnerScope;
97
+ }>>;
98
+ }
99
+ export declare class MemorySessionFormStore implements SessionFormStore {
100
+ private store;
101
+ private aliases;
102
+ getAlias(sessionId: string, alias: string): Promise<string | null>;
103
+ setAlias(sessionId: string, alias: string, targetId: string): Promise<void>;
104
+ deleteAlias(sessionId: string, alias: string): Promise<void>;
105
+ listAliases(sessionId: string): Promise<Array<{
106
+ alias: string;
107
+ targetId: string;
108
+ }>>;
109
+ create(sessionId: string, state: Omit<FormState, "formId"> & {
110
+ formId?: string;
111
+ }, alias?: string): Promise<string>;
112
+ get(sessionId: string, id: string): Promise<FormState | null>;
113
+ set(sessionId: string, id: string, state: FormState): Promise<void>;
114
+ delete(sessionId: string, id: string): Promise<void>;
115
+ listSession(sessionId: string): Promise<string[]>;
116
+ listChildren(sessionId: string, parentId: string): Promise<string[]>;
117
+ expireSession(sessionId: string, olderThanMs?: number): Promise<void>;
118
+ }
119
+ export declare class MemoryPersistentFormStore implements PersistentFormStore {
120
+ private store;
121
+ get(id: string, scope: OwnerScope): Promise<PersistedFormStateDetails | null>;
122
+ set(id: string, state: PersistedFormStateDetails, scope: OwnerScope): Promise<void>;
123
+ delete(id: string, scope: OwnerScope): Promise<void>;
124
+ findByTag(tag: string, scope: OwnerScope): Promise<PersistedFormStateDetails[]>;
125
+ list(scope: OwnerScope, includeGlobal?: boolean): Promise<Array<PersistedFormStateDetails & {
126
+ scope: OwnerScope;
127
+ }>>;
128
+ }
129
+ //# sourceMappingURL=memory-repo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-repo.d.ts","sourceRoot":"","sources":["../../../../src/adapters/storage/memory-repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { OwnerScope } from "../../config/types";
2
+ import type { FilterState } from "../../middleware/filter/types";
3
+ import type { SessionFilterStore, PersistentFilterStore, PersistedFilterState } from "./interfaces";
4
+ export declare class PgFilterStore implements SessionFilterStore, PersistentFilterStore {
5
+ private pool;
6
+ constructor(connectionString: string);
7
+ private initSchema;
8
+ get(sessionId: string, id: string): Promise<FilterState | null>;
9
+ get(id: string, scope: OwnerScope): Promise<PersistedFilterState | null>;
10
+ set(sessionId: string, id: string, state: FilterState): Promise<void>;
11
+ set(id: string, state: PersistedFilterState, scope: OwnerScope): Promise<void>;
12
+ delete(sessionId: string, id: string): Promise<void>;
13
+ delete(id: string, scope: OwnerScope): Promise<void>;
14
+ getAlias(sessionId: string, alias: string): Promise<string | null>;
15
+ setAlias(sessionId: string, alias: string, targetId: string): Promise<void>;
16
+ deleteAlias(sessionId: string, alias: string): Promise<void>;
17
+ listAliases(sessionId: string): Promise<Array<{
18
+ alias: string;
19
+ targetId: string;
20
+ }>>;
21
+ create(sessionId: string, state: Omit<FilterState, "filterId"> & {
22
+ filterId?: string;
23
+ }, alias?: string): Promise<string>;
24
+ private getSession;
25
+ private setSession;
26
+ private deleteSession;
27
+ private getPersistent;
28
+ private setPersistent;
29
+ private deletePersistent;
30
+ listSession(sessionId: string): Promise<string[]>;
31
+ listChildren(sessionId: string, parentId: string): Promise<string[]>;
32
+ expireSession(sessionId: string, olderThanMs?: number): Promise<void>;
33
+ findByTag(tag: string, scope: OwnerScope): Promise<PersistedFilterState[]>;
34
+ list(scope: OwnerScope, includeGlobal?: boolean): Promise<Array<PersistedFilterState & {
35
+ scope: OwnerScope;
36
+ }>>;
37
+ }
38
+ //# sourceMappingURL=pg-repo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-repo.d.ts","sourceRoot":"","sources":["../../../../src/adapters/storage/pg-repo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,+BAA+B,CAAC;AAClF,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAItB,qBAAa,aAAc,YAAW,kBAAkB,EAAE,qBAAqB;IAC7E,OAAO,CAAC,IAAI,CAAO;gBAEP,gBAAgB,EAAE,MAAM;YAKtB,UAAU;IAmExB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAC/D,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAWxE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQlE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAQnF,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAYhH,UAAU;YAgCV,UAAU;YA6CV,aAAa;YAiBb,aAAa;YA2Cb,aAAa;YA0Db,gBAAgB;IAkBxB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQjD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQpE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAkB1E,IAAI,CACR,KAAK,EAAE,UAAU,EACjB,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;CA4BhE"}
@@ -0,0 +1,91 @@
1
+ import type { OwnerScope } from "../../config/types";
2
+ import type { FilterState } from "../../middleware/filter/types";
3
+ import type { SessionFilterStore, PersistentFilterStore, PersistedFilterState, SessionFormStore, PersistentFormStore, PersistedFormStateDetails } from "./interfaces";
4
+ import type { FormState } from "../../middleware/form/types";
5
+ import type { ConceptStore, PersistentExpressionStore } from "../../middleware/dictionary/interfaces";
6
+ import type { Concept, Namespace, CustomExpression } from "../../middleware/dictionary/types";
7
+ export declare class SqliteFilterStore implements SessionFilterStore, PersistentFilterStore {
8
+ private db;
9
+ constructor(dbPath: string);
10
+ private initSchema;
11
+ get(sessionId: string, id: string): Promise<FilterState | null>;
12
+ get(id: string, scope: OwnerScope): Promise<PersistedFilterState | null>;
13
+ set(sessionId: string, id: string, state: FilterState): Promise<void>;
14
+ set(id: string, state: PersistedFilterState, scope: OwnerScope): Promise<void>;
15
+ delete(sessionId: string, id: string): Promise<void>;
16
+ delete(id: string, scope: OwnerScope): Promise<void>;
17
+ getAlias(sessionId: string, alias: string): Promise<string | null>;
18
+ setAlias(sessionId: string, alias: string, targetId: string): Promise<void>;
19
+ deleteAlias(sessionId: string, alias: string): Promise<void>;
20
+ listAliases(sessionId: string): Promise<Array<{
21
+ alias: string;
22
+ targetId: string;
23
+ }>>;
24
+ create(sessionId: string, state: Omit<FilterState, "filterId"> & {
25
+ filterId?: string;
26
+ }, alias?: string): Promise<string>;
27
+ private getSession;
28
+ private setSession;
29
+ private deleteSession;
30
+ private getPersistent;
31
+ private setPersistent;
32
+ private deletePersistent;
33
+ listSession(sessionId: string): Promise<string[]>;
34
+ listChildren(sessionId: string, parentId: string): Promise<string[]>;
35
+ expireSession(sessionId: string, olderThanMs?: number): Promise<void>;
36
+ findByTag(tag: string, scope: OwnerScope): Promise<PersistedFilterState[]>;
37
+ list(scope: OwnerScope, includeGlobal?: boolean): Promise<Array<PersistedFilterState & {
38
+ scope: OwnerScope;
39
+ }>>;
40
+ }
41
+ export declare class SqliteFormStore implements SessionFormStore, PersistentFormStore {
42
+ private db;
43
+ constructor(dbPath: string);
44
+ private initSchema;
45
+ get(sessionId: string, id: string): Promise<FormState | null>;
46
+ get(id: string, scope: OwnerScope): Promise<PersistedFormStateDetails | null>;
47
+ private getSession;
48
+ private getPersistent;
49
+ private loadState;
50
+ set(sessionId: string, id: string, state: FormState): Promise<void>;
51
+ set(id: string, state: PersistedFormStateDetails, scope: OwnerScope): Promise<void>;
52
+ private setSession;
53
+ private setPersistent;
54
+ delete(sessionId: string, id: string): Promise<void>;
55
+ delete(id: string, scope: OwnerScope): Promise<void>;
56
+ listSession(sessionId: string): Promise<string[]>;
57
+ listChildren(sessionId: string, parentId: string): Promise<string[]>;
58
+ expireSession(sessionId: string, olderThanMs?: number): Promise<void>;
59
+ create(sessionId: string, state: Omit<FormState, "formId"> & {
60
+ formId?: string;
61
+ }, alias?: string): Promise<string>;
62
+ getAlias(sessionId: string, alias: string): Promise<string | null>;
63
+ setAlias(sessionId: string, alias: string, targetId: string): Promise<void>;
64
+ deleteAlias(sessionId: string, alias: string): Promise<void>;
65
+ listAliases(sessionId: string): Promise<Array<{
66
+ alias: string;
67
+ targetId: string;
68
+ }>>;
69
+ findByTag(tag: string, scope: OwnerScope): Promise<PersistedFormStateDetails[]>;
70
+ list(scope: OwnerScope, includeGlobal?: boolean): Promise<Array<PersistedFormStateDetails & {
71
+ scope: OwnerScope;
72
+ }>>;
73
+ }
74
+ export declare class SqliteConceptStore implements ConceptStore {
75
+ private db;
76
+ constructor(dbPath: string);
77
+ search(query: string, namespaceCode?: string, limit?: number): Promise<Concept[]>;
78
+ getById(id: string): Promise<Concept | null>;
79
+ listNamespaces(): Promise<Namespace[]>;
80
+ addConcept(concept: Concept): Promise<void>;
81
+ addNamespace(namespace: Namespace): Promise<void>;
82
+ }
83
+ export declare class SqlitePersistentExpressionStore implements PersistentExpressionStore {
84
+ private db;
85
+ constructor(dbPath: string);
86
+ save(expression: CustomExpression, scope: OwnerScope): Promise<void>;
87
+ delete(id: string, scope: OwnerScope): Promise<void>;
88
+ list(scope: OwnerScope, includeGlobal?: boolean): Promise<CustomExpression[]>;
89
+ getById(id: string): Promise<CustomExpression | null>;
90
+ }
91
+ //# sourceMappingURL=sqlite-repo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-repo.d.ts","sourceRoot":"","sources":["../../../../src/adapters/storage/sqlite-repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function validateStateReferences(schema: any, data: any, sessionId: string, stores: {
2
+ filter?: any;
3
+ object?: any;
4
+ form?: any;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../../src/adapters/validation/references.ts"],"names":[],"mappings":"AAAA,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,GAAG,EACX,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;IACN,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GACA,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
@@ -0,0 +1,28 @@
1
+ import type { ResourceLocator } from "../../config/types";
2
+ export interface ExternalValidationResult {
3
+ valid: boolean;
4
+ errors?: string[];
5
+ }
6
+ /**
7
+ * Resolves and executes a validation_engine against a given payload.
8
+ * Supports:
9
+ * - _type: "file" — loads JSON Schema and validates with AJV
10
+ * - _type: "remote_url" — POSTs JSON payload to a remote API endpoint
11
+ *
12
+ * Expected remote API response format:
13
+ * { "valid": true }
14
+ * { "valid": false, "errors": ["reason 1", ...] }
15
+ *
16
+ * POST body format:
17
+ * {
18
+ * "serviceType": "object" | "event",
19
+ * "schemaName": string,
20
+ * "data": any // full object or full event array
21
+ * }
22
+ */
23
+ export declare function runValidationEngine(locator: ResourceLocator, payload: {
24
+ serviceType: "object" | "event";
25
+ schemaName: string;
26
+ data: any;
27
+ }, workspaceRoot: string): Promise<ExternalValidationResult>;
28
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/adapters/validation/runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAO1D,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE;IAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,EAC3E,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,wBAAwB,CAAC,CA+CnC"}
@@ -0,0 +1,33 @@
1
+ import type { ResourceLocator, MiddlewareConfig } from "./types";
2
+ export declare function loadEnvSources(sources: Array<{
3
+ _type: string;
4
+ path?: string;
5
+ optional?: boolean;
6
+ }>): Promise<void>;
7
+ export declare function substituteEnvVars(obj: unknown): unknown;
8
+ export declare function replacePlaceholders(str: string, context?: Record<string, string>): string;
9
+ export declare function resolveSource(locator: ResourceLocator, workspaceRoot: string, context?: Record<string, string>): Promise<unknown>;
10
+ export interface AdapterFactory<T> {
11
+ create(options: Record<string, unknown>): Promise<T>;
12
+ }
13
+ export declare function registerAdapter<T>(name: string, factory: AdapterFactory<T>): void;
14
+ export declare function resolveAdapter<T>(name: string, options?: Record<string, unknown>, workspaceRoot?: string): Promise<T>;
15
+ export declare function clearCache(): void;
16
+ /**
17
+ * Resolves the directory that holds the `config/` folder.
18
+ *
19
+ * Search order (explicit overrides implicit):
20
+ * 1. `--config-dir <path>` / `-c <path>` / `--config-dir=<path>` CLI flag
21
+ * 2. `STATEFUL_MCP_CONFIG_DIR` environment variable
22
+ * 3. `process.cwd()` (fallback, preserved for self-hosting convenience)
23
+ */
24
+ export declare function resolveConfigDir(argv?: string[]): string;
25
+ /**
26
+ * Loads the middleware configuration by reading and merging tools and storage configs.
27
+ * The config directory is resolved explicitly (see `resolveConfigDir`) so consumers
28
+ * can point the package at their own config rather than relying on cwd.
29
+ */
30
+ export declare function loadMiddlewareConfig(workspaceRoot?: string): Promise<MiddlewareConfig>;
31
+ export declare function resolveTextSource(locator: ResourceLocator, workspaceRoot: string, context?: Record<string, string>): Promise<string>;
32
+ export declare function resolveAboutOrExamples(locators: ResourceLocator[] | undefined, fallbackPath: string, workspaceRoot: string, context?: Record<string, string>): Promise<string>;
33
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/config/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIjE,wBAAsB,cAAc,CAClC,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAevD;AAID,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAMzF;AAKD,wBAAsB,aAAa,CACjC,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,OAAO,CAAC,CA2ClB;AAID,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACtD;AAID,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAGjF;AAED,wBAAsB,cAAc,CAAC,CAAC,EACpC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,MAAM,CAgB/E;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgD5F;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,eAAe,EAAE,GAAG,SAAS,EACvC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
@@ -0,0 +1,232 @@
1
+ // @bun
2
+ // src/config/loader.ts
3
+ import * as fs from "fs/promises";
4
+ import * as path from "path";
5
+ async function loadEnvSources(sources) {
6
+ for (const src of sources) {
7
+ if (src._type !== "file" || !src.path)
8
+ continue;
9
+ try {
10
+ const raw = await fs.readFile(src.path, "utf-8");
11
+ for (const line of raw.split(`
12
+ `)) {
13
+ const trimmed = line.trim();
14
+ if (!trimmed || trimmed.startsWith("#"))
15
+ continue;
16
+ const eq = trimmed.indexOf("=");
17
+ if (eq === -1)
18
+ continue;
19
+ const key = trimmed.slice(0, eq).trim();
20
+ const val = trimmed.slice(eq + 1).trim();
21
+ if (!(key in process.env))
22
+ process.env[key] = val;
23
+ }
24
+ } catch (err) {
25
+ if (!src.optional)
26
+ throw new Error(`Required env file not found: ${src.path}`);
27
+ }
28
+ }
29
+ }
30
+ function substituteEnvVars(obj) {
31
+ if (typeof obj === "string" && obj.startsWith("env:")) {
32
+ const key = obj.slice(4);
33
+ const val = process.env[key];
34
+ if (val === undefined)
35
+ throw new Error(`Missing env variable: ${key}`);
36
+ return val;
37
+ }
38
+ if (Array.isArray(obj))
39
+ return obj.map(substituteEnvVars);
40
+ if (obj && typeof obj === "object") {
41
+ return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, substituteEnvVars(v)]));
42
+ }
43
+ return obj;
44
+ }
45
+ function replacePlaceholders(str, context) {
46
+ if (!context)
47
+ return str;
48
+ return str.replace(/\{([^}]+)\}/g, (match, key) => {
49
+ const val = context[key];
50
+ return val !== undefined ? encodeURIComponent(val) : match;
51
+ });
52
+ }
53
+ var sourceCache = new Map;
54
+ async function resolveSource(locator, workspaceRoot, context) {
55
+ const cacheKey = JSON.stringify(locator) + (context ? `:${JSON.stringify(context)}` : "");
56
+ const ttl = locator._type !== "adapter" ? locator.ttl_ms ?? 0 : 0;
57
+ if (ttl === 0) {
58
+ const cached = sourceCache.get(cacheKey);
59
+ if (cached)
60
+ return cached.value;
61
+ } else {
62
+ const cached = sourceCache.get(cacheKey);
63
+ if (cached && Date.now() - cached.resolvedAt < ttl)
64
+ return cached.value;
65
+ }
66
+ let value;
67
+ switch (locator._type) {
68
+ case "adapter":
69
+ return resolveAdapter(locator.name, substituteEnvVars(locator.options ?? {}), workspaceRoot);
70
+ case "file": {
71
+ const finalPath = replacePlaceholders(locator.path, context);
72
+ const resolved = path.resolve(workspaceRoot, finalPath);
73
+ const raw = await fs.readFile(resolved, "utf-8");
74
+ value = substituteEnvVars(JSON.parse(raw));
75
+ break;
76
+ }
77
+ case "remote_url": {
78
+ const url = replacePlaceholders(locator.url, context);
79
+ const res = await fetch(url, { headers: locator.headers });
80
+ if (!res.ok)
81
+ throw new Error(`resolveSource fetch failed: ${url} \u2192 HTTP ${res.status}`);
82
+ value = substituteEnvVars(await res.json());
83
+ break;
84
+ }
85
+ default:
86
+ throw new Error(`Unknown ResourceLocator _type: ${locator._type}`);
87
+ }
88
+ sourceCache.set(cacheKey, { value, resolvedAt: Date.now() });
89
+ return value;
90
+ }
91
+ var registry = new Map;
92
+ function registerAdapter(name, factory) {
93
+ if (registry.has(name))
94
+ throw new Error(`Adapter already registered: "${name}"`);
95
+ registry.set(name, factory);
96
+ }
97
+ async function resolveAdapter(name, options = {}, workspaceRoot) {
98
+ if (name.startsWith("@")) {
99
+ if (!workspaceRoot)
100
+ throw new Error(`Cannot resolve path alias "${name}" without workspaceRoot`);
101
+ const rawPath = name.slice(1);
102
+ let absolutePath;
103
+ if (rawPath.startsWith("/")) {
104
+ absolutePath = rawPath;
105
+ } else if (rawPath.startsWith("~/")) {
106
+ const home = process.env["HOME"] || process.env["USERPROFILE"] || "";
107
+ absolutePath = path.join(home, rawPath.slice(2));
108
+ } else {
109
+ absolutePath = path.resolve(workspaceRoot, rawPath);
110
+ }
111
+ await import(absolutePath);
112
+ }
113
+ const factory = registry.get(name);
114
+ if (!factory)
115
+ throw new Error(`Unregistered adapter: "${name}". Did the module call registerAdapter()?`);
116
+ return factory.create(options);
117
+ }
118
+ function clearCache() {
119
+ sourceCache.clear();
120
+ }
121
+ function resolveConfigDir(argv = process.argv.slice(2)) {
122
+ for (let i = 0;i < argv.length; i++) {
123
+ const arg = argv[i];
124
+ if (arg === undefined)
125
+ continue;
126
+ if (arg === "--config-dir" || arg === "-c") {
127
+ const next = argv[i + 1];
128
+ if (next !== undefined)
129
+ return next;
130
+ }
131
+ if (arg.startsWith("--config-dir=")) {
132
+ return arg.slice("--config-dir=".length);
133
+ }
134
+ }
135
+ if (process.env.STATEFUL_MCP_CONFIG_DIR) {
136
+ return process.env.STATEFUL_MCP_CONFIG_DIR;
137
+ }
138
+ return process.cwd();
139
+ }
140
+ async function loadMiddlewareConfig(workspaceRoot) {
141
+ const resolvedRoot = workspaceRoot ?? resolveConfigDir();
142
+ const toolsPath = path.join(resolvedRoot, "config", "tools.config.json");
143
+ const storagePath = path.join(resolvedRoot, "config", "storage.config.json");
144
+ const aboutPath = path.join(resolvedRoot, "config", "about.config.json");
145
+ let toolsConfig = {};
146
+ let storageConfig = {};
147
+ let aboutConfig = {};
148
+ try {
149
+ const rawTools = await fs.readFile(toolsPath, "utf-8");
150
+ toolsConfig = JSON.parse(rawTools);
151
+ } catch (e) {
152
+ const mainPath = path.join(resolvedRoot, "filter.config.json");
153
+ try {
154
+ const rawMain = await fs.readFile(mainPath, "utf-8");
155
+ const parsedMain = JSON.parse(rawMain);
156
+ return substituteEnvVars(parsedMain);
157
+ } catch (e2) {
158
+ throw new Error(`Failed to find or parse configuration file in ${resolvedRoot}`);
159
+ }
160
+ }
161
+ try {
162
+ const rawStorage = await fs.readFile(storagePath, "utf-8");
163
+ storageConfig = JSON.parse(rawStorage);
164
+ } catch (e) {
165
+ throw new Error(`Storage configuration not found at ${storagePath}`);
166
+ }
167
+ try {
168
+ const rawAbout = await fs.readFile(aboutPath, "utf-8");
169
+ aboutConfig = JSON.parse(rawAbout);
170
+ } catch (e) {}
171
+ const merged = {
172
+ ...storageConfig,
173
+ ...aboutConfig,
174
+ tools: toolsConfig.tools || toolsConfig
175
+ };
176
+ return substituteEnvVars(merged);
177
+ }
178
+ async function resolveTextSource(locator, workspaceRoot, context) {
179
+ switch (locator._type) {
180
+ case "file": {
181
+ const finalPath = replacePlaceholders(locator.path, context);
182
+ const resolved = path.resolve(workspaceRoot, finalPath);
183
+ return await fs.readFile(resolved, "utf-8");
184
+ }
185
+ case "remote_url": {
186
+ const url = replacePlaceholders(locator.url, context);
187
+ const res = await fetch(url, { headers: locator.headers });
188
+ if (!res.ok)
189
+ throw new Error(`resolveTextSource fetch failed: ${url} \u2192 HTTP ${res.status}`);
190
+ return await res.text();
191
+ }
192
+ default:
193
+ throw new Error(`resolveTextSource only supports file and remote_url locators for raw text reading`);
194
+ }
195
+ }
196
+ async function resolveAboutOrExamples(locators, fallbackPath, workspaceRoot, context) {
197
+ if (!locators || locators.length === 0) {
198
+ try {
199
+ const defaultResolved = path.resolve(workspaceRoot, fallbackPath);
200
+ return await fs.readFile(defaultResolved, "utf-8");
201
+ } catch (_) {
202
+ return "";
203
+ }
204
+ }
205
+ const results = [];
206
+ for (const loc of locators) {
207
+ try {
208
+ const content = await resolveTextSource(loc, workspaceRoot, context);
209
+ results.push(content);
210
+ } catch (err) {
211
+ results.push(`[Error loading resource: ${err.message}]`);
212
+ }
213
+ }
214
+ return results.join(`
215
+
216
+ ---
217
+
218
+ `);
219
+ }
220
+ export {
221
+ substituteEnvVars,
222
+ resolveTextSource,
223
+ resolveSource,
224
+ resolveConfigDir,
225
+ resolveAdapter,
226
+ resolveAboutOrExamples,
227
+ replacePlaceholders,
228
+ registerAdapter,
229
+ loadMiddlewareConfig,
230
+ loadEnvSources,
231
+ clearCache
232
+ };
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import type { PaginationLimitsConfig } from "./types";
3
+ declare const SURFACES: {
4
+ readonly log_page_size: {
5
+ readonly default: 20;
6
+ readonly ceiling: 200;
7
+ };
8
+ readonly examples_page_size: {
9
+ readonly default: 5;
10
+ readonly ceiling: 50;
11
+ };
12
+ readonly merge_conflicts_page_size: {
13
+ readonly default: 50;
14
+ readonly ceiling: 500;
15
+ };
16
+ };
17
+ export type LimitKey = keyof typeof SURFACES;
18
+ /**
19
+ * Clamp a caller-supplied limit to [1, ceiling].
20
+ *
21
+ * Resolution order:
22
+ * 1. Start with the caller-requested value (if any).
23
+ * 2. Fall back to the operator-configured default (pagination_limits field).
24
+ * 3. Fall back to the built-in default.
25
+ * 4. Never exceed the hard ceiling regardless of config or caller.
26
+ */
27
+ export declare function clampLimit(requested: number | undefined, key: LimitKey, cfg: PaginationLimitsConfig | undefined): number;
28
+ /**
29
+ * Returns the effective maximum to advertise in a Zod schema (.max() / JSON Schema "maximum").
30
+ * This is the operator-configured default capped at the hard ceiling — i.e. the largest value
31
+ * a caller may request on this surface given the current configuration.
32
+ */
33
+ export declare function getMax(key: LimitKey, cfg: PaginationLimitsConfig | undefined): number;
34
+ /**
35
+ * Builds a Zod field for a caller-supplied `limit`, advertising the
36
+ * operator-configured maximum as a JSON-Schema-style bound (min/max) the way
37
+ * OpenAI function schemas do. The bounds are derived entirely from config at
38
+ * registration time — the default/ceiling numbers are never hardcoded into a
39
+ * description string, so changing `pagination_limits` in config is reflected
40
+ * automatically without touching service code.
41
+ */
42
+ export declare function buildLimitField(key: LimitKey, cfg: PaginationLimitsConfig | undefined): z.ZodOptional<z.ZodNumber>;
43
+ export {};
44
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/config/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAGtD,QAAA,MAAM,QAAQ;;;;;;;;;;;;;CAIJ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,QAAQ,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,sBAAsB,GAAG,SAAS,GACtC,MAAM,CASR;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,sBAAsB,GAAG,SAAS,GAAG,MAAM,CAErF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,sBAAsB,GAAG,SAAS,8BAWrF"}