@typecad/cuttlefish 1.0.0-alpha.13 → 1.0.0-alpha.15

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 (343) hide show
  1. package/README.md +82 -79
  2. package/assets/editor-extensions/typecad-debug/README.md +141 -0
  3. package/assets/editor-extensions/typecad-debug/out/extension.js +347 -0
  4. package/assets/editor-extensions/typecad-debug/out/extension.js.map +1 -0
  5. package/assets/editor-extensions/typecad-debug/package.json +76 -0
  6. package/assets/editor-extensions/typecad-ui/LICENSE +27 -0
  7. package/assets/editor-extensions/typecad-ui/README.md +52 -0
  8. package/assets/editor-extensions/typecad-ui/file-icon-dark.png +0 -0
  9. package/assets/editor-extensions/typecad-ui/file-icon-light.png +0 -0
  10. package/assets/editor-extensions/typecad-ui/icon.png +0 -0
  11. package/assets/editor-extensions/typecad-ui/language-configuration.json +43 -0
  12. package/assets/editor-extensions/typecad-ui/package.json +54 -0
  13. package/assets/editor-extensions/typecad-ui/snippets/typecad-ui.json +80 -0
  14. package/assets/editor-extensions/typecad-ui/syntaxes/markdown-ui.json +45 -0
  15. package/assets/editor-extensions/typecad-ui/syntaxes/typecad-ui.tmLanguage.json +1269 -0
  16. package/dist/api/config.d.ts +30 -27
  17. package/dist/api/schema/types.d.ts +20 -3
  18. package/dist/api/shared/async-runtime-static.d.ts +1 -1
  19. package/dist/api/shared/async-runtime-static.js +5 -5
  20. package/dist/api/shared/async-types.d.ts +3 -2
  21. package/dist/api/shared/board-catalog.d.ts +2 -0
  22. package/dist/api/shared/board-catalog.js +6 -0
  23. package/dist/api/shared/board-resolver.d.ts +4 -7
  24. package/dist/api/shared/board-resolver.js +2 -1
  25. package/dist/api/shared/coop-scheduler.d.ts +1 -1
  26. package/dist/api/shared/coop-scheduler.js +1 -1
  27. package/dist/api/shared/cpp-type-ir.d.ts +1 -1
  28. package/dist/api/shared/cpp-type-ir.js +1 -1
  29. package/dist/api/shared/display-profile.d.ts +1 -1
  30. package/dist/api/shared/display-profile.js +3 -5
  31. package/dist/api/shared/framework-manifest-registry.d.ts +1 -1
  32. package/dist/api/shared/framework-manifest-registry.js +0 -1
  33. package/dist/api/shared/framework-manifest.d.ts +65 -507
  34. package/dist/api/shared/framework-manifest.js +6 -11
  35. package/dist/api/shared/hal-op-ir.d.ts +294 -685
  36. package/dist/api/shared/hal-op-ir.js +31 -65
  37. package/dist/api/shared/index.d.ts +0 -4
  38. package/dist/api/shared/index.js +1 -7
  39. package/dist/api/shared/ir-core.d.ts +6 -0
  40. package/dist/api/shared/ir-declarations.d.ts +4 -0
  41. package/dist/api/shared/ir.d.ts +1 -3
  42. package/dist/api/shared/platform-strategy.d.ts +14 -37
  43. package/dist/api/shared/polyfill-helper-registry.js +0 -5
  44. package/dist/api/shared/polyfill-types.js +0 -27
  45. package/dist/api/shared/promise-runtime.js +3 -3
  46. package/dist/api/shared/spdx-licenses.d.ts +12 -10
  47. package/dist/api/shared/spdx-licenses.js +1 -1
  48. package/dist/api/shared/toolchain-types.d.ts +1 -1
  49. package/dist/api/shared/toolchain-types.js +3 -3
  50. package/dist/api/shared/types.d.ts +0 -3
  51. package/dist/api/shared/validate-framework-manifest.js +13 -33
  52. package/dist/board-catalog/dts-reader.d.ts +220 -0
  53. package/dist/board-catalog/dts-reader.js +1052 -0
  54. package/dist/board-catalog/index.d.ts +11 -0
  55. package/dist/board-catalog/index.js +12 -0
  56. package/dist/board-catalog/pinconfig.d.ts +48 -0
  57. package/dist/board-catalog/pinconfig.js +263 -0
  58. package/dist/board-catalog/sdk.d.ts +82 -0
  59. package/dist/board-catalog/sdk.js +180 -0
  60. package/dist/board-catalog/store.d.ts +196 -0
  61. package/dist/board-catalog/store.js +363 -0
  62. package/dist/board-catalog/types.d.ts +233 -0
  63. package/dist/board-catalog/types.js +7 -0
  64. package/dist/board-catalog/walker.d.ts +112 -0
  65. package/dist/board-catalog/walker.js +1101 -0
  66. package/dist/cli-utils.d.ts +2 -2
  67. package/dist/cli-utils.js +5 -5
  68. package/dist/cli.js +227 -244
  69. package/dist/config-loader.d.ts +14 -19
  70. package/dist/config-loader.js +242 -78
  71. package/dist/config-schema.d.ts +19 -227
  72. package/dist/config-schema.js +9 -8
  73. package/dist/contract/board-generator.d.ts +4 -4
  74. package/dist/contract/board-generator.js +16 -5
  75. package/dist/contract/contract-parser.d.ts +36 -127
  76. package/dist/contract/contract-parser.js +76 -0
  77. package/dist/contract/index.d.ts +1 -1
  78. package/dist/contract/index.js +70 -21
  79. package/dist/create/active-board-catalog.d.ts +9 -0
  80. package/dist/create/active-board-catalog.js +94 -0
  81. package/dist/create/board-catalog.generated.d.ts +96 -0
  82. package/dist/create/board-catalog.generated.js +128737 -0
  83. package/dist/create/board-search.d.ts +23 -0
  84. package/dist/create/board-search.js +88 -0
  85. package/dist/create/editor-integration.d.ts +32 -0
  86. package/dist/create/editor-integration.js +257 -0
  87. package/dist/create/eslint-rules-template.d.ts +2 -2
  88. package/dist/create/framework-catalog.d.ts +48 -8
  89. package/dist/create/framework-catalog.js +58 -44
  90. package/dist/create/index.d.ts +8 -13
  91. package/dist/create/index.js +5 -9
  92. package/dist/create/mcu-target.d.ts +39 -0
  93. package/dist/create/mcu-target.js +80 -0
  94. package/dist/create/pack-targets.d.ts +19 -0
  95. package/dist/create/pack-targets.js +56 -0
  96. package/dist/create/{init-scaffold.d.ts → scaffold.d.ts} +8 -11
  97. package/dist/create/{init-scaffold.js → scaffold.js} +28 -87
  98. package/dist/create/templates.d.ts +51 -0
  99. package/dist/create/{init-templates.js → templates.js} +135 -116
  100. package/dist/create/wizard.d.ts +19 -0
  101. package/dist/create/wizard.js +314 -0
  102. package/dist/debug/preprocessor.d.ts +5 -0
  103. package/dist/debug/preprocessor.js +31 -7
  104. package/dist/diagnostics/diagnostics-report.d.ts +1 -1
  105. package/dist/diagnostics/diagnostics-report.js +3 -11
  106. package/dist/diagnostics/json-schema.d.ts +1 -1
  107. package/dist/diagnostics/md-writer.js +2 -2
  108. package/dist/diagnostics/mermaid-builder.d.ts +1 -1
  109. package/dist/diagnostics/mermaid-builder.js +1 -1
  110. package/dist/emit/cpp-emitter.js +4 -1
  111. package/dist/emit/emitters/class-emitter.js +32 -4
  112. package/dist/emit/emitters/emitter-context.d.ts +11 -0
  113. package/dist/emit/emitters/entrypoint-synthesizer.js +1 -1
  114. package/dist/emit/emitters/function-emitter-impl.js +33 -17
  115. package/dist/emit/emitters/output-finalizer.d.ts +7 -0
  116. package/dist/emit/emitters/output-finalizer.js +31 -23
  117. package/dist/emit/emitters/setup.js +147 -63
  118. package/dist/emit/emitters/top-level-prep.js +1 -1
  119. package/dist/emit/emitters/type-decl-emitter.js +13 -8
  120. package/dist/emit/emitters/ui-emitter.js +1 -1
  121. package/dist/emit/expression-renderer.d.ts +3 -3
  122. package/dist/emit/expression-renderer.js +17 -7
  123. package/dist/emit/route-hal-op.js +17 -48
  124. package/dist/emit/snprintf-helpers.d.ts +1 -3
  125. package/dist/emit/snprintf-helpers.js +1 -39
  126. package/dist/emit/statement-renderer.d.ts +0 -4
  127. package/dist/emit/statement-renderer.js +54 -45
  128. package/dist/emit/utils/async-state-machine.d.ts +16 -9
  129. package/dist/emit/utils/async-state-machine.js +56 -54
  130. package/dist/emit/utils/comment-helpers.d.ts +0 -8
  131. package/dist/emit/utils/comment-helpers.js +1 -1
  132. package/dist/emit/utils/cpp-helpers.d.ts +2 -2
  133. package/dist/emit/utils/cpp-helpers.js +2 -2
  134. package/dist/emit/utils/hal-op-cpp-type.js +4 -6
  135. package/dist/emit/utils/index.d.ts +3 -3
  136. package/dist/emit/utils/index.js +3 -3
  137. package/dist/emit/utils/type-inference.d.ts +1 -29
  138. package/dist/emit/utils/type-inference.js +0 -75
  139. package/dist/framework-package.d.ts +3 -0
  140. package/dist/framework-package.js +23 -6
  141. package/dist/framework-registry.d.ts +5 -5
  142. package/dist/frameworks/native/graphics/terminal-preview.d.ts +5 -0
  143. package/dist/frameworks/native/graphics/terminal-preview.js +33 -0
  144. package/dist/frameworks/native/index.d.ts +3 -0
  145. package/dist/frameworks/native/index.js +15 -0
  146. package/dist/frameworks/native/native-compile.d.ts +17 -0
  147. package/dist/frameworks/native/native-compile.js +170 -0
  148. package/dist/frameworks/native/native-config.d.ts +41 -0
  149. package/dist/frameworks/native/native-config.js +7 -0
  150. package/dist/frameworks/native/strategy.d.ts +97 -0
  151. package/dist/frameworks/native/strategy.js +664 -0
  152. package/dist/ir/board-resolver.d.ts +18 -23
  153. package/dist/ir/board-resolver.js +43 -401
  154. package/dist/ir/build-ir-state.d.ts +3 -0
  155. package/dist/ir/build-ir-state.js +42 -0
  156. package/dist/ir/build-ir.d.ts +1 -1
  157. package/dist/ir/build-ir.js +64 -45
  158. package/dist/ir/declaration-builders.js +1 -0
  159. package/dist/ir/expression-to-ir.js +17 -10
  160. package/dist/ir/hal/hal-emitter.d.ts +0 -2
  161. package/dist/ir/hal/hal-emitter.js +92 -41
  162. package/dist/ir/hal/hal-parser.d.ts +5 -5
  163. package/dist/ir/hal/hal-parser.js +128 -36
  164. package/dist/ir/hal/hal-plugins.d.ts +0 -1
  165. package/dist/ir/hal/hal-plugins.js +425 -716
  166. package/dist/ir/heap-analysis.js +2 -41
  167. package/dist/ir/identifier-collector.js +32 -20
  168. package/dist/ir/network-validation.js +7 -11
  169. package/dist/ir/ownership-analysis.js +75 -13
  170. package/dist/ir/peripheral-usage.d.ts +8 -2
  171. package/dist/ir/peripheral-usage.js +78 -149
  172. package/dist/ir/peripheral-validation.js +23 -3
  173. package/dist/ir/pin-capability-validation.d.ts +12 -0
  174. package/dist/ir/pin-capability-validation.js +61 -97
  175. package/dist/ir/pin-mode-validation.js +5 -5
  176. package/dist/ir/program-analysis.d.ts +8 -15
  177. package/dist/ir/program-analysis.js +140 -323
  178. package/dist/ir/pulldown-validation.js +11 -4
  179. package/dist/ir/resource-analysis.js +15 -3
  180. package/dist/ir/statement-to-ir.js +0 -6
  181. package/dist/ir/timing-validation.js +1 -1
  182. package/dist/ir/transformers/array-methods.js +11 -5
  183. package/dist/ir/transformers/call-statement.js +20 -87
  184. package/dist/ir/transformers/callback-context-registry.d.ts +1 -1
  185. package/dist/ir/transformers/callback-context-registry.js +8 -16
  186. package/dist/ir/transformers/control-flow.js +0 -13
  187. package/dist/ir/transformers/expressions.js +10 -9
  188. package/dist/ir/transformers/hal-call-resolver.d.ts +2 -2
  189. package/dist/ir/transformers/hal-call-resolver.js +24 -10
  190. package/dist/ir/transformers/hal-emit-helpers.d.ts +2 -2
  191. package/dist/ir/transformers/hal-emit-helpers.js +2 -2
  192. package/dist/ir/transformers/namespace-methods.js +1 -1
  193. package/dist/ir/transformers/ui-callback-lowering.d.ts +0 -2
  194. package/dist/ir/transformers/ui-callback-lowering.js +0 -24
  195. package/dist/ir/transformers/variables.js +338 -42
  196. package/dist/ir/try-catch-validation.js +4 -3
  197. package/dist/ir/type-resolution.js +15 -4
  198. package/dist/ir/validation-orchestrator.js +0 -9
  199. package/dist/libdef/cpp-to-decl.d.ts +0 -9
  200. package/dist/libdef/cpp-to-decl.js +0 -72
  201. package/dist/libdef/registry.d.ts +0 -1
  202. package/dist/libdef/registry.js +1 -24
  203. package/dist/library/catalog.d.ts +35 -0
  204. package/dist/library/catalog.js +67 -0
  205. package/dist/library/cli.d.ts +2 -0
  206. package/dist/library/cli.js +168 -0
  207. package/dist/library/init.d.ts +25 -0
  208. package/dist/library/init.js +397 -0
  209. package/dist/library/install.d.ts +9 -0
  210. package/dist/library/install.js +80 -0
  211. package/dist/library/registry-search.d.ts +34 -0
  212. package/dist/library/registry-search.js +50 -0
  213. package/dist/library/validate.d.ts +17 -0
  214. package/dist/library/validate.js +175 -0
  215. package/dist/library-packages.d.ts +95 -0
  216. package/dist/library-packages.js +275 -0
  217. package/dist/mapping/peripheral-names.js +9 -4
  218. package/dist/mapping/source-map.d.ts +3 -4
  219. package/dist/mapping/source-map.js +12 -18
  220. package/dist/orchestrator/graph-builder.d.ts +3 -3
  221. package/dist/orchestrator/graph-builder.js +29 -12
  222. package/dist/orchestrator/type-checker.d.ts +3 -3
  223. package/dist/orchestrator/type-checker.js +3 -3
  224. package/dist/platform/async-runtime.js +1 -1
  225. package/dist/platform/coop-scheduler-runtime.js +2 -2
  226. package/dist/platform/generic-debug-codegen.d.ts +36 -0
  227. package/dist/platform/generic-debug-codegen.js +185 -0
  228. package/dist/platform/generic-strategy.d.ts +3 -4
  229. package/dist/platform/generic-strategy.js +5 -80
  230. package/dist/platform/index.js +1 -1
  231. package/dist/platform/registry.d.ts +2 -2
  232. package/dist/platform/registry.js +2 -2
  233. package/dist/preview/client.js +17 -3
  234. package/dist/safety/asil-decorators.d.ts +32 -0
  235. package/dist/safety/asil-decorators.js +32 -0
  236. package/dist/safety/authoring.d.ts +85 -0
  237. package/dist/safety/authoring.js +61 -0
  238. package/dist/safety/engine.d.ts +3 -0
  239. package/dist/safety/engine.js +83 -0
  240. package/dist/safety/hal/ops.d.ts +48 -0
  241. package/dist/safety/hal/ops.js +46 -0
  242. package/dist/safety/iso26262/analyze.d.ts +13 -0
  243. package/dist/safety/iso26262/analyze.js +29 -0
  244. package/dist/safety/iso26262/asil.d.ts +10 -0
  245. package/dist/safety/iso26262/asil.js +22 -0
  246. package/dist/safety/iso26262/collect.d.ts +14 -0
  247. package/dist/safety/iso26262/collect.js +137 -0
  248. package/dist/safety/iso26262/goto-checker.d.ts +10 -0
  249. package/dist/safety/iso26262/goto-checker.js +72 -0
  250. package/dist/safety/iso26262/heap-checker.d.ts +7 -0
  251. package/dist/safety/iso26262/heap-checker.js +57 -0
  252. package/dist/safety/iso26262/init-checker.d.ts +13 -0
  253. package/dist/safety/iso26262/init-checker.js +127 -0
  254. package/dist/safety/iso26262/loop-checker.d.ts +7 -0
  255. package/dist/safety/iso26262/loop-checker.js +86 -0
  256. package/dist/safety/iso26262/recursion-checker.d.ts +9 -0
  257. package/dist/safety/iso26262/recursion-checker.js +134 -0
  258. package/dist/safety/iso26262/sidecar-writer.d.ts +25 -0
  259. package/dist/safety/iso26262/sidecar-writer.js +13 -0
  260. package/dist/safety/passes/pinMode-intercept.d.ts +3 -0
  261. package/dist/safety/passes/pinMode-intercept.js +60 -0
  262. package/dist/safety/runtime/mode-table.d.ts +5 -0
  263. package/dist/safety/runtime/mode-table.js +55 -0
  264. package/dist/safety/runtime/polyfills.d.ts +6 -0
  265. package/dist/safety/runtime/polyfills.js +12 -0
  266. package/dist/safety/runtime/result-struct.d.ts +11 -0
  267. package/dist/safety/runtime/result-struct.js +98 -0
  268. package/dist/safety/runtime/safe-int.d.ts +33 -0
  269. package/dist/safety/runtime/safe-int.js +170 -0
  270. package/dist/safety/runtime/safe-traits.d.ts +4 -0
  271. package/dist/safety/runtime/safe-traits.js +95 -0
  272. package/dist/safety/runtime/safe-variable.d.ts +39 -0
  273. package/dist/safety/runtime/safe-variable.js +226 -0
  274. package/dist/safety/runtime/vote.d.ts +8 -0
  275. package/dist/safety/runtime/vote.js +92 -0
  276. package/dist/safety/runtime/write-verify.d.ts +8 -0
  277. package/dist/safety/runtime/write-verify.js +71 -0
  278. package/dist/safety/safe-int-types.d.ts +45 -0
  279. package/dist/safety/safe-int-types.js +25 -0
  280. package/dist/safety/safe-variable-types.d.ts +29 -0
  281. package/dist/safety/safe-variable-types.js +19 -0
  282. package/dist/safety/safety-bridge.d.ts +5 -6
  283. package/dist/safety/safety-bridge.js +15 -28
  284. package/dist/safety/sidecar-bridge.d.ts +1 -3
  285. package/dist/safety/sidecar-bridge.js +3 -20
  286. package/dist/safety/specifiers.d.ts +6 -0
  287. package/dist/safety/specifiers.js +14 -0
  288. package/dist/safety-hook.d.ts +8 -7
  289. package/dist/safety-hook.js +12 -13
  290. package/dist/testing.d.ts +5 -6
  291. package/dist/testing.js +5 -5
  292. package/dist/transpile/resolution.d.ts +1 -1
  293. package/dist/transpile/resolution.js +18 -9
  294. package/dist/transpile/test-pins.d.ts +18 -0
  295. package/dist/transpile/test-pins.js +142 -0
  296. package/dist/transpile.d.ts +1 -2
  297. package/dist/transpile.js +90 -29
  298. package/dist/types.d.ts +45 -26
  299. package/dist/ui-hook.d.ts +1 -1
  300. package/dist/utils/cli.d.ts +2 -2
  301. package/dist/utils/cli.js +160 -157
  302. package/dist/utils/fs.d.ts +3 -4
  303. package/dist/utils/fs.js +4 -5
  304. package/dist/utils/strings.d.ts +0 -1
  305. package/dist/utils/strings.js +0 -8
  306. package/dist/utils/ui.d.ts +5 -2
  307. package/dist/utils/ui.js +13 -3
  308. package/package.json +158 -149
  309. package/dist/add-preset.d.ts +0 -4
  310. package/dist/add-preset.js +0 -74
  311. package/dist/api/shared/async-symbol-detector.d.ts +0 -11
  312. package/dist/api/shared/async-symbol-detector.js +0 -140
  313. package/dist/api/shared/native-display-op-resolver.d.ts +0 -10
  314. package/dist/api/shared/native-display-op-resolver.js +0 -64
  315. package/dist/create/board-checklist.d.ts +0 -2
  316. package/dist/create/board-checklist.js +0 -52
  317. package/dist/create/board-codegen.d.ts +0 -9
  318. package/dist/create/board-codegen.js +0 -238
  319. package/dist/create/board-generators.d.ts +0 -12
  320. package/dist/create/board-generators.js +0 -651
  321. package/dist/create/board-spec.d.ts +0 -637
  322. package/dist/create/board-spec.js +0 -214
  323. package/dist/create/init-templates.d.ts +0 -28
  324. package/dist/create/init-wizard.d.ts +0 -8
  325. package/dist/create/init-wizard.js +0 -182
  326. package/dist/install/framework-catalog.d.ts +0 -53
  327. package/dist/install/framework-catalog.js +0 -107
  328. package/dist/install/handle-install.d.ts +0 -35
  329. package/dist/install/handle-install.js +0 -177
  330. package/dist/install/index.d.ts +0 -4
  331. package/dist/install/index.js +0 -3
  332. package/dist/ir/pin-state-tracking.d.ts +0 -58
  333. package/dist/ir/pin-state-tracking.js +0 -182
  334. package/dist/ir/pwm-timer-sharing.d.ts +0 -4
  335. package/dist/ir/pwm-timer-sharing.js +0 -94
  336. package/dist/ir/timer0-pwm-timing-conflict.d.ts +0 -4
  337. package/dist/ir/timer0-pwm-timing-conflict.js +0 -72
  338. package/dist/libdef/component-decls.d.ts +0 -2
  339. package/dist/libdef/component-decls.js +0 -6
  340. package/dist/libdef/component-discovery.d.ts +0 -43
  341. package/dist/libdef/component-discovery.js +0 -83
  342. package/dist/theme-tokens.d.ts +0 -22
  343. package/dist/theme-tokens.js +0 -172
