wicked-crew 0.16.11 → 0.16.13

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 (341) hide show
  1. package/README.md +28 -8
  2. package/dist/api/artifact-outline.d.ts +64 -0
  3. package/dist/api/artifact-outline.d.ts.map +1 -0
  4. package/dist/api/artifact-outline.js +254 -0
  5. package/dist/api/artifact-outline.js.map +1 -0
  6. package/dist/api/beneath.d.ts +76 -0
  7. package/dist/api/beneath.d.ts.map +1 -0
  8. package/dist/api/beneath.js +214 -0
  9. package/dist/api/beneath.js.map +1 -0
  10. package/dist/api/capture.d.ts +2 -2
  11. package/dist/api/chat-citations.d.ts +25 -1
  12. package/dist/api/chat-citations.d.ts.map +1 -1
  13. package/dist/api/chat-citations.js +186 -61
  14. package/dist/api/chat-citations.js.map +1 -1
  15. package/dist/api/chat-context.d.ts +236 -0
  16. package/dist/api/chat-context.d.ts.map +1 -0
  17. package/dist/api/chat-context.js +808 -0
  18. package/dist/api/chat-context.js.map +1 -0
  19. package/dist/api/chat-history.d.ts +20 -0
  20. package/dist/api/chat-history.d.ts.map +1 -1
  21. package/dist/api/chat-history.js +46 -1
  22. package/dist/api/chat-history.js.map +1 -1
  23. package/dist/api/chat-proposals.d.ts +534 -0
  24. package/dist/api/chat-proposals.d.ts.map +1 -0
  25. package/dist/api/chat-proposals.js +1562 -0
  26. package/dist/api/chat-proposals.js.map +1 -0
  27. package/dist/api/chat-scope.d.ts +41 -0
  28. package/dist/api/chat-scope.d.ts.map +1 -1
  29. package/dist/api/chat-scope.js +87 -15
  30. package/dist/api/chat-scope.js.map +1 -1
  31. package/dist/api/chat-transcripts.d.ts +27 -2
  32. package/dist/api/chat-transcripts.d.ts.map +1 -1
  33. package/dist/api/chat-transcripts.js +105 -4
  34. package/dist/api/chat-transcripts.js.map +1 -1
  35. package/dist/api/diagnostics.d.ts +15 -0
  36. package/dist/api/diagnostics.d.ts.map +1 -1
  37. package/dist/api/diagnostics.js +56 -0
  38. package/dist/api/diagnostics.js.map +1 -1
  39. package/dist/api/elicitation-cache.d.ts +13 -0
  40. package/dist/api/elicitation-cache.d.ts.map +1 -1
  41. package/dist/api/elicitation-cache.js +12 -0
  42. package/dist/api/elicitation-cache.js.map +1 -1
  43. package/dist/api/eval-sample.d.ts +12 -12
  44. package/dist/api/frame-guard.d.ts +62 -0
  45. package/dist/api/frame-guard.d.ts.map +1 -0
  46. package/dist/api/frame-guard.js +97 -0
  47. package/dist/api/frame-guard.js.map +1 -0
  48. package/dist/api/governance-steering.d.ts +4 -4
  49. package/dist/api/multiscope.d.ts +3 -0
  50. package/dist/api/multiscope.d.ts.map +1 -1
  51. package/dist/api/multiscope.js +13 -0
  52. package/dist/api/multiscope.js.map +1 -1
  53. package/dist/api/needs.d.ts +6 -0
  54. package/dist/api/needs.d.ts.map +1 -1
  55. package/dist/api/needs.js +31 -4
  56. package/dist/api/needs.js.map +1 -1
  57. package/dist/api/product.d.ts.map +1 -1
  58. package/dist/api/product.js +13 -2
  59. package/dist/api/product.js.map +1 -1
  60. package/dist/api/project-aggregates.d.ts +6 -6
  61. package/dist/api/project-aggregates.d.ts.map +1 -1
  62. package/dist/api/project-aggregates.js +16 -24
  63. package/dist/api/project-aggregates.js.map +1 -1
  64. package/dist/api/requirements.d.ts +261 -6
  65. package/dist/api/requirements.d.ts.map +1 -1
  66. package/dist/api/requirements.js +344 -64
  67. package/dist/api/requirements.js.map +1 -1
  68. package/dist/api/routes.d.ts +156 -4
  69. package/dist/api/routes.d.ts.map +1 -1
  70. package/dist/api/routes.js +851 -78
  71. package/dist/api/routes.js.map +1 -1
  72. package/dist/api/run-brief.d.ts +78 -0
  73. package/dist/api/run-brief.d.ts.map +1 -0
  74. package/dist/api/run-brief.js +318 -0
  75. package/dist/api/run-brief.js.map +1 -0
  76. package/dist/api/run-files.d.ts.map +1 -1
  77. package/dist/api/run-files.js +5 -1
  78. package/dist/api/run-files.js.map +1 -1
  79. package/dist/api/run-timing-index.d.ts +27 -0
  80. package/dist/api/run-timing-index.d.ts.map +1 -1
  81. package/dist/api/run-timing-index.js +65 -0
  82. package/dist/api/run-timing-index.js.map +1 -1
  83. package/dist/api/seat-images.d.ts +102 -0
  84. package/dist/api/seat-images.d.ts.map +1 -0
  85. package/dist/api/seat-images.js +333 -0
  86. package/dist/api/seat-images.js.map +1 -0
  87. package/dist/api/server.d.ts +3 -0
  88. package/dist/api/server.d.ts.map +1 -1
  89. package/dist/api/server.js +265 -2
  90. package/dist/api/server.js.map +1 -1
  91. package/dist/api/steering-landing.d.ts +48 -1
  92. package/dist/api/steering-landing.d.ts.map +1 -1
  93. package/dist/api/steering-landing.js +116 -42
  94. package/dist/api/steering-landing.js.map +1 -1
  95. package/dist/api/system-snapshot.d.ts +51 -2
  96. package/dist/api/system-snapshot.d.ts.map +1 -1
  97. package/dist/api/system-snapshot.js +151 -15
  98. package/dist/api/system-snapshot.js.map +1 -1
  99. package/dist/api/testing.d.ts +4 -4
  100. package/dist/api/testing.js +2 -2
  101. package/dist/api/testing.js.map +1 -1
  102. package/dist/apps/spec.d.ts +3009 -0
  103. package/dist/apps/spec.d.ts.map +1 -0
  104. package/dist/apps/spec.js +870 -0
  105. package/dist/apps/spec.js.map +1 -0
  106. package/dist/campaigns/routes.js +1 -1
  107. package/dist/campaigns/routes.js.map +1 -1
  108. package/dist/cli/index.js +3 -3
  109. package/dist/cli/index.js.map +1 -1
  110. package/dist/core/adapter.d.ts +12 -0
  111. package/dist/core/adapter.d.ts.map +1 -1
  112. package/dist/core/adapter.js +36 -1
  113. package/dist/core/adapter.js.map +1 -1
  114. package/dist/core/deliver-text.d.ts.map +1 -1
  115. package/dist/core/deliver-text.js +22 -10
  116. package/dist/core/deliver-text.js.map +1 -1
  117. package/dist/core/estate-mcp-client.d.ts +7 -1
  118. package/dist/core/estate-mcp-client.d.ts.map +1 -1
  119. package/dist/core/estate-mcp-client.js +10 -2
  120. package/dist/core/estate-mcp-client.js.map +1 -1
  121. package/dist/core/exec.d.ts +12 -0
  122. package/dist/core/exec.d.ts.map +1 -1
  123. package/dist/core/exec.js +23 -0
  124. package/dist/core/exec.js.map +1 -1
  125. package/dist/core/reassign-refusal.d.ts.map +1 -1
  126. package/dist/core/reassign-refusal.js +23 -3
  127. package/dist/core/reassign-refusal.js.map +1 -1
  128. package/dist/core/repoPaths.d.ts +32 -7
  129. package/dist/core/repoPaths.d.ts.map +1 -1
  130. package/dist/core/repoPaths.js +56 -9
  131. package/dist/core/repoPaths.js.map +1 -1
  132. package/dist/core/requirements-graph-setting.d.ts +32 -0
  133. package/dist/core/requirements-graph-setting.d.ts.map +1 -0
  134. package/dist/core/requirements-graph-setting.js +84 -0
  135. package/dist/core/requirements-graph-setting.js.map +1 -0
  136. package/dist/core/run-boot-resume.d.ts +4 -1
  137. package/dist/core/run-boot-resume.d.ts.map +1 -1
  138. package/dist/core/run-boot-resume.js +6 -1
  139. package/dist/core/run-boot-resume.js.map +1 -1
  140. package/dist/core/run-identity.d.ts.map +1 -1
  141. package/dist/core/run-identity.js +6 -0
  142. package/dist/core/run-identity.js.map +1 -1
  143. package/dist/core/types.d.ts +14 -0
  144. package/dist/core/types.d.ts.map +1 -1
  145. package/dist/core/types.js.map +1 -1
  146. package/dist/decisions/chat-recorder.d.ts +14 -3
  147. package/dist/decisions/chat-recorder.d.ts.map +1 -1
  148. package/dist/decisions/chat-recorder.js +54 -9
  149. package/dist/decisions/chat-recorder.js.map +1 -1
  150. package/dist/editors/csp.d.ts +24 -4
  151. package/dist/editors/csp.d.ts.map +1 -1
  152. package/dist/editors/csp.js +35 -8
  153. package/dist/editors/csp.js.map +1 -1
  154. package/dist/editors/registry.d.ts +46 -21
  155. package/dist/editors/registry.d.ts.map +1 -1
  156. package/dist/editors/registry.js +13 -2
  157. package/dist/editors/registry.js.map +1 -1
  158. package/dist/editors/routes.d.ts +4 -1
  159. package/dist/editors/routes.d.ts.map +1 -1
  160. package/dist/editors/routes.js +30 -3
  161. package/dist/editors/routes.js.map +1 -1
  162. package/dist/editors/visuals.d.ts +51 -0
  163. package/dist/editors/visuals.d.ts.map +1 -0
  164. package/dist/editors/visuals.js +164 -0
  165. package/dist/editors/visuals.js.map +1 -0
  166. package/dist/editors/webrtc-guard.d.ts +94 -0
  167. package/dist/editors/webrtc-guard.d.ts.map +1 -0
  168. package/dist/editors/webrtc-guard.js +506 -0
  169. package/dist/editors/webrtc-guard.js.map +1 -0
  170. package/dist/inspect/reading.d.ts +110 -0
  171. package/dist/inspect/reading.d.ts.map +1 -0
  172. package/dist/inspect/reading.js +325 -0
  173. package/dist/inspect/reading.js.map +1 -0
  174. package/dist/inspect/routes.d.ts +14 -0
  175. package/dist/inspect/routes.d.ts.map +1 -0
  176. package/dist/inspect/routes.js +44 -0
  177. package/dist/inspect/routes.js.map +1 -0
  178. package/dist/inspect/service.d.ts +161 -0
  179. package/dist/inspect/service.d.ts.map +1 -0
  180. package/dist/inspect/service.js +466 -0
  181. package/dist/inspect/service.js.map +1 -0
  182. package/dist/interactive/bridge-pool.d.ts +11 -2
  183. package/dist/interactive/bridge-pool.d.ts.map +1 -1
  184. package/dist/interactive/bridge-pool.js +10 -1
  185. package/dist/interactive/bridge-pool.js.map +1 -1
  186. package/dist/interactive/doc-binding.d.ts +156 -0
  187. package/dist/interactive/doc-binding.d.ts.map +1 -0
  188. package/dist/interactive/doc-binding.js +277 -0
  189. package/dist/interactive/doc-binding.js.map +1 -0
  190. package/dist/interactive/doc-delete-routes.d.ts +3 -0
  191. package/dist/interactive/doc-delete-routes.d.ts.map +1 -1
  192. package/dist/interactive/doc-delete-routes.js +4 -0
  193. package/dist/interactive/doc-delete-routes.js.map +1 -1
  194. package/dist/interactive/draft-events.d.ts +89 -3
  195. package/dist/interactive/draft-events.d.ts.map +1 -1
  196. package/dist/interactive/draft-events.js +441 -30
  197. package/dist/interactive/draft-events.js.map +1 -1
  198. package/dist/interactive/draft-skill.d.ts +7 -0
  199. package/dist/interactive/draft-skill.d.ts.map +1 -1
  200. package/dist/interactive/draft-skill.js +10 -3
  201. package/dist/interactive/draft-skill.js.map +1 -1
  202. package/dist/interactive/edit-events.d.ts +2 -0
  203. package/dist/interactive/edit-events.d.ts.map +1 -1
  204. package/dist/interactive/edit-events.js +11 -0
  205. package/dist/interactive/edit-events.js.map +1 -1
  206. package/dist/interactive/proposal-create.d.ts +143 -0
  207. package/dist/interactive/proposal-create.d.ts.map +1 -0
  208. package/dist/interactive/proposal-create.js +318 -0
  209. package/dist/interactive/proposal-create.js.map +1 -0
  210. package/dist/interactive/proxy-routes.d.ts +60 -3
  211. package/dist/interactive/proxy-routes.d.ts.map +1 -1
  212. package/dist/interactive/proxy-routes.js +217 -3
  213. package/dist/interactive/proxy-routes.js.map +1 -1
  214. package/dist/interactive/source-packet.d.ts +126 -0
  215. package/dist/interactive/source-packet.d.ts.map +1 -0
  216. package/dist/interactive/source-packet.js +482 -0
  217. package/dist/interactive/source-packet.js.map +1 -0
  218. package/dist/learnings/estate.d.ts +16 -0
  219. package/dist/learnings/estate.d.ts.map +1 -0
  220. package/dist/learnings/estate.js +68 -0
  221. package/dist/learnings/estate.js.map +1 -0
  222. package/dist/learnings/extract.d.ts +56 -0
  223. package/dist/learnings/extract.d.ts.map +1 -0
  224. package/dist/learnings/extract.js +252 -0
  225. package/dist/learnings/extract.js.map +1 -0
  226. package/dist/learnings/recall.d.ts +43 -0
  227. package/dist/learnings/recall.d.ts.map +1 -0
  228. package/dist/learnings/recall.js +104 -0
  229. package/dist/learnings/recall.js.map +1 -0
  230. package/dist/learnings/service.d.ts +183 -0
  231. package/dist/learnings/service.d.ts.map +1 -0
  232. package/dist/learnings/service.js +571 -0
  233. package/dist/learnings/service.js.map +1 -0
  234. package/dist/mcp/ask-server.d.ts.map +1 -1
  235. package/dist/mcp/ask-server.js +37 -4
  236. package/dist/mcp/ask-server.js.map +1 -1
  237. package/dist/mcp/broker.d.ts +12 -1
  238. package/dist/mcp/broker.d.ts.map +1 -1
  239. package/dist/mcp/broker.js +24 -5
  240. package/dist/mcp/broker.js.map +1 -1
  241. package/dist/mcp/invoke.d.ts +26 -2
  242. package/dist/mcp/invoke.d.ts.map +1 -1
  243. package/dist/mcp/invoke.js +51 -5
  244. package/dist/mcp/invoke.js.map +1 -1
  245. package/dist/persona/routes.d.ts +92 -0
  246. package/dist/persona/routes.d.ts.map +1 -0
  247. package/dist/persona/routes.js +69 -0
  248. package/dist/persona/routes.js.map +1 -0
  249. package/dist/persona/store.d.ts +104 -0
  250. package/dist/persona/store.d.ts.map +1 -0
  251. package/dist/persona/store.js +176 -0
  252. package/dist/persona/store.js.map +1 -0
  253. package/dist/persona/voice.d.ts +4 -0
  254. package/dist/persona/voice.d.ts.map +1 -0
  255. package/dist/persona/voice.js +58 -0
  256. package/dist/persona/voice.js.map +1 -0
  257. package/dist/projects/routes.d.ts +2 -2
  258. package/dist/setup/known.d.ts +56 -0
  259. package/dist/setup/known.d.ts.map +1 -0
  260. package/dist/setup/known.js +159 -0
  261. package/dist/setup/known.js.map +1 -0
  262. package/dist/setup/routes.d.ts +13 -0
  263. package/dist/setup/routes.d.ts.map +1 -0
  264. package/dist/setup/routes.js +20 -0
  265. package/dist/setup/routes.js.map +1 -0
  266. package/dist/standing-orders/history.d.ts +2 -0
  267. package/dist/standing-orders/history.d.ts.map +1 -1
  268. package/dist/standing-orders/history.js +1 -0
  269. package/dist/standing-orders/history.js.map +1 -1
  270. package/dist/studio/assets/WickedSans-Regular-fb698rcD.woff2 +0 -0
  271. package/dist/studio/assets/WickedSans-SemiBold-CD53n1AC.woff2 +0 -0
  272. package/dist/studio/assets/WickedScript-Regular-CY5juO6I.woff2 +0 -0
  273. package/dist/studio/assets/WickedSerif-Regular-mdPEjaVZ.woff2 +0 -0
  274. package/dist/studio/assets/index-BUZ_-Syk.css +32 -0
  275. package/dist/studio/assets/index-u4O_7N-b.js +986 -0
  276. package/dist/studio/editors/wicked-deck/editor.json +6 -1
  277. package/dist/studio/editors/wicked-deck/icon.svg +1 -0
  278. package/dist/studio/editors/wicked-deck/index.html +1 -1
  279. package/dist/studio/editors/wicked-doc/editor.json +6 -1
  280. package/dist/studio/editors/wicked-doc/icon.svg +1 -0
  281. package/dist/studio/editors/wicked-doc/index.html +1 -1
  282. package/dist/studio/editors/wicked-insights/editor.json +6 -1
  283. package/dist/studio/editors/wicked-insights/icon.svg +1 -0
  284. package/dist/studio/editors/wicked-insights/index.html +1 -1
  285. package/dist/studio/editors/wicked-page/editor.json +6 -1
  286. package/dist/studio/editors/wicked-page/icon.svg +1 -0
  287. package/dist/studio/editors/wicked-page/index.html +1 -1
  288. package/dist/studio/editors/wicked-video/editor.json +6 -1
  289. package/dist/studio/editors/wicked-video/icon.svg +1 -0
  290. package/dist/studio/editors/wicked-video/index.html +1 -1
  291. package/dist/studio/index.html +2 -2
  292. package/dist/studio/testid-inventory.json +5155 -2707
  293. package/dist/voice/dashboard.d.ts +376 -0
  294. package/dist/voice/dashboard.d.ts.map +1 -0
  295. package/dist/voice/dashboard.js +92 -0
  296. package/dist/voice/dashboard.js.map +1 -0
  297. package/dist/voice/inject-input.d.ts +51 -0
  298. package/dist/voice/inject-input.d.ts.map +1 -0
  299. package/dist/voice/inject-input.js +126 -0
  300. package/dist/voice/inject-input.js.map +1 -0
  301. package/dist/voice/routes.d.ts +41 -0
  302. package/dist/voice/routes.d.ts.map +1 -0
  303. package/dist/voice/routes.js +116 -0
  304. package/dist/voice/routes.js.map +1 -0
  305. package/dist/voice/service.d.ts +177 -0
  306. package/dist/voice/service.d.ts.map +1 -0
  307. package/dist/voice/service.js +400 -0
  308. package/dist/voice/service.js.map +1 -0
  309. package/dist/workflow-catalog/build.d.ts +35 -0
  310. package/dist/workflow-catalog/build.d.ts.map +1 -0
  311. package/dist/workflow-catalog/build.js +229 -0
  312. package/dist/workflow-catalog/build.js.map +1 -0
  313. package/dist/workflow-catalog/catalog-data.d.ts +36 -0
  314. package/dist/workflow-catalog/catalog-data.d.ts.map +1 -0
  315. package/dist/workflow-catalog/catalog-data.js +430 -0
  316. package/dist/workflow-catalog/catalog-data.js.map +1 -0
  317. package/dist/working-doc/event-lines.d.ts +76 -0
  318. package/dist/working-doc/event-lines.d.ts.map +1 -0
  319. package/dist/working-doc/event-lines.js +247 -0
  320. package/dist/working-doc/event-lines.js.map +1 -0
  321. package/dist/working-doc/routes.d.ts +1 -1
  322. package/dist/working-doc/routes.d.ts.map +1 -1
  323. package/dist/working-doc/routes.js +2 -1
  324. package/dist/working-doc/routes.js.map +1 -1
  325. package/dist/working-doc/sections.d.ts +3 -1
  326. package/dist/working-doc/sections.d.ts.map +1 -1
  327. package/dist/working-doc/sections.js +4 -2
  328. package/dist/working-doc/sections.js.map +1 -1
  329. package/dist/working-doc/service.d.ts +66 -1
  330. package/dist/working-doc/service.d.ts.map +1 -1
  331. package/dist/working-doc/service.js +298 -22
  332. package/dist/working-doc/service.js.map +1 -1
  333. package/dist/working-doc/store.d.ts +8 -2
  334. package/dist/working-doc/store.d.ts.map +1 -1
  335. package/dist/working-doc/store.js.map +1 -1
  336. package/endpoint-manifest.json +205 -2
  337. package/package.json +5 -4
  338. package/workflows/distill-learnings.json +27 -0
  339. package/workflows/inspect-unit.json +27 -0
  340. package/dist/studio/assets/index-B-f_VEL2.css +0 -32
  341. package/dist/studio/assets/index-DhkxIK-0.js +0 -845
