atabey 0.1.1-beta → 0.1.2

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 (229) hide show
  1. package/README.md +144 -78
  2. package/dist/atabey/src/cli/commands/coverage.js +17 -12
  3. package/dist/atabey/src/cli/commands/coverage.js.map +1 -1
  4. package/dist/atabey/src/cli/commands/lint.d.ts +2 -1
  5. package/dist/atabey/src/cli/commands/lint.js +20 -1
  6. package/dist/atabey/src/cli/commands/lint.js.map +1 -1
  7. package/dist/atabey/src/cli/commands/mcp.js +56 -23
  8. package/dist/atabey/src/cli/commands/mcp.js.map +1 -1
  9. package/dist/atabey/src/cli/commands/orchestrate.d.ts +6 -6
  10. package/dist/shared/src/agent-identity.d.ts +1 -34
  11. package/dist/shared/src/agent-identity.js +1 -76
  12. package/dist/shared/src/agent-identity.js.map +1 -1
  13. package/dist/shared/src/api-catalog.d.ts +1 -57
  14. package/dist/shared/src/api-catalog.js +1 -253
  15. package/dist/shared/src/api-catalog.js.map +1 -1
  16. package/dist/shared/src/audit-chain.d.ts +1 -80
  17. package/dist/shared/src/audit-chain.js +1 -261
  18. package/dist/shared/src/audit-chain.js.map +1 -1
  19. package/dist/shared/src/audit.d.ts +1 -121
  20. package/dist/shared/src/audit.js +1 -321
  21. package/dist/shared/src/audit.js.map +1 -1
  22. package/dist/shared/src/constants.d.ts +1 -150
  23. package/dist/shared/src/constants.js +1 -211
  24. package/dist/shared/src/constants.js.map +1 -1
  25. package/dist/shared/src/database.d.ts +1 -6
  26. package/dist/shared/src/database.js +1 -15
  27. package/dist/shared/src/database.js.map +1 -1
  28. package/dist/shared/src/errors.d.ts +1 -46
  29. package/dist/shared/src/errors.js +1 -68
  30. package/dist/shared/src/errors.js.map +1 -1
  31. package/dist/shared/src/file-lock.d.ts +1 -93
  32. package/dist/shared/src/file-lock.js +1 -239
  33. package/dist/shared/src/file-lock.js.map +1 -1
  34. package/dist/shared/src/fs.d.ts +1 -9
  35. package/dist/shared/src/fs.js +1 -53
  36. package/dist/shared/src/fs.js.map +1 -1
  37. package/dist/shared/src/index.d.ts +2 -31
  38. package/dist/shared/src/index.js +2 -31
  39. package/dist/shared/src/index.js.map +1 -1
  40. package/dist/shared/src/job-queue.d.ts +1 -76
  41. package/dist/shared/src/job-queue.js +1 -199
  42. package/dist/shared/src/job-queue.js.map +1 -1
  43. package/dist/shared/src/lock.d.ts +1 -82
  44. package/dist/shared/src/lock.js +1 -158
  45. package/dist/shared/src/lock.js.map +1 -1
  46. package/dist/shared/src/logger.d.ts +1 -31
  47. package/dist/shared/src/logger.js +1 -152
  48. package/dist/shared/src/logger.js.map +1 -1
  49. package/dist/shared/src/memory-prune.d.ts +1 -18
  50. package/dist/shared/src/memory-prune.js +1 -47
  51. package/dist/shared/src/memory-prune.js.map +1 -1
  52. package/dist/shared/src/migrations.d.ts +1 -69
  53. package/dist/shared/src/migrations.js +1 -393
  54. package/dist/shared/src/migrations.js.map +1 -1
  55. package/dist/shared/src/modules/agent/agent-identity.d.ts +34 -0
  56. package/dist/shared/src/modules/agent/agent-identity.js +77 -0
  57. package/dist/shared/src/modules/agent/agent-identity.js.map +1 -0
  58. package/dist/shared/src/modules/agent/api-catalog.d.ts +57 -0
  59. package/dist/shared/src/modules/agent/api-catalog.js +254 -0
  60. package/dist/shared/src/modules/agent/api-catalog.js.map +1 -0
  61. package/dist/shared/src/modules/agent/index.d.ts +3 -0
  62. package/dist/shared/src/modules/agent/index.js +4 -0
  63. package/dist/shared/src/modules/agent/index.js.map +1 -0
  64. package/dist/shared/src/modules/agent/tokenizer.d.ts +54 -0
  65. package/dist/shared/src/modules/agent/tokenizer.js +272 -0
  66. package/dist/shared/src/modules/agent/tokenizer.js.map +1 -0
  67. package/dist/shared/src/modules/concurrency/file-lock.d.ts +93 -0
  68. package/dist/shared/src/modules/concurrency/file-lock.js +240 -0
  69. package/dist/shared/src/modules/concurrency/file-lock.js.map +1 -0
  70. package/dist/shared/src/modules/concurrency/index.d.ts +6 -0
  71. package/dist/shared/src/modules/concurrency/index.js +7 -0
  72. package/dist/shared/src/modules/concurrency/index.js.map +1 -0
  73. package/dist/shared/src/modules/concurrency/job-queue.d.ts +76 -0
  74. package/dist/shared/src/modules/concurrency/job-queue.js +200 -0
  75. package/dist/shared/src/modules/concurrency/job-queue.js.map +1 -0
  76. package/dist/shared/src/modules/concurrency/lock.d.ts +82 -0
  77. package/dist/shared/src/modules/concurrency/lock.js +159 -0
  78. package/dist/shared/src/modules/concurrency/lock.js.map +1 -0
  79. package/dist/shared/src/modules/concurrency/resilience.d.ts +84 -0
  80. package/dist/shared/src/modules/concurrency/resilience.js +217 -0
  81. package/dist/shared/src/modules/concurrency/resilience.js.map +1 -0
  82. package/dist/shared/src/modules/concurrency/worker-pool.d.ts +52 -0
  83. package/dist/shared/src/modules/concurrency/worker-pool.js +229 -0
  84. package/dist/shared/src/modules/concurrency/worker-pool.js.map +1 -0
  85. package/dist/shared/src/modules/concurrency/worker-thread.d.ts +21 -0
  86. package/dist/shared/src/modules/concurrency/worker-thread.js +67 -0
  87. package/dist/shared/src/modules/concurrency/worker-thread.js.map +1 -0
  88. package/dist/shared/src/modules/index.d.ts +14 -0
  89. package/dist/shared/src/modules/index.js +15 -0
  90. package/dist/shared/src/modules/index.js.map +1 -0
  91. package/dist/shared/src/modules/observability/audit-chain.d.ts +80 -0
  92. package/dist/shared/src/modules/observability/audit-chain.js +262 -0
  93. package/dist/shared/src/modules/observability/audit-chain.js.map +1 -0
  94. package/dist/shared/src/modules/observability/audit.d.ts +121 -0
  95. package/dist/shared/src/modules/observability/audit.js +322 -0
  96. package/dist/shared/src/modules/observability/audit.js.map +1 -0
  97. package/dist/shared/src/modules/observability/index.d.ts +4 -0
  98. package/dist/shared/src/modules/observability/index.js +5 -0
  99. package/dist/shared/src/modules/observability/index.js.map +1 -0
  100. package/dist/shared/src/modules/observability/logger.d.ts +31 -0
  101. package/dist/shared/src/modules/observability/logger.js +153 -0
  102. package/dist/shared/src/modules/observability/logger.js.map +1 -0
  103. package/dist/shared/src/modules/observability/otel.d.ts +39 -0
  104. package/dist/shared/src/modules/observability/otel.js +93 -0
  105. package/dist/shared/src/modules/observability/otel.js.map +1 -0
  106. package/dist/shared/src/modules/primitives/constants.d.ts +150 -0
  107. package/dist/shared/src/modules/primitives/constants.js +212 -0
  108. package/dist/shared/src/modules/primitives/constants.js.map +1 -0
  109. package/dist/shared/src/modules/primitives/errors.d.ts +46 -0
  110. package/dist/shared/src/modules/primitives/errors.js +69 -0
  111. package/dist/shared/src/modules/primitives/errors.js.map +1 -0
  112. package/dist/shared/src/modules/primitives/fs.d.ts +9 -0
  113. package/dist/shared/src/modules/primitives/fs.js +54 -0
  114. package/dist/shared/src/modules/primitives/fs.js.map +1 -0
  115. package/dist/shared/src/modules/primitives/index.d.ts +7 -0
  116. package/dist/shared/src/modules/primitives/index.js +8 -0
  117. package/dist/shared/src/modules/primitives/index.js.map +1 -0
  118. package/dist/shared/src/modules/primitives/outbound-http.d.ts +32 -0
  119. package/dist/shared/src/modules/primitives/outbound-http.js +88 -0
  120. package/dist/shared/src/modules/primitives/outbound-http.js.map +1 -0
  121. package/dist/shared/src/modules/primitives/string.d.ts +1 -0
  122. package/dist/shared/src/modules/primitives/string.js +30 -0
  123. package/dist/shared/src/modules/primitives/string.js.map +1 -0
  124. package/dist/shared/src/modules/primitives/time.d.ts +5 -0
  125. package/dist/shared/src/modules/primitives/time.js +35 -0
  126. package/dist/shared/src/modules/primitives/time.js.map +1 -0
  127. package/dist/shared/src/modules/primitives/types.d.ts +27 -0
  128. package/dist/shared/src/modules/primitives/types.js +17 -0
  129. package/dist/shared/src/modules/primitives/types.js.map +1 -0
  130. package/dist/shared/src/modules/sandbox/index.d.ts +3 -0
  131. package/dist/shared/src/modules/sandbox/index.js +4 -0
  132. package/dist/shared/src/modules/sandbox/index.js.map +1 -0
  133. package/dist/shared/src/modules/sandbox/sandbox-fs.d.ts +28 -0
  134. package/dist/shared/src/modules/sandbox/sandbox-fs.js +143 -0
  135. package/dist/shared/src/modules/sandbox/sandbox-fs.js.map +1 -0
  136. package/dist/shared/src/modules/sandbox/sandbox-runtime.d.ts +78 -0
  137. package/dist/shared/src/modules/sandbox/sandbox-runtime.js +282 -0
  138. package/dist/shared/src/modules/sandbox/sandbox-runtime.js.map +1 -0
  139. package/dist/shared/src/modules/sandbox/sandbox.d.ts +54 -0
  140. package/dist/shared/src/modules/sandbox/sandbox.js +179 -0
  141. package/dist/shared/src/modules/sandbox/sandbox.js.map +1 -0
  142. package/dist/shared/src/modules/security/index.d.ts +5 -0
  143. package/dist/shared/src/modules/security/index.js +6 -0
  144. package/dist/shared/src/modules/security/index.js.map +1 -0
  145. package/dist/shared/src/modules/security/pii.d.ts +70 -0
  146. package/dist/shared/src/modules/security/pii.js +276 -0
  147. package/dist/shared/src/modules/security/pii.js.map +1 -0
  148. package/dist/shared/src/modules/security/policy-gate.d.ts +42 -0
  149. package/dist/shared/src/modules/security/policy-gate.js +172 -0
  150. package/dist/shared/src/modules/security/policy-gate.js.map +1 -0
  151. package/dist/shared/src/modules/security/retention.d.ts +68 -0
  152. package/dist/shared/src/modules/security/retention.js +218 -0
  153. package/dist/shared/src/modules/security/retention.js.map +1 -0
  154. package/dist/shared/src/modules/security/secrets.d.ts +99 -0
  155. package/dist/shared/src/modules/security/secrets.js +371 -0
  156. package/dist/shared/src/modules/security/secrets.js.map +1 -0
  157. package/dist/shared/src/modules/security/tls.d.ts +87 -0
  158. package/dist/shared/src/modules/security/tls.js +154 -0
  159. package/dist/shared/src/modules/security/tls.js.map +1 -0
  160. package/dist/shared/src/modules/storage/database.d.ts +6 -0
  161. package/dist/shared/src/modules/storage/database.js +16 -0
  162. package/dist/shared/src/modules/storage/database.js.map +1 -0
  163. package/dist/shared/src/modules/storage/index.d.ts +4 -0
  164. package/dist/shared/src/modules/storage/index.js +5 -0
  165. package/dist/shared/src/modules/storage/index.js.map +1 -0
  166. package/dist/shared/src/modules/storage/memory-prune.d.ts +18 -0
  167. package/dist/shared/src/modules/storage/memory-prune.js +48 -0
  168. package/dist/shared/src/modules/storage/memory-prune.js.map +1 -0
  169. package/dist/shared/src/modules/storage/migrations.d.ts +69 -0
  170. package/dist/shared/src/modules/storage/migrations.js +394 -0
  171. package/dist/shared/src/modules/storage/migrations.js.map +1 -0
  172. package/dist/shared/src/modules/storage/storage.d.ts +341 -0
  173. package/dist/shared/src/modules/storage/storage.js +1004 -0
  174. package/dist/shared/src/modules/storage/storage.js.map +1 -0
  175. package/dist/shared/src/otel.d.ts +1 -39
  176. package/dist/shared/src/otel.js +1 -92
  177. package/dist/shared/src/otel.js.map +1 -1
  178. package/dist/shared/src/outbound-http.d.ts +1 -32
  179. package/dist/shared/src/outbound-http.js +1 -87
  180. package/dist/shared/src/outbound-http.js.map +1 -1
  181. package/dist/shared/src/pii.d.ts +1 -70
  182. package/dist/shared/src/pii.js +1 -275
  183. package/dist/shared/src/pii.js.map +1 -1
  184. package/dist/shared/src/policy-gate.d.ts +1 -42
  185. package/dist/shared/src/policy-gate.js +1 -171
  186. package/dist/shared/src/policy-gate.js.map +1 -1
  187. package/dist/shared/src/resilience.d.ts +1 -84
  188. package/dist/shared/src/resilience.js +1 -216
  189. package/dist/shared/src/resilience.js.map +1 -1
  190. package/dist/shared/src/retention.d.ts +1 -68
  191. package/dist/shared/src/retention.js +1 -217
  192. package/dist/shared/src/retention.js.map +1 -1
  193. package/dist/shared/src/sandbox-fs.d.ts +1 -28
  194. package/dist/shared/src/sandbox-fs.js +1 -142
  195. package/dist/shared/src/sandbox-fs.js.map +1 -1
  196. package/dist/shared/src/sandbox-runtime.d.ts +1 -78
  197. package/dist/shared/src/sandbox-runtime.js +1 -281
  198. package/dist/shared/src/sandbox-runtime.js.map +1 -1
  199. package/dist/shared/src/sandbox.d.ts +1 -54
  200. package/dist/shared/src/sandbox.js +1 -178
  201. package/dist/shared/src/sandbox.js.map +1 -1
  202. package/dist/shared/src/secrets.d.ts +1 -99
  203. package/dist/shared/src/secrets.js +1 -370
  204. package/dist/shared/src/secrets.js.map +1 -1
  205. package/dist/shared/src/storage.d.ts +1 -341
  206. package/dist/shared/src/storage.js +1 -1003
  207. package/dist/shared/src/storage.js.map +1 -1
  208. package/dist/shared/src/string.d.ts +1 -1
  209. package/dist/shared/src/string.js +1 -29
  210. package/dist/shared/src/string.js.map +1 -1
  211. package/dist/shared/src/time.d.ts +1 -5
  212. package/dist/shared/src/time.js +1 -34
  213. package/dist/shared/src/time.js.map +1 -1
  214. package/dist/shared/src/tls.d.ts +1 -87
  215. package/dist/shared/src/tls.js +1 -153
  216. package/dist/shared/src/tls.js.map +1 -1
  217. package/dist/shared/src/tokenizer.d.ts +1 -54
  218. package/dist/shared/src/tokenizer.js +1 -271
  219. package/dist/shared/src/tokenizer.js.map +1 -1
  220. package/dist/shared/src/types.d.ts +1 -27
  221. package/dist/shared/src/types.js +1 -16
  222. package/dist/shared/src/types.js.map +1 -1
  223. package/dist/shared/src/worker-pool.d.ts +1 -52
  224. package/dist/shared/src/worker-pool.js +1 -228
  225. package/dist/shared/src/worker-pool.js.map +1 -1
  226. package/dist/shared/src/worker-thread.d.ts +1 -21
  227. package/dist/shared/src/worker-thread.js +1 -66
  228. package/dist/shared/src/worker-thread.js.map +1 -1
  229. package/package.json +4 -4
