bc-observatory 0.7.0 → 0.7.1
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 +1 -1
- package/dist/server.js +6 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Microsoft 365 roadmap features, videos and community posts), every claim with a
|
|
|
8
8
|
claude mcp add bc-observatory -- npx -y bc-observatory@latest
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
Or the Claude Code plugin (MCP server plus skills): `claude plugin marketplace add waldo1001/waldo.BCObservatory`.
|
|
11
|
+
Or the Claude Code plugin (MCP server plus skills): `claude plugin marketplace add waldo1001/waldo.BCObservatory`. The server never fetches Learn pages (D01); the plugin also connects Microsoft's Learn MCP (`https://learn.microsoft.com/api/mcp`), and a Learn hit's url is read there with `microsoft_docs_fetch`.
|
|
12
12
|
|
|
13
13
|
Tools: `search`, `ls`, `cat`, `get_object`, `diff_object`, `localization`, `whats_new`, `blog_footprint`, `feedback`.
|
|
14
14
|
|
package/dist/server.js
CHANGED
|
@@ -463,6 +463,7 @@ var push = (m, k, v) => {
|
|
|
463
463
|
if (l) l.push(v);
|
|
464
464
|
else m.set(k, [v]);
|
|
465
465
|
};
|
|
466
|
+
var INDEX_PAGE_IDS = 16;
|
|
466
467
|
function normOf(r) {
|
|
467
468
|
const cached = NORM.get(r);
|
|
468
469
|
if (cached) return cached;
|
|
@@ -471,7 +472,8 @@ function normOf(r) {
|
|
|
471
472
|
const own = r.type === "topic" ? new Set(tokenize(r.title)) : null;
|
|
472
473
|
const learn = r.type === "learn";
|
|
473
474
|
const tags = (r.tags ?? []).flatMap((t) => indexTokens(t, learn)).filter((t) => !own?.has(t));
|
|
474
|
-
const
|
|
475
|
+
const coded = learn ? [...new Set((r.tags ?? []).filter(isCodedId))] : [];
|
|
476
|
+
const eqs = r.type === "object" || symbol ? [tokenize(r.name), ...r.caption ? [tokenize(r.caption)] : []] : [tokenize(r.title), ...learn ? [...(r.title.match(/\b[A-Z]{2,3}\d{4}\b/g) ?? []).filter(isCodedId), ...coded.length <= INDEX_PAGE_IDS ? coded : []].map((t) => tokenize(t)).filter((t) => t.length === 1) : []];
|
|
475
477
|
const n = { main: [...main], tags: learn ? tags : [...new Set(tags)], text: symbol ? null : indexTokens(r.text ?? ""), eqs };
|
|
476
478
|
NORM.set(r, n);
|
|
477
479
|
return n;
|
|
@@ -1569,7 +1571,7 @@ ${pageView(md, clean, {}, budget, site)}`;
|
|
|
1569
1571
|
}
|
|
1570
1572
|
|
|
1571
1573
|
// src/server.ts
|
|
1572
|
-
var VERSION = "0.7.
|
|
1574
|
+
var VERSION = "0.7.1";
|
|
1573
1575
|
var SITE = (process.env.BC_OBSERVATORY_SITE ?? "https://waldo1001.github.io/waldo.BCObservatory/").replace(/\/?$/, "/");
|
|
1574
1576
|
var LOCAL = process.env.BC_OBSERVATORY_LOCAL ? resolve(process.env.BC_OBSERVATORY_LOCAL) : null;
|
|
1575
1577
|
var BUDGET = budgetOf(process.env.BC_OBSERVATORY_MAX_CHARS);
|
|
@@ -1790,7 +1792,7 @@ Hint: ${h.text}${via(h)}`).join("")}`;
|
|
|
1790
1792
|
}
|
|
1791
1793
|
if (!shown.length) return `No pages match "${a.query}". Try fewer words, or ls("") to browse sections.${note}${hintText}`;
|
|
1792
1794
|
const how = semantic.length && keyword.length && mode === "hybrid" ? "keyword + meaning" : mode === "semantic" && semantic.length ? "meaning" : "keyword";
|
|
1793
|
-
const learnNote = shown.some((r) => r.type === "learn") ? "; a Learn article's url
|
|
1795
|
+
const learnNote = shown.some((r) => r.type === "learn") ? "; a Learn article's url reads with the Learn MCP's microsoft_docs_fetch (the plugin connects it), else open it on learn.microsoft.com; cat(hub) reads its hub" : "";
|
|
1794
1796
|
if (mode === "hybrid" && !keyword.length && semantic.length) return `No keyword match for "${a.query}"; ${shown.length} pages by meaning only (read one with cat(path)${learnNote}):
|
|
1795
1797
|
${shown.map((r) => hitLine(r, tag(uid(r)))).join("\n")}${hintText}`;
|
|
1796
1798
|
return `${shown.length} results, ${how}${note}${how === "keyword + meaning" ? ` (exact band: ${exactBand})` : ""} (read one with cat(path)${learnNote}):
|
|
@@ -1946,7 +1948,7 @@ ${a.message}
|
|
|
1946
1948
|
var VIEW = { section: z.string().optional(), offset: z.number().int().min(0).max(1e5).optional(), limit: z.number().int().min(1).max(5e3).optional() };
|
|
1947
1949
|
function createServer() {
|
|
1948
1950
|
const server = new McpServer({ name: "bc-observatory", version: VERSION }, {
|
|
1949
|
-
instructions: "BC Observatory: an agent-first knowledge base of Microsoft Dynamics 365 Business Central (Learn hubs, AL objects from the code for BC28-30, localizations, roadmap features, videos, community posts, code changes: merged pull requests of Microsoft's Business Central repositories, BCApps joined to the AL objects they changed, under changes/, and AL Language extension releases (the marketplace changelog, under releases/)). Every page carries a trust tier (official = Microsoft, community = everyone else) and a review state: say which tier a claim comes from. Never invent AL object ids or version numbers: look them up with get_object. Start with search(), read pages with cat(path), browse with ls(path). search() also finds Microsoft Learn articles by title, summary and the identifiers they document (type learn): those are not pages here
|
|
1951
|
+
instructions: "BC Observatory: an agent-first knowledge base of Microsoft Dynamics 365 Business Central (Learn hubs, AL objects from the code for BC28-30, localizations, roadmap features, videos, community posts, code changes: merged pull requests of Microsoft's Business Central repositories, BCApps joined to the AL objects they changed, under changes/, and AL Language extension releases (the marketplace changelog, under releases/)). Every page carries a trust tier (official = Microsoft, community = everyone else) and a review state: say which tier a claim comes from. Never invent AL object ids or version numbers: look them up with get_object. Start with search(), read pages with cat(path), browse with ls(path). search() also finds Microsoft Learn articles by title, summary and the identifiers they document (type learn): those are not pages here: read their url with the Learn MCP's microsoft_docs_fetch (the plugin connects it), else open it on learn.microsoft.com."
|
|
1950
1952
|
});
|
|
1951
1953
|
server.registerTool(
|
|
1952
1954
|
"search",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bc-observatory",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "MCP server for BC Observatory: an agent-first, cross-referenced knowledge base of Microsoft Dynamics 365 Business Central (Learn, code, roadmap, videos, community blogs).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|