logicstamp-mcp 0.1.5 → 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/CHANGELOG.md +76 -1
- package/README.md +51 -31
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +46 -73
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/list-bundles.d.ts.map +1 -1
- package/dist/mcp/tools/list-bundles.js +11 -14
- package/dist/mcp/tools/list-bundles.js.map +1 -1
- package/dist/mcp/tools/read-bundle.d.ts.map +1 -1
- package/dist/mcp/tools/read-bundle.js +17 -17
- package/dist/mcp/tools/read-bundle.js.map +1 -1
- package/dist/mcp/tools/refresh-snapshot.d.ts.map +1 -1
- package/dist/mcp/tools/refresh-snapshot.js +21 -19
- package/dist/mcp/tools/refresh-snapshot.js.map +1 -1
- package/dist/mcp/tools/watch-status.d.ts.map +1 -1
- package/dist/mcp/tools/watch-status.js +20 -18
- package/dist/mcp/tools/watch-status.js.map +1 -1
- package/dist/mcp/utils/process-utils.d.ts +15 -0
- package/dist/mcp/utils/process-utils.d.ts.map +1 -0
- package/dist/mcp/utils/process-utils.js +24 -0
- package/dist/mcp/utils/process-utils.js.map +1 -0
- package/dist/types/schemas.d.ts +3 -0
- package/dist/types/schemas.d.ts.map +1 -1
- package/docs/logicstamp-for-llms.md +52 -6
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,74 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## [Unreleased]
|
|
11
|
+
|
|
12
|
+
### Roadmap
|
|
13
|
+
|
|
14
|
+
For a comprehensive roadmap with detailed status, priorities, and implementation plans, see [ROADMAP.md](ROADMAP.md).
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## [0.2.0] - 2026-03-03
|
|
19
|
+
|
|
20
|
+
### ⚠️ Breaking Changes
|
|
21
|
+
|
|
22
|
+
- **Minimum Node.js version is now >= 20.**
|
|
23
|
+
- logicstamp-mcp now requires Node.js 20 or higher.
|
|
24
|
+
- This aligns MCP with the `logicstamp-context` CLI runtime requirements.
|
|
25
|
+
- Users on Node.js 18 must upgrade to continue using MCP.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- **Enhanced Watch Mode Functionality and Documentation** ([#26](https://github.com/LogicStamp/logicstamp-mcp/pull/26)) - Improved watch mode detection and documentation clarity
|
|
30
|
+
- Improved descriptions in server tools to clarify the distinction between ROOT components and DEPENDENCIES
|
|
31
|
+
- Added cleanup of stale watch status files when the process is no longer running across multiple tools
|
|
32
|
+
- Updated watch status handling to include strict watch mode detection, enhancing user awareness of breaking change detection
|
|
33
|
+
- Enhanced tests to verify strict watch mode functionality and its reporting in various scenarios
|
|
34
|
+
- Updated schemas to reflect the new strict watch mode field in watch status outputs
|
|
35
|
+
|
|
36
|
+
- **Documentation Updates and Node.js Requirement** ([#27](https://github.com/LogicStamp/logicstamp-mcp/pull/27)) - Updated Node.js requirement and enhanced documentation clarity
|
|
37
|
+
- Updated Node.js version requirement to >= 20 across various documentation files for consistency
|
|
38
|
+
- Improved clarity in documentation regarding the distinction between ROOT components and DEPENDENCIES
|
|
39
|
+
- Enhanced descriptions in multiple guides to reflect the latest tool capabilities and usage patterns
|
|
40
|
+
- Adjusted default behavior notes for `skipIfWatchActive` in the `refresh_snapshot` command
|
|
41
|
+
|
|
42
|
+
- **Documentation Improvements** ([#28](https://github.com/LogicStamp/logicstamp-mcp/pull/28)) - Updated README and roadmap for clarity and consistency
|
|
43
|
+
- Revised Node.js version requirement to >= 20 across documentation
|
|
44
|
+
- Enhanced README with a new Table of Contents and improved descriptions for better navigation and understanding
|
|
45
|
+
- Updated roadmap with the correct last updated date format
|
|
46
|
+
- Adjusted various sections for clarity, including prerequisites and features, to reflect the latest tool capabilities
|
|
47
|
+
|
|
48
|
+
- **Test Coverage Improvements** ([#29](https://github.com/LogicStamp/logicstamp-mcp/pull/29)) - Enhanced test coverage for better code quality assurance
|
|
49
|
+
- Added comprehensive tests for watch mode detection and direct projectPath access in `list-bundles.ts` and `read-bundle.ts`
|
|
50
|
+
- Added tests for TypeScript file validation and LogicStampIndex type validation in `read-bundle.ts`
|
|
51
|
+
- Added tests for error paths in `read-logicstamp-docs.ts` including package root detection and fallback strategies
|
|
52
|
+
- Added tests for server parameter validation edge cases
|
|
53
|
+
- Improved branch coverage for error handling paths and edge cases
|
|
54
|
+
- All new tests passing with improved confidence in error handling and watch mode functionality
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## [0.1.6] - 2026-02-09
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
|
|
61
|
+
- **Tool Description Optimization** - Optimized all 7 MCP tool descriptions for better LLM comprehension
|
|
62
|
+
- Reduced description length by ~40-50% while preserving all critical information
|
|
63
|
+
- Removed redundancy (duplicate "WHAT IT DOES" sections, repeated watch mode explanations)
|
|
64
|
+
- Consolidated related information into more scannable formats
|
|
65
|
+
- Improved structure: Warning → What → Returns → When → Next → Options → Docs
|
|
66
|
+
- All implementation details preserved - no functional changes
|
|
67
|
+
- Watch mode workflows now clearly documented in all relevant tools
|
|
68
|
+
- Makes it easier for LLMs to understand and use LogicStamp correctly
|
|
69
|
+
|
|
70
|
+
- **Code Refactoring** - Extracted duplicated `isProcessRunning` function into shared utility
|
|
71
|
+
- Created `src/mcp/utils/process-utils.ts` with shared process checking logic
|
|
72
|
+
- Removed duplicate implementations from `watch-status.ts`, `read-bundle.ts`, `refresh-snapshot.ts`, and `list-bundles.ts`
|
|
73
|
+
- Improves code maintainability and makes future platform-specific fixes easier
|
|
74
|
+
- No functional changes - behavior remains identical
|
|
75
|
+
|
|
8
76
|
## [0.1.5] - 2026-01-21
|
|
9
77
|
|
|
10
78
|
### Added
|
|
@@ -186,13 +254,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
186
254
|
#### Core Features
|
|
187
255
|
- **MCP Server Implementation** - Full Model Context Protocol server for LogicStamp Context
|
|
188
256
|
- **Snapshot Management** - In-memory snapshot state management with automatic cleanup (1-hour TTL)
|
|
189
|
-
- **
|
|
257
|
+
- **7 MCP Tools** - Complete tool suite for codebase analysis:
|
|
190
258
|
- `logicstamp_refresh_snapshot` - Create snapshots of codebase state
|
|
191
259
|
- `logicstamp_list_bundles` - List available component bundles
|
|
192
260
|
- `logicstamp_read_bundle` - Read full component contracts and dependency graphs
|
|
193
261
|
- `logicstamp_compare_snapshot` - Detect changes after edits (drift detection)
|
|
194
262
|
- `logicstamp_compare_modes` - Generate token cost comparisons across modes
|
|
195
263
|
- `logicstamp_read_logicstamp_docs` - Access LogicStamp documentation
|
|
264
|
+
- `logicstamp_watch_status` - Check if watch mode is active
|
|
196
265
|
|
|
197
266
|
#### Analysis Capabilities
|
|
198
267
|
- **Component Contract Extraction** - Extract props, state, hooks, and dependencies
|
|
@@ -265,6 +334,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
265
334
|
- Requires `logicstamp-context` CLI to be installed globally (`npm install -g logicstamp-context`)
|
|
266
335
|
- All tools are read-only - they analyze but never modify your codebase
|
|
267
336
|
|
|
337
|
+
[Unreleased]: https://github.com/LogicStamp/logicstamp-mcp/compare/v0.2.0...HEAD
|
|
338
|
+
|
|
339
|
+
[0.2.0]: https://github.com/LogicStamp/logicstamp-mcp/releases/tag/v0.2.0
|
|
340
|
+
|
|
341
|
+
[0.1.6]: https://github.com/LogicStamp/logicstamp-mcp/releases/tag/v0.1.6
|
|
342
|
+
|
|
268
343
|
[0.1.5]: https://github.com/LogicStamp/logicstamp-mcp/releases/tag/v0.1.5
|
|
269
344
|
|
|
270
345
|
[0.1.4]: https://github.com/LogicStamp/logicstamp-mcp/releases/tag/v0.1.4
|
package/README.md
CHANGED
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
<img src="./assets/logicstamp-fox.svg" alt="LogicStamp Fox Mascot" width="100" style="min-width: 80px;">
|
|
15
15
|
</a>
|
|
16
16
|
|
|
17
|
-
[](https://www.npmjs.com/package/logicstamp-mcp)
|
|
18
18
|

|
|
19
19
|
[](LICENSE)
|
|
20
|
-

|
|
21
21
|
[](https://github.com/LogicStamp/logicstamp-mcp/actions)
|
|
22
22
|
|
|
23
23
|
<br/>
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
**Model Context Protocol (MCP) server for [LogicStamp Context](https://github.com/LogicStamp/logicstamp-context), the Context Compiler for TypeScript - exposing deterministic architectural contracts to AI agents via secure, structured context delivery.**
|
|
26
26
|
|
|
27
27
|
</div>
|
|
28
28
|
|
|
@@ -34,6 +34,25 @@
|
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
37
|
+
<details>
|
|
38
|
+
<summary><strong>📑 Table of Contents</strong></summary>
|
|
39
|
+
|
|
40
|
+
- [Overview](#overview)
|
|
41
|
+
- [Features](#-features)
|
|
42
|
+
- [Prerequisites](#prerequisites)
|
|
43
|
+
- [Quick Start](#quick-start)
|
|
44
|
+
- [Usage Example](#usage-example)
|
|
45
|
+
- [Tool Reference](#tool-reference)
|
|
46
|
+
- [Startup Ritual](#startup-ritual)
|
|
47
|
+
- [Documentation](#documentation)
|
|
48
|
+
- [Troubleshooting](#troubleshooting)
|
|
49
|
+
- [Development](#development)
|
|
50
|
+
- [Architecture](#architecture)
|
|
51
|
+
- [Requirements](#requirements)
|
|
52
|
+
- [Need Help?](#need-help)
|
|
53
|
+
- [License](#license)
|
|
54
|
+
</details>
|
|
55
|
+
|
|
37
56
|
## Overview
|
|
38
57
|
|
|
39
58
|
This MCP server provides AI assistants with structured access to your codebase through LogicStamp Context's analysis engine. It acts as a thin wrapper around the `stamp` CLI, offering:
|
|
@@ -45,7 +64,7 @@ This MCP server provides AI assistants with structured access to your codebase t
|
|
|
45
64
|
- **Drift detection** - Verify changes after modifications
|
|
46
65
|
- **Token optimization** - Control context size with configurable code inclusion modes
|
|
47
66
|
|
|
48
|
-
## Features
|
|
67
|
+
## ⚡ Features
|
|
49
68
|
|
|
50
69
|
### 7 Tools
|
|
51
70
|
|
|
@@ -67,7 +86,7 @@ This MCP server provides AI assistants with structured access to your codebase t
|
|
|
67
86
|
|
|
68
87
|
## Prerequisites
|
|
69
88
|
|
|
70
|
-
1. **Node.js** >=
|
|
89
|
+
1. **Node.js** >= 20
|
|
71
90
|
2. **LogicStamp Context CLI** - The `stamp` command must be installed and available in PATH
|
|
72
91
|
```bash
|
|
73
92
|
npm install -g logicstamp-context
|
|
@@ -138,7 +157,8 @@ For more examples and workflows, see [Usage Examples](docs/mcp_integration.md#ll
|
|
|
138
157
|
|
|
139
158
|
The MCP server provides 7 tools. For complete API documentation with input/output examples, see the [MCP Integration Guide](docs/mcp_integration.md#mcp-tools-mvp).
|
|
140
159
|
|
|
141
|
-
|
|
160
|
+
<details>
|
|
161
|
+
<summary><strong>📋 Quick Reference</strong></summary>
|
|
142
162
|
|
|
143
163
|
**logicstamp_refresh_snapshot** - Create a snapshot of the current codebase state (STEP 1)
|
|
144
164
|
- Parameters: `profile` (optional), `mode` (optional), `includeStyle` (optional), `depth` (optional), `projectPath` (required), `cleanCache` (optional), `skipIfWatchActive` (optional)
|
|
@@ -188,6 +208,8 @@ The MCP server provides 7 tools. For complete API documentation with input/outpu
|
|
|
188
208
|
- **Use this** to check if `stamp context --watch` is running before calling refresh_snapshot
|
|
189
209
|
- **When watch mode is active:** Context is being kept fresh automatically via incremental rebuilds - you can skip regeneration and just read existing bundles
|
|
190
210
|
|
|
211
|
+
</details>
|
|
212
|
+
|
|
191
213
|
## Startup Ritual
|
|
192
214
|
|
|
193
215
|
When starting work with a new project, use the [Startup Ritual](docs/startup-ritual.md) to guide the AI through the recommended workflow. This ensures the AI:
|
|
@@ -287,7 +309,7 @@ When running manually, the server will wait for stdin input. Press `Ctrl+C` to e
|
|
|
287
309
|
npm run dev
|
|
288
310
|
```
|
|
289
311
|
|
|
290
|
-
For development details, see [MCP Integration Guide](docs/mcp_integration.md)
|
|
312
|
+
For development details, see [MCP Integration Guide](docs/mcp_integration.md).
|
|
291
313
|
|
|
292
314
|
## Architecture
|
|
293
315
|
|
|
@@ -302,39 +324,37 @@ For detailed architecture documentation, see [MCP Integration Guide](docs/mcp_in
|
|
|
302
324
|
|
|
303
325
|
## Requirements
|
|
304
326
|
|
|
305
|
-
|
|
306
|
-
- **`stamp context` command** - Must be installed and available in PATH
|
|
307
|
-
- The CLI generates `context_main.json` files (already JSON format)
|
|
308
|
-
- The MCP reads these JSON files directly - no special JSON output flags needed
|
|
309
|
-
|
|
310
|
-
## License
|
|
311
|
-
|
|
312
|
-
MIT
|
|
313
|
-
|
|
314
|
-
## Branding & Attribution
|
|
327
|
+
The LogicStamp MCP server requires:
|
|
315
328
|
|
|
316
|
-
|
|
329
|
+
- Node.js >= 20
|
|
330
|
+
- TypeScript codebase (React, Next.js, Vue (TS/TSX), Express, or NestJS)
|
|
331
|
+
- **`stamp context` command** - Must be installed and available in PATH:
|
|
332
|
+
- The CLI generates `context_main.json` files
|
|
333
|
+
- The MCP server reads these JSON files directly (no special flags required)
|
|
317
334
|
|
|
318
|
-
|
|
335
|
+
## Need Help?
|
|
319
336
|
|
|
320
|
-
|
|
337
|
+
- **Issues** - [github.com/LogicStamp/logicstamp-mcp/issues](https://github.com/LogicStamp/logicstamp-mcp/issues)
|
|
338
|
+
- **Roadmap** - [logicstamp.dev/roadmap](https://logicstamp.dev/roadmap)
|
|
321
339
|
|
|
322
|
-
|
|
340
|
+
## License
|
|
323
341
|
|
|
324
|
-
|
|
342
|
+
[MIT](LICENSE)
|
|
325
343
|
|
|
326
|
-
|
|
344
|
+
---
|
|
327
345
|
|
|
328
|
-
|
|
346
|
+
<details>
|
|
347
|
+
<summary>Branding & Attribution</summary>
|
|
329
348
|
|
|
330
|
-
|
|
349
|
+
The LogicStamp Fox mascot and related brand assets are © 2025 Amit Levi. These assets may not be used for third-party branding without permission.
|
|
350
|
+
</details>
|
|
331
351
|
|
|
332
|
-
|
|
352
|
+
<details>
|
|
353
|
+
<summary>Contributing</summary>
|
|
333
354
|
|
|
334
|
-
See [
|
|
355
|
+
Issues and PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
335
356
|
|
|
336
|
-
|
|
357
|
+
This project follows a [Code of Conduct](CODE_OF_CONDUCT.md).
|
|
358
|
+
</details>
|
|
337
359
|
|
|
338
|
-
|
|
339
|
-
- [LogicStamp Context](https://github.com/LogicStamp/logicstamp-context) - CLI repository
|
|
340
|
-
- [Model Context Protocol](https://modelcontextprotocol.io/) - MCP specification
|
|
360
|
+
**Links:** [Website](https://logicstamp.dev) · [GitHub](https://github.com/LogicStamp/logicstamp-mcp) · [CLI](https://github.com/LogicStamp/logicstamp-context) · [Changelog](https://github.com/LogicStamp/logicstamp-mcp/blob/main/CHANGELOG.md)
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAkBnE;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAkBnE;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA8YrC;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CASjD"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -18,7 +18,7 @@ import { watchStatus } from './tools/watch-status.js';
|
|
|
18
18
|
export function createServer() {
|
|
19
19
|
const server = new Server({
|
|
20
20
|
name: 'logicstamp-mcp',
|
|
21
|
-
version: '0.1.
|
|
21
|
+
version: '0.1.6',
|
|
22
22
|
}, {
|
|
23
23
|
capabilities: {
|
|
24
24
|
tools: {},
|
|
@@ -32,25 +32,14 @@ export function createServer() {
|
|
|
32
32
|
tools: [
|
|
33
33
|
{
|
|
34
34
|
name: 'logicstamp_refresh_snapshot',
|
|
35
|
-
description: '⚠️ FIRST: Call logicstamp_watch_status to
|
|
36
|
-
'
|
|
37
|
-
'
|
|
38
|
-
'WHAT IT DOES: Runs `stamp context` to regenerate all AI-ready bundles. This is SLOW compared to reading existing context. ' +
|
|
39
|
-
'DEFAULT BEHAVIOR: skipIfWatchActive=true, so if watch mode is running, this tool automatically skips regeneration and reads existing files. ' +
|
|
40
|
-
'WHAT IT DOES: Runs `stamp context` which analyzes your React/TypeScript codebase and Node.js backend applications (Express.js, NestJS) and generates structured context files optimized for AI consumption: ' +
|
|
41
|
-
'(1) `context_main.json` - Main index with folder metadata, summary statistics, and folder entries. This is your entry point to discover all components. ' +
|
|
42
|
-
'(2) Multiple `context.json` files - One per folder containing component bundles with contracts, dependency graphs, and relationships. ' +
|
|
43
|
-
'These files are STRUCTURED DATA, not raw source - they capture the complete architecture and relationships in your codebase. ' +
|
|
35
|
+
description: '⚠️ FIRST: Call logicstamp_watch_status! If watch mode is ACTIVE → SKIP this tool, go to list_bundles → read_bundle (context is fresh). ' +
|
|
36
|
+
'Use when: watch mode INACTIVE, first-time analysis, or after large changes. Default skipIfWatchActive=true (auto-skips regeneration if watch mode active). ' +
|
|
37
|
+
'WHAT IT DOES: Runs `stamp context` to analyze React/TypeScript/Node.js codebases (Next.js, Express.js, NestJS) and generate structured context files (context_main.json + per-folder context.json bundles). These are STRUCTURED DATA, not raw source. SLOW compared to reading existing context. ' +
|
|
44
38
|
'WHAT YOU GET: Summary statistics (component counts, token estimates, folder structure) and a snapshotId. If watch mode is active, also includes watchMode status. ' +
|
|
45
39
|
'IMPORTANT: This summary does NOT include component details, props, dependencies, or style metadata. ' +
|
|
46
|
-
'WHAT TO DO NEXT: (
|
|
47
|
-
'(
|
|
48
|
-
'
|
|
49
|
-
'Style data appears in the "style" field of UIFContract when reading bundles - the summary does NOT show style info. ' +
|
|
50
|
-
'Use includeStyle=true for design system analysis, visual consistency checks, or when the user asks about styling, colors, spacing, animations, or visual design. ' +
|
|
51
|
-
'DEPTH PARAMETER: Default depth=2 includes nested components (App → Hero → Button). ' +
|
|
52
|
-
'For projects that only need direct dependencies, set depth=1 to include direct dependencies only (App → Hero). ' +
|
|
53
|
-
'Depth 2 ensures nested components are included in dependency graphs with their contracts and styles. ' +
|
|
40
|
+
'WHAT TO DO NEXT: list_bundles(snapshotId|projectPath) → read_bundle(snapshotId|projectPath, bundlePath). Use projectPath when watch mode is active (no snapshotId needed). ' +
|
|
41
|
+
'STYLE METADATA: Set includeStyle=true to extract visual/design info (Tailwind/SCSS/animations/colors/spacing). Appears in bundle "style" field, NOT in summary. Use for design system analysis or when user asks about styling/colors/animations. ' +
|
|
42
|
+
'DEPTH PARAMETER: Default depth=2 includes nested components (App → Hero → Button) with contracts and styles. Set depth=1 for direct dependencies only (App → Hero). ' +
|
|
54
43
|
'PREFER BUNDLES OVER RAW CODE: These bundles are pre-parsed summaries optimized for AI - use them instead of reading raw .ts/.tsx files when possible. ' +
|
|
55
44
|
'If you\'re unsure how LogicStamp works, call logicstamp_read_logicstamp_docs first.',
|
|
56
45
|
inputSchema: {
|
|
@@ -98,12 +87,12 @@ export function createServer() {
|
|
|
98
87
|
},
|
|
99
88
|
{
|
|
100
89
|
name: 'logicstamp_list_bundles',
|
|
101
|
-
description: '
|
|
102
|
-
'
|
|
103
|
-
'
|
|
104
|
-
'
|
|
105
|
-
'
|
|
106
|
-
'
|
|
90
|
+
description: 'Lists all ROOT bundles from context_main.json. Returns bundle catalog (component names, file paths, bundle paths, token estimates). ' +
|
|
91
|
+
'IMPORTANT: LogicStamp organizes components into ROOT components (have their own bundles, listed here) and DEPENDENCIES (included in importing root\'s bundle.graph.nodes[], not listed here). ' +
|
|
92
|
+
'If a component isn\'t in this list, it\'s a dependency - find which root imports it, then read that root\'s bundle to see the dependency contract in bundle.graph.nodes[]. ' +
|
|
93
|
+
'Use bundle paths in read_bundle to get component contracts. ' +
|
|
94
|
+
'Watch mode: Use projectPath directly (no snapshotId needed). Filter: folderPrefix="src/components" to filter by directory. ' +
|
|
95
|
+
'Next: read_bundle(snapshotId|projectPath, bundlePath).',
|
|
107
96
|
inputSchema: {
|
|
108
97
|
type: 'object',
|
|
109
98
|
properties: {
|
|
@@ -124,14 +113,13 @@ export function createServer() {
|
|
|
124
113
|
},
|
|
125
114
|
{
|
|
126
115
|
name: 'logicstamp_read_bundle',
|
|
127
|
-
description: '
|
|
128
|
-
'
|
|
129
|
-
'
|
|
130
|
-
'
|
|
131
|
-
'
|
|
132
|
-
'UIFContract
|
|
133
|
-
'
|
|
134
|
-
'Use bundlePath="context_main.json" for project overview, or specific folder paths from list_bundles for component details.',
|
|
116
|
+
description: 'Reads bundle/index file to get component contracts and dependency graphs. Reads context_main.json (project overview) or folder context.json (component contracts). ' +
|
|
117
|
+
'These are pre-parsed summaries optimized for AI - PREFER over raw .ts/.tsx files. ' +
|
|
118
|
+
'ROOT vs DEPENDENCY: Root components have their own bundles (use rootComponent param). Dependencies appear in bundle.graph.nodes[] of the root that imports them. ' +
|
|
119
|
+
'If a component isn\'t found as root, it\'s a dependency - read bundles that might import it and check bundle.graph.nodes[] for the dependency contract. ' +
|
|
120
|
+
'Bundle contains: entryId, graph.nodes[] (UIFContract for root + dependencies), graph.edges[] (dependencies), meta.missing[] (unresolved). ' +
|
|
121
|
+
'UIFContract: kind, description, props, emits, state, exports, semanticHash, optional style metadata. ' +
|
|
122
|
+
'Watch mode: Use projectPath directly (no snapshotId needed). Use bundlePath="context_main.json" for overview, or folder paths from list_bundles for details.',
|
|
135
123
|
inputSchema: {
|
|
136
124
|
type: 'object',
|
|
137
125
|
properties: {
|
|
@@ -149,7 +137,7 @@ export function createServer() {
|
|
|
149
137
|
},
|
|
150
138
|
rootComponent: {
|
|
151
139
|
type: 'string',
|
|
152
|
-
description: 'Specific
|
|
140
|
+
description: 'Specific ROOT component name to filter within the bundle file (optional). Only works for root components (listed in list_bundles). If omitted, returns the first bundle. Note: Dependencies appear in bundle.graph.nodes[] of the root that imports them, not as separate root bundles.',
|
|
153
141
|
},
|
|
154
142
|
},
|
|
155
143
|
required: ['bundlePath'],
|
|
@@ -157,21 +145,13 @@ export function createServer() {
|
|
|
157
145
|
},
|
|
158
146
|
{
|
|
159
147
|
name: 'logicstamp_compare_snapshot',
|
|
160
|
-
description: '
|
|
161
|
-
'
|
|
162
|
-
'
|
|
163
|
-
'
|
|
164
|
-
'
|
|
165
|
-
'
|
|
166
|
-
'
|
|
167
|
-
'REGENERATION MODE: By default (forceRegenerate: false), reads existing context_main.json from disk (fast, assumes context is fresh). ' +
|
|
168
|
-
'Set forceRegenerate: true to run `stamp context` before comparing (ensures fresh context files with latest structured data). ' +
|
|
169
|
-
'STYLE METADATA: Set includeStyle: true (with forceRegenerate: true) to include style metadata in comparison. ' +
|
|
170
|
-
'If forceRegenerate is false, compares whatever is on disk (may not have style metadata). ' +
|
|
171
|
-
'DEPTH PARAMETER: IMPORTANT - When forceRegenerate: true, you can set depth to control dependency traversal depth. ' +
|
|
172
|
-
'By default, dependency graphs include nested components (depth=2). Set depth=1 for direct dependencies only. ' +
|
|
173
|
-
'BASELINE OPTIONS: Compare against "disk" (current snapshot), "snapshot" (stored snapshot), or "git:<ref>" (future: git baseline). ' +
|
|
174
|
-
'ERROR HANDLING: If context_main.json is missing and forceRegenerate is false, fails with clear error - run logicstamp_refresh_snapshot first, or use forceRegenerate: true to regenerate automatically.',
|
|
148
|
+
description: 'Compares current snapshot with baseline to detect changes. Reads context_main.json and folder context.json files. ' +
|
|
149
|
+
'Detects: ADDED/REMOVED/CHANGED/UNCHANGED folders/components (props, hooks, imports, semantic hash changes). Returns structured diff with token deltas. ' +
|
|
150
|
+
'Use after editing files to verify changes (like Jest snapshots - detects contract drift, not just file changes). ' +
|
|
151
|
+
'Default (forceRegenerate=false): Reads from disk (fast, assumes fresh). Set forceRegenerate=true to regenerate before comparing. ' +
|
|
152
|
+
'Style: Set includeStyle=true (with forceRegenerate=true) to include style metadata. Depth: Set depth when forceRegenerate=true (default=2 nested, 1=direct only). ' +
|
|
153
|
+
'Baseline: "disk" (current snapshot, default), "snapshot" (stored), or "git:<ref>" (future). ' +
|
|
154
|
+
'Error: If context_main.json missing and forceRegenerate=false, fails - run refresh_snapshot first or use forceRegenerate=true.',
|
|
175
155
|
inputSchema: {
|
|
176
156
|
type: 'object',
|
|
177
157
|
properties: {
|
|
@@ -221,13 +201,11 @@ export function createServer() {
|
|
|
221
201
|
},
|
|
222
202
|
{
|
|
223
203
|
name: 'logicstamp_compare_modes',
|
|
224
|
-
description: '
|
|
225
|
-
'
|
|
226
|
-
'
|
|
227
|
-
'
|
|
228
|
-
'
|
|
229
|
-
'WHEN TO USE: (1) Before generating context to understand token costs, (2) User asks about token budgets/optimization/cost analysis, (3) Need to decide between modes (none/header/header+style/full), (4) Evaluate token impact of including style metadata, (5) Compare LogicStamp efficiency vs raw source files. ' +
|
|
230
|
-
'PERFORMANCE: Takes 2-3x longer than normal generation (regenerates contracts with/without style for accurate comparison).',
|
|
204
|
+
description: 'Generates token cost comparison across all modes (none/header/header+style/full) to help choose optimal mode. ' +
|
|
205
|
+
'Executes `stamp context --compare-modes --stats` and returns token counts (GPT-4o-mini/Claude), savings vs raw source (~70% for header) and vs full context, file stats. ' +
|
|
206
|
+
'Modes: none (~79% savings), header (~65%, recommended), header+style (~52%), full (no savings). ' +
|
|
207
|
+
'Use before generating context, when user asks about token budgets, or to evaluate style metadata impact. ' +
|
|
208
|
+
'Performance: Takes 2-3x longer (regenerates with/without style for accuracy).',
|
|
231
209
|
inputSchema: {
|
|
232
210
|
type: 'object',
|
|
233
211
|
properties: {
|
|
@@ -245,12 +223,11 @@ export function createServer() {
|
|
|
245
223
|
},
|
|
246
224
|
{
|
|
247
225
|
name: 'logicstamp_read_logicstamp_docs',
|
|
248
|
-
description: '
|
|
249
|
-
'
|
|
250
|
-
'
|
|
251
|
-
'
|
|
252
|
-
'
|
|
253
|
-
'The documentation explains: what LogicStamp is, why bundles are preferred over raw code, the recommended workflow (refresh → list → read), how to understand bundle structure, and best practices.',
|
|
226
|
+
description: 'Returns comprehensive LogicStamp documentation (logicstamp-for-llms.md guide, usage, UIF contracts, schema, CLI commands, limitations). ' +
|
|
227
|
+
'Returns complete doc bundle with key concepts, workflow instructions, and best practices. ' +
|
|
228
|
+
'Use when: unsure how LogicStamp works, starting new project, need bundle structure/contract format, or want recommended workflow. ' +
|
|
229
|
+
'Escape hatch: if confused about LogicStamp, call this first. ' +
|
|
230
|
+
'Explains: what LogicStamp is, why bundles over raw code, workflow (refresh → list → read), bundle structure, best practices.',
|
|
254
231
|
inputSchema: {
|
|
255
232
|
type: 'object',
|
|
256
233
|
properties: {},
|
|
@@ -258,18 +235,14 @@ export function createServer() {
|
|
|
258
235
|
},
|
|
259
236
|
{
|
|
260
237
|
name: 'logicstamp_watch_status',
|
|
261
|
-
description: '⚠️ CALL THIS FIRST before any other LogicStamp tool! ' +
|
|
262
|
-
'
|
|
263
|
-
'
|
|
264
|
-
'
|
|
265
|
-
'
|
|
266
|
-
'
|
|
267
|
-
'
|
|
268
|
-
'
|
|
269
|
-
'(2) Change detection - shows what changed (props, hooks, state, components), ' +
|
|
270
|
-
'(3) Debouncing - batches rapid changes (500ms delay), ' +
|
|
271
|
-
'(4) Optional log file - structured change logs for tracking modifications. ' +
|
|
272
|
-
'RECENT LOGS: Set includeRecentLogs=true to see the most recent regeneration events.',
|
|
238
|
+
description: '⚠️ CALL THIS FIRST before any other LogicStamp tool! Checks if watch mode (`stamp context --watch`) is active. ' +
|
|
239
|
+
'If ACTIVE: SKIP refresh_snapshot, go to list_bundles → read_bundle (context fresh via incremental rebuilds). ' +
|
|
240
|
+
'If INACTIVE: Call refresh_snapshot first. Enables zero-cost instant context access when watch mode running. ' +
|
|
241
|
+
'Reads .logicstamp/context_watch-status.json and verifies process is running. ' +
|
|
242
|
+
'Watch features: Incremental rebuilds (affected bundles only), change detection (props/hooks/state/components), debouncing (500ms), optional log file. ' +
|
|
243
|
+
'Strict watch mode (`stamp context --watch --strict-watch`): Also detects breaking changes. Returns strictWatch=true when enabled. ' +
|
|
244
|
+
'Detection: Reads strictWatch field from .logicstamp/context_watch-status.json file (when LogicStamp CLI includes it). ' +
|
|
245
|
+
'Set includeRecentLogs=true to see recent regeneration events.',
|
|
273
246
|
inputSchema: {
|
|
274
247
|
type: 'object',
|
|
275
248
|
properties: {
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,SAAS,EACT,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,6BAA6B;oBACnC,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-bundles.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list-bundles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAGlB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-bundles.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list-bundles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAGlB,MAAM,wBAAwB,CAAC;AAgDhC,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+HrF"}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* Tool 2: logicstamp_list_bundles
|
|
3
3
|
* List available bundles in a snapshot for selective loading
|
|
4
4
|
*/
|
|
5
|
-
import { readFile, access } from 'fs/promises';
|
|
5
|
+
import { readFile, access, unlink } from 'fs/promises';
|
|
6
6
|
import { join, resolve } from 'path';
|
|
7
7
|
import { constants } from 'fs';
|
|
8
8
|
import { stateManager } from '../state.js';
|
|
9
|
+
import { isProcessRunning } from '../utils/process-utils.js';
|
|
9
10
|
/**
|
|
10
11
|
* Check if a file exists
|
|
11
12
|
*/
|
|
@@ -19,19 +20,8 @@ async function exists(path) {
|
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
22
|
-
* Check if
|
|
23
|
-
|
|
24
|
-
function isProcessRunning(pid) {
|
|
25
|
-
try {
|
|
26
|
-
process.kill(pid, 0);
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Check if watch mode is active for the project
|
|
23
|
+
* Check if watch mode is active for the project.
|
|
24
|
+
* Cleans up stale status files when the process is no longer running.
|
|
35
25
|
*/
|
|
36
26
|
async function checkWatchMode(projectPath) {
|
|
37
27
|
const statusPath = join(projectPath, '.logicstamp', 'context_watch-status.json');
|
|
@@ -43,6 +33,13 @@ async function checkWatchMode(projectPath) {
|
|
|
43
33
|
const status = JSON.parse(content);
|
|
44
34
|
// Verify the process is still running
|
|
45
35
|
if (status.pid && !isProcessRunning(status.pid)) {
|
|
36
|
+
// Clean up stale file
|
|
37
|
+
try {
|
|
38
|
+
await unlink(statusPath);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Ignore cleanup errors
|
|
42
|
+
}
|
|
46
43
|
return false;
|
|
47
44
|
}
|
|
48
45
|
return status.active === true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-bundles.js","sourceRoot":"","sources":["../../../src/mcp/tools/list-bundles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"list-bundles.js","sourceRoot":"","sources":["../../../src/mcp/tools/list-bundles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-bundle.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/read-bundle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAGjB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"read-bundle.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/read-bundle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAGjB,MAAM,wBAAwB,CAAC;AAgDhC,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwKlF"}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* Tool 3: logicstamp_read_bundle
|
|
3
3
|
* Return the full bundle (contract + graph) for a specific component
|
|
4
4
|
*/
|
|
5
|
-
import { readFile, access } from 'fs/promises';
|
|
5
|
+
import { readFile, access, unlink } from 'fs/promises';
|
|
6
6
|
import { join, resolve } from 'path';
|
|
7
7
|
import { constants } from 'fs';
|
|
8
8
|
import { stateManager } from '../state.js';
|
|
9
|
+
import { isProcessRunning } from '../utils/process-utils.js';
|
|
9
10
|
/**
|
|
10
11
|
* Check if a file exists
|
|
11
12
|
*/
|
|
@@ -19,19 +20,8 @@ async function exists(path) {
|
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
22
|
-
* Check if
|
|
23
|
-
|
|
24
|
-
function isProcessRunning(pid) {
|
|
25
|
-
try {
|
|
26
|
-
process.kill(pid, 0);
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Check if watch mode is active for the project
|
|
23
|
+
* Check if watch mode is active for the project.
|
|
24
|
+
* Cleans up stale status files when the process is no longer running.
|
|
35
25
|
*/
|
|
36
26
|
async function checkWatchMode(projectPath) {
|
|
37
27
|
const statusPath = join(projectPath, '.logicstamp', 'context_watch-status.json');
|
|
@@ -43,6 +33,13 @@ async function checkWatchMode(projectPath) {
|
|
|
43
33
|
const status = JSON.parse(content);
|
|
44
34
|
// Verify the process is still running
|
|
45
35
|
if (status.pid && !isProcessRunning(status.pid)) {
|
|
36
|
+
// Clean up stale file
|
|
37
|
+
try {
|
|
38
|
+
await unlink(statusPath);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Ignore cleanup errors
|
|
42
|
+
}
|
|
46
43
|
return false;
|
|
47
44
|
}
|
|
48
45
|
return status.active === true;
|
|
@@ -143,9 +140,12 @@ export async function readBundle(input) {
|
|
|
143
140
|
});
|
|
144
141
|
if (!found) {
|
|
145
142
|
throw new Error(`Bundle not found for component "${input.rootComponent}" in ${input.bundlePath}. ` +
|
|
146
|
-
`
|
|
147
|
-
`
|
|
148
|
-
`
|
|
143
|
+
`IMPORTANT: LogicStamp organizes components into ROOT components (have their own bundles) and DEPENDENCIES (included in importing root's bundle). ` +
|
|
144
|
+
`If "${input.rootComponent}" is not listed in logicstamp_list_bundles output, it's likely a DEPENDENCY, not a root component. ` +
|
|
145
|
+
`To find a dependency: (1) Use logicstamp_list_bundles to see all root components, ` +
|
|
146
|
+
`(2) Read bundles that might import "${input.rootComponent}" (check bundle.graph.nodes[] for dependency contracts), ` +
|
|
147
|
+
`or (3) Search source code to find which root component imports "${input.rootComponent}". ` +
|
|
148
|
+
`Dependencies appear in bundle.graph.nodes[] of the root component that imports them, not as separate root bundles.`);
|
|
149
149
|
}
|
|
150
150
|
targetBundle = found;
|
|
151
151
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-bundle.js","sourceRoot":"","sources":["../../../src/mcp/tools/read-bundle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"read-bundle.js","sourceRoot":"","sources":["../../../src/mcp/tools/read-bundle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAO/B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAAC,WAAmB;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,2BAA2B,CAAC,CAAC;IAEjF,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,sCAAsC;QACtC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,sBAAsB;YACtB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,IAAI,UAAkB,CAAC;IACvB,IAAI,UAA8B,CAAC;IACnC,IAAI,WAAmB,CAAC;IACxB,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,0EAA0E;IAC1E,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,CAAC,UAAU,IAAI;gBAC3C,sFAAsF;gBACtF,oGAAoG;gBACpG,kGAAkG,CACnG,CAAC;QACJ,CAAC;QAED,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACjC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAC9B,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACrC,CAAC;SAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B,4EAA4E;QAC5E,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,kCAAkC,WAAW,IAAI;gBACjD,iDAAiD;gBACjD,gEAAgE;gBAChE,uEAAuE,CACxE,CAAC;QACJ,CAAC;QAED,UAAU,GAAG,WAAW,CAAC;QACzB,WAAW,GAAG,eAAe,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,gDAAgD;YAChD,mFAAmF;YACnF,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE5D,0DAA0D;QAC1D,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,KAAK,CACb,wBAAwB,WAAW,8CAA8C;gBACjF,yEAAyE;gBACzE,6EAA6E;gBAC7E,uFAAuF,CACxF,CAAC;QACJ,CAAC;QAED,6FAA6F;QAC7F,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,KAAK,mBAAmB;YACxC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC/C,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAErE,IAAI,WAAW,EAAE,CAAC;YAChB,2BAA2B;YAC3B,MAAM,KAAK,GAAoB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAE1D,uCAAuC;YACvC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,QAAQ,KAAK,CAAC,UAAU,uDAAuD;oBAC/E,8CAA+C,KAAa,CAAC,IAAI,IAAI,WAAW,IAAI;oBACpF,+EAA+E;oBAC/E,2EAA2E,CAC5E,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAqB;gBAC/B,WAAW;gBACX,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,KAAK,EAAE,KAAK;aACb,CAAC;YAEF,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YACjC,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,oCAAoC;QACpC,MAAM,WAAW,GAAuB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEnE,sDAAsD;QACtD,IAAI,YAA8B,CAAC;QAEnC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAE5B,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC7D,OAAO,aAAa,KAAK,KAAK,CAAC,aAAa,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,CAAC,aAAa,QAAQ,KAAK,CAAC,UAAU,IAAI;oBAClF,mJAAmJ;oBACnJ,OAAO,KAAK,CAAC,aAAa,qGAAqG;oBAC/H,oFAAoF;oBACpF,uCAAuC,KAAK,CAAC,aAAa,2DAA2D;oBACrH,mEAAmE,KAAK,CAAC,aAAa,KAAK;oBAC3F,oHAAoH,CACrH,CAAC;YACJ,CAAC;YAED,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,CAAC,UAAU,IAAI;oBAC3C,wCAAwC;oBACxC,2FAA2F;oBAC3F,+CAA+C,CAChD,CAAC;YACJ,CAAC;YACD,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAqB;YAC/B,WAAW;YACX,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,MAAM,EAAE,YAAY;SACrB,CAAC;QAEF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,4BAA4B,KAAK,CAAC,UAAU,IAAI;YAChD,UAAU,YAAY,IAAI;YAC1B,4EAA4E;YAC5E,mHAAmH;YACnH,iEAAiE,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAAe;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-snapshot.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/refresh-snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAmB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"refresh-snapshot.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/refresh-snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAmB,MAAM,wBAAwB,CAAC;AAkI3G,wBAAsB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA+PjG"}
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
* Tool 1: logicstamp_refresh_snapshot
|
|
3
3
|
* Run `stamp context` and create a snapshot before edits
|
|
4
4
|
*/
|
|
5
|
-
import { readFile, rm, access } from 'fs/promises';
|
|
5
|
+
import { readFile, rm, access, unlink } from 'fs/promises';
|
|
6
6
|
import { join, resolve } from 'path';
|
|
7
7
|
import { constants } from 'fs';
|
|
8
8
|
import { stateManager } from '../state.js';
|
|
9
9
|
import { execWithTimeout } from '../utils/exec-with-timeout.js';
|
|
10
|
+
import { isProcessRunning } from '../utils/process-utils.js';
|
|
10
11
|
/**
|
|
11
12
|
* Check if a file or directory exists
|
|
12
13
|
*/
|
|
@@ -20,21 +21,9 @@ async function exists(path) {
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
|
-
* Check if
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
// Sending signal 0 tests if process exists without killing it
|
|
28
|
-
process.kill(pid, 0);
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Check if watch mode is active for the project
|
|
37
|
-
* Returns watch status info if active, null otherwise
|
|
24
|
+
* Check if watch mode is active for the project.
|
|
25
|
+
* Returns watch status info if active, null otherwise.
|
|
26
|
+
* Cleans up stale status files when the process is no longer running.
|
|
38
27
|
*/
|
|
39
28
|
async function checkWatchMode(projectPath) {
|
|
40
29
|
const statusPath = join(projectPath, '.logicstamp', 'context_watch-status.json');
|
|
@@ -46,13 +35,20 @@ async function checkWatchMode(projectPath) {
|
|
|
46
35
|
const status = JSON.parse(content);
|
|
47
36
|
// Verify the process is still running
|
|
48
37
|
if (status.pid && !isProcessRunning(status.pid)) {
|
|
49
|
-
// Status file exists but process is dead - stale
|
|
38
|
+
// Status file exists but process is dead - clean up stale file
|
|
39
|
+
try {
|
|
40
|
+
await unlink(statusPath);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Ignore cleanup errors
|
|
44
|
+
}
|
|
50
45
|
return null;
|
|
51
46
|
}
|
|
52
47
|
return {
|
|
53
48
|
active: status.active === true,
|
|
54
49
|
pid: status.pid,
|
|
55
50
|
startedAt: status.startedAt,
|
|
51
|
+
strictWatch: status.strictWatch === true, // Read from status file, undefined if not present
|
|
56
52
|
};
|
|
57
53
|
}
|
|
58
54
|
catch {
|
|
@@ -204,9 +200,12 @@ export async function refreshSnapshot(input) {
|
|
|
204
200
|
folders: contextMain.folders,
|
|
205
201
|
watchMode: {
|
|
206
202
|
active: true,
|
|
207
|
-
message:
|
|
203
|
+
message: watchStatus.strictWatch
|
|
204
|
+
? 'Watch mode is ACTIVE with STRICT WATCH enabled - skipped regeneration. Context files are being kept fresh automatically via incremental rebuilds with breaking change detection. Using existing context_main.json.'
|
|
205
|
+
: 'Watch mode is ACTIVE - skipped regeneration. Context files are being kept fresh automatically via incremental rebuilds. Using existing context_main.json.',
|
|
208
206
|
pid: watchStatus.pid,
|
|
209
207
|
startedAt: watchStatus.startedAt,
|
|
208
|
+
strictWatch: watchStatus.strictWatch,
|
|
210
209
|
},
|
|
211
210
|
};
|
|
212
211
|
return output;
|
|
@@ -318,9 +317,12 @@ export async function refreshSnapshot(input) {
|
|
|
318
317
|
if (watchStatus?.active) {
|
|
319
318
|
output.watchMode = {
|
|
320
319
|
active: true,
|
|
321
|
-
message:
|
|
320
|
+
message: watchStatus.strictWatch
|
|
321
|
+
? 'Watch mode is ACTIVE with STRICT WATCH enabled. Context bundles are being kept fresh automatically via incremental rebuilds with breaking change detection. Future refresh_snapshot calls may be unnecessary - the context files are already up-to-date.'
|
|
322
|
+
: 'Watch mode is ACTIVE. Context bundles are being kept fresh automatically via incremental rebuilds. Future refresh_snapshot calls may be unnecessary - the context files are already up-to-date.',
|
|
322
323
|
pid: watchStatus.pid,
|
|
323
324
|
startedAt: watchStatus.startedAt,
|
|
325
|
+
strictWatch: watchStatus.strictWatch,
|
|
324
326
|
};
|
|
325
327
|
}
|
|
326
328
|
return output;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-snapshot.js","sourceRoot":"","sources":["../../../src/mcp/tools/refresh-snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"refresh-snapshot.js","sourceRoot":"","sources":["../../../src/mcp/tools/refresh-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-status.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/watch-status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAA8B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"watch-status.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/watch-status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAA8B,MAAM,wBAAwB,CAAC;AAiF9G,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6CrF"}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Tool: logicstamp_watch_status
|
|
3
3
|
* Check if watch mode is active and get status information
|
|
4
4
|
*/
|
|
5
|
-
import { readFile, access } from 'fs/promises';
|
|
5
|
+
import { readFile, access, unlink } from 'fs/promises';
|
|
6
6
|
import { join, resolve } from 'path';
|
|
7
7
|
import { constants } from 'fs';
|
|
8
|
+
import { isProcessRunning } from '../utils/process-utils.js';
|
|
8
9
|
/**
|
|
9
10
|
* Check if a file exists
|
|
10
11
|
*/
|
|
@@ -18,20 +19,8 @@ async function exists(path) {
|
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
|
-
*
|
|
22
|
-
|
|
23
|
-
function isProcessRunning(pid) {
|
|
24
|
-
try {
|
|
25
|
-
// Sending signal 0 tests if process exists without killing it
|
|
26
|
-
process.kill(pid, 0);
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Read and parse the watch status file
|
|
22
|
+
* Read and parse the watch status file.
|
|
23
|
+
* Validates that the PID is still running and cleans up stale files.
|
|
35
24
|
*/
|
|
36
25
|
async function readWatchStatus(projectPath) {
|
|
37
26
|
const statusPath = join(projectPath, '.logicstamp', 'context_watch-status.json');
|
|
@@ -43,7 +32,13 @@ async function readWatchStatus(projectPath) {
|
|
|
43
32
|
const status = JSON.parse(content);
|
|
44
33
|
// Verify the process is still running
|
|
45
34
|
if (status.pid && !isProcessRunning(status.pid)) {
|
|
46
|
-
// Status file exists but process is dead - stale
|
|
35
|
+
// Status file exists but process is dead - clean up stale file
|
|
36
|
+
try {
|
|
37
|
+
await unlink(statusPath);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Ignore cleanup errors
|
|
41
|
+
}
|
|
47
42
|
return null;
|
|
48
43
|
}
|
|
49
44
|
return status;
|
|
@@ -94,16 +89,23 @@ export async function watchStatus(input) {
|
|
|
94
89
|
// Read watch status
|
|
95
90
|
const status = await readWatchStatus(projectPath);
|
|
96
91
|
const watchModeActive = status !== null && status.active === true;
|
|
92
|
+
// strictWatch is read from the watch status file (.logicstamp/context_watch-status.json)
|
|
93
|
+
const strictWatch = watchModeActive && status?.strictWatch === true;
|
|
97
94
|
// Build output
|
|
98
95
|
const output = {
|
|
99
96
|
projectPath,
|
|
100
97
|
watchModeActive,
|
|
101
98
|
message: watchModeActive
|
|
102
|
-
?
|
|
103
|
-
|
|
99
|
+
? strictWatch
|
|
100
|
+
? `Watch mode is ACTIVE with STRICT WATCH enabled (PID: ${status.pid}, started: ${status.startedAt}). Context bundles are being kept fresh automatically with breaking change detection. You can skip calling refresh_snapshot - just use list_bundles and read_bundle with the existing context files.`
|
|
101
|
+
: `Watch mode is ACTIVE (PID: ${status.pid}, started: ${status.startedAt}). Context bundles are being kept fresh automatically. You can skip calling refresh_snapshot - just use list_bundles and read_bundle with the existing context files.`
|
|
102
|
+
: 'Watch mode is NOT active. Context files may be stale. Consider running refresh_snapshot or starting watch mode with `stamp context --watch` (or `stamp context --watch --strict-watch` for breaking change detection).',
|
|
104
103
|
};
|
|
105
104
|
if (watchModeActive && status) {
|
|
106
105
|
output.status = status;
|
|
106
|
+
if (strictWatch) {
|
|
107
|
+
output.strictWatch = true;
|
|
108
|
+
}
|
|
107
109
|
}
|
|
108
110
|
// Include recent logs if requested
|
|
109
111
|
if (includeRecentLogs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-status.js","sourceRoot":"","sources":["../../../src/mcp/tools/watch-status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"watch-status.js","sourceRoot":"","sources":["../../../src/mcp/tools/watch-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for process management
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if a process is still running by PID
|
|
6
|
+
*
|
|
7
|
+
* Uses signal 0 to test if process exists without killing it.
|
|
8
|
+
* On Windows, this may throw an error if the process doesn't exist
|
|
9
|
+
* or if we don't have permission to check it.
|
|
10
|
+
*
|
|
11
|
+
* @param pid - Process ID to check
|
|
12
|
+
* @returns true if process is running, false otherwise
|
|
13
|
+
*/
|
|
14
|
+
export declare function isProcessRunning(pid: number): boolean;
|
|
15
|
+
//# sourceMappingURL=process-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-utils.d.ts","sourceRoot":"","sources":["../../../src/mcp/utils/process-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQrD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for process management
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if a process is still running by PID
|
|
6
|
+
*
|
|
7
|
+
* Uses signal 0 to test if process exists without killing it.
|
|
8
|
+
* On Windows, this may throw an error if the process doesn't exist
|
|
9
|
+
* or if we don't have permission to check it.
|
|
10
|
+
*
|
|
11
|
+
* @param pid - Process ID to check
|
|
12
|
+
* @returns true if process is running, false otherwise
|
|
13
|
+
*/
|
|
14
|
+
export function isProcessRunning(pid) {
|
|
15
|
+
try {
|
|
16
|
+
// Sending signal 0 tests if process exists without killing it
|
|
17
|
+
process.kill(pid, 0);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=process-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../../src/mcp/utils/process-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,8DAA8D;QAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/types/schemas.d.ts
CHANGED
|
@@ -90,6 +90,7 @@ export interface RefreshSnapshotOutput {
|
|
|
90
90
|
message: string;
|
|
91
91
|
pid?: number;
|
|
92
92
|
startedAt?: string;
|
|
93
|
+
strictWatch?: boolean;
|
|
93
94
|
};
|
|
94
95
|
}
|
|
95
96
|
export interface FolderMetadata {
|
|
@@ -262,6 +263,7 @@ export interface WatchStatus {
|
|
|
262
263
|
pid: number;
|
|
263
264
|
startedAt: string;
|
|
264
265
|
outputDir: string;
|
|
266
|
+
strictWatch?: boolean;
|
|
265
267
|
}
|
|
266
268
|
/**
|
|
267
269
|
* Watch mode log entry structure (.logicstamp/context_watch-mode-logs.json)
|
|
@@ -295,6 +297,7 @@ export interface WatchStatusInput {
|
|
|
295
297
|
export interface WatchStatusOutput {
|
|
296
298
|
projectPath: string;
|
|
297
299
|
watchModeActive: boolean;
|
|
300
|
+
strictWatch?: boolean;
|
|
298
301
|
status?: WatchStatus;
|
|
299
302
|
recentLogs?: WatchLogEntry[];
|
|
300
303
|
message: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/types/schemas.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/types/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
> - **MCP Tool (`logicstamp_read_logicstamp_docs`)**: Reads from the installed package and is the authoritative source for current capabilities
|
|
10
10
|
> - **This Repo File**: May be outdated or out of sync with the published package
|
|
11
11
|
>
|
|
12
|
-
> The MCP tool embeds this documentation in the published package (v0.1.
|
|
12
|
+
> The MCP tool embeds this documentation in the published package (v0.1.6+), ensuring it matches the tool's actual capabilities. If you notice discrepancies between this file and the MCP tool output, the MCP tool is correct.
|
|
13
13
|
>
|
|
14
14
|
> **Best Practice**: Always use `logicstamp_read_logicstamp_docs` when you need accurate, up-to-date documentation about LogicStamp capabilities.
|
|
15
15
|
|
|
@@ -87,13 +87,16 @@ LogicStamp bundles are **pre-parsed, structured summaries** optimized for AI con
|
|
|
87
87
|
|
|
88
88
|
## Watch Mode Awareness
|
|
89
89
|
|
|
90
|
-
**LogicStamp supports incremental watch mode
|
|
90
|
+
**Best Practice:** LogicStamp supports incremental watch mode (`stamp context --watch`) which automatically regenerates context bundles when files change. **We recommend starting watch mode when beginning a coding session** - it dramatically improves MCP response times and keeps context fresh automatically.
|
|
91
|
+
|
|
92
|
+
The MCP server detects when watch mode is active and can skip expensive regeneration.
|
|
91
93
|
|
|
92
94
|
### How Watch Mode Works
|
|
93
95
|
|
|
94
96
|
1. **Watch mode runs in background** - User starts `stamp context --watch` in their terminal
|
|
95
97
|
2. **Incremental rebuilds** - Only affected bundles are regenerated when files change (not entire project)
|
|
96
98
|
3. **Context stays fresh** - Context files are always up-to-date
|
|
99
|
+
4. **Faster MCP responses** - AI can skip regeneration and read fresh context instantly
|
|
97
100
|
|
|
98
101
|
### Using Watch Mode with MCP
|
|
99
102
|
|
|
@@ -112,6 +115,10 @@ refresh_snapshot({ projectPath: "...", skipIfWatchActive: true })
|
|
|
112
115
|
// If watch mode is NOT active: Normal regeneration (slow)
|
|
113
116
|
```
|
|
114
117
|
|
|
118
|
+
**See Also:**
|
|
119
|
+
- [Watch Status Command Documentation](./commands/watch-status.md) - Complete command reference
|
|
120
|
+
- [Refresh Snapshot Command Documentation](./commands/refresh-snapshot.md) - Includes `skipIfWatchActive` parameter
|
|
121
|
+
|
|
115
122
|
**Benefits:**
|
|
116
123
|
- **Faster** - Skip expensive regeneration when context is already fresh
|
|
117
124
|
- **Efficient** - Watch mode only rebuilds affected bundles, not entire project
|
|
@@ -126,18 +133,21 @@ refresh_snapshot({ projectPath: "...", skipIfWatchActive: true })
|
|
|
126
133
|
- This scans the project and generates all context files
|
|
127
134
|
- Creates `context_main.json` (the main index) and `context/*.context.json` files (per-folder bundles)
|
|
128
135
|
- Returns a `snapshotId` you'll use for subsequent calls
|
|
129
|
-
- **Default:** The default depth=2 includes nested components (e.g., App → Hero → Button), ensuring you see the full component tree with contracts and styles for all nested components. This is recommended for most
|
|
136
|
+
- **Default:** The default depth=2 includes nested components (e.g., App → Hero → Button), ensuring you see the full component tree with contracts and styles for all nested components. This is recommended for most TypeScript projects with component hierarchies.
|
|
130
137
|
- **Example:** `{ "projectPath": "...", "skipIfWatchActive": true }` - Uses default depth=2, skips regeneration if watch mode is active. Set `depth: 1` if you only need direct dependencies (e.g., App → Hero but not Hero → Button).
|
|
131
138
|
|
|
132
139
|
2. **Discover bundles with `logicstamp_list_bundles`**
|
|
133
|
-
- Lists all
|
|
140
|
+
- Lists all ROOT bundles with their locations
|
|
134
141
|
- Shows component names, file paths, bundle paths, token estimates
|
|
142
|
+
- ⚠️ **IMPORTANT**: Only lists ROOT components (components with their own bundles)
|
|
143
|
+
- Dependencies are NOT listed here - they appear in `bundle.graph.nodes[]` of the root that imports them
|
|
135
144
|
- Use `folderPrefix` to filter by directory if needed
|
|
136
145
|
|
|
137
146
|
3. **Read bundles with `logicstamp_read_bundle`**
|
|
138
147
|
- This is where the valuable data is
|
|
139
148
|
- Pass the `bundlePath` from `list_bundles` output
|
|
140
149
|
- Returns complete component contracts with dependency graphs
|
|
150
|
+
- **Finding dependencies**: If a component isn't in `list_bundles`, it's a dependency. Read bundles that might import it and check `bundle.graph.nodes[]` for the dependency contract
|
|
141
151
|
|
|
142
152
|
4. **Only then read raw files** (if needed)
|
|
143
153
|
- Use bundles first to understand structure
|
|
@@ -235,8 +245,9 @@ LogicStamp offers preset configurations:
|
|
|
235
245
|
- **`llm-safe`** - Conservative mode for token-limited contexts
|
|
236
246
|
- Depth: 2, header mode, max 30 nodes
|
|
237
247
|
|
|
238
|
-
- **`ci-strict`** - Strict validation mode
|
|
239
|
-
- Contracts only (no code), strict dependency checks
|
|
248
|
+
- **`ci-strict`** - Strict validation mode
|
|
249
|
+
- Contracts only (no code), strict dependency checks, fails on missing dependencies
|
|
250
|
+
- Useful for validation workflows (note: git baseline comparison for CI/CD is not yet implemented)
|
|
240
251
|
|
|
241
252
|
## Dependency Depth Parameter
|
|
242
253
|
|
|
@@ -280,6 +291,41 @@ refresh_snapshot({ projectPath: "...", depth: 1 })
|
|
|
280
291
|
4. Analyze contract.props, contract.logicSignature, contract.graph
|
|
281
292
|
```
|
|
282
293
|
|
|
294
|
+
### ⚠️ Finding Components: Root vs Dependencies (CRITICAL CONCEPT)
|
|
295
|
+
|
|
296
|
+
**LogicStamp organizes components into two categories:**
|
|
297
|
+
|
|
298
|
+
- **Root components** - Components that have their own bundles (listed in `logicstamp_list_bundles` output and in `context_main.json` under each folder's `components` array). These are entry points that other components import.
|
|
299
|
+
- **Dependencies** - Components that are imported by root components. They appear in the importing component's bundle as nodes in `bundle.graph.nodes[]`, **NOT** as separate root bundles and **NOT** listed in `list_bundles`.
|
|
300
|
+
|
|
301
|
+
**🔍 Workflow for finding a component:**
|
|
302
|
+
|
|
303
|
+
1. **First, call `logicstamp_list_bundles`** - Check if the component is listed. If found, it's a root component with its own bundle.
|
|
304
|
+
2. **If NOT found in `list_bundles`** - The component is a dependency. To find it:
|
|
305
|
+
- **Option A**: Read bundles that might import it (check `bundle.graph.nodes[]` for the dependency contract)
|
|
306
|
+
- **Option B**: Search source code to find which root component imports it, then read that root's bundle
|
|
307
|
+
- **Option C**: Check bundles in the same folder (dependencies are typically in the same folder as their importing component)
|
|
308
|
+
3. **Read the importing root's bundle** - The dependency's contract will be in `bundle.graph.nodes[]` of that bundle (not as the root node).
|
|
309
|
+
|
|
310
|
+
**📝 Example:**
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
Looking for CopyButton component:
|
|
314
|
+
1. Call logicstamp_list_bundles → CopyButton NOT in the list
|
|
315
|
+
2. CopyButton is a dependency, not a root
|
|
316
|
+
3. Find which root imports it: TabbedInstallation imports CopyButton
|
|
317
|
+
4. Read TabbedInstallation's bundle: read_bundle(bundlePath, rootComponent: "TabbedInstallation")
|
|
318
|
+
5. Check bundle.graph.nodes[] → CopyButton contract is there as a dependency node
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
**Why this matters:**
|
|
322
|
+
|
|
323
|
+
- **Root components** = Have their own bundles, listed in `list_bundles` (e.g., `Features.tsx`, `Stats.tsx`, `TabbedInstallation.tsx`)
|
|
324
|
+
- **Dependencies** = Included in importing root component's bundle graph (e.g., `CopyButton.tsx` appears in `TabbedInstallation.tsx` bundle's `graph.nodes[]`)
|
|
325
|
+
- This structure matches how developers think: pages/features are entry points, their dependencies are included automatically
|
|
326
|
+
|
|
327
|
+
**🚨 Common mistake:** Looking for a component as a root when it's actually a dependency. Always check `logicstamp_list_bundles` first - if it's not there, it's a dependency and you need to find which root imports it.
|
|
328
|
+
|
|
283
329
|
### Finding Dependencies
|
|
284
330
|
|
|
285
331
|
```typescript
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "logicstamp-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server for LogicStamp
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "MCP server for LogicStamp - exposes deterministic architectural context for AI workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"typescript": "^5.7.2"
|
|
70
70
|
},
|
|
71
71
|
"engines": {
|
|
72
|
-
"node": ">=
|
|
72
|
+
"node": ">=20"
|
|
73
73
|
},
|
|
74
74
|
"publishConfig": {
|
|
75
75
|
"access": "public"
|