@@ -1,200 +1,2 @@
1
- /**
2
- * Job Queue — concurrency-limited async work dispatcher backed by SQLite database persistence.
3
- *
4
- * Prevents unbounded parallel LLM / agent work from ballooning memory
5
- * or starving the main event loop. Job lifecycles (pending, running, completed, failed)
6
- * are recorded in the database when initialized, providing persistence and auditability.
7
- */
8
- import os from "os";
9
- import { databaseHolder } from "./database.js";
10
- export class JobQueue {
11
- maxConcurrency;
12
- name;
13
- onError;
14
- pending = [];
15
- running = 0;
16
- nextId = 1;
17
- completed = 0;
18
- failed = 0;
19
- closed = false;
20
- constructor(options = {}) {
21
- const cpus = Math.max(1, os.cpus()?.length || 1);
22
- const requested = options.maxConcurrency ?? cpus;
23
- this.maxConcurrency = Math.max(1, Math.min(requested, 16));
24
- this.name = options.name ?? "default";
25
- this.onError = options.onError;
26
- }
27
- /**
28
- * Enqueue an async job. Resolves/rejects with the job result.
29
- * Back-pressures via wait in the queue — does not spawn unbounded work.
30
- * If SQLite is initialized, records job creation in the database.
31
- */
32
- enqueue(fn, options) {
33
- if (this.closed) {
34
- return Promise.reject(new Error(`[JobQueue:${this.name}] Queue is closed; cannot accept new jobs.`));
35
- }
36
- let dbId;
37
- if (databaseHolder.hasDB()) {
38
- try {
39
- const db = databaseHolder.getDB();
40
- const payloadStr = typeof options?.payload === "string"
41
- ? options.payload
42
- : JSON.stringify(options?.payload ?? null);
43
- const res = db.prepare(`INSERT INTO job_queue (queue_name, payload, status, retries, max_retries, created_at, updated_at)
44
- VALUES (?, ?, 'pending', 0, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)`).run(this.name, payloadStr, options?.maxRetries ?? 3);
45
- dbId = Number(res.lastInsertRowid);
46
- }
47
- catch {
48
- // Table might not exist yet if running pre-migration
49
- }
50
- }
51
- return new Promise((resolve, reject) => {
52
- const item = {
53
- id: this.nextId++,
54
- dbId,
55
- run: fn,
56
- resolve,
57
- reject,
58
- };
59
- this.pending.push(item);
60
- this.pump();
61
- });
62
- }
63
- /** Retrieve a job record from the database by ID. */
64
- getJobRecord(id) {
65
- if (!databaseHolder.hasDB())
66
- return null;
67
- try {
68
- const db = databaseHolder.getDB();
69
- return db.prepare("SELECT * FROM job_queue WHERE id = ?").get(id) || null;
70
- }
71
- catch {
72
- return null;
73
- }
74
- }
75
- /** Retrieve job records from the database for this queue. */
76
- getQueueRecords(status, limit = 50) {
77
- if (!databaseHolder.hasDB())
78
- return [];
79
- try {
80
- const db = databaseHolder.getDB();
81
- if (status) {
82
- return db.prepare("SELECT * FROM job_queue WHERE queue_name = ? AND status = ? ORDER BY id DESC LIMIT ?").all(this.name, status, limit);
83
- }
84
- return db.prepare("SELECT * FROM job_queue WHERE queue_name = ? ORDER BY id DESC LIMIT ?").all(this.name, limit);
85
- }
86
- catch {
87
- return [];
88
- }
89
- }
90
- /** Current queue diagnostics. */
91
- getStats() {
92
- return {
93
- name: this.name,
94
- maxConcurrency: this.maxConcurrency,
95
- running: this.running,
96
- pending: this.pending.length,
97
- completed: this.completed,
98
- failed: this.failed,
99
- };
100
- }
101
- /** Reject pending jobs and stop accepting new ones. In-flight jobs finish. */
102
- close(reason = "Queue closed") {
103
- this.closed = true;
104
- while (this.pending.length > 0) {
105
- const item = this.pending.shift();
106
- item?.reject(new Error(`[JobQueue:${this.name}] ${reason}`));
107
- }
108
- }
109
- /** Wait until running + pending reach zero (or timeout). */
110
- async drain(timeoutMs = 30_000) {
111
- const start = Date.now();
112
- while (this.running > 0 || this.pending.length > 0) {
113
- if (Date.now() - start > timeoutMs) {
114
- throw new Error(`[JobQueue:${this.name}] drain timed out after ${timeoutMs}ms`);
115
- }
116
- await new Promise((r) => setTimeout(r, 10));
117
- }
118
- }
119
- pump() {
120
- while (this.running < this.maxConcurrency && this.pending.length > 0) {
121
- const item = this.pending.shift();
122
- if (!item)
123
- break;
124
- this.running++;
125
- void this.execute(item);
126
- }
127
- }
128
- async execute(item) {
129
- if (item.dbId && databaseHolder.hasDB()) {
130
- try {
131
- const db = databaseHolder.getDB();
132
- db.prepare("UPDATE job_queue SET status = 'running', updated_at = CURRENT_TIMESTAMP WHERE id = ?").run(item.dbId);
133
- }
134
- catch {
135
- // Ignore DB error during execution transition
136
- }
137
- }
138
- try {
139
- const result = await item.run();
140
- this.completed++;
141
- if (item.dbId && databaseHolder.hasDB()) {
142
- try {
143
- const db = databaseHolder.getDB();
144
- db.prepare("UPDATE job_queue SET status = 'completed', updated_at = CURRENT_TIMESTAMP WHERE id = ?").run(item.dbId);
145
- }
146
- catch {
147
- // Ignore DB error
148
- }
149
- }
150
- item.resolve(result);
151
- }
152
- catch (error) {
153
- this.failed++;
154
- if (item.dbId && databaseHolder.hasDB()) {
155
- try {
156
- const db = databaseHolder.getDB();
157
- const errMsg = error instanceof Error ? error.message : String(error);
158
- db.prepare("UPDATE job_queue SET status = 'failed', error_message = ?, retries = retries + 1, updated_at = CURRENT_TIMESTAMP WHERE id = ?").run(errMsg, item.dbId);
159
- }
160
- catch {
161
- // Ignore DB error
162
- }
163
- }
164
- try {
165
- this.onError?.(error, item.id);
166
- }
167
- catch {
168
- // ignore listener errors
169
- }
170
- item.reject(error);
171
- }
172
- finally {
173
- this.running--;
174
- this.pump();
175
- }
176
- }
177
- }
178
- /** Backward compatibility alias */
179
- export { JobQueue as InMemoryJobQueue };
180
- /** Shared singleton for agent orchestration (lazy). */
181
- let agentJobQueue = null;
182
- export function getAgentJobQueue(options) {
183
- if (!agentJobQueue) {
184
- const fromEnv = process.env.ATABEY_JOB_CONCURRENCY
185
- ? parseInt(process.env.ATABEY_JOB_CONCURRENCY, 10)
186
- : undefined;
187
- agentJobQueue = new JobQueue({
188
- name: "agent",
189
- maxConcurrency: options?.maxConcurrency ?? (Number.isFinite(fromEnv) ? fromEnv : undefined),
190
- onError: options?.onError,
191
- });
192
- }
193
- return agentJobQueue;
194
- }
195
- /** Test helper — reset singleton. */
196
- export function resetAgentJobQueue() {
197
- agentJobQueue?.close("reset");
198
- agentJobQueue = null;
199
- }
1
+ export * from "./modules/concurrency/job-queue.js";
200
2
  //# sourceMappingURL=job-queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"job-queue.js","sourceRoot":"","sources":["../../../../shared/src/job-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job-queue.js","sourceRoot":"","sources":["../../../../shared/src/job-queue.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC"}
