decibel-tools-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +335 -0
- package/dist/agentic/compiler.d.ts +21 -0
- package/dist/agentic/compiler.d.ts.map +1 -0
- package/dist/agentic/compiler.js +267 -0
- package/dist/agentic/compiler.js.map +1 -0
- package/dist/agentic/golden.d.ts +25 -0
- package/dist/agentic/golden.d.ts.map +1 -0
- package/dist/agentic/golden.js +255 -0
- package/dist/agentic/golden.js.map +1 -0
- package/dist/agentic/index.d.ts +17 -0
- package/dist/agentic/index.d.ts.map +1 -0
- package/dist/agentic/index.js +153 -0
- package/dist/agentic/index.js.map +1 -0
- package/dist/agentic/linter.d.ts +20 -0
- package/dist/agentic/linter.d.ts.map +1 -0
- package/dist/agentic/linter.js +340 -0
- package/dist/agentic/linter.js.map +1 -0
- package/dist/agentic/renderer.d.ts +17 -0
- package/dist/agentic/renderer.d.ts.map +1 -0
- package/dist/agentic/renderer.js +277 -0
- package/dist/agentic/renderer.js.map +1 -0
- package/dist/agentic/types.d.ts +199 -0
- package/dist/agentic/types.d.ts.map +1 -0
- package/dist/agentic/types.js +8 -0
- package/dist/agentic/types.js.map +1 -0
- package/dist/architectAdrs.d.ts +19 -0
- package/dist/architectAdrs.d.ts.map +1 -0
- package/dist/architectAdrs.js +123 -0
- package/dist/architectAdrs.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +19 -0
- package/dist/config.js.map +1 -0
- package/dist/dataRoot.d.ts +45 -0
- package/dist/dataRoot.d.ts.map +1 -0
- package/dist/dataRoot.js +201 -0
- package/dist/dataRoot.js.map +1 -0
- package/dist/decibelPaths.d.ts +42 -0
- package/dist/decibelPaths.d.ts.map +1 -0
- package/dist/decibelPaths.js +150 -0
- package/dist/decibelPaths.js.map +1 -0
- package/dist/httpServer.d.ts +49 -0
- package/dist/httpServer.d.ts.map +1 -0
- package/dist/httpServer.js +1472 -0
- package/dist/httpServer.js.map +1 -0
- package/dist/lib/benchmark.d.ts +110 -0
- package/dist/lib/benchmark.d.ts.map +1 -0
- package/dist/lib/benchmark.js +338 -0
- package/dist/lib/benchmark.js.map +1 -0
- package/dist/lib/supabase.d.ts +123 -0
- package/dist/lib/supabase.d.ts.map +1 -0
- package/dist/lib/supabase.js +91 -0
- package/dist/lib/supabase.js.map +1 -0
- package/dist/projectPaths.d.ts +27 -0
- package/dist/projectPaths.d.ts.map +1 -0
- package/dist/projectPaths.js +86 -0
- package/dist/projectPaths.js.map +1 -0
- package/dist/projectRegistry.d.ts +97 -0
- package/dist/projectRegistry.d.ts.map +1 -0
- package/dist/projectRegistry.js +362 -0
- package/dist/projectRegistry.js.map +1 -0
- package/dist/sentinelIssues.d.ts +44 -0
- package/dist/sentinelIssues.d.ts.map +1 -0
- package/dist/sentinelIssues.js +213 -0
- package/dist/sentinelIssues.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +93 -0
- package/dist/server.js.map +1 -0
- package/dist/test.d.ts +7 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +77 -0
- package/dist/test.js.map +1 -0
- package/dist/tools/agentic/index.d.ts +7 -0
- package/dist/tools/agentic/index.d.ts.map +1 -0
- package/dist/tools/agentic/index.js +180 -0
- package/dist/tools/agentic/index.js.map +1 -0
- package/dist/tools/architect/index.d.ts +9 -0
- package/dist/tools/architect/index.d.ts.map +1 -0
- package/dist/tools/architect/index.js +383 -0
- package/dist/tools/architect/index.js.map +1 -0
- package/dist/tools/architect.d.ts +19 -0
- package/dist/tools/architect.d.ts.map +1 -0
- package/dist/tools/architect.js +88 -0
- package/dist/tools/architect.js.map +1 -0
- package/dist/tools/bench.d.ts +89 -0
- package/dist/tools/bench.d.ts.map +1 -0
- package/dist/tools/bench.js +826 -0
- package/dist/tools/bench.js.map +1 -0
- package/dist/tools/context/index.d.ts +11 -0
- package/dist/tools/context/index.d.ts.map +1 -0
- package/dist/tools/context/index.js +439 -0
- package/dist/tools/context/index.js.map +1 -0
- package/dist/tools/context.d.ts +146 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +481 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/crit.d.ts +63 -0
- package/dist/tools/crit.d.ts.map +1 -0
- package/dist/tools/crit.js +159 -0
- package/dist/tools/crit.js.map +1 -0
- package/dist/tools/data-inspector.d.ts +188 -0
- package/dist/tools/data-inspector.d.ts.map +1 -0
- package/dist/tools/data-inspector.js +650 -0
- package/dist/tools/data-inspector.js.map +1 -0
- package/dist/tools/deck.d.ts +11 -0
- package/dist/tools/deck.d.ts.map +1 -0
- package/dist/tools/deck.js +170 -0
- package/dist/tools/deck.js.map +1 -0
- package/dist/tools/designer/index.d.ts +6 -0
- package/dist/tools/designer/index.d.ts.map +1 -0
- package/dist/tools/designer/index.js +177 -0
- package/dist/tools/designer/index.js.map +1 -0
- package/dist/tools/designer.d.ts +20 -0
- package/dist/tools/designer.d.ts.map +1 -0
- package/dist/tools/designer.js +75 -0
- package/dist/tools/designer.js.map +1 -0
- package/dist/tools/dojo/index.d.ts +13 -0
- package/dist/tools/dojo/index.d.ts.map +1 -0
- package/dist/tools/dojo/index.js +547 -0
- package/dist/tools/dojo/index.js.map +1 -0
- package/dist/tools/dojo.d.ts +254 -0
- package/dist/tools/dojo.d.ts.map +1 -0
- package/dist/tools/dojo.js +933 -0
- package/dist/tools/dojo.js.map +1 -0
- package/dist/tools/dojoBench.d.ts +49 -0
- package/dist/tools/dojoBench.d.ts.map +1 -0
- package/dist/tools/dojoBench.js +205 -0
- package/dist/tools/dojoBench.js.map +1 -0
- package/dist/tools/dojoGraduated.d.ts +50 -0
- package/dist/tools/dojoGraduated.d.ts.map +1 -0
- package/dist/tools/dojoGraduated.js +174 -0
- package/dist/tools/dojoGraduated.js.map +1 -0
- package/dist/tools/dojoPolicy.d.ts +65 -0
- package/dist/tools/dojoPolicy.d.ts.map +1 -0
- package/dist/tools/dojoPolicy.js +263 -0
- package/dist/tools/dojoPolicy.js.map +1 -0
- package/dist/tools/friction/index.d.ts +7 -0
- package/dist/tools/friction/index.d.ts.map +1 -0
- package/dist/tools/friction/index.js +239 -0
- package/dist/tools/friction/index.js.map +1 -0
- package/dist/tools/friction.d.ts +82 -0
- package/dist/tools/friction.d.ts.map +1 -0
- package/dist/tools/friction.js +331 -0
- package/dist/tools/friction.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/learnings/index.d.ts +5 -0
- package/dist/tools/learnings/index.d.ts.map +1 -0
- package/dist/tools/learnings/index.js +123 -0
- package/dist/tools/learnings/index.js.map +1 -0
- package/dist/tools/learnings.d.ts +41 -0
- package/dist/tools/learnings.d.ts.map +1 -0
- package/dist/tools/learnings.js +149 -0
- package/dist/tools/learnings.js.map +1 -0
- package/dist/tools/oracle/index.d.ts +5 -0
- package/dist/tools/oracle/index.d.ts.map +1 -0
- package/dist/tools/oracle/index.js +97 -0
- package/dist/tools/oracle/index.js.map +1 -0
- package/dist/tools/oracle.d.ts +90 -0
- package/dist/tools/oracle.d.ts.map +1 -0
- package/dist/tools/oracle.js +529 -0
- package/dist/tools/oracle.js.map +1 -0
- package/dist/tools/policy.d.ts +119 -0
- package/dist/tools/policy.d.ts.map +1 -0
- package/dist/tools/policy.js +406 -0
- package/dist/tools/policy.js.map +1 -0
- package/dist/tools/provenance/index.d.ts +4 -0
- package/dist/tools/provenance/index.d.ts.map +1 -0
- package/dist/tools/provenance/index.js +58 -0
- package/dist/tools/provenance/index.js.map +1 -0
- package/dist/tools/provenance.d.ts +75 -0
- package/dist/tools/provenance.d.ts.map +1 -0
- package/dist/tools/provenance.js +197 -0
- package/dist/tools/provenance.js.map +1 -0
- package/dist/tools/rateLimiter.d.ts +45 -0
- package/dist/tools/rateLimiter.d.ts.map +1 -0
- package/dist/tools/rateLimiter.js +91 -0
- package/dist/tools/rateLimiter.js.map +1 -0
- package/dist/tools/registry/index.d.ts +10 -0
- package/dist/tools/registry/index.d.ts.map +1 -0
- package/dist/tools/registry/index.js +467 -0
- package/dist/tools/registry/index.js.map +1 -0
- package/dist/tools/registry.d.ts +3 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +189 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/roadmap/index.d.ts +9 -0
- package/dist/tools/roadmap/index.d.ts.map +1 -0
- package/dist/tools/roadmap/index.js +250 -0
- package/dist/tools/roadmap/index.js.map +1 -0
- package/dist/tools/roadmap.d.ts +88 -0
- package/dist/tools/roadmap.d.ts.map +1 -0
- package/dist/tools/roadmap.js +365 -0
- package/dist/tools/roadmap.js.map +1 -0
- package/dist/tools/sentinel/index.d.ts +19 -0
- package/dist/tools/sentinel/index.d.ts.map +1 -0
- package/dist/tools/sentinel/index.js +832 -0
- package/dist/tools/sentinel/index.js.map +1 -0
- package/dist/tools/sentinel-scan-data.d.ts +90 -0
- package/dist/tools/sentinel-scan-data.d.ts.map +1 -0
- package/dist/tools/sentinel-scan-data.js +122 -0
- package/dist/tools/sentinel-scan-data.js.map +1 -0
- package/dist/tools/sentinel.d.ts +156 -0
- package/dist/tools/sentinel.d.ts.map +1 -0
- package/dist/tools/sentinel.js +603 -0
- package/dist/tools/sentinel.js.map +1 -0
- package/dist/tools/shared/index.d.ts +4 -0
- package/dist/tools/shared/index.d.ts.map +1 -0
- package/dist/tools/shared/index.js +7 -0
- package/dist/tools/shared/index.js.map +1 -0
- package/dist/tools/shared/project.d.ts +17 -0
- package/dist/tools/shared/project.d.ts.map +1 -0
- package/dist/tools/shared/project.js +36 -0
- package/dist/tools/shared/project.js.map +1 -0
- package/dist/tools/shared/response.d.ts +10 -0
- package/dist/tools/shared/response.d.ts.map +1 -0
- package/dist/tools/shared/response.js +36 -0
- package/dist/tools/shared/response.js.map +1 -0
- package/dist/tools/shared/validation.d.ts +10 -0
- package/dist/tools/shared/validation.d.ts.map +1 -0
- package/dist/tools/shared/validation.js +26 -0
- package/dist/tools/shared/validation.js.map +1 -0
- package/dist/tools/studio/cloud-spine.d.ts +27 -0
- package/dist/tools/studio/cloud-spine.d.ts.map +1 -0
- package/dist/tools/studio/cloud-spine.js +773 -0
- package/dist/tools/studio/cloud-spine.js.map +1 -0
- package/dist/tools/studio/index.d.ts +154 -0
- package/dist/tools/studio/index.d.ts.map +1 -0
- package/dist/tools/studio/index.js +525 -0
- package/dist/tools/studio/index.js.map +1 -0
- package/dist/tools/testSpec.d.ts +122 -0
- package/dist/tools/testSpec.d.ts.map +1 -0
- package/dist/tools/testSpec.js +525 -0
- package/dist/tools/testSpec.js.map +1 -0
- package/dist/tools/toolsIndex.d.ts +5 -0
- package/dist/tools/toolsIndex.d.ts.map +1 -0
- package/dist/tools/toolsIndex.js +37 -0
- package/dist/tools/toolsIndex.js.map +1 -0
- package/dist/tools/types.d.ts +30 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +7 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/voice/index.d.ts +8 -0
- package/dist/tools/voice/index.d.ts.map +1 -0
- package/dist/tools/voice/index.js +176 -0
- package/dist/tools/voice/index.js.map +1 -0
- package/dist/tools/voice.d.ts +291 -0
- package/dist/tools/voice.d.ts.map +1 -0
- package/dist/tools/voice.js +734 -0
- package/dist/tools/voice.js.map +1 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Decibel Systems
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
# decibel-tools-mcp
|
|
2
|
+
|
|
3
|
+
MCP (Model Context Protocol) server exposing Decibel tools (Designer, Architect, Sentinel, Oracle, Learnings) over stdio. Connect from Cursor, Claude, ChatGPT, and other MCP-compatible clients.
|
|
4
|
+
|
|
5
|
+
<a href="cursor://anysphere.cursor-deeplink/mcp/install?name=decibel-tools&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImRlY2liZWwtdG9vbHMtbWNwIl19">
|
|
6
|
+
<img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="Add Decibel Tools to Cursor" height="32" />
|
|
7
|
+
</a>
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Designer** - Record design decisions with project tracking
|
|
12
|
+
- **Architect** - Create Architecture Decision Records (ADRs)
|
|
13
|
+
- **Sentinel** - Track issues and epics with severity levels
|
|
14
|
+
- **Oracle** - Get AI-powered next action recommendations
|
|
15
|
+
- **Learnings** - Maintain living technical learnings documents
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
### Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Development
|
|
26
|
+
|
|
27
|
+
Run the server in development mode:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm run dev
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Production Build
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm run build
|
|
37
|
+
npm start
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Testing
|
|
41
|
+
|
|
42
|
+
Run the test script to verify all tools work:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm test
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Configuration
|
|
49
|
+
|
|
50
|
+
The server uses environment variables for configuration:
|
|
51
|
+
|
|
52
|
+
| Variable | Default | Description |
|
|
53
|
+
|----------|---------|-------------|
|
|
54
|
+
| `DECIBEL_ENV` | `dev` | Environment (dev, staging, prod) |
|
|
55
|
+
| `DECIBEL_ORG` | `mediareason` | Organization name |
|
|
56
|
+
| `DECIBEL_MCP_ROOT` | `~/.decibel` | Root directory for global data storage |
|
|
57
|
+
|
|
58
|
+
Data is stored in project-local `.decibel/` folders when available, falling back to the global root for cross-project data.
|
|
59
|
+
|
|
60
|
+
Copy `.env.example` to `.env` and configure as needed:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cp .env.example .env
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Connecting to Clients
|
|
67
|
+
|
|
68
|
+
### Cursor
|
|
69
|
+
|
|
70
|
+
**One-click install:** Click the button at the top of this README, or use the deep link:
|
|
71
|
+
```
|
|
72
|
+
cursor://anysphere.cursor-deeplink/mcp/install?name=decibel-tools&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImRlY2liZWwtdG9vbHMtbWNwIl19
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Manual setup:** Add to `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (project-local):
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"mcpServers": {
|
|
80
|
+
"decibel-tools": {
|
|
81
|
+
"command": "npx",
|
|
82
|
+
"args": ["-y", "decibel-tools-mcp"]
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
See [Cursor platform docs](docs/platforms/cursor.md) for troubleshooting and advanced setup.
|
|
89
|
+
|
|
90
|
+
### Claude Desktop
|
|
91
|
+
|
|
92
|
+
Add to your Claude configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"mcpServers": {
|
|
97
|
+
"decibel-tools": {
|
|
98
|
+
"command": "node",
|
|
99
|
+
"args": ["/path/to/decibel-tools-mcp/dist/server.js"]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
The server will automatically discover `.decibel/` folders in your projects. No `DECIBEL_MCP_ROOT` environment variable is needed for typical use.
|
|
106
|
+
|
|
107
|
+
## Tools Reference
|
|
108
|
+
|
|
109
|
+
### designer_record_design_decision
|
|
110
|
+
|
|
111
|
+
Record a design decision for a project.
|
|
112
|
+
|
|
113
|
+
**Input:**
|
|
114
|
+
- `project_id` (required): Project identifier
|
|
115
|
+
- `area` (required): Design area (e.g., "UI", "API", "Database")
|
|
116
|
+
- `summary` (required): Brief summary of the decision
|
|
117
|
+
- `details` (optional): Detailed explanation
|
|
118
|
+
|
|
119
|
+
**Output:**
|
|
120
|
+
- `id`: Filename of the created record
|
|
121
|
+
- `timestamp`: ISO timestamp
|
|
122
|
+
- `path`: Full path to the file
|
|
123
|
+
|
|
124
|
+
**File Location:** `{ROOT_DIR}/designer/{project_id}/YYYY-MM-DDTHH-mm-ssZ-{slug}.md`
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
### architect_record_arch_decision
|
|
129
|
+
|
|
130
|
+
Record an Architecture Decision Record (ADR).
|
|
131
|
+
|
|
132
|
+
**Input:**
|
|
133
|
+
- `system_id` (required): System identifier
|
|
134
|
+
- `change` (required): Description of the architectural change
|
|
135
|
+
- `rationale` (required): Reasoning behind the decision
|
|
136
|
+
- `impact` (optional): Expected impact description
|
|
137
|
+
|
|
138
|
+
**Output:**
|
|
139
|
+
- `id`: Filename of the created ADR
|
|
140
|
+
- `timestamp`: ISO timestamp
|
|
141
|
+
- `path`: Full path to the file
|
|
142
|
+
|
|
143
|
+
**File Location:** `{ROOT_DIR}/architect/{system_id}/YYYY-MM-DDTHH-mm-ssZ-{slug}.md`
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### sentinel_create_issue
|
|
148
|
+
|
|
149
|
+
Create a tracked issue for a repository.
|
|
150
|
+
|
|
151
|
+
**Input:**
|
|
152
|
+
- `repo` (required): Repository name
|
|
153
|
+
- `severity` (required): One of `low`, `med`, `high`, `critical`
|
|
154
|
+
- `title` (required): Issue title
|
|
155
|
+
- `details` (required): Detailed description
|
|
156
|
+
- `epic_id` (optional): Parent epic ID (e.g., "EPIC-0001")
|
|
157
|
+
|
|
158
|
+
**Output:**
|
|
159
|
+
- `id`: Filename of the created issue
|
|
160
|
+
- `timestamp`: ISO timestamp
|
|
161
|
+
- `path`: Full path to the file
|
|
162
|
+
- `status`: Issue status (always "open" for new issues)
|
|
163
|
+
|
|
164
|
+
**File Location:** `{ROOT_DIR}/sentinel/{repo}/issues/YYYY-MM-DDTHH-mm-ssZ-{slug}.md`
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### sentinel_log_epic
|
|
169
|
+
|
|
170
|
+
Create a new epic (large feature) record.
|
|
171
|
+
|
|
172
|
+
**Input:**
|
|
173
|
+
- `title` (required): Epic title
|
|
174
|
+
- `summary` (required): Brief summary
|
|
175
|
+
- `motivation` (optional): Array of motivation statements
|
|
176
|
+
- `outcomes` (optional): Array of desired outcomes
|
|
177
|
+
- `acceptance_criteria` (optional): Array of acceptance criteria
|
|
178
|
+
- `priority` (optional): One of `low`, `medium`, `high`, `critical`
|
|
179
|
+
- `tags` (optional): Array of tags
|
|
180
|
+
- `owner` (optional): Epic owner
|
|
181
|
+
- `squad` (optional): Team responsible
|
|
182
|
+
|
|
183
|
+
**Output:**
|
|
184
|
+
- `epic_id`: Generated epic ID (e.g., "EPIC-0001")
|
|
185
|
+
- `timestamp`: ISO timestamp
|
|
186
|
+
- `path`: Full path to the file
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
### sentinel_list_epics
|
|
191
|
+
|
|
192
|
+
List all epics with optional filters.
|
|
193
|
+
|
|
194
|
+
**Input:**
|
|
195
|
+
- `status` (optional): Filter by status (`planned`, `in_progress`, `shipped`, `on_hold`, `cancelled`)
|
|
196
|
+
- `priority` (optional): Filter by priority
|
|
197
|
+
- `tags` (optional): Filter by tags (matches any)
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
### sentinel_get_epic
|
|
202
|
+
|
|
203
|
+
Get details of a specific epic.
|
|
204
|
+
|
|
205
|
+
**Input:**
|
|
206
|
+
- `epic_id` (required): Epic ID (e.g., "EPIC-0001")
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
### sentinel_get_epic_issues
|
|
211
|
+
|
|
212
|
+
Get all issues linked to an epic.
|
|
213
|
+
|
|
214
|
+
**Input:**
|
|
215
|
+
- `epic_id` (required): Epic ID
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### sentinel_resolve_epic
|
|
220
|
+
|
|
221
|
+
Fuzzy search for epics by name or keyword.
|
|
222
|
+
|
|
223
|
+
**Input:**
|
|
224
|
+
- `query` (required): Search query
|
|
225
|
+
- `limit` (optional): Maximum matches to return (default: 5)
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
### oracle_next_actions
|
|
230
|
+
|
|
231
|
+
Get recommended next actions based on recent project activity.
|
|
232
|
+
|
|
233
|
+
**Input:**
|
|
234
|
+
- `project_id` (required): Project to analyze
|
|
235
|
+
- `focus` (optional): Filter by area (e.g., "architect", "sentinel", or keyword)
|
|
236
|
+
|
|
237
|
+
**Output:**
|
|
238
|
+
- `actions`: Array of recommended actions
|
|
239
|
+
- `description`: What to do
|
|
240
|
+
- `source`: File path reference
|
|
241
|
+
- `priority`: One of `low`, `med`, `high`
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
### learnings_append
|
|
246
|
+
|
|
247
|
+
Append a new entry to a project's technical learnings document. Creates a living document that accumulates lessons learned, gotchas, and insights over time.
|
|
248
|
+
|
|
249
|
+
**Input:**
|
|
250
|
+
- `project_id` (required): Project identifier
|
|
251
|
+
- `category` (required): One of `debug`, `integration`, `architecture`, `tooling`, `process`, `other`
|
|
252
|
+
- `title` (required): Brief title for the learning
|
|
253
|
+
- `content` (required): The learning content - what happened, what was learned
|
|
254
|
+
- `tags` (optional): Array of tags for searchability
|
|
255
|
+
|
|
256
|
+
**Output:**
|
|
257
|
+
- `timestamp`: ISO timestamp
|
|
258
|
+
- `path`: Full path to the file
|
|
259
|
+
- `entry_count`: Total number of entries in the document
|
|
260
|
+
|
|
261
|
+
**File Location:** `{ROOT_DIR}/learnings/{project_id}.md`
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
### learnings_list
|
|
266
|
+
|
|
267
|
+
List entries from a project's technical learnings document.
|
|
268
|
+
|
|
269
|
+
**Input:**
|
|
270
|
+
- `project_id` (required): Project identifier
|
|
271
|
+
- `category` (optional): Filter by category
|
|
272
|
+
- `limit` (optional): Maximum entries to return (most recent first)
|
|
273
|
+
|
|
274
|
+
**Output:**
|
|
275
|
+
- `path`: Path to the learnings file
|
|
276
|
+
- `entries`: Array of learning entries
|
|
277
|
+
- `total_count`: Total number of entries
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Data Storage
|
|
282
|
+
|
|
283
|
+
Data is stored in project-local `.decibel/` folders as YAML files:
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
{project_root}/
|
|
287
|
+
└── .decibel/
|
|
288
|
+
├── sentinel/
|
|
289
|
+
│ ├── issues/
|
|
290
|
+
│ │ └── ISS-{nnnn}.yml
|
|
291
|
+
│ └── epics/
|
|
292
|
+
│ └── EPIC-{nnnn}.yml
|
|
293
|
+
├── architect/
|
|
294
|
+
│ └── adrs/
|
|
295
|
+
│ └── ADR-{nnnn}.yml
|
|
296
|
+
├── designer/
|
|
297
|
+
│ └── YYYY-MM-DDTHH-mm-ssZ-{slug}.md
|
|
298
|
+
└── learnings/
|
|
299
|
+
└── {project_id}.md
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Global data (friction logs, cross-project learnings) is stored in `~/.decibel/` or the path specified by `DECIBEL_MCP_ROOT`.
|
|
303
|
+
|
|
304
|
+
## Development
|
|
305
|
+
|
|
306
|
+
### Project Structure
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
src/
|
|
310
|
+
├── server.ts # MCP server entrypoint
|
|
311
|
+
├── config.ts # Environment configuration
|
|
312
|
+
├── test.ts # Test script
|
|
313
|
+
└── tools/
|
|
314
|
+
├── designer.ts # Design decision recording
|
|
315
|
+
├── architect.ts # Architecture decision recording
|
|
316
|
+
├── sentinel.ts # Issue and epic tracking
|
|
317
|
+
├── oracle.ts # Next actions inference
|
|
318
|
+
└── learnings.ts # Living learnings documents
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Building
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
npm run build # Compile TypeScript to dist/
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Running in Development
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
npm run dev # Run with tsx (no build required)
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## License
|
|
334
|
+
|
|
335
|
+
MIT
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic Pack Compiler
|
|
3
|
+
*
|
|
4
|
+
* Compiles agentic configuration files into a versioned, hashed pack.
|
|
5
|
+
* Reads from .decibel/architect/agentic/ and outputs compiled_agentic_pack.json
|
|
6
|
+
*/
|
|
7
|
+
import { ResolvedProjectPaths } from '../projectRegistry.js';
|
|
8
|
+
import { CompileResult, CompilePackInput, CompilePackOutput } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Compile agentic pack from project configuration
|
|
11
|
+
*/
|
|
12
|
+
export declare function compilePack(input: CompilePackInput): Promise<CompilePackOutput>;
|
|
13
|
+
/**
|
|
14
|
+
* Load a previously compiled pack
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadCompiledPack(resolved: ResolvedProjectPaths): Promise<CompileResult | null>;
|
|
17
|
+
/**
|
|
18
|
+
* Get or compile pack (compile if not exists or outdated)
|
|
19
|
+
*/
|
|
20
|
+
export declare function getOrCompilePack(resolved: ResolvedProjectPaths): Promise<CompileResult>;
|
|
21
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/agentic/compiler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAuB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,EAEL,aAAa,EAKb,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AA0MpB;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2CrF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAQpG;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,aAAa,CAAC,CAcxB"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic Pack Compiler
|
|
3
|
+
*
|
|
4
|
+
* Compiles agentic configuration files into a versioned, hashed pack.
|
|
5
|
+
* Reads from .decibel/architect/agentic/ and outputs compiled_agentic_pack.json
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'fs/promises';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import crypto from 'crypto';
|
|
10
|
+
import yaml from 'yaml';
|
|
11
|
+
import { log } from '../config.js';
|
|
12
|
+
import { resolveProjectPaths } from '../projectRegistry.js';
|
|
13
|
+
import { ensureDir } from '../dataRoot.js';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Default Configurations
|
|
16
|
+
// ============================================================================
|
|
17
|
+
const DEFAULT_TAXONOMY = {
|
|
18
|
+
roles: {
|
|
19
|
+
Sensor: { emoji: '👁️', description: 'Data collection and observation' },
|
|
20
|
+
Analyst: { emoji: '🧠', description: 'Pattern recognition and analysis' },
|
|
21
|
+
Overmind: { emoji: '🎯', description: 'Decision making and coordination' },
|
|
22
|
+
Specialist: { emoji: '🔧', description: 'Domain-specific expertise' },
|
|
23
|
+
},
|
|
24
|
+
statuses: {
|
|
25
|
+
OK: { emoji: '✓', color: 'green' },
|
|
26
|
+
DEGRADED: { emoji: '⚠️', color: 'yellow' },
|
|
27
|
+
BLOCKED: { emoji: '🛑', color: 'red' },
|
|
28
|
+
ALERT: { emoji: '🚨', color: 'magenta' },
|
|
29
|
+
},
|
|
30
|
+
loads: {
|
|
31
|
+
GREEN: { emoji: '🟢', color: 'green' },
|
|
32
|
+
YELLOW: { emoji: '🟡', color: 'yellow' },
|
|
33
|
+
RED: { emoji: '🔴', color: 'red' },
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
const DEFAULT_RENDERER = {
|
|
37
|
+
id: 'default',
|
|
38
|
+
name: 'Default Renderer',
|
|
39
|
+
description: 'Basic text output with minimal formatting',
|
|
40
|
+
template: `{{role_emoji}} {{role}} | {{status}} | Load: {{load}}
|
|
41
|
+
|
|
42
|
+
{{summary}}
|
|
43
|
+
|
|
44
|
+
{{#evidence}}
|
|
45
|
+
Evidence:
|
|
46
|
+
{{#items}}
|
|
47
|
+
- {{source}}: {{value}}
|
|
48
|
+
{{/items}}
|
|
49
|
+
{{/evidence}}
|
|
50
|
+
|
|
51
|
+
{{#missing_data}}
|
|
52
|
+
Missing Data:
|
|
53
|
+
{{#items}}
|
|
54
|
+
- {{field}}: {{reason}}
|
|
55
|
+
{{/items}}
|
|
56
|
+
{{/missing_data}}
|
|
57
|
+
|
|
58
|
+
{{#decision}}
|
|
59
|
+
Decision: {{decision}}
|
|
60
|
+
{{/decision}}`,
|
|
61
|
+
constraints: {
|
|
62
|
+
max_emoji_count: 5,
|
|
63
|
+
emoji_position: 'header-only',
|
|
64
|
+
max_lines: 50,
|
|
65
|
+
banned_words: ['amazing', 'incredible', 'revolutionary', 'game-changing'],
|
|
66
|
+
banned_punctuation: ['!'],
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
const DEFAULT_CONSENSUS = {
|
|
70
|
+
quorum_threshold: 0.67,
|
|
71
|
+
dissent_highlight_threshold: 0.3,
|
|
72
|
+
max_pending_decisions: 10,
|
|
73
|
+
};
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// YAML Loading Helpers
|
|
76
|
+
// ============================================================================
|
|
77
|
+
async function loadYamlFile(filePath) {
|
|
78
|
+
try {
|
|
79
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
80
|
+
return yaml.parse(content);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error.code === 'ENOENT') {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async function loadYamlDir(dirPath) {
|
|
90
|
+
const result = {};
|
|
91
|
+
try {
|
|
92
|
+
const files = await fs.readdir(dirPath);
|
|
93
|
+
for (const file of files) {
|
|
94
|
+
if (file.endsWith('.yaml') || file.endsWith('.yml')) {
|
|
95
|
+
const filePath = path.join(dirPath, file);
|
|
96
|
+
const content = await loadYamlFile(filePath);
|
|
97
|
+
if (content) {
|
|
98
|
+
const id = path.basename(file, path.extname(file));
|
|
99
|
+
result[id] = content;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
if (error.code !== 'ENOENT') {
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
// ============================================================================
|
|
112
|
+
// Pack Compiler
|
|
113
|
+
// ============================================================================
|
|
114
|
+
async function loadPackConfigs(agenticDir) {
|
|
115
|
+
const sourceFiles = [];
|
|
116
|
+
// Load taxonomy
|
|
117
|
+
const taxonomyPath = path.join(agenticDir, 'taxonomy.yaml');
|
|
118
|
+
const taxonomy = (await loadYamlFile(taxonomyPath)) || DEFAULT_TAXONOMY;
|
|
119
|
+
if (await fileExists(taxonomyPath))
|
|
120
|
+
sourceFiles.push(taxonomyPath);
|
|
121
|
+
// Load renderers
|
|
122
|
+
const renderersPath = path.join(agenticDir, 'renderers.yaml');
|
|
123
|
+
let renderers = { default: DEFAULT_RENDERER };
|
|
124
|
+
const loadedRenderers = await loadYamlFile(renderersPath);
|
|
125
|
+
if (loadedRenderers) {
|
|
126
|
+
renderers = { ...renderers, ...loadedRenderers };
|
|
127
|
+
sourceFiles.push(renderersPath);
|
|
128
|
+
}
|
|
129
|
+
// Also load from renderers/ directory
|
|
130
|
+
const renderersDir = path.join(agenticDir, 'renderers');
|
|
131
|
+
const dirRenderers = await loadYamlDir(renderersDir);
|
|
132
|
+
for (const [id, config] of Object.entries(dirRenderers)) {
|
|
133
|
+
renderers[id] = { ...config, id };
|
|
134
|
+
sourceFiles.push(path.join(renderersDir, `${id}.yaml`));
|
|
135
|
+
}
|
|
136
|
+
// Load consensus
|
|
137
|
+
const consensusPath = path.join(agenticDir, 'consensus.yaml');
|
|
138
|
+
const consensus = (await loadYamlFile(consensusPath)) || DEFAULT_CONSENSUS;
|
|
139
|
+
if (await fileExists(consensusPath))
|
|
140
|
+
sourceFiles.push(consensusPath);
|
|
141
|
+
// Load ANSI styles
|
|
142
|
+
const ansiStylesPath = path.join(agenticDir, 'ansi_styles.yaml');
|
|
143
|
+
const ansiStyles = await loadYamlFile(ansiStylesPath);
|
|
144
|
+
if (await fileExists(ansiStylesPath))
|
|
145
|
+
sourceFiles.push(ansiStylesPath);
|
|
146
|
+
// Load avatars
|
|
147
|
+
const avatarsDir = path.join(agenticDir, 'avatars');
|
|
148
|
+
const avatars = await loadYamlDir(avatarsDir);
|
|
149
|
+
for (const file of Object.keys(avatars)) {
|
|
150
|
+
sourceFiles.push(path.join(avatarsDir, `${file}.yaml`));
|
|
151
|
+
}
|
|
152
|
+
// Load pack overrides
|
|
153
|
+
const packsDir = path.join(agenticDir, 'packs');
|
|
154
|
+
const packs = await loadYamlDir(packsDir);
|
|
155
|
+
for (const [packId, packConfig] of Object.entries(packs)) {
|
|
156
|
+
// Merge pack-specific overrides
|
|
157
|
+
if (packConfig.renderers) {
|
|
158
|
+
renderers = { ...renderers, ...packConfig.renderers };
|
|
159
|
+
}
|
|
160
|
+
if (packConfig.avatars) {
|
|
161
|
+
Object.assign(avatars, packConfig.avatars);
|
|
162
|
+
}
|
|
163
|
+
sourceFiles.push(path.join(packsDir, `${packId}.yaml`));
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
pack: {
|
|
167
|
+
taxonomy,
|
|
168
|
+
renderers,
|
|
169
|
+
consensus,
|
|
170
|
+
avatars,
|
|
171
|
+
ansi_styles: ansiStyles || undefined,
|
|
172
|
+
},
|
|
173
|
+
sourceFiles,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
async function fileExists(filePath) {
|
|
177
|
+
try {
|
|
178
|
+
await fs.access(filePath);
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function computePackHash(pack) {
|
|
186
|
+
const content = JSON.stringify(pack, Object.keys(pack).sort());
|
|
187
|
+
return crypto.createHash('sha256').update(content).digest('hex').substring(0, 12);
|
|
188
|
+
}
|
|
189
|
+
function generatePackId() {
|
|
190
|
+
const timestamp = new Date().toISOString().replace(/[-:]/g, '').split('.')[0];
|
|
191
|
+
const random = Math.random().toString(36).substring(2, 6);
|
|
192
|
+
return `pack-${timestamp}-${random}`;
|
|
193
|
+
}
|
|
194
|
+
// ============================================================================
|
|
195
|
+
// Public API
|
|
196
|
+
// ============================================================================
|
|
197
|
+
/**
|
|
198
|
+
* Compile agentic pack from project configuration
|
|
199
|
+
*/
|
|
200
|
+
export async function compilePack(input) {
|
|
201
|
+
try {
|
|
202
|
+
const resolved = resolveProjectPaths(input.projectId);
|
|
203
|
+
const agenticDir = resolved.subPath('architect', 'agentic');
|
|
204
|
+
log(`agentic-compiler: Compiling pack from ${agenticDir}`);
|
|
205
|
+
// Load all configs
|
|
206
|
+
const { pack, sourceFiles } = await loadPackConfigs(agenticDir);
|
|
207
|
+
// Generate pack ID and hash
|
|
208
|
+
const packId = generatePackId();
|
|
209
|
+
const packHash = computePackHash(pack);
|
|
210
|
+
const result = {
|
|
211
|
+
pack_id: packId,
|
|
212
|
+
pack_hash: packHash,
|
|
213
|
+
compiled_at: new Date().toISOString(),
|
|
214
|
+
content: pack,
|
|
215
|
+
source_files: sourceFiles,
|
|
216
|
+
};
|
|
217
|
+
// Write compiled pack to output
|
|
218
|
+
const outputDir = resolved.subPath('architect', 'agentic', 'compiled');
|
|
219
|
+
ensureDir(outputDir);
|
|
220
|
+
const outputPath = path.join(outputDir, 'compiled_agentic_pack.json');
|
|
221
|
+
await fs.writeFile(outputPath, JSON.stringify(result, null, 2), 'utf-8');
|
|
222
|
+
log(`agentic-compiler: Pack compiled successfully (${packHash})`);
|
|
223
|
+
log(`agentic-compiler: Output written to ${outputPath}`);
|
|
224
|
+
return {
|
|
225
|
+
status: 'compiled',
|
|
226
|
+
result,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
231
|
+
log(`agentic-compiler: Error compiling pack: ${message}`);
|
|
232
|
+
return {
|
|
233
|
+
status: 'error',
|
|
234
|
+
error: message,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Load a previously compiled pack
|
|
240
|
+
*/
|
|
241
|
+
export async function loadCompiledPack(resolved) {
|
|
242
|
+
const outputPath = resolved.subPath('architect', 'agentic', 'compiled', 'compiled_agentic_pack.json');
|
|
243
|
+
try {
|
|
244
|
+
const content = await fs.readFile(outputPath, 'utf-8');
|
|
245
|
+
return JSON.parse(content);
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Get or compile pack (compile if not exists or outdated)
|
|
253
|
+
*/
|
|
254
|
+
export async function getOrCompilePack(resolved) {
|
|
255
|
+
// Try to load existing
|
|
256
|
+
const existing = await loadCompiledPack(resolved);
|
|
257
|
+
if (existing) {
|
|
258
|
+
return existing;
|
|
259
|
+
}
|
|
260
|
+
// Compile new
|
|
261
|
+
const result = await compilePack({ projectId: resolved.id });
|
|
262
|
+
if (result.status === 'error' || !result.result) {
|
|
263
|
+
throw new Error(result.error || 'Failed to compile pack');
|
|
264
|
+
}
|
|
265
|
+
return result.result;
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/agentic/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic Pack Golden Eval
|
|
3
|
+
*
|
|
4
|
+
* Regression testing harness for semiotic clarity.
|
|
5
|
+
* Compares rendered outputs against known-good golden files.
|
|
6
|
+
*/
|
|
7
|
+
import { ResolvedProjectPaths } from '../projectRegistry.js';
|
|
8
|
+
import { GoldenResult, CanonicalPayload, GoldenInput, GoldenOutputResult } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Run all golden eval cases
|
|
11
|
+
*/
|
|
12
|
+
export declare function runGoldenEval(resolved: ResolvedProjectPaths, caseName?: string, strict?: boolean): Promise<GoldenResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Update golden files with current output (for updating baselines)
|
|
15
|
+
*/
|
|
16
|
+
export declare function updateGoldenFile(resolved: ResolvedProjectPaths, caseName: string, rendererId: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Create a new golden case from a payload
|
|
19
|
+
*/
|
|
20
|
+
export declare function createGoldenCase(resolved: ResolvedProjectPaths, caseName: string, payload: CanonicalPayload, rendererIds: string[]): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* MCP tool handler for running golden eval
|
|
23
|
+
*/
|
|
24
|
+
export declare function runGolden(input: GoldenInput): Promise<GoldenOutputResult>;
|
|
25
|
+
//# sourceMappingURL=golden.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"golden.d.ts","sourceRoot":"","sources":["../../src/agentic/golden.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAuB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAEL,YAAY,EAEZ,gBAAgB,EAEhB,WAAW,EACX,kBAAkB,EACnB,MAAM,YAAY,CAAC;AA4KpB;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,YAAY,CAAC,CA4CvB;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAMD;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoB/E"}
|