@@ -15,7 +15,10 @@
15
15
  * the token an "allow" would add. The host fetches it before `host.hello` and enforces it.
16
16
  * - `GET /editors/:id/:version/entry`: the bundle, with exactly the §8.2 headers. The file path comes
17
17
  * from the registry record — never from the URL — and the bytes are re-hashed on every serve: a
18
- * changed file answers 409 `bundle_hash_mismatch`, never the changed bundle.
18
+ * changed file answers 409 `bundle_hash_mismatch`, never the changed bundle. The pinned bytes are
19
+ * served with the WebRTC prelude at the start of each inline script (`webrtc-guard.ts`); a third-party
20
+ * bundle with more than 200 inline script elements (repeats count: each gains the prelude) answers 409
21
+ * `bundle_too_many_scripts`.
19
22
  *
20
23
  * Human-only means `actor.kind === 'human'` (the DC `remember()` check). Under `auth=off` every
21
24
  * same-uid caller is the local human actor — the honest limit §6.4 states; refusing a worker token
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/editors/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAC;AAI7E,OAAO,KAAK,EAAS,eAAe,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAE1G,OAAO,EAAiC,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChH,OAAO,EAA6B,cAAc,EAAmD,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAI9I,qGAAqG;AACrG,MAAM,WAAW,mBAAmB;IAClC,qBAAqB,CAAC,IAAI,OAAO,CAAC;IAClC,oBAAoB,CAAC,CAAC,OAAO,EAAE;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClC,gGAAgG;IAChG,oBAAoB,CAAC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACpD,qBAAqB,CAAC,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AACpD,kHAAkH;AAClH,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAElG;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,GAAG,EAAE,SAAS,MAAM,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,eAAe,CAAC;IAC3B,sGAAsG;IACtG,WAAW,EAAE,iBAAiB,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAqKvF;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,YAAY,CA0BhH"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/editors/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAC;AAI7E,OAAO,KAAK,EAAS,eAAe,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAE1G,OAAO,EAAiC,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChH,OAAO,EAA6B,cAAc,EAAmD,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAK9I,qGAAqG;AACrG,MAAM,WAAW,mBAAmB;IAClC,qBAAqB,CAAC,IAAI,OAAO,CAAC;IAClC,oBAAoB,CAAC,CAAC,OAAO,EAAE;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClC,gGAAgG;IAChG,oBAAoB,CAAC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACpD,qBAAqB,CAAC,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AACpD,kHAAkH;AAClH,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAElG;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,GAAG,EAAE,SAAS,MAAM,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,eAAe,CAAC;IAC3B,sGAAsG;IACtG,WAAW,EAAE,iBAAiB,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAqKvF;AAeD,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,YAAY,CAmChH"}
@@ -15,7 +15,10 @@
15
15
  * the token an "allow" would add. The host fetches it before `host.hello` and enforces it.
