@amodalai/runtime 0.1.24 → 0.1.26

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 (75) hide show
  1. package/dist/src/__tests__/providers.test.d.ts +6 -0
  2. package/dist/src/__tests__/providers.test.js +209 -0
  3. package/dist/src/__tests__/providers.test.js.map +1 -0
  4. package/dist/src/__tests__/sse-contract.test.d.ts +6 -0
  5. package/dist/src/__tests__/sse-contract.test.js +464 -0
  6. package/dist/src/__tests__/sse-contract.test.js.map +1 -0
  7. package/dist/src/__tests__/tools.test.d.ts +6 -0
  8. package/dist/src/__tests__/tools.test.js +583 -0
  9. package/dist/src/__tests__/tools.test.js.map +1 -0
  10. package/dist/src/agent/agent-types.d.ts +2 -2
  11. package/dist/src/agent/config-watcher.test.js +18 -14
  12. package/dist/src/agent/config-watcher.test.js.map +1 -1
  13. package/dist/src/agent/local-server.js +64 -9
  14. package/dist/src/agent/local-server.js.map +1 -1
  15. package/dist/src/agent/local-server.test.js +17 -13
  16. package/dist/src/agent/local-server.test.js.map +1 -1
  17. package/dist/src/agent/proactive/proactive-runner.js +6 -1
  18. package/dist/src/agent/proactive/proactive-runner.js.map +1 -1
  19. package/dist/src/agent/routes/admin-chat.js +1 -0
  20. package/dist/src/agent/routes/admin-chat.js.map +1 -1
  21. package/dist/src/agent/routes/automations.js +2 -0
  22. package/dist/src/agent/routes/automations.js.map +1 -1
  23. package/dist/src/agent/routes/evals.js +1 -0
  24. package/dist/src/agent/routes/evals.js.map +1 -1
  25. package/dist/src/agent/routes/files.js +3 -0
  26. package/dist/src/agent/routes/files.js.map +1 -1
  27. package/dist/src/agent/routes/inspect.js +4 -1
  28. package/dist/src/agent/routes/inspect.js.map +1 -1
  29. package/dist/src/agent/routes/stores.js +4 -0
  30. package/dist/src/agent/routes/stores.js.map +1 -1
  31. package/dist/src/agent/routes/task.js +1 -0
  32. package/dist/src/agent/routes/task.js.map +1 -1
  33. package/dist/src/agent/routes/webhooks.js +1 -0
  34. package/dist/src/agent/routes/webhooks.js.map +1 -1
  35. package/dist/src/config.d.ts +96 -0
  36. package/dist/src/config.js +221 -0
  37. package/dist/src/config.js.map +1 -0
  38. package/dist/src/config.test.d.ts +6 -0
  39. package/dist/src/config.test.js +235 -0
  40. package/dist/src/config.test.js.map +1 -0
  41. package/dist/src/errors.d.ts +145 -0
  42. package/dist/src/errors.js +218 -0
  43. package/dist/src/errors.js.map +1 -0
  44. package/dist/src/errors.test.d.ts +6 -0
  45. package/dist/src/errors.test.js +203 -0
  46. package/dist/src/errors.test.js.map +1 -0
  47. package/dist/src/index.d.ts +8 -1
  48. package/dist/src/index.js +8 -1
  49. package/dist/src/index.js.map +1 -1
  50. package/dist/src/logger.d.ts +33 -29
  51. package/dist/src/logger.js +70 -65
  52. package/dist/src/logger.js.map +1 -1
  53. package/dist/src/logger.test.d.ts +6 -0
  54. package/dist/src/logger.test.js +198 -0
  55. package/dist/src/logger.test.js.map +1 -0
  56. package/dist/src/routes/ai-stream.js +4 -1
  57. package/dist/src/routes/ai-stream.js.map +1 -1
  58. package/dist/src/routes/chat-stream.js +3 -1
  59. package/dist/src/routes/chat-stream.js.map +1 -1
  60. package/dist/src/routes/chat.js +1 -0
  61. package/dist/src/routes/chat.js.map +1 -1
  62. package/dist/src/routes/webhooks.js +3 -1
  63. package/dist/src/routes/webhooks.js.map +1 -1
  64. package/dist/src/server.test.js +66 -62
  65. package/dist/src/server.test.js.map +1 -1
  66. package/dist/src/session/session-manager.js +14 -4
  67. package/dist/src/session/session-manager.js.map +1 -1
  68. package/dist/src/session/session-manager.test.js +28 -24
  69. package/dist/src/session/session-manager.test.js.map +1 -1
  70. package/dist/src/session/session-runner.test.js +22 -18
  71. package/dist/src/session/session-runner.test.js.map +1 -1
  72. package/dist/src/stores/pglite-store-backend.js +6 -0
  73. package/dist/src/stores/pglite-store-backend.js.map +1 -1
  74. package/dist/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +3 -2
