forgebook 0.1.0 → 0.1.3

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.
Files changed (91) hide show
  1. package/README.md +26 -5
  2. package/dist/bin/forgebook/agentClient.d.ts +22 -0
  3. package/dist/bin/forgebook/agentClient.d.ts.map +1 -0
  4. package/dist/bin/forgebook/agentClient.js +70 -0
  5. package/dist/bin/forgebook/agentClient.js.map +1 -0
  6. package/dist/bin/forgebook/agentText.d.ts +18 -0
  7. package/dist/bin/forgebook/agentText.d.ts.map +1 -0
  8. package/dist/bin/forgebook/agentText.js +44 -0
  9. package/dist/bin/forgebook/agentText.js.map +1 -0
  10. package/dist/bin/forgebook/forgebook.mjs +228 -49
  11. package/dist/bin/forgebook/forgebook.mjs.map +1 -1
  12. package/dist/bin/forgebook/mcpTools.d.ts +12 -0
  13. package/dist/bin/forgebook/mcpTools.d.ts.map +1 -0
  14. package/dist/bin/forgebook/mcpTools.js +89 -0
  15. package/dist/bin/forgebook/mcpTools.js.map +1 -0
  16. package/dist/bin/forgebook-docs/forgebook-docs.mjs +1 -2
  17. package/dist/bin/forgebook-docs/forgebook-docs.mjs.map +1 -1
  18. package/dist/src/backdrops.d.ts +4 -4
  19. package/dist/src/componentDocs.d.ts +1 -1
  20. package/dist/src/componentDocs.js +1 -1
  21. package/dist/src/frame/frameClock.d.ts +3 -3
  22. package/dist/src/frame/frameView.js +1 -1
  23. package/dist/src/frame/mountFrame.d.ts +2 -2
  24. package/dist/src/frame/mountFrame.js +2 -2
  25. package/dist/src/frame/storyModule.d.ts +1 -1
  26. package/dist/src/frame/storyModule.d.ts.map +1 -1
  27. package/dist/src/frame/storyRun.d.ts +2 -2
  28. package/dist/src/frame/storyRun.js +1 -1
  29. package/dist/src/messages.d.ts +1 -1
  30. package/dist/src/messages.js +1 -1
  31. package/dist/src/shell/ClockControls.d.ts +1 -1
  32. package/dist/src/shell/ClockControls.js +1 -1
  33. package/dist/src/shell/ComponentPage.js +1 -1
  34. package/dist/src/shell/ComponentPage.js.map +1 -1
  35. package/dist/src/shell/EventsTab.d.ts +1 -1
  36. package/dist/src/shell/FrameView.d.ts +1 -1
  37. package/dist/src/shell/PartsTab.d.ts +1 -1
  38. package/dist/src/shell/PropsTab.d.ts +1 -1
  39. package/dist/src/shell/Shell.js +3 -3
  40. package/dist/src/shell/Shell.js.map +1 -1
  41. package/dist/src/shell/Sidebar.d.ts +1 -1
  42. package/dist/src/shell/Sidebar.js +3 -3
  43. package/dist/src/shell/Stage.d.ts +1 -1
  44. package/dist/src/shell/Stage.js +1 -1
  45. package/dist/src/shell/StageViewport.d.ts +1 -2
  46. package/dist/src/shell/StageViewport.d.ts.map +1 -1
  47. package/dist/src/shell/StageViewport.js +1 -2
  48. package/dist/src/shell/StageViewport.js.map +1 -1
  49. package/dist/src/shell/Toolbar.js +1 -1
  50. package/dist/src/shell/treeSearch.d.ts +2 -2
  51. package/dist/src/shell/useFrameMessages.d.ts +1 -1
  52. package/dist/src/shell/useFrameMessages.d.ts.map +1 -1
  53. package/dist/src/storyBackground.d.ts +1 -1
  54. package/dist/src/storyClock.d.ts +2 -2
  55. package/dist/src/storyClock.js +2 -2
  56. package/dist/src/storyTree.d.ts +7 -7
  57. package/dist/src/storyTree.d.ts.map +1 -1
  58. package/dist/src/viewState.d.ts +11 -2
  59. package/dist/src/viewState.d.ts.map +1 -1
  60. package/dist/src/viewState.js +15 -0
  61. package/dist/src/viewState.js.map +1 -1
  62. package/dist/src/vite/agent.types.d.ts +90 -0
  63. package/dist/src/vite/agent.types.d.ts.map +1 -0
  64. package/dist/src/vite/agent.types.js +1 -0
  65. package/dist/src/vite/agent.types.js.map +1 -0
  66. package/dist/src/vite/agentApi.d.ts +94 -0
  67. package/dist/src/vite/agentApi.d.ts.map +1 -0
  68. package/dist/src/vite/agentApi.js +162 -0
  69. package/dist/src/vite/agentApi.js.map +1 -0
  70. package/dist/src/vite/agentRoutes.d.ts +45 -0
  71. package/dist/src/vite/agentRoutes.d.ts.map +1 -0
  72. package/dist/src/vite/agentRoutes.js +94 -0
  73. package/dist/src/vite/agentRoutes.js.map +1 -0
  74. package/dist/src/vite/docsProgram.js +1 -1
  75. package/dist/src/vite/forcedStates.d.ts +1 -1
  76. package/dist/src/vite/forcedStates.js +1 -1
  77. package/dist/src/vite/forgebookPlugin.d.ts.map +1 -1
  78. package/dist/src/vite/forgebookPlugin.js +10 -3
  79. package/dist/src/vite/forgebookPlugin.js.map +1 -1
  80. package/dist/src/vite/highlightCode.js +1 -1
  81. package/dist/src/vite/mcpProtocol.d.ts +73 -0
  82. package/dist/src/vite/mcpProtocol.d.ts.map +1 -0
  83. package/dist/src/vite/mcpProtocol.js +181 -0
  84. package/dist/src/vite/mcpProtocol.js.map +1 -0
  85. package/dist/src/vite/pages.d.ts +12 -0
  86. package/dist/src/vite/pages.d.ts.map +1 -1
  87. package/dist/src/vite/pages.js +21 -0
  88. package/dist/src/vite/pages.js.map +1 -1
  89. package/dist/src/vite/storyFilesModule.js +1 -1
  90. package/dist/src/vite/typeScriptPieces.js +2 -2
  91. package/package.json +7 -3