16
16
  * - `GET /editors/:id/:version/entry`: the bundle, with exactly the §8.2 headers. The file path comes
17
17
  * from the registry record — never from the URL — and the bytes are re-hashed on every serve: a
18
- * changed file answers 409 `bundle_hash_mismatch`, never the changed bundle.
18
+ * changed file answers 409 `bundle_hash_mismatch`, never the changed bundle. The pinned bytes are
19
+ * served with the WebRTC prelude at the start of each inline script (`webrtc-guard.ts`); a third-party
20
+ * bundle with more than 200 inline script elements (repeats count: each gains the prelude) answers 409
21
+ * `bundle_too_many_scripts`.
19
22
  *
20
23
  * Human-only means `actor.kind === 'human'` (the DC `remember()` check). Under `auth=off` every
21
24
  * same-uid caller is the local human actor — the honest limit §6.4 states; refusing a worker token
@@ -27,6 +30,7 @@ import { LOCAL_ACTOR, trustAtLeast } from '../api/auth.js';
27
30
  import { bundleHeaders } from './csp.js';
28
31
  import { installPack, PackInstallError } from './pack-install.js';
29
32
  import { EDITOR_ID, EDITOR_VERSION, EditorRegistry, HOST_BUNDLE_CAP_BYTES, notRealEntry, readCapped } from './registry.js';