@@ -0,0 +1,203 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { AmodalError, ProviderError, RateLimitError, ProviderTimeoutError, ToolExecutionError, StoreError, ConnectionError, SessionError, CompactionError, ConfigError, } from './errors.js';
8
+ describe('AmodalError', () => {
9
+ it('carries code, message, and context', () => {
10
+ const err = new AmodalError('TEST_CODE', 'something broke', { foo: 'bar' });
11
+ expect(err.code).toBe('TEST_CODE');
12
+ expect(err.message).toBe('something broke');
13
+ expect(err.context).toEqual({ foo: 'bar' });
14
+ expect(err.name).toBe('AmodalError');
15
+ expect(err).toBeInstanceOf(Error);
16
+ });
17
+ it('defaults context to empty object', () => {
18
+ const err = new AmodalError('X', 'msg');
19
+ expect(err.context).toEqual({});
20
+ });
21
+ it('preserves cause chain', () => {
22
+ const cause = new Error('root cause');
23
+ const err = new AmodalError('X', 'wrapped', {}, cause);
24
+ expect(err.cause).toBe(cause);
25
+ });
26
+ it('serializes to JSON with cause', () => {
27
+ const cause = new Error('root');
28
+ const err = new AmodalError('TEST', 'msg', { k: 1 }, cause);
29
+ const json = err.toJSON();
30
+ expect(json).toEqual({
31
+ name: 'AmodalError',
32
+ code: 'TEST',
33
+ message: 'msg',
34
+ context: { k: 1 },
35
+ cause: { name: 'Error', message: 'root' },
36
+ });
37
+ });
38
+ it('serializes to JSON without cause', () => {
39
+ const err = new AmodalError('TEST', 'msg');
40
+ const json = err.toJSON();
41
+ expect(json).not.toHaveProperty('cause');
42
+ });
43
+ it('serializes non-Error cause as string', () => {
44
+ const err = new AmodalError('TEST', 'msg', {}, 'string cause');
45
+ expect(err.toJSON()['cause']).toBe('string cause');
46
+ });
47
+ });
48
+ describe('ProviderError', () => {
49
+ it('has correct code and provider fields', () => {
50
+ const err = new ProviderError('API failed', { provider: 'anthropic', statusCode: 500 });
51
+ expect(err.code).toBe('PROVIDER_ERROR');
52
+ expect(err.provider).toBe('anthropic');
53
+ expect(err.statusCode).toBe(500);
54
+ expect(err.retryable).toBe(false);
55
+ expect(err.name).toBe('ProviderError');
56
+ expect(err).toBeInstanceOf(AmodalError);
57
+ expect(err.context['provider']).toBe('anthropic');
58
+ expect(err.context['statusCode']).toBe(500);
59
+ });
60
+ it('defaults retryable to false', () => {
61
+ const err = new ProviderError('fail', { provider: 'openai' });
62
+ expect(err.retryable).toBe(false);
63
+ });
64
+ });
65
+ describe('RateLimitError', () => {
66
+ it('is a retryable ProviderError with 429 status', () => {
67
+ const err = new RateLimitError('slow down', { provider: 'anthropic', retryAfterMs: 5000 });
68
+ expect(err.statusCode).toBe(429);
69
+ expect(err.retryable).toBe(true);
70
+ expect(err.retryAfterMs).toBe(5000);
71
+ expect(err.name).toBe('RateLimitError');
72
+ expect(err).toBeInstanceOf(ProviderError);
73
+ expect(err).toBeInstanceOf(AmodalError);
74
+ });
75
+ });
76
+ describe('ProviderTimeoutError', () => {
77
+ it('is a retryable ProviderError', () => {
78
+ const err = new ProviderTimeoutError('timed out', { provider: 'google' });
79
+ expect(err.retryable).toBe(true);
80
+ expect(err.name).toBe('ProviderTimeoutError');
81
+ expect(err).toBeInstanceOf(ProviderError);
82
+ });
83
+ });
84
+ describe('ToolExecutionError', () => {
85
+ it('carries tool name and call ID in context', () => {
86
+ const err = new ToolExecutionError('tool crashed', {
87
+ toolName: 'fetch_deals',
88
+ callId: 'call_123',
89
+ context: { args: { limit: 10 } },
90
+ });
91
+ expect(err.code).toBe('TOOL_EXECUTION_ERROR');
92
+ expect(err.toolName).toBe('fetch_deals');
93
+ expect(err.callId).toBe('call_123');
94
+ expect(err.context['toolName']).toBe('fetch_deals');
95
+ expect(err.context['args']).toEqual({ limit: 10 });
96
+ expect(err).toBeInstanceOf(AmodalError);
97
+ });
98
+ });
99
+ describe('StoreError', () => {
100
+ it('carries store name and operation', () => {
101
+ const cause = new Error('PGLite crash');
102
+ const err = new StoreError('write failed', {
103
+ store: 'alerts',
104
+ operation: 'put',
105
+ cause,
106
+ context: { key: 'alert-1' },
107
+ });
108
+ expect(err.code).toBe('STORE_ERROR');
109
+ expect(err.store).toBe('alerts');
110
+ expect(err.operation).toBe('put');
111
+ expect(err.context['key']).toBe('alert-1');
112
+ expect(err.cause).toBe(cause);
113
+ expect(err).toBeInstanceOf(AmodalError);
114
+ });
115
+ });
116
+ describe('ConnectionError', () => {
117
+ it('carries connection name and action', () => {
118
+ const err = new ConnectionError('auth failed', {
119
+ connection: 'typefully',
120
+ action: 'POST /social-sets',
121
+ });
122
+ expect(err.code).toBe('CONNECTION_ERROR');
123
+ expect(err.connection).toBe('typefully');
124
+ expect(err.action).toBe('POST /social-sets');
125
+ expect(err).toBeInstanceOf(AmodalError);
126
+ });
127
+ });
128
+ describe('SessionError', () => {
129
+ it('carries session ID', () => {
130
+ const err = new SessionError('session expired', {
131
+ sessionId: 'sess_abc',
132
+ context: { tenantId: 'tenant_1' },
133
+ });
134
+ expect(err.code).toBe('SESSION_ERROR');
135
+ expect(err.sessionId).toBe('sess_abc');
136
+ expect(err.context['tenantId']).toBe('tenant_1');
137
+ expect(err).toBeInstanceOf(AmodalError);
138
+ });
139
+ });
140
+ describe('CompactionError', () => {
141
+ it('carries stage', () => {
142
+ const err = new CompactionError('summarization failed', { stage: 'pre_summarize' });
143
+ expect(err.code).toBe('COMPACTION_ERROR');
144
+ expect(err.stage).toBe('pre_summarize');
145
+ expect(err).toBeInstanceOf(AmodalError);
146
+ });
147
+ });
148
+ describe('ConfigError', () => {
149
+ it('carries config key', () => {
150
+ const err = new ConfigError('missing API key', {
151
+ key: 'providers.primary.apiKey',
152
+ context: { checked: ['env:ANTHROPIC_API_KEY', 'amodal.json'] },
153
+ });
154
+ expect(err.code).toBe('CONFIG_ERROR');
155
+ expect(err.key).toBe('providers.primary.apiKey');
156
+ expect(err.context['checked']).toEqual(['env:ANTHROPIC_API_KEY', 'amodal.json']);
157
+ expect(err).toBeInstanceOf(AmodalError);
158
+ });
159
+ it('formats a multi-line error with key and suggestion', () => {
160
+ const err = new ConfigError('API key not found', {
161
+ key: 'models.main.provider',
162
+ suggestion: 'Set ANTHROPIC_API_KEY in your .env file.',
163
+ });
164
+ expect(err.format()).toBe('Config error: API key not found\n' +
165
+ ' Key: models.main.provider\n' +
166
+ ' Fix: Set ANTHROPIC_API_KEY in your .env file.');
167
+ });
168
+ it('formats without suggestion when omitted', () => {
169
+ const err = new ConfigError('bad value', { key: 'stores.backend' });
170
+ expect(err.suggestion).toBe('');
171
+ expect(err.format()).toBe('Config error: bad value\n Key: stores.backend');
172
+ });
173
+ });
174
+ describe('unique error codes', () => {
175
+ it('each subclass has a distinct code', () => {
176
+ const codes = [
177
+ new ProviderError('', { provider: '' }),
178
+ new ToolExecutionError('', { toolName: '', callId: '' }),
179
+ new StoreError('', { store: '', operation: '' }),
180
+ new ConnectionError('', { connection: '', action: '' }),
181
+ new SessionError('', { sessionId: '' }),
182
+ new CompactionError('', { stage: '' }),
183
+ new ConfigError('', { key: '' }),
184
+ ].map(e => e.code);
185
+ expect(new Set(codes).size).toBe(codes.length);
186
+ });
187
+ });
188
+ describe('Result type', () => {
189
+ it('narrows on ok check', () => {
190
+ const success = { ok: true, value: 42 };
191
+ const failure = {
192
+ ok: false,
193
+ error: new StoreError('not found', { store: 'alerts', operation: 'get' }),
194
+ };
195
+ if (success.ok) {
196
+ expect(success.value).toBe(42);
197
+ }
198
+ if (!failure.ok) {
199
+ expect(failure.error.store).toBe('alerts');
200
+ }
201
+ });
202
+ });
203
+ //# sourceMappingURL=errors.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../src/errors.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC5C,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,eAAe,EACf,WAAW,GACZ,MAAM,aAAa,CAAC;AAGrB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,iBAAiB,EAAE,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC;YACf,KAAK,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAC;SACxC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,YAAY,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAC,CAAC,CAAC;QACtF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;QACzF,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;QACxE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,cAAc,EAAE;YACjD,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,EAAE,EAAC,EAAC;SAC7B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,cAAc,EAAE;YACzC,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,KAAK;YAChB,KAAK;YACL,OAAO,EAAE,EAAC,GAAG,EAAE,SAAS,EAAC;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,aAAa,EAAE;YAC7C,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,mBAAmB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE;YAC9C,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,EAAC,QAAQ,EAAE,UAAU,EAAC;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,sBAAsB,EAAE,EAAC,KAAK,EAAE,eAAe,EAAC,CAAC,CAAC;QAClF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,iBAAiB,EAAE;YAC7C,GAAG,EAAE,0BAA0B;YAC/B,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,uBAAuB,EAAE,aAAa,CAAC,EAAC;SAC7D,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,mBAAmB,EAAE;YAC/C,GAAG,EAAE,sBAAsB;YAC3B,UAAU,EAAE,0CAA0C;SACvD,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACvB,mCAAmC;YACnC,+BAA+B;YAC/B,iDAAiD,CAClD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,EAAC,GAAG,EAAE,gBAAgB,EAAC,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACvB,gDAAgD,CACjD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAG;YACZ,IAAI,aAAa,CAAC,EAAE,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC;YACrC,IAAI,kBAAkB,CAAC,EAAE,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;YACtD,IAAI,UAAU,CAAC,EAAE,EAAE,EAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC;YAC9C,IAAI,eAAe,CAAC,EAAE,EAAE,EAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;YACrD,IAAI,YAAY,CAAC,EAAE,EAAE,EAAC,SAAS,EAAE,EAAE,EAAC,CAAC;YACrC,IAAI,eAAe,CAAC,EAAE,EAAE,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC;YACpC,IAAI,WAAW,CAAC,EAAE,EAAE,EAAC,GAAG,EAAE,EAAE,EAAC,CAAC;SAC/B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEnB,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,OAAO,GAA+B,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC;QAClE,MAAM,OAAO,GAA+B;YAC1C,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;SACxE,CAAC;QAEF,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -23,5 +23,12 @@ export type { TaskRouterOptions } from './agent/routes/task.js';
23
23
  export { getAuthContext } from './middleware/auth.js';