@@ -0,0 +1,162 @@
1
+ /**
2
+ * The documents the catalogue answers tools and agents with, made from what the pages use: the story tree, a story's
3
+ * module as the frame reads it, its component's docs as the props panel reads them. Pure: values in, documents out;
4
+ * the dev server loads the modules and hands them here.
5
+ *
6
+ * @module
7
+ */
8
+ import { isComponentDocs } from "../componentDocs.js";
9
+ import { NO_PREVIEW, readStory } from "../frame/storyModule.js";
10
+ import { componentId } from "../storyTree.js";
11
+ import { frameAddressOf, storyAddressOf } from "../viewState.js";
12
+ /**
13
+ * A story's links in a view.
14
+ *
15
+ * @param pages - where the catalogue is served.
16
+ * @param id - the story's id.
17
+ * @param view - the view's query (`theme=dark&lang=it`); empty for the default view.
18
+ */
19
+ export const storyLinks = (pages, id, view) => ({
20
+ address: storyAddressOf(pages.page, id, view),
21
+ frame: frameAddressOf(pages.frame, id, view)
22
+ });
23
+ /** A story of the tree as the documents give it. */
24
+ const agentStory = (story, isUnlisted, pages, view) => ({
25
+ id: story.id,
26
+ name: story.name,
27
+ exportName: story.exportName,
28
+ description: story.description,
29
+ tags: story.tags,
30
+ isUnlisted,
31
+ links: storyLinks(pages, story.id, view)
32
+ });
33
+ /** A component of the tree as the documents give it, its listed stories first. */
34
+ const agentComponent = (location, pages, view) => {
35
+ const { source, component } = location;
36
+ return {
37
+ id: componentId(source.id, component.title),
38
+ title: component.title,
39
+ source: source.id,
40
+ file: component.file,
41
+ stories: [
42
+ ...component.stories.map((story) => agentStory(story, false, pages, view)),
43
+ ...component.unlisted.map((story) => agentStory(story, true, pages, view))
44
+ ]
45
+ };
46
+ };
47
+ /**
48
+ * The stories a catalogue has.
49
+ *
50
+ * @param title - the catalogue's name.
51
+ * @param tree - its story tree.
52
+ * @param pages - where it is served, for the links.
53
+ * @param view - the view the links open in; empty for the default view.
54
+ */
55
+ export const storiesDocument = (title, tree, pages, view) => ({
56
+ schema: 1,
57
+ title,
58
+ sources: tree.sources.map((source) => ({ id: source.id, name: source.name })),
59
+ components: tree.sources.flatMap((source) => source.families.flatMap((family) => family.groups.flatMap((group) => group.components.map((component) => agentComponent({ source, family, group, component }, pages, view))))),
60
+ problems: tree.problems
61
+ });
62
+ /**
63
+ * A value as JSON keeps it: functions, symbols, `undefined` and cycles dropped, so a story's args can be printed
64
+ * whatever a story passes (an `fn()` spy, a React element is an object and stays as its JSON).
65
+ *
66
+ * @param value - any value.
67
+ */
68
+ export const jsonValue = (value) => {
69
+ const seen = new WeakSet();
70
+ const text = JSON.stringify(value, (_key, item) => {
71
+ if (typeof item === "function" || typeof item === "symbol" || typeof item === "bigint")
72
+ return undefined;
73
+ if (typeof item === "object" && item !== null) {
74
+ if (seen.has(item))
75
+ return undefined;
76
+ seen.add(item);
77
+ }
78
+ return item;
79
+ });
80
+ return text === undefined ? undefined : JSON.parse(text);
81
+ };
82
+ /** Whether a value is a plain object. */
83
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
84
+ /** The docs a story file's docs loader gave, as a document field, with the problem when there is one. */
85
+ const docsOf = (loaded) => {
86
+ if ("error" in loaded)
87
+ return { docs: undefined, problem: `Its component's docs failed: ${loaded.error}` };
88
+ const { value } = loaded;
89
+ if (isComponentDocs(value))
90
+ return { docs: value, problem: undefined };
91
+ if (typeof value === "object" && value !== null && "error" in value && typeof value.error === "string")
92
+ return { docs: undefined, problem: `Its component's docs failed: ${value.error}` };
93
+ return { docs: undefined, problem: undefined };
94
+ };
95
+ /**
96
+ * One story in detail.
97
+ *
98
+ * @param location - the story's place in the tree.
99
+ * @param parts - its module and its docs, as the dev server loaded them.
100
+ * @param pages - where the catalogue is served, for the links.
101
+ * @param view - the view the links open in; empty for the default view.
102
+ */
103
+ export const storyDocument = (location, parts, pages, view) => {
104
+ const component = agentComponent(location, pages, view);
105
+ const story = component.stories.find((each) => each.id === location.story.id) ??
106
+ agentStory(location.story, false, pages, view);
107
+ const problems = [];
108
+ let args = {};
109
+ if ("error" in parts.module)
110
+ problems.push(`Its story file failed to load: ${parts.module.error}`);
111
+ else {
112
+ const read = readStory(parts.module.value, location.story.exportName, parts.preview ?? NO_PREVIEW);
113
+ if (typeof read === "string")
114
+ problems.push(read);
115
+ else {
116
+ const json = jsonValue(read.args);
117
+ if (isRecord(json))
118
+ args = json;
119
+ }
120
+ }
121
+ const { docs, problem } = docsOf(parts.docs);
122
+ if (problem !== undefined)
123
+ problems.push(problem);
124
+ return {
125
+ schema: 1,
126
+ story,
127
+ component: { id: component.id, title: component.title, source: component.source, file: component.file },
128
+ docs,
129
+ args,
130
+ problems
131
+ };
132
+ };
133
+ /**
134
+ * The stories document cut to the components a filter keeps; its sources and problems kept whole.
135
+ *
136
+ * @param document - the stories document.
137
+ * @param filter - the source and the text to keep.
138
+ */
139
+ export const filteredStories = (document, filter) => {
140
+ const text = filter.component?.toLowerCase();
141
+ return {
142
+ ...document,
143
+ components: document.components.filter((component) => (filter.source === undefined || component.source === filter.source) &&
144
+ (text === undefined || component.title.toLowerCase().includes(text)))
145
+ };
146
+ };
147
+ /**
148
+ * Whether a value is the stories document, as a client receives it over HTTP.
149
+ *
150
+ * @param value - the answer's body.
151
+ */
152
+ export const isStoriesDocument = (value) => isRecord(value) &&
153
+ value["schema"] === 1 &&
154
+ Array.isArray(value["components"]) &&
155
+ Array.isArray(value["problems"]);
156
+ /**
157
+ * Whether a value is the story document, as a client receives it over HTTP.
158
+ *
159
+ * @param value - the answer's body.
160
+ */
161
+ export const isStoryDocument = (value) => isRecord(value) && value["schema"] === 1 && isRecord(value["story"]) && Array.isArray(value["problems"]);
162
+ //# sourceMappingURL=agentApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentApi.js","sourceRoot":"","sources":["../../../src/vite/agentApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * The dev server's answers to tools and agents, under `/__forgebook/api/`: `stories` (every story) and `story?id=…`
3
+ * (one in detail), each with an optional `view` (the view's query, `theme=dark&lang=it`) the links open in.
4
+ *
5
+ * @remarks
6
+ * The server loads the sources and the previews with the same imports the pages use (`AGENT_SOURCES_FILE`), so a tool
7
+ * sees what the shell shows. A story module that fails on Node (it reads `window` while it loads) gives its story a
8
+ * problem in the answer instead of an error. Served by the dev server only, where Vite listens (localhost by default);
9
+ * a build has none of it.
10
+ *
11
+ * @module
12
+ */
13
+ import type { IncomingMessage, ServerResponse } from "node:http";
14
+ import type { ViteDevServer } from "vite";
15
+ import type { ResolvedConfig } from "./configFile.ts";
16
+ /** The path the answers live under. */
17
+ export declare const AGENT_API = "/__forgebook/api/";
18
+ /** An answer: its HTTP status and its JSON body. */
19
+ export type AgentAnswer = {
20
+ /** 200, 404 for a story or a path that does not exist, 500 when the sources fail to load. */
21
+ readonly status: number;
22
+ /** The document, or `{ error }`. */
23
+ readonly body: unknown;
24
+ };
25
+ /** The header that names the catalogue's folder, so a client knows the server it found serves its catalogue. */
26
+ export declare const ROOT_HEADER = "forgebook-root";
27
+ /**
28
+ * Answers one of the API's paths.
29
+ *
30
+ * @param load - loads a module on the server (the dev server's `ssrLoadModule`).
31
+ * @param config - the catalogue's configuration.
32
+ * @param route - the path under `AGENT_API` (`stories`, `story`).
33
+ * @param params - the query: `id` for a story, `view` for the links.
34
+ * @param origin - where the catalogue is served (`http://localhost:5173`), for the links.
35
+ */
36
+ export declare const agentAnswer: (load: (id: string) => Promise<unknown>, config: ResolvedConfig, route: string, params: URLSearchParams, origin: string) => Promise<AgentAnswer>;
37
+ /**
38
+ * The middleware that answers under `AGENT_API`, for a catalogue's dev server.
39
+ *
40
+ * @param server - the dev server, which loads the modules.
41
+ * @param config - the catalogue's configuration.
42
+ * @returns a Connect middleware: it answers its own paths and passes every other request on.
43
+ */
44
+ export declare const agentMiddleware: (server: ViteDevServer, config: ResolvedConfig) => (request: IncomingMessage, response: ServerResponse, next: (error?: unknown) => void) => void;
45
+ //# sourceMappingURL=agentRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentRoutes.d.ts","sourceRoot":"","sources":["../../../src/vite/agentRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAM1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,uCAAuC;AACvC,eAAO,MAAM,SAAS,sBAAsB,CAAC;AAuC7C,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG;IACxB,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,gHAAgH;AAChH,eAAO,MAAM,WAAW,mBAAmB,CAAC;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EACtC,QAAQ,cAAc,EACtB,OAAO,MAAM,EACb,QAAQ,eAAe,EACvB,QAAQ,MAAM,KACb,OAAO,CAAC,WAAW,CAwBrB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GACzB,QAAQ,aAAa,EAAE,QAAQ,cAAc,MAC7C,SAAS,eAAe,EAAE,UAAU,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,KAAG,IAetF,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { join } from "node:path";
2
+ import { mergedPreviews, readPreview } from "../frame/storyModule.js";
3
+ import { sourceFiles } from "../sourceFiles.js";
4
+ import { findStory, storyTree } from "../storyTree.js";
5
+ import { storiesDocument, storyDocument } from "./agentApi.js";
6
+ import { AGENT_SOURCES_FILE } from "./pages.js";
7
+ /** The path the answers live under. */
8
+ export const AGENT_API = "/__forgebook/api/";
9
+ /** Whether a value is a plain object. */
10
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
11
+ /** Whether a value is a source, as far as the answers read one: its id, name and story files. */
12
+ const isStorySource = (value) => isRecord(value) &&
13
+ typeof value["id"] === "string" &&
14
+ typeof value["name"] === "string" &&
15
+ Array.isArray(value["files"]);
16
+ /** The agent module read, or why it is not what the plugin generates. */
17
+ const agentModuleOf = (module) => {
18
+ if (!isRecord(module) || !Array.isArray(module["sources"]) || !Array.isArray(module["previews"]))
19
+ throw new Error("The catalogue's sources did not load");
20
+ const sources = module["sources"].filter(isStorySource);
21
+ return { sources, preview: mergedPreviews(module["previews"].map(readPreview)) };
22
+ };
23
+ /** A loader's value, or why it failed. */
24
+ const settled = async (load) => {
25
+ if (load === undefined)
26
+ return { value: { name: null } };
27
+ try {
28
+ return { value: await load() };
29
+ }
30
+ catch (error) {
31
+ return { error: error instanceof Error ? error.message : String(error) };
32
+ }
33
+ };
34
+ /** The header that names the catalogue's folder, so a client knows the server it found serves its catalogue. */
35
+ export const ROOT_HEADER = "forgebook-root";
36
+ /**
37
+ * Answers one of the API's paths.
38
+ *
39
+ * @param load - loads a module on the server (the dev server's `ssrLoadModule`).
40
+ * @param config - the catalogue's configuration.
41
+ * @param route - the path under `AGENT_API` (`stories`, `story`).
42
+ * @param params - the query: `id` for a story, `view` for the links.
43
+ * @param origin - where the catalogue is served (`http://localhost:5173`), for the links.
44
+ */
45
+ export const agentAnswer = async (load, config, route, params, origin) => {
46
+ const view = params.get("view") ?? "";
47
+ const pages = { page: `${origin}/`, frame: `${origin}/frame.html` };
48
+ try {
49
+ const loaded = agentModuleOf(await load(join(config.dir, AGENT_SOURCES_FILE)));
50
+ const tree = storyTree(loaded.sources);
51
+ if (route === "stories")
52
+ return { status: 200, body: storiesDocument(config.title, tree, pages, view) };
53
+ if (route !== "story")
54
+ return { status: 404, body: { error: `No answer at ${AGENT_API}${route}` } };
55
+ const id = params.get("id") ?? "";
56
+ const location = findStory(tree, id);
57
+ const source = loaded.sources.find((each) => each.id === location?.source.id);
58
+ if (location === undefined || source === undefined)
59
+ return { status: 404, body: { error: `No story "${id}"` } };
60
+ const files = sourceFiles(source);
61
+ const file = location.component.file;
62
+ const parts = {
63
+ module: await settled(files.stories[file]),
64
+ docs: await settled(files.docs[file]),
65
+ preview: loaded.preview
66
+ };
67
+ return { status: 200, body: storyDocument(location, parts, pages, view) };
68
+ }
69
+ catch (error) {
70
+ return { status: 500, body: { error: error instanceof Error ? error.message : String(error) } };
71
+ }
72
+ };
73
+ /**
74
+ * The middleware that answers under `AGENT_API`, for a catalogue's dev server.
75
+ *
76
+ * @param server - the dev server, which loads the modules.
77
+ * @param config - the catalogue's configuration.
78
+ * @returns a Connect middleware: it answers its own paths and passes every other request on.
79
+ */
80
+ export const agentMiddleware = (server, config) => (request, response, next) => {
81
+ const url = new URL(request.url ?? "/", `http://${request.headers.host ?? "localhost"}`);
82
+ if (!url.pathname.startsWith(AGENT_API)) {
83
+ next();
84
+ return;
85
+ }
86
+ const route = url.pathname.slice(AGENT_API.length);
87
+ void agentAnswer((id) => server.ssrLoadModule(id), config, route, url.searchParams, url.origin).then(({ status, body }) => {
88
+ response.statusCode = status;
89
+ response.setHeader("Content-Type", "application/json");
90
+ response.setHeader(ROOT_HEADER, config.dir);
91
+ response.end(`${JSON.stringify(body)}\n`);
92
+ });
93
+ };
94
+ //# sourceMappingURL=agentRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentRoutes.js","sourceRoot":"","sources":["../../../src/vite/agentRoutes.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * @remarks
6
6
  * The repo type-checks with TypeScript 7, whose native compiler has no JavaScript API; TypeScript 6 (the version
7
- * typescript-eslint uses too) reads the same configurations (D-58).
7
+ * typescript-eslint uses too) reads the same configurations.
8
8
  *
