@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.
Files changed (2) hide show
  1. package/README.md +254 -0
  2. 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
+ }