24
24
  export type { AuthContext } from './middleware/auth.js';
25
25
  export type { StreamHooks } from './session/session-runner.js';
26
+ export { runMessage } from './session/session-runner.js';
27
+ export { routeOutput } from './output/output-router.js';
26
28
  export { errorHandler } from './middleware/error-handler.js';
27
- export { log, setLogLevel, getLogLevel, LogLevel } from './logger.js';
29
+ export { AmodalError, ProviderError, RateLimitError, ProviderTimeoutError, ToolExecutionError, StoreError, ConnectionError, SessionError, CompactionError, ConfigError, } from './errors.js';
30
+ export type { Result } from './errors.js';
31
+ export { log, setLogLevel, getLogLevel, setLogFormat, getLogFormat, setSanitize, LogLevel, initLogLevel, interceptConsole, verbosityToLogLevel, createLogger } from './logger.js';
32
+ export type { Logger, LoggerConfig, LogFormat } from './logger.js';
33
+ export { loadConfig } from './config.js';
34
+ export type { AgentConfig, ConfigOverrides, LoadConfigOptions, McpServerConfig } from './config.js';
package/dist/src/index.js CHANGED
@@ -20,10 +20,17 @@ export { createChatStreamRouter } from './routes/chat-stream.js';
20
20
  export { createTaskRouter } from './agent/routes/task.js';