9
9
  * @module
10
10
  */
@@ -7,7 +7,7 @@
7
7
  * `:active`, `:focus`, `:focus-visible` and `:focus-within`, at every depth (inside `:is()`, `:not()`, `:has()`). The
8
8
  * real state still works, the specificity stays the same (an attribute weighs what a pseudo-class does), and the
9
9
  * library's CSS carries nothing for the catalogue: the rewrite runs only in the catalogue's build, as a Lightning CSS
10
- * visitor (D-60). A story forces a state with `parameters.forceState` (on its root) or `data-forgebook-force` on a
10
+ * visitor. A story forces a state with `parameters.forceState` (on its root) or `data-forgebook-force` on a
11
11
  * part.
12
12
  *
13
13
  * @module
@@ -7,7 +7,7 @@
7
7
  * `:active`, `:focus`, `:focus-visible` and `:focus-within`, at every depth (inside `:is()`, `:not()`, `:has()`). The
8
8
  * real state still works, the specificity stays the same (an attribute weighs what a pseudo-class does), and the
9
9
  * library's CSS carries nothing for the catalogue: the rewrite runs only in the catalogue's build, as a Lightning CSS
10
- * visitor (D-60). A story forces a state with `parameters.forceState` (on its root) or `data-forgebook-force` on a
10
+ * visitor. A story forces a state with `parameters.forceState` (on its root) or `data-forgebook-force` on a
11
11
  * part.