33
+ import { guardBundle, MAX_INLINE_SCRIPTS } from './webrtc-guard.js';
30
34
  const V = '/api/v1';
31
35
  /** The approvals ledger the engine reads (core `editor_gate.rs` GRANTS_LEDGER). */
32
36
  export const EDITOR_GRANTS_LEDGER = 'EDITOR-GRANTS';
@@ -221,6 +225,20 @@ export function registerEditorRoutes(app, deps) {
221
225
  return serveBundle(record, reply, deps.log);
222
226
  });
223
227
  }
228
+ /** The guarded form of each pinned bundle, built once per hash (a few entries: one per installed editor build). */
229
+ const guardedByHash = new Map();
230
+ const GUARDED_KEPT = 32;
231
+ function guardedFor(record, buf) {
232
+ const key = `${record.firstParty ? '1' : '3'}:${record.sha256}`;
233
+ const kept = guardedByHash.get(key);
234
+ if (kept !== undefined)
235
+ return kept;
236
+ const built = guardBundle(buf, record.firstParty ? Number.POSITIVE_INFINITY : MAX_INLINE_SCRIPTS);
237
+ if (guardedByHash.size >= GUARDED_KEPT)
238
+ guardedByHash.delete(guardedByHash.keys().next().value);
239
+ guardedByHash.set(key, built);
240
+ return built;
241
+ }
224
242
  /** Re-hash on every serve: a bundle that changed on disk is refused, never served. */