@@ -36,8 +36,23 @@ export interface CuttlefishZephyrConfig {
36
36
  kconfig?: Record<string, string>;
37
37
  /** Extra arguments forwarded to `west build`. */
38
38
  cmakeArgs?: string[];
39
- /** Override the west flash runner (e.g. 'nrfjprog', 'jlink'). */
39
+ /**
40
+ * Named probe method from the board's supported table (e.g. 'stlink',
41
+ * 'dfu', 'jlink') — what `--probe` on the CLI also accepts. Serves both
42
+ * flashing and debugging; resolves to a west runner plus the args the
43
+ * method needs. The board package is the source of the table. Mutually
44
+ * exclusive with `runner`.
45
+ */
46
+ probe?: string;
47
+ /** Override the west flash runner (e.g. 'nrfjprog', 'jlink', 'openocd'). */
40
48
  runner?: string;
49
+ /**
50
+ * Extra arguments appended verbatim to `west flash` after the runner —
51
+ * anything the chosen runner's parser accepts. Example for an ST-Link
52
+ * clone with no SRST line wired to the target:
53
+ * runnerArgs: ['--cmd-pre-init=reset_config none']
54
+ */
55
+ runnerArgs?: string[];
41
56
  }
42
57
  /**
43
58
  * Root configuration object exported from `cuttlefish.config.ts`.
@@ -48,18 +63,22 @@ export interface CuttlefishConfig {
48
63
  /** Target architecture identifier (e.g. 'avr', 'esp32', 'rp2040'). */