@@ -1,82 +1 @@
1
- /**
2
- * [LOCK] Multi-user Distributed Lock Mechanism
3
- *
4
- * Git-based lock system. Enables team members to work on the same
5
- * files/resources without conflicts.
6
- *
7
- * Usage:
8
- * const lock = new DistributedLock("database/schema.sql");
9
- * if (lock.acquire("user-123", 60000)) {
10
- * // Apply changes
11
- * lock.release("user-123");
12
- * }
13
- */
14
- export type LockStatus = "LOCKED" | "AVAILABLE" | "STALE" | "EXPIRED";
15
- export interface LockInfo {
16
- resource: string;
17
- ownerId: string;
18
- ownerName: string;
19
- acquiredAt: string;
20
- expiresAt: string;
21
- reason: string;
22
- traceId?: string;
23
- }
24
- export declare class DistributedLock {
25
- private static TABLE;
26
- /**
27
- * Initialize the locks table (run once at startup).
28
- */
29
- static initialize(): void;
30
- /**
31
- * Attempts to acquire a lock on a resource.
32
- *
33
- * @param resource - Lock resource name (e.g., "apps/backend/src/types/user.ts")
34
- * @param ownerId - Unique owner identifier (e.g., "yusuf", "ci-bot-01")
35
- * @param options - Optional parameters
36
- * @returns true if lock acquired, false if already locked
37
- */
38
- static acquire(resource: string, ownerId: string, options?: {
39
- ownerName?: string;
40
- ttlMs?: number;
41
- reason?: string;
42
- traceId?: string;
43
- force?: boolean;
44
- }): boolean;
45
- /**
46
- * Releases a lock. Only the lock owner can release.
47
- *
48
- * @param resource - Lock resource name
49
- * @param ownerId - Owner identifier for verification
50
- * @returns true if released successfully
51
- */
52
- static release(resource: string, ownerId: string): boolean;
53
- /**
54
- * Checks if a resource is locked.
55
- */
56
- static isLocked(resource: string): boolean;
57
- /**
58
- * Gets lock information for a resource.
59
- */
60
- static getLock(resource: string): LockInfo | null;
61
- /**
62
- * Lists all active locks.
63
- */
64
- static listActiveLocks(): LockInfo[];
65
- /**
66
- * Lists all locks owned by a specific owner.
67
- */
68
- static listOwnerLocks(ownerId: string): LockInfo[];
69
- /**
70
- * Releases all locks owned by a specific owner (e.g., on disconnect).
71
- */
72
- static releaseAllByOwner(ownerId: string): number;
73
- /**
74
- * Releases all expired/stale locks.
75
- */
76
- private static releaseStaleLocks;
77
- /**
78
- * Generates a unique owner ID for the current user/machine.
79
- * Uses git config user.name or hostname as fallback.
80
- */
81
- static getLocalOwnerId(): string;
82
- }
1
+ export * from "./modules/concurrency/lock.js";
@@ -1,159 +1,2 @@
1
- /**
2
- * [LOCK] Multi-user Distributed Lock Mechanism
3
- *
4
- * Git-based lock system. Enables team members to work on the same
5
- * files/resources without conflicts.
6
- *
7
- * Usage:
8
- * const lock = new DistributedLock("database/schema.sql");
9
- * if (lock.acquire("user-123", 60000)) {
10
- * // Apply changes
11
- * lock.release("user-123");
12
- * }
13
- */
14
- import { execSync } from "child_process";
15
- import os from "os";
16
- import { databaseHolder } from "./database.js";
17
- export class DistributedLock {
18
- static TABLE = "distributed_locks";
19
- /**
20
- * Initialize the locks table (run once at startup).
21
- */
22
- static initialize() {
23
- const db = databaseHolder.getDB();
24
- db.exec(`
25
- CREATE TABLE IF NOT EXISTS ${this.TABLE} (
26
- resource TEXT PRIMARY KEY,
27
- ownerId TEXT NOT NULL,
28
- ownerName TEXT NOT NULL,
29
- acquiredAt TEXT NOT NULL,
30
- expiresAt TEXT NOT NULL,
31
- reason TEXT,
32
- traceId TEXT
33
- )
34
- `);
35
- }
36
- /**
37
- * Attempts to acquire a lock on a resource.
38
- *
39
- * @param resource - Lock resource name (e.g., "apps/backend/src/types/user.ts")
40
- * @param ownerId - Unique owner identifier (e.g., "yusuf", "ci-bot-01")
41
- * @param options - Optional parameters
42
- * @returns true if lock acquired, false if already locked
43
- */
44
- static acquire(resource, ownerId, options = {}) {
45
- const db = databaseHolder.getDB();
46
- const now = new Date();
47
- const expiresAt = new Date(now.getTime() + (options.ttlMs || 60000)).toISOString();
48
- const ownerName = options.ownerName || ownerId;
49
- const reason = options.reason || "No reason provided";
50
- // Clean up stale locks first
51
- this.releaseStaleLocks();
52
- // If force=true, override existing lock directly using INSERT OR REPLACE
53
- if (options.force) {
54
- db.prepare(`
55
- INSERT OR REPLACE INTO ${this.TABLE} (resource, ownerId, ownerName, acquiredAt, expiresAt, reason, traceId)
56
- VALUES (?, ?, ?, ?, ?, ?, ?)
57
- `).run(resource, ownerId, ownerName, now.toISOString(), expiresAt, reason, options.traceId || null);
58
- return true;
59
- }
60
- // Acquire new lock atomically using INSERT OR IGNORE.
61
- // If the resource is already locked, changes will be 0.
62
- const result = db.prepare(`
63
- INSERT OR IGNORE INTO ${this.TABLE} (resource, ownerId, ownerName, acquiredAt, expiresAt, reason, traceId)
64
- VALUES (?, ?, ?, ?, ?, ?, ?)
65
- `).run(resource, ownerId, ownerName, now.toISOString(), expiresAt, reason, options.traceId || null);
66
- return result.changes > 0;
67
- }
68
- /**
69
- * Releases a lock. Only the lock owner can release.
70
- *
71
- * @param resource - Lock resource name
72
- * @param ownerId - Owner identifier for verification
73
- * @returns true if released successfully
74
- */
75
- static release(resource, ownerId) {
76
- const db = databaseHolder.getDB();
77
- const result = db.prepare(`DELETE FROM ${this.TABLE} WHERE resource = ? AND ownerId = ?`).run(resource, ownerId);
78
- return result.changes > 0;
79
- }
80
- /**
81
- * Checks if a resource is locked.
82
- */
83
- static isLocked(resource) {
84
- const db = databaseHolder.getDB();
85
- const nowIso = new Date().toISOString();
86
- const lock = db.prepare(`SELECT * FROM ${this.TABLE} WHERE resource = ? AND expiresAt > ?`).get(resource, nowIso);
87
- return !!lock;
88
- }
89
- /**
90
- * Gets lock information for a resource.
91
- */
92
- static getLock(resource) {
93
- const db = databaseHolder.getDB();
94
- this.releaseStaleLocks();
95
- const lock = db.prepare(`SELECT * FROM ${this.TABLE} WHERE resource = ?`).get(resource);
96
- return lock || null;
97
- }
98
- /**
99
- * Lists all active locks.
100
- */
101
- static listActiveLocks() {
102
- const db = databaseHolder.getDB();
103
- this.releaseStaleLocks();
104
- const nowIso = new Date().toISOString();
105
- return db.prepare(`SELECT * FROM ${this.TABLE} WHERE expiresAt > ? ORDER BY acquiredAt DESC`).all(nowIso);
106
- }
107
- /**
108
- * Lists all locks owned by a specific owner.
109
- */
110
- static listOwnerLocks(ownerId) {
111
- const db = databaseHolder.getDB();
112
- return db.prepare(`SELECT * FROM ${this.TABLE} WHERE ownerId = ? ORDER BY acquiredAt DESC`).all(ownerId);
113
- }
114
- /**
115
- * Releases all locks owned by a specific owner (e.g., on disconnect).
116
- */
117
- static releaseAllByOwner(ownerId) {
118
- const db = databaseHolder.getDB();
119
- const result = db.prepare(`DELETE FROM ${this.TABLE} WHERE ownerId = ?`).run(ownerId);
120
- return result.changes;
121
- }
122
- /**
123
- * Releases all expired/stale locks.
124
- */
125
- static releaseStaleLocks() {
126
- const db = databaseHolder.getDB();
127
- const nowIso = new Date().toISOString();
128
- const result = db.prepare(`DELETE FROM ${this.TABLE} WHERE expiresAt < ?`).run(nowIso);
129
- return result.changes;
130
- }
131
- /**
132
- * Generates a unique owner ID for the current user/machine.
133
- * Uses git config user.name or hostname as fallback.
134
- */
135
- static getLocalOwnerId() {
136
- // Try git config
137
- try {
138
- const name = execSync("git config user.name", { encoding: "utf8" }).trim();
139
- if (name)
140
- return name;
141
- }
142
- catch {
143
- // Fallback
144
- }
145
- // Try environment
146
- if (process.env.USER)
147
- return process.env.USER;
148
- if (process.env.USERNAME)
149
- return process.env.USERNAME;
150
- // Fallback to hostname
151
- try {
152
- return os.hostname();
153
- }
154
- catch {
155
- return "unknown-user";
156
- }
157
- }
158
- }
1
+ export * from "./modules/concurrency/lock.js";
159
2
  //# sourceMappingURL=lock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../shared/src/lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAc/C,MAAM,OAAO,eAAe;IAChB,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;IAE3C;;OAEG;IACI,MAAM,CAAC,UAAU;QACpB,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,EAAE,CAAC,IAAI,CAAC;yCACyB,IAAI,CAAC,KAAK;;;;;;;;;SAS1C,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,OAAO,CACjB,QAAgB,EAChB,OAAe,EACf,UAMI,EAAE;QAEN,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACnF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,oBAAoB,CAAC;QAEtD,6BAA6B;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,yEAAyE;QACzE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,EAAE,CAAC,OAAO,CAAC;yCACkB,IAAI,CAAC,KAAK;;aAEtC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;YACpG,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,sDAAsD;QACtD,wDAAwD;QACxD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;oCACE,IAAI,CAAC,KAAK;;SAErC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAEpG,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,OAAO,CAAC,QAAgB,EAAE,OAAe;QACnD,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACrB,eAAe,IAAI,CAAC,KAAK,qCAAqC,CACjE,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEzB,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,QAAQ,CAAC,QAAgB;QACnC,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACnB,iBAAiB,IAAI,CAAC,KAAK,uCAAuC,CACrE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAyB,CAAC;QAEhD,OAAO,CAAC,CAAC,IAAI,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,OAAO,CAAC,QAAgB;QAClC,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACnB,iBAAiB,IAAI,CAAC,KAAK,qBAAqB,CACnD,CAAC,GAAG,CAAC,QAAQ,CAAyB,CAAC;QAExC,OAAO,IAAI,IAAI,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,eAAe;QACzB,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC,OAAO,CACb,iBAAiB,IAAI,CAAC,KAAK,+CAA+C,CAC7E,CAAC,GAAG,CAAC,MAAM,CAAe,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,cAAc,CAAC,OAAe;QACxC,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC,OAAO,CACb,iBAAiB,IAAI,CAAC,KAAK,6CAA6C,CAC3E,CAAC,GAAG,CAAC,OAAO,CAAe,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB,CAAC,OAAe;QAC3C,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACrB,eAAe,IAAI,CAAC,KAAK,oBAAoB,CAChD,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEf,OAAO,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,iBAAiB;QAC5B,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACrB,eAAe,IAAI,CAAC,KAAK,sBAAsB,CAClD,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEd,OAAO,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,eAAe;QACzB,iBAAiB;QACjB,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3E,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACL,WAAW;QACf,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAEtD,uBAAuB;QACvB,IAAI,CAAC;YACD,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,cAAc,CAAC;QAC1B,CAAC;IACL,CAAC"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../shared/src/lock.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
