ai.matey.middleware 0.2.0

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 (69) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/caching.js +226 -0
  3. package/dist/cjs/caching.js.map +1 -0
  4. package/dist/cjs/conversation-history.js +213 -0
  5. package/dist/cjs/conversation-history.js.map +1 -0
  6. package/dist/cjs/cost-tracking.js +355 -0
  7. package/dist/cjs/cost-tracking.js.map +1 -0
  8. package/dist/cjs/index.js +37 -0
  9. package/dist/cjs/index.js.map +1 -0
  10. package/dist/cjs/logging.js +174 -0
  11. package/dist/cjs/logging.js.map +1 -0
  12. package/dist/cjs/opentelemetry.js +499 -0
  13. package/dist/cjs/opentelemetry.js.map +1 -0
  14. package/dist/cjs/retry.js +205 -0
  15. package/dist/cjs/retry.js.map +1 -0
  16. package/dist/cjs/security.js +175 -0
  17. package/dist/cjs/security.js.map +1 -0
  18. package/dist/cjs/telemetry.js +216 -0
  19. package/dist/cjs/telemetry.js.map +1 -0
  20. package/dist/cjs/transform.js +284 -0
  21. package/dist/cjs/transform.js.map +1 -0
  22. package/dist/cjs/validation.js +506 -0
  23. package/dist/cjs/validation.js.map +1 -0
  24. package/dist/esm/caching.js +221 -0
  25. package/dist/esm/caching.js.map +1 -0
  26. package/dist/esm/conversation-history.js +207 -0
  27. package/dist/esm/conversation-history.js.map +1 -0
  28. package/dist/esm/cost-tracking.js +347 -0
  29. package/dist/esm/cost-tracking.js.map +1 -0
  30. package/dist/esm/index.js +21 -0
  31. package/dist/esm/index.js.map +1 -0
  32. package/dist/esm/logging.js +171 -0
  33. package/dist/esm/logging.js.map +1 -0
  34. package/dist/esm/opentelemetry.js +458 -0
  35. package/dist/esm/opentelemetry.js.map +1 -0
  36. package/dist/esm/retry.js +198 -0
  37. package/dist/esm/retry.js.map +1 -0
  38. package/dist/esm/security.js +169 -0
  39. package/dist/esm/security.js.map +1 -0
  40. package/dist/esm/telemetry.js +210 -0
  41. package/dist/esm/telemetry.js.map +1 -0
  42. package/dist/esm/transform.js +272 -0
  43. package/dist/esm/transform.js.map +1 -0
  44. package/dist/esm/validation.js +494 -0
  45. package/dist/esm/validation.js.map +1 -0
  46. package/dist/types/caching.d.ts +98 -0
  47. package/dist/types/caching.d.ts.map +1 -0
  48. package/dist/types/conversation-history.d.ts +188 -0
  49. package/dist/types/conversation-history.d.ts.map +1 -0
  50. package/dist/types/cost-tracking.d.ts +262 -0
  51. package/dist/types/cost-tracking.d.ts.map +1 -0
  52. package/dist/types/index.d.ts +20 -0
  53. package/dist/types/index.d.ts.map +1 -0
  54. package/dist/types/logging.d.ts +82 -0
  55. package/dist/types/logging.d.ts.map +1 -0
  56. package/dist/types/opentelemetry.d.ts +219 -0
  57. package/dist/types/opentelemetry.d.ts.map +1 -0
  58. package/dist/types/retry.d.ts +86 -0
  59. package/dist/types/retry.d.ts.map +1 -0
  60. package/dist/types/security.d.ts +120 -0
  61. package/dist/types/security.d.ts.map +1 -0
  62. package/dist/types/telemetry.d.ts +120 -0
  63. package/dist/types/telemetry.d.ts.map +1 -0
  64. package/dist/types/transform.d.ts +184 -0
  65. package/dist/types/transform.d.ts.map +1 -0
  66. package/dist/types/validation.d.ts +356 -0
  67. package/dist/types/validation.d.ts.map +1 -0
  68. package/package.json +203 -0
  69. package/readme.md +103 -0