49
64
  target: ArchitectureIdentifier;
50
65
  /**
51
- * MCU package providing silicon definitions.
52
- * Example: '@typecad/mcu-atmega328p'
53
- *
54
- * Optional for native/host targets a desktop build has no MCU (the
55
- * loader generates a boardless `@typecad/board` shim). Embedded targets
56
- * should set this (or the deprecated `board`).
66
+ * Zephyr board target the qualified `west build -b` argument (e.g.
67
+ * 'esp32s3_devkitc/esp32s3/procpu'). The project-local board module
68
+ * (.cuttlefish/board.ts + board.json) is a derived artifact: every build
69
+ * regenerates it when any input moves this field, the local board
70
+ * catalog, or the Zephyr tree the catalog was generated from. The catalog
71
+ * itself is always local (`cuttlefish board sync` rebuilds it from your
72
+ * tree); there is no compiled-in board database.
57
73
  */
58
- mcu?: string;
74
+ board?: string;
59
75
  /**
60
- * Board package to use. (Deprecated use mcu + contract instead)
76
+ * Zephyr SoC name for contract-based projects (custom PCBs with no board
77
+ * target) — e.g. 'stm32f411xe'. Selects the curated soc descriptor whose
78
+ * pin set the contract narrows against. Required with `contract` on
79
+ * embedded targets.
61
80
  */