@@ -1,31 +1 @@
1
- export declare enum LogLevel {
2
- DEBUG = 0,
3
- INFO = 1,
4
- WARN = 2,
5
- ERROR = 3,
6
- FATAL = 4
7
- }
8
- export interface LoggerConfig {
9
- minLevel: LogLevel;
10
- enableColors: boolean;
11
- jsonFormat: boolean;
12
- logFile?: string;
13
- enablePiiMasking: boolean;
14
- piiWarning: boolean;
15
- useStderr?: boolean;
16
- }
17
- export declare class EnterpriseLogger {
18
- private config;
19
- private static instance;
20
- private constructor();
21
- static getInstance(): EnterpriseLogger;
22
- configure(config: Partial<LoggerConfig>): void;
23
- private formatMessage;
24
- private log;
25
- debug(message: string, meta?: unknown): void;
26
- info(message: string, meta?: unknown): void;
27
- warn(message: string, meta?: unknown): void;
28
- error(message: string, meta?: unknown): void;
29
- fatal(message: string, meta?: unknown): void;
30
- }
31
- export declare const logger: EnterpriseLogger;
1
+ export * from "./modules/observability/logger.js";
@@ -1,153 +1,2 @@
1
- import chalk from "chalk";
2
- import path from "path";
3
- import { appendFile, ensureDir } from "./fs.js";
4
- import { containsPII, maskObject, maskText } from "./pii.js";
5
- /** JSON.stringify that tolerates circular references instead of throwing. */
6
- function safeStringify(value) {
7
- const seen = new WeakSet();
8
- try {
9
- return JSON.stringify(value, (_key, v) => {
10
- if (typeof v === "object" && v !== null) {
11
- if (typeof Buffer !== "undefined" && Buffer.isBuffer(v))
12
- return `<Buffer ${v.length} bytes>`;
13
- if (v instanceof Uint8Array)
14
- return `<bytes ${v.length}>`;
15
- if (seen.has(v))
16
- return "[Circular]";
17
- seen.add(v);
18
- }
19
- return v;
20
- });
21
- }
22
- catch {
23
- return "[Unserializable]";
24
- }
25
- }
26
- export var LogLevel;
27
- (function (LogLevel) {
28
- LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
29
- LogLevel[LogLevel["INFO"] = 1] = "INFO";
30
- LogLevel[LogLevel["WARN"] = 2] = "WARN";
31
- LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
32
- LogLevel[LogLevel["FATAL"] = 4] = "FATAL";
33
- })(LogLevel || (LogLevel = {}));
34
- export class EnterpriseLogger {
35
- config;
36
- static instance;
37
- constructor() {
38
- const isProd = process.env.NODE_ENV === "production";
39
- const isStdio = process.env.MCP_TRANSPORT === "stdio";
40
- this.config = {
41
- minLevel: isProd ? LogLevel.INFO : LogLevel.DEBUG,
42
- enableColors: !isProd && !isStdio,
43
- jsonFormat: isProd,
44
- enablePiiMasking: true, // KVKK: PII masking ON by default
45
- piiWarning: true,
46
- useStderr: isStdio,
47
- };
48
- }
49
- static getInstance() {
50
- if (!EnterpriseLogger.instance) {
51
- EnterpriseLogger.instance = new EnterpriseLogger();
52
- }
53
- return EnterpriseLogger.instance;
54
- }
55
- configure(config) {
56
- this.config = { ...this.config, ...config };
57
- if (this.config.logFile) {
58
- try {
59
- ensureDir(path.dirname(this.config.logFile));
60
- }
61
- catch (err) {
62
- // Directly write to stderr — using console here would be circular
63
- process.stderr.write(`[Logger] Failed to create log directory: ${err}\n`);
64
- }
65
- }
66
- }
67
- formatMessage(level, message, meta) {
68
- const timestamp = new Date().toISOString();
69
- const pid = process.pid;
70
- // [KVKK] PII masking — mask sensitive data before logging
71
- const safeMessage = this.config.enablePiiMasking ? maskText(message) : message;
72
- const safeMeta = this.config.enablePiiMasking && meta ? maskObject(meta) : meta;
73
- // [KVKK] Warn if PII detected in production (safe against circular meta)
74
- if (this.config.piiWarning && (containsPII(message) || (meta !== undefined && containsPII(safeStringify(meta))))) {
75
- // Only pollute stderr in non-JSON mode so structured streams stay clean.
76
- if (!this.config.jsonFormat) {
77
- process.stderr.write(`[PII WARNING] Potential PII detected in log at ${timestamp}\n`);
78
- }
79
- }
80
- if (this.config.jsonFormat) {
81
- return safeStringify({
82
- timestamp,
83
- level: LogLevel[level],
84
- pid,
85
- message: safeMessage,
86
- meta: safeMeta,
87
- });
88
- }
89
- const levelName = LogLevel[level].padEnd(5);
90
- let coloredLevel = levelName;
91
- if (this.config.enableColors) {
92
- switch (level) {
93
- case LogLevel.DEBUG:
94
- coloredLevel = chalk.blue(levelName);
95
- break;
96
- case LogLevel.INFO:
97
- coloredLevel = chalk.green(levelName);
98
- break;
99
- case LogLevel.WARN:
100
- coloredLevel = chalk.yellow(levelName);
101
- break;
102
- case LogLevel.ERROR:
103
- coloredLevel = chalk.red(levelName);
104
- break;
105
- case LogLevel.FATAL:
106
- coloredLevel = chalk.bgRed.white.bold(levelName);
107
- break;
108
- }
109
- }
110
- const metaStr = safeMeta ? ` | Meta: ${JSON.stringify(safeMeta)}` : "";
111
- return `[${timestamp}] [PID:${pid}] [${coloredLevel}]: ${safeMessage}${metaStr}`;
112
- }
113
- log(level, message, meta) {
114
- if (level < this.config.minLevel)
115
- return;
116
- const formatted = this.formatMessage(level, message, meta);
117
- // Route to stderr for ERROR/FATAL, or when useStderr / MCP stdio transport is active.
118
- // Using process.write directly here is intentional — this IS the logger.
119
- if (this.config.useStderr || process.env.MCP_TRANSPORT === "stdio" || level >= LogLevel.ERROR) {
120
- process.stderr.write(formatted + "\n");
121
- }
122
- else {
123
- process.stdout.write(formatted + "\n");
124
- }
125
- // Output to file if configured
126
- if (this.config.logFile) {
127
- try {
128
- appendFile(this.config.logFile, formatted + "\n");
129
- }
130
- catch (err) {
131
- // Directly write to stderr — using console here would be circular
132
- process.stderr.write(`[Logger] Failed to write to log file: ${err}\n`);
133
- }
134
- }
135
- }
136
- debug(message, meta) {
137
- this.log(LogLevel.DEBUG, message, meta);
138
- }
139
- info(message, meta) {
140
- this.log(LogLevel.INFO, message, meta);
141
- }
142
- warn(message, meta) {
143
- this.log(LogLevel.WARN, message, meta);
144
- }
145
- error(message, meta) {
146
- this.log(LogLevel.ERROR, message, meta);
147
- }
148
- fatal(message, meta) {
149
- this.log(LogLevel.FATAL, message, meta);
150
- }
151
- }
152
- export const logger = EnterpriseLogger.getInstance();
1
+ export * from "./modules/observability/logger.js";
153
2
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../shared/src/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../shared/src/logger.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC"}