@deepagents/context 0.6.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/README.md +254 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# @deepagents/context
|
|
2
|
+
|
|
3
|
+
A domain-agnostic context management system for formatting context fragments into different prompt styles.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This package provides a simple and flexible way to render context data in multiple formats (XML, Markdown, TOML). Context fragments are simple data structures that can be transformed into different representations suitable for various LLM prompt styles.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @deepagents/context
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Basic Usage
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import {
|
|
19
|
+
MarkdownRenderer,
|
|
20
|
+
TomlRenderer,
|
|
21
|
+
XmlRenderer,
|
|
22
|
+
} from '@deepagents/context';
|
|
23
|
+
import type { ContextFragment } from '@deepagents/context';
|
|
24
|
+
|
|
25
|
+
// Define your context fragments
|
|
26
|
+
const fragments: ContextFragment[] = [
|
|
27
|
+
{
|
|
28
|
+
name: 'styleGuide',
|
|
29
|
+
data: {
|
|
30
|
+
prefer: 'CTEs',
|
|
31
|
+
never: 'subqueries',
|
|
32
|
+
indentation: 2,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
// Render in different formats
|
|
38
|
+
const xmlRenderer = new XmlRenderer();
|
|
39
|
+
console.log(xmlRenderer.render(fragments));
|
|
40
|
+
|
|
41
|
+
const mdRenderer = new MarkdownRenderer();
|
|
42
|
+
console.log(mdRenderer.render(fragments));
|
|
43
|
+
|
|
44
|
+
const tomlRenderer = new TomlRenderer();
|
|
45
|
+
console.log(tomlRenderer.render(fragments));
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Renderers
|
|
49
|
+
|
|
50
|
+
### XmlRenderer
|
|
51
|
+
|
|
52
|
+
Renders fragments as XML with proper nesting and escaping:
|
|
53
|
+
|
|
54
|
+
```xml
|
|
55
|
+
<styleGuide>
|
|
56
|
+
<prefer>CTEs</prefer>
|
|
57
|
+
<never>subqueries</never>
|
|
58
|
+
<indentation>2</indentation>
|
|
59
|
+
</styleGuide>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Features:**
|
|
63
|
+
|
|
64
|
+
- Automatic XML escaping for special characters
|
|
65
|
+
- Nested object support
|
|
66
|
+
- Array handling with singular form tags
|
|
67
|
+
- Proper indentation
|
|
68
|
+
|
|
69
|
+
### MarkdownRenderer
|
|
70
|
+
|
|
71
|
+
Renders fragments as Markdown with bullet points:
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
## Style Guide
|
|
75
|
+
|
|
76
|
+
- **prefer**: CTEs
|
|
77
|
+
- **never**: subqueries
|
|
78
|
+
- **indentation**: 2
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Features:**
|
|
82
|
+
|
|
83
|
+
- Automatic title case conversion for fragment names
|
|
84
|
+
- Nested structures with proper indentation
|
|
85
|
+
- Array items as bullet points
|
|
86
|
+
- Bold keys for readability
|
|
87
|
+
|
|
88
|
+
### TomlRenderer
|
|
89
|
+
|
|
90
|
+
Renders fragments as TOML-like format:
|
|
91
|
+
|
|
92
|
+
```toml
|
|
93
|
+
[styleGuide]
|
|
94
|
+
prefer = "CTEs"
|
|
95
|
+
never = "subqueries"
|
|
96
|
+
indentation = 2
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Features:**
|
|
100
|
+
|
|
101
|
+
- TOML section headers
|
|
102
|
+
- Nested objects as subsections
|
|
103
|
+
- Array support with proper formatting
|
|
104
|
+
- String escaping for quotes and backslashes
|
|
105
|
+
|
|
106
|
+
## Handling Complex Data
|
|
107
|
+
|
|
108
|
+
### Arrays
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
const fragment = {
|
|
112
|
+
name: 'workflow',
|
|
113
|
+
data: {
|
|
114
|
+
task: 'Analysis',
|
|
115
|
+
steps: ['step1', 'step2', 'step3'],
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**XML Output:**
|
|
121
|
+
|
|
122
|
+
```xml
|
|
123
|
+
<workflow>
|
|
124
|
+
<task>Analysis</task>
|
|
125
|
+
<steps>
|
|
126
|
+
<step>step1</step>
|
|
127
|
+
<step>step2</step>
|
|
128
|
+
<step>step3</step>
|
|
129
|
+
</steps>
|
|
130
|
+
</workflow>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Markdown Output:**
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
## Workflow
|
|
137
|
+
|
|
138
|
+
- **task**: Analysis
|
|
139
|
+
- **steps**:
|
|
140
|
+
- step1
|
|
141
|
+
- step2
|
|
142
|
+
- step3
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**TOML Output:**
|
|
146
|
+
|
|
147
|
+
```toml
|
|
148
|
+
[workflow]
|
|
149
|
+
task = "Analysis"
|
|
150
|
+
steps = ["step1", "step2", "step3"]
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Nested Objects
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
const fragment = {
|
|
157
|
+
name: 'database',
|
|
158
|
+
data: {
|
|
159
|
+
host: 'localhost',
|
|
160
|
+
settings: {
|
|
161
|
+
timeout: 30,
|
|
162
|
+
retry: true,
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**XML Output:**
|
|
169
|
+
|
|
170
|
+
```xml
|
|
171
|
+
<database>
|
|
172
|
+
<host>localhost</host>
|
|
173
|
+
<settings>
|
|
174
|
+
<timeout>30</timeout>
|
|
175
|
+
<retry>true</retry>
|
|
176
|
+
</settings>
|
|
177
|
+
</database>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**Markdown Output:**
|
|
181
|
+
|
|
182
|
+
```markdown
|
|
183
|
+
## Database
|
|
184
|
+
|
|
185
|
+
- **host**: localhost
|
|
186
|
+
- **settings**:
|
|
187
|
+
- **timeout**: 30
|
|
188
|
+
- **retry**: true
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**TOML Output:**
|
|
192
|
+
|
|
193
|
+
```toml
|
|
194
|
+
[database]
|
|
195
|
+
host = "localhost"
|
|
196
|
+
|
|
197
|
+
[settings]
|
|
198
|
+
timeout = 30
|
|
199
|
+
retry = true
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Null and Undefined Values
|
|
203
|
+
|
|
204
|
+
All renderers automatically skip `null` and `undefined` values:
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
const fragment = {
|
|
208
|
+
name: 'config',
|
|
209
|
+
data: {
|
|
210
|
+
enabled: true,
|
|
211
|
+
disabled: null, // Will be skipped
|
|
212
|
+
missing: undefined, // Will be skipped
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## API Reference
|
|
218
|
+
|
|
219
|
+
### Interfaces
|
|
220
|
+
|
|
221
|
+
#### ContextFragment
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
interface ContextFragment {
|
|
225
|
+
name: string;
|
|
226
|
+
data: Record<string, unknown>;
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
#### ContextRenderer
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
interface ContextRenderer {
|
|
234
|
+
render(fragments: ContextFragment[]): string;
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Classes
|
|
239
|
+
|
|
240
|
+
All renderer classes implement the `ContextRenderer` interface:
|
|
241
|
+
|
|
242
|
+
- `XmlRenderer` - Renders as XML
|
|
243
|
+
- `MarkdownRenderer` - Renders as Markdown
|
|
244
|
+
- `TomlRenderer` - Renders as TOML
|
|
245
|
+
|
|
246
|
+
Each class has a single public method:
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
render(fragments: ContextFragment[]): string
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## License
|
|
253
|
+
|
|
254
|
+
MIT
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@deepagents/context",
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/JanuaryLabs/deepagents",
|
|
8
|
+
"directory": "packages/context"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/JanuaryLabs/deepagents/issues"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/JanuaryLabs/deepagents#readme",
|
|
14
|
+
"type": "module",
|
|
15
|
+
"main": "./dist/index.js",
|
|
16
|
+
"module": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
"./package.json": "./package.json",
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"import": "./dist/index.js",
|
|
23
|
+
"default": "./dist/index.js"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"!**/*.tsbuildinfo",
|
|
29
|
+
"!**/*.test.*"
|
|
30
|
+
],
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"gpt-tokenizer": "^3.4.0",
|
|
36
|
+
"pluralize": "^8.0.0",
|
|
37
|
+
"stringcase": "^4.3.1"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/debug": "^4.1.12"
|
|
41
|
+
}
|
|
42
|
+
}
|