prelude-context 1.0.0 → 1.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/README.md +46 -9
- package/dist/bin/prelude.js +9 -0
- package/dist/bin/prelude.js.map +1 -1
- package/dist/src/commands/decision.d.ts.map +1 -1
- package/dist/src/commands/decision.js +4 -1
- package/dist/src/commands/decision.js.map +1 -1
- package/dist/src/commands/export.d.ts.map +1 -1
- package/dist/src/commands/export.js +4 -1
- package/dist/src/commands/export.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +8 -1
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/share.d.ts.map +1 -1
- package/dist/src/commands/share.js +4 -1
- package/dist/src/commands/share.js.map +1 -1
- package/dist/src/commands/update.d.ts +11 -0
- package/dist/src/commands/update.d.ts.map +1 -0
- package/dist/src/commands/update.js +186 -0
- package/dist/src/commands/update.js.map +1 -0
- package/dist/src/commands/watch.d.ts.map +1 -1
- package/dist/src/commands/watch.js +4 -1
- package/dist/src/commands/watch.js.map +1 -1
- package/dist/src/core/merger.d.ts +48 -0
- package/dist/src/core/merger.d.ts.map +1 -0
- package/dist/src/core/merger.js +221 -0
- package/dist/src/core/merger.js.map +1 -0
- package/dist/src/core/state-manager.d.ts +62 -0
- package/dist/src/core/state-manager.d.ts.map +1 -0
- package/dist/src/core/state-manager.js +156 -0
- package/dist/src/core/state-manager.js.map +1 -0
- package/dist/src/runtime/context.d.ts +3 -0
- package/dist/src/runtime/context.d.ts.map +1 -0
- package/dist/src/runtime/context.js +17 -0
- package/dist/src/runtime/context.js.map +1 -0
- package/dist/src/schema/state.d.ts +157 -0
- package/dist/src/schema/state.d.ts.map +1 -0
- package/dist/src/schema/state.js +49 -0
- package/dist/src/schema/state.js.map +1 -0
- package/package.json +11 -12
package/README.md
CHANGED
|
@@ -94,6 +94,7 @@ Here's what Prelude generates for a Next.js monorepo:
|
|
|
94
94
|
| Machine-optimized | ✅ | ❌ | ✅ |
|
|
95
95
|
| Version controlled | ✅ | ⚠️ | ❌ |
|
|
96
96
|
| Zero configuration | ✅ | N/A | ❌ |
|
|
97
|
+
| Preserves manual edits | ✅ | ✅ | ❌ |
|
|
97
98
|
|
|
98
99
|
---
|
|
99
100
|
|
|
@@ -108,7 +109,7 @@ Analyzes your codebase and creates a `.context/` directory with:
|
|
|
108
109
|
- `decisions.json` - Architecture decision records
|
|
109
110
|
- `changelog.md` - Project timeline
|
|
110
111
|
|
|
111
|
-
All files follow the [Prelude specification](
|
|
112
|
+
All files follow the [Prelude specification](https://github.com/adjective-rob/prelude/blob/main/spec.md) and include JSON Schema validation.
|
|
112
113
|
|
|
113
114
|
### `prelude export`
|
|
114
115
|
Generates a markdown document optimized for LLMs:
|
|
@@ -116,6 +117,25 @@ Generates a markdown document optimized for LLMs:
|
|
|
116
117
|
- Automatically copied to clipboard
|
|
117
118
|
- Perfect for starting new AI conversations
|
|
118
119
|
|
|
120
|
+
### `prelude update`
|
|
121
|
+
Re-analyzes your codebase and intelligently updates context:
|
|
122
|
+
```bash
|
|
123
|
+
prelude update
|
|
124
|
+
# Smart merge - preserves manual edits, updates inferred data
|
|
125
|
+
|
|
126
|
+
prelude update --dry-run
|
|
127
|
+
# Preview changes without applying them
|
|
128
|
+
|
|
129
|
+
prelude update --force
|
|
130
|
+
# Overwrite everything (except decisions/changelog)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Key features:**
|
|
134
|
+
- ✅ **Preserves manual edits** - Never loses your customizations
|
|
135
|
+
- ✅ **Shows what changed** - Color-coded diff of updates
|
|
136
|
+
- ✅ **Automatic backups** - Saves history before every update
|
|
137
|
+
- ✅ **Smart merging** - Combines new inferred data with manual edits
|
|
138
|
+
|
|
119
139
|
### `prelude decision <title>`
|
|
120
140
|
Logs architecture decisions:
|
|
121
141
|
```bash
|
|
@@ -174,6 +194,17 @@ Share your `.context/` directory with new team members so they can:
|
|
|
174
194
|
- Learn architectural patterns
|
|
175
195
|
- See past decisions and rationale
|
|
176
196
|
|
|
197
|
+
### 🔄 Keeping Context Fresh
|
|
198
|
+
```bash
|
|
199
|
+
# After adding dependencies
|
|
200
|
+
npm install @tanstack/react-query
|
|
201
|
+
prelude update
|
|
202
|
+
|
|
203
|
+
# After restructuring
|
|
204
|
+
prelude update --dry-run # Preview changes first
|
|
205
|
+
prelude update # Apply updates
|
|
206
|
+
```
|
|
207
|
+
|
|
177
208
|
---
|
|
178
209
|
|
|
179
210
|
## The Prelude Format
|
|
@@ -213,6 +244,8 @@ The `.context/` files are human-readable JSON. Edit them directly:
|
|
|
213
244
|
}
|
|
214
245
|
```
|
|
215
246
|
|
|
247
|
+
**Manual edits are preserved** when you run `prelude update` - the smart merge system tracks what's inferred vs. what you've customized.
|
|
248
|
+
|
|
216
249
|
### Custom Fields
|
|
217
250
|
Add project-specific fields - the schemas allow additional properties:
|
|
218
251
|
|
|
@@ -263,7 +296,10 @@ your-project/
|
|
|
263
296
|
│ ├── architecture.json # Architecture patterns
|
|
264
297
|
│ ├── constraints.json # Development rules
|
|
265
298
|
│ ├── decisions.json # Architecture decisions
|
|
266
|
-
│
|
|
299
|
+
│ ├── changelog.md # Project timeline
|
|
300
|
+
│ └── .prelude/ # State tracking (gitignore *.session.json)
|
|
301
|
+
│ ├── state.json # Tracks inferred vs manual fields
|
|
302
|
+
│ └── history/ # Automatic backups
|
|
267
303
|
├── .gitignore # Add .context/*.session.json
|
|
268
304
|
└── ...
|
|
269
305
|
```
|
|
@@ -278,7 +314,10 @@ your-project/
|
|
|
278
314
|
**Yes!** The context is part of your project documentation. Exception: `.context/*.session.json` should be gitignored (it's for local work tracking).
|
|
279
315
|
|
|
280
316
|
### How often should I update the context?
|
|
281
|
-
|
|
317
|
+
Run `prelude update` after major changes (new dependencies, restructuring). Run `prelude export` whenever you need fresh context for an AI conversation.
|
|
318
|
+
|
|
319
|
+
### What happens to my manual edits?
|
|
320
|
+
They're preserved! Prelude tracks which fields are inferred vs. manually edited. When you run `update`, it only changes auto-detected data while keeping your customizations.
|
|
282
321
|
|
|
283
322
|
### Can I use this with any LLM?
|
|
284
323
|
Yes! The export format is optimized for Claude, ChatGPT, Gemini, and any text-based AI assistant.
|
|
@@ -293,6 +332,7 @@ Yes! While the CLI is built with Node.js, the Prelude format works with any lang
|
|
|
293
332
|
|
|
294
333
|
## Roadmap
|
|
295
334
|
|
|
335
|
+
- [x] Smart context updates with manual edit preservation
|
|
296
336
|
- [ ] Improved inference for Python, Rust, Go
|
|
297
337
|
- [ ] VS Code extension for inline context
|
|
298
338
|
- [ ] GitHub Action for automated updates
|
|
@@ -300,8 +340,6 @@ Yes! While the CLI is built with Node.js, the Prelude format works with any lang
|
|
|
300
340
|
- [ ] CLI validation command
|
|
301
341
|
- [ ] Context diff tool
|
|
302
342
|
|
|
303
|
-
Want to contribute? See [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
304
|
-
|
|
305
343
|
---
|
|
306
344
|
|
|
307
345
|
## Design Principles
|
|
@@ -311,6 +349,7 @@ Want to contribute? See [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
|
311
349
|
3. **Standards-based** - Open spec, not proprietary format
|
|
312
350
|
4. **Zero lock-in** - Edit files manually, use any tool
|
|
313
351
|
5. **Incremental adoption** - Works with partial information
|
|
352
|
+
6. **Preserve intent** - Never lose manual customizations
|
|
314
353
|
|
|
315
354
|
---
|
|
316
355
|
|
|
@@ -324,8 +363,6 @@ Want to contribute? See [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
|
324
363
|
|
|
325
364
|
## Contributing
|
|
326
365
|
|
|
327
|
-
Contributions are welcome! Please read [CONTRIBUTING.md](./CONTRIBUTING.md) first.
|
|
328
|
-
|
|
329
366
|
Areas we'd love help with:
|
|
330
367
|
- Improved inference patterns
|
|
331
368
|
- Support for more languages/frameworks
|
|
@@ -343,7 +380,7 @@ MIT © [Adjective](https://adjective.us)
|
|
|
343
380
|
|
|
344
381
|
## Links
|
|
345
382
|
|
|
346
|
-
- [Specification](
|
|
383
|
+
- [Specification](https://github.com/adjective-rob/prelude/blob/main/spec.md)
|
|
347
384
|
- [Schema Documentation](./schemas/README.md)
|
|
348
385
|
- [Examples](./examples/)
|
|
349
386
|
- [NPM Package](https://www.npmjs.com/package/prelude-context)
|
|
@@ -351,4 +388,4 @@ MIT © [Adjective](https://adjective.us)
|
|
|
351
388
|
|
|
352
389
|
---
|
|
353
390
|
|
|
354
|
-
**Built by [Adjective](https://adjective.us) - Sovereign Software for AI-Native Teams**
|
|
391
|
+
**Built by [Adjective](https://adjective.us) - Sovereign Software for AI-Native Teams**
|
package/dist/bin/prelude.js
CHANGED
|
@@ -24,12 +24,21 @@ import { registerExportCommand } from '../src/commands/export.js';
|
|
|
24
24
|
import { registerShareCommand } from '../src/commands/share.js';
|
|
25
25
|
import { registerDecisionCommand } from '../src/commands/decision.js';
|
|
26
26
|
import { registerWatchCommand } from '../src/commands/watch.js';
|
|
27
|
+
import { update } from '../src/commands/update.js';
|
|
27
28
|
// Register all commands
|
|
28
29
|
registerInitCommand(cli);
|
|
29
30
|
registerExportCommand(cli);
|
|
30
31
|
registerShareCommand(cli);
|
|
31
32
|
registerDecisionCommand(cli);
|
|
32
33
|
registerWatchCommand(cli);
|
|
34
|
+
// Register update command
|
|
35
|
+
cli
|
|
36
|
+
.command('update', 'Update context by re-analyzing the codebase')
|
|
37
|
+
.option('--force', 'Overwrite all inferred fields')
|
|
38
|
+
.option('--dry-run', 'Show what would change without applying')
|
|
39
|
+
.option('--interactive', 'Prompt for each change')
|
|
40
|
+
.option('--silent', 'Minimal output')
|
|
41
|
+
.action(update);
|
|
33
42
|
// Parse and run
|
|
34
43
|
cli.parse();
|
|
35
44
|
//# sourceMappingURL=prelude.js.map
|
package/dist/bin/prelude.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../bin/prelude.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,0DAA0D;AAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,+DAA+D;AAC/D,IAAI,WAAgB,CAAC;AACrB,IAAI,CAAC;IACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACzF,CAAC;AAAC,MAAM,CAAC;IACP,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAE3B,GAAG;KACA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,IAAI,EAAE,CAAC;AAEV,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../bin/prelude.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,0DAA0D;AAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,+DAA+D;AAC/D,IAAI,WAAgB,CAAC;AACrB,IAAI,CAAC;IACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACzF,CAAC;AAAC,MAAM,CAAC;IACP,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAE3B,GAAG;KACA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,IAAI,EAAE,CAAC;AAEV,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,wBAAwB;AACxB,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACzB,qBAAqB,CAAC,GAAG,CAAC,CAAC;AAC3B,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC1B,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAC7B,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAE1B,0BAA0B;AAC1B,GAAG;KACA,OAAO,CAAC,QAAQ,EAAE,6CAA6C,CAAC;KAChE,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC;KACpC,MAAM,CAAC,MAAM,CAAC,CAAC;AAElB,gBAAgB;AAChB,GAAG,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../../src/commands/decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAY/B,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../../src/commands/decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAY/B,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,QA0F/C"}
|
|
@@ -17,7 +17,10 @@ export function registerDecisionCommand(cli) {
|
|
|
17
17
|
.option('--tags <items>', 'Comma-separated tags')
|
|
18
18
|
.action(async (title, options, dir = process.cwd()) => {
|
|
19
19
|
const rootDir = dir;
|
|
20
|
-
const
|
|
20
|
+
const externalRoot = process.env.PRELUDE_ROOT;
|
|
21
|
+
const contextDir = externalRoot
|
|
22
|
+
? join(externalRoot, rootDir.split('/').pop())
|
|
23
|
+
: join(rootDir, CONTEXT_DIR);
|
|
21
24
|
const decisionsPath = join(contextDir, CONTEXT_FILES.DECISIONS);
|
|
22
25
|
// Check if .context exists
|
|
23
26
|
if (!(await fileExists(contextDir))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision.js","sourceRoot":"","sources":["../../../src/commands/decision.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG7D,sBAAsB;AACtB,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,UAAU,GAAG,gCAAgC,CAAC;AAEpD,MAAM,UAAU,uBAAuB,CAAC,GAAQ;IAC9C,GAAG;SACA,OAAO,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;SAC5D,MAAM,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;SAClD,MAAM,CAAC,wBAAwB,EAAE,iDAAiD,CAAC;SACnF,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SACnD,MAAM,CAAC,mBAAmB,EAAE,gDAAgD,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;SACtG,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC5C,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;SAChD,MAAM,CAAC,KAAK,EACX,KAAa,EACb,OAOC,EACD,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,EAAE;
|
|
1
|
+
{"version":3,"file":"decision.js","sourceRoot":"","sources":["../../../src/commands/decision.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AA0E/B,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AA0E/B,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,QAgF7C"}
|
|
@@ -77,7 +77,10 @@ export function registerExportCommand(cli) {
|
|
|
77
77
|
.option('--print', 'Print to stdout after export')
|
|
78
78
|
.action(async (dir = process.cwd(), options) => {
|
|
79
79
|
const rootDir = dir;
|
|
80
|
-
const
|
|
80
|
+
const externalRoot = process.env.PRELUDE_ROOT;
|
|
81
|
+
const contextDir = externalRoot
|
|
82
|
+
? join(externalRoot, rootDir.split('/').pop())
|
|
83
|
+
: join(rootDir, CONTEXT_DIR);
|
|
81
84
|
// Check if .context exists
|
|
82
85
|
if (!(await fileExists(contextDir))) {
|
|
83
86
|
logger.error('.context/ directory not found. Run `prelude init` first.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAY/B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAY/B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,QAwF3C"}
|
|
@@ -9,7 +9,14 @@ export function registerInitCommand(cli) {
|
|
|
9
9
|
.option('--force', 'Overwrite existing .context/ directory')
|
|
10
10
|
.action(async (dir = process.cwd(), options) => {
|
|
11
11
|
const rootDir = dir;
|
|
12
|
-
|
|
12
|
+
// If PRELUDE_ROOT is set, use it as base for context storage.
|
|
13
|
+
// Otherwise default to repo-local .context/
|
|
14
|
+
const externalRoot = process.env.PRELUDE_ROOT;
|
|
15
|
+
console.log("DEBUG PRELUDE_ROOT:", externalRoot);
|
|
16
|
+
console.log("RUNTIME PRELUDE_ROOT:", process.env.PRELUDE_ROOT);
|
|
17
|
+
const contextDir = externalRoot
|
|
18
|
+
? join(externalRoot, rootDir.split('/').pop())
|
|
19
|
+
: join(rootDir, CONTEXT_DIR);
|
|
13
20
|
logger.init('Initializing Prelude context...');
|
|
14
21
|
// Check if .context already exists
|
|
15
22
|
if (await fileExists(contextDir) && !options.force) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,GAAG;SACA,OAAO,CAAC,YAAY,EAAE,uDAAuD,CAAC;SAC9E,MAAM,CAAC,SAAS,EAAE,wCAAwC,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE,EAAE,OAA4B,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../../src/commands/share.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAyE/B,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../../src/commands/share.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAyE/B,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,QA0E5C"}
|
|
@@ -74,7 +74,10 @@ export function registerShareCommand(cli) {
|
|
|
74
74
|
.option('--format <format>', 'Output format (md or json)', { default: 'md' })
|
|
75
75
|
.action(async (dir = process.cwd(), options) => {
|
|
76
76
|
const rootDir = dir;
|
|
77
|
-
const
|
|
77
|
+
const externalRoot = process.env.PRELUDE_ROOT;
|
|
78
|
+
const contextDir = externalRoot
|
|
79
|
+
? join(externalRoot, rootDir.split('/').pop())
|
|
80
|
+
: join(rootDir, CONTEXT_DIR);
|
|
78
81
|
// Check if .context exists
|
|
79
82
|
if (!(await fileExists(contextDir))) {
|
|
80
83
|
logger.error('.context/ directory not found. Run `prelude init` first.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../../src/commands/share.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../../src/commands/share.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface UpdateOptions {
|
|
2
|
+
force?: boolean;
|
|
3
|
+
dryRun?: boolean;
|
|
4
|
+
interactive?: boolean;
|
|
5
|
+
silent?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Update context by re-analyzing codebase
|
|
9
|
+
*/
|
|
10
|
+
export declare function update(options?: UpdateOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/update.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,iBAqHvD"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { StateManager } from '../core/state-manager.js';
|
|
4
|
+
import { ContextMerger } from '../core/merger.js';
|
|
5
|
+
import { inferProjectMetadata, inferStack, inferArchitecture, inferConstraints } from '../core/infer.js';
|
|
6
|
+
import { readJSON, writeJSON } from '../utils/fs.js';
|
|
7
|
+
import { logger } from '../utils/log.js';
|
|
8
|
+
/**
|
|
9
|
+
* Update context by re-analyzing codebase
|
|
10
|
+
*/
|
|
11
|
+
export async function update(options = {}) {
|
|
12
|
+
const externalRoot = process.env.PRELUDE_ROOT;
|
|
13
|
+
const contextDir = externalRoot
|
|
14
|
+
? join(externalRoot, process.cwd().split('/').pop())
|
|
15
|
+
: '.context';
|
|
16
|
+
// Check if context exists
|
|
17
|
+
if (!existsSync(contextDir)) {
|
|
18
|
+
logger.error('No .context directory found. Run `prelude init` first.');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
if (!options.silent) {
|
|
22
|
+
logger.info('🔄 Updating context...\n');
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
// Initialize state manager
|
|
26
|
+
const stateManager = new StateManager(contextDir);
|
|
27
|
+
// Create backup before updating
|
|
28
|
+
if (!options.dryRun) {
|
|
29
|
+
stateManager.backup();
|
|
30
|
+
if (!options.silent) {
|
|
31
|
+
logger.success('✓ Created backup of current state');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Read existing context
|
|
35
|
+
const existing = {
|
|
36
|
+
project: await readJSON(join(contextDir, 'project.json')),
|
|
37
|
+
stack: await readJSON(join(contextDir, 'stack.json')),
|
|
38
|
+
architecture: await readJSON(join(contextDir, 'architecture.json')),
|
|
39
|
+
constraints: await readJSON(join(contextDir, 'constraints.json')),
|
|
40
|
+
};
|
|
41
|
+
// Re-infer from codebase
|
|
42
|
+
if (!options.silent) {
|
|
43
|
+
logger.info('Analyzing codebase...');
|
|
44
|
+
}
|
|
45
|
+
const inferred = {
|
|
46
|
+
project: await inferProjectMetadata(process.cwd()),
|
|
47
|
+
stack: await inferStack(process.cwd()),
|
|
48
|
+
architecture: await inferArchitecture(process.cwd()),
|
|
49
|
+
constraints: await inferConstraints(process.cwd()),
|
|
50
|
+
};
|
|
51
|
+
if (options.force) {
|
|
52
|
+
// Force mode: overwrite everything except decisions/changelog
|
|
53
|
+
return await forceUpdate(contextDir, inferred, options);
|
|
54
|
+
}
|
|
55
|
+
// Smart merge mode
|
|
56
|
+
const merger = new ContextMerger(stateManager);
|
|
57
|
+
const projectResult = merger.mergeProject(existing.project, inferred.project);
|
|
58
|
+
const stackResult = merger.mergeStack(existing.stack, inferred.stack);
|
|
59
|
+
const architectureResult = merger.mergeArchitecture(existing.architecture, inferred.architecture);
|
|
60
|
+
const constraintsResult = merger.mergeConstraints(existing.constraints, inferred.constraints);
|
|
61
|
+
const allChanges = [
|
|
62
|
+
...projectResult.changes.map(c => ({ file: 'project.json', ...c })),
|
|
63
|
+
...stackResult.changes.map(c => ({ file: 'stack.json', ...c })),
|
|
64
|
+
...architectureResult.changes.map(c => ({ file: 'architecture.json', ...c })),
|
|
65
|
+
...constraintsResult.changes.map(c => ({ file: 'constraints.json', ...c })),
|
|
66
|
+
];
|
|
67
|
+
// Show changes
|
|
68
|
+
if (allChanges.length === 0) {
|
|
69
|
+
logger.success('✓ Context is up to date, no changes needed');
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (!options.silent) {
|
|
73
|
+
console.log('');
|
|
74
|
+
displayChanges(allChanges);
|
|
75
|
+
console.log('');
|
|
76
|
+
}
|
|
77
|
+
// Dry run - don't apply changes
|
|
78
|
+
if (options.dryRun) {
|
|
79
|
+
logger.info('🔍 Dry run complete - no changes applied');
|
|
80
|
+
logger.info('Run `prelude update` to apply these changes');
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
// Interactive mode - prompt for each change
|
|
84
|
+
if (options.interactive) {
|
|
85
|
+
logger.warn('Interactive mode not yet implemented - applying all changes');
|
|
86
|
+
// TODO: Implement interactive prompts
|
|
87
|
+
}
|
|
88
|
+
// Apply changes
|
|
89
|
+
await writeJSON(join(contextDir, 'project.json'), projectResult.merged);
|
|
90
|
+
await writeJSON(join(contextDir, 'stack.json'), stackResult.merged);
|
|
91
|
+
await writeJSON(join(contextDir, 'architecture.json'), architectureResult.merged);
|
|
92
|
+
await writeJSON(join(contextDir, 'constraints.json'), constraintsResult.merged);
|
|
93
|
+
// Update state tracking
|
|
94
|
+
trackAllFields(stateManager, 'project.json', projectResult.merged, inferred.project);
|
|
95
|
+
trackAllFields(stateManager, 'stack.json', stackResult.merged, inferred.stack);
|
|
96
|
+
trackAllFields(stateManager, 'architecture.json', architectureResult.merged, inferred.architecture);
|
|
97
|
+
trackAllFields(stateManager, 'constraints.json', constraintsResult.merged, inferred.constraints);
|
|
98
|
+
stateManager.save();
|
|
99
|
+
if (!options.silent) {
|
|
100
|
+
logger.success(`\n✅ Context updated successfully! (${allChanges.length} changes applied)`);
|
|
101
|
+
logger.info('ℹ️ Run `prelude export` to generate fresh output');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
logger.error(`Update failed: ${error.message}`);
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Force update - overwrites everything
|
|
111
|
+
*/
|
|
112
|
+
async function forceUpdate(contextDir, inferred, options) {
|
|
113
|
+
if (options.dryRun) {
|
|
114
|
+
logger.info('🔍 Force mode would overwrite all context files');
|
|
115
|
+
logger.info('(decisions.json and changelog.md will be preserved)');
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Write inferred context
|
|
119
|
+
await writeJSON(join(contextDir, 'project.json'), inferred.project);
|
|
120
|
+
await writeJSON(join(contextDir, 'stack.json'), inferred.stack);
|
|
121
|
+
await writeJSON(join(contextDir, 'architecture.json'), inferred.architecture);
|
|
122
|
+
await writeJSON(join(contextDir, 'constraints.json'), inferred.constraints);
|
|
123
|
+
// Preserve decisions and changelog (they're already on disk)
|
|
124
|
+
if (!options.silent) {
|
|
125
|
+
logger.success('✅ Force update complete');
|
|
126
|
+
logger.info('ℹ️ All context files overwritten (except decisions.json and changelog.md)');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Display changes in a readable format
|
|
131
|
+
*/
|
|
132
|
+
function displayChanges(changes) {
|
|
133
|
+
const grouped = changes.reduce((acc, change) => {
|
|
134
|
+
if (!acc[change.file])
|
|
135
|
+
acc[change.file] = [];
|
|
136
|
+
acc[change.file].push(change);
|
|
137
|
+
return acc;
|
|
138
|
+
}, {});
|
|
139
|
+
for (const [file, fileChanges] of Object.entries(grouped)) {
|
|
140
|
+
logger.info(`📄 ${file}:`);
|
|
141
|
+
for (const change of fileChanges) {
|
|
142
|
+
const icon = {
|
|
143
|
+
added: ' + ',
|
|
144
|
+
removed: ' - ',
|
|
145
|
+
modified: ' ~ ',
|
|
146
|
+
preserved: ' ✓ ',
|
|
147
|
+
}[change.type];
|
|
148
|
+
const color = {
|
|
149
|
+
added: '\x1b[32m', // Green
|
|
150
|
+
removed: '\x1b[31m', // Red
|
|
151
|
+
modified: '\x1b[33m', // Yellow
|
|
152
|
+
preserved: '\x1b[36m', // Cyan
|
|
153
|
+
}[change.type];
|
|
154
|
+
const reset = '\x1b[0m';
|
|
155
|
+
console.log(`${icon}${color}${change.field}${reset} - ${change.reason}`);
|
|
156
|
+
if (change.oldValue !== undefined) {
|
|
157
|
+
console.log(` Old: ${JSON.stringify(change.oldValue)}`);
|
|
158
|
+
}
|
|
159
|
+
if (change.newValue !== undefined) {
|
|
160
|
+
console.log(` New: ${JSON.stringify(change.newValue)}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
console.log('');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Track all fields in state manager
|
|
168
|
+
*/
|
|
169
|
+
function trackAllFields(stateManager, file, merged, inferred) {
|
|
170
|
+
for (const key of Object.keys(merged)) {
|
|
171
|
+
const mergedValue = merged[key];
|
|
172
|
+
const inferredValue = inferred[key];
|
|
173
|
+
// Skip undefined values
|
|
174
|
+
if (mergedValue === undefined)
|
|
175
|
+
continue;
|
|
176
|
+
// If values are the same, track as inferred
|
|
177
|
+
if (JSON.stringify(mergedValue) === JSON.stringify(inferredValue)) {
|
|
178
|
+
stateManager.trackInferred(file, key, mergedValue);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
// Otherwise, track as manual
|
|
182
|
+
stateManager.trackManual(file, key, mergedValue);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAO/B,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAO/B,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,QAiE5C"}
|
|
@@ -10,7 +10,10 @@ export function registerWatchCommand(cli) {
|
|
|
10
10
|
.option('--verbose', 'Show detailed logging')
|
|
11
11
|
.action(async (dir = process.cwd(), options) => {
|
|
12
12
|
const rootDir = dir;
|
|
13
|
-
const
|
|
13
|
+
const externalRoot = process.env.PRELUDE_ROOT;
|
|
14
|
+
const contextDir = externalRoot
|
|
15
|
+
? join(externalRoot, rootDir.split('/').pop())
|
|
16
|
+
: join(rootDir, CONTEXT_DIR);
|
|
14
17
|
// Check if .context exists
|
|
15
18
|
if (!(await fileExists(contextDir))) {
|
|
16
19
|
logger.error('.context/ directory not found. Run `prelude init` first.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/commands/watch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,GAAQ;IAC3C,GAAG;SACA,OAAO,CAAC,aAAa,EAAE,sCAAsC,CAAC;SAC9D,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;SACxC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE,EAAE,OAA8C,EAAE,EAAE;QAC5F,MAAM,OAAO,GAAG,GAAG,CAAC;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/commands/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { StateManager } from './state-manager.js';
|
|
2
|
+
import type { Project, Stack, Architecture, Constraints } from '../schema/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Strategies for merging different types of content
|
|
5
|
+
*/
|
|
6
|
+
export interface MergeResult<T> {
|
|
7
|
+
merged: T;
|
|
8
|
+
changes: MergeChange[];
|
|
9
|
+
}
|
|
10
|
+
export interface MergeChange {
|
|
11
|
+
field: string;
|
|
12
|
+
type: 'added' | 'removed' | 'modified' | 'preserved';
|
|
13
|
+
oldValue?: any;
|
|
14
|
+
newValue?: any;
|
|
15
|
+
reason: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Intelligent merger for context updates
|
|
19
|
+
*/
|
|
20
|
+
export declare class ContextMerger {
|
|
21
|
+
private stateManager;
|
|
22
|
+
constructor(stateManager: StateManager);
|
|
23
|
+
/**
|
|
24
|
+
* Merge project context
|
|
25
|
+
*/
|
|
26
|
+
mergeProject(existing: Project, inferred: Project): MergeResult<Project>;
|
|
27
|
+
/**
|
|
28
|
+
* Merge stack context
|
|
29
|
+
*/
|
|
30
|
+
mergeStack(existing: Stack, inferred: Stack): MergeResult<Stack>;
|
|
31
|
+
/**
|
|
32
|
+
* Merge architecture context
|
|
33
|
+
*/
|
|
34
|
+
mergeArchitecture(existing: Architecture, inferred: Architecture): MergeResult<Architecture>;
|
|
35
|
+
/**
|
|
36
|
+
* Merge constraints context
|
|
37
|
+
*/
|
|
38
|
+
mergeConstraints(existing: Constraints, inferred: Constraints): MergeResult<Constraints>;
|
|
39
|
+
/**
|
|
40
|
+
* Helper to get nested value by path
|
|
41
|
+
*/
|
|
42
|
+
private getNestedValue;
|
|
43
|
+
/**
|
|
44
|
+
* Helper to set nested value by path
|
|
45
|
+
*/
|
|
46
|
+
private setNestedValue;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=merger.d.ts.map
|