@sirius-mcp/mcp 1.5.2 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -4
- package/dist/adapters/fs/structure.d.ts.map +1 -1
- package/dist/adapters/fs/structure.js +16 -0
- package/dist/adapters/fs/structure.js.map +1 -1
- package/dist/adapters/mcp/crawl.js +1 -1
- package/dist/adapters/mcp/crawl.js.map +1 -1
- package/dist/adapters/mcp/get.js +1 -1
- package/dist/adapters/mcp/get.js.map +1 -1
- package/dist/adapters/mcp/index.d.ts +2 -0
- package/dist/adapters/mcp/index.d.ts.map +1 -1
- package/dist/adapters/mcp/index.js +5 -1
- package/dist/adapters/mcp/index.js.map +1 -1
- package/dist/adapters/mcp/init.js +1 -1
- package/dist/adapters/mcp/init.js.map +1 -1
- package/dist/adapters/mcp/list.js +1 -1
- package/dist/adapters/mcp/list.js.map +1 -1
- package/dist/adapters/mcp/query-counter.d.ts +17 -0
- package/dist/adapters/mcp/query-counter.d.ts.map +1 -0
- package/dist/adapters/mcp/query-counter.js +30 -0
- package/dist/adapters/mcp/query-counter.js.map +1 -0
- package/dist/adapters/mcp/reindex.js +1 -1
- package/dist/adapters/mcp/reindex.js.map +1 -1
- package/dist/adapters/mcp/resources.d.ts +4 -1
- package/dist/adapters/mcp/resources.d.ts.map +1 -1
- package/dist/adapters/mcp/resources.js +50 -1
- package/dist/adapters/mcp/resources.js.map +1 -1
- package/dist/adapters/mcp/search.js +1 -1
- package/dist/adapters/mcp/search.js.map +1 -1
- package/dist/adapters/mcp/upsert.js +1 -1
- package/dist/adapters/mcp/upsert.js.map +1 -1
- package/dist/adapters/update/check.d.ts +27 -0
- package/dist/adapters/update/check.d.ts.map +1 -1
- package/dist/adapters/update/check.js +40 -2
- package/dist/adapters/update/check.js.map +1 -1
- package/dist/app/crawl.js +3 -0
- package/dist/app/crawl.js.map +1 -1
- package/dist/app/drift.d.ts +61 -0
- package/dist/app/drift.d.ts.map +1 -0
- package/dist/app/drift.js +193 -0
- package/dist/app/drift.js.map +1 -0
- package/dist/app/list.d.ts +2 -2
- package/dist/app/precedence-contract.d.ts +14 -0
- package/dist/app/precedence-contract.d.ts.map +1 -0
- package/dist/app/precedence-contract.js +51 -0
- package/dist/app/precedence-contract.js.map +1 -0
- package/dist/app/upsert.d.ts +14 -2
- package/dist/app/upsert.d.ts.map +1 -1
- package/dist/domain/source-adapter.d.ts +1 -0
- package/dist/domain/source-adapter.d.ts.map +1 -1
- package/dist/domain/source-adapter.js.map +1 -1
- package/dist/domain/staleness.d.ts +30 -0
- package/dist/domain/staleness.d.ts.map +1 -0
- package/dist/domain/staleness.js +71 -0
- package/dist/domain/staleness.js.map +1 -0
- package/dist/errors.d.ts +30 -6
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +88 -16
- package/dist/errors.js.map +1 -1
- package/dist/installer/cli-parser.d.ts.map +1 -1
- package/dist/installer/cli-parser.js +19 -5
- package/dist/installer/cli-parser.js.map +1 -1
- package/dist/installer/cli.d.ts.map +1 -1
- package/dist/installer/cli.js +73 -37
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/contract-seed.d.ts +6 -0
- package/dist/installer/contract-seed.d.ts.map +1 -0
- package/dist/installer/contract-seed.js +140 -0
- package/dist/installer/contract-seed.js.map +1 -0
- package/dist/installer/dispatch.d.ts.map +1 -1
- package/dist/installer/dispatch.js +3 -1
- package/dist/installer/dispatch.js.map +1 -1
- package/dist/installer/drift-command.d.ts +15 -0
- package/dist/installer/drift-command.d.ts.map +1 -0
- package/dist/installer/drift-command.js +78 -0
- package/dist/installer/drift-command.js.map +1 -0
- package/dist/installer/index.d.ts +4 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +34 -5
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/instruction-targets.d.ts +33 -0
- package/dist/installer/instruction-targets.d.ts.map +1 -0
- package/dist/installer/instruction-targets.js +199 -0
- package/dist/installer/instruction-targets.js.map +1 -0
- package/dist/installer/precedence.d.ts +59 -0
- package/dist/installer/precedence.d.ts.map +1 -0
- package/dist/installer/precedence.js +218 -0
- package/dist/installer/precedence.js.map +1 -0
- package/dist/installer/snippet-context.d.ts +49 -0
- package/dist/installer/snippet-context.d.ts.map +1 -0
- package/dist/installer/snippet-context.js +93 -0
- package/dist/installer/snippet-context.js.map +1 -0
- package/dist/installer/snippet-engine.d.ts +21 -0
- package/dist/installer/snippet-engine.d.ts.map +1 -0
- package/dist/installer/snippet-engine.js +122 -0
- package/dist/installer/snippet-engine.js.map +1 -0
- package/dist/installer/snippet-exec.d.ts +4 -0
- package/dist/installer/snippet-exec.d.ts.map +1 -0
- package/dist/installer/snippet-exec.js +105 -0
- package/dist/installer/snippet-exec.js.map +1 -0
- package/dist/installer/snippet-offer.d.ts +21 -0
- package/dist/installer/snippet-offer.d.ts.map +1 -0
- package/dist/installer/snippet-offer.js +108 -0
- package/dist/installer/snippet-offer.js.map +1 -0
- package/dist/installer/snippet-report.d.ts +14 -0
- package/dist/installer/snippet-report.d.ts.map +1 -0
- package/dist/installer/snippet-report.js +217 -0
- package/dist/installer/snippet-report.js.map +1 -0
- package/dist/installer/snippet.d.ts +4 -0
- package/dist/installer/snippet.d.ts.map +1 -0
- package/dist/installer/snippet.js +158 -0
- package/dist/installer/snippet.js.map +1 -0
- package/dist/installer/tui-render.d.ts +3 -0
- package/dist/installer/tui-render.d.ts.map +1 -0
- package/dist/installer/tui-render.js +31 -0
- package/dist/installer/tui-render.js.map +1 -0
- package/dist/installer/tui.d.ts +5 -3
- package/dist/installer/tui.d.ts.map +1 -1
- package/dist/installer/tui.js +7 -24
- package/dist/installer/tui.js.map +1 -1
- package/dist/installer/types.d.ts +42 -2
- package/dist/installer/types.d.ts.map +1 -1
- package/dist/installer/types.js.map +1 -1
- package/dist/installer/version.d.ts +2 -0
- package/dist/installer/version.d.ts.map +1 -0
- package/dist/installer/version.js +18 -0
- package/dist/installer/version.js.map +1 -0
- package/dist/schemas/document.d.ts +24 -2
- package/dist/schemas/document.d.ts.map +1 -1
- package/dist/schemas/document.js +52 -0
- package/dist/schemas/document.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,6 +31,16 @@ Run or configure Sirius directly using `npx`:
|
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
+
## Interactive Setup Wizard (recommended)
|
|
35
|
+
|
|
36
|
+
Running `npx @sirius-mcp/mcp` directly in a terminal (outside an MCP client) launches an interactive setup wizard — the recommended onboarding path before hand-editing the JSON snippets below. It detects and configures 17 targets non-destructively (timestamped backups, peer MCP servers preserved): 10 IDEs & extensions (Cursor, Kiro, Windsurf, Claude Desktop, GitHub Copilot, Roo Code, Cline, Continue.dev, Zed, JetBrains) and 7 CLI agents (Devin, Codex, Claude Code, Goose, OpenCode, Antigravity, Aider). The default scope is `workspace` (project-local configs; Claude Desktop and JetBrains default to `global`). Headless subcommands: `install`, `setup`, `doctor`, `uninstall`, `snippet`.
|
|
37
|
+
|
|
38
|
+
After setup, Sirius offers (opt-in, diff shown before applying) to generate a **routing snippet** into your agent instruction files (`CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`, …): a short precedence contract telling the agent that `.context/` is the project's normative authority and that session memory is unverified history. Initializing a project also seeds the full contract as `.context/business-rule/precedence-contract.md`. Manage the block any time with `npx @sirius-mcp/mcp snippet --status` (read-only report) or `npx @sirius-mcp/mcp snippet --remove` (undo, with backup).
|
|
39
|
+
|
|
40
|
+
Running `npx @sirius-mcp/mcp drift` prints a read-only **staleness report**: documents past their `stale_after` window, retired/unparseable documents, and `code_refs` pointing at paths that no longer exist. Documents support four optional trust-family fields (`stale_after`, `sources`, `generated`, `verified`); crawler-generated drafts expire after 30 days by default.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
34
44
|
## IDE & MCP Client Configuration
|
|
35
45
|
|
|
36
46
|
Add Sirius to your preferred environment:
|
|
@@ -122,8 +132,8 @@ Once connected, your AI agent gains access to these primary context tools:
|
|
|
122
132
|
| --- | --- |
|
|
123
133
|
| `context_list` | Lists all documents in the project memory (filterable by `type`, `status`, `path_prefix`). |
|
|
124
134
|
| `context_get` | Retrieves the full markdown content and frontmatter metadata of a specific document. |
|
|
125
|
-
| `context_search` |
|
|
126
|
-
| `context_upsert` | Creates or updates a context document (feature, decision, business-rule, architecture). |
|
|
135
|
+
| `context_search` | Full-text search (SQLite FTS5) with optional hybrid vector retrieval (RRF fusion) — lexical engine active by default at runtime — over all indexed documents. |
|
|
136
|
+
| `context_upsert` | Creates or updates a context document (feature, decision, business-rule, component, architecture). |
|
|
127
137
|
| `context_crawl` | Crawls codebase or external documentation into context memory. |
|
|
128
138
|
| `reindex` | Rebuilds the local SQLite search index directly from the `.context/` markdown files. |
|
|
129
139
|
| `project_init` | Bootstraps a fresh `.context/` directory in a new repository. |
|
|
@@ -133,7 +143,9 @@ Once connected, your AI agent gains access to these primary context tools:
|
|
|
133
143
|
## MCP Resources Provided
|
|
134
144
|
|
|
135
145
|
- `context://document/{type}/{id}` — Direct URI to read any context document.
|
|
146
|
+
- `context://index/status` — Search index and file-watcher status, health, and warnings.
|
|
136
147
|
- `context://system/update-status` — Real-time update check and release metadata signal.
|
|
148
|
+
- `context://system/web-portal` — Web portal state: enabled flag and the actual host/port/URL in use.
|
|
137
149
|
|
|
138
150
|
---
|
|
139
151
|
|
|
@@ -147,6 +159,8 @@ http://localhost:4200
|
|
|
147
159
|
```
|
|
148
160
|
to explore your project's living knowledge base visually.
|
|
149
161
|
|
|
162
|
+
The portal is enabled by default (since v1.5.2). Opt out with `SIRIUS_WEB_PORTAL=0`, `SIRIUS_UI=0`, or `--no-ui`. If port 4200 is already taken, Sirius retries the next consecutive ports (up to 4209); the URL actually bound appears in the boot log and is exposed by the `context://system/web-portal` resource.
|
|
163
|
+
|
|
150
164
|
---
|
|
151
165
|
|
|
152
166
|
## Storage & Invariants
|
|
@@ -154,7 +168,7 @@ to explore your project's living knowledge base visually.
|
|
|
154
168
|
- **Markdown as Single Source of Truth**: Documents live in `.context/` inside your project git repository.
|
|
155
169
|
- **Auditable & Git-friendly**: Every decision or rule change can be committed, reviewed in PRs, and tracked in git history.
|
|
156
170
|
- **Ephemeral Index**: The local SQLite database (`.context/.index/sirius.db`) is completely disposable and gitignored; it can be rebuilt instantly with `reindex`.
|
|
157
|
-
- **
|
|
171
|
+
- **Local-first, no license phone-home**: Solo tier runs on your machine; the only outbound call is a non-blocking release update check. Set `SIRIUS_AUTO_UPDATE=disabled` for a fully air-gapped install.
|
|
158
172
|
|
|
159
173
|
---
|
|
160
174
|
|
|
@@ -168,7 +182,8 @@ to explore your project's living knowledge base visually.
|
|
|
168
182
|
|
|
169
183
|
Full documentation, guides, and deployment recipes are available at:
|
|
170
184
|
- Documentation: [siriusmcp.dev/docs/deploy](https://siriusmcp.dev/docs/deploy)
|
|
171
|
-
-
|
|
185
|
+
- Environment variables: the full `SIRIUS_*` surface is documented in [docs/deploy.md §3](docs/deploy.md#3-environment-variables)
|
|
186
|
+
- Package: [@sirius-mcp/mcp on npm](https://www.npmjs.com/package/@sirius-mcp/mcp) · Container image: [ghcr.io/sirius-mcp/sirius-mcp](https://github.com/sirius-mcp/sirius-mcp/pkgs/container/sirius-mcp)
|
|
172
187
|
|
|
173
188
|
---
|
|
174
189
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../../src/adapters/fs/structure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../../src/adapters/fs/structure.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,gFAMhB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,MAAM,GACT,MAAM,CAER;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAoB/B;AAWD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS7E;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAef;AAwBD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2B7B"}
|
|
@@ -3,6 +3,8 @@ import { resolve, join, parse } from "node:path";
|
|
|
3
3
|
import { parse as parseYaml } from "yaml";
|
|
4
4
|
import { writeProjectConfig } from "./config.js";
|
|
5
5
|
import { atomicWriteFile } from "./atomic.js";
|
|
6
|
+
import { CONTRACT_ID, CONTRACT_TYPE, todayIso } from "../../installer/precedence.js";
|
|
7
|
+
import { buildPrecedenceContractMarkdown } from "../../installer/contract-seed.js";
|
|
6
8
|
export const DocumentTypes = [
|
|
7
9
|
"feature",
|
|
8
10
|
"business-rule",
|
|
@@ -67,6 +69,20 @@ export async function ensureContextStructure(root, configYaml) {
|
|
|
67
69
|
await mkdir(join(contextRoot, ".index"), { recursive: true });
|
|
68
70
|
await writeProjectConfig(root, configYaml);
|
|
69
71
|
await atomicWriteFile(join(contextRoot, ".index", ".gitignore"), "# Sirius index artifacts\nsirius.db\nsirius.db-wal\nsirius.db-shm\n");
|
|
72
|
+
await seedPrecedenceContract(root, configYaml);
|
|
73
|
+
}
|
|
74
|
+
async function seedPrecedenceContract(root, configYaml) {
|
|
75
|
+
const language = contractSeedLanguage(configYaml);
|
|
76
|
+
await createDocumentExclusive(root, CONTRACT_TYPE, CONTRACT_ID, buildPrecedenceContractMarkdown(language, todayIso()));
|
|
77
|
+
}
|
|
78
|
+
function contractSeedLanguage(configYaml) {
|
|
79
|
+
try {
|
|
80
|
+
const parsed = parseYaml(configYaml);
|
|
81
|
+
return parsed?.language === "pt" ? "pt" : "en";
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return "en";
|
|
85
|
+
}
|
|
70
86
|
}
|
|
71
87
|
export async function listDocumentFiles(root, filters) {
|
|
72
88
|
const contextRoot = resolve(root, ".context");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../../../src/adapters/fs/structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../../../src/adapters/fs/structure.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import {} from "../../domain/index-writer.js";
|
|
|
6
6
|
import {} from "../../domain/license.js";
|
|
7
7
|
export const contextCrawlTool = {
|
|
8
8
|
name: "context_crawl",
|
|
9
|
-
description: "
|
|
9
|
+
description: "Scan workspace directories to bootstrap .context/ with draft documents extracted from source code and docs. WHEN TO USE: Onboard an existing brownfield repository or detect unmapped components into draft docs. Idempotent: never overwrites existing documents. WHEN NOT TO USE: Do NOT run repeatedly during regular feature development. Do NOT pass absolute paths outside container mounts. RETURNS: Report of { created, skipped, failed } paths. Use dryRun: true to preview before writing.",
|
|
10
10
|
inputSchema: {
|
|
11
11
|
type: "object",
|
|
12
12
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crawl.js","sourceRoot":"","sources":["../../../src/adapters/mcp/crawl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAwB,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAoB,MAAM,yBAAyB,CAAC;AAE3D,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"crawl.js","sourceRoot":"","sources":["../../../src/adapters/mcp/crawl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAwB,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAoB,MAAM,yBAAyB,CAAC;AAE3D,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,ueAAue;IACze,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,0KAA0K;aAC7K;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,wFAAwF;aAC3F;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,yBAAyB;QAChC,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;KACrB;CACF,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,QAAiE,EACjE,IAAY,EACZ,WAA4B,EAC5B,WAAwB,EACxB,QAAiB,EACjB,OAA4B;IAE5B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC1D,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,IAAI,EACJ,MAAM,CAAC,IAAI,EACX,WAAW,EACX,EAAE,OAAO,EAAE,EACX,WAAW,EACX,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC3C;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/adapters/mcp/get.js
CHANGED
|
@@ -3,7 +3,7 @@ import { getDocument, GetDocumentInput } from "../../app/get.js";
|
|
|
3
3
|
import { toMcpToolResult } from "../../errors.js";
|
|
4
4
|
export const contextGetTool = {
|
|
5
5
|
name: "context_get",
|
|
6
|
-
description: "Read a single document from the Sirius context store.
|
|
6
|
+
description: "Read a single document and frontmatter from the Sirius context store. WHEN TO USE: Use after finding a document ID via 'context_list' or 'context_search' to read its full architectural spec or business rule. WHEN NOT TO USE: Do NOT guess IDs (run 'context_search' or 'context_list' first). Do NOT use to read non-context source code files. RETURNS: { frontmatter, body, path } (bodies >8KB are truncated with warning). If document is missing, returns typed refusal DOCUMENT_NOT_FOUND with recovery next_action.",
|
|
7
7
|
inputSchema: {
|
|
8
8
|
type: "object",
|
|
9
9
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/adapters/mcp/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/adapters/mcp/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,ggBAAggB;IAClgB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC;gBAC3E,WAAW,EAAE,kCAAkC;aAChD;YACD,EAAE,EAAE;gBACF,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,oCAAoC;aAClD;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,CAAC;gBACZ,WAAW,EAAE,uEAAuE;aACrF;SACF;KACF;IACD,WAAW,EAAE;QACX,KAAK,EAAE,sBAAsB;QAC7B,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB;CACF,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,QAAiE,EACjE,IAAY,EACZ,WAAwB,EACxB,QAAiB;IAEjB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACxD,MAAM,KAAK,GACT,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YACvC,CAAC,CAAE,IAAgC;YACnC,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,IAAI,EACJ;YACE,IAAI,EAAE,KAAK,CAAC,IAAgC;YAC5C,EAAE,EAAE,KAAK,CAAC,EAA4B;YACtC,IAAI,EAAE,KAAK,CAAC,IAAgC;SAC7C,EACD,WAAW,EACX,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC3C;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
2
|
import { type Tool, type CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
3
|
import { type UpdateStatusPayload, type WebPortalStatusPayload } from "./resources.js";
|
|
4
|
+
import { type QueryCounter } from "./query-counter.js";
|
|
4
5
|
import { type IndexPort } from "../../domain/index.js";
|
|
5
6
|
import { type IndexWriterPort } from "../../domain/index-writer.js";
|
|
6
7
|
import { type LicensePort } from "../../domain/license.js";
|
|
@@ -19,6 +20,7 @@ export interface RegisterOptions {
|
|
|
19
20
|
searchOrchestrator?: SearchOrchestrator;
|
|
20
21
|
getUpdateStatus?: () => UpdateStatusPayload;
|
|
21
22
|
getWebPortalStatus?: () => WebPortalStatusPayload;
|
|
23
|
+
queryCounter?: QueryCounter;
|
|
22
24
|
}
|
|
23
25
|
export declare function registerMcpHandlers(server: Server, root: string, options: RegisterOptions): void;
|
|
24
26
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,cAAc,EACpB,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,eAAO,MAAM,KAAK,EAAE,IAAI,EAAO,CAAC;AAChC,eAAO,MAAM,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAClE,CAAC;AAEZ,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,kBAAkB,CAAC;IAC1C,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,mBAAmB,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,cAAc,EACpB,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,eAAO,MAAM,KAAK,EAAE,IAAI,EAAO,CAAC;AAChC,eAAO,MAAM,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAClE,CAAC;AAEZ,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,kBAAkB,CAAC;IAC1C,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,mBAAmB,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,sBAAsB,CAAC;IAClD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,eAAe,GACvB,IAAI,CAsDN"}
|
|
@@ -7,6 +7,7 @@ import { registerContextSearch } from "./search.js";
|
|
|
7
7
|
import { registerReindex } from "./reindex.js";
|
|
8
8
|
import { registerContextCrawl } from "./crawl.js";
|
|
9
9
|
import { registerContextResources, } from "./resources.js";
|
|
10
|
+
import { isCountedQuery } from "./query-counter.js";
|
|
10
11
|
import {} from "../../domain/index.js";
|
|
11
12
|
import {} from "../../domain/index-writer.js";
|
|
12
13
|
import {} from "../../domain/license.js";
|
|
@@ -24,12 +25,15 @@ export function registerMcpHandlers(server, root, options) {
|
|
|
24
25
|
registerContextSearch(tools, handlers, root, indexPort, licensePort, hardGate, searchOrchestrator);
|
|
25
26
|
registerReindex(tools, handlers, root, indexWriter, licensePort, hardGate);
|
|
26
27
|
registerContextCrawl(tools, handlers, root, indexWriter, licensePort, hardGate, options.crawlWatcher);
|
|
27
|
-
registerContextResources(server, root, licensePort, hardGate, options.getIndexStatus, options.getUpdateStatus, options.getWebPortalStatus);
|
|
28
|
+
registerContextResources(server, root, licensePort, hardGate, options.getIndexStatus, options.getUpdateStatus, options.getWebPortalStatus, options.queryCounter);
|
|
28
29
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
29
30
|
return { tools };
|
|
30
31
|
});
|
|
31
32
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
32
33
|
const { name, arguments: args } = request.params;
|
|
34
|
+
if (options.queryCounter && isCountedQuery(name)) {
|
|
35
|
+
options.queryCounter.increment(name);
|
|
36
|
+
}
|
|
33
37
|
const handler = handlers.get(name);
|
|
34
38
|
if (!handler) {
|
|
35
39
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/mcp/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAGvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EACL,wBAAwB,GAGzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAwB,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAA2B,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAA2B,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAA2B,MAAM,kCAAkC,CAAC;AAE3E,MAAM,CAAC,MAAM,KAAK,GAAW,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,QAAQ,GACnB,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/mcp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { initProject } from "../../app/init.js";
|
|
|
3
3
|
import { toMcpToolResult } from "../../errors.js";
|
|
4
4
|
export const projectInitTool = {
|
|
5
5
|
name: "project_init",
|
|
6
|
-
description: "Bootstrap a new Sirius context store
|
|
6
|
+
description: "Bootstrap a new Sirius context store in the current project root. WHEN TO USE: Call ONCE when setting up Sirius on a new, uninitialized repository to generate .context/, context.config.yaml, and schema directories. WHEN NOT TO USE: Do NOT call if .context/ already exists (returns ALREADY_INITIALIZED refusal). RETURNS: Confirmation message or typed refusal directing to 'context_list'.",
|
|
7
7
|
inputSchema: {
|
|
8
8
|
type: "object",
|
|
9
9
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/adapters/mcp/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,cAAc;IACpB,WAAW,EACT
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/adapters/mcp/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,oYAAoY;IACtY,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;YACnE,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4BAA4B;aAC1C;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,2BAA2B;QAClC,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,KAAK;KACtB;CACF,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,QAA0D,EAC1D,IAAY,EACZ,WAAwB,EACxB,QAAiB;IAEjB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACzD,MAAM,KAAK,GACT,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YACvC,CAAC,CAAE,IAAgC;YACnC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B;YACE,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAA0B;YACtC,QAAQ,EAAE,KAAK,CAAC,QAA8B;YAC9C,WAAW,EAAE,KAAK,CAAC,WAAiC;SAClC,EACpB,WAAW,EACX,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,EAAE;aAC5D;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { listContextStore, ContextListInput } from "../../app/list.js";
|
|
|
3
3
|
import { toMcpError, toMcpToolResult } from "../../errors.js";
|
|
4
4
|
export const contextListTool = {
|
|
5
5
|
name: "context_list",
|
|
6
|
-
description: "Sirius
|
|
6
|
+
description: "Sirius persistent knowledge store — START HERE to inspect existing project documentation (features, decisions, business rules, components, architecture spines). WHEN TO USE: Use at the start of a session or when mapping out project capabilities to get an inventory of document IDs and metadata. WHEN NOT TO USE: Do NOT use to search by keywords (use 'context_search') and do NOT use to read full document bodies (use 'context_get'). RETURNS: Array of { id, type, status, title, path } without full markdown bodies. If empty, call 'context_crawl' to discover docs or 'context_upsert' to create one.",
|
|
7
7
|
inputSchema: {
|
|
8
8
|
type: "object",
|
|
9
9
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/adapters/mcp/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAG9D,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/adapters/mcp/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAG9D,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,ulBAAulB;IACzlB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC;gBAC3E,WAAW,EAAE,yBAAyB;aACvC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC;gBACrD,WAAW,EAAE,2BAA2B;aACzC;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qDAAqD;aACnE;SACF;KACF;IACD,WAAW,EAAE;QACX,KAAK,EAAE,oBAAoB;QAC3B,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB;CACF,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,QAAiE,EACjE,IAAY,EACZ,WAAwB,EACxB,QAAiB;IAEjB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACzD,MAAM,KAAK,GACT,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YACvC,CAAC,CAAE,IAAgC;YACnC,CAAC,CAAC,EAAE,CAAC;QAET,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC;gBAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC3C;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type CountedQuery = "context_search" | "context_get" | "context_list" | "document_reads";
|
|
2
|
+
export interface QueryStatsSnapshot {
|
|
3
|
+
readonly since: string;
|
|
4
|
+
readonly counts: Readonly<Record<CountedQuery, number>>;
|
|
5
|
+
readonly total: number;
|
|
6
|
+
}
|
|
7
|
+
export interface QueryCounter {
|
|
8
|
+
increment(query: CountedQuery): void;
|
|
9
|
+
snapshot(): QueryStatsSnapshot;
|
|
10
|
+
}
|
|
11
|
+
export declare function isCountedQuery(name: string): name is CountedQuery;
|
|
12
|
+
/**
|
|
13
|
+
* Per-boot, in-memory only (CAP-17 / A-7): no persistence, no identifiers,
|
|
14
|
+
* no reset — `since` bounds the measurement window to the process lifetime.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createQueryCounter(now?: () => Date): QueryCounter;
|
|
17
|
+
//# sourceMappingURL=query-counter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-counter.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/query-counter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,gBAAgB,GAChB,aAAa,GACb,cAAc,GACd,gBAAgB,CAAC;AAErB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,QAAQ,IAAI,kBAAkB,CAAC;CAChC;AASD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAEjE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,IAAuB,GAAG,YAAY,CAgBnF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const EMPTY_COUNTS = {
|
|
2
|
+
context_search: 0,
|
|
3
|
+
context_get: 0,
|
|
4
|
+
context_list: 0,
|
|
5
|
+
document_reads: 0,
|
|
6
|
+
};
|
|
7
|
+
export function isCountedQuery(name) {
|
|
8
|
+
return Object.hasOwn(EMPTY_COUNTS, name);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Per-boot, in-memory only (CAP-17 / A-7): no persistence, no identifiers,
|
|
12
|
+
* no reset — `since` bounds the measurement window to the process lifetime.
|
|
13
|
+
*/
|
|
14
|
+
export function createQueryCounter(now = () => new Date()) {
|
|
15
|
+
const counts = { ...EMPTY_COUNTS };
|
|
16
|
+
const since = now().toISOString();
|
|
17
|
+
return {
|
|
18
|
+
increment(query) {
|
|
19
|
+
counts[query] += 1;
|
|
20
|
+
},
|
|
21
|
+
snapshot() {
|
|
22
|
+
const total = counts.context_search +
|
|
23
|
+
counts.context_get +
|
|
24
|
+
counts.context_list +
|
|
25
|
+
counts.document_reads;
|
|
26
|
+
return { since, counts: { ...counts }, total };
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=query-counter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-counter.js","sourceRoot":"","sources":["../../../src/adapters/mcp/query-counter.ts"],"names":[],"mappings":"AAiBA,MAAM,YAAY,GAAiC;IACjD,cAAc,EAAE,CAAC;IACjB,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;IACnE,MAAM,MAAM,GAAiC,EAAE,GAAG,YAAY,EAAE,CAAC;IACjE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO;QACL,SAAS,CAAC,KAAmB;YAC3B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,QAAQ;YACN,MAAM,KAAK,GACT,MAAM,CAAC,cAAc;gBACrB,MAAM,CAAC,WAAW;gBAClB,MAAM,CAAC,YAAY;gBACnB,MAAM,CAAC,cAAc,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -5,7 +5,7 @@ import {} from "../../domain/index-writer.js";
|
|
|
5
5
|
import {} from "../../domain/license.js";
|
|
6
6
|
export const reindexTool = {
|
|
7
7
|
name: "reindex",
|
|
8
|
-
description: "Rebuild the search index from
|
|
8
|
+
description: "Rebuild the SQLite FTS5 and hybrid search index from .context/ markdown files. WHEN TO USE: Run when search results seem outdated, after external git pull, or following manual edits to markdown files outside MCP tools. WHEN NOT TO USE: Do NOT run after 'context_upsert' (upsert automatically updates index). Does not modify markdown files. RETURNS: Status report with count of indexed documents and syntax warnings.",
|
|
9
9
|
inputSchema: {
|
|
10
10
|
type: "object",
|
|
11
11
|
properties: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../../src/adapters/mcp/reindex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAwB,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAoB,MAAM,yBAAyB,CAAC;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,IAAI,EAAE,SAAS;IACf,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../../src/adapters/mcp/reindex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAwB,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAoB,MAAM,yBAAyB,CAAC;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,IAAI,EAAE,SAAS;IACf,WAAW,EACT,iaAAia;IACna,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;KACf;IACD,WAAW,EAAE;QACX,KAAK,EAAE,sBAAsB;QAC7B,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;KACrB;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,QAAiE,EACjE,IAAY,EACZ,WAA4B,EAC5B,WAAwB,EACxB,QAAiB;IAEjB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEnF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC3C;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -2,9 +2,12 @@ import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
|
2
2
|
import type { LicensePort } from "../../domain/license.js";
|
|
3
3
|
import { type IndexStatusPayload } from "../../app/index-status.js";
|
|
4
4
|
import { type LastUpdateCheck } from "../update/status.js";
|
|
5
|
+
import { type QueryCounter } from "./query-counter.js";
|
|
5
6
|
export declare const INDEX_STATUS_URI = "context://index/status";
|
|
6
7
|
export declare const UPDATE_STATUS_URI = "context://system/update-status";
|
|
7
8
|
export declare const WEB_PORTAL_STATUS_URI = "context://system/web-portal";
|
|
9
|
+
export declare const PRECEDENCE_CONTRACT_URI = "context://system/precedence-contract";
|
|
10
|
+
export declare const QUERY_STATS_URI = "context://system/query-stats";
|
|
8
11
|
export interface UpdateStatusPayload {
|
|
9
12
|
readonly autoUpdate: "enabled" | "disabled";
|
|
10
13
|
readonly currentVersion: string;
|
|
@@ -16,7 +19,7 @@ export interface WebPortalStatusPayload {
|
|
|
16
19
|
readonly port: number | null;
|
|
17
20
|
readonly url: string | null;
|
|
18
21
|
}
|
|
19
|
-
export declare function registerContextResources(server: Server, root: string, licensePort: LicensePort, hardGate: boolean, getIndexStatus?: () => IndexStatusPayload, getUpdateStatus?: () => UpdateStatusPayload, getWebPortalStatus?: () => WebPortalStatusPayload): void;
|
|
22
|
+
export declare function registerContextResources(server: Server, root: string, licensePort: LicensePort, hardGate: boolean, getIndexStatus?: () => IndexStatusPayload, getUpdateStatus?: () => UpdateStatusPayload, getWebPortalStatus?: () => WebPortalStatusPayload, queryCounter?: QueryCounter): void;
|
|
20
23
|
export declare function parseContextResourceUri(uri: string): {
|
|
21
24
|
success: true;
|
|
22
25
|
type: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAUxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,eAAO,MAAM,iBAAiB,mCAAmC,CAAC;AAClE,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AACnE,eAAO,MAAM,uBAAuB,yCAAyC,CAAC;AAC9E,eAAO,MAAM,eAAe,iCAAiC,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,OAAO,EACjB,cAAc,CAAC,EAAE,MAAM,kBAAkB,EACzC,eAAe,CAAC,EAAE,MAAM,mBAAmB,EAC3C,kBAAkB,CAAC,EAAE,MAAM,sBAAsB,EACjD,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI,CAkHN;AAiGD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,GACV;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,CAMlE"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { ListResourceTemplatesRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
2
2
|
import { getDocument } from "../../app/get.js";
|
|
3
|
+
import { buildPrecedenceContractPayload } from "../../app/precedence-contract.js";
|
|
3
4
|
import { mcpError } from "../../errors.js";
|
|
4
5
|
import { DocumentTypes, buildDocumentMarkdown } from "../../schemas/document.js";
|
|
5
6
|
import {} from "../../app/index-status.js";
|
|
6
7
|
import {} from "../update/status.js";
|
|
8
|
+
import {} from "./query-counter.js";
|
|
7
9
|
const RESOURCE_TEMPLATE = "context://document/{type}/{id}";
|
|
8
10
|
const RESOURCE_URI_REGEX = /^context:\/\/document\/([a-z-]+)\/([a-z0-9-]+)$/;
|
|
9
11
|
export const INDEX_STATUS_URI = "context://index/status";
|
|
10
12
|
export const UPDATE_STATUS_URI = "context://system/update-status";
|
|
11
13
|
export const WEB_PORTAL_STATUS_URI = "context://system/web-portal";
|
|
12
|
-
export
|
|
14
|
+
export const PRECEDENCE_CONTRACT_URI = "context://system/precedence-contract";
|
|
15
|
+
export const QUERY_STATS_URI = "context://system/query-stats";
|
|
16
|
+
export function registerContextResources(server, root, licensePort, hardGate, getIndexStatus, getUpdateStatus, getWebPortalStatus, queryCounter) {
|
|
13
17
|
server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => {
|
|
14
18
|
return {
|
|
15
19
|
resourceTemplates: [
|
|
@@ -46,6 +50,18 @@ export function registerContextResources(server, root, licensePort, hardGate, ge
|
|
|
46
50
|
description: "Whether the Living Architecture web portal is enabled and, if bound, the actual host/port/url in use.",
|
|
47
51
|
mimeType: "application/json",
|
|
48
52
|
},
|
|
53
|
+
{
|
|
54
|
+
uri: PRECEDENCE_CONTRACT_URI,
|
|
55
|
+
name: "Precedence contract",
|
|
56
|
+
description: "The project's precedence contract: version, language, Markdown path, full body, and the rendered routing snippet.",
|
|
57
|
+
mimeType: "application/json",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
uri: QUERY_STATS_URI,
|
|
61
|
+
name: "Query stats",
|
|
62
|
+
description: "In-memory per-process counts of context_search/context_get/context_list calls and document reads since boot. No paths, ids, or query text.",
|
|
63
|
+
mimeType: "application/json",
|
|
64
|
+
},
|
|
49
65
|
],
|
|
50
66
|
};
|
|
51
67
|
});
|
|
@@ -60,6 +76,12 @@ export function registerContextResources(server, root, licensePort, hardGate, ge
|
|
|
60
76
|
if (uri === WEB_PORTAL_STATUS_URI) {
|
|
61
77
|
return readWebPortalStatusResource(getWebPortalStatus);
|
|
62
78
|
}
|
|
79
|
+
if (uri === PRECEDENCE_CONTRACT_URI) {
|
|
80
|
+
return readPrecedenceContractResource(root);
|
|
81
|
+
}
|
|
82
|
+
if (uri === QUERY_STATS_URI) {
|
|
83
|
+
return readQueryStatsResource(queryCounter);
|
|
84
|
+
}
|
|
63
85
|
const parsed = parseContextResourceUri(uri);
|
|
64
86
|
if (!parsed.success) {
|
|
65
87
|
throw mcpError("INVALID_RESOURCE_URI", `Invalid resource URI. Expected: ${RESOURCE_TEMPLATE}`);
|
|
@@ -71,6 +93,7 @@ export function registerContextResources(server, root, licensePort, hardGate, ge
|
|
|
71
93
|
if (!result.success) {
|
|
72
94
|
throw result.error;
|
|
73
95
|
}
|
|
96
|
+
queryCounter?.increment("document_reads");
|
|
74
97
|
const markdown = buildDocumentMarkdown(result.data.frontmatter, result.data.body);
|
|
75
98
|
return {
|
|
76
99
|
contents: [
|
|
@@ -125,6 +148,32 @@ function readWebPortalStatusResource(getWebPortalStatus) {
|
|
|
125
148
|
],
|
|
126
149
|
};
|
|
127
150
|
}
|
|
151
|
+
async function readPrecedenceContractResource(root) {
|
|
152
|
+
const payload = await buildPrecedenceContractPayload(root);
|
|
153
|
+
return {
|
|
154
|
+
contents: [
|
|
155
|
+
{
|
|
156
|
+
uri: PRECEDENCE_CONTRACT_URI,
|
|
157
|
+
mimeType: "application/json",
|
|
158
|
+
text: JSON.stringify(payload, null, 2),
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function readQueryStatsResource(queryCounter) {
|
|
164
|
+
if (!queryCounter) {
|
|
165
|
+
throw mcpError("RESOURCE_UNAVAILABLE", "Query stats are not available in this server instance.");
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
contents: [
|
|
169
|
+
{
|
|
170
|
+
uri: QUERY_STATS_URI,
|
|
171
|
+
mimeType: "application/json",
|
|
172
|
+
text: JSON.stringify(queryCounter.snapshot(), null, 2),
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
};
|
|
176
|
+
}
|
|
128
177
|
export function parseContextResourceUri(uri) {
|
|
129
178
|
const match = RESOURCE_URI_REGEX.exec(uri);
|
|
130
179
|
if (!match) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/adapters/mcp/resources.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEjF,OAAO,EAA2B,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAwB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/adapters/mcp/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import {} from "../../domain/license.js";
|
|
|
6
6
|
import {} from "../../app/search-orchestrator.js";
|
|
7
7
|
export const contextSearchTool = {
|
|
8
8
|
name: "context_search",
|
|
9
|
-
description: "
|
|
9
|
+
description: "Full-text keyword and hybrid search across the Sirius context store. WHEN TO USE: Use FIRST whenever asked about architecture decisions, business rules, features, or requirements without knowing exact document IDs, instead of grepping source files. WHEN NOT TO USE: Do NOT use to search application source code (use workspace grep). Do NOT use to read complete document bodies (follow up with 'context_get' using matched IDs). RETURNS: Up to 5 relevant snippets with { id, type, status, title, path, snippet }. If results are empty or stale after manual markdown edits, call 'reindex'.",
|
|
10
10
|
inputSchema: {
|
|
11
11
|
type: "object",
|
|
12
12
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/adapters/mcp/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAA2B,MAAM,kCAAkC,CAAC;AAE3E,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/adapters/mcp/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAA2B,MAAM,kCAAkC,CAAC;AAE3E,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,2kBAA2kB;IAC7kB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,CAAC;gBACZ,WAAW,EAAE,eAAe;aAC7B;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,8CAA8C;aAC5D;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,sBAAsB;QAC7B,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB;CACF,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,QAAiE,EACjE,IAAY,EACZ,SAAoB,EACpB,WAAwB,EACxB,QAAiB,EACjB,kBAAuC;IAEvC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC3D,MAAM,KAAK,GACT,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YACvC,CAAC,CAAE,IAAgC;YACnC,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,IAAI,EACJ;YACE,KAAK,EAAE,KAAK,CAAC,KAAe;YAC5B,KAAK,EAAG,KAAK,CAAC,KAA4B,IAAI,CAAC;SAChD,EACD,SAAS,EACT,WAAW,EACX,QAAQ,EACR,kBAAkB,CACnB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC3C;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -5,7 +5,7 @@ import {} from "../../domain/index-writer.js";
|
|
|
5
5
|
import {} from "../../domain/license.js";
|
|
6
6
|
export const contextUpsertTool = {
|
|
7
7
|
name: "context_upsert",
|
|
8
|
-
description: "Create or update a document in the Sirius context store
|
|
8
|
+
description: "Create or update a document in the Sirius context store (.context/{type}/{id}.md) and synchronously refresh search index. WHEN TO USE: Record new architectural decisions (ADRs), user stories, business rules, component specs, or update existing docs. WHEN NOT TO USE: Do NOT delete documents (retire by setting status to 'deprecated' or 'superseded'). Do NOT omit frontmatter metadata (title, summary, tags are indexed). RETURNS: { status: 'ok', indexUpdate: 'ok'|'failed' } or typed refusal MISSING_REQUIRED_FIELD with required fields.",
|
|
9
9
|
inputSchema: {
|
|
10
10
|
type: "object",
|
|
11
11
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../../src/adapters/mcp/upsert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,cAAc,EAA2B,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAwB,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAoB,MAAM,yBAAyB,CAAC;AAE3D,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../../src/adapters/mcp/upsert.ts"],"names":[],"mappings":"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"}
|