12
12
  *
13
13
  * @module
@@ -1 +1 @@
1
- {"version":3,"file":"forgebookPlugin.d.ts","sourceRoot":"","sources":["../../../src/vite/forgebookPlugin.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,MAAM,EAA6B,MAAM,MAAM,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAmD,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAwEvG,4BAA4B;AAC5B,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC,8GAA8G;IAC9G,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AA+KF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,UAAS,sBAA2B,KAAG,MAqJtE,CAAC"}
1
+ {"version":3,"file":"forgebookPlugin.d.ts","sourceRoot":"","sources":["../../../src/vite/forgebookPlugin.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,MAAM,EAA6B,MAAM,MAAM,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIrD,OAAO,EAAmD,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA0EvG,4BAA4B;AAC5B,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC,8GAA8G;IAC9G,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAiLF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,UAAS,sBAA2B,KAAG,MAyJtE,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * @remarks
6
6
  * A source names its story files with `import files from "<pattern>?forgebook-files"`: the plugin answers each with
7
7
  * one module (`storyFilesModule.ts`) holding every matched file's index, read from its source with Vite's parser, and
8
- * the loaders of its module, of its component's docs and of its code (D-438). Those loaders ask for
8
+ * the loaders of its module, of its component's docs and of its code. Those loaders ask for
9
9
  * `?forgebook-docs`, answered with the component's props as the framework reads them (`adapter.ts`, in a worker) or
10
10
  * `{ error }` for the panel, `?forgebook-code`, answered with each story's `render` as written (`storyCode.ts`),
11
11
  * `?forgebook-page`, answered with the component's documentation file as HTML (`componentPage.ts`), and
@@ -22,6 +22,7 @@
22
22
  import { existsSync, readFileSync } from "node:fs";
23
23
  import { dirname, join, resolve } from "node:path";
24
24
  import ts from "typescript-6";
25
+ import { agentMiddleware } from "./agentRoutes.js";
25
26
  import { STORY_FILE } from "./autoTitle.js";
26
27
  import { componentPage, markdownHtml } from "./componentPage.js";
27
28
  import { findConfigFile, loadConfigFile, packageResolver } from "./configFile.js";
@@ -29,7 +30,7 @@ import { createDocsExtractor } from "./docsExtractor.js";
29
30
  import { moduleSummaryOf } from "./docsProgram.js";
30
31
  import { FORCED_STATES_VISITOR } from "./forcedStates.js";
31
32
  import { highlightCode } from "./highlightCode.js";
32
- import { CONFIG_MODULE, configModule, frameEntry, PAGE_ENTRIES, PAGE_FILES, pageHtml, STORIES_SOURCE_FILE, shellEntry, storiesSourceModule } from "./pages.js";
33
+ import { AGENT_SOURCES_FILE, agentSourcesModule, CONFIG_MODULE, configModule, frameEntry, PAGE_ENTRIES, PAGE_FILES, pageHtml, STORIES_SOURCE_FILE, shellEntry, storiesSourceModule } from "./pages.js";
33
34
  import { prebundled, scannedEntries } from "./prebundled.js";
34
35
  import { storyCode } from "./storyCode.js";
35
36
  import { storyFilesModule } from "./storyFilesModule.js";
@@ -211,6 +212,8 @@ const generatedModule = (id, config) => {
211
212
  return { code: frameEntry(config), moduleType: "js" };
212
213
  if (id === join(config.dir, STORIES_SOURCE_FILE))
213
214
  return { code: storiesSourceModule(config), moduleType: "js" };
215
+ if (id === join(config.dir, AGENT_SOURCES_FILE))
216
+ return { code: agentSourcesModule(config), moduleType: "js" };
214
217
  const page = PAGE_FILES.find((candidate) => id === join(config.dir, candidate));
215
218
  return page !== undefined && !existsSync(id) ? pageHtml(page, config) : undefined;
216
219
  };
@@ -239,6 +242,7 @@ export const forgebookPlugin = (options = {}) => {
239
242
  const pagePath = (page) => config === undefined ? undefined : join(config.dir, page);
240
243
  const entryPath = (page) => config === undefined ? undefined : join(config.dir, PAGE_ENTRIES[page]);
241
244
  const storiesSource = () => config === undefined ? undefined : join(config.dir, STORIES_SOURCE_FILE);
245
+ const agentSources = () => config === undefined ? undefined : join(config.dir, AGENT_SOURCES_FILE);
242
246
  /**
243
247
  * A module a story file's query asks for (`?forgebook-docs`, `-code`, `-page`, `-markdown`), when the id is one.
244
248
  *
@@ -297,7 +301,7 @@ export const forgebookPlugin = (options = {}) => {
297
301
  const entry = PAGE_FILES.find((page) => source === `/${PAGE_ENTRIES[page]}` || source === entryPath(page));
298
302
  if (entry !== undefined)
299
303
  return entryPath(entry) ?? null;
300
- if (source === storiesSource())
304
+ if (source === storiesSource() || source === agentSources())
301
305
  return source;
302
306
  const page = PAGE_FILES.find((candidate) => source === pagePath(candidate) || source === `/${candidate}`);
303
307
  if (page !== undefined)
@@ -313,6 +317,9 @@ export const forgebookPlugin = (options = {}) => {
313
317
  if (SOURCE_FILE.test(file))
314
318
  docs?.changed();
315
319
  });
320
+ // the answers to tools and agents (`forgebook stories`, `forgebook mcp`), from the same sources as the pages
321
+ if (config !== undefined)
322
+ server.middlewares.use(agentMiddleware(server, config));
316
323
  // the catalogue's pages, made here: no HTML file is written
317
324
  server.middlewares.use((request, response, next) => {
318
325
  const page = requestedPage(request.url ?? "/");
@@ -1 +1 @@
1
- {"version":3,"file":"forgebookPlugin.js","sourceRoot":"","sources":["../../../src/vite/forgebookPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forgebookPlugin.js","sourceRoot":"","sources":["../../../src/vite/forgebookPlugin.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * @remarks
6
6
  * The TypeScript family (TypeScript, TSX, JavaScript, JSX) is split by the TypeScript compiler
7
7
  * (`typeScriptPieces.ts`): highlight.js reads JSX as HTML and loses the rest of the example at the first function or
8
- * `>` in an attribute (D-690). highlight.js keeps the other languages a component's documentation writes (CSS, SCSS,
8
+ * `>` in an attribute. highlight.js keeps the other languages a component's documentation writes (CSS, SCSS,
9
9
  * JSON, bash, HTML), on its own instance, so nothing else that uses highlight.js in the same process sees these
10
10
  * settings. Both write the same classes, with the catalogue's prefix (`forgebook-hl-keyword`), coloured by the
11
11
  * shell's style sheet with its code palette. A language neither knows is escaped and left plain.
@@ -0,0 +1,73 @@
1
+ /**
2
+ * The part of the Model Context Protocol a stdio server with a few tools needs, written here instead of taking the
3
+ * protocol's SDK: one JSON-RPC message in, its answer out. Pure apart from the tools it calls.
4
+ *
5
+ * @remarks
6
+ * Two eras of the protocol are served, as the specification's backward-compatibility rules describe: the current
7
+ * stateless one (`2026-07-28`: each request carries its version in `params._meta`, `server/discover` answers what the
8
+ * server offers) and the handshake one most clients still speak (`2025-11-25` and before: `initialize`, then
9
+ * requests). An `initialize` puts the session in the handshake era; a request carrying the version in `_meta` is
10
+ * answered statelessly. The tools never change while the server runs, so their list is cacheable and public.
11
+ *
12
+ * @module
13
+ */
14
+ /** The protocol's current version, stateless. */
15
+ export declare const MODERN_VERSION = "2026-07-28";
16
+ /** The handshake versions answered: the latest first, which a client asking for another is offered. */
17
+ export declare const HANDSHAKE_VERSIONS: readonly ["2025-11-25", "2025-06-18", "2025-03-26"];
18
+ /** Every version served, for `server/discover` and for the error a client with another one gets. */
19
+ export declare const SUPPORTED_VERSIONS: readonly string[];
20
+ /** What a tool gives back: its answer as data, and whether it is a failure the agent should read. */
21
+ export type McpToolResult = {
22
+ /** The answer, as JSON; also sent as text, as the protocol asks. */
23
+ readonly structured: unknown;
24
+ /** Whether the call failed (a story that does not exist): the agent reads why in the answer. */
25
+ readonly isError: boolean;
26
+ };
27
+ /** A tool the server offers. */
28
+ export type McpTool = {
29
+ /** Its name (`list_stories`). */
30
+ readonly name: string;
31
+ /** What it does, for the agent choosing it. */
32
+ readonly description: string;
33
+ /** The JSON Schema of its arguments. */
34
+ readonly inputSchema: Readonly<Record<string, unknown>>;
35
+ /** Runs it with the arguments the client sent. */
36
+ readonly call: (args: Readonly<Record<string, unknown>>) => Promise<McpToolResult>;
37
+ };
38
+ /** Who the server is, and what it tells an agent about itself. */
39
+ export type McpServer = {
40
+ /** Its name and version, as the protocol's `serverInfo`. */
41
+ readonly info: {
42
+ readonly name: string;
43
+ readonly version: string;
44
+ };
45
+ /** What the server is for, for the agent; none when it needs no words. */
46
+ readonly instructions: string | undefined;
47
+ /** Its tools. */
48
+ readonly tools: readonly McpTool[];
49
+ };
50
+ /** What a session remembers between messages: whether the client opened it with the handshake. */
51
+ export type McpSession = {
52
+ /** The handshake version agreed on `initialize`; none in the stateless era or before any request. */
53
+ readonly handshakeVersion: string | undefined;
54
+ };
55
+ /** A new session: no handshake yet. */
56
+ export declare const NEW_SESSION: McpSession;
57
+ /** What one message gives: the answer to write, if any, and the session after it. */
58
+ export type McpStep = {
59
+ /** The answer, as one line of JSON; none for a notification. */
60
+ readonly reply: string | undefined;
61
+ /** The session after the message. */
62
+ readonly session: McpSession;
63
+ };
64
+ /**
65
+ * Answers one message the client sent: a line of JSON-RPC.
66
+ *
67
+ * @param line - the message, one line of JSON.
68
+ * @param session - what the session remembers.
69
+ * @param server - who the server is and its tools.
70
+ * @returns the answer to write (none for a notification) and the session after the message.
71
+ */
72
+ export declare const answerMcpMessage: (line: string, session: McpSession, server: McpServer) => Promise<McpStep>;
73
+ //# sourceMappingURL=mcpProtocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpProtocol.d.ts","sourceRoot":"","sources":["../../../src/vite/mcpProtocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,iDAAiD;AACjD,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,qDAAsD,CAAC;AAEtF,oGAAoG;AACpG,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAA4C,CAAC;AAqB7F,qGAAqG;AACrG,MAAM,MAAM,aAAa,GAAG;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,gGAAgG;IAChG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,OAAO,GAAG;IACpB,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,wCAAwC;IACxC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CACpF,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,SAAS,GAAG;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;CACpC,CAAC;AAEF,kGAAkG;AAClG,MAAM,MAAM,UAAU,GAAG;IACvB,qGAAqG;IACrG,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,uCAAuC;AACvC,eAAO,MAAM,WAAW,EAAE,UAA4C,CAAC;AAQvE,qFAAqF;AACrF,MAAM,MAAM,OAAO,GAAG;IACpB,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B,CAAC;AA2JF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,SAAS,UAAU,EACnB,QAAQ,SAAS,KAChB,OAAO,CAAC,OAAO,CAmBjB,CAAC"}