package/package.json ADDED
@@ -0,0 +1,203 @@
1
+ {
2
+ "name": "ai.matey.middleware",
3
+ "version": "0.2.0",
4
+ "description": "Middleware components for AI Matey - Universal AI Adapter System",
5
+ "type": "module",
6
+ "main": "./dist/cjs/index.js",
7
+ "module": "./dist/esm/index.js",
8
+ "types": "./dist/types/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/types/index.d.ts",
13
+ "default": "./dist/esm/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/types/index.d.ts",
17
+ "default": "./dist/cjs/index.js"
18
+ }
19
+ },
20
+ "./caching": {
21
+ "import": {
22
+ "types": "./dist/types/caching.d.ts",
23
+ "default": "./dist/esm/caching.js"
24
+ },
25
+ "require": {
26
+ "types": "./dist/types/caching.d.ts",
27
+ "default": "./dist/cjs/caching.js"
28
+ }
29
+ },
30
+ "./retry": {
31
+ "import": {
32
+ "types": "./dist/types/retry.d.ts",
33
+ "default": "./dist/esm/retry.js"
34
+ },
35
+ "require": {
36
+ "types": "./dist/types/retry.d.ts",
37
+ "default": "./dist/cjs/retry.js"
38
+ }
39
+ },
40
+ "./logging": {
41
+ "import": {
42
+ "types": "./dist/types/logging.d.ts",
43
+ "default": "./dist/esm/logging.js"
44
+ },
45
+ "require": {
46
+ "types": "./dist/types/logging.d.ts",
47
+ "default": "./dist/cjs/logging.js"
48
+ }
49
+ },
50
+ "./security": {
51
+ "import": {
52
+ "types": "./dist/types/security.d.ts",
53
+ "default": "./dist/esm/security.js"
54
+ },
55
+ "require": {
56
+ "types": "./dist/types/security.d.ts",
57
+ "default": "./dist/cjs/security.js"
58
+ }
59
+ },
60
+ "./validation": {
61
+ "import": {
62
+ "types": "./dist/types/validation.d.ts",
63
+ "default": "./dist/esm/validation.js"
64
+ },
65
+ "require": {
66
+ "types": "./dist/types/validation.d.ts",
67
+ "default": "./dist/cjs/validation.js"
68
+ }
69
+ },
70
+ "./conversation-history": {
71
+ "import": {
72
+ "types": "./dist/types/conversation-history.d.ts",
73
+ "default": "./dist/esm/conversation-history.js"
74
+ },
75
+ "require": {
76
+ "types": "./dist/types/conversation-history.d.ts",
77
+ "default": "./dist/cjs/conversation-history.js"
78
+ }
79
+ },
80
+ "./cost-tracking": {
81
+ "import": {
82
+ "types": "./dist/types/cost-tracking.d.ts",
83
+ "default": "./dist/esm/cost-tracking.js"
84
+ },
85
+ "require": {
86
+ "types": "./dist/types/cost-tracking.d.ts",
87
+ "default": "./dist/cjs/cost-tracking.js"
88
+ }
89
+ },
90
+ "./opentelemetry": {
91
+ "import": {
92
+ "types": "./dist/types/opentelemetry.d.ts",
93
+ "default": "./dist/esm/opentelemetry.js"
94
+ },
95
+ "require": {
96
+ "types": "./dist/types/opentelemetry.d.ts",
97
+ "default": "./dist/cjs/opentelemetry.js"
98
+ }
99
+ },
100
+ "./telemetry": {
101
+ "import": {
102
+ "types": "./dist/types/telemetry.d.ts",
103
+ "default": "./dist/esm/telemetry.js"
104
+ },
105
+ "require": {
106
+ "types": "./dist/types/telemetry.d.ts",
107
+ "default": "./dist/cjs/telemetry.js"
108
+ }
109
+ },
110
+ "./transform": {
111
+ "import": {
112
+ "types": "./dist/types/transform.d.ts",
113
+ "default": "./dist/esm/transform.js"
114
+ },
115
+ "require": {
116
+ "types": "./dist/types/transform.d.ts",
117
+ "default": "./dist/cjs/transform.js"
118
+ }
119
+ }
120
+ },
121
+ "files": [
122
+ "dist",
123
+ "readme.md",
124
+ "CHANGELOG.md",
125
+ "LICENSE"
126
+ ],
127
+ "scripts": {
128
+ "build": "npm run build:esm && npm run build:cjs && npm run build:types",
129
+ "build:esm": "tsc -p tsconfig.esm.json",
130
+ "build:cjs": "tsc -p tsconfig.cjs.json",
131
+ "build:types": "tsc -p tsconfig.types.json",
132
+ "clean": "rm -rf dist",
133
+ "typecheck": "tsc --noEmit",
134
+ "lint": "eslint src --ext .ts",
135
+ "lint:fix": "eslint src --ext .ts --fix",
136
+ "test": "vitest run",
137
+ "test:watch": "vitest"
138
+ },
139
+ "dependencies": {
140
+ "ai.matey.types": "*",
141
+ "ai.matey.errors": "*",
142
+ "ai.matey.utils": "*",
143
+ "ai.matey.core": "*"
144
+ },
145
+ "peerDependencies": {
146
+ "@opentelemetry/api": "^1.7.0",
147
+ "@opentelemetry/sdk-trace-base": "^1.30.0",
148
+ "@opentelemetry/exporter-trace-otlp-http": "^0.200.0",
149
+ "@opentelemetry/resources": "^1.30.0",
150
+ "@opentelemetry/semantic-conventions": "^1.30.0"
151
+ },
152
+ "peerDependenciesMeta": {
153
+ "@opentelemetry/api": {
154
+ "optional": true
155
+ },
156
+ "@opentelemetry/sdk-trace-base": {
157
+ "optional": true
158
+ },
159
+ "@opentelemetry/exporter-trace-otlp-http": {
160
+ "optional": true
161
+ },
162
+ "@opentelemetry/resources": {
163
+ "optional": true
164
+ },
165
+ "@opentelemetry/semantic-conventions": {
166
+ "optional": true
167
+ }
168
+ },
169
+ "devDependencies": {
170
+ "@opentelemetry/api": "^1.9.0",
171
+ "@opentelemetry/sdk-trace-base": "^1.30.0",
172
+ "@opentelemetry/exporter-trace-otlp-http": "^0.200.0",
173
+ "@opentelemetry/resources": "^1.30.0",
174
+ "@opentelemetry/semantic-conventions": "^1.30.0",
175
+ "ai.matey.testing": "*",
176
+ "typescript": "^5.9.3",
177
+ "vitest": "^3.2.4"
178
+ },
179
+ "keywords": [
180
+ "ai",
181
+ "llm",
182
+ "middleware",
183
+ "caching",
184
+ "retry",
185
+ "logging",
186
+ "security",
187
+ "ai-matey"
188
+ ],
189
+ "author": "AI Matey",
190
+ "license": "MIT",
191
+ "homepage": "https://github.com/johnhenry/ai.matey#readme",
192
+ "bugs": {
193
+ "url": "https://github.com/johnhenry/ai.matey/issues"
194
+ },
195
+ "repository": {
196
+ "type": "git",
197
+ "url": "git+https://github.com/johnhenry/ai.matey.git",
198
+ "directory": "packages/middleware"
199
+ },
200
+ "engines": {
201
+ "node": ">=18.0.0"
202
+ }
203
+ }
package/readme.md ADDED
@@ -0,0 +1,103 @@
1
+ # ai.matey.middleware
2
+
3
+ Middleware components for AI Matey - Universal AI Adapter System.
4
+
5
+ Part of the [ai.matey](https://github.com/johnhenry/ai.matey) monorepo.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install ai.matey.middleware
11
+ ```
12
+
13
+ ## Overview
14
+
15
+ This package provides middleware components that can be composed into a middleware stack for request/response processing in AI Matey bridges.
16
+
17
+ ## Included Middleware
18
+
19
+ - **Retry** - Automatic retry with exponential backoff
20
+ - **Caching** - Response caching with configurable storage
21
+ - **Logging** - Request/response logging
22
+ - **Telemetry** - Metrics and telemetry collection
23
+ - **OpenTelemetry** - OpenTelemetry integration
24
+ - **Validation** - Request validation and sanitization
25
+ - **Transform** - Request/response transformation
26
+ - **Security** - Security headers and validation
27
+ - **Cost Tracking** - Token usage and cost tracking
28
+ - **Conversation History** - Conversation state management
29
+
30
+ ## Usage
31
+
32
+ ```typescript
33
+ import { Bridge } from 'ai.matey.core';
34
+ import {
35
+ createRetryMiddleware,
36
+ createCachingMiddleware,
37
+ createLoggingMiddleware,
38
+ InMemoryCacheStorage,
39
+ } from 'ai.matey.middleware';
40
+
41
+ const bridge = new Bridge({
42
+ frontend,
43
+ backend,
44
+ middleware: [
45
+ createLoggingMiddleware({ level: 'info' }),
46
+ createRetryMiddleware({ maxAttempts: 3 }),
47
+ createCachingMiddleware({ storage: new InMemoryCacheStorage() }),
48
+ ],
49
+ });
50
+ ```
51
+
52
+ ### Retry Middleware
53
+
54
+ ```typescript
55
+ import { createRetryMiddleware } from 'ai.matey.middleware';
56
+
57
+ const retry = createRetryMiddleware({
58
+ maxAttempts: 3,
59
+ initialDelayMs: 1000,
60
+ maxDelayMs: 10000,
61
+ backoffMultiplier: 2,
62
+ });
63
+ ```
64
+
65
+ ### Caching Middleware
66
+
67
+ ```typescript
68
+ import { createCachingMiddleware, InMemoryCacheStorage } from 'ai.matey.middleware';
69
+
70
+ const cache = createCachingMiddleware({
71
+ storage: new InMemoryCacheStorage(),
72
+ ttlMs: 60000, // 1 minute
73
+ });
74
+ ```
75
+
76
+ ### Validation Middleware
77
+
78
+ ```typescript
79
+ import { createValidationMiddleware } from 'ai.matey.middleware';
80
+
81
+ const validation = createValidationMiddleware({
82
+ detectPII: true,
83
+ detectPromptInjection: true,
84
+ });
85
+ ```
86
+
87
+ ### Cost Tracking Middleware
88
+
89
+ ```typescript
90
+ import { createCostTrackingMiddleware, InMemoryCostStorage } from 'ai.matey.middleware';
91
+
92
+ const costTracking = createCostTrackingMiddleware({
93
+ storage: new InMemoryCostStorage(),
94
+ });
95
+ ```
96
+
97
+ ## API Reference
98
+
99
+ See the TypeScript definitions for detailed API documentation.
100
+
101
+ ## License
102
+
103
+ MIT - see [LICENSE](./LICENSE) for details.