21
21
  // Auth types (middleware implementation provided by hosting layer)
22
22
  export { getAuthContext } from './middleware/auth.js';
23
+ export { runMessage } from './session/session-runner.js';
24
+ // Output routing (for automation result delivery)
25
+ export { routeOutput } from './output/output-router.js';
23
26
  // Error handler
24
27
  export { errorHandler } from './middleware/error-handler.js';
28
+ // Typed error classes
29
+ export { AmodalError, ProviderError, RateLimitError, ProviderTimeoutError, ToolExecutionError, StoreError, ConnectionError, SessionError, CompactionError, ConfigError, } from './errors.js';
25
30
  // Logger
26
- export { log, setLogLevel, getLogLevel, LogLevel } from './logger.js';
31
+ export { log, setLogLevel, getLogLevel, setLogFormat, getLogFormat, setSanitize, LogLevel, initLogLevel, interceptConsole, verbosityToLogLevel, createLogger } from './logger.js';
32
+ // Config
33
+ export { loadConfig } from './config.js';
27
34
  // ---------------------------------------------------------------------------
28
35
  // Environment variable parsing
29
36
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,34 +4,38 @@
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
6
  /**
7
- * Lightweight structured logger for the runtime.
7
+ * Runtime logger wraps the core logger and adds runtime-specific
8
+ * utilities (CLI flag parsing, console interception).
8
9
  *
9
- * Log level is controlled by the `LOG_LEVEL` environment variable.
10
- * Valid values (case-insensitive): debug, info, warn, error, fatal, none.
11
- * Default: "info".
12
- *
13
- * Usage:
14
- * import { log } from './logger.js';
15
- * log.info('Server started', 'server'); // [INFO] [server] Server started
16
- * log.debug('Details here', 'session'); // only printed when LOG_LEVEL=debug
17
- * log.error('Something broke'); // [ERROR] Something broke
10
+ * The Logger interface and core implementation live in @amodalai/core.
11
+ * This module re-exports them and adds runtime-only functions.
12
+ */
13
+ import { createLogger as coreCreateLogger, setLogLevel as coreSetLogLevel, getLogLevel as coreGetLogLevel, setLogFormat as coreSetLogFormat, getLogFormat as coreGetLogFormat, setSanitize as coreSetSanitize, LogLevel } from '@amodalai/core';
14
+ import type { Logger, LoggerConfig, LogFormat } from '@amodalai/core';
15
+ export { LogLevel };
16
+ export type { Logger, LoggerConfig, LogFormat };
17
+ export declare const log: Logger;
18
+ export declare const createLogger: typeof coreCreateLogger;
19
+ export declare const setLogLevel: typeof coreSetLogLevel;
20
+ export declare const getLogLevel: typeof coreGetLogLevel;
21
+ export declare const setLogFormat: typeof coreSetLogFormat;
22
+ export declare const getLogFormat: typeof coreGetLogFormat;
23
+ export declare const setSanitize: typeof coreSetSanitize;
24
+ /**
25
+ * Convert -v count and --quiet flag to a LogLevel.
26
+ * --quiet → ERROR, default → INFO, -v → DEBUG, -vv → TRACE
27
+ */
28
+ export declare function verbosityToLogLevel(verbosity: number, quiet: boolean): LogLevel;
29
+ /**
30
+ * Initialize logger from CLI flags. Env var LOG_LEVEL takes precedence.
31
+ * Call once at startup before any logging.
32
+ */
33
+ export declare function initLogLevel(opts: {
34
+ verbosity?: number;
35
+ quiet?: boolean;
36
+ }): void;
37
+ /**
38
+ * Intercept console.* to route upstream library output (e.g. @google/gemini-cli-core)
39
+ * through our log levels. Call once at startup.
18
40
  */
