@haibun/core 4.0.0-alpha.2 → 4.0.0-alpha.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 (297) hide show
  1. package/build/currentVersion.d.ts +1 -1
  2. package/build/currentVersion.js +1 -1
  3. package/build/index.d.ts +1 -1
  4. package/build/index.d.ts.map +1 -1
  5. package/build/index.js +1 -1
  6. package/build/index.js.map +1 -1
  7. package/build/kireji/converter.d.ts +2 -2
  8. package/build/kireji/converter.d.ts.map +1 -1
  9. package/build/kireji/converter.js +12 -9
  10. package/build/kireji/converter.js.map +1 -1
  11. package/build/kireji/withAction.d.ts +16 -4
  12. package/build/kireji/withAction.d.ts.map +1 -1
  13. package/build/kireji/withAction.js +40 -11
  14. package/build/kireji/withAction.js.map +1 -1
  15. package/build/lib/EventLogger.d.ts +5 -5
  16. package/build/lib/EventLogger.d.ts.map +1 -1
  17. package/build/lib/EventLogger.js +39 -37
  18. package/build/lib/EventLogger.js.map +1 -1
  19. package/build/lib/PhaseRunner.d.ts +3 -3
  20. package/build/lib/PhaseRunner.d.ts.map +1 -1
  21. package/build/lib/PhaseRunner.js +7 -5
  22. package/build/lib/PhaseRunner.js.map +1 -1
  23. package/build/lib/astepper.d.ts +90 -13
  24. package/build/lib/astepper.d.ts.map +1 -1
  25. package/build/lib/astepper.js +35 -6
  26. package/build/lib/astepper.js.map +1 -1
  27. package/build/lib/base-prompt-manager.d.ts +1 -1
  28. package/build/lib/base-prompt-manager.d.ts.map +1 -1
  29. package/build/lib/base-prompt-manager.js.map +1 -1
  30. package/build/lib/capture-locator.d.ts +1 -1
  31. package/build/lib/capture-locator.d.ts.map +1 -1
  32. package/build/lib/capture-locator.js +5 -5
  33. package/build/lib/capture-locator.js.map +1 -1
  34. package/build/lib/core/flow-runner.d.ts +8 -7
  35. package/build/lib/core/flow-runner.d.ts.map +1 -1
  36. package/build/lib/core/flow-runner.js +42 -71
  37. package/build/lib/core/flow-runner.js.map +1 -1
  38. package/build/lib/core-domains.d.ts +2 -2
  39. package/build/lib/core-domains.d.ts.map +1 -1
  40. package/build/lib/core-domains.js +17 -18
  41. package/build/lib/core-domains.js.map +1 -1
  42. package/build/lib/defs.d.ts +2 -13
  43. package/build/lib/defs.d.ts.map +1 -1
  44. package/build/lib/defs.js.map +1 -1
  45. package/build/lib/document-content.d.ts +18 -0
  46. package/build/lib/document-content.d.ts.map +1 -0
  47. package/build/lib/document-content.js +158 -0
  48. package/build/lib/document-content.js.map +1 -0
  49. package/build/lib/domains.d.ts +31 -0
  50. package/build/lib/domains.d.ts.map +1 -0
  51. package/build/lib/domains.js +105 -0
  52. package/build/lib/domains.js.map +1 -0
  53. package/build/lib/execution.d.ts +304 -0
  54. package/build/lib/execution.d.ts.map +1 -0
  55. package/build/lib/execution.js +23 -0
  56. package/build/lib/execution.js.map +1 -0
  57. package/build/lib/feature-variables.d.ts +21 -50
  58. package/build/lib/feature-variables.d.ts.map +1 -1
  59. package/build/lib/feature-variables.js +122 -232
  60. package/build/lib/feature-variables.js.map +1 -1
  61. package/build/lib/features.d.ts +2 -2
  62. package/build/lib/features.d.ts.map +1 -1
  63. package/build/lib/features.js +13 -17
  64. package/build/lib/features.js.map +1 -1
  65. package/build/lib/fixme.d.ts.map +1 -1
  66. package/build/lib/host-id.d.ts +44 -0
  67. package/build/lib/host-id.d.ts.map +1 -0
  68. package/build/lib/host-id.js +51 -0
  69. package/build/lib/host-id.js.map +1 -0
  70. package/build/lib/http-observations.d.ts +15 -2
  71. package/build/lib/http-observations.d.ts.map +1 -1
  72. package/build/lib/http-observations.js +40 -23
  73. package/build/lib/http-observations.js.map +1 -1
  74. package/build/lib/hypermedia.d.ts +62 -0
  75. package/build/lib/hypermedia.d.ts.map +1 -0
  76. package/build/lib/hypermedia.js +228 -0
  77. package/build/lib/hypermedia.js.map +1 -0
  78. package/build/lib/namedVars.d.ts +2 -2
  79. package/build/lib/namedVars.d.ts.map +1 -1
  80. package/build/lib/namedVars.js +25 -30
  81. package/build/lib/namedVars.js.map +1 -1
  82. package/build/lib/node-http-events.d.ts +3 -3
  83. package/build/lib/node-http-events.d.ts.map +1 -1
  84. package/build/lib/node-http-events.js +26 -26
  85. package/build/lib/node-http-events.js.map +1 -1
  86. package/build/lib/populateActionArgs.d.ts +4 -4
  87. package/build/lib/populateActionArgs.d.ts.map +1 -1
  88. package/build/lib/populateActionArgs.js +4 -6
  89. package/build/lib/populateActionArgs.js.map +1 -1
  90. package/build/lib/prompter.d.ts.map +1 -1
  91. package/build/lib/prompter.js +10 -7
  92. package/build/lib/prompter.js.map +1 -1
  93. package/build/lib/quad-store.d.ts +34 -10
  94. package/build/lib/quad-store.d.ts.map +1 -1
  95. package/build/lib/quad-store.js +169 -21
  96. package/build/lib/quad-store.js.map +1 -1
  97. package/build/lib/quad-types.d.ts +80 -9
  98. package/build/lib/quad-types.d.ts.map +1 -1
  99. package/build/lib/quad-types.js +46 -2
  100. package/build/lib/quad-types.js.map +1 -1
  101. package/build/lib/readline-prompter.d.ts +1 -1
  102. package/build/lib/readline-prompter.js +4 -4
  103. package/build/lib/remote-stepper-proxy.d.ts +56 -0
  104. package/build/lib/remote-stepper-proxy.d.ts.map +1 -0
  105. package/build/lib/remote-stepper-proxy.js +123 -0
  106. package/build/lib/remote-stepper-proxy.js.map +1 -0
  107. package/build/lib/resolver-features.d.ts +1 -1
  108. package/build/lib/resolver-features.d.ts.map +1 -1
  109. package/build/lib/resolver-features.js +2 -2
  110. package/build/lib/resolver-features.js.map +1 -1
  111. package/build/lib/resources.d.ts +461 -0
  112. package/build/lib/resources.d.ts.map +1 -0
  113. package/build/lib/resources.js +249 -0
  114. package/build/lib/resources.js.map +1 -0
  115. package/build/lib/rpc-client.d.ts +68 -0
  116. package/build/lib/rpc-client.d.ts.map +1 -0
  117. package/build/lib/rpc-client.js +186 -0
  118. package/build/lib/rpc-client.js.map +1 -0
  119. package/build/lib/sse-subscriber.d.ts +57 -0
  120. package/build/lib/sse-subscriber.d.ts.map +1 -0
  121. package/build/lib/sse-subscriber.js +110 -0
  122. package/build/lib/sse-subscriber.js.map +1 -0
  123. package/build/lib/step-dispatch.d.ts +92 -28
  124. package/build/lib/step-dispatch.d.ts.map +1 -1
  125. package/build/lib/step-dispatch.js +331 -75
  126. package/build/lib/step-dispatch.js.map +1 -1
  127. package/build/lib/step-validation.d.ts +3 -3
  128. package/build/lib/step-validation.d.ts.map +1 -1
  129. package/build/lib/step-validation.js +2 -2
  130. package/build/lib/step-validation.js.map +1 -1
  131. package/build/lib/stepper-cycles.d.ts +5 -0
  132. package/build/lib/stepper-cycles.d.ts.map +1 -0
  133. package/build/lib/stepper-cycles.js +31 -0
  134. package/build/lib/stepper-cycles.js.map +1 -0
  135. package/build/lib/stepper-registry.d.ts +6 -3
  136. package/build/lib/stepper-registry.d.ts.map +1 -1
  137. package/build/lib/stepper-registry.js +9 -8
  138. package/build/lib/stepper-registry.js.map +1 -1
  139. package/build/lib/subprocess-runner.d.ts +35 -0
  140. package/build/lib/subprocess-runner.d.ts.map +1 -0
  141. package/build/lib/subprocess-runner.js +60 -0
  142. package/build/lib/subprocess-runner.js.map +1 -0
  143. package/build/lib/subprocess-transport.d.ts +37 -0
  144. package/build/lib/subprocess-transport.d.ts.map +1 -0
  145. package/build/lib/subprocess-transport.js +113 -0
  146. package/build/lib/subprocess-transport.js.map +1 -0
  147. package/build/lib/test/EventCollectorStepper.d.ts +3 -3
  148. package/build/lib/test/EventCollectorStepper.d.ts.map +1 -1
  149. package/build/lib/test/EventCollectorStepper.js +3 -3
  150. package/build/lib/test/EventCollectorStepper.js.map +1 -1
  151. package/build/lib/test/SetTimeStepper.d.ts +3 -3
  152. package/build/lib/test/SetTimeStepper.d.ts.map +1 -1
  153. package/build/lib/test/SetTimeStepper.js +7 -7
  154. package/build/lib/test/SetTimeStepper.js.map +1 -1
  155. package/build/lib/test/TestSteps.d.ts +7 -7
  156. package/build/lib/test/TestSteps.d.ts.map +1 -1
  157. package/build/lib/test/TestSteps.js +7 -7
  158. package/build/lib/test/TestSteps.js.map +1 -1
  159. package/build/lib/test/TestStepsWithOptions.d.ts +6 -6
  160. package/build/lib/test/TestStepsWithOptions.js +7 -7
  161. package/build/lib/test/lib.d.ts +3 -3
  162. package/build/lib/test/lib.d.ts.map +1 -1
  163. package/build/lib/test/lib.js +27 -21
  164. package/build/lib/test/lib.js.map +1 -1
  165. package/build/lib/test/resolvedTestFeatures.d.ts +6 -6
  166. package/build/lib/test/resolvedTestFeatures.d.ts.map +1 -1
  167. package/build/lib/test/resolvedTestFeatures.js +5 -5
  168. package/build/lib/test/subprocess-fixture.d.ts +8 -0
  169. package/build/lib/test/subprocess-fixture.d.ts.map +1 -0
  170. package/build/lib/test/subprocess-fixture.js +27 -0
  171. package/build/lib/test/subprocess-fixture.js.map +1 -0
  172. package/build/lib/ttag.d.ts +7 -1
  173. package/build/lib/ttag.d.ts.map +1 -1
  174. package/build/lib/ttag.js +5 -4
  175. package/build/lib/ttag.js.map +1 -1
  176. package/build/lib/util/dot-path.d.ts +2 -2
  177. package/build/lib/util/dot-path.d.ts.map +1 -1
  178. package/build/lib/util/dot-path.js +8 -7
  179. package/build/lib/util/dot-path.js.map +1 -1
  180. package/build/lib/util/index.d.ts +10 -24
  181. package/build/lib/util/index.d.ts.map +1 -1
  182. package/build/lib/util/index.js +43 -93
  183. package/build/lib/util/index.js.map +1 -1
  184. package/build/lib/util/node/actualURI.d.ts +4 -0
  185. package/build/lib/util/node/actualURI.d.ts.map +1 -0
  186. package/build/lib/util/node/actualURI.js +10 -0
  187. package/build/lib/util/node/actualURI.js.map +1 -0
  188. package/build/lib/util/node/module-loader.d.ts +14 -0
  189. package/build/lib/util/node/module-loader.d.ts.map +1 -0
  190. package/build/lib/util/node/module-loader.js +51 -0
  191. package/build/lib/util/node/module-loader.js.map +1 -0
  192. package/build/lib/util/node/workspace-lib.d.ts +15 -0
  193. package/build/lib/util/node/workspace-lib.d.ts.map +1 -0
  194. package/build/lib/util/node/workspace-lib.js +119 -0
  195. package/build/lib/util/node/workspace-lib.js.map +1 -0
  196. package/build/lib/util/secret-utils.d.ts.map +1 -1
  197. package/build/lib/util/secret-utils.js +2 -2
  198. package/build/lib/util/secret-utils.js.map +1 -1
  199. package/build/lib/vertex-crud.d.ts +22 -0
  200. package/build/lib/vertex-crud.d.ts.map +1 -0
  201. package/build/lib/vertex-crud.js +73 -0
  202. package/build/lib/vertex-crud.js.map +1 -0
  203. package/build/lib/workspace-discovery.d.ts +1 -1
  204. package/build/lib/workspace-discovery.d.ts.map +1 -1
  205. package/build/lib/workspace-discovery.js +10 -10
  206. package/build/lib/workspace-discovery.js.map +1 -1
  207. package/build/lib/zcap-like-authority.d.ts +38 -0
  208. package/build/lib/zcap-like-authority.d.ts.map +1 -0
  209. package/build/lib/zcap-like-authority.js +56 -0
  210. package/build/lib/zcap-like-authority.js.map +1 -0
  211. package/build/monitor/index.d.ts +1 -1
  212. package/build/monitor/index.d.ts.map +1 -1
  213. package/build/monitor/index.js +1 -1
  214. package/build/monitor/index.js.map +1 -1
  215. package/build/phases/Executor.d.ts +31 -7
  216. package/build/phases/Executor.d.ts.map +1 -1
  217. package/build/phases/Executor.js +201 -219
  218. package/build/phases/Executor.js.map +1 -1
  219. package/build/phases/Resolver.d.ts +2 -2
  220. package/build/phases/Resolver.d.ts.map +1 -1
  221. package/build/phases/Resolver.js +35 -30
  222. package/build/phases/Resolver.js.map +1 -1
  223. package/build/phases/collector.d.ts +3 -3
  224. package/build/phases/collector.d.ts.map +1 -1
  225. package/build/phases/collector.js +19 -17
  226. package/build/phases/collector.js.map +1 -1
  227. package/build/run-policy/run-policy-schema.d.ts +3 -5
  228. package/build/run-policy/run-policy-schema.d.ts.map +1 -1
  229. package/build/run-policy/run-policy-schema.js +41 -37
  230. package/build/run-policy/run-policy-schema.js.map +1 -1
  231. package/build/run-policy/run-policy-types.d.ts +1 -1
  232. package/build/run-policy/run-policy-types.d.ts.map +1 -1
  233. package/build/run-policy/run-policy-types.js +19 -16
  234. package/build/run-policy/run-policy-types.js.map +1 -1
  235. package/build/runner.d.ts +4 -4
  236. package/build/runner.d.ts.map +1 -1
  237. package/build/runner.js +15 -13
  238. package/build/runner.js.map +1 -1
  239. package/build/schema/protocol.d.ts +153 -61
  240. package/build/schema/protocol.d.ts.map +1 -1
  241. package/build/schema/protocol.js +177 -148
  242. package/build/schema/protocol.js.map +1 -1
  243. package/build/steps/activities-stepper.d.ts +13 -13
  244. package/build/steps/activities-stepper.d.ts.map +1 -1
  245. package/build/steps/activities-stepper.js +105 -79
  246. package/build/steps/activities-stepper.js.map +1 -1
  247. package/build/steps/conformance.d.ts +5 -5
  248. package/build/steps/conformance.js +4 -4
  249. package/build/steps/console-monitor-stepper.d.ts +2 -2
  250. package/build/steps/console-monitor-stepper.d.ts.map +1 -1
  251. package/build/steps/console-monitor-stepper.js +22 -22
  252. package/build/steps/console-monitor-stepper.js.map +1 -1
  253. package/build/steps/debugger-stepper.d.ts +11 -11
  254. package/build/steps/debugger-stepper.d.ts.map +1 -1
  255. package/build/steps/debugger-stepper.js +65 -64
  256. package/build/steps/debugger-stepper.js.map +1 -1
  257. package/build/steps/finalizer-stepper.d.ts +3 -4
  258. package/build/steps/finalizer-stepper.d.ts.map +1 -1
  259. package/build/steps/finalizer-stepper.js +16 -19
  260. package/build/steps/finalizer-stepper.js.map +1 -1
  261. package/build/steps/haibun.d.ts +27 -20
  262. package/build/steps/haibun.d.ts.map +1 -1
  263. package/build/steps/haibun.js +76 -67
  264. package/build/steps/haibun.js.map +1 -1
  265. package/build/steps/lib/tts.d.ts +1 -1
  266. package/build/steps/lib/tts.d.ts.map +1 -1
  267. package/build/steps/lib/tts.js +28 -28
  268. package/build/steps/lib/tts.js.map +1 -1
  269. package/build/steps/logic-stepper.d.ts +5 -5
  270. package/build/steps/logic-stepper.d.ts.map +1 -1
  271. package/build/steps/logic-stepper.js +76 -76
  272. package/build/steps/logic-stepper.js.map +1 -1
  273. package/build/steps/narrator.d.ts +9 -9
  274. package/build/steps/narrator.d.ts.map +1 -1
  275. package/build/steps/narrator.js +32 -28
  276. package/build/steps/narrator.js.map +1 -1
  277. package/build/steps/resources-stepper.d.ts +47 -0
  278. package/build/steps/resources-stepper.d.ts.map +1 -0
  279. package/build/steps/resources-stepper.js +100 -0
  280. package/build/steps/resources-stepper.js.map +1 -0
  281. package/build/steps/variables-stepper.d.ts +57 -57
  282. package/build/steps/variables-stepper.d.ts.map +1 -1
  283. package/build/steps/variables-stepper.js +252 -224
  284. package/build/steps/variables-stepper.js.map +1 -1
  285. package/build/steps/zcap-like-stepper.d.ts +50 -0
  286. package/build/steps/zcap-like-stepper.d.ts.map +1 -0
  287. package/build/steps/zcap-like-stepper.js +113 -0
  288. package/build/steps/zcap-like-stepper.js.map +1 -0
  289. package/package.json +1 -1
  290. package/build/lib/consts.d.ts +0 -5
  291. package/build/lib/consts.d.ts.map +0 -1
  292. package/build/lib/consts.js +0 -5
  293. package/build/lib/consts.js.map +0 -1
  294. package/build/lib/step-helpers.d.ts +0 -10
  295. package/build/lib/step-helpers.d.ts.map +0 -1
  296. package/build/lib/step-helpers.js +0 -16
  297. package/build/lib/step-helpers.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fixme.d.ts","sourceRoot":"","sources":["../../src/lib/fixme.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"fixme.d.ts","sourceRoot":"","sources":["../../src/lib/fixme.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * hostId — a stable non-negative integer identifying the haibun instance
3
+ * within a deployment. Prepended to every seqPath root so observations from
4
+ * different hosts cannot collide even when running identical features.
5
+ *
6
+ * Single-host deployments keep hostId = 0 (the default) and see no change.
7
+ * Multi-host deployments set HAIBUN_HOST_ID per instance; assigning ids is
8
+ * an operator concern (config, supervisor, orchestration).
9
+ *
10
+ * Aligns with OpenTelemetry's `service.instance.id` convention — a haibun
11
+ * instance is a service instance.
12
+ */
13
+ export declare const HAIBUN_HOST_ID_ENV = "HAIBUN_HOST_ID";
14
+ export declare const DEFAULT_HOST_ID = 0;
15
+ /** Reserved featureNum value used for non-feature synthetic seqPaths (ad-hoc RPC, MCP, subprocess). */
16
+ export declare const SYNTHETIC_FEATURE_NUM = -1;
17
+ /**
18
+ * Resolve hostId from environment. Returns DEFAULT_HOST_ID when the env var
19
+ * is absent. Throws on non-integer or negative values — a misconfigured
20
+ * hostId would silently break global uniqueness, so fail fast at startup.
21
+ */
22
+ export declare function resolveHostId(env?: Record<string, string | undefined>): number;
23
+ /**
24
+ * Synthetic seqPath for calls not tied to a feature step — ad-hoc RPC,
25
+ * MCP tool invocations, subprocess transport. Uses SYNTHETIC_FEATURE_NUM
26
+ * (-1) in the featureNum slot so these paths sort distinctly from any
27
+ * feature path and cannot collide with a running feature.
28
+ */
29
+ export declare function syntheticSeqPath(hostId: number, adHocSeq: number): number[];
30
+ /**
31
+ * Allocate the next synthetic seqPath for the given world. Bumps the
32
+ * world's `adHocSeq` counter and returns a path rooted on the world's
33
+ * hostId. Used by every external-protocol entry point (RPC, MCP,
34
+ * subprocess) so the bump-then-build invariant lives in one place.
35
+ */
36
+ export declare function allocateSyntheticSeqPath(world: {
37
+ tag: {
38
+ hostId: number;
39
+ };
40
+ runtime: {
41
+ adHocSeq?: number;
42
+ };
43
+ }): number[];
44
+ //# sourceMappingURL=host-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-id.d.ts","sourceRoot":"","sources":["../../src/lib/host-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AACnD,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,MAAM,CAQ3F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAAE,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAGrH"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * hostId — a stable non-negative integer identifying the haibun instance
3
+ * within a deployment. Prepended to every seqPath root so observations from
4
+ * different hosts cannot collide even when running identical features.
5
+ *
6
+ * Single-host deployments keep hostId = 0 (the default) and see no change.
7
+ * Multi-host deployments set HAIBUN_HOST_ID per instance; assigning ids is
8
+ * an operator concern (config, supervisor, orchestration).
9
+ *
10
+ * Aligns with OpenTelemetry's `service.instance.id` convention — a haibun
11
+ * instance is a service instance.
12
+ */
13
+ export const HAIBUN_HOST_ID_ENV = "HAIBUN_HOST_ID";
14
+ export const DEFAULT_HOST_ID = 0;
15
+ /** Reserved featureNum value used for non-feature synthetic seqPaths (ad-hoc RPC, MCP, subprocess). */
16
+ export const SYNTHETIC_FEATURE_NUM = -1;
17
+ /**
18
+ * Resolve hostId from environment. Returns DEFAULT_HOST_ID when the env var
19
+ * is absent. Throws on non-integer or negative values — a misconfigured
20
+ * hostId would silently break global uniqueness, so fail fast at startup.
21
+ */
22
+ export function resolveHostId(env = process.env) {
23
+ const raw = env[HAIBUN_HOST_ID_ENV];
24
+ if (raw === undefined || raw === "")
25
+ return DEFAULT_HOST_ID;
26
+ const n = Number(raw);
27
+ if (!Number.isInteger(n) || n < 0) {
28
+ throw new Error(`${HAIBUN_HOST_ID_ENV} must be a non-negative integer, got "${raw}"`);
29
+ }
30
+ return n;
31
+ }
32
+ /**
33
+ * Synthetic seqPath for calls not tied to a feature step — ad-hoc RPC,
34
+ * MCP tool invocations, subprocess transport. Uses SYNTHETIC_FEATURE_NUM
35
+ * (-1) in the featureNum slot so these paths sort distinctly from any
36
+ * feature path and cannot collide with a running feature.
37
+ */
38
+ export function syntheticSeqPath(hostId, adHocSeq) {
39
+ return [hostId, SYNTHETIC_FEATURE_NUM, adHocSeq];
40
+ }
41
+ /**
42
+ * Allocate the next synthetic seqPath for the given world. Bumps the
43
+ * world's `adHocSeq` counter and returns a path rooted on the world's
44
+ * hostId. Used by every external-protocol entry point (RPC, MCP,
45
+ * subprocess) so the bump-then-build invariant lives in one place.
46
+ */
47
+ export function allocateSyntheticSeqPath(world) {
48
+ world.runtime.adHocSeq = (world.runtime.adHocSeq ?? 0) + 1;
49
+ return syntheticSeqPath(world.tag.hostId, world.runtime.adHocSeq);
50
+ }
51
+ //# sourceMappingURL=host-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-id.js","sourceRoot":"","sources":["../../src/lib/host-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC,uGAAuG;AACvG,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,CAAC;AAExC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAA0C,OAAO,CAAC,GAAG;IAClF,MAAM,GAAG,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,eAAe,CAAC;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,GAAG,kBAAkB,yCAAyC,GAAG,GAAG,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,QAAgB;IAChE,OAAO,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAkE;IAC1G,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3D,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACnE,CAAC"}
@@ -5,7 +5,19 @@
5
5
  * - NodeHttpEvents (Node.js fetch/undici requests)
6
6
  * - PlaywrightEvents (browser requests via Playwright)
7
7
  */
8
- import type { TWorld } from './defs.js';
8
+ import type { TWorld } from "./execution.js";
9
+ export declare const SERVICE_PATH_PREFIXES: readonly ["/sse", "/rpc/"];
10
+ export declare const OBSERVATION_GRAPH: {
11
+ readonly ROUTE: "observation/route";
12
+ readonly SERVICE: "observation/shu-service";
13
+ readonly EXTERNAL: "observation/external";
14
+ readonly ENDPOINT: "Endpoint";
15
+ };
16
+ /** Classify an HTTP path against registered route paths. Returns the observation namedGraph and resolved endpoint path. */
17
+ export declare function classifyHttpPath(path: string, registeredPaths: Set<string>): {
18
+ namedGraph: string;
19
+ endpointPath: string;
20
+ };
9
21
  /** Observation data for a single HTTP request */
10
22
  export type THttpRequestObservation = {
11
23
  url: string;
@@ -20,6 +32,7 @@ export type THttpRequestObservation = {
20
32
  export declare function trackHttpHost(world: TWorld, url: string): void;
21
33
  /**
22
34
  * Track an HTTP request in observations for the 'http-trace' observation source.
35
+ * Pass registeredPaths (from IWebServer.mounted) to classify observations into namedGraphs.
23
36
  */
24
- export declare function trackHttpRequest(world: TWorld, observation: THttpRequestObservation): void;
37
+ export declare function trackHttpRequest(world: TWorld, observation: THttpRequestObservation, registeredPaths: Set<string>): void;
25
38
  //# sourceMappingURL=http-observations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-observations.d.ts","sourceRoot":"","sources":["../../src/lib/http-observations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC,iDAAiD;AACjD,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAa9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,GAAG,IAAI,CA6B1F"}
1
+ {"version":3,"file":"http-observations.d.ts","sourceRoot":"","sources":["../../src/lib/http-observations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,eAAO,MAAM,qBAAqB,4BAA6B,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;;;CAAsI,CAAC;AAErK,2HAA2H;AAC3H,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAWzH;AAUD,iDAAiD;AACjD,MAAM,MAAM,uBAAuB,GAAG;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAa9D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAkBxH"}
@@ -5,6 +5,33 @@
5
5
  * - NodeHttpEvents (Node.js fetch/undici requests)
6
6
  * - PlaywrightEvents (browser requests via Playwright)
7
7
  */
8
+ import { emitQuadObservation } from "./quad-types.js";
9
+ export const SERVICE_PATH_PREFIXES = ["/sse", "/rpc/"];
10
+ export const OBSERVATION_GRAPH = { ROUTE: "observation/route", SERVICE: "observation/shu-service", EXTERNAL: "observation/external", ENDPOINT: "Endpoint" };
11
+ /** Classify an HTTP path against registered route paths. Returns the observation namedGraph and resolved endpoint path. */
12
+ export function classifyHttpPath(path, registeredPaths) {
13
+ const isService = SERVICE_PATH_PREFIXES.some((p) => path === p || path.startsWith(p));
14
+ if (isService) {
15
+ if (registeredPaths.has(path))
16
+ return { namedGraph: OBSERVATION_GRAPH.SERVICE, endpointPath: path };
17
+ const match = [...registeredPaths].find((rp) => pathMatchesParameterized(rp, path));
18
+ return { namedGraph: OBSERVATION_GRAPH.SERVICE, endpointPath: match ?? path };
19
+ }
20
+ if (registeredPaths.has(path))
21
+ return { namedGraph: OBSERVATION_GRAPH.ROUTE, endpointPath: path };
22
+ const paramMatch = [...registeredPaths].find((rp) => pathMatchesParameterized(rp, path));
23
+ if (paramMatch)
24
+ return { namedGraph: OBSERVATION_GRAPH.ROUTE, endpointPath: paramMatch };
25
+ return { namedGraph: OBSERVATION_GRAPH.EXTERNAL, endpointPath: path };
26
+ }
27
+ /** Check if a concrete path matches a parameterized route (e.g., /status/revocation matches /status/:purpose). */
28
+ function pathMatchesParameterized(route, path) {
29
+ const routeParts = route.split("/");
30
+ const pathParts = path.split("/");
31
+ if (routeParts.length !== pathParts.length)
32
+ return false;
33
+ return routeParts.every((rp, i) => rp.startsWith(":") || rp === pathParts[i]);
34
+ }
8
35
  /**
9
36
  * Track an HTTP host in observations for the 'http-trace hosts' observation source.
10
37
  * Both NodeHttpEvents and PlaywrightEvents use this.
@@ -16,9 +43,9 @@ export function trackHttpHost(world, url) {
16
43
  if (!world.runtime.observations) {
17
44
  world.runtime.observations = new Map();
18
45
  }
19
- const httpHosts = world.runtime.observations.get('httpHosts') || new Map();
46
+ const httpHosts = world.runtime.observations.get("httpHosts") || new Map();
20
47
  httpHosts.set(host, (httpHosts.get(host) || 0) + 1);
21
- world.runtime.observations.set('httpHosts', httpHosts);
48
+ world.runtime.observations.set("httpHosts", httpHosts);
22
49
  }
23
50
  catch {
24
51
  // Invalid URL, skip tracking
@@ -26,34 +53,24 @@ export function trackHttpHost(world, url) {
26
53
  }
27
54
  /**
28
55
  * Track an HTTP request in observations for the 'http-trace' observation source.
56
+ * Pass registeredPaths (from IWebServer.mounted) to classify observations into namedGraphs.
29
57
  */
30
- export function trackHttpRequest(world, observation) {
58
+ export function trackHttpRequest(world, observation, registeredPaths) {
31
59
  if (!world.runtime.observations) {
32
60
  world.runtime.observations = new Map();
33
61
  }
34
- const requests = world.runtime.observations.get('httpRequests') || new Map();
62
+ const requests = world.runtime.observations.get("httpRequests") ||
63
+ new Map();
35
64
  const count = requests.size;
36
65
  const id = `req-${count + 1}`;
37
66
  requests.set(id, observation);
38
- world.runtime.observations.set('httpRequests', requests);
39
- // Emit quadObservation with hierarchical context for graph visualization
67
+ world.runtime.observations.set("httpRequests", requests);
40
68
  const timestamp = Date.now();
41
- world.eventLogger.emit({
42
- id: `quad-http-${timestamp}-${id}`,
43
- timestamp,
44
- source: 'haibun',
45
- level: 'debug',
46
- kind: 'artifact',
47
- artifactType: 'json',
48
- mimetype: 'application/json',
49
- json: {
50
- quadObservation: {
51
- subject: id,
52
- predicate: 'time',
53
- object: observation.time,
54
- namedGraph: 'observation/http',
55
- }
56
- },
57
- });
69
+ const path = observation.url.startsWith("/") ? observation.url : new URL(observation.url).pathname;
70
+ const { namedGraph, endpointPath } = classifyHttpPath(path, registeredPaths);
71
+ const subject = `${observation.method} ${path}`;
72
+ emitQuadObservation(world.eventLogger, `quad-http-${timestamp}-${id}-name`, { subject, predicate: "name", object: `${observation.method} ${observation.status} ${observation.time}ms`, namedGraph, timestamp });
73
+ if (namedGraph !== OBSERVATION_GRAPH.EXTERNAL)
74
+ emitQuadObservation(world.eventLogger, `quad-http-${timestamp}-${id}-endpoint`, { subject, predicate: "endpoint", object: endpointPath, namedGraph, timestamp });
58
75
  }
59
76
  //# sourceMappingURL=http-observations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-observations.js","sourceRoot":"","sources":["../../src/lib/http-observations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,GAAW;IACtD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAChC,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,SAAS,GAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAyB,IAAI,IAAI,GAAG,EAAkB,CAAC;QACpH,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;IAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,WAAoC;IAClF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAChC,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAA0C,IAAI,IAAI,GAAG,EAAmC,CAAC;IACxJ,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC5B,MAAM,EAAE,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC9B,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAEzD,yEAAyE;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;QACrB,EAAE,EAAE,aAAa,SAAS,IAAI,EAAE,EAAE;QAClC,SAAS;QACT,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAgB;QACvB,IAAI,EAAE,UAAmB;QACzB,YAAY,EAAE,MAAe;QAC7B,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE;YACJ,eAAe,EAAE;gBACf,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,MAAM;gBACjB,MAAM,EAAE,WAAW,CAAC,IAAI;gBACxB,UAAU,EAAE,kBAAkB;aAC/B;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"http-observations.js","sourceRoot":"","sources":["../../src/lib/http-observations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Hypermedia concern catalog — canonical contract between server and SPA.
3
+ *
4
+ * Grounded in ActivityStreams / JSON-LD. Derived entirely from getConcerns domains
5
+ * with TDomainTopology: one declaration drives CRUD, JSON-LD context, and UI behaviour.
6
+ *
7
+ * StepDiscovery (step.list) embeds a ConcernCatalog so any client (shu, MCP, ...)
8
+ * receives machine-readable hypermedia metadata without a separate RPC call.
9
+ */
10
+ import { z } from "zod";
11
+ import type { TRegisteredDomain } from "./resources.js";
12
+ export declare const RelSchema: z.ZodEnum<{
13
+ [x: string]: string;
14
+ }>;
15
+ /** All vertex concerns emitted by a running server, keyed by vertex label. */
16
+ export declare const ConcernCatalogSchema: z.ZodObject<{
17
+ vertices: z.ZodRecord<z.ZodString, z.ZodObject<{
18
+ domainKey: z.ZodString;
19
+ label: z.ZodString;
20
+ idField: z.ZodString;
21
+ asType: z.ZodOptional<z.ZodString>;
22
+ jsonSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
23
+ properties: z.ZodRecord<z.ZodString, z.ZodObject<{
24
+ term: z.ZodString;
25
+ rel: z.ZodEnum<{
26
+ [x: string]: string;
27
+ }>;
28
+ mediaType: z.ZodOptional<z.ZodString>;
29
+ }, z.core.$strip>>;
30
+ edges: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
31
+ term: z.ZodString;
32
+ rel: z.ZodEnum<{
33
+ [x: string]: string;
34
+ }>;
35
+ target: z.ZodString;
36
+ }, z.core.$strip>>>;
37
+ }, z.core.$strip>>;
38
+ }, z.core.$strip>;
39
+ export type TConcernCatalog = z.infer<typeof ConcernCatalogSchema>;
40
+ /**
41
+ * Build a ConcernCatalog from world.domains after getConcerns has run.
42
+ * Non-vertex domains (no topology.vertexLabel) are skipped.
43
+ * Vertex domains are validated: id, properties, and valid rels are required.
44
+ */
45
+ export declare function buildConcernCatalog(domains: Record<string, TRegisteredDomain>): TConcernCatalog;
46
+ /** Rel-to-field lookup for resource types. Derived from topology at runtime. */
47
+ export type ResourceRels = {
48
+ types: string[];
49
+ field(type: string, rel: string): string | undefined;
50
+ idField(type: string): string;
51
+ publishedField(type: string): string | undefined;
52
+ nameField(type: string): string | undefined;
53
+ contentField(type: string): string | undefined;
54
+ fields(type: string): Record<string, string>;
55
+ };
56
+ /** Build ResourceRels from world.domains concern metadata. */
57
+ export declare function buildResourceRels(domains: Record<string, TRegisteredDomain>): ResourceRels;
58
+ /** Parse a value as epoch ms (ISO date string or number). */
59
+ export declare function parseTimestampValue(val: unknown): number | null;
60
+ /** Build JSON-LD context from domain topology. Derives URI mappings from domain property rels. */
61
+ export declare function getJsonLdContext(domains: Record<string, TRegisteredDomain>): Record<string, unknown>;
62
+ //# sourceMappingURL=hypermedia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypermedia.d.ts","sourceRoot":"","sources":["../../src/lib/hypermedia.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAwBxD,eAAO,MAAM,SAAS;;EAAoB,CAAC;AAmC3C,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;iBAE/B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMnE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,eAAe,CA8C/F;AAMD,gFAAgF;AAChF,MAAM,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACjD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C,CAAC;AAEF,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,YAAY,CAwC1F;AAED,6DAA6D;AAC7D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAO/D;AAqBD,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgCpG"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Hypermedia concern catalog — canonical contract between server and SPA.
3
+ *
4
+ * Grounded in ActivityStreams / JSON-LD. Derived entirely from getConcerns domains
5
+ * with TDomainTopology: one declaration drives CRUD, JSON-LD context, and UI behaviour.
6
+ *
7
+ * StepDiscovery (step.list) embeds a ConcernCatalog so any client (shu, MCP, ...)
8
+ * receives machine-readable hypermedia metadata without a separate RPC call.
9
+ */
10
+ import { z } from "zod";
11
+ import { getRel, getMediaType, edgeRel, REL_CONTEXT, LinkRelations, getRelRange } from "./resources.js";
12
+ /** Per-schema JSON-Schema memoization. `step.list` RPC calls buildConcernCatalog repeatedly; each
13
+ * domain's `z.toJSONSchema` traversal is stable per schema instance, so cache by identity. */
14
+ const jsonSchemaCache = new WeakMap();
15
+ function toJsonSchemaCached(schema) {
16
+ const hit = jsonSchemaCache.get(schema);
17
+ if (hit)
18
+ return hit;
19
+ try {
20
+ const js = z.toJSONSchema(schema);
21
+ jsonSchemaCache.set(schema, js);
22
+ return js;
23
+ }
24
+ catch {
25
+ const empty = {};
26
+ jsonSchemaCache.set(schema, empty);
27
+ return empty;
28
+ }
29
+ }
30
+ // ============================================================================
31
+ // Schemas (Zod → TypeScript, Zod → JSON Schema — single source of truth)
32
+ // ============================================================================
33
+ const relValues = Object.values(LinkRelations).map((lr) => lr.rel);
34
+ export const RelSchema = z.enum(relValues);
35
+ /**
36
+ * A single vertex property mapped to its ActivityStreams predicate.
37
+ * `mediaType` is present only when rel === 'content'.
38
+ */
39
+ const PropertyConcernSchema = z.object({
40
+ term: z.string(),
41
+ rel: RelSchema,
42
+ mediaType: z.string().optional(),
43
+ });
44
+ /** An outgoing edge with its ActivityStreams predicate and target vertex label. */
45
+ const EdgeConcernSchema = z.object({
46
+ term: z.string(),
47
+ rel: RelSchema,
48
+ target: z.string(),
49
+ });
50
+ /** Complete hypermedia description of a vertex type. */
51
+ const VertexConcernSchema = z.object({
52
+ domainKey: z.string(),
53
+ label: z.string(),
54
+ idField: z.string(),
55
+ /** ActivityStreams @type e.g. "as:Note" */
56
+ asType: z.string().optional(),
57
+ /** JSON Schema derived from the Zod domain schema at registration time. */
58
+ jsonSchema: z.record(z.string(), z.unknown()),
59
+ properties: z.record(z.string(), PropertyConcernSchema),
60
+ edges: z.record(z.string(), EdgeConcernSchema).default({}),
61
+ });
62
+ /** All vertex concerns emitted by a running server, keyed by vertex label. */
63
+ export const ConcernCatalogSchema = z.object({
64
+ vertices: z.record(z.string(), VertexConcernSchema),
65
+ });
66
+ // ============================================================================
67
+ // Builder
68
+ // ============================================================================
69
+ /**
70
+ * Build a ConcernCatalog from world.domains after getConcerns has run.
71
+ * Non-vertex domains (no topology.vertexLabel) are skipped.
72
+ * Vertex domains are validated: id, properties, and valid rels are required.
73
+ */
74
+ export function buildConcernCatalog(domains) {
75
+ const vertices = {};
76
+ for (const [domainKey, domain] of Object.entries(domains)) {
77
+ const topology = domain.topology;
78
+ if (!topology?.vertexLabel)
79
+ continue;
80
+ const label = topology.vertexLabel;
81
+ if (!topology.id)
82
+ throw new Error(`Vertex domain "${label}" (${domainKey}) is missing required "id" field`);
83
+ if (!topology.properties || Object.keys(topology.properties).length === 0)
84
+ throw new Error(`Vertex domain "${label}" (${domainKey}) has no properties`);
85
+ const hasIdentifier = Object.values(topology.properties).some((p) => getRel(p) === LinkRelations.IDENTIFIER.rel);
86
+ if (!hasIdentifier)
87
+ throw new Error(`Vertex domain "${label}" (${domainKey}) has no property with rel "${LinkRelations.IDENTIFIER.rel}"`);
88
+ const properties = {};
89
+ for (const [field, propDef] of Object.entries(topology.properties)) {
90
+ const rel = getRel(propDef);
91
+ if (!REL_CONTEXT[rel])
92
+ throw new Error(`Vertex domain "${label}" property "${field}" has unknown rel "${rel}"`);
93
+ const mediaType = getMediaType(propDef);
94
+ properties[field] = { term: REL_CONTEXT[rel], rel, ...(mediaType ? { mediaType } : {}) };
95
+ }
96
+ const edges = {};
97
+ for (const [edgeField, edgeDef] of Object.entries(topology.edges ?? {})) {
98
+ const rel = edgeDef.rel ?? edgeRel(edgeField);
99
+ if (!rel)
100
+ throw new Error(`Vertex domain "${label}" edge "${edgeField}" has no rel — add to EdgePredicates or provide explicit rel`);
101
+ if (!REL_CONTEXT[rel])
102
+ throw new Error(`Vertex domain "${label}" edge "${edgeField}" has unknown rel "${rel}"`);
103
+ edges[edgeField] = { term: REL_CONTEXT[rel], rel, target: edgeDef.range };
104
+ }
105
+ const jsonSchema = toJsonSchemaCached(domain.schema);
106
+ vertices[label] = VertexConcernSchema.parse({
107
+ domainKey,
108
+ label,
109
+ idField: topology.id,
110
+ ...(topology.type ? { asType: topology.type } : {}),
111
+ jsonSchema,
112
+ properties,
113
+ edges,
114
+ });
115
+ }
116
+ return { vertices };
117
+ }
118
+ /** Build ResourceRels from world.domains concern metadata. */
119
+ export function buildResourceRels(domains) {
120
+ const types = [];
121
+ const idFields = new Map();
122
+ const relMaps = new Map();
123
+ for (const domain of Object.values(domains)) {
124
+ const topology = domain.topology;
125
+ if (!topology?.vertexLabel)
126
+ continue;
127
+ const type = topology.vertexLabel;
128
+ types.push(type);
129
+ idFields.set(type, topology.id);
130
+ const rels = {};
131
+ for (const [field, def] of Object.entries(topology.properties ?? {})) {
132
+ rels[field] = getRel(def);
133
+ }
134
+ relMaps.set(type, rels);
135
+ }
136
+ const fieldByRel = (type, rel) => {
137
+ const rels = relMaps.get(type);
138
+ if (!rels)
139
+ return undefined;
140
+ for (const [field, r] of Object.entries(rels)) {
141
+ if (r === rel)
142
+ return field;
143
+ }
144
+ return undefined;
145
+ };
146
+ return {
147
+ types,
148
+ field: fieldByRel,
149
+ idField: (type) => {
150
+ const id = idFields.get(type);
151
+ if (!id)
152
+ throw new Error(`Unknown resource type: ${type}`);
153
+ return id;
154
+ },
155
+ publishedField: (type) => fieldByRel(type, LinkRelations.PUBLISHED.rel),
156
+ nameField: (type) => fieldByRel(type, LinkRelations.NAME.rel),
157
+ contentField: (type) => fieldByRel(type, LinkRelations.CONTENT.rel),
158
+ fields: (type) => relMaps.get(type) ?? {},
159
+ };
160
+ }
161
+ /** Parse a value as epoch ms (ISO date string or number). */
162
+ export function parseTimestampValue(val) {
163
+ if (typeof val === "number")
164
+ return val;
165
+ if (typeof val === "string") {
166
+ const d = new Date(val);
167
+ if (!Number.isNaN(d.getTime()))
168
+ return d.getTime();
169
+ }
170
+ return null;
171
+ }
172
+ // ============================================================================
173
+ // JSON-LD context — derived from domain topology
174
+ // ============================================================================
175
+ /**
176
+ * Map a rel's RDF range to its UI rendering category.
177
+ * iri → "item" (navigable link to another vertex)
178
+ * container → "select" (multi-valued structure; select-like control)
179
+ * literal → "filter" (scalar value; filter/text control)
180
+ *
181
+ * Unknown rels default to "filter" — the safest neutral rendering.
182
+ */
183
+ function linkRelFromSemantic(rel) {
184
+ const range = getRelRange(rel);
185
+ if (range === "iri")
186
+ return "item";
187
+ if (range === "container")
188
+ return "select";
189
+ return "filter";
190
+ }
191
+ /** Build JSON-LD context from domain topology. Derives URI mappings from domain property rels. */
192
+ export function getJsonLdContext(domains) {
193
+ const context = {
194
+ "@version": 1.1,
195
+ as: "https://www.w3.org/ns/activitystreams#",
196
+ foaf: "http://xmlns.com/foaf/0.1/",
197
+ dcterms: "http://purl.org/dc/terms/",
198
+ prov: "https://www.w3.org/ns/prov#",
199
+ sosa: "http://www.w3.org/ns/sosa/",
200
+ schema: "https://schema.org/",
201
+ otel: "https://opentelemetry.io/schemas/",
202
+ hbn: "https://haibun.dev/ns/",
203
+ haibun: "/ns/",
204
+ };
205
+ for (const domain of Object.values(domains)) {
206
+ const topology = domain.topology;
207
+ if (!topology?.vertexLabel)
208
+ continue;
209
+ for (const [prop, def] of Object.entries(topology.properties)) {
210
+ const rel = getRel(def);
211
+ const uri = REL_CONTEXT[rel] ?? `haibun:${prop}`;
212
+ const mediaType = getMediaType(def);
213
+ const linkRel = linkRelFromSemantic(rel);
214
+ const node = { "@id": uri, "haibun:rel": linkRel };
215
+ if (linkRel === "item")
216
+ node["@type"] = "@id";
217
+ if (mediaType)
218
+ node["as:mediaType"] = mediaType;
219
+ context[prop] = node;
220
+ }
221
+ for (const [edge, edgeDef] of Object.entries(topology.edges ?? {})) {
222
+ const rel = edgeDef.rel ?? edgeRel(edge);
223
+ context[edge] = { "@id": (rel && REL_CONTEXT[rel]) ?? `haibun:${edge}`, "@type": "@id", "haibun:rel": "item" };
224
+ }
225
+ }
226
+ return { "@context": context };
227
+ }
228
+ //# sourceMappingURL=hypermedia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypermedia.js","sourceRoot":"","sources":["../../src/lib/hypermedia.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { TStepperStep, TStepAction } from './defs.js';
2
- import { TStepValue } from '../schema/protocol.js';
1
+ import { TStepperStep, TStepAction } from "./execution.js";
2
+ import { TStepValue } from "../schema/protocol.js";
3
3
  export declare const TYPE_QUOTED = "q_";
4
4
  export declare const TYPE_ENV = "e_";
5
5
  export declare const TYPE_VAR = "b_";
@@ -1 +1 @@
1
- {"version":3,"file":"namedVars.d.ts","sourceRoot":"","sources":["../../src/lib/namedVars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAmB,MAAM,uBAAuB,CAAC;AAGpE,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CA+ElH,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,YAAY,MAAM,EAAE,YAAY,MAAM,EAAE,aAAa,MAAM,EAAE,MAAM,YAAY,gBAO9H,CAAC;AAUF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;EAG3D;AAED,eAAO,MAAM,QAAQ,GAAI,YAAY,MAAM,EAAE,GAAG,MAAM,EAAE,YAAY,MAAM,EAAE,aAAa,MAAM,EAAE,MAAM,YAAY,EAAE,gBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,gBAoD9J,CAAC;AAeF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM;;EAUhF"}
1
+ {"version":3,"file":"namedVars.d.ts","sourceRoot":"","sources":["../../src/lib/namedVars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAmB,MAAM,uBAAuB,CAAC;AAGpE,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CA2ElH,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC7B,MAAM,MAAM,EACZ,YAAY,MAAM,EAClB,YAAY,MAAM,EAClB,aAAa,MAAM,EACnB,MAAM,YAAY,gBAQlB,CAAC;AAUF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;EAG3D;AAED,eAAO,MAAM,QAAQ,GACpB,YAAY,MAAM,EAClB,GAAG,MAAM,EACT,YAAY,MAAM,EAClB,aAAa,MAAM,EACnB,MAAM,YAAY,EAClB,gBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,gBAuD1C,CAAC;AAeF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM;;EAUhF"}