225
243
  export function serveBundle(record, reply, log) {
226
244
  // The same fence as discovery, re-applied per serve (codex r1): an entry swapped for a link after
@@ -247,8 +265,17 @@ export function serveBundle(record, reply, log) {
247
265
  log?.(`[editors] ${record.manifest.id}@${record.manifest.version}: bundle hash changed on disk (pinned ${record.sha256.slice(0, 12)}…, found ${actual.slice(0, 12)}…); refused`);
248
266
  return reply.code(409).send({ code: 'bundle_hash_mismatch', error: `the ${record.manifest.id} bundle on disk no longer matches its pinned hash; restart the daemon to re-pin it` });
249
267
  }
250
- for (const [k, v] of Object.entries(bundleHeaders(record)))
268
+ // The prelude goes into every inline script, and a third-party bundle may run only those (`webrtc-guard.ts`). Each
269
+ // script gains the prelude and a hash in the policy header: past the budget crew refuses, and says why, rather than
270
+ // build a body many times the pinned size or a header the browser refuses. The bytes are pinned by their hash, so
271
+ // the guarded form is kept per hash and built once.
272
+ const guarded = guardedFor(record, buf);
273
+ if (guarded.tooMany !== undefined) {
274
+ log?.(`[editors] ${record.manifest.id}@${record.manifest.version}: ${guarded.tooMany} inline scripts, over ${MAX_INLINE_SCRIPTS}; refused`);
275
+ return reply.code(409).send({ code: 'bundle_too_many_scripts', error: `the ${record.manifest.id} bundle has ${guarded.tooMany} inline scripts; an editor bundle may have at most ${MAX_INLINE_SCRIPTS} (merge them into fewer scripts)` });
276
+ }
277
+ for (const [k, v] of Object.entries(bundleHeaders(record, guarded.scriptHashes)))
251
278
  reply.header(k, v);
252
- return reply.type('text/html; charset=utf-8').send(buf);
279
+ return reply.type('text/html; charset=utf-8').send(guarded.body);
253
280
  }
