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.
- package/LICENSE +21 -0
- package/dist/cjs/caching.js +226 -0
- package/dist/cjs/caching.js.map +1 -0
- package/dist/cjs/conversation-history.js +213 -0
- package/dist/cjs/conversation-history.js.map +1 -0
- package/dist/cjs/cost-tracking.js +355 -0
- package/dist/cjs/cost-tracking.js.map +1 -0
- package/dist/cjs/index.js +37 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/logging.js +174 -0
- package/dist/cjs/logging.js.map +1 -0
- package/dist/cjs/opentelemetry.js +499 -0
- package/dist/cjs/opentelemetry.js.map +1 -0
- package/dist/cjs/retry.js +205 -0
- package/dist/cjs/retry.js.map +1 -0
- package/dist/cjs/security.js +175 -0
- package/dist/cjs/security.js.map +1 -0
- package/dist/cjs/telemetry.js +216 -0
- package/dist/cjs/telemetry.js.map +1 -0
- package/dist/cjs/transform.js +284 -0
- package/dist/cjs/transform.js.map +1 -0
- package/dist/cjs/validation.js +506 -0
- package/dist/cjs/validation.js.map +1 -0
- package/dist/esm/caching.js +221 -0
- package/dist/esm/caching.js.map +1 -0
- package/dist/esm/conversation-history.js +207 -0
- package/dist/esm/conversation-history.js.map +1 -0
- package/dist/esm/cost-tracking.js +347 -0
- package/dist/esm/cost-tracking.js.map +1 -0
- package/dist/esm/index.js +21 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/logging.js +171 -0
- package/dist/esm/logging.js.map +1 -0
- package/dist/esm/opentelemetry.js +458 -0
- package/dist/esm/opentelemetry.js.map +1 -0
- package/dist/esm/retry.js +198 -0
- package/dist/esm/retry.js.map +1 -0
- package/dist/esm/security.js +169 -0
- package/dist/esm/security.js.map +1 -0
- package/dist/esm/telemetry.js +210 -0
- package/dist/esm/telemetry.js.map +1 -0
- package/dist/esm/transform.js +272 -0
- package/dist/esm/transform.js.map +1 -0
- package/dist/esm/validation.js +494 -0
- package/dist/esm/validation.js.map +1 -0
- package/dist/types/caching.d.ts +98 -0
- package/dist/types/caching.d.ts.map +1 -0
- package/dist/types/conversation-history.d.ts +188 -0
- package/dist/types/conversation-history.d.ts.map +1 -0
- package/dist/types/cost-tracking.d.ts +262 -0
- package/dist/types/cost-tracking.d.ts.map +1 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/logging.d.ts +82 -0
- package/dist/types/logging.d.ts.map +1 -0
- package/dist/types/opentelemetry.d.ts +219 -0
- package/dist/types/opentelemetry.d.ts.map +1 -0
- package/dist/types/retry.d.ts +86 -0
- package/dist/types/retry.d.ts.map +1 -0
- package/dist/types/security.d.ts +120 -0
- package/dist/types/security.d.ts.map +1 -0
- package/dist/types/telemetry.d.ts +120 -0
- package/dist/types/telemetry.d.ts.map +1 -0
- package/dist/types/transform.d.ts +184 -0
- package/dist/types/transform.d.ts.map +1 -0
- package/dist/types/validation.d.ts +356 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/package.json +203 -0
- 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.
|