driverge-mcp 0.0.0 → 0.0.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 +275 -29
- package/dist/codegen/esp32.d.ts +11 -3
- package/dist/codegen/esp32.js +221 -10
- package/dist/codegen/esp32.js.map +1 -1
- package/dist/codegen/ident.d.ts +24 -2
- package/dist/codegen/ident.js +37 -4
- package/dist/codegen/ident.js.map +1 -1
- package/dist/codegen/index.d.ts +12 -7
- package/dist/codegen/index.js +17 -14
- package/dist/codegen/index.js.map +1 -1
- package/dist/codegen/lint.js +28 -8
- package/dist/codegen/lint.js.map +1 -1
- package/dist/codegen/portable-cpp.d.ts +8 -0
- package/dist/codegen/portable-cpp.js +281 -0
- package/dist/codegen/portable-cpp.js.map +1 -0
- package/dist/codegen/portable.d.ts +99 -3
- package/dist/codegen/portable.js +419 -99
- package/dist/codegen/portable.js.map +1 -1
- package/dist/codegen/stm32.d.ts +11 -3
- package/dist/codegen/stm32.js +156 -11
- package/dist/codegen/stm32.js.map +1 -1
- package/dist/codegen/types.d.ts +32 -0
- package/dist/codegen/types.js +27 -0
- package/dist/codegen/types.js.map +1 -1
- package/dist/mcp/cache.d.ts +15 -2
- package/dist/mcp/cache.js +32 -4
- package/dist/mcp/cache.js.map +1 -1
- package/dist/mcp/register.d.ts +17 -0
- package/dist/mcp/register.js +149 -21
- package/dist/mcp/register.js.map +1 -1
- package/dist/mcp/summary.js +8 -0
- package/dist/mcp/summary.js.map +1 -1
- package/dist/pdf/address.d.ts +4 -0
- package/dist/pdf/address.js +28 -0
- package/dist/pdf/address.js.map +1 -0
- package/dist/pdf/command.js +87 -14
- package/dist/pdf/command.js.map +1 -1
- package/dist/pdf/extract.js +23 -2
- package/dist/pdf/extract.js.map +1 -1
- package/dist/pdf/generic-register-table.d.ts +5 -0
- package/dist/pdf/generic-register-table.js +125 -0
- package/dist/pdf/generic-register-table.js.map +1 -0
- package/dist/pdf/index.d.ts +2 -0
- package/dist/pdf/index.js +2 -0
- package/dist/pdf/index.js.map +1 -1
- package/dist/pdf/interface-kind.d.ts +11 -0
- package/dist/pdf/interface-kind.js +18 -0
- package/dist/pdf/interface-kind.js.map +1 -1
- package/dist/pdf/manufacturer.js +39 -0
- package/dist/pdf/manufacturer.js.map +1 -1
- package/dist/pdf/maxim-register-map.d.ts +11 -0
- package/dist/pdf/maxim-register-map.js +544 -0
- package/dist/pdf/maxim-register-map.js.map +1 -0
- package/dist/pdf/part.js +8 -0
- package/dist/pdf/part.js.map +1 -1
- package/dist/pdf/prose-commands.d.ts +4 -0
- package/dist/pdf/prose-commands.js +90 -0
- package/dist/pdf/prose-commands.js.map +1 -0
- package/dist/pdf/st-bit-layout.d.ts +3 -0
- package/dist/pdf/st-bit-layout.js +238 -0
- package/dist/pdf/st-bit-layout.js.map +1 -0
- package/dist/pdf/ti-field-descriptions.d.ts +10 -0
- package/dist/pdf/ti-field-descriptions.js +87 -0
- package/dist/pdf/ti-field-descriptions.js.map +1 -0
- package/dist/pdf/ti-register-map.d.ts +5 -0
- package/dist/pdf/ti-register-map.js +84 -0
- package/dist/pdf/ti-register-map.js.map +1 -0
- package/dist/pdf/types.d.ts +15 -3
- package/dist/pdf/types.js +4 -1
- package/dist/pdf/types.js.map +1 -1
- package/dist/schema/assemble.d.ts +35 -3
- package/dist/schema/assemble.js +86 -13
- package/dist/schema/assemble.js.map +1 -1
- package/dist/schema/types.d.ts +21 -1
- package/dist/schema/validate.js +37 -10
- package/dist/schema/validate.js.map +1 -1
- package/dist/server.d.ts +18 -0
- package/dist/server.js +49 -3
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/schemas/datasheet.schema.json +17 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/codegen/portable.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/codegen/portable.ts"],"names":[],"mappings":"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"}
|
package/dist/codegen/stm32.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import type { DatasheetJson } from "../schema/types.js";
|
|
2
|
-
import type { DriverArtifact } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
|
|
2
|
+
import type { CodegenLanguage, DriverArtifact } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Portable core + a CubeHAL seam implementation for the same part. With
|
|
5
|
+
* language "c" (default) the seam is `<slug>_hal_stm32.c`, unchanged from
|
|
6
|
+
* before. With language "cpp" the seam becomes `<slug>_hal_stm32.cpp` and its
|
|
7
|
+
* core include is `#include "<slug>.hpp"` (see coreInclude/seamPath above) —
|
|
8
|
+
* everything else in the seam content is identical either way.
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateStm32Driver(json: DatasheetJson, opts?: {
|
|
11
|
+
language?: CodegenLanguage;
|
|
12
|
+
}): DriverArtifact;
|
package/dist/codegen/stm32.js
CHANGED
|
@@ -1,11 +1,38 @@
|
|
|
1
1
|
// STM32 (CubeHAL) target. Like ESP32, a native target pre-fills the thin-HAL
|
|
2
2
|
// seam rather than replacing it: the driver is the unchanged portable core plus a
|
|
3
|
-
// <part>_hal_stm32.c that implements
|
|
4
|
-
// (HAL_I2C_Mem_Read/Write,
|
|
5
|
-
//
|
|
3
|
+
// <part>_hal_stm32.c that implements the bus's thin-HAL seam + hal_delay_ms with
|
|
4
|
+
// STM32 CubeHAL (HAL_I2C_Mem_Read/Write, HAL_SPI_Transmit/Receive + a CS GPIO, or
|
|
5
|
+
// HAL_UART_Transmit/Receive, plus HAL_Delay). The user binds their peripheral
|
|
6
|
+
// handle(s) once via <part>_stm32_bind(); the board/clock bring-up stays in
|
|
7
|
+
// their CubeMX project.
|
|
8
|
+
//
|
|
9
|
+
// I2C/SPI/UART only: the I2C seam hard-codes CubeHAL's HAL_I2C_Mem_* calls and
|
|
10
|
+
// references `${PREFIX}_I2C_ADDR`; the SPI seam needs the portable core's
|
|
11
|
+
// hal_spi_transfer declaration; the UART seam (Session B) wraps
|
|
12
|
+
// HAL_UART_Transmit/Receive around hal_uart_write/hal_uart_read. Any other bus
|
|
13
|
+
// (unknown) has no CubeHAL seam here, so this target refuses
|
|
14
|
+
// (UnsupportedBusError) rather than emit an uncompilable seam.
|
|
6
15
|
import { prefixOf, slug } from "./ident.js";
|
|
16
|
+
import { generatePortableCppDriver } from "./portable-cpp.js";
|
|
7
17
|
import { generatePortableDriver } from "./portable.js";
|
|
8
|
-
|
|
18
|
+
import { UnsupportedBusError } from "./types.js";
|
|
19
|
+
// Contract amendment (post-GREEN 4b3da14/d576ba6): a language:"cpp" seam
|
|
20
|
+
// cannot stay byte-identical to the "c" seam, because that file
|
|
21
|
+
// #include's "<slug>.h" — which doesn't exist in a cpp bundle (only
|
|
22
|
+
// <slug>.hpp/.cpp). So with language "cpp" the seam file itself becomes
|
|
23
|
+
// `<slug>_hal_<target>.cpp` and its core include becomes `#include
|
|
24
|
+
// "<slug>.hpp"`; everything else in the seam is unchanged. This costs
|
|
25
|
+
// nothing: the .hpp declares the hal_* seam inside `extern "C"`, so compiling
|
|
26
|
+
// this seam as C++ still emits plain C-linkage definitions the class methods
|
|
27
|
+
// can call, and a C++-enabled CubeMX/CubeIDE project compiles .cpp sources
|
|
28
|
+
// natively.
|
|
29
|
+
function coreInclude(name, language) {
|
|
30
|
+
return `#include "${name}.${language === "cpp" ? "hpp" : "h"}"`;
|
|
31
|
+
}
|
|
32
|
+
function seamPath(name, language) {
|
|
33
|
+
return `${name}_hal_stm32.${language === "cpp" ? "cpp" : "c"}`;
|
|
34
|
+
}
|
|
35
|
+
function halImplI2c(name, prefix, language) {
|
|
9
36
|
const content = [
|
|
10
37
|
"/*",
|
|
11
38
|
` * ${prefix} — STM32 CubeHAL seam implementation (generated by Driverge).`,
|
|
@@ -16,7 +43,7 @@ function halImpl(name, prefix) {
|
|
|
16
43
|
` * (e.g. stm32f4xx_hal.h) instead. Call ${name}_stm32_bind(&hi2cX) once at`,
|
|
17
44
|
" * startup so the seam knows which I2C peripheral to use.",
|
|
18
45
|
" */",
|
|
19
|
-
|
|
46
|
+
coreInclude(name, language),
|
|
20
47
|
'#include "main.h"',
|
|
21
48
|
"",
|
|
22
49
|
`#ifndef ${prefix}_I2C_TIMEOUT_MS`,
|
|
@@ -46,18 +73,136 @@ function halImpl(name, prefix) {
|
|
|
46
73
|
"}",
|
|
47
74
|
"",
|
|
48
75
|
].join("\n");
|
|
49
|
-
return { path:
|
|
76
|
+
return { path: seamPath(name, language), content };
|
|
77
|
+
}
|
|
78
|
+
function halImplSpi(name, prefix, language) {
|
|
79
|
+
const content = [
|
|
80
|
+
"/*",
|
|
81
|
+
` * ${prefix} — STM32 CubeHAL SPI seam implementation (generated by Driverge).`,
|
|
82
|
+
" *",
|
|
83
|
+
" * Drop this beside the portable core; it fills the thin-HAL seam with STM32",
|
|
84
|
+
" * CubeHAL SPI + a GPIO chip-select. \"main.h\" is the CubeMX convention that",
|
|
85
|
+
" * pulls in your family's HAL, SPI_HandleTypeDef and GPIO_TypeDef — if you",
|
|
86
|
+
` * don't use CubeMX, include your family header (e.g. stm32f4xx_hal.h)`,
|
|
87
|
+
` * instead. Call ${name}_stm32_bind(&hspiX, CS_GPIO_Port, CS_Pin) once at`,
|
|
88
|
+
" * startup so the seam knows which SPI peripheral and CS pin to use.",
|
|
89
|
+
" */",
|
|
90
|
+
coreInclude(name, language),
|
|
91
|
+
'#include "main.h"',
|
|
92
|
+
"",
|
|
93
|
+
`#ifndef ${prefix}_SPI_TIMEOUT_MS`,
|
|
94
|
+
`#define ${prefix}_SPI_TIMEOUT_MS 1000`,
|
|
95
|
+
"#endif",
|
|
96
|
+
"",
|
|
97
|
+
`static SPI_HandleTypeDef *s_${name}_hspi;`,
|
|
98
|
+
`static GPIO_TypeDef *s_${name}_cs_port;`,
|
|
99
|
+
`static uint16_t s_${name}_cs_pin;`,
|
|
100
|
+
"",
|
|
101
|
+
"/* Point the seam at the CubeMX-generated SPI handle (e.g. &hspi1) and the CS",
|
|
102
|
+
" * GPIO pin (e.g. CS_GPIO_Port, CS_Pin). */",
|
|
103
|
+
`void ${name}_stm32_bind(SPI_HandleTypeDef *hspi, GPIO_TypeDef *cs_port, uint16_t cs_pin) {`,
|
|
104
|
+
` s_${name}_hspi = hspi;`,
|
|
105
|
+
` s_${name}_cs_port = cs_port;`,
|
|
106
|
+
` s_${name}_cs_pin = cs_pin;`,
|
|
107
|
+
"}",
|
|
108
|
+
"",
|
|
109
|
+
"void hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len) {",
|
|
110
|
+
` HAL_GPIO_WritePin(s_${name}_cs_port, s_${name}_cs_pin, GPIO_PIN_RESET);`,
|
|
111
|
+
" if (tx_len > 0) {",
|
|
112
|
+
` HAL_SPI_Transmit(s_${name}_hspi, (uint8_t *)tx, tx_len, ${prefix}_SPI_TIMEOUT_MS);`,
|
|
113
|
+
" }",
|
|
114
|
+
" if (rx_len > 0) {",
|
|
115
|
+
` HAL_SPI_Receive(s_${name}_hspi, rx, rx_len, ${prefix}_SPI_TIMEOUT_MS);`,
|
|
116
|
+
" }",
|
|
117
|
+
` HAL_GPIO_WritePin(s_${name}_cs_port, s_${name}_cs_pin, GPIO_PIN_SET);`,
|
|
118
|
+
"}",
|
|
119
|
+
"",
|
|
120
|
+
"void hal_delay_ms(uint32_t ms) {",
|
|
121
|
+
" HAL_Delay(ms);",
|
|
122
|
+
"}",
|
|
123
|
+
"",
|
|
124
|
+
].join("\n");
|
|
125
|
+
return { path: seamPath(name, language), content };
|
|
126
|
+
}
|
|
127
|
+
function halImplUart(name, prefix, language) {
|
|
128
|
+
const content = [
|
|
129
|
+
"/*",
|
|
130
|
+
` * ${prefix} — STM32 CubeHAL UART seam implementation (generated by Driverge).`,
|
|
131
|
+
" *",
|
|
132
|
+
" * Drop this beside the portable core; it fills the thin-HAL seam with STM32",
|
|
133
|
+
" * CubeHAL UART. \"main.h\" is the CubeMX convention that pulls in your family's",
|
|
134
|
+
" * HAL and UART_HandleTypeDef — if you don't use CubeMX, include your family",
|
|
135
|
+
` * header (e.g. stm32f4xx_hal.h) instead. Call ${name}_stm32_bind(&huartX) once`,
|
|
136
|
+
" * at startup so the seam knows which UART peripheral to use.",
|
|
137
|
+
" */",
|
|
138
|
+
coreInclude(name, language),
|
|
139
|
+
'#include "main.h"',
|
|
140
|
+
"",
|
|
141
|
+
`#ifndef ${prefix}_UART_TIMEOUT_MS`,
|
|
142
|
+
`#define ${prefix}_UART_TIMEOUT_MS 1000`,
|
|
143
|
+
"#endif",
|
|
144
|
+
"",
|
|
145
|
+
`static UART_HandleTypeDef *s_${name}_huart;`,
|
|
146
|
+
"",
|
|
147
|
+
"/* Point the seam at the CubeMX-generated UART handle (e.g. &huart1). */",
|
|
148
|
+
`void ${name}_stm32_bind(UART_HandleTypeDef *huart) {`,
|
|
149
|
+
` s_${name}_huart = huart;`,
|
|
150
|
+
"}",
|
|
151
|
+
"",
|
|
152
|
+
"void hal_uart_write(const uint8_t *data, uint16_t len) {",
|
|
153
|
+
` HAL_UART_Transmit(s_${name}_huart, (uint8_t *)data, len, ${prefix}_UART_TIMEOUT_MS);`,
|
|
154
|
+
"}",
|
|
155
|
+
"",
|
|
156
|
+
"uint16_t hal_uart_read(uint8_t *data, uint16_t len, uint32_t timeout_ms) {",
|
|
157
|
+
" HAL_StatusTypeDef status;",
|
|
158
|
+
` status = HAL_UART_Receive(s_${name}_huart, data, len, timeout_ms);`,
|
|
159
|
+
" if (status == HAL_OK) {",
|
|
160
|
+
" return len;",
|
|
161
|
+
" }",
|
|
162
|
+
" /* Timeout/error: CubeHAL stops short of `len` bytes and leaves the number",
|
|
163
|
+
" * of bytes it still expected in RxXferCount, so (len - RxXferCount) is",
|
|
164
|
+
" * the count actually received before the timeout fired. */",
|
|
165
|
+
` return (uint16_t)(len - s_${name}_huart->RxXferCount);`,
|
|
166
|
+
"}",
|
|
167
|
+
"",
|
|
168
|
+
"void hal_delay_ms(uint32_t ms) {",
|
|
169
|
+
" HAL_Delay(ms);",
|
|
170
|
+
"}",
|
|
171
|
+
"",
|
|
172
|
+
].join("\n");
|
|
173
|
+
return { path: seamPath(name, language), content };
|
|
50
174
|
}
|
|
51
|
-
/**
|
|
52
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Portable core + a CubeHAL seam implementation for the same part. With
|
|
177
|
+
* language "c" (default) the seam is `<slug>_hal_stm32.c`, unchanged from
|
|
178
|
+
* before. With language "cpp" the seam becomes `<slug>_hal_stm32.cpp` and its
|
|
179
|
+
* core include is `#include "<slug>.hpp"` (see coreInclude/seamPath above) —
|
|
180
|
+
* everything else in the seam content is identical either way.
|
|
181
|
+
*/
|
|
182
|
+
export function generateStm32Driver(json, opts = {}) {
|
|
183
|
+
const bus = json.protocol.bus;
|
|
184
|
+
if (bus !== "I2C" && bus !== "SPI" && bus !== "UART") {
|
|
185
|
+
throw new UnsupportedBusError("stm32", bus);
|
|
186
|
+
}
|
|
53
187
|
const name = slug(json.metadata.part);
|
|
54
188
|
const prefix = prefixOf(json.metadata.part);
|
|
55
|
-
const
|
|
189
|
+
const language = opts.language ?? "c";
|
|
190
|
+
const base = language === "cpp" ? generatePortableCppDriver(json) : generatePortableDriver(json);
|
|
191
|
+
const hal = bus === "SPI"
|
|
192
|
+
? halImplSpi(name, prefix, language)
|
|
193
|
+
: bus === "UART"
|
|
194
|
+
? halImplUart(name, prefix, language)
|
|
195
|
+
: halImplI2c(name, prefix, language);
|
|
196
|
+
const hal_setup_todo = bus === "SPI"
|
|
197
|
+
? `Configure the SPI peripheral and a CS GPIO output pin in CubeMX (mode/clock per the datasheet's SPI timing section), then call ${name}_stm32_bind(&hspiX, CS_GPIO_Port, CS_Pin) once at startup. Adjust ${prefix}_SPI_TIMEOUT_MS if needed.`
|
|
198
|
+
: bus === "UART"
|
|
199
|
+
? `Configure the USART/UART peripheral in CubeMX (pins, baud rate, parity, stop bits per the datasheet's serial interface section), then call ${name}_stm32_bind(&huartX) once at startup. Adjust ${prefix}_UART_TIMEOUT_MS if needed.`
|
|
200
|
+
: `Configure the I2C peripheral in CubeMX (pins, clock, 7-bit addressing), then call ${name}_stm32_bind(&hi2cX) once at startup. Adjust ${prefix}_I2C_TIMEOUT_MS if needed.`;
|
|
56
201
|
return {
|
|
57
|
-
files: [...base.files,
|
|
202
|
+
files: [...base.files, hal],
|
|
58
203
|
fill_in_brief: {
|
|
59
204
|
...base.fill_in_brief,
|
|
60
|
-
hal_setup_todo
|
|
205
|
+
hal_setup_todo,
|
|
61
206
|
},
|
|
62
207
|
};
|
|
63
208
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stm32.js","sourceRoot":"","sources":["../../src/codegen/stm32.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,kFAAkF;AAClF,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"stm32.js","sourceRoot":"","sources":["../../src/codegen/stm32.ts"],"names":[],"mappings":"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"}
|
package/dist/codegen/types.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
export type CodegenTarget = "portable" | "stm32" | "esp32" | "arduino";
|
|
2
2
|
export declare const CODEGEN_TARGETS: readonly CodegenTarget[];
|
|
3
|
+
/**
|
|
4
|
+
* Output language flavor (Session D). "c" (default) is today's thin-HAL C
|
|
5
|
+
* skeleton, byte-identical across every target/bus. "cpp" renders the SAME
|
|
6
|
+
* #define macro constants and the SAME extern "C" hal_* seam wrapped in a
|
|
7
|
+
* class (.hpp/.cpp instead of .h/.c) — see wiki: thin-hal-non-negotiable,
|
|
8
|
+
* platform-specific-codegen.
|
|
9
|
+
*/
|
|
10
|
+
export type CodegenLanguage = "c" | "cpp";
|
|
11
|
+
export declare const CODEGEN_LANGUAGES: readonly CodegenLanguage[];
|
|
3
12
|
export interface GeneratedFile {
|
|
4
13
|
path: string;
|
|
5
14
|
content: string;
|
|
@@ -13,8 +22,31 @@ export interface FillInBrief {
|
|
|
13
22
|
crc_todo?: string;
|
|
14
23
|
/** Present for native targets whose HAL seam needs board bring-up. */
|
|
15
24
|
hal_setup_todo?: string;
|
|
25
|
+
/** Present when extraction was deferred: the host AI must enumerate the register map. */
|
|
26
|
+
register_map_todo?: string;
|
|
27
|
+
/** Present when extraction was deferred: the host AI must enumerate the command set. */
|
|
28
|
+
command_set_todo?: string;
|
|
29
|
+
/** Present for UART parts: the host AI must implement the device's frame protocol over the seam. */
|
|
30
|
+
framing_todo?: string;
|
|
16
31
|
}
|
|
17
32
|
export interface DriverArtifact {
|
|
18
33
|
files: GeneratedFile[];
|
|
19
34
|
fill_in_brief: FillInBrief;
|
|
20
35
|
}
|
|
36
|
+
/** arduino lands in a later session; portable + esp32 + stm32 render today. */
|
|
37
|
+
export declare class UnsupportedTargetError extends Error {
|
|
38
|
+
readonly target: string;
|
|
39
|
+
constructor(target: string);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Thrown by a native target (esp32, stm32) when the datasheet's protocol bus
|
|
43
|
+
* isn't one its HAL seam implements. Native targets implement I2C and SPI seams;
|
|
44
|
+
* any other bus (UART, unknown) has no seam yet and would produce uncompilable
|
|
45
|
+
* output, so the generator refuses instead. The portable target has no such
|
|
46
|
+
* constraint and still works for every bus.
|
|
47
|
+
*/
|
|
48
|
+
export declare class UnsupportedBusError extends Error {
|
|
49
|
+
readonly target: string;
|
|
50
|
+
readonly bus: string;
|
|
51
|
+
constructor(target: string, bus: string);
|
|
52
|
+
}
|
package/dist/codegen/types.js
CHANGED
|
@@ -8,4 +8,31 @@ export const CODEGEN_TARGETS = [
|
|
|
8
8
|
"esp32",
|
|
9
9
|
"arduino",
|
|
10
10
|
];
|
|
11
|
+
export const CODEGEN_LANGUAGES = ["c", "cpp"];
|
|
12
|
+
/** arduino lands in a later session; portable + esp32 + stm32 render today. */
|
|
13
|
+
export class UnsupportedTargetError extends Error {
|
|
14
|
+
target;
|
|
15
|
+
constructor(target) {
|
|
16
|
+
super(`codegen target "${target}" is not available yet — supported targets: portable, esp32, stm32`);
|
|
17
|
+
this.target = target;
|
|
18
|
+
this.name = "UnsupportedTargetError";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Thrown by a native target (esp32, stm32) when the datasheet's protocol bus
|
|
23
|
+
* isn't one its HAL seam implements. Native targets implement I2C and SPI seams;
|
|
24
|
+
* any other bus (UART, unknown) has no seam yet and would produce uncompilable
|
|
25
|
+
* output, so the generator refuses instead. The portable target has no such
|
|
26
|
+
* constraint and still works for every bus.
|
|
27
|
+
*/
|
|
28
|
+
export class UnsupportedBusError extends Error {
|
|
29
|
+
target;
|
|
30
|
+
bus;
|
|
31
|
+
constructor(target, bus) {
|
|
32
|
+
super(`codegen target "${target}" does not support ${bus} parts yet — use the "portable" target for ${bus} parts`);
|
|
33
|
+
this.target = target;
|
|
34
|
+
this.bus = bus;
|
|
35
|
+
this.name = "UnsupportedBusError";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
11
38
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/codegen/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mFAAmF;AACnF,iFAAiF;AACjF,8DAA8D;AAI9D,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,UAAU;IACV,OAAO;IACP,OAAO;IACP,SAAS;CACV,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/codegen/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mFAAmF;AACnF,iFAAiF;AACjF,8DAA8D;AAI9D,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,UAAU;IACV,OAAO;IACP,OAAO;IACP,SAAS;CACV,CAAC;AAWF,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AA6B1E,+EAA+E;AAC/E,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACnB;IAA5B,YAA4B,MAAc;QACxC,KAAK,CACH,mBAAmB,MAAM,oEAAoE,CAC9F,CAAC;QAHwB,WAAM,GAAN,MAAM,CAAQ;QAIxC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAE1B;IACA;IAFlB,YACkB,MAAc,EACd,GAAW;QAE3B,KAAK,CACH,mBAAmB,MAAM,sBAAsB,GAAG,8CAA8C,GAAG,QAAQ,CAC5G,CAAC;QALc,WAAM,GAAN,MAAM,CAAQ;QACd,QAAG,GAAH,GAAG,CAAQ;QAK3B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
|
package/dist/mcp/cache.d.ts
CHANGED
|
@@ -4,8 +4,21 @@ export interface CacheEntry {
|
|
|
4
4
|
pdfPath: string;
|
|
5
5
|
json: DatasheetJson;
|
|
6
6
|
}
|
|
7
|
-
/**
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Bounded LRU cap — a long-lived server process must not grow this cache
|
|
9
|
+
* without bound under repeated analyze_datasheet calls (see wiki: hardening).
|
|
10
|
+
* Map iteration order is insertion order, so the "oldest" entry is always the
|
|
11
|
+
* first key; recency is refreshed by delete+re-set on both write and read.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MAX_CACHE_ENTRIES = 32;
|
|
14
|
+
/**
|
|
15
|
+
* Idempotent ref for a file: same path + mtime (+ `extra`) → same ref → cache
|
|
16
|
+
* hit. `extra` folds in anything else that changes assembly output for the
|
|
17
|
+
* same file — currently the analyze_datasheet manufacturer/interface-kind
|
|
18
|
+
* hints (Session 10 / Contract A) — so re-analyzing with different hints
|
|
19
|
+
* doesn't silently serve a stale cached entry from before the hint existed.
|
|
20
|
+
*/
|
|
21
|
+
export declare function computeRef(pdfPath: string, mtimeMs: number, extra?: string): string;
|
|
9
22
|
export declare function putDatasheet(entry: CacheEntry): void;
|
|
10
23
|
export declare function getDatasheet(ref: string): CacheEntry | undefined;
|
|
11
24
|
/** Test seam — reset cache between cases. */
|
package/dist/mcp/cache.js
CHANGED
|
@@ -4,18 +4,46 @@
|
|
|
4
4
|
// See wiki: parsed-json-handoff-via-handle.
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
6
6
|
const store = new Map();
|
|
7
|
-
/**
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Bounded LRU cap — a long-lived server process must not grow this cache
|
|
9
|
+
* without bound under repeated analyze_datasheet calls (see wiki: hardening).
|
|
10
|
+
* Map iteration order is insertion order, so the "oldest" entry is always the
|
|
11
|
+
* first key; recency is refreshed by delete+re-set on both write and read.
|
|
12
|
+
*/
|
|
13
|
+
export const MAX_CACHE_ENTRIES = 32;
|
|
14
|
+
/**
|
|
15
|
+
* Idempotent ref for a file: same path + mtime (+ `extra`) → same ref → cache
|
|
16
|
+
* hit. `extra` folds in anything else that changes assembly output for the
|
|
17
|
+
* same file — currently the analyze_datasheet manufacturer/interface-kind
|
|
18
|
+
* hints (Session 10 / Contract A) — so re-analyzing with different hints
|
|
19
|
+
* doesn't silently serve a stale cached entry from before the hint existed.
|
|
20
|
+
*/
|
|
21
|
+
export function computeRef(pdfPath, mtimeMs, extra) {
|
|
9
22
|
const hash = createHash("sha1")
|
|
10
|
-
.update(`${pdfPath}:${Math.round(mtimeMs)}`)
|
|
23
|
+
.update(`${pdfPath}:${Math.round(mtimeMs)}:${extra ?? ""}`)
|
|
11
24
|
.digest("hex");
|
|
12
25
|
return `ds_${hash.slice(0, 12)}`;
|
|
13
26
|
}
|
|
14
27
|
export function putDatasheet(entry) {
|
|
28
|
+
// Delete-then-set moves an already-present ref to the recent end too, so a
|
|
29
|
+
// re-analyze doesn't leave it stuck near the eviction edge.
|
|
30
|
+
store.delete(entry.ref);
|
|
15
31
|
store.set(entry.ref, entry);
|
|
32
|
+
while (store.size > MAX_CACHE_ENTRIES) {
|
|
33
|
+
const oldest = store.keys().next().value;
|
|
34
|
+
if (oldest === undefined)
|
|
35
|
+
break;
|
|
36
|
+
store.delete(oldest);
|
|
37
|
+
}
|
|
16
38
|
}
|
|
17
39
|
export function getDatasheet(ref) {
|
|
18
|
-
|
|
40
|
+
const entry = store.get(ref);
|
|
41
|
+
if (!entry)
|
|
42
|
+
return undefined;
|
|
43
|
+
// Refresh recency on read so a hot entry survives future evictions.
|
|
44
|
+
store.delete(ref);
|
|
45
|
+
store.set(ref, entry);
|
|
46
|
+
return entry;
|
|
19
47
|
}
|
|
20
48
|
/** Test seam — reset cache between cases. */
|
|
21
49
|
export function clearDatasheetCache() {
|
package/dist/mcp/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/mcp/cache.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,+EAA+E;AAC/E,8EAA8E;AAC9E,4CAA4C;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/mcp/cache.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,+EAA+E;AAC/E,8EAA8E;AAC9E,4CAA4C;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,OAAe,EAAE,KAAc;IACzE,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;SAC5B,MAAM,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;SAC1D,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,2EAA2E;IAC3E,4DAA4D;IAC5D,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACzC,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,oEAAoE;IACpE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,mBAAmB;IACjC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC"}
|
package/dist/mcp/register.d.ts
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/**
|
|
3
|
+
* Confines a single artifact file path (`DriverArtifact.files[].path`) under
|
|
4
|
+
* `rootDir`, returning the resolved absolute path when it is safely inside
|
|
5
|
+
* `rootDir`, or `undefined` when it escapes (an absolute path — POSIX or
|
|
6
|
+
* Windows-style — or a relative path that climbs out via `..`). Mirrors the
|
|
7
|
+
* out_dir escape check in the generate_driver handler below (resolve +
|
|
8
|
+
* relative + isAbsolute) so both containment checks agree on what "escapes"
|
|
9
|
+
* means. A nested-but-non-escaping relative path (e.g. "sub/dir/file.h") is
|
|
10
|
+
* accepted and resolves under rootDir.
|
|
11
|
+
*
|
|
12
|
+
* `filePath` is always Driverge's own deterministic codegen output today
|
|
13
|
+
* (safe), but the generate_driver handler has no other guard if that ever
|
|
14
|
+
* changes — a hostile/careless datasheet-derived slug, a future codegen bug,
|
|
15
|
+
* etc. — so this is the second containment check, applied to every file
|
|
16
|
+
* BEFORE any of them are written (B3).
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveArtifactPath(rootDir: string, filePath: string): string | undefined;
|
|
2
19
|
export declare function registerDrivergeTools(server: McpServer): void;
|
|
3
20
|
export declare function registerDrivergeResources(server: McpServer): void;
|
|
4
21
|
export declare function registerDrivergePrompts(server: McpServer): void;
|