@yadsh/dsh-qa-surface 0.5.0 → 0.6.0

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 (374) hide show
  1. package/README.md +194 -9
  2. package/compatibility.json +10 -1
  3. package/cordis.patch.yml +9 -0
  4. package/lib/account-remotes.js +10 -0
  5. package/lib/account-remotes.js.map +1 -1
  6. package/lib/accounts/errors.js.map +1 -1
  7. package/lib/accounts/file.js.map +1 -1
  8. package/lib/accounts/store.js +22 -0
  9. package/lib/accounts/store.js.map +1 -1
  10. package/lib/client/QaAccountsController.js +29 -0
  11. package/lib/client/QaAccountsController.js.map +1 -1
  12. package/lib/client/QaSessionController.js +168 -48
  13. package/lib/client/QaSessionController.js.map +1 -1
  14. package/lib/client/QaSurface.js +125 -56
  15. package/lib/client/QaSurface.js.map +1 -1
  16. package/lib/client/QaSurfaceGuard.js +96 -0
  17. package/lib/client/QaSurfaceGuard.js.map +1 -0
  18. package/lib/client/QaTranscriptAdapter.js +11 -5
  19. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  20. package/lib/client/components/QaChangelog.js +31 -0
  21. package/lib/client/components/QaChangelog.js.map +1 -1
  22. package/lib/client/components/QaComposer.js +1 -1
  23. package/lib/client/components/QaComposer.js.map +1 -1
  24. package/lib/client/components/QaHeader.js +2 -8
  25. package/lib/client/components/QaHeader.js.map +1 -1
  26. package/lib/client/components/QaMessage.js +20 -7
  27. package/lib/client/components/QaMessage.js.map +1 -1
  28. package/lib/client/components/QaModal.js +24 -6
  29. package/lib/client/components/QaModal.js.map +1 -1
  30. package/lib/client/components/QaSidebar.js +2 -6
  31. package/lib/client/components/QaSidebar.js.map +1 -1
  32. package/lib/client/components/QaSourcesPanel.js +6 -5
  33. package/lib/client/components/QaSourcesPanel.js.map +1 -1
  34. package/lib/client/components/QaWidthHandle.js +21 -1
  35. package/lib/client/components/QaWidthHandle.js.map +1 -1
  36. package/lib/client/components/surface-utils.js +2 -0
  37. package/lib/client/components/surface-utils.js.map +1 -1
  38. package/lib/client/index.js +72 -24
  39. package/lib/client/index.js.map +1 -1
  40. package/lib/client/panels/PanelHost.js +209 -0
  41. package/lib/client/panels/PanelHost.js.map +1 -0
  42. package/lib/client/panels/PanelLauncher.js +39 -0
  43. package/lib/client/panels/PanelLauncher.js.map +1 -0
  44. package/lib/client/panels/contract.js +2 -0
  45. package/lib/client/panels/contract.js.map +1 -0
  46. package/lib/client/panels/index.js +2 -0
  47. package/lib/client/panels/index.js.map +1 -0
  48. package/lib/client/panels/registry.js +171 -0
  49. package/lib/client/panels/registry.js.map +1 -0
  50. package/lib/client/project-session-state.js +3 -0
  51. package/lib/client/project-session-state.js.map +1 -1
  52. package/lib/client/settings/card.js +2 -2
  53. package/lib/client/settings/card.js.map +1 -1
  54. package/lib/client/settings/sections/accounts.js +3 -1
  55. package/lib/client/settings/sections/accounts.js.map +1 -1
  56. package/lib/client/settings/sections/documents.js +88 -0
  57. package/lib/client/settings/sections/documents.js.map +1 -0
  58. package/lib/client/settings/sections/interface.js +2 -0
  59. package/lib/client/settings/sections/interface.js.map +1 -1
  60. package/lib/client/settings/sections.js +1 -0
  61. package/lib/client/settings/sections.js.map +1 -1
  62. package/lib/client/settings-extensions/contract.js +2 -0
  63. package/lib/client/settings-extensions/contract.js.map +1 -0
  64. package/lib/client/settings-extensions/index.js +2 -0
  65. package/lib/client/settings-extensions/index.js.map +1 -0
  66. package/lib/client/settings-extensions/registry.js +63 -0
  67. package/lib/client/settings-extensions/registry.js.map +1 -0
  68. package/lib/client/settlement.js +51 -5
  69. package/lib/client/settlement.js.map +1 -1
  70. package/lib/client/source-preview.js +24 -0
  71. package/lib/client/source-preview.js.map +1 -0
  72. package/lib/client/styles.js +157 -32
  73. package/lib/client/styles.js.map +1 -1
  74. package/lib/client/subagent-codenames.js +109 -0
  75. package/lib/client/subagent-codenames.js.map +1 -0
  76. package/lib/client/types.js +1 -0
  77. package/lib/client/types.js.map +1 -1
  78. package/lib/client/user-settings/GeneralSettingsPage.js +13 -0
  79. package/lib/client/user-settings/GeneralSettingsPage.js.map +1 -0
  80. package/lib/client/user-settings/ProfileSettingsPage.js +59 -0
  81. package/lib/client/user-settings/ProfileSettingsPage.js.map +1 -0
  82. package/lib/client/user-settings/SkillCatalog.js +23 -0
  83. package/lib/client/user-settings/SkillCatalog.js.map +1 -0
  84. package/lib/client/user-settings/SkillEditor.js +89 -0
  85. package/lib/client/user-settings/SkillEditor.js.map +1 -0
  86. package/lib/client/user-settings/SkillToolPicker.js +58 -0
  87. package/lib/client/user-settings/SkillToolPicker.js.map +1 -0
  88. package/lib/client/user-settings/SkillsSettingsPage.js +171 -0
  89. package/lib/client/user-settings/SkillsSettingsPage.js.map +1 -0
  90. package/lib/client/user-settings/StartersSettingsPage.js +78 -0
  91. package/lib/client/user-settings/StartersSettingsPage.js.map +1 -0
  92. package/lib/client/user-settings/UserSettingsDialog.js +50 -0
  93. package/lib/client/user-settings/UserSettingsDialog.js.map +1 -0
  94. package/lib/client/user-settings/copy.js +84 -0
  95. package/lib/client/user-settings/copy.js.map +1 -0
  96. package/lib/client/user-settings/draft.js +127 -0
  97. package/lib/client/user-settings/draft.js.map +1 -0
  98. package/lib/client/user-settings/fields.js +24 -0
  99. package/lib/client/user-settings/fields.js.map +1 -0
  100. package/lib/client.js +5467 -1379
  101. package/lib/client.js.map +1 -1
  102. package/lib/config-resolvers/accounts.js +30 -0
  103. package/lib/config-resolvers/accounts.js.map +1 -1
  104. package/lib/config-resolvers/defaults.js +23 -0
  105. package/lib/config-resolvers/defaults.js.map +1 -1
  106. package/lib/config-resolvers/tools.js +37 -0
  107. package/lib/config-resolvers/tools.js.map +1 -0
  108. package/lib/config-resolvers/ui.js +2 -0
  109. package/lib/config-resolvers/ui.js.map +1 -1
  110. package/lib/config.js +288 -0
  111. package/lib/config.js.map +1 -1
  112. package/lib/documents/artifacts/ids.js +43 -0
  113. package/lib/documents/artifacts/ids.js.map +1 -0
  114. package/lib/documents/artifacts/manifest.js +66 -0
  115. package/lib/documents/artifacts/manifest.js.map +1 -0
  116. package/lib/documents/artifacts/store.js +169 -0
  117. package/lib/documents/artifacts/store.js.map +1 -0
  118. package/lib/documents/capabilities.js +93 -0
  119. package/lib/documents/capabilities.js.map +1 -0
  120. package/lib/documents/config.js +302 -0
  121. package/lib/documents/config.js.map +1 -0
  122. package/lib/documents/defaults.js +78 -0
  123. package/lib/documents/defaults.js.map +1 -0
  124. package/lib/documents/errors.js +101 -0
  125. package/lib/documents/errors.js.map +1 -0
  126. package/lib/documents/index.js +80 -0
  127. package/lib/documents/index.js.map +1 -0
  128. package/lib/documents/inspect/facts.js +161 -0
  129. package/lib/documents/inspect/facts.js.map +1 -0
  130. package/lib/documents/inspect/zip.js +108 -0
  131. package/lib/documents/inspect/zip.js.map +1 -0
  132. package/lib/documents/markdown/directives.js +135 -0
  133. package/lib/documents/markdown/directives.js.map +1 -0
  134. package/lib/documents/markdown/frontmatter.js +35 -0
  135. package/lib/documents/markdown/frontmatter.js.map +1 -0
  136. package/lib/documents/markdown/normalize.js +113 -0
  137. package/lib/documents/markdown/normalize.js.map +1 -0
  138. package/lib/documents/orchestrator/assets.js +243 -0
  139. package/lib/documents/orchestrator/assets.js.map +1 -0
  140. package/lib/documents/orchestrator/convert-document.js +186 -0
  141. package/lib/documents/orchestrator/convert-document.js.map +1 -0
  142. package/lib/documents/orchestrator/create-document.js +292 -0
  143. package/lib/documents/orchestrator/create-document.js.map +1 -0
  144. package/lib/documents/orchestrator/extract-document.js +162 -0
  145. package/lib/documents/orchestrator/extract-document.js.map +1 -0
  146. package/lib/documents/orchestrator/inspect-document.js +89 -0
  147. package/lib/documents/orchestrator/inspect-document.js.map +1 -0
  148. package/lib/documents/orchestrator/runtime-deps.js +59 -0
  149. package/lib/documents/orchestrator/runtime-deps.js.map +1 -0
  150. package/lib/documents/orchestrator/scope.js +132 -0
  151. package/lib/documents/orchestrator/scope.js.map +1 -0
  152. package/lib/documents/providers/docling.js +247 -0
  153. package/lib/documents/providers/docling.js.map +1 -0
  154. package/lib/documents/providers/libreoffice.js +130 -0
  155. package/lib/documents/providers/libreoffice.js.map +1 -0
  156. package/lib/documents/providers/markitdown.js +89 -0
  157. package/lib/documents/providers/markitdown.js.map +1 -0
  158. package/lib/documents/providers/pandoc.js +161 -0
  159. package/lib/documents/providers/pandoc.js.map +1 -0
  160. package/lib/documents/providers/process.js +164 -0
  161. package/lib/documents/providers/process.js.map +1 -0
  162. package/lib/documents/providers/registry.js +152 -0
  163. package/lib/documents/providers/registry.js.map +1 -0
  164. package/lib/documents/providers/shared.js +75 -0
  165. package/lib/documents/providers/shared.js.map +1 -0
  166. package/lib/documents/runtime.js +114 -0
  167. package/lib/documents/runtime.js.map +1 -0
  168. package/lib/documents/security/file-types.js +188 -0
  169. package/lib/documents/security/file-types.js.map +1 -0
  170. package/lib/documents/security/limits.js +78 -0
  171. package/lib/documents/security/limits.js.map +1 -0
  172. package/lib/documents/security/mime.js +43 -0
  173. package/lib/documents/security/mime.js.map +1 -0
  174. package/lib/documents/security/paths.js +133 -0
  175. package/lib/documents/security/paths.js.map +1 -0
  176. package/lib/documents/templates/registry.js +147 -0
  177. package/lib/documents/templates/registry.js.map +1 -0
  178. package/lib/documents/templates/resolver.js +59 -0
  179. package/lib/documents/templates/resolver.js.map +1 -0
  180. package/lib/documents/tools/convert.js +125 -0
  181. package/lib/documents/tools/convert.js.map +1 -0
  182. package/lib/documents/tools/create.js +187 -0
  183. package/lib/documents/tools/create.js.map +1 -0
  184. package/lib/documents/tools/index.js +41 -0
  185. package/lib/documents/tools/index.js.map +1 -0
  186. package/lib/documents/tools/inspect.js +135 -0
  187. package/lib/documents/tools/inspect.js.map +1 -0
  188. package/lib/documents/tools/shared.js +88 -0
  189. package/lib/documents/tools/shared.js.map +1 -0
  190. package/lib/documents/tools/to-markdown.js +125 -0
  191. package/lib/documents/tools/to-markdown.js.map +1 -0
  192. package/lib/documents/types.js +12 -0
  193. package/lib/documents/types.js.map +1 -0
  194. package/lib/index.js +225 -20
  195. package/lib/index.js.map +1 -1
  196. package/lib/integration-principals.js +22 -0
  197. package/lib/integration-principals.js.map +1 -0
  198. package/lib/lockdown-policy.js +15 -3
  199. package/lib/lockdown-policy.js.map +1 -1
  200. package/lib/personal-skills/errors.js +9 -0
  201. package/lib/personal-skills/errors.js.map +1 -0
  202. package/lib/personal-skills/host.js +80 -0
  203. package/lib/personal-skills/host.js.map +1 -0
  204. package/lib/personal-skills/index.js +10 -0
  205. package/lib/personal-skills/index.js.map +1 -0
  206. package/lib/personal-skills/paths.js +127 -0
  207. package/lib/personal-skills/paths.js.map +1 -0
  208. package/lib/personal-skills/provider.js +109 -0
  209. package/lib/personal-skills/provider.js.map +1 -0
  210. package/lib/personal-skills/remotes.js +40 -0
  211. package/lib/personal-skills/remotes.js.map +1 -0
  212. package/lib/personal-skills/service.js +686 -0
  213. package/lib/personal-skills/service.js.map +1 -0
  214. package/lib/personal-skills/skill-file.js +278 -0
  215. package/lib/personal-skills/skill-file.js.map +1 -0
  216. package/lib/personal-skills/skill-format.js +202 -0
  217. package/lib/personal-skills/skill-format.js.map +1 -0
  218. package/lib/personal-skills/watcher.js +96 -0
  219. package/lib/personal-skills/watcher.js.map +1 -0
  220. package/lib/profile.js +6 -4
  221. package/lib/profile.js.map +1 -1
  222. package/lib/prompt-notes.js +19 -0
  223. package/lib/prompt-notes.js.map +1 -1
  224. package/lib/provenance/file-preview.js +68 -21
  225. package/lib/provenance/file-preview.js.map +1 -1
  226. package/lib/provenance/host-store.js +44 -11
  227. package/lib/provenance/host-store.js.map +1 -1
  228. package/lib/provenance/index.js +1 -0
  229. package/lib/provenance/index.js.map +1 -1
  230. package/lib/provenance/normalize.js +3 -1
  231. package/lib/provenance/normalize.js.map +1 -1
  232. package/lib/provenance/snapshot-store.js +154 -0
  233. package/lib/provenance/snapshot-store.js.map +1 -0
  234. package/lib/qa-tools/activation-detector.js +53 -0
  235. package/lib/qa-tools/activation-detector.js.map +1 -0
  236. package/lib/qa-tools/activation-manager.js +111 -0
  237. package/lib/qa-tools/activation-manager.js.map +1 -0
  238. package/lib/qa-tools/catalog.js +108 -0
  239. package/lib/qa-tools/catalog.js.map +1 -0
  240. package/lib/qa-tools/durable-marker.js +115 -0
  241. package/lib/qa-tools/durable-marker.js.map +1 -0
  242. package/lib/qa-tools/index.js +83 -0
  243. package/lib/qa-tools/index.js.map +1 -0
  244. package/lib/qa-tools/lifecycle.js +64 -0
  245. package/lib/qa-tools/lifecycle.js.map +1 -0
  246. package/lib/qa-tools/types.js +2 -0
  247. package/lib/qa-tools/types.js.map +1 -0
  248. package/lib/resolve-config.js +5 -0
  249. package/lib/resolve-config.js.map +1 -1
  250. package/lib/secure-session.js +35 -3
  251. package/lib/secure-session.js.map +1 -1
  252. package/lib/starters.js +117 -0
  253. package/lib/starters.js.map +1 -0
  254. package/lib/typert.host.js +767 -22
  255. package/lib/typert.remote-client.d.ts +17 -1
  256. package/lib/typert.remote-client.js +609 -17
  257. package/lib/types/account-remotes.d.ts +3 -1
  258. package/lib/types/accounts/errors.d.ts +1 -1
  259. package/lib/types/accounts/file.d.ts +10 -0
  260. package/lib/types/accounts/store.d.ts +7 -1
  261. package/lib/types/client/QaAccountsController.d.ts +7 -1
  262. package/lib/types/client/QaSessionController.d.ts +12 -0
  263. package/lib/types/client/QaSurface.d.ts +14 -4
  264. package/lib/types/client/QaSurfaceGuard.d.ts +27 -0
  265. package/lib/types/client/QaTranscriptAdapter.d.ts +7 -0
  266. package/lib/types/client/components/QaComposer.d.ts +3 -1
  267. package/lib/types/client/components/QaHeader.d.ts +3 -1
  268. package/lib/types/client/components/QaModal.d.ts +5 -4
  269. package/lib/types/client/components/QaSidebar.d.ts +8 -11
  270. package/lib/types/client/components/QaWidthHandle.d.ts +13 -0
  271. package/lib/types/client/index.d.ts +1 -0
  272. package/lib/types/client/panels/PanelHost.d.ts +18 -0
  273. package/lib/types/client/panels/PanelLauncher.d.ts +5 -0
  274. package/lib/types/client/panels/contract.d.ts +83 -0
  275. package/lib/types/client/panels/index.d.ts +3 -0
  276. package/lib/types/client/panels/registry.d.ts +40 -0
  277. package/lib/types/client/project-session-state.d.ts +5 -0
  278. package/lib/types/client/settings/sections/documents.d.ts +13 -0
  279. package/lib/types/client/settings/sections.d.ts +1 -0
  280. package/lib/types/client/settings-extensions/contract.d.ts +32 -0
  281. package/lib/types/client/settings-extensions/index.d.ts +3 -0
  282. package/lib/types/client/settings-extensions/registry.d.ts +15 -0
  283. package/lib/types/client/settlement.d.ts +41 -5
  284. package/lib/types/client/source-preview.d.ts +8 -0
  285. package/lib/types/client/styles.d.ts +2 -0
  286. package/lib/types/client/subagent-codenames.d.ts +18 -0
  287. package/lib/types/client/types.d.ts +35 -3
  288. package/lib/types/client/user-settings/GeneralSettingsPage.d.ts +14 -0
  289. package/lib/types/client/user-settings/ProfileSettingsPage.d.ts +18 -0
  290. package/lib/types/client/user-settings/SkillCatalog.d.ts +16 -0
  291. package/lib/types/client/user-settings/SkillEditor.d.ts +42 -0
  292. package/lib/types/client/user-settings/SkillToolPicker.d.ts +17 -0
  293. package/lib/types/client/user-settings/SkillsSettingsPage.d.ts +15 -0
  294. package/lib/types/client/user-settings/StartersSettingsPage.d.ts +14 -0
  295. package/lib/types/client/user-settings/UserSettingsDialog.d.ts +43 -0
  296. package/lib/types/client/user-settings/copy.d.ts +25 -0
  297. package/lib/types/client/user-settings/draft.d.ts +51 -0
  298. package/lib/types/client/user-settings/fields.d.ts +43 -0
  299. package/lib/types/config-resolvers/tools.d.ts +6 -0
  300. package/lib/types/documents/artifacts/ids.d.ts +14 -0
  301. package/lib/types/documents/artifacts/manifest.d.ts +32 -0
  302. package/lib/types/documents/artifacts/store.d.ts +67 -0
  303. package/lib/types/documents/capabilities.d.ts +32 -0
  304. package/lib/types/documents/config.d.ts +27 -0
  305. package/lib/types/documents/defaults.d.ts +161 -0
  306. package/lib/types/documents/errors.d.ts +42 -0
  307. package/lib/types/documents/index.d.ts +63 -0
  308. package/lib/types/documents/inspect/facts.d.ts +43 -0
  309. package/lib/types/documents/inspect/zip.d.ts +28 -0
  310. package/lib/types/documents/markdown/directives.d.ts +39 -0
  311. package/lib/types/documents/markdown/frontmatter.d.ts +15 -0
  312. package/lib/types/documents/markdown/normalize.d.ts +30 -0
  313. package/lib/types/documents/orchestrator/assets.d.ts +55 -0
  314. package/lib/types/documents/orchestrator/convert-document.d.ts +25 -0
  315. package/lib/types/documents/orchestrator/create-document.d.ts +18 -0
  316. package/lib/types/documents/orchestrator/extract-document.d.ts +24 -0
  317. package/lib/types/documents/orchestrator/inspect-document.d.ts +12 -0
  318. package/lib/types/documents/orchestrator/runtime-deps.d.ts +43 -0
  319. package/lib/types/documents/orchestrator/scope.d.ts +52 -0
  320. package/lib/types/documents/providers/docling.d.ts +54 -0
  321. package/lib/types/documents/providers/libreoffice.d.ts +40 -0
  322. package/lib/types/documents/providers/markitdown.d.ts +28 -0
  323. package/lib/types/documents/providers/pandoc.d.ts +42 -0
  324. package/lib/types/documents/providers/process.d.ts +54 -0
  325. package/lib/types/documents/providers/registry.d.ts +68 -0
  326. package/lib/types/documents/providers/shared.d.ts +27 -0
  327. package/lib/types/documents/runtime.d.ts +59 -0
  328. package/lib/types/documents/security/file-types.d.ts +39 -0
  329. package/lib/types/documents/security/limits.d.ts +24 -0
  330. package/lib/types/documents/security/mime.d.ts +13 -0
  331. package/lib/types/documents/security/paths.d.ts +38 -0
  332. package/lib/types/documents/templates/registry.d.ts +50 -0
  333. package/lib/types/documents/templates/resolver.d.ts +30 -0
  334. package/lib/types/documents/tools/convert.d.ts +9 -0
  335. package/lib/types/documents/tools/create.d.ts +14 -0
  336. package/lib/types/documents/tools/index.d.ts +33 -0
  337. package/lib/types/documents/tools/inspect.d.ts +9 -0
  338. package/lib/types/documents/tools/shared.d.ts +77 -0
  339. package/lib/types/documents/tools/to-markdown.d.ts +12 -0
  340. package/lib/types/documents/types.d.ts +294 -0
  341. package/lib/types/index.d.ts +75 -3
  342. package/lib/types/integration-principals.d.ts +9 -0
  343. package/lib/types/lockdown-policy.d.ts +12 -2
  344. package/lib/types/personal-skills/errors.d.ts +11 -0
  345. package/lib/types/personal-skills/host.d.ts +42 -0
  346. package/lib/types/personal-skills/index.d.ts +10 -0
  347. package/lib/types/personal-skills/paths.d.ts +39 -0
  348. package/lib/types/personal-skills/provider.d.ts +33 -0
  349. package/lib/types/personal-skills/remotes.d.ts +35 -0
  350. package/lib/types/personal-skills/service.d.ts +131 -0
  351. package/lib/types/personal-skills/skill-file.d.ts +64 -0
  352. package/lib/types/personal-skills/skill-format.d.ts +100 -0
  353. package/lib/types/personal-skills/watcher.d.ts +39 -0
  354. package/lib/types/profile.d.ts +13 -0
  355. package/lib/types/prompt-notes.d.ts +9 -0
  356. package/lib/types/provenance/file-preview.d.ts +47 -4
  357. package/lib/types/provenance/host-store.d.ts +7 -1
  358. package/lib/types/provenance/index.d.ts +1 -0
  359. package/lib/types/provenance/snapshot-store.d.ts +23 -0
  360. package/lib/types/qa-tools/activation-detector.d.ts +29 -0
  361. package/lib/types/qa-tools/activation-manager.d.ts +47 -0
  362. package/lib/types/qa-tools/catalog.d.ts +40 -0
  363. package/lib/types/qa-tools/durable-marker.d.ts +16 -0
  364. package/lib/types/qa-tools/index.d.ts +40 -0
  365. package/lib/types/qa-tools/lifecycle.d.ts +44 -0
  366. package/lib/types/qa-tools/types.d.ts +45 -0
  367. package/lib/types/secure-session.d.ts +24 -2
  368. package/lib/types/starters.d.ts +45 -0
  369. package/lib/types/types.d.ts +202 -3
  370. package/package.json +24 -11
  371. package/scripts/repair-session-events.mjs +260 -0
  372. package/lib/client/components/QaProfile.js +0 -64
  373. package/lib/client/components/QaProfile.js.map +0 -1
  374. package/lib/types/client/components/QaProfile.d.ts +0 -25
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Template resolution (§12.3).
3
+ *
4
+ * ```text
5
+ * requested template
6
+ * ↓ (absent)
7
+ * project default
8
+ * ↓ (absent)
9
+ * builtin default
10
+ * ```
11
+ *
12
+ * A requested template that does not exist is an error, never a silent
13
+ * fallback: a report rendered in the wrong corporate layout is worse than a
14
+ * failed call the operator can read. The builtin `default` name resolves
15
+ * without a registry entry — it means "the document backend's own defaults".
16
+ */
17
+ import { DocumentError } from "../errors.js";
18
+ import { BUILTIN_TEMPLATE_NAME, } from "./registry.js";
19
+ export function resolveTemplate(registry, requested, projectDefault) {
20
+ if (requested !== undefined && requested.trim() !== "") {
21
+ const name = requested.trim();
22
+ const template = registry.templates.get(name);
23
+ if (template !== undefined) {
24
+ return {
25
+ resolved: { name, template, source: "requested" },
26
+ warnings: [],
27
+ };
28
+ }
29
+ if (name === BUILTIN_TEMPLATE_NAME) {
30
+ return { resolved: { name, source: "builtin" }, warnings: [] };
31
+ }
32
+ throw new DocumentError("TEMPLATE_NOT_FOUND", `template "${name}" is not registered (available: ${[
33
+ ...[registry.templates.keys()],
34
+ ]
35
+ .sort()
36
+ .join(", ")})`, { details: { template: name } });
37
+ }
38
+ const name = projectDefault.trim() === ""
39
+ ? BUILTIN_TEMPLATE_NAME
40
+ : projectDefault.trim();
41
+ if (name === BUILTIN_TEMPLATE_NAME) {
42
+ return { resolved: { name, source: "builtin" }, warnings: [] };
43
+ }
44
+ const template = registry.templates.get(name);
45
+ if (template === undefined) {
46
+ throw new DocumentError("TEMPLATE_NOT_FOUND", `the configured default template "${name}" is not registered`, { details: { template: name } });
47
+ }
48
+ return {
49
+ resolved: { name, template, source: "project-default" },
50
+ warnings: [
51
+ {
52
+ code: "TEMPLATE_DEFAULTED",
53
+ message: `no template was requested; the deployment default "${name}" was applied`,
54
+ details: { template: name },
55
+ },
56
+ ],
57
+ };
58
+ }
59
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/documents/templates/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EACL,qBAAqB,GAGtB,MAAM,eAAe,CAAC;AAcvB,MAAM,UAAU,eAAe,CAC7B,QAA0B,EAC1B,SAA6B,EAC7B,cAAsB;IAEtB,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;gBACL,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;gBACjD,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACnC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,aAAa,CACrB,oBAAoB,EACpB,aAAa,IAAI,mCAAmC;YAClD,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SAC/B;aACE,IAAI,EAAE;aACN,IAAI,CAAC,IAAI,CAAC,GAAG,EAChB,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAChC,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GACR,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE;QAC1B,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACnC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACjE,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,aAAa,CACrB,oBAAoB,EACpB,oCAAoC,IAAI,qBAAqB,EAC7D,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAChC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE;QACvD,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,sDAAsD,IAAI,eAAe;gBAClF,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC5B;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * `document_convert` — one supported format to another (§10, §34).
3
+ */
4
+ import { defineTool } from "@deepseek-ai/dsh-tools";
5
+ import { CONVERSION_ROUTES } from "../orchestrator/convert-document.js";
6
+ import { ARTIFACT_NOTE, fileParameter, renderFiles, renderWarning, requireDocumentScope, toolFiles, toolWarnings, warningsSchema, } from "./shared.js";
7
+ export const DOCUMENT_CONVERT_TOOL = "document_convert";
8
+ function describeRoutes() {
9
+ return CONVERSION_ROUTES.map(([from, to]) => `${from} → ${to}`).join(", ");
10
+ }
11
+ export function createDocumentConvertTool(options) {
12
+ return defineTool({
13
+ name: DOCUMENT_CONVERT_TOOL,
14
+ description: [
15
+ "Convert a supported document to another supported document format using the managed document pipeline.",
16
+ `Supported routes: ${describeRoutes()}.`,
17
+ "Markdown targets extract the text; DOCX → PDF keeps the Word layout. Anything else is refused instead of being attempted.",
18
+ ].join(" "),
19
+ parameters: {
20
+ file: fileParameter(),
21
+ targetFormat: {
22
+ type: "string",
23
+ required: true,
24
+ enum: ["docx", "pdf", "md"],
25
+ description: "Format to produce.",
26
+ },
27
+ template: {
28
+ type: "string",
29
+ description: "Template name, for Markdown → DOCX/PDF conversions.",
30
+ },
31
+ filename: {
32
+ type: "string",
33
+ description: "File name of the produced document, without a directory.",
34
+ },
35
+ outputFilename: {
36
+ type: "string",
37
+ description: "Name of the extracted Markdown file when the target is md.",
38
+ },
39
+ options: {
40
+ type: "object",
41
+ additionalProperties: false,
42
+ properties: {
43
+ pdfMode: {
44
+ type: "string",
45
+ enum: ["auto", "office", "typst"],
46
+ description: "PDF route for Markdown → PDF.",
47
+ },
48
+ ocr: {
49
+ type: "string",
50
+ enum: ["auto", "off", "force"],
51
+ description: "OCR policy for conversions into Markdown.",
52
+ },
53
+ },
54
+ },
55
+ },
56
+ output: {
57
+ schema: {
58
+ type: "object",
59
+ additionalProperties: false,
60
+ properties: {
61
+ artifactId: { type: "string", required: true },
62
+ files: {
63
+ type: "array",
64
+ required: true,
65
+ items: {
66
+ type: "object",
67
+ additionalProperties: false,
68
+ properties: {
69
+ format: { type: "string", required: true },
70
+ path: { type: "string", required: true },
71
+ mediaType: { type: "string", required: true },
72
+ size: { type: "number", required: true },
73
+ sha256: { type: "string", required: true },
74
+ status: { type: "string", required: true },
75
+ error: { type: "string" },
76
+ },
77
+ },
78
+ },
79
+ source: {
80
+ type: "object",
81
+ required: true,
82
+ additionalProperties: false,
83
+ properties: {
84
+ path: { type: "string", required: true },
85
+ format: { type: "string", required: true },
86
+ },
87
+ },
88
+ warnings: warningsSchema,
89
+ manifestPath: { type: "string", required: true },
90
+ },
91
+ },
92
+ render: (_args, value) => {
93
+ const result = value;
94
+ return [
95
+ {
96
+ type: "text",
97
+ text: [
98
+ `artifact: ${result.artifactId}`,
99
+ `source: ${result.source.path} (${result.source.format})`,
100
+ ...renderFiles(result.files),
101
+ ...result.warnings.map(renderWarning),
102
+ `manifest: ${result.manifestPath}`,
103
+ ARTIFACT_NOTE,
104
+ ].join("\n"),
105
+ },
106
+ ];
107
+ },
108
+ },
109
+ timeoutMs: options.runtime.config.pandoc.timeoutMs +
110
+ options.runtime.config.libreoffice.timeoutMs +
111
+ options.runtime.config.docling.timeoutMs +
112
+ 30_000,
113
+ async execute(args, exec) {
114
+ const result = await options.runtime.convert(args, requireDocumentScope(exec));
115
+ return {
116
+ artifactId: result.artifactId,
117
+ files: toolFiles(result.files),
118
+ source: { path: result.source.path, format: result.source.format },
119
+ warnings: toolWarnings(result.warnings),
120
+ manifestPath: result.manifestPath,
121
+ };
122
+ },
123
+ });
124
+ }
125
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/documents/tools/convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * `document_create` — Markdown to DOCX and/or PDF (§8, §34).
3
+ *
4
+ * This is the tool the agent reaches for instead of driving pandoc and
5
+ * LibreOffice itself, which is the whole point of the pipeline: the intent is
6
+ * "give me this report as a Word file and a PDF", and the service decides how
7
+ * that happens.
8
+ */
9
+ import { defineTool } from "@deepseek-ai/dsh-tools";
10
+ import { ARTIFACT_NOTE, renderFiles, renderWarning, requireDocumentScope, toolFiles, toolWarnings, warningsSchema, } from "./shared.js";
11
+ export const DOCUMENT_CREATE_TOOL = "document_create";
12
+ const DESCRIPTION = [
13
+ "Create DOCX and/or PDF documents from Markdown content using the managed document pipeline and its templates.",
14
+ "Use this instead of invoking document conversion binaries directly: it writes an artifact bundle with the source, the assets and a manifest, and it returns the created file paths.",
15
+ "Assets referenced by the Markdown must be supplied through `assets`; remote images are never fetched.",
16
+ ].join(" ");
17
+ export function createDocumentCreateTool(options) {
18
+ return defineTool({
19
+ name: DOCUMENT_CREATE_TOOL,
20
+ description: DESCRIPTION,
21
+ parameters: {
22
+ content: {
23
+ type: "string",
24
+ required: true,
25
+ description: "Markdown source of the document.",
26
+ },
27
+ formats: {
28
+ type: "array",
29
+ required: true,
30
+ items: { type: "string", enum: ["docx", "pdf"] },
31
+ description: "Formats to produce. DOCX + PDF renders one document and exports both.",
32
+ },
33
+ filename: {
34
+ type: "string",
35
+ description: "File name for the outputs, without a directory. Sanitized before use; defaults to document-<artifact id>.",
36
+ },
37
+ template: {
38
+ type: "string",
39
+ description: "Registered template name for the layout (for example qa-report). A name that is not registered fails; there is no silent fallback.",
40
+ },
41
+ title: {
42
+ type: "string",
43
+ description: "Document title; falls back to the `title` front-matter field.",
44
+ },
45
+ metadata: {
46
+ type: "object",
47
+ additionalProperties: true,
48
+ description: "Additional document properties, as string key/value pairs.",
49
+ },
50
+ assets: {
51
+ type: "array",
52
+ items: {
53
+ type: "object",
54
+ additionalProperties: false,
55
+ properties: {
56
+ id: {
57
+ type: "string",
58
+ required: true,
59
+ description: "Stable asset id.",
60
+ },
61
+ path: {
62
+ type: "string",
63
+ description: "Path of an existing file inside the session workspace.",
64
+ },
65
+ dataRef: {
66
+ type: "string",
67
+ description: "Inline asset content as a base64 data URI.",
68
+ },
69
+ filename: {
70
+ type: "string",
71
+ description: "Name to store the asset under.",
72
+ },
73
+ mimeType: {
74
+ type: "string",
75
+ description: "Media type, e.g. image/png.",
76
+ },
77
+ },
78
+ },
79
+ description: "Images and other assets the Markdown references, as a path or a data URI (exactly one of the two).",
80
+ },
81
+ options: {
82
+ type: "object",
83
+ additionalProperties: false,
84
+ properties: {
85
+ pdfMode: {
86
+ type: "string",
87
+ enum: ["auto", "office", "typst"],
88
+ description: "PDF route. `office` renders DOCX first (identical layout to the Word file); `typst` renders directly when the deployment enables it.",
89
+ },
90
+ pageSize: {
91
+ type: "string",
92
+ description: "Page size such as A4 or Letter.",
93
+ },
94
+ locale: {
95
+ type: "string",
96
+ description: "Document language, e.g. ru-RU.",
97
+ },
98
+ toc: { type: "boolean", description: "Insert a table of contents." },
99
+ preserveSource: {
100
+ type: "boolean",
101
+ description: "Keep the Markdown source inside the artifact bundle.",
102
+ },
103
+ },
104
+ },
105
+ },
106
+ output: {
107
+ schema: {
108
+ type: "object",
109
+ additionalProperties: false,
110
+ properties: {
111
+ artifactId: { type: "string", required: true },
112
+ source: {
113
+ type: "object",
114
+ additionalProperties: false,
115
+ properties: {
116
+ path: { type: "string", required: true },
117
+ mediaType: { type: "string", required: true },
118
+ },
119
+ },
120
+ files: {
121
+ type: "array",
122
+ required: true,
123
+ items: {
124
+ type: "object",
125
+ additionalProperties: false,
126
+ properties: {
127
+ format: { type: "string", required: true },
128
+ path: { type: "string", required: true },
129
+ mediaType: { type: "string", required: true },
130
+ size: { type: "number", required: true },
131
+ sha256: { type: "string", required: true },
132
+ status: { type: "string", required: true },
133
+ error: { type: "string" },
134
+ },
135
+ },
136
+ },
137
+ template: { type: "string" },
138
+ warnings: warningsSchema,
139
+ manifestPath: { type: "string", required: true },
140
+ },
141
+ },
142
+ render: (_args, value) => {
143
+ const result = value;
144
+ return [
145
+ {
146
+ type: "text",
147
+ text: [
148
+ `artifact: ${result.artifactId}`,
149
+ ...renderFiles(result.files),
150
+ ...(result.template === undefined
151
+ ? []
152
+ : [`template: ${result.template}`]),
153
+ ...(result.source === undefined
154
+ ? []
155
+ : [`source: ${result.source.path}`]),
156
+ ...result.warnings.map(renderWarning),
157
+ `manifest: ${result.manifestPath}`,
158
+ ARTIFACT_NOTE,
159
+ ].join("\n"),
160
+ },
161
+ ];
162
+ },
163
+ },
164
+ timeoutMs: options.runtime.config.pandoc.timeoutMs +
165
+ options.runtime.config.libreoffice.timeoutMs +
166
+ 30_000,
167
+ async execute(args, exec) {
168
+ const result = await options.runtime.create(args, requireDocumentScope(exec));
169
+ return {
170
+ artifactId: result.artifactId,
171
+ ...(result.source === undefined
172
+ ? {}
173
+ : {
174
+ source: {
175
+ path: result.source.path,
176
+ mediaType: result.source.mediaType,
177
+ },
178
+ }),
179
+ files: toolFiles(result.files),
180
+ ...(result.template === undefined ? {} : { template: result.template }),
181
+ warnings: toolWarnings(result.warnings),
182
+ manifestPath: result.manifestPath,
183
+ };
184
+ },
185
+ });
186
+ }
187
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/documents/tools/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * The four agent-facing document tools (§8–§11, §34) and their registration.
3
+ *
4
+ * Registration is explicit and returns its disposers: the host may register
5
+ * them globally (the default) or an agent scope may register the same
6
+ * definitions later, which is what a deployment that wants progressive
7
+ * disclosure needs. Nothing here decides *whether* document tools are visible;
8
+ * that is the deployment's allow-list.
9
+ */
10
+ import { createDocumentConvertTool, DOCUMENT_CONVERT_TOOL } from "./convert.js";
11
+ import { createDocumentCreateTool, DOCUMENT_CREATE_TOOL } from "./create.js";
12
+ import { createDocumentInspectTool, DOCUMENT_INSPECT_TOOL } from "./inspect.js";
13
+ import { createDocumentToMarkdownTool, DOCUMENT_TO_MARKDOWN_TOOL, } from "./to-markdown.js";
14
+ /** Exact names of the tools this subsystem registers (allow-list contract). */
15
+ export const DOCUMENT_TOOL_NAMES = [
16
+ DOCUMENT_CREATE_TOOL,
17
+ DOCUMENT_TO_MARKDOWN_TOOL,
18
+ DOCUMENT_CONVERT_TOOL,
19
+ DOCUMENT_INSPECT_TOOL,
20
+ ];
21
+ export { DOCUMENT_CONVERT_TOOL, DOCUMENT_CREATE_TOOL, DOCUMENT_INSPECT_TOOL, DOCUMENT_TO_MARKDOWN_TOOL, };
22
+ export function createDocumentTools(options) {
23
+ return [
24
+ createDocumentCreateTool(options),
25
+ createDocumentToMarkdownTool(options),
26
+ createDocumentConvertTool(options),
27
+ createDocumentInspectTool(options),
28
+ ];
29
+ }
30
+ /**
31
+ * Register every document tool and return one disposer. `enabled: false` is
32
+ * handled by the caller: the surface is then absent rather than inert.
33
+ */
34
+ export function registerDocumentTools(registry, options) {
35
+ const disposers = createDocumentTools(options).map((definition) => registry.register(definition));
36
+ return () => {
37
+ for (const dispose of disposers.reverse())
38
+ dispose();
39
+ };
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/documents/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,oBAAoB;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,qBAAqB;CACtB,CAAC;AAEF,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,OAEnC;IACC,OAAO;QACL,wBAAwB,CAAC,OAAO,CAAC;QACjC,4BAA4B,CAAC,OAAO,CAAC;QACrC,yBAAyB,CAAC,OAAO,CAAC;QAClC,yBAAyB,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA8B,EAC9B,OAA8C;IAE9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAChE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC9B,CAAC;IACF,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * `document_inspect` — what a document is, without converting it (§11, §34).
3
+ */
4
+ import { defineTool } from "@deepseek-ai/dsh-tools";
5
+ import { fileParameter, formatBytes, renderWarning, requireDocumentScope, toolWarnings, warningsSchema, } from "./shared.js";
6
+ export const DOCUMENT_INSPECT_TOOL = "document_inspect";
7
+ const DESCRIPTION = [
8
+ "Inspect document type, metadata and basic structure without converting it.",
9
+ "Reports the detected format, size, hash, document properties, page/heading/table/image counts and whether the file is encrypted or macro-enabled.",
10
+ ].join(" ");
11
+ function structureLines(value) {
12
+ const structure = value.structure;
13
+ if (structure === undefined)
14
+ return [];
15
+ return Object.entries(structure)
16
+ .filter(([, count]) => typeof count === "number")
17
+ .map(([name, count]) => `${name}: ${String(count)}`);
18
+ }
19
+ export function createDocumentInspectTool(options) {
20
+ return defineTool({
21
+ name: DOCUMENT_INSPECT_TOOL,
22
+ description: DESCRIPTION,
23
+ parameters: { file: fileParameter() },
24
+ output: {
25
+ schema: {
26
+ type: "object",
27
+ additionalProperties: false,
28
+ properties: {
29
+ filename: { type: "string", required: true },
30
+ format: { type: "string", required: true },
31
+ mediaType: { type: "string", required: true },
32
+ size: { type: "number", required: true },
33
+ sha256: { type: "string", required: true },
34
+ metadata: {
35
+ type: "object",
36
+ additionalProperties: false,
37
+ properties: {
38
+ title: { type: "string" },
39
+ author: { type: "string" },
40
+ createdAt: { type: "string" },
41
+ modifiedAt: { type: "string" },
42
+ },
43
+ },
44
+ structure: {
45
+ type: "object",
46
+ additionalProperties: false,
47
+ properties: {
48
+ pages: { type: "number" },
49
+ headings: { type: "number" },
50
+ tables: { type: "number" },
51
+ images: { type: "number" },
52
+ },
53
+ },
54
+ encrypted: { type: "boolean" },
55
+ macroEnabled: { type: "boolean" },
56
+ warnings: warningsSchema,
57
+ },
58
+ },
59
+ render: (_args, value) => {
60
+ const result = value;
61
+ return [
62
+ {
63
+ type: "text",
64
+ text: [
65
+ `${result.filename}: ${result.format} (${result.mediaType})`,
66
+ `size: ${formatBytes(result.size)}, sha256: ${result.sha256}`,
67
+ ...(result.encrypted === true ? ["encrypted: yes"] : []),
68
+ ...(result.macroEnabled === true ? ["macro-enabled: yes"] : []),
69
+ ...(result.metadata === undefined
70
+ ? []
71
+ : Object.entries(result.metadata).map(([key, entry]) => `${key}: ${entry}`)),
72
+ ...structureLines(result),
73
+ ...result.warnings.map(renderWarning),
74
+ ].join("\n"),
75
+ },
76
+ ];
77
+ },
78
+ },
79
+ timeoutMs: 30_000,
80
+ async execute(args, exec) {
81
+ const result = await options.runtime.inspect(args, requireDocumentScope(exec));
82
+ return {
83
+ filename: result.filename,
84
+ format: result.format,
85
+ mediaType: result.mediaType,
86
+ size: result.size,
87
+ sha256: result.sha256,
88
+ ...(result.metadata === undefined
89
+ ? {}
90
+ : {
91
+ metadata: {
92
+ ...(result.metadata.title === undefined
93
+ ? {}
94
+ : { title: result.metadata.title }),
95
+ ...(result.metadata.author === undefined
96
+ ? {}
97
+ : { author: result.metadata.author }),
98
+ ...(result.metadata.createdAt === undefined
99
+ ? {}
100
+ : { createdAt: result.metadata.createdAt }),
101
+ ...(result.metadata.modifiedAt === undefined
102
+ ? {}
103
+ : { modifiedAt: result.metadata.modifiedAt }),
104
+ },
105
+ }),
106
+ ...(result.structure === undefined
107
+ ? {}
108
+ : {
109
+ structure: {
110
+ ...(result.structure.pages === undefined
111
+ ? {}
112
+ : { pages: result.structure.pages }),
113
+ ...(result.structure.headings === undefined
114
+ ? {}
115
+ : { headings: result.structure.headings }),
116
+ ...(result.structure.tables === undefined
117
+ ? {}
118
+ : { tables: result.structure.tables }),
119
+ ...(result.structure.images === undefined
120
+ ? {}
121
+ : { images: result.structure.images }),
122
+ },
123
+ }),
124
+ ...(result.encrypted === undefined
125
+ ? {}
126
+ : { encrypted: result.encrypted }),
127
+ ...(result.macroEnabled === undefined
128
+ ? {}
129
+ : { macroEnabled: result.macroEnabled }),
130
+ warnings: toolWarnings(result.warnings),
131
+ };
132
+ },
133
+ });
134
+ }
135
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/documents/tools/inspect.ts"],"names":[],"mappings":"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"}