254
281
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/editors/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/editors/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * How an editor looks on studio's Plugins page (program DES-LEARN §2): one line (`description`) and its `visuals`
3
+ * — an icon on its colour, a preview image (light and dark), and whether studio may draw a live preview.
4
+ *
5
+ * The manifest names image FILES beside it, in the studio bundle's `editors/<id>/` directory (studio-bundle editors
6
+ * only for now: garden's pack gate refuses the keys, and a pack's images would need descriptor-anchored reads). The
7
+ * registry reads each once, bounded, never through a link, and puts it on the wire as a `data:`
8
+ * URL: no path and no remote URL ever reaches the browser, and an image is never served from crew's own origin (an SVG
9
+ * opened there could run script; as an `<img src="data:…">` it cannot).
10
+ *
11
+ * Cosmetic and fail-open: a missing, oversized, linked or malformed image is dropped with a logged reason, and the
12
+ * editor itself is still served.
13
+ */
14
+ import type { EditorVisuals } from '../core/types.js';
15
+ /** The most an icon file may weigh (DES-LEARN §1.2: SVG ≤ 16 KB). */
16
+ export declare const ICON_CAP_BYTES: number;
17
+ /** The most a preview image may weigh (DES-LEARN §1.2: ≤ 200 KB). */
18
+ export declare const PREVIEW_CAP_BYTES: number;
19
+ /** The most characters of an editor's one line. */
20
+ export declare const DESCRIPTION_CHARS = 160;
21
+ /** The manifest's `visuals`, as declared (file names, not yet read). */
22
+ export interface DeclaredVisuals {
23
+ icon?: string;
24
+ color?: string;
25
+ preview?: string | {
26
+ light?: string;
27
+ dark?: string;
28
+ };
29
+ live?: boolean;
30
+ }
31
+ /** A declared `visuals` value, strictly: anything malformed is dropped (field by field), never refused. */
32
+ export declare function declaredVisuals(raw: unknown): DeclaredVisuals | undefined;
33
+ /** A one-line description, or undefined. */
34
+ export declare function declaredDescription(raw: unknown): string | undefined;
35
+ /**
36
+ * Read one image the manifest names, relative to `root`: inside it, every directory on the way and the file itself
37
+ * real (never a link), within `cap`, and of the type its name says. A `data:` URL, or null with the reason logged.
38
+ */
39
+ export declare function imageDataUrl(root: string, name: string, cap: number, why: (m: string) => void): string | null;
40
+ /**
41
+ * Read at most `cap` bytes of a file, never through a link (codex on crew#1234): the open refuses a link swapped in
42
+ * for the file after the check (O_NOFOLLOW where the platform has it), and the open file must be the regular file
43
+ * that was checked (same device and inode). Null = over the cap, or not the checked file.
44
+ */
45
+ export declare function readNoFollow(path: string, cap: number, checked?: {
46
+ ino: number;
47
+ dev: number;
48
+ }): Buffer | null;
49
+ /** Resolve the declared visuals against the files beside the manifest. Undefined when nothing survives. */
50
+ export declare function resolveVisuals(root: string, declared: DeclaredVisuals | undefined, log: (m: string) => void): EditorVisuals | undefined;
51
+ //# sourceMappingURL=visuals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visuals.d.ts","sourceRoot":"","sources":["../../src/editors/visuals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,qEAAqE;AACrE,eAAO,MAAM,cAAc,QAAY,CAAC;AACxC,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,QAAa,CAAC;AAC5C,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAMrC,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,2GAA2G;AAC3G,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAmBzE;AAED,4CAA4C;AAC5C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIpE;AAUD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,CAuB7G;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAoB,GAAG,MAAM,GAAG,IAAI,CAiB9H;AAED,2GAA2G;AAC3G,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,aAAa,GAAG,SAAS,CAgBvI"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * How an editor looks on studio's Plugins page (program DES-LEARN §2): one line (`description`) and its `visuals`
3
+ * — an icon on its colour, a preview image (light and dark), and whether studio may draw a live preview.
4
+ *
5
+ * The manifest names image FILES beside it, in the studio bundle's `editors/<id>/` directory (studio-bundle editors
6
+ * only for now: garden's pack gate refuses the keys, and a pack's images would need descriptor-anchored reads). The
7
+ * registry reads each once, bounded, never through a link, and puts it on the wire as a `data:`
8
+ * URL: no path and no remote URL ever reaches the browser, and an image is never served from crew's own origin (an SVG
9
+ * opened there could run script; as an `<img src="data:…">` it cannot).
10
+ *
11
+ * Cosmetic and fail-open: a missing, oversized, linked or malformed image is dropped with a logged reason, and the
12
+ * editor itself is still served.
13
+ */
14
+ import { closeSync, constants, fstatSync, lstatSync, openSync, readSync } from 'node:fs';
15
+ import { extname, isAbsolute, join, relative, resolve, sep } from 'node:path';
16
+ import { notRealEntry } from './registry.js';
17
+ /** The most an icon file may weigh (DES-LEARN §1.2: SVG ≤ 16 KB). */
18
+ export const ICON_CAP_BYTES = 16 * 1024;
19
+ /** The most a preview image may weigh (DES-LEARN §1.2: ≤ 200 KB). */
20
+ export const PREVIEW_CAP_BYTES = 200 * 1024;
21
+ /** The most characters of an editor's one line. */
22
+ export const DESCRIPTION_CHARS = 160;
23
+ const FILE = /^[A-Za-z0-9][A-Za-z0-9._/-]{0,120}$/u;
24
+ const HEX = /^#[0-9a-fA-F]{6}$/u;
25
+ const MIME = { '.svg': 'image/svg+xml', '.png': 'image/png', '.webp': 'image/webp' };
26
+ /** A declared `visuals` value, strictly: anything malformed is dropped (field by field), never refused. */
27
+ export function declaredVisuals(raw) {
28
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
29
+ return undefined;
30
+ const r = raw;
31
+ const file = (v) => (typeof v === 'string' && FILE.test(v) && !v.split('/').includes('..') && MIME[extname(v).toLowerCase()] !== undefined ? v : undefined);
32
+ const out = {};
33
+ const icon = file(r['icon']);
34
+ if (icon !== undefined)
35
+ out.icon = icon;
36
+ if (typeof r['color'] === 'string' && HEX.test(r['color']))
37
+ out.color = r['color'];
38
+ const pv = r['preview'];
39
+ if (typeof pv === 'string') {
40
+ const p = file(pv);
41
+ if (p !== undefined)
42
+ out.preview = p;
43
+ }
44
+ else if (typeof pv === 'object' && pv !== null && !Array.isArray(pv)) {
45
+ const light = file(pv['light']);
46
+ const dark = file(pv['dark']);
47
+ if (light !== undefined || dark !== undefined)
48
+ out.preview = { ...(light !== undefined ? { light } : {}), ...(dark !== undefined ? { dark } : {}) };
49
+ }
50
+ if (r['live'] === true)
51
+ out.live = true;
52
+ return Object.keys(out).length > 0 ? out : undefined;
53
+ }
54
+ /** A one-line description, or undefined. */
55
+ export function declaredDescription(raw) {
56
+ if (typeof raw !== 'string')
57
+ return undefined;
58
+ const line = raw.replace(/\s+/gu, ' ').trim();
59
+ return line === '' ? undefined : line.slice(0, DESCRIPTION_CHARS);
60
+ }
61
+ /** Does the file's head match its type? (A PNG named `.webp`, or HTML named `.svg`, is not an image of that type.) */
62
+ function looksLike(buf, ext) {
63
+ if (ext === '.png')
64
+ return buf.subarray(0, 8).equals(Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]));
65
+ if (ext === '.webp')
66
+ return buf.subarray(0, 4).toString('latin1') === 'RIFF' && buf.subarray(8, 12).toString('latin1') === 'WEBP';
67
+ const head = buf.subarray(0, 512).toString('utf8').replace(/^/u, '').trimStart();
68
+ return /^(?:<\?xml[^>]*>\s*)?(?:<!--[\s\S]*?-->\s*)*<svg[\s>]/iu.test(head);
69
+ }
70
+ /**
71
+ * Read one image the manifest names, relative to `root`: inside it, every directory on the way and the file itself
72
+ * real (never a link), within `cap`, and of the type its name says. A `data:` URL, or null with the reason logged.
73
+ */
74
+ export function imageDataUrl(root, name, cap, why) {
75
+ const path = resolve(root, name);
76
+ const rel = relative(resolve(root), path);
77
+ if (rel === '' || rel.startsWith('..') || isAbsolute(rel)) {
78
+ why(`${name} is outside its directory`);
79
+ return null;
80
+ }
81
+ let at = resolve(root);
82
+ for (const part of rel.split(sep).slice(0, -1)) {
83
+ at = join(at, part);
84
+ const p = notRealEntry(at, 'dir');
85
+ if (p !== null) {
86
+ why(`${name}: directory ${part} is ${p}`);
87
+ return null;
88
+ }
89
+ }
90
+ const problem = notRealEntry(path, 'file');
91
+ if (problem !== null) {
92
+ why(`${name} is ${problem}`);
93
+ return null;
94
+ }
95
+ let buf;
96
+ try {
97
+ buf = readNoFollow(path, cap);
98
+ }
99
+ catch (err) {
100
+ why(`${name} is unreadable (${err instanceof Error ? err.code ?? err.message : String(err)})`);
101
+ return null;
102
+ }
103
+ if (buf === null) {
104
+ why(`${name} is over its ${cap}-byte cap, or changed while it was read`);
105
+ return null;
106
+ }
107
+ const ext = extname(name).toLowerCase();
108
+ if (!looksLike(buf, ext)) {
109
+ why(`${name} is not a ${ext.slice(1)} image`);
110
+ return null;
111
+ }
112
+ return `data:${MIME[ext]};base64,${buf.toString('base64')}`;
113
+ }
114
+ /**
115
+ * Read at most `cap` bytes of a file, never through a link (codex on crew#1234): the open refuses a link swapped in
116
+ * for the file after the check (O_NOFOLLOW where the platform has it), and the open file must be the regular file
117
+ * that was checked (same device and inode). Null = over the cap, or not the checked file.
118
+ */
119
+ export function readNoFollow(path, cap, checked = lstatSync(path)) {
120
+ const fd = openSync(path, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
121
+ try {
122
+ const st = fstatSync(fd);
123
+ if (!st.isFile() || st.ino !== checked.ino || st.dev !== checked.dev || st.size > cap)
124
+ return null;
125
+ const buf = Buffer.alloc(cap + 1);
126
+ let n = 0;
127
+ for (;;) {
128
+ const got = readSync(fd, buf, n, buf.length - n, null);
129
+ if (got === 0)
130
+ break;
131
+ n += got;
132
+ if (n > cap)
133
+ return null;
134
+ }
135
+ return buf.subarray(0, n);
136
+ }
137
+ finally {
138
+ closeSync(fd);
139
+ }
140
+ }
141
+ /** Resolve the declared visuals against the files beside the manifest. Undefined when nothing survives. */
142
+ export function resolveVisuals(root, declared, log) {
143
+ if (declared === undefined)
144
+ return undefined;
145
+ const out = {};
146
+ if (declared.icon !== undefined) {
147
+ const icon = imageDataUrl(root, declared.icon, ICON_CAP_BYTES, log);
148
+ if (icon !== null)
149
+ out.icon = icon;
150
+ }
151
+ if (declared.color !== undefined)
152
+ out.color = declared.color;
153
+ if (declared.preview !== undefined) {
154
+ const files = typeof declared.preview === 'string' ? { light: declared.preview } : declared.preview;
155
+ const light = files.light !== undefined ? imageDataUrl(root, files.light, PREVIEW_CAP_BYTES, log) : null;
156
+ const dark = files.dark !== undefined ? imageDataUrl(root, files.dark, PREVIEW_CAP_BYTES, log) : null;
157
+ if (light !== null || dark !== null)
158
+ out.preview = { ...(light !== null ? { light } : {}), ...(dark !== null ? { dark } : {}) };
159
+ }
160
+ if (declared.live === true)
161
+ out.live = true;
162
+ return Object.keys(out).length > 0 ? out : undefined;
163
+ }
164
+ //# sourceMappingURL=visuals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visuals.js","sourceRoot":"","sources":["../../src/editors/visuals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * No WebRTC in an editor frame.
3
+ *
4
+ * An editor bundle's policy says `connect-src 'none'` (`csp.ts`), which stops fetch, XHR, WebSocket, EventSource and
5
+ * beacons, but no browser applies `connect-src` to WebRTC. A script in the frame could open an `RTCPeerConnection` with
6
+ * a STUN or TURN server of its choosing, and ICE then sends UDP there (Chromium ignores `webrtc 'block'`). A third-party
7
+ * editor could carry what it reads out of the artifact that way.
8
+ *
9
+ * So crew puts {@link WEBRTC_PRELUDE} at the start of every inline script of every bundle it serves (after the
10
+ * script's hashbang and its directive prologue: those are inert, and moving them would turn strict mode off; a
11
+ * directive ended by automatic semicolon insertion is kept too, with crew's own `;` before the prelude). The
12
+ * prelude defines each WebRTC global as a non-writable, non-configurable `undefined` before any of the editor's own
13
+ * statements run. It has no `try`: if it cannot do that it throws, and the rest of that script never runs. It names no
14
+ * global a script can shadow and calls nothing a script can define first. A module's own `function window(){}` is
15
+ * bound before its first statement runs, so the prelude checks that `window` really is the window. It takes `Object`
16
+ * from an object literal, and its failure path throws a string (not `new TypeError`, which a hoisted declaration
17
+ * could replace).
18
+ *
19
+ * For a third-party editor, the bundle's `script-src` is then exactly the hashes {@link guardBundle} returns, with no
20
+ * `'unsafe-inline'`. A new JavaScript realm could otherwise bring the constructors back: a `srcdoc` child, a
21
+ * `javascript:` URL, or a `blob:`/`data:` document the frame navigates itself to. Every one of those documents inherits
22
+ * the bundle's policy, so the only scripts that can run in them are copies of crew's prefixed scripts, and the prelude
23
+ * runs first there too. `javascript:` URLs, inline event handlers and new script text are refused.
24
+ *
25
+ * The scanner below finds inline scripts the way an HTML parser does, closely enough for real bundles. For a
26
+ * third-party bundle its accuracy is not what keeps the guard sound: every hash crew issues is of text that crew itself
27
+ * built with the prelude first (after an inert prologue). A script the scanner misreads gets a hash the browser doesn't
28
+ * compute, so it doesn't run. The editor breaks visibly, and nothing runs without the prelude. A first-party bundle
29
+ * keeps `'unsafe-inline'` (it is studio's own code), so there the prelude is only where the scanner finds a script.
30
+ *
31
+ * Every script gains the prelude and a hash in one response header, so a third-party bundle may hold at most
32
+ * {@link MAX_INLINE_SCRIPTS} inline scripts; past that crew refuses to serve it, with the reason.
33
+ */
34
+ /** The WebRTC globals Chromium, Firefox and Safari expose, by name. The prelude also takes any other `RTC*`/`webkitRTC*`
35
+ * global the browser has, so a new interface is covered without a crew release. */
36
+ export declare const WEBRTC_GLOBALS: readonly ["RTCPeerConnection", "webkitRTCPeerConnection", "mozRTCPeerConnection", "RTCDataChannel", "RTCIceTransport", "RTCDtlsTransport", "RTCSctpTransport", "RTCRtpSender", "RTCRtpReceiver", "RTCRtpTransceiver", "RTCIceCandidate", "RTCSessionDescription", "RTCCertificate"];
37
+ /** The prelude's one failure message (thrown as a string: see the module comment). */
38
+ export declare const WEBRTC_PRELUDE_REFUSAL = "WebRTC is not available in an editor frame";
39
+ /**
40
+ * The prelude: one line of ES5, ending in a newline so the editor's own first line stays its own statement. It holds no
41
+ * `<` at all, so it can never end, open or escape the `<script>` it sits in. `w` must be the window itself (a module's
42
+ * hoisted `function window(){}` is a function, a `var window` is undefined, a `let`/`class` is not yet initialized).
43
+ * It takes the listed names always, and any other `RTC*`/`webkitRTC*`/`mozRTC*` global the browser defines (an
44
+ * interface object is configurable; a script's own `var RTCConfig` is not, and is left alone).
45
+ */
46
+ export declare const WEBRTC_PRELUDE: string;
47
+ /** The most inline scripts a third-party bundle may hold: each gains the prelude and is one hash in the policy header. */
48
+ export declare const MAX_INLINE_SCRIPTS = 200;
49
+ /**
50
+ * Where the prelude goes in a script's text, read the way a JavaScript lexer reads it: past a hashbang line and a
51
+ * directive prologue (string-literal statements, each ended by its own `;` or by automatic semicolon insertion), with
52
+ * whitespace and comments between. No regular expression does this: a backtracking pattern can be made to end a
53
+ * comment early or late. Here a block comment ends at its first `*\/` and a line comment at the end of its line, exactly
54
+ * as in JavaScript, so nothing before the place found is code. `semicolon` says the last directive ended by insertion,
55
+ * so the prelude must be written after a `;` of its own.
56
+ */
57
+ export declare function prologueEnd(text: string): {
58
+ at: number;
59
+ afterHashbang: boolean;
60
+ semicolon: boolean;
61
+ };
62
+ /** `text` with the prelude before its first statement (see {@link prologueEnd}): after a `;` of its own when the last
63
+ * directive ended by insertion, and on its own line after a lone hashbang. */
64
+ export declare function withPrelude(text: string): string;
65
+ /** One served bundle: its bytes with the prelude in every inline script, and those scripts' sha256 (base64). */
66
+ export interface GuardedBundle {
67
+ body: Buffer;
68
+ /** base64 sha256 of each prefixed script's text, as the browser hashes it; in document order. */
69
+ scriptHashes: string[];
70
+ /** Set (and nothing built) when the bundle holds more running inline scripts than the limit allowed. */
71
+ tooMany?: number;
72
+ }
73
+ /** One inline script the bundle holds: where its text is, and whether the browser runs it as JavaScript. */
74
+ export interface InlineScript {
75
+ start: number;
76
+ end: number;
77
+ runs: boolean;
78
+ }
79
+ /** An attribute value as the parser hands it on: numeric character references, and the named ones a script type can
80
+ * use. One it does not know stays as written, so the script reads as a data block and is refused, never run unguarded. */
81
+ export declare function decodeAttribute(v: string): string;
82
+ /**
83
+ * The inline scripts of `html` (already newline-normalized), in document order. A tokenizer cut down to what decides
84
+ * where a script's text is: comments, doctypes and bogus comments, quoted attribute values, raw-text elements, and
85
+ * the script-data escape states (`<!--`, `<script`, `-->` inside a script).
86
+ */
87
+ export declare function inlineScripts(html: string): InlineScript[];
88
+ /**
89
+ * The bundle as crew serves it: the prelude first in every inline script that runs, and those scripts' hashes.
90
+ * Newlines are normalized first (the HTML parser turns CRLF and CR into LF before anything else, so the DOM is the same
91
+ * and a script's text is what crew hashes). A NUL in a script's text reaches the parser as U+FFFD, so crew writes it so.
92
+ */
93
+ export declare function guardBundle(bytes: Buffer, maxScripts?: number): GuardedBundle;
94
+ //# sourceMappingURL=webrtc-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtc-guard.d.ts","sourceRoot":"","sources":["../../src/editors/webrtc-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH;oFACoF;AACpF,eAAO,MAAM,cAAc,qRAcjB,CAAC;AAEX,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,+CAA+C,CAAC;AAEnF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAKgF,CAAC;AAE5G,0HAA0H;AAC1H,eAAO,MAAM,kBAAkB,MAAM,CAAC;AA4BtC;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CA4FpG;AAED;+EAC+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,gHAAgH;AAChH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wGAAwG;IACxG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD,4GAA4G;AAC5G,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACf;AAID;2HAC2H;AAC3H,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAOjD;AAeD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CA0J1D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAA2B,GAAG,aAAa,CAgB/F"}