19
- export declare enum LogLevel {
20
- DEBUG = 0,
21
- INFO = 1,
22
- WARN = 2,
23
- ERROR = 3,
24
- FATAL = 4,
25
- NONE = 5
26
- }
27
- /** Update the runtime log level programmatically. */
28
- export declare function setLogLevel(level: LogLevel): void;
29
- /** Get the current log level. */
30
- export declare function getLogLevel(): LogLevel;
31
- export declare const log: {
32
- debug: (message: string, tag?: string) => void;
33
- info: (message: string, tag?: string) => void;
34
- warn: (message: string, tag?: string) => void;
35
- error: (message: string, tag?: string) => void;
36
- fatal: (message: string, tag?: string) => void;
37
- };
41
+ export declare function interceptConsole(): void;
@@ -4,74 +4,79 @@
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
6
  /**
7
- * Lightweight structured logger for the runtime.
7
+ * Runtime logger wraps the core logger and adds runtime-specific
8
+ * utilities (CLI flag parsing, console interception).
8
9
  *
9
- * Log level is controlled by the `LOG_LEVEL` environment variable.
10
- * Valid values (case-insensitive): debug, info, warn, error, fatal, none.
11
- * Default: "info".
12
- *
13
- * Usage:
14
- * import { log } from './logger.js';
15
- * log.info('Server started', 'server'); // [INFO] [server] Server started
16
- * log.debug('Details here', 'session'); // only printed when LOG_LEVEL=debug
17
- * log.error('Something broke'); // [ERROR] Something broke
10
+ * The Logger interface and core implementation live in @amodalai/core.
11
+ * This module re-exports them and adds runtime-only functions.
18
12
  */
