driverge-mcp 0.0.1 → 0.1.0-beta.2

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.
@@ -7,7 +7,7 @@
7
7
  // reproducible: no timestamps, stable ordering. The host AI fills the brief and
8
8
  // re-validates via validate_driver.
9
9
  import { registerWidth } from "../pdf/types.js";
10
- import { HEX_ONLY, commentSafe, fieldMask, macro, maskHex, slug } from "./ident.js";
10
+ import { HEX_ONLY, commentSafe, fieldMask, hexOrUndefined, macro, maskHex, slug } from "./ident.js";
11
11
  // Exported: the "cpp" language flavor (see portable-cpp.ts) renders the SAME
12
12
  // #define macro / TODO blocks and thin-HAL seam declarations as this C
13
13
  // generator — reusing these pure helpers instead of re-deriving them is how the
@@ -90,28 +90,30 @@ export function commandSetTodoText(json, name, prefix) {
90
90
  export const BUS_SEAM = {
91
91
  I2C: {
92
92
  decl: [
93
- "void hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
94
- "void hal_i2c_read (uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
93
+ "/* Return 0 on success, non-zero on a bus error (e.g. NACK). */",
94
+ "int hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
95
+ "int hal_i2c_read (uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
95
96
  ],
96
97
  handleField: " uint8_t i2c_addr;",
97
- readBody: [" hal_i2c_read(dev->i2c_addr, reg, value, 1);"],
98
- writeBody: [" hal_i2c_write(dev->i2c_addr, reg, &value, 1);"],
98
+ readBody: [" return hal_i2c_read(dev->i2c_addr, reg, value, 1);"],
99
+ writeBody: [" return hal_i2c_write(dev->i2c_addr, reg, &value, 1);"],
99
100
  },
100
101
  SPI: {
101
102
  decl: [
102
103
  "/* One call = one CS-framed transaction: CS is asserted, tx_len bytes are",
103
104
  " * clocked out, then rx_len bytes are clocked in, then CS is deasserted.",
104
105
  " * tx/rx may be NULL when their respective length is 0. CS is handled",
105
- " * entirely inside hal_spi_transfer — callers never touch it. */",
106
- "void hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len);",
106
+ " * entirely inside hal_spi_transfer — callers never touch it. Returns 0 on",
107
+ " * success, non-zero on a bus error. */",
108
+ "int hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len);",
107
109
  ],
108
110
  handleField: " uint8_t _reserved; /* platform CS handled in hal_spi_transfer */",
109
- readBody: [" hal_spi_transfer(&reg, 1, value, 1);"],
111
+ readBody: [" return hal_spi_transfer(&reg, 1, value, 1);"],
110
112
  writeBody: [
111
113
  " uint8_t frame[2];",
112
114
  " frame[0] = reg;",
113
115
  " frame[1] = value;",
114
- " hal_spi_transfer(frame, 2, NULL, 0);",
116
+ " return hal_spi_transfer(frame, 2, NULL, 0);",
115
117
  ],
116
118
  },
117
119
  UART: {
@@ -213,7 +215,7 @@ function registerDriver(json, registers, name, prefix) {
213
215
  const uart = busKind === "UART";
214
216
  const can = busKind === "CAN";
215
217
  const seam = BUS_SEAM[busKind];
216
- const addr = json.protocol.addresses?.[0];
218
+ const addr = hexOrUndefined(json.protocol.addresses?.[0]);
217
219
  const guard = `${prefix}_H`;
218
220
  const type = `${name}_t`;
219
221
  const header = [
@@ -256,16 +258,19 @@ function registerDriver(json, registers, name, prefix) {
256
258
  if (bits.length > 0)
257
259
  header.push("", "/* Bit-field mask/shift accessors. */", ...bits);
258
260
  header.push("", "/* Thin-HAL seam — implement these for your platform (see thin-hal). */", ...seam.decl, "void hal_delay_ms (uint32_t ms);", "", "/* Driver handle. */", `typedef struct {`, seam.handleField, `} ${type};`, "", "/* Public API. */", `int ${name}_init(${type} *dev);`, `int ${name}_read_register(${type} *dev, uint8_t reg, uint8_t *value);`, `int ${name}_write_register(${type} *dev, uint8_t reg, uint8_t value);`, "", '#ifdef __cplusplus', "}", "#endif", `#endif /* ${guard} */`, "");
261
+ // The I2C/SPI seam bodies now END with `return hal_..._transfer/read/write(...)`,
262
+ // propagating the seam's status (0 = success) to the caller — a NACK/bus error
263
+ // is no longer swallowed (A7). So no trailing `return 0` is appended here.
259
264
  const readBody = uart
260
265
  ? uartFramingBody(["dev", "reg", "value"])
261
266
  : can
262
267
  ? canFramingBody(["dev", "reg", "value"])
263
- : [" if (dev == NULL || value == NULL) {", " return -1;", " }", ...seam.readBody, " return 0;"];
268
+ : [" if (dev == NULL || value == NULL) {", " return -1;", " }", ...seam.readBody];
264
269
  const writeBody = uart
265
270
  ? uartFramingBody(["dev", "reg", "value"])
266
271
  : can
267
272
  ? canFramingBody(["dev", "reg", "value"])
268
- : [" if (dev == NULL) {", " return -1;", " }", ...seam.writeBody, " return 0;"];
273
+ : [" if (dev == NULL) {", " return -1;", " }", ...seam.writeBody];
269
274
  const source = [
270
275
  `#include "${name}.h"`,
271
276
  "",
@@ -336,7 +341,7 @@ function commandDriver(json, commands, name, prefix) {
336
341
  const uart = json.protocol.bus === "UART";
337
342
  const can = json.protocol.bus === "CAN";
338
343
  const noAddrBus = uart || can; // neither UART nor CAN has a bus device address
339
- const addr = json.protocol.addresses?.[0];
344
+ const addr = hexOrUndefined(json.protocol.addresses?.[0]);
340
345
  const crc = commands.find((c) => c.crc)?.crc;
341
346
  const guard = `${prefix}_H`;
342
347
  const type = `${name}_t`;
@@ -389,17 +394,19 @@ function commandDriver(json, commands, name, prefix) {
389
394
  : line);
390
395
  }
391
396
  }
392
- if (crc) {
397
+ // A non-hex crc.poly/init (e.g. containing an embedded newline) must never
398
+ // reach a #define as a live value (define-injection fix) — only emit the
399
+ // block when BOTH are well-formed hex literals; skip it entirely otherwise
400
+ // (crc8Body/commandBrief still reference the macro NAMES, not the raw
401
+ // values, so no injected content survives as code either way).
402
+ if (crc && hexOrUndefined(crc.poly) && hexOrUndefined(crc.init)) {
393
403
  header.push("", `/* CRC-${crc.width} checksum parameters. */`, `#define ${prefix}_CRC_POLY ${crc.poly}`, `#define ${prefix}_CRC_INIT ${crc.init}`);
394
404
  }
395
405
  header.push("", "/* Thin-HAL seam — implement these for your platform (see thin-hal). */", ...(uart
396
406
  ? BUS_SEAM.UART.decl
397
407
  : can
398
408
  ? BUS_SEAM.CAN.decl
399
- : [
400
- "void hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
401
- "void hal_i2c_read (uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
402
- ]), "void hal_delay_ms (uint32_t ms);", "", "/* Driver handle. */", "typedef struct {", uart ? BUS_SEAM.UART.handleField : can ? BUS_SEAM.CAN.handleField : " uint8_t i2c_addr;", `} ${type};`, "", "/* Public API. */", `int ${name}_init(${type} *dev);`, `int ${name}_send_command(${type} *dev, uint16_t command);`, `int ${name}_read_data(${type} *dev, uint8_t *buffer, uint16_t len);`, ...(crc ? [`uint8_t ${name}_crc8(const uint8_t *data, uint16_t len);`] : []), "", '#ifdef __cplusplus', "}", "#endif", `#endif /* ${guard} */`, "");
409
+ : BUS_SEAM.I2C.decl), "void hal_delay_ms (uint32_t ms);", "", "/* Driver handle. */", "typedef struct {", uart ? BUS_SEAM.UART.handleField : can ? BUS_SEAM.CAN.handleField : " uint8_t i2c_addr;", `} ${type};`, "", "/* Public API. */", `int ${name}_init(${type} *dev);`, `int ${name}_send_command(${type} *dev, uint16_t command);`, `int ${name}_read_data(${type} *dev, uint8_t *buffer, uint16_t len);`, ...(crc ? [`uint8_t ${name}_crc8(const uint8_t *data, uint16_t len);`] : []), "", '#ifdef __cplusplus', "}", "#endif", `#endif /* ${guard} */`, "");
403
410
  const source = [
404
411
  `#include "${name}.h"`,
405
412
  "",
@@ -426,8 +433,7 @@ function commandDriver(json, commands, name, prefix) {
426
433
  " msb = (uint8_t)(command >> 8);",
427
434
  " lsb = (uint8_t)(command & 0xFF);",
428
435
  ...I2C_COMMAND_FRAME_NOTE,
429
- " hal_i2c_write(dev->i2c_addr, msb, &lsb, 1);",
430
- " return 0;",
436
+ " return hal_i2c_write(dev->i2c_addr, msb, &lsb, 1);",
431
437
  ]),
432
438
  "}",
433
439
  "",
@@ -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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"}
@@ -57,15 +57,17 @@ function halImplI2c(name, prefix, language) {
57
57
  ` s_${name}_hi2c = hi2c;`,
58
58
  "}",
59
59
  "",
60
- "void hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
60
+ "int hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
61
61
  " /* CubeHAL takes the 8-bit (left-shifted) device address. */",
62
- ` HAL_I2C_Mem_Write(s_${name}_hi2c, (uint16_t)(addr << 1), reg,`,
63
- ` I2C_MEMADD_SIZE_8BIT, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
62
+ ` HAL_StatusTypeDef status = HAL_I2C_Mem_Write(s_${name}_hi2c, (uint16_t)(addr << 1), reg,`,
63
+ ` I2C_MEMADD_SIZE_8BIT, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
64
+ " return (status == HAL_OK) ? 0 : -1;",
64
65
  "}",
65
66
  "",
66
- "void hal_i2c_read(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
67
- ` HAL_I2C_Mem_Read(s_${name}_hi2c, (uint16_t)(addr << 1), reg,`,
68
- ` I2C_MEMADD_SIZE_8BIT, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
67
+ "int hal_i2c_read(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
68
+ ` HAL_StatusTypeDef status = HAL_I2C_Mem_Read(s_${name}_hi2c, (uint16_t)(addr << 1), reg,`,
69
+ ` I2C_MEMADD_SIZE_8BIT, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
70
+ " return (status == HAL_OK) ? 0 : -1;",
69
71
  "}",
70
72
  "",
71
73
  "void hal_delay_ms(uint32_t ms) {",
@@ -106,15 +108,17 @@ function halImplSpi(name, prefix, language) {
106
108
  ` s_${name}_cs_pin = cs_pin;`,
107
109
  "}",
108
110
  "",
109
- "void hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len) {",
111
+ "int hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len) {",
112
+ " HAL_StatusTypeDef status = HAL_OK;",
110
113
  ` HAL_GPIO_WritePin(s_${name}_cs_port, s_${name}_cs_pin, GPIO_PIN_RESET);`,
111
114
  " if (tx_len > 0) {",
112
- ` HAL_SPI_Transmit(s_${name}_hspi, (uint8_t *)tx, tx_len, ${prefix}_SPI_TIMEOUT_MS);`,
115
+ ` status = HAL_SPI_Transmit(s_${name}_hspi, (uint8_t *)tx, tx_len, ${prefix}_SPI_TIMEOUT_MS);`,
113
116
  " }",
114
- " if (rx_len > 0) {",
115
- ` HAL_SPI_Receive(s_${name}_hspi, rx, rx_len, ${prefix}_SPI_TIMEOUT_MS);`,
117
+ " if (status == HAL_OK && rx_len > 0) {",
118
+ ` status = HAL_SPI_Receive(s_${name}_hspi, rx, rx_len, ${prefix}_SPI_TIMEOUT_MS);`,
116
119
  " }",
117
120
  ` HAL_GPIO_WritePin(s_${name}_cs_port, s_${name}_cs_pin, GPIO_PIN_SET);`,
121
+ " return (status == HAL_OK) ? 0 : -1;",
118
122
  "}",
119
123
  "",
120
124
  "void hal_delay_ms(uint32_t ms) {",
@@ -1 +1 @@
1
- {"version":3,"file":"stm32.js","sourceRoot":"","sources":["../../src/codegen/stm32.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stm32.js","sourceRoot":"","sources":["../../src/codegen/stm32.ts"],"names":[],"mappings":"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"}
package/dist/mcp/cache.js CHANGED
@@ -19,7 +19,7 @@ export const MAX_CACHE_ENTRIES = 32;
19
19
  * doesn't silently serve a stale cached entry from before the hint existed.
20
20
  */
21
21
  export function computeRef(pdfPath, mtimeMs, extra) {
22
- const hash = createHash("sha1")
22
+ const hash = createHash("sha256")
23
23
  .update(`${pdfPath}:${Math.round(mtimeMs)}:${extra ?? ""}`)
24
24
  .digest("hex");
25
25
  return `ds_${hash.slice(0, 12)}`;
@@ -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;;;;;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"}
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,QAAQ,CAAC;SAC9B,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"}
@@ -47,7 +47,7 @@ const INTERFACE_SCHEMA = z.discriminatedUnion("kind", [
47
47
  ]);
48
48
  const DATASHEET_JSON_GUARD = z.object({
49
49
  metadata: z.looseObject({ part: z.string() }),
50
- protocol: z.looseObject({ bus: z.string() }),
50
+ protocol: z.looseObject({ bus: z.string(), addresses: z.array(z.string()).optional() }),
51
51
  interface: INTERFACE_SCHEMA,
52
52
  extraction: z
53
53
  .object({
@@ -72,6 +72,10 @@ const text = (value, isError = false) => ({
72
72
  // this regex closes that gap so resolveArtifactPath's containment check is
73
73
  // meaningful on every platform, not just Windows (B3).
74
74
  const WINDOWS_ABSOLUTE = /^[a-zA-Z]:[\\/]/;
75
+ // DoS hardening: analyze_datasheet must not read an unbounded file into
76
+ // memory. 64 MiB comfortably covers real-world datasheets while still
77
+ // bounding worst-case memory/CPU from a hostile or accidental huge input.
78
+ const DEFAULT_MAX_PDF_BYTES = 64 * 1024 * 1024;
75
79
  /**
76
80
  * Confines a single artifact file path (`DriverArtifact.files[].path`) under
77
81
  * `rootDir`, returning the resolved absolute path when it is safely inside
@@ -122,13 +126,23 @@ export function registerDrivergeTools(server) {
122
126
  }, async ({ pdf_path, manufacturer_hint, interface_kind_hint }) => {
123
127
  // Single stat call (not existsSync + statSync) to close the TOCTOU gap
124
128
  // where the file could vanish/change between the check and the read (S4).
125
- let mtimeMs;
129
+ let stat;
126
130
  try {
127
- mtimeMs = statSync(pdf_path).mtimeMs;
131
+ stat = statSync(pdf_path);
128
132
  }
129
133
  catch {
130
134
  return text(`file not found: ${pdf_path}`, true);
131
135
  }
136
+ // DoS hardening: read the cap at call time (like DRIVERGE_OUT_ROOT below,
137
+ // in the generate_driver handler) so tests can scope it per-case via
138
+ // DRIVERGE_MAX_PDF_BYTES; `|| DEFAULT_MAX_PDF_BYTES` also covers an
139
+ // unset/empty/non-numeric env value (Number("") and Number(undefined)
140
+ // are both falsy-ish here — NaN is falsy for `||`).
141
+ const maxBytes = Number(process.env.DRIVERGE_MAX_PDF_BYTES) || DEFAULT_MAX_PDF_BYTES;
142
+ if (stat.size > maxBytes) {
143
+ return text(`PDF too large: ${stat.size} bytes exceeds the ${maxBytes}-byte limit (set DRIVERGE_MAX_PDF_BYTES to change it)`, true);
144
+ }
145
+ const mtimeMs = stat.mtimeMs;
132
146
  // Fold the hints into the ref material (Session 10 / Contract A): the ref
133
147
  // is otherwise path+mtime only, so re-analyzing the same file with
134
148
  // different hints would silently serve a hint-less cached entry.
@@ -232,12 +246,35 @@ export function registerDrivergeTools(server) {
232
246
  });
233
247
  server.registerTool("validate_datasheet", {
234
248
  title: "Validate datasheet JSON",
235
- description: "Re-run the L5 validator over a cached `ref` or a supplied datasheet JSON. Thin wrapper over the same rules analyze_datasheet applies internally.",
249
+ description: "Re-run the L5 validator over a cached `ref` or a supplied datasheet JSON. Passing BOTH `ref` and `json` PERSISTS the completed JSON under that ref (overwriting the cached datasheet) and returns its fresh validation — this is how you close the deferred loop: analyze → complete the register/command map from the datasheet resource → validate_datasheet(ref, json) → generate_driver(ref) then sees the completed map. Thin wrapper over the same rules analyze_datasheet applies internally.",
236
250
  inputSchema: {
237
251
  ref: z.string().optional(),
238
252
  json: z.record(z.string(), z.unknown()).optional(),
239
253
  },
240
254
  }, async ({ ref, json }) => {
255
+ // Both args → the host has completed a previously deferred datasheet and
256
+ // wants it persisted so generate_driver(ref) picks it up (A4, see
257
+ // raw/DRIVERGE_ISSUES.md). Guard-parse, re-validate, attach the fresh
258
+ // validation, and overwrite the cache entry under this ref.
259
+ if (ref && json) {
260
+ const parsed = DATASHEET_JSON_GUARD.safeParse(json);
261
+ if (!parsed.success) {
262
+ const issues = parsed.error.issues
263
+ .map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`)
264
+ .join("; ");
265
+ return text(`invalid datasheet JSON — ${issues}`, true);
266
+ }
267
+ const supplied = parsed.data;
268
+ // Recompute validation from the supplied content rather than trusting any
269
+ // `validation` field the host may (or may not) have included — so the
270
+ // persisted entry's validity always reflects the real map, and
271
+ // generate_driver's `validation.valid` gate stays honest.
272
+ const validation = validateDatasheet(supplied);
273
+ const completed = { ...supplied, validation };
274
+ const existing = getDatasheet(ref);
275
+ putDatasheet({ ref, pdfPath: existing?.pdfPath ?? "(host-completed)", json: completed });
276
+ return text({ persisted: true, ref, validation });
277
+ }
241
278
  if (ref) {
242
279
  const entry = getDatasheet(ref);
243
280
  if (!entry)
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/mcp/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/mcp/register.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,27 @@ import type { Command, Protocol } from "../schema/types.js";
2
2
  import type { PageContent } from "./types.js";
3
3
  /** L4b — bus + device addresses. */
4
4
  export declare function extractProtocol(pages: PageContent[]): Protocol;
5
+ /**
6
+ * L4b — I2C device addresses, ranked so `addresses[0]` is the PRIMARY device
7
+ * address (which is what codegen hardcodes as `<PART>_I2C_ADDR`). Recognizes
8
+ * both hex ("0x68") and binary-notation ("b110100X", "0b1101000", "1101000b")
9
+ * 7-bit addresses near the word "address". Many InvenSense/TDK-style sheets
10
+ * (e.g. MPU-9250) give the primary address ONLY in binary and a secondary
11
+ * sub-device address (the AK8963 magnetometer, 0x0C) in hex, so the old
12
+ * hex-only scan grabbed the wrong one (raw/DRIVERGE_ISSUES.md A2/A5).
13
+ *
14
+ * Three passes keep it safe: hex first (preserving the pre-existing text order
15
+ * of hex-only sheets byte-for-byte), then binary, then TI's decimal/hex PAIR
16
+ * idiom ("NN (decimal), NN (hexadecimal)" — TCA6408A-Q1's Table 8-3 "Address
17
+ * Reference"; neither the hex-literal nor binary-notation pass finds anything
18
+ * on that sheet, since the address is spelled entirely in prose). A small
19
+ * stable relevance score then floats the primary up: +1 for a binary-notation
20
+ * match (the primary's usual form on those sheets), +1 for an explicit
21
+ * "(hexadecimal)" label (an unambiguous primary-address signal, at least as
22
+ * strong as the binary form's), -2 for a magnetometer/sub-device context.
23
+ * Equal scores keep first-seen order, so hex-only sheets are unchanged.
24
+ */
25
+ export declare function extractI2cAddresses(text: string): string[];
5
26
  /** L4b — CRC parameters from the checksum section. */
6
27
  export declare function extractCrc(pages: PageContent[]): {
7
28
  poly: string;
@@ -69,22 +69,117 @@ export function extractProtocol(pages) {
69
69
  : CAN_PHRASE.test(text) || (/\bCAN\b/.test(text) && CAN_VOCAB)
70
70
  ? "CAN"
71
71
  : "unknown";
72
- const addresses = [];
73
72
  // Only I2C has a bus device address. Scanning for "0xNN near 'address'" on an
74
73
  // SPI datasheet yields register offsets, not addresses (e.g. AEAT-8811), so we
75
74
  // gate address extraction on the I2C bus.
76
- if (bus === "I2C") {
77
- for (const ctx of text.matchAll(/address[^.]{0,60}/gi)) {
78
- for (const m of ctx[0].matchAll(/0x[0-7][0-9a-f]/gi)) {
79
- const addr = upperHex(m[0]);
80
- const value = Number.parseInt(addr, 16);
81
- if (value >= 0x08 && value <= 0x77 && !addresses.includes(addr)) {
82
- addresses.push(addr);
83
- }
75
+ const addresses = bus === "I2C" ? extractI2cAddresses(text) : [];
76
+ return addresses.length > 0 ? { bus, addresses } : { bus };
77
+ }
78
+ // A binary-notation 7-bit I2C address token: an optional "0b"/"b" prefix (or a
79
+ // trailing "b"), 7 bits, where the last bit may be an "X"/"x" placeholder for a
80
+ // pin-selectable LSB (e.g. AD0). "b110100X", "0b1101000", "1101000b" all match.
81
+ const BINARY_ADDRESS = /\b(0b|b)?([01]{6}[01xX])(b)?\b/gi;
82
+ // TI's decimal/hex address-PAIR idiom (Table 8-3 "Address Reference": "ADDR
83
+ // I2C BUS TARGET ADDRESS L 32 (decimal), 20 (hexadecimal) H 33 (decimal), 21
84
+ // (hexadecimal)"). The comma between the pairs is optional (some sheets omit
85
+ // it); requiring the trailing "(hexadecimal)" label is what keeps a lone
86
+ // "NN (decimal)" mention from ever matching.
87
+ const TI_DECIMAL_HEX_PAIR = /\b\d{1,3}\s*\(decimal\),?\s*([0-9a-f]{1,2})\s*\(hexadecimal\)/gi;
88
+ // Context words that mark a SECONDARY sub-device address rather than the part's
89
+ // own primary bus address — the MPU-9250 case, where 0x0C is the AK8963
90
+ // magnetometer behind the main device (raw/DRIVERGE_ISSUES.md A2). Kept narrow
91
+ // (magnetometer/AK-family/"secondary|sub address") so it does not fire on the
92
+ // aux-interface prose common to plain IMUs.
93
+ const SUBDEVICE_CONTEXT = /\b(?:magnetometer|ak8963|ak09\d{3}|secondary\s+address|sub[-\s]?address)\b/i;
94
+ /**
95
+ * L4b — I2C device addresses, ranked so `addresses[0]` is the PRIMARY device
96
+ * address (which is what codegen hardcodes as `<PART>_I2C_ADDR`). Recognizes
97
+ * both hex ("0x68") and binary-notation ("b110100X", "0b1101000", "1101000b")
98
+ * 7-bit addresses near the word "address". Many InvenSense/TDK-style sheets
99
+ * (e.g. MPU-9250) give the primary address ONLY in binary and a secondary
100
+ * sub-device address (the AK8963 magnetometer, 0x0C) in hex, so the old
101
+ * hex-only scan grabbed the wrong one (raw/DRIVERGE_ISSUES.md A2/A5).
102
+ *
103
+ * Three passes keep it safe: hex first (preserving the pre-existing text order
104
+ * of hex-only sheets byte-for-byte), then binary, then TI's decimal/hex PAIR
105
+ * idiom ("NN (decimal), NN (hexadecimal)" — TCA6408A-Q1's Table 8-3 "Address
106
+ * Reference"; neither the hex-literal nor binary-notation pass finds anything
107
+ * on that sheet, since the address is spelled entirely in prose). A small
108
+ * stable relevance score then floats the primary up: +1 for a binary-notation
109
+ * match (the primary's usual form on those sheets), +1 for an explicit
110
+ * "(hexadecimal)" label (an unambiguous primary-address signal, at least as
111
+ * strong as the binary form's), -2 for a magnetometer/sub-device context.
112
+ * Equal scores keep first-seen order, so hex-only sheets are unchanged.
113
+ */
114
+ export function extractI2cAddresses(text) {
115
+ const byAddr = new Map();
116
+ let order = 0;
117
+ const consider = (addr, fromBinary, ctx, fromHexLabel = false) => {
118
+ const value = Number.parseInt(addr, 16);
119
+ if (value < 0x08 || value > 0x77)
120
+ return; // outside the usable 7-bit space
121
+ let score = 0;
122
+ if (fromBinary)
123
+ score += 1;
124
+ if (fromHexLabel)
125
+ score += 1;
126
+ if (SUBDEVICE_CONTEXT.test(ctx))
127
+ score -= 2;
128
+ const existing = byAddr.get(addr);
129
+ if (existing) {
130
+ if (score > existing.score)
131
+ existing.score = score; // keep strongest context
132
+ return;
133
+ }
134
+ byAddr.set(addr, { addr, score, order: order++ });
135
+ };
136
+ // Collect the "near-address" windows once; each carries a little preceding
137
+ // context so a "magnetometer"/"secondary" qualifier before the keyword is
138
+ // visible to the scorer.
139
+ const windows = [...text.matchAll(/address[^.]{0,60}/gi)].map((m) => ({
140
+ body: m[0],
141
+ ctx: text.slice(Math.max(0, (m.index ?? 0) - 32), (m.index ?? 0) + m[0].length),
142
+ }));
143
+ // Pass 1 — hex forms, in text order.
144
+ for (const { body, ctx } of windows) {
145
+ for (const m of body.matchAll(/0x[0-7][0-9a-f]/gi)) {
146
+ consider(upperHex(m[0]), false, ctx);
147
+ }
148
+ }
149
+ // Pass 2 — binary-notation forms (bumps score of already-seen addresses or
150
+ // appends new ones after the hex-ordered set).
151
+ for (const { body, ctx } of windows) {
152
+ for (const m of body.matchAll(BINARY_ADDRESS)) {
153
+ const [, prefix, core, suffix] = m;
154
+ const hasPlaceholder = /[xX]/.test(core);
155
+ // A bare, unmarked 7-bit run is too ambiguous to treat as an address —
156
+ // require an explicit binary marker (prefix/suffix "b", or an X placeholder).
157
+ if (!prefix && !suffix && !hasPlaceholder)
158
+ continue;
159
+ const bitStrings = hasPlaceholder
160
+ ? [core.replace(/[xX]/, "0"), core.replace(/[xX]/, "1")]
161
+ : [core];
162
+ for (const bits of bitStrings) {
163
+ const value = Number.parseInt(bits, 2);
164
+ consider(`0x${value.toString(16).toUpperCase().padStart(2, "0")}`, true, ctx);
84
165
  }
85
166
  }
86
167
  }
87
- return addresses.length > 0 ? { bus, addresses } : { bus };
168
+ // Pass 3 TI's "NN (decimal), NN (hexadecimal)" paired idiom (Table 8-3
169
+ // "Address Reference", TCA6408A-Q1). Scanned over the FULL text, not the
170
+ // "address"-anchored windows above: the idiom's own anchor keyword is
171
+ // "(hexadecimal)", not "address", and a sheet's second pair can sit well
172
+ // past a 60-char window from the first "address" mention. Requiring the
173
+ // decimal/hexadecimal PAIRING (not a bare "(decimal)") keeps a lone decimal
174
+ // mention from ever synthesizing an address.
175
+ for (const m of text.matchAll(TI_DECIMAL_HEX_PAIR)) {
176
+ const start = m.index ?? 0;
177
+ const ctx = text.slice(Math.max(0, start - 32), start + m[0].length);
178
+ consider(`0x${m[1].toUpperCase()}`, false, ctx, true);
179
+ }
180
+ return [...byAddr.values()]
181
+ .sort((a, b) => b.score - a.score || a.order - b.order)
182
+ .map((c) => c.addr);
88
183
  }
89
184
  /** Parse a CRC polynomial written as an expression, e.g. "1+X 4 +X 5 +X 8"
90
185
  * (pdfjs renders superscripts as separate tokens). Drops the implicit highest