62
- board?: string;
81
+ soc?: string;
63
82
  /**
64
83
  * Path to a TypeCAD contract file (*.contract.json).
65
84
  * If provided, the transpiler will generate a narrowed board definition.
@@ -71,7 +90,7 @@ export interface CuttlefishConfig {
71
90
  framework?: string;
72
91
  /**
73
92
  * ESP32 PSRAM type. When set, the framework emits the PSRAM-enabling
74
- * Kconfig (Zephyr) / define + FQBN option (Arduino) so large canvas
93
+ * Kconfig + BOARD_HAS_PSRAM define (Zephyr) so large canvas
75
94
  * allocations (scroll viewports, lists) prefer external RAM. No effect
76
95
  * on boards without PSRAM.
77
96
  */
@@ -94,10 +113,6 @@ export interface CuttlefishConfig {
94
113
  * Toolchain configuration for compile/upload operations.
95
114
  */
96
115
  toolchain?: CuttlefishToolchainConfig;
97
- /**
98
- * Console output configuration.
99
- */
100
- console?: CuttlefishConsoleConfig;
101
116
  /**
102
117
  * Framework-specific configuration.
103
118
  */
@@ -124,18 +139,6 @@ interface CuttlefishToolchainConfig {
124
139
  /** Framework-specific toolchain options. Each framework reads its own key. */
125
140
  frameworkOptions?: Record<string, unknown>;
126
141
  }
127
- /**
128
- * Console output configuration for the target framework.
129
- */
130
- interface CuttlefishConsoleConfig {
131
- /** Default baud rate for console output when auto-injected. Default: 9600 */
132
- baudRate?: number;
133
- /**
134
- * Serial port for upload and monitor (e.g. 'COM4', '/dev/ttyACM0').
135
- * Can be overridden by the --port CLI flag.
136
- */
137
- port?: string;
138
- }
139
142
  /**
140
143
  * Configuration for the `cuttlefish-test` hardware test runner.
141
144
  */
@@ -54,8 +54,6 @@ export interface PeripheralFunction {
54
54
  instance: number;
55
55
  /** Function role (e.g. "sda", "scl", "mosi", "miso"). */
56
56
  role: string;
57
- /** Timer associated with this PWM function (e.g. "timer0", "timer1"). */
58
- timer?: string;
59
57
  }
60
58
  export interface PinDefinitions {
61
59
  /** Offset for analog pin numbers (e.g. A0 = 14 on Uno). */
@@ -93,6 +91,12 @@ export interface PinDefinitions {
93
91
  led?: string;
94
92
  /** On-board button pin name. */
95
93
  button?: string;
94
+ /**
95
+ * Additional named board pins (e.g. a PWM-driven onboard LED). Keys should
96
+ * be snake_case so the flattened `pins.<key>` entry registers the
97
+ * UPPER_SNAKE identifier in the transpiler's pin alias map.
98
+ */
99
+ [key: string]: unknown;
96
100
  }
97
101
  export interface PeripheralInstance {
98
102
  instance: number;
@@ -201,7 +205,7 @@ export interface BuildConfig {
201
205
  * Describes the silicon capabilities that are independent of any board.
202
206
  */
203
207
  export interface MCUDefinition {
204
- /** MCU identifier (e.g. "atmega328p"). */
208
+ /** MCU identifier (e.g. "stm32f411"). */
205
209
  id: string;
206
210
  /** Human-readable name. */
207
211
  name: string;
@@ -217,6 +221,19 @@ export interface MCUDefinition {
217
221
  features: FeatureFlags;
218
222
  /** MCU-specific build configuration. */
219
223
  build: BuildConfig;
224
+ /**
225
+ * Silicon-level @typecad/framework-zephyr chip data for this MCU. The lower
226
+ * layer of the same record boards carry (BoardDefinition.zephyr): SoC
227
+ * name(s), devicetree includes, GPIO controller split, default console and
228
+ * clock plan — facts of the chip, not of any PCB. An MCU-only config (no
229
+ * board package) flattens these into board constants under `zephyr.*` so
230
+ * framework-zephyr's resolveChipFromBoard() reconstructs its chip descriptor
231
+ * and the custom-board generator can emit an out-of-tree board for the
232
+ * chip. Board packages keep board-level Zephyr facts (target name, probe
233
+ * methods, storage layout, onboard LED/button DT aliases) in their own
234
+ * zephyr field.
235
+ */
236
+ zephyr?: Record<string, unknown>;
220
237
  }
221
238
  /**
222
239
  * Board definition manifest.
@@ -6,7 +6,7 @@
6
6
  * Async.sleep / sleepUntil / yield operations.
7
7
  * @param waitForPinEdge How `__cuttlefish_wait_pin_edge` (the HAL gpio
8
8
  * waitForRising/waitForFalling lowering target) is implemented:
9
- * - "polling" (default): a busy-wait loop using digitalRead/delay/millis +
9
+ * - "polling" (default): a busy-wait loop using digitalRead/delay/__tc_now_ms +
10
10
  * the RISING/FALLING/HIGH/LOW symbols. For Arduino-style targets where
11
11
  * those are part of the core API.
12
12
  * - "stub": resolve immediately, emitting NO Arduino symbols in the body.
@@ -31,7 +31,7 @@
31
31
  * Async.sleep / sleepUntil / yield operations.
32
32
  * @param waitForPinEdge How `__cuttlefish_wait_pin_edge` (the HAL gpio
33
33
  * waitForRising/waitForFalling lowering target) is implemented:
34
- * - "polling" (default): a busy-wait loop using digitalRead/delay/millis +
34
+ * - "polling" (default): a busy-wait loop using digitalRead/delay/__tc_now_ms +
35
35
  * the RISING/FALLING/HIGH/LOW symbols. For Arduino-style targets where
36
36
  * those are part of the core API.
37
37
  * - "stub": resolve immediately, emitting NO Arduino symbols in the body.
@@ -42,10 +42,10 @@
42
42
  * - "interrupt": omit entirely — the strategy/ISR layer provides the symbol.
43
43
  */
44
44
  export function generateStaticAsyncRuntime(capacity, waitForPinEdge = "polling", strategy) {
45
- // The current-time expression (millis() on Wiring-derived frameworks,
46
- // std::chrono on generic). Falling back to millis() preserves the historical
45
+ // The current-time expression (__tc_now_ms() the runtime clock contract
46
+ // every strategy provides). Falling back to the contract symbol keeps the
47
47
  // behavior when no strategy is supplied.
48
- const now = strategy?.currentTimeMillis?.() ?? "millis()";
48
+ const now = strategy?.currentTimeMillis?.() ?? "__tc_now_ms()";
49
49
  return `
50
50
  // TypeCAD static (heap-free) async runtime — for targets without <vector>.
51
51
  namespace typecad_async_static {
@@ -199,7 +199,7 @@ ${waitPinEdgeForMode(waitForPinEdge, strategy, now)}
199
199
  `;
200
200
  }
201
201
  /** Emit `__cuttlefish_wait_pin_edge` per the strategy's waitForPinEdge mode. */
202
- function waitPinEdgeForMode(mode, strategy, now = "millis()") {
202
+ function waitPinEdgeForMode(mode, strategy, now = "__tc_now_ms()") {
203
203
  if (mode === "interrupt") {
204
204
  // The strategy/ISR layer provides the symbol; emit nothing here.
205
205
  return "// __cuttlefish_wait_pin_edge is provided by the strategy (interrupt mode).";
@@ -30,8 +30,9 @@ export interface AsyncRuntimeConfig {
30
30
  */
31
31
  hasPromiseRuntime: boolean;
32
32
  /**
33
- * Whether the platform supports timer-based setTimeout/setInterval
34
- * (as opposed to cooperative polling).
33
+ * Whether the platform provides native timer callbacks for async sleeps
34
+ * (as opposed to cooperative polling). Zephyr sets this false: periodic
35
+ * work is a Thread (k_thread) or a Counter, never a timer queue.
35
36
  */
36
37
  hasTimers: boolean;
37
38
  /**
@@ -0,0 +1,2 @@
1
+ export { BOARD_DATA } from '../../create/board-catalog.generated.js';
2
+ export type { BoardDataEntry } from '../../create/board-catalog.generated.js';
@@ -0,0 +1,6 @@
1
+ // Public surface for the generated Zephyr board catalog. The pack itself is
2
+ // generated by scripts/gen-zephyr-board-data.mjs against the pinned Zephyr
3
+ // tree and lives at src/create/board-catalog.generated.ts (shared with the
4
+ // create/scaffold flow). The framework's board generator (boardgen) joins
5
+ // this catalog with its curated soc descriptors.
6
+ export { BOARD_DATA } from '../../create/board-catalog.generated.js';
@@ -1,12 +1,9 @@
1
1
  /**
2
2
  * Flat map from dot-path key to scalar constant value.
3
3
  *
4
- * Examples (for Arduino Uno):
5
- * "id" → "arduino-uno"
6
- * "mcu" "ATmega328P"
7
- * "clockSpeed" 16000000
8
- * "memory.flash" → 32768
9
- * "memory.sram" → 2048
10
- * "memory.eeprom"→ 1024
4
+ * Examples (from a generated board.json manifest):
5
+ * "name" → "XIAO BLE"
6
+ * "pins.led" 13
7
+ * "pins.analogOffset" 14
11
8
  */
12
9
  export type BoardConstants = Map<string, string | number | boolean>;
@@ -2,6 +2,7 @@
2
2
  // Board constant types
3
3
  //
4
4
  // Types for compile-time constant extraction from board definitions.
5
- // The implementation (which uses TypeScript compiler API) remains in CLI.
5
+ // The implementation lives in the CLI (ir/board-resolver.ts) and reads the
6
+ // project-local generated board.json manifest.
6
7
  // ---------------------------------------------------------------------------
7
8
  export {};
@@ -21,7 +21,7 @@ export interface CoopSchedOptions {
21
21
  timeBudgetMs?: number;
22
22
  /**
23
23
  * C++ expression yielding the current monotonic time in ms, used for the
24
- * budget check (e.g. `millis()`, `k_uptime_get_32()`). Required only when
24
+ * budget check (`__tc_now_ms()`). Required only when
25
25
  * enableTimeBudget is true.
26
26
  */
27
27
  currentTimeExpr?: string;
@@ -31,7 +31,7 @@ export function generateCoopScheduler(options = {}) {
31
31
  const priorities = options.priorities ?? 2;
32
32
  const enableTimeBudget = options.enableTimeBudget ?? false;
33
33
  const timeBudgetMs = options.timeBudgetMs ?? 5;
34
- const currentTimeExpr = options.currentTimeExpr ?? "millis()";
34
+ const currentTimeExpr = options.currentTimeExpr ?? "__tc_now_ms()";
35
35
  // Budget check snippet, only included when time-budgeting is enabled.
36
36
  const budgetCheck = enableTimeBudget
37
37
  ? ` if ((${currentTimeExpr} - _start) >= static_cast<uint32_t>(${timeBudgetMs})) { break; }`
@@ -219,7 +219,7 @@ export declare function parsedIsPlainStructType(cppType: string): boolean;
219
219
  /**
220
220
  * True for types that own a string buffer and therefore need `.c_str()` when
221
221
  * passed to a C variadic (printf/snprintf): `std::string`, `__tc_str_ptr`,
222
- * and platform string types like Arduino `String`. NOT true for `const char*`
222
+ * and platform string types like `String`. NOT true for `const char*`
223
223
  * / `char*`, which are already C-strings.
224
224
  *
225
225
  * This is the structured replacement for the
@@ -648,7 +648,7 @@ export function parsedIsPlainStructType(cppType) {
648
648
  /**
649
649
  * True for types that own a string buffer and therefore need `.c_str()` when
650
650
  * passed to a C variadic (printf/snprintf): `std::string`, `__tc_str_ptr`,
651
- * and platform string types like Arduino `String`. NOT true for `const char*`
651
+ * and platform string types like `String`. NOT true for `const char*`
652
652
  * / `char*`, which are already C-strings.
653
653
  *
654
654
  * This is the structured replacement for the
@@ -121,7 +121,7 @@ export interface ResolvedDisplay extends DisplayProfile {
121
121
  _mountBus: string;
122
122
  _mountAddress: number;
123
123
  _mountReset: number;
124
- /** Framework build target string (e.g. an Arduino FQBN like
124
+ /** Framework build target string (e.g. a Zephyr board target like
125
125
  * "esp32:esp32:esp32s3:PSRAM=opi" or an IDF target). Carried through for
126
126
  * framework-side toolchain/compile use; cuttlefish itself does not parse it.
127
127
  * Optional. */
@@ -200,9 +200,7 @@ export function generateTouchAdapter(touch, strategy) {
200
200
  };
201
201
  }
202
202
  throw new Error(`No touch adapter for library "${touch.library}". ` +
203
- `The built-in Arduino touch libraries (XPT2046_Touchscreen, Adafruit_TouchScreen, ` +
204
- `Adafruit_STMPE610, FT6336U) are provided by @typecad/framework-arduino pass the ` +
205
- `ArduinoStrategy (or another framework strategy that provides touch adapters) so its ` +
206
- `resolveTouchAdapter can dispatch to them. Otherwise use the framework-agnostic ` +
207
- `"sdl" library, or { adapter: './path' } for a custom touch adapter.`);
203
+ `Pass a framework strategy whose resolveTouchAdapter dispatches to that driver, ` +
204
+ `use the framework-agnostic "sdl" library, or pass { adapter: './path' } for a ` +
205
+ `custom touch adapter.`);
208
206
  }
@@ -1,5 +1,5 @@
1
1
  import type { FrameworkManifest } from './framework-manifest.js';
2
- export declare const KNOWN_FRAMEWORK_PACKAGES: readonly ["@typecad/framework-arduino", "@typecad/framework-zephyr"];
2
+ export declare const KNOWN_FRAMEWORK_PACKAGES: readonly ["@typecad/framework-zephyr"];
3
3
  export type KnownFrameworkPackage = typeof KNOWN_FRAMEWORK_PACKAGES[number];
4
4
  /**
5
5
  * Loads a framework's manifest via its `./framework.manifest` subpath export.
@@ -10,7 +10,6 @@
10
10
  // framework declares in its package.json.
11
11
  // ---------------------------------------------------------------------------
12
12
  export const KNOWN_FRAMEWORK_PACKAGES = [
13
- '@typecad/framework-arduino',
14
13
  '@typecad/framework-zephyr',
15
14
  ];
16
15
  /**