19
- export var LogLevel;
20
- (function (LogLevel) {
21
- LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
22
- LogLevel[LogLevel["INFO"] = 1] = "INFO";
23
- LogLevel[LogLevel["WARN"] = 2] = "WARN";
24
- LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
25
- LogLevel[LogLevel["FATAL"] = 4] = "FATAL";
26
- LogLevel[LogLevel["NONE"] = 5] = "NONE";
27
- })(LogLevel || (LogLevel = {}));
28
- const LEVEL_LABELS = {
29
- [LogLevel.DEBUG]: 'DEBUG',
30
- [LogLevel.INFO]: 'INFO',
31
- [LogLevel.WARN]: 'WARN',
32
- [LogLevel.ERROR]: 'ERROR',
33
- [LogLevel.FATAL]: 'FATAL',
34
- [LogLevel.NONE]: '',
35
- };
36
- function parseLogLevel(value) {
37
- switch (value?.toLowerCase()) {
38
- case 'debug':
39
- return LogLevel.DEBUG;
40
- case 'info':
41
- return LogLevel.INFO;
42
- case 'warn':
43
- return LogLevel.WARN;
44
- case 'error':
45
- return LogLevel.ERROR;
46
- case 'fatal':
47
- return LogLevel.FATAL;
48
- case 'none':
49
- return LogLevel.NONE;
50
- default:
51
- return LogLevel.INFO;
52
- }
53
- }
54
- let currentLevel = parseLogLevel(process.env['LOG_LEVEL']);
55
- /** Update the runtime log level programmatically. */
56
- export function setLogLevel(level) {
57
- currentLevel = level;
58
- }
59
- /** Get the current log level. */
60
- export function getLogLevel() {
61
- return currentLevel;
13
+ import { log as coreLog, createLogger as coreCreateLogger, setLogLevel as coreSetLogLevel, getLogLevel as coreGetLogLevel, setLogFormat as coreSetLogFormat, getLogFormat as coreGetLogFormat, setSanitize as coreSetSanitize, LogLevel, } from '@amodalai/core';
14
+ // Re-export core logger API
15
+ export { LogLevel };
16
+ export const log = coreLog;
17
+ export const createLogger = coreCreateLogger;
18
+ export const setLogLevel = coreSetLogLevel;
19
+ export const getLogLevel = coreGetLogLevel;
20
+ export const setLogFormat = coreSetLogFormat;
21
+ export const getLogFormat = coreGetLogFormat;
22
+ export const setSanitize = coreSetSanitize;
23
+ /**
24
+ * Convert -v count and --quiet flag to a LogLevel.
25
+ * --quiet → ERROR, default → INFO, -v → DEBUG, -vv → TRACE
26
+ */
27
+ export function verbosityToLogLevel(verbosity, quiet) {
28
+ if (quiet)
29
+ return LogLevel.ERROR;
30
+ if (verbosity >= 2)
31
+ return LogLevel.TRACE;
32
+ if (verbosity >= 1)
33
+ return LogLevel.DEBUG;
34
+ return LogLevel.INFO;
62
35
  }
63
- function write(level, message, tag) {
64
- if (level < currentLevel)
36
+ /**
37
+ * Initialize logger from CLI flags. Env var LOG_LEVEL takes precedence.
38
+ * Call once at startup before any logging.
39
+ */
40
+ export function initLogLevel(opts) {
41
+ if (process.env['LOG_LEVEL']) {
42
+ // Env var already handled by the module-level initializer in core
65
43
  return;
66
- const label = LEVEL_LABELS[level];
67
- const prefix = tag ? `[${label}] [${tag}] ` : `[${label}] `;
68
- process.stderr.write(`${prefix}${message}\n`);
44
+ }
45
+ setLogLevel(verbosityToLogLevel(opts.verbosity ?? 0, opts.quiet ?? false));
46
+ }
47
+ /**
48
+ * Intercept console.* to route upstream library output (e.g. @google/gemini-cli-core)
49
+ * through our log levels. Call once at startup.
50
+ */
51
+ /* eslint-disable no-console */
52
+ export function interceptConsole() {
53
+ const origLog = console.log;
54
+ const origWarn = console.warn;
55
+ const origError = console.error;
56
+ const origDebug = console.debug;
57
+ console.log = (...args) => {
58
+ if (getLogLevel() <= LogLevel.TRACE) {
59
+ origLog.apply(console, args);
60
+ }
61
+ };
62
+ console.debug = (...args) => {
63
+ if (getLogLevel() <= LogLevel.TRACE) {
64
+ origDebug.apply(console, args);
65
+ }
66
+ };
67
+ console.warn = (...args) => {
68
+ if (getLogLevel() <= LogLevel.DEBUG) {
69
+ origWarn.apply(console, args);
70
+ }
71
+ };
72
+ console.error = (...args) => {
73
+ if (getLogLevel() <= LogLevel.WARN) {
74
+ // Suppress known noisy upstream messages
75
+ if (typeof args[0] === 'string' && args[0].includes('Current logger will'))
76
+ return;
77
+ origError.apply(console, args);
78
+ }
79
+ };
69
80
  }
70
- export const log = {
71
- debug: (message, tag) => write(LogLevel.DEBUG, message, tag),
72
- info: (message, tag) => write(LogLevel.INFO, message, tag),
73
- warn: (message, tag) => write(LogLevel.WARN, message, tag),
74
- error: (message, tag) => write(LogLevel.ERROR, message, tag),
75
- fatal: (message, tag) => write(LogLevel.FATAL, message, tag),
76
- };
81
+ /* eslint-enable no-console */
77
82
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,yCAAS,CAAA;IACT,uCAAQ,CAAA;AACV,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB;AAED,MAAM,YAAY,GAA6B;IAC7C,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;IACzB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IACvB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IACvB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;IACzB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;IACzB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE;CACpB,CAAC;AAEF,SAAS,aAAa,CAAC,KAAyB;IAC9C,QAAQ,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC;QAC7B,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB;YACE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACzB,CAAC;AACH,CAAC;AAED,IAAI,YAAY,GAAa,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AAErE,qDAAqD;AACrD,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,YAAY,GAAG,KAAK,CAAC;AACvB,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,KAAK,CAAC,KAAe,EAAE,OAAe,EAAE,GAAY;IAC3D,IAAI,KAAK,GAAG,YAAY;QAAE,OAAO;IACjC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;IAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,KAAK,EAAE,CAAC,OAAe,EAAE,GAAY,EAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC;IACnF,IAAI,EAAE,CAAC,OAAe,EAAE,GAAY,EAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC;IACjF,IAAI,EAAE,CAAC,OAAe,EAAE,GAAY,EAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC;IACjF,KAAK,EAAE,CAAC,OAAe,EAAE,GAAY,EAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC;IACnF,KAAK,EAAE,CAAC,OAAe,EAAE,GAAY,EAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC;CACpF,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export {};