@yadsh/dsh-qa-surface 0.6.1 → 0.7.1

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 (287) hide show
  1. package/README.md +163 -7
  2. package/capability-policy.json +1 -1
  3. package/lib/access/capability-catalog.js +144 -0
  4. package/lib/access/capability-catalog.js.map +1 -0
  5. package/lib/access/model.js +379 -0
  6. package/lib/access/model.js.map +1 -0
  7. package/lib/access/role-repository.js +195 -0
  8. package/lib/access/role-repository.js.map +1 -0
  9. package/lib/access/service.js +380 -0
  10. package/lib/access/service.js.map +1 -0
  11. package/lib/access/skill-metadata.js +234 -0
  12. package/lib/access/skill-metadata.js.map +1 -0
  13. package/lib/account-remotes.js +20 -10
  14. package/lib/account-remotes.js.map +1 -1
  15. package/lib/accounts/errors.js.map +1 -1
  16. package/lib/accounts/file.js.map +1 -1
  17. package/lib/accounts/store.js +202 -3
  18. package/lib/accounts/store.js.map +1 -1
  19. package/lib/admin/conversation-log.js +256 -0
  20. package/lib/admin/conversation-log.js.map +1 -0
  21. package/lib/admin/index.js +17 -0
  22. package/lib/admin/index.js.map +1 -0
  23. package/lib/admin/metrics.js +103 -0
  24. package/lib/admin/metrics.js.map +1 -0
  25. package/lib/admin/paging.js +23 -0
  26. package/lib/admin/paging.js.map +1 -0
  27. package/lib/admin/permissions.js +50 -0
  28. package/lib/admin/permissions.js.map +1 -0
  29. package/lib/admin/quality-store.js +485 -0
  30. package/lib/admin/quality-store.js.map +1 -0
  31. package/lib/admin/queue.js +107 -0
  32. package/lib/admin/queue.js.map +1 -0
  33. package/lib/admin/redaction.js +45 -0
  34. package/lib/admin/redaction.js.map +1 -0
  35. package/lib/admin/service.js +897 -0
  36. package/lib/admin/service.js.map +1 -0
  37. package/lib/admin/session-log.js +142 -0
  38. package/lib/admin/session-log.js.map +1 -0
  39. package/lib/cli.js +9 -6
  40. package/lib/cli.js.map +1 -1
  41. package/lib/client/QaSessionController.js +28 -2
  42. package/lib/client/QaSessionController.js.map +1 -1
  43. package/lib/client/QaSurface.js +143 -5
  44. package/lib/client/QaSurface.js.map +1 -1
  45. package/lib/client/QaTranscriptAdapter.js +1 -0
  46. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  47. package/lib/client/admin/QaAdmin.js +458 -0
  48. package/lib/client/admin/QaAdmin.js.map +1 -0
  49. package/lib/client/admin/format.js +177 -0
  50. package/lib/client/admin/format.js.map +1 -0
  51. package/lib/client/admin/pages/Conversations.js +114 -0
  52. package/lib/client/admin/pages/Conversations.js.map +1 -0
  53. package/lib/client/admin/pages/Overview.js +24 -0
  54. package/lib/client/admin/pages/Overview.js.map +1 -0
  55. package/lib/client/admin/pages/Quality.js +71 -0
  56. package/lib/client/admin/pages/Quality.js.map +1 -0
  57. package/lib/client/admin/pages/Review.js +93 -0
  58. package/lib/client/admin/pages/Review.js.map +1 -0
  59. package/lib/client/admin/pages/Users.js +95 -0
  60. package/lib/client/admin/pages/Users.js.map +1 -0
  61. package/lib/client/admin/routes.js +143 -0
  62. package/lib/client/admin/routes.js.map +1 -0
  63. package/lib/client/admin/shared.js +91 -0
  64. package/lib/client/admin/shared.js.map +1 -0
  65. package/lib/client/admin/styles.js +111 -0
  66. package/lib/client/admin/styles.js.map +1 -0
  67. package/lib/client/components/QaChangelog.js +53 -0
  68. package/lib/client/components/QaChangelog.js.map +1 -1
  69. package/lib/client/components/QaHeader.js +3 -3
  70. package/lib/client/components/QaHeader.js.map +1 -1
  71. package/lib/client/components/QaMessage.js +61 -2
  72. package/lib/client/components/QaMessage.js.map +1 -1
  73. package/lib/client/create-session.js +1 -1
  74. package/lib/client/create-session.js.map +1 -1
  75. package/lib/client/index.js +48 -1
  76. package/lib/client/index.js.map +1 -1
  77. package/lib/client/role/RoleSelector.js +31 -0
  78. package/lib/client/role/RoleSelector.js.map +1 -0
  79. package/lib/client/session-sources.js +37 -1
  80. package/lib/client/session-sources.js.map +1 -1
  81. package/lib/client/settings/card.js +2 -2
  82. package/lib/client/settings/card.js.map +1 -1
  83. package/lib/client/settings/sections.js +0 -1
  84. package/lib/client/settings/sections.js.map +1 -1
  85. package/lib/client/settings-extensions/index.js +1 -0
  86. package/lib/client/settings-extensions/index.js.map +1 -1
  87. package/lib/client/settings-extensions/user-session.js +62 -0
  88. package/lib/client/settings-extensions/user-session.js.map +1 -0
  89. package/lib/client/styles.js +31 -0
  90. package/lib/client/styles.js.map +1 -1
  91. package/lib/client/types.js.map +1 -1
  92. package/lib/client.js +9993 -4848
  93. package/lib/client.js.map +1 -1
  94. package/lib/config-resolvers/defaults.js +0 -2
  95. package/lib/config-resolvers/defaults.js.map +1 -1
  96. package/lib/config.js +0 -249
  97. package/lib/config.js.map +1 -1
  98. package/lib/enforcement/skill-policy.js +172 -0
  99. package/lib/enforcement/skill-policy.js.map +1 -0
  100. package/lib/enforcement/tool-grants.js +151 -0
  101. package/lib/enforcement/tool-grants.js.map +1 -0
  102. package/lib/index.js +224 -42
  103. package/lib/index.js.map +1 -1
  104. package/lib/personal-skills/service.js +10 -3
  105. package/lib/personal-skills/service.js.map +1 -1
  106. package/lib/qa-tools/index.js +4 -0
  107. package/lib/qa-tools/index.js.map +1 -1
  108. package/lib/resolve-config.js +0 -2
  109. package/lib/resolve-config.js.map +1 -1
  110. package/lib/secure-session.js +71 -17
  111. package/lib/secure-session.js.map +1 -1
  112. package/lib/typert.host.js +2237 -202
  113. package/lib/typert.remote-client.d.ts +49 -3
  114. package/lib/typert.remote-client.js +1863 -183
  115. package/lib/types/access/capability-catalog.d.ts +37 -0
  116. package/lib/types/access/model.d.ts +60 -0
  117. package/lib/types/access/role-repository.d.ts +32 -0
  118. package/lib/types/access/service.d.ts +57 -0
  119. package/lib/types/access/skill-metadata.d.ts +53 -0
  120. package/lib/types/account-remotes.d.ts +6 -0
  121. package/lib/types/accounts/errors.d.ts +1 -1
  122. package/lib/types/accounts/file.d.ts +16 -5
  123. package/lib/types/accounts/store.d.ts +83 -3
  124. package/lib/types/admin/conversation-log.d.ts +39 -0
  125. package/lib/types/admin/index.d.ts +24 -0
  126. package/lib/types/admin/metrics.d.ts +29 -0
  127. package/lib/types/admin/paging.d.ts +33 -0
  128. package/lib/types/admin/permissions.d.ts +10 -0
  129. package/lib/types/admin/quality-store.d.ts +82 -0
  130. package/lib/types/admin/queue.d.ts +21 -0
  131. package/lib/types/admin/redaction.d.ts +29 -0
  132. package/lib/types/admin/service.d.ts +105 -0
  133. package/lib/types/admin/session-log.d.ts +53 -0
  134. package/lib/types/client/QaSessionController.d.ts +12 -1
  135. package/lib/types/client/QaSurface.d.ts +7 -1
  136. package/lib/types/client/admin/QaAdmin.d.ts +17 -0
  137. package/lib/types/client/admin/format.d.ts +43 -0
  138. package/lib/types/client/admin/pages/Conversations.d.ts +21 -0
  139. package/lib/types/client/admin/pages/Overview.d.ts +13 -0
  140. package/lib/types/client/admin/pages/Quality.d.ts +18 -0
  141. package/lib/types/client/admin/pages/Review.d.ts +15 -0
  142. package/lib/types/client/admin/pages/Users.d.ts +22 -0
  143. package/lib/types/client/admin/routes.d.ts +60 -0
  144. package/lib/types/client/admin/shared.d.ts +53 -0
  145. package/lib/types/client/admin/styles.d.ts +11 -0
  146. package/lib/types/client/components/QaHeader.d.ts +5 -1
  147. package/lib/types/client/components/QaMessage.d.ts +14 -1
  148. package/lib/types/client/create-session.d.ts +2 -0
  149. package/lib/types/client/role/RoleSelector.d.ts +14 -0
  150. package/lib/types/client/session-sources.d.ts +9 -0
  151. package/lib/types/client/settings/sections.d.ts +0 -1
  152. package/lib/types/client/settings-extensions/index.d.ts +2 -0
  153. package/lib/types/client/settings-extensions/user-session.d.ts +59 -0
  154. package/lib/types/client/types.d.ts +39 -2
  155. package/lib/types/enforcement/skill-policy.d.ts +29 -0
  156. package/lib/types/enforcement/tool-grants.d.ts +84 -0
  157. package/lib/types/index.d.ts +62 -14
  158. package/lib/types/qa-tools/index.d.ts +2 -0
  159. package/lib/types/secure-session.d.ts +10 -1
  160. package/lib/types/types.d.ts +568 -5
  161. package/package.json +2 -2
  162. package/lib/client/settings/sections/documents.js +0 -88
  163. package/lib/client/settings/sections/documents.js.map +0 -1
  164. package/lib/documents/artifacts/ids.js +0 -43
  165. package/lib/documents/artifacts/ids.js.map +0 -1
  166. package/lib/documents/artifacts/manifest.js +0 -66
  167. package/lib/documents/artifacts/manifest.js.map +0 -1
  168. package/lib/documents/artifacts/store.js +0 -169
  169. package/lib/documents/artifacts/store.js.map +0 -1
  170. package/lib/documents/capabilities.js +0 -93
  171. package/lib/documents/capabilities.js.map +0 -1
  172. package/lib/documents/config.js +0 -302
  173. package/lib/documents/config.js.map +0 -1
  174. package/lib/documents/defaults.js +0 -78
  175. package/lib/documents/defaults.js.map +0 -1
  176. package/lib/documents/errors.js +0 -101
  177. package/lib/documents/errors.js.map +0 -1
  178. package/lib/documents/index.js +0 -80
  179. package/lib/documents/index.js.map +0 -1
  180. package/lib/documents/inspect/facts.js +0 -161
  181. package/lib/documents/inspect/facts.js.map +0 -1
  182. package/lib/documents/inspect/zip.js +0 -108
  183. package/lib/documents/inspect/zip.js.map +0 -1
  184. package/lib/documents/markdown/directives.js +0 -135
  185. package/lib/documents/markdown/directives.js.map +0 -1
  186. package/lib/documents/markdown/frontmatter.js +0 -35
  187. package/lib/documents/markdown/frontmatter.js.map +0 -1
  188. package/lib/documents/markdown/normalize.js +0 -113
  189. package/lib/documents/markdown/normalize.js.map +0 -1
  190. package/lib/documents/orchestrator/assets.js +0 -243
  191. package/lib/documents/orchestrator/assets.js.map +0 -1
  192. package/lib/documents/orchestrator/convert-document.js +0 -186
  193. package/lib/documents/orchestrator/convert-document.js.map +0 -1
  194. package/lib/documents/orchestrator/create-document.js +0 -292
  195. package/lib/documents/orchestrator/create-document.js.map +0 -1
  196. package/lib/documents/orchestrator/extract-document.js +0 -162
  197. package/lib/documents/orchestrator/extract-document.js.map +0 -1
  198. package/lib/documents/orchestrator/inspect-document.js +0 -89
  199. package/lib/documents/orchestrator/inspect-document.js.map +0 -1
  200. package/lib/documents/orchestrator/runtime-deps.js +0 -59
  201. package/lib/documents/orchestrator/runtime-deps.js.map +0 -1
  202. package/lib/documents/orchestrator/scope.js +0 -132
  203. package/lib/documents/orchestrator/scope.js.map +0 -1
  204. package/lib/documents/providers/docling.js +0 -247
  205. package/lib/documents/providers/docling.js.map +0 -1
  206. package/lib/documents/providers/libreoffice.js +0 -130
  207. package/lib/documents/providers/libreoffice.js.map +0 -1
  208. package/lib/documents/providers/markitdown.js +0 -89
  209. package/lib/documents/providers/markitdown.js.map +0 -1
  210. package/lib/documents/providers/pandoc.js +0 -161
  211. package/lib/documents/providers/pandoc.js.map +0 -1
  212. package/lib/documents/providers/process.js +0 -164
  213. package/lib/documents/providers/process.js.map +0 -1
  214. package/lib/documents/providers/registry.js +0 -152
  215. package/lib/documents/providers/registry.js.map +0 -1
  216. package/lib/documents/providers/shared.js +0 -75
  217. package/lib/documents/providers/shared.js.map +0 -1
  218. package/lib/documents/runtime.js +0 -114
  219. package/lib/documents/runtime.js.map +0 -1
  220. package/lib/documents/security/file-types.js +0 -188
  221. package/lib/documents/security/file-types.js.map +0 -1
  222. package/lib/documents/security/limits.js +0 -78
  223. package/lib/documents/security/limits.js.map +0 -1
  224. package/lib/documents/security/mime.js +0 -43
  225. package/lib/documents/security/mime.js.map +0 -1
  226. package/lib/documents/security/paths.js +0 -133
  227. package/lib/documents/security/paths.js.map +0 -1
  228. package/lib/documents/templates/registry.js +0 -147
  229. package/lib/documents/templates/registry.js.map +0 -1
  230. package/lib/documents/templates/resolver.js +0 -59
  231. package/lib/documents/templates/resolver.js.map +0 -1
  232. package/lib/documents/tools/convert.js +0 -125
  233. package/lib/documents/tools/convert.js.map +0 -1
  234. package/lib/documents/tools/create.js +0 -187
  235. package/lib/documents/tools/create.js.map +0 -1
  236. package/lib/documents/tools/index.js +0 -41
  237. package/lib/documents/tools/index.js.map +0 -1
  238. package/lib/documents/tools/inspect.js +0 -135
  239. package/lib/documents/tools/inspect.js.map +0 -1
  240. package/lib/documents/tools/shared.js +0 -88
  241. package/lib/documents/tools/shared.js.map +0 -1
  242. package/lib/documents/tools/to-markdown.js +0 -125
  243. package/lib/documents/tools/to-markdown.js.map +0 -1
  244. package/lib/documents/types.js +0 -12
  245. package/lib/documents/types.js.map +0 -1
  246. package/lib/types/client/settings/sections/documents.d.ts +0 -13
  247. package/lib/types/documents/artifacts/ids.d.ts +0 -14
  248. package/lib/types/documents/artifacts/manifest.d.ts +0 -32
  249. package/lib/types/documents/artifacts/store.d.ts +0 -67
  250. package/lib/types/documents/capabilities.d.ts +0 -32
  251. package/lib/types/documents/config.d.ts +0 -27
  252. package/lib/types/documents/defaults.d.ts +0 -161
  253. package/lib/types/documents/errors.d.ts +0 -42
  254. package/lib/types/documents/index.d.ts +0 -63
  255. package/lib/types/documents/inspect/facts.d.ts +0 -43
  256. package/lib/types/documents/inspect/zip.d.ts +0 -28
  257. package/lib/types/documents/markdown/directives.d.ts +0 -39
  258. package/lib/types/documents/markdown/frontmatter.d.ts +0 -15
  259. package/lib/types/documents/markdown/normalize.d.ts +0 -30
  260. package/lib/types/documents/orchestrator/assets.d.ts +0 -55
  261. package/lib/types/documents/orchestrator/convert-document.d.ts +0 -25
  262. package/lib/types/documents/orchestrator/create-document.d.ts +0 -18
  263. package/lib/types/documents/orchestrator/extract-document.d.ts +0 -24
  264. package/lib/types/documents/orchestrator/inspect-document.d.ts +0 -12
  265. package/lib/types/documents/orchestrator/runtime-deps.d.ts +0 -43
  266. package/lib/types/documents/orchestrator/scope.d.ts +0 -52
  267. package/lib/types/documents/providers/docling.d.ts +0 -54
  268. package/lib/types/documents/providers/libreoffice.d.ts +0 -40
  269. package/lib/types/documents/providers/markitdown.d.ts +0 -28
  270. package/lib/types/documents/providers/pandoc.d.ts +0 -42
  271. package/lib/types/documents/providers/process.d.ts +0 -54
  272. package/lib/types/documents/providers/registry.d.ts +0 -68
  273. package/lib/types/documents/providers/shared.d.ts +0 -27
  274. package/lib/types/documents/runtime.d.ts +0 -59
  275. package/lib/types/documents/security/file-types.d.ts +0 -39
  276. package/lib/types/documents/security/limits.d.ts +0 -24
  277. package/lib/types/documents/security/mime.d.ts +0 -13
  278. package/lib/types/documents/security/paths.d.ts +0 -38
  279. package/lib/types/documents/templates/registry.d.ts +0 -50
  280. package/lib/types/documents/templates/resolver.d.ts +0 -30
  281. package/lib/types/documents/tools/convert.d.ts +0 -9
  282. package/lib/types/documents/tools/create.d.ts +0 -14
  283. package/lib/types/documents/tools/index.d.ts +0 -33
  284. package/lib/types/documents/tools/inspect.d.ts +0 -9
  285. package/lib/types/documents/tools/shared.d.ts +0 -77
  286. package/lib/types/documents/tools/to-markdown.d.ts +0 -12
  287. package/lib/types/documents/types.d.ts +0 -294
@@ -1,302 +0,0 @@
1
- /**
2
- * Configuration of the document subsystem (§20).
3
- *
4
- * The subsystem is part of the `qa-surface` namespace, so this resolver
5
- * follows the same shape as the other domains: it normalizes, validates and
6
- * freezes, and the schema in `src/config.ts` takes every default from
7
- * {@link DEFAULT_QA_DOCUMENTS_CONFIG} so an untouched deployment sends the
8
- * resolver nothing at all.
9
- *
10
- * Environment overrides are applied in `applyDocumentsEnvOverrides`, on the
11
- * way into the plugin, and only for the documented variables — a deployment
12
- * that injects secrets into the process environment does not thereby get to
13
- * reconfigure the pipeline.
14
- */
15
- import { DEFAULT_QA_DOCUMENTS_CONFIG, } from "./defaults.js";
16
- import { DocumentError } from "./errors.js";
17
- export { DEFAULT_QA_DOCUMENTS_CONFIG, } from "./defaults.js";
18
- const MS_PER_MINUTE = 60_000;
19
- /**
20
- * Absolute-path test for the configuration surface.
21
- *
22
- * A hand-rolled check rather than `node:path.isAbsolute`: the schema that reads
23
- * these defaults is bundled into the browser settings page, and the page cannot
24
- * load a Node builtin. Only absolute paths are accepted, so there is nothing to
25
- * resolve here — canonicalization happens host-side, when the path is used.
26
- */
27
- function isAbsolutePath(value) {
28
- return (/^[A-Za-z]:[\\/]/u.test(value) ||
29
- value.startsWith("/") ||
30
- value.startsWith("\\\\"));
31
- }
32
- function readBoolean(value, fallback) {
33
- return typeof value === "boolean" ? value : fallback;
34
- }
35
- function readInteger(value, fallback, bounds, label) {
36
- if (value === undefined || value === null)
37
- return fallback;
38
- if (typeof value !== "number" || !Number.isFinite(value)) {
39
- throw new DocumentError("INVALID_INPUT", `${label} must be a number`);
40
- }
41
- const rounded = Math.round(value);
42
- if (rounded < bounds.min || rounded > bounds.max) {
43
- throw new DocumentError("INVALID_INPUT", `${label} must be between ${bounds.min} and ${bounds.max}`, { details: { label, value } });
44
- }
45
- return rounded;
46
- }
47
- function readString(value, fallback, label) {
48
- if (value === undefined || value === null)
49
- return fallback;
50
- if (typeof value !== "string") {
51
- throw new DocumentError("INVALID_INPUT", `${label} must be a string`);
52
- }
53
- const trimmed = value.trim();
54
- return trimmed === "" ? fallback : trimmed;
55
- }
56
- function readNullableAbsolutePath(value, label) {
57
- if (value === undefined || value === null)
58
- return null;
59
- if (typeof value !== "string") {
60
- throw new DocumentError("INVALID_INPUT", `${label} must be a path`);
61
- }
62
- const trimmed = value.trim();
63
- if (trimmed === "")
64
- return null;
65
- if (!isAbsolutePath(trimmed)) {
66
- throw new DocumentError("INVALID_INPUT", `${label} must be an absolute path (relative and traversal forms are refused)`, { details: { label } });
67
- }
68
- return trimmed;
69
- }
70
- function readEnum(value, allowed, fallback, label) {
71
- if (value === undefined || value === null)
72
- return fallback;
73
- if (typeof value !== "string" || !allowed.includes(value)) {
74
- throw new DocumentError("INVALID_INPUT", `${label} must be one of: ${allowed.join(", ")}`, { details: { label } });
75
- }
76
- return value;
77
- }
78
- function readStringList(value, fallback) {
79
- if (!Array.isArray(value))
80
- return [...fallback];
81
- const entries = value
82
- .filter((entry) => typeof entry === "string")
83
- .map((entry) => entry.trim())
84
- .filter((entry) => entry !== "");
85
- return [...new Set(entries)];
86
- }
87
- function readAbsolutePathList(value, label) {
88
- if (!Array.isArray(value))
89
- return [];
90
- return value.map((entry) => {
91
- if (typeof entry !== "string" || entry.trim() === "") {
92
- throw new DocumentError("INVALID_INPUT", `${label} entries must be paths`);
93
- }
94
- const entryPath = entry.trim();
95
- if (!isAbsolutePath(entryPath)) {
96
- throw new DocumentError("INVALID_INPUT", `${label} entries must be absolute paths`);
97
- }
98
- return entryPath;
99
- });
100
- }
101
- function assertHttpUrl(value, label) {
102
- let parsed;
103
- try {
104
- parsed = new URL(value);
105
- }
106
- catch {
107
- throw new DocumentError("INVALID_INPUT", `${label} must be an http(s) URL`);
108
- }
109
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
110
- throw new DocumentError("INVALID_INPUT", `${label} must be an http(s) URL`);
111
- }
112
- return value;
113
- }
114
- /** Materialize and validate the document configuration. */
115
- export function resolveDocumentsConfig(input = {}) {
116
- const D = DEFAULT_QA_DOCUMENTS_CONFIG;
117
- const storage = input.storage ?? {};
118
- const templates = input.templates ?? {};
119
- const create = input.create ?? {};
120
- const extraction = input.extraction ?? {};
121
- const docling = input.docling ?? {};
122
- const pandoc = input.pandoc ?? {};
123
- const libreoffice = input.libreoffice ?? {};
124
- const typst = input.typst ?? {};
125
- const markitdown = input.markitdown ?? {};
126
- const workers = input.workers ?? {};
127
- const retention = input.retention ?? {};
128
- const limits = input.limits ?? {};
129
- const allowFormats = readStringList(create.allowFormats, D.create.allowFormats).filter((entry) => entry === "docx" || entry === "pdf");
130
- if (allowFormats.length === 0) {
131
- throw new DocumentError("INVALID_INPUT", "documents.create.allowFormats must list at least one of: docx, pdf");
132
- }
133
- return Object.freeze({
134
- enabled: readBoolean(input.enabled, D.enabled),
135
- storage: Object.freeze({
136
- root: readNullableAbsolutePath(storage.root, "documents.storage.root"),
137
- retainSource: readBoolean(storage.retainSource, D.storage.retainSource),
138
- retainInputs: readBoolean(storage.retainInputs, D.storage.retainInputs),
139
- allowedInputRoots: Object.freeze(readAbsolutePathList(storage.allowedInputRoots, "documents.storage.allowedInputRoots")),
140
- }),
141
- templates: Object.freeze({
142
- root: readNullableAbsolutePath(templates.root, "documents.templates.root"),
143
- default: readString(templates.default, D.templates.default, "documents.templates.default"),
144
- }),
145
- create: Object.freeze({
146
- defaultPdfMode: readEnum(create.defaultPdfMode, ["auto", "office", "typst"], D.create.defaultPdfMode, "documents.create.defaultPdfMode"),
147
- allowFormats: Object.freeze(allowFormats),
148
- allowRawMarkup: readBoolean(create.allowRawMarkup, D.create.allowRawMarkup),
149
- toc: readBoolean(create.toc, D.create.toc),
150
- }),
151
- extraction: Object.freeze({
152
- defaultMode: readEnum(extraction.defaultMode, ["auto", "fast", "accurate"], D.extraction.defaultMode, "documents.extraction.defaultMode"),
153
- ocr: readEnum(extraction.ocr, ["auto", "off", "force"], D.extraction.ocr, "documents.extraction.ocr"),
154
- ocrLanguages: Object.freeze(readStringList(extraction.ocrLanguages, D.extraction.ocrLanguages)),
155
- extractImages: readBoolean(extraction.extractImages, D.extraction.extractImages),
156
- extractTables: readBoolean(extraction.extractTables, D.extraction.extractTables),
157
- preservePageMarkers: readBoolean(extraction.preservePageMarkers, D.extraction.preservePageMarkers),
158
- allowFallback: readBoolean(extraction.allowFallback, D.extraction.allowFallback),
159
- maxInlineChars: readInteger(extraction.maxInlineChars, D.extraction.maxInlineChars, { min: 1_000, max: 5_000_000 }, "documents.extraction.maxInlineChars"),
160
- }),
161
- docling: Object.freeze({
162
- enabled: readBoolean(docling.enabled, D.docling.enabled),
163
- baseUrl: assertHttpUrl(readString(docling.baseUrl, D.docling.baseUrl, "documents.docling.baseUrl").replace(/\/+$/u, ""), "documents.docling.baseUrl"),
164
- timeoutMs: readInteger(docling.timeoutMs, D.docling.timeoutMs, { min: 1_000, max: 600_000 }, "documents.docling.timeoutMs"),
165
- }),
166
- pandoc: Object.freeze({
167
- executable: readString(pandoc.executable, D.pandoc.executable, "documents.pandoc.executable"),
168
- timeoutMs: readInteger(pandoc.timeoutMs, D.pandoc.timeoutMs, { min: 1_000, max: 600_000 }, "documents.pandoc.timeoutMs"),
169
- }),
170
- libreoffice: Object.freeze({
171
- executable: readString(libreoffice.executable, D.libreoffice.executable, "documents.libreoffice.executable"),
172
- timeoutMs: readInteger(libreoffice.timeoutMs, D.libreoffice.timeoutMs, { min: 1_000, max: 600_000 }, "documents.libreoffice.timeoutMs"),
173
- }),
174
- typst: Object.freeze({
175
- enabled: readBoolean(typst.enabled, D.typst.enabled),
176
- executable: readString(typst.executable, D.typst.executable, "documents.typst.executable"),
177
- timeoutMs: readInteger(typst.timeoutMs, D.typst.timeoutMs, { min: 1_000, max: 600_000 }, "documents.typst.timeoutMs"),
178
- }),
179
- markitdown: Object.freeze({
180
- enabled: readBoolean(markitdown.enabled, D.markitdown.enabled),
181
- executable: readString(markitdown.executable, D.markitdown.executable, "documents.markitdown.executable"),
182
- timeoutMs: readInteger(markitdown.timeoutMs, D.markitdown.timeoutMs, { min: 1_000, max: 600_000 }, "documents.markitdown.timeoutMs"),
183
- }),
184
- workers: Object.freeze({
185
- renderConcurrency: readInteger(workers.renderConcurrency, D.workers.renderConcurrency, { min: 1, max: 16 }, "documents.workers.renderConcurrency"),
186
- extractionConcurrency: readInteger(workers.extractionConcurrency, D.workers.extractionConcurrency, { min: 1, max: 16 }, "documents.workers.extractionConcurrency"),
187
- ocrConcurrency: readInteger(workers.ocrConcurrency, D.workers.ocrConcurrency, { min: 1, max: 16 }, "documents.workers.ocrConcurrency"),
188
- }),
189
- retention: Object.freeze({
190
- enabled: readBoolean(retention.enabled, D.retention.enabled),
191
- maxAgeDays: readInteger(retention.maxAgeDays, D.retention.maxAgeDays, { min: 1, max: 3_650 }, "documents.retention.maxAgeDays"),
192
- cleanupIntervalHours: readInteger(retention.cleanupIntervalHours, D.retention.cleanupIntervalHours, { min: 1, max: 168 }, "documents.retention.cleanupIntervalHours"),
193
- }),
194
- limits: Object.freeze({
195
- maxInputBytes: readInteger(limits.maxInputBytes, D.limits.maxInputBytes, { min: 1_024, max: 4_294_967_296 }, "documents.limits.maxInputBytes"),
196
- maxMarkdownChars: readInteger(limits.maxMarkdownChars, D.limits.maxMarkdownChars, { min: 1_000, max: 50_000_000 }, "documents.limits.maxMarkdownChars"),
197
- maxPages: readInteger(limits.maxPages, D.limits.maxPages, { min: 1, max: 100_000 }, "documents.limits.maxPages"),
198
- maxExtractedImages: readInteger(limits.maxExtractedImages, D.limits.maxExtractedImages, { min: 0, max: 10_000 }, "documents.limits.maxExtractedImages"),
199
- maxAssetBytes: readInteger(limits.maxAssetBytes, D.limits.maxAssetBytes, { min: 1_024, max: 1_073_741_824 }, "documents.limits.maxAssetBytes"),
200
- maxResponseBytes: readInteger(limits.maxResponseBytes, D.limits.maxResponseBytes, { min: 1_024, max: 1_073_741_824 }, "documents.limits.maxResponseBytes"),
201
- maxExtractedMarkdownBytes: readInteger(limits.maxExtractedMarkdownBytes, D.limits.maxExtractedMarkdownBytes, { min: 1_024, max: 1_073_741_824 }, "documents.limits.maxExtractedMarkdownBytes"),
202
- allowedAssetMimeTypes: Object.freeze(readStringList(limits.allowedAssetMimeTypes, D.limits.allowedAssetMimeTypes).map((entry) => entry.toLowerCase())),
203
- }),
204
- });
205
- }
206
- /** Parse a boolean env value; unknown text leaves the configured value. */
207
- function envBoolean(raw, fallback) {
208
- if (raw === undefined)
209
- return fallback;
210
- const normalized = raw.trim().toLowerCase();
211
- if (["1", "true", "yes", "on"].includes(normalized))
212
- return true;
213
- if (["0", "false", "no", "off"].includes(normalized))
214
- return false;
215
- return fallback;
216
- }
217
- function envInteger(raw, fallback) {
218
- if (raw === undefined)
219
- return fallback;
220
- const parsed = Number.parseInt(raw.trim(), 10);
221
- return Number.isFinite(parsed) ? parsed : fallback;
222
- }
223
- /**
224
- * Apply the documented environment overrides (§20). Kept out of
225
- * {@link resolveDocumentsConfig} so the resolver stays a pure function of its
226
- * input — configuration tests never depend on the ambient environment.
227
- */
228
- export function applyDocumentsEnvOverrides(config, env) {
229
- const value = (key) => {
230
- const raw = env[key];
231
- return raw === undefined || raw.trim() === "" ? undefined : raw.trim();
232
- };
233
- const storageRoot = value("QA_DOCUMENTS_STORAGE_ROOT");
234
- const templatesRoot = value("QA_DOCUMENTS_TEMPLATES_ROOT");
235
- const doclingBaseUrl = value("QA_DOCLING_BASE_URL");
236
- const doclingTimeout = value("QA_DOCLING_TIMEOUT_MS");
237
- const pandocExecutable = value("QA_PANDOC_EXECUTABLE");
238
- const libreofficeExecutable = value("QA_LIBREOFFICE_EXECUTABLE");
239
- const markitdownExecutable = value("QA_MARKITDOWN_EXECUTABLE");
240
- const ocrLanguages = value("QA_DOCUMENTS_OCR_LANGUAGES");
241
- const maxInputBytes = value("QA_DOCUMENTS_MAX_INPUT_BYTES");
242
- return {
243
- ...config,
244
- enabled: envBoolean(value("QA_DOCUMENTS_ENABLED"), config.enabled ?? true),
245
- storage: {
246
- ...config.storage,
247
- ...(storageRoot === undefined ? {} : { root: storageRoot }),
248
- },
249
- templates: {
250
- ...config.templates,
251
- ...(templatesRoot === undefined ? {} : { root: templatesRoot }),
252
- },
253
- docling: {
254
- ...config.docling,
255
- ...(doclingBaseUrl === undefined ? {} : { baseUrl: doclingBaseUrl }),
256
- ...(doclingTimeout === undefined
257
- ? {}
258
- : {
259
- timeoutMs: envInteger(doclingTimeout, config.docling?.timeoutMs ?? 0),
260
- }),
261
- },
262
- pandoc: {
263
- ...config.pandoc,
264
- ...(pandocExecutable === undefined
265
- ? {}
266
- : { executable: pandocExecutable }),
267
- },
268
- libreoffice: {
269
- ...config.libreoffice,
270
- ...(libreofficeExecutable === undefined
271
- ? {}
272
- : { executable: libreofficeExecutable }),
273
- },
274
- markitdown: {
275
- ...config.markitdown,
276
- ...(markitdownExecutable === undefined
277
- ? {}
278
- : { executable: markitdownExecutable }),
279
- },
280
- extraction: {
281
- ...config.extraction,
282
- ...(ocrLanguages === undefined
283
- ? {}
284
- : {
285
- ocrLanguages: ocrLanguages.split(",").map((entry) => entry.trim()),
286
- }),
287
- },
288
- limits: {
289
- ...config.limits,
290
- ...(maxInputBytes === undefined
291
- ? {}
292
- : {
293
- maxInputBytes: envInteger(maxInputBytes, config.limits?.maxInputBytes ?? 0),
294
- }),
295
- },
296
- };
297
- }
298
- /** Milliseconds a retention sweep interval would wait. */
299
- export function retentionIntervalMs(config) {
300
- return config.retention.cleanupIntervalHours * 60 * MS_PER_MINUTE;
301
- }
302
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/documents/config.ts"],"names":[],"mappings":"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"}
@@ -1,78 +0,0 @@
1
- /**
2
- * Canonical document defaults (§20).
3
- *
4
- * This module must stay free of Node builtins: it is the only part of the
5
- * document subsystem the browser settings bundle reaches (through the QA
6
- * surface's resolved configuration), and the page cannot load `node:*`. The
7
- * resolver and everything that touches the filesystem live in `config.ts`,
8
- * which imports these values.
9
- */
10
- import { DEFAULT_ASSET_MIME_TYPES } from "./security/mime.js";
11
- /** The canonical resolved configuration; the schema and resolver both use it. */
12
- export const DEFAULT_QA_DOCUMENTS_CONFIG = Object.freeze({
13
- enabled: true,
14
- storage: Object.freeze({
15
- root: null,
16
- retainSource: true,
17
- retainInputs: true,
18
- allowedInputRoots: Object.freeze([]),
19
- }),
20
- templates: Object.freeze({ root: null, default: "default" }),
21
- create: Object.freeze({
22
- defaultPdfMode: "auto",
23
- allowFormats: Object.freeze(["docx", "pdf"]),
24
- allowRawMarkup: false,
25
- toc: false,
26
- }),
27
- extraction: Object.freeze({
28
- defaultMode: "accurate",
29
- ocr: "auto",
30
- ocrLanguages: Object.freeze([]),
31
- extractImages: true,
32
- extractTables: true,
33
- preservePageMarkers: false,
34
- allowFallback: true,
35
- maxInlineChars: 200_000,
36
- }),
37
- docling: Object.freeze({
38
- enabled: true,
39
- baseUrl: "http://docling:5001",
40
- timeoutMs: 120_000,
41
- }),
42
- pandoc: Object.freeze({ executable: "pandoc", timeoutMs: 60_000 }),
43
- libreoffice: Object.freeze({
44
- executable: "libreoffice",
45
- timeoutMs: 120_000,
46
- }),
47
- typst: Object.freeze({
48
- enabled: false,
49
- executable: "typst",
50
- timeoutMs: 120_000,
51
- }),
52
- markitdown: Object.freeze({
53
- enabled: false,
54
- executable: "markitdown",
55
- timeoutMs: 120_000,
56
- }),
57
- workers: Object.freeze({
58
- renderConcurrency: 2,
59
- extractionConcurrency: 2,
60
- ocrConcurrency: 1,
61
- }),
62
- retention: Object.freeze({
63
- enabled: true,
64
- maxAgeDays: 30,
65
- cleanupIntervalHours: 12,
66
- }),
67
- limits: Object.freeze({
68
- maxInputBytes: 52_428_800,
69
- maxMarkdownChars: 5_000_000,
70
- maxPages: 1_000,
71
- maxExtractedImages: 500,
72
- maxAssetBytes: 20_971_520,
73
- maxResponseBytes: 268_435_456,
74
- maxExtractedMarkdownBytes: 16_777_216,
75
- allowedAssetMimeTypes: Object.freeze([...DEFAULT_ASSET_MIME_TYPES]),
76
- }),
77
- });
78
- //# sourceMappingURL=defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/documents/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAoK9D,iFAAiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GACtC,MAAM,CAAC,MAAM,CAAC;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;KACrC,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM;QACtB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,CAAU,CAAC;QACrD,cAAc,EAAE,KAAK;QACrB,GAAG,EAAE,KAAK;KACX,CAAC;IACF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QACxB,WAAW,EAAE,UAAU;QACvB,GAAG,EAAE,MAAM;QACX,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,OAAO;KACxB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,qBAAqB;QAC9B,SAAS,EAAE,OAAO;KACnB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAClE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,OAAO;KACnB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,OAAO;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QACxB,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,OAAO;KACnB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,iBAAiB,EAAE,CAAC;QACpB,qBAAqB,EAAE,CAAC;QACxB,cAAc,EAAE,CAAC;KAClB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACvB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,EAAE;KACzB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,aAAa,EAAE,UAAU;QACzB,gBAAgB,EAAE,SAAS;QAC3B,QAAQ,EAAE,KAAK;QACf,kBAAkB,EAAE,GAAG;QACvB,aAAa,EAAE,UAAU;QACzB,gBAAgB,EAAE,WAAW;QAC7B,yBAAyB,EAAE,UAAU;QACrC,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;KACpE,CAAC;CACH,CAAC,CAAC"}
@@ -1,101 +0,0 @@
1
- /**
2
- * Typed failures of the document pipeline.
3
- *
4
- * Every failure the agent can observe carries a stable machine-readable code
5
- * (§24) and the backend that produced it. Backend output is never forwarded
6
- * verbatim: {@link sanitizeBackendOutput} strips ANSI escapes, collapses
7
- * whitespace, replaces absolute paths with the placeholder the operator can
8
- * recognize as "inside the sandbox" and caps the length, so a converter's
9
- * stderr cannot leak the deployment's layout or the document's content into a
10
- * model request.
11
- */
12
- export const DOCUMENT_ERROR_CODES = [
13
- "INVALID_INPUT",
14
- "UNSUPPORTED_FORMAT",
15
- "UNSUPPORTED_CONVERSION",
16
- "INPUT_TOO_LARGE",
17
- "DOCUMENT_TOO_LARGE",
18
- "FILE_NOT_FOUND",
19
- "TEMPLATE_NOT_FOUND",
20
- "INVALID_TEMPLATE",
21
- "INVALID_ASSET",
22
- "PATH_NOT_ALLOWED",
23
- "ENCRYPTED_DOCUMENT",
24
- "MACRO_ENABLED_DOCUMENT",
25
- "OCR_FAILED",
26
- "EXTRACTION_FAILED",
27
- "RENDER_FAILED",
28
- "CONVERSION_FAILED",
29
- "BACKEND_UNAVAILABLE",
30
- "BACKEND_TIMEOUT",
31
- "BACKEND_FAILED",
32
- "ARTIFACT_WRITE_FAILED",
33
- ];
34
- /** Retryability per code: only transient backend conditions ask for a retry. */
35
- const RETRYABLE = new Set([
36
- "BACKEND_UNAVAILABLE",
37
- "BACKEND_TIMEOUT",
38
- "BACKEND_FAILED",
39
- ]);
40
- export class DocumentError extends Error {
41
- code;
42
- retryable;
43
- backend;
44
- details;
45
- constructor(code, message, fields = {}) {
46
- super(`document pipeline (${code}): ${message}`, { cause: fields.cause });
47
- this.name = "DocumentError";
48
- this.code = code;
49
- this.retryable = fields.retryable ?? RETRYABLE.has(code);
50
- this.backend = fields.backend;
51
- this.details = fields.details;
52
- }
53
- /** The structured form the manifest and the logs carry (§24). */
54
- toShape() {
55
- return {
56
- code: this.code,
57
- message: this.message,
58
- retryable: this.retryable,
59
- ...(this.backend === undefined ? {} : { backend: this.backend }),
60
- ...(this.details === undefined ? {} : { details: this.details }),
61
- };
62
- }
63
- }
64
- /* eslint-disable no-control-regex -- escape and control sequences are the point */
65
- const ANSI_PATTERN = /\u001B\[[0-9;]*[A-Za-z]/gu;
66
- const CONTROL_PATTERN = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/gu;
67
- /* eslint-enable no-control-regex */
68
- // Anchored at a word start and requiring a second separator, so prose such as
69
- // "and/or" survives while `/tmp/qa-documents/job-1/output.docx` does not.
70
- const ABSOLUTE_PATH_PATTERN = /(?<=^|\s)(?:[A-Za-z]:[\\/]|\/)(?:[^\s"'`()[\]{},;]+[\\/])+[^\s"'`()[\]{},;]*/gu;
71
- const DEFAULT_BACKEND_MESSAGE_MAX = 2_000;
72
- /**
73
- * Make a backend's diagnostic text safe to show: no escapes, no absolute
74
- * paths, one line per statement, at most `max` characters.
75
- */
76
- export function sanitizeBackendOutput(text, max = DEFAULT_BACKEND_MESSAGE_MAX) {
77
- const cleaned = text
78
- .replace(ANSI_PATTERN, "")
79
- .replace(CONTROL_PATTERN, "")
80
- .replace(/\r\n?/gu, "\n")
81
- .replace(ABSOLUTE_PATH_PATTERN, "<path>")
82
- .split("\n")
83
- .map((line) => line.trim())
84
- .filter((line) => line !== "")
85
- .join("; ")
86
- .replace(/\s{2,}/gu, " ");
87
- return cleaned.length > max ? `${cleaned.slice(0, max)}…` : cleaned;
88
- }
89
- /** Wrap any thrown value into a {@link DocumentError} without losing its code. */
90
- export function asDocumentError(error, fallbackCode, backend) {
91
- if (error instanceof DocumentError)
92
- return error;
93
- const message = error instanceof Error
94
- ? sanitizeBackendOutput(error.message)
95
- : sanitizeBackendOutput(String(error));
96
- return new DocumentError(fallbackCode, message === "" ? "the operation failed" : message, {
97
- ...(backend === undefined ? {} : { backend }),
98
- cause: error,
99
- });
100
- }
101
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/documents/errors.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- /**
2
- * The document subsystem of `dsh-qa-surface` (§38).
3
- *
4
- * Markdown is the canonical source for everything the agent creates, the
5
- * backends that turn it into DOCX/PDF (or read it back out of them) live
6
- * behind the provider interfaces in `providers/`, and the four semantic tools
7
- * in `tools/` are the only surface the model ever sees. Everything else —
8
- * artifact bundles, manifests, template resolution, path containment, limits —
9
- * exists to make those four tools predictable.
10
- *
11
- * The public entry point is {@link installDocumentSubsystem}.
12
- */
13
- export { DOCUMENT_ERROR_CODES, DocumentError, asDocumentError, sanitizeBackendOutput, } from "./errors.js";
14
- export { DEFAULT_QA_DOCUMENTS_CONFIG, applyDocumentsEnvOverrides, resolveDocumentsConfig, retentionIntervalMs, } from "./config.js";
15
- export { createDocumentRuntime, DocumentRuntime, } from "./runtime.js";
16
- export { createDocumentTools, registerDocumentTools, DOCUMENT_TOOL_NAMES, DOCUMENT_CONVERT_TOOL, DOCUMENT_CREATE_TOOL, DOCUMENT_INSPECT_TOOL, DOCUMENT_TO_MARKDOWN_TOOL, } from "./tools/index.js";
17
- export { createProviders, } from "./providers/registry.js";
18
- export { documentCapabilities, documentHealth } from "./capabilities.js";
19
- export { ArtifactStore, sha256Hex, sha256OfFile } from "./artifacts/store.js";
20
- export { createArtifactId, createUlid, isArtifactId } from "./artifacts/ids.js";
21
- export { MANIFEST_FILE, MANIFEST_SCHEMA_VERSION, readManifest, writeManifest, } from "./artifacts/manifest.js";
22
- export { BUILTIN_TEMPLATE_NAME, TEMPLATE_MANIFEST_FILE, loadTemplateRegistry, templateNames, } from "./templates/registry.js";
23
- export { resolveTemplate, } from "./templates/resolver.js";
24
- export { CONVERSION_ROUTES } from "./orchestrator/convert-document.js";
25
- export { defaultArtifactRoot, resolveDocumentScope, } from "./orchestrator/scope.js";
26
- export { silentDocumentLogger, } from "./orchestrator/runtime-deps.js";
27
- export { assertInsideRoot, canonicalizeForContainment, isInsideRoot, resolveInsideRoot, sanitizeFilename, } from "./security/paths.js";
28
- export { DEFAULT_ASSET_MIME_TYPES, detectFormatByExtension, describeUnsupported, sniffDocument, supportedFormatOf, } from "./security/file-types.js";
29
- export { applyDirectives } from "./markdown/directives.js";
30
- export { normalizeExtractedMarkdown } from "./markdown/normalize.js";
31
- export { parseFrontMatter } from "./markdown/frontmatter.js";
32
- export { readPdfFacts, readDocxFacts, readDocxMetadata, } from "./inspect/facts.js";
33
- export { readZipEntries, readZipEntry, readZipEntryByName, } from "./inspect/zip.js";
34
- import { resolveDocumentsConfig, retentionIntervalMs, } from "./config.js";
35
- import { DocumentRuntime } from "./runtime.js";
36
- import { registerDocumentTools, DOCUMENT_TOOL_NAMES, } from "./tools/index.js";
37
- /**
38
- * Wire the subsystem into a host context: build the runtime, register the four
39
- * tools, and schedule the retention sweep when a storage root is pinned.
40
- *
41
- * `enabled: false` is answered with `undefined` — the caller then leaves both
42
- * the tools and the timer absent instead of registering inert definitions.
43
- */
44
- export function installDocumentSubsystem(ctx, options) {
45
- const config = resolveDocumentsConfig(options.config);
46
- if (!config.enabled)
47
- return undefined;
48
- const runtime = new DocumentRuntime({
49
- config,
50
- logger: options.logger,
51
- ...(options.seams === undefined ? {} : { seams: options.seams }),
52
- ...(options.now === undefined ? {} : { now: options.now }),
53
- });
54
- const disposeTools = registerDocumentTools({ register: options.register }, { runtime });
55
- if (config.retention.enabled && config.storage.root !== null) {
56
- const timer = setInterval(() => {
57
- void runtime.cleanup().catch((error) => {
58
- options.logger.warn("documents.retention.failed", {
59
- message: error instanceof Error ? error.message : String(error),
60
- });
61
- });
62
- }, retentionIntervalMs(config));
63
- timer.unref?.();
64
- ctx.effect(() => () => clearInterval(timer), "dsh-qa-surface.documents-retention");
65
- }
66
- options.logger.info("documents.installed", {
67
- tools: DOCUMENT_TOOL_NAMES,
68
- storageRoot: config.storage.root,
69
- templatesDefault: config.templates.default,
70
- docling: config.docling.enabled ? config.docling.baseUrl : "disabled",
71
- });
72
- return {
73
- runtime,
74
- toolNames: DOCUMENT_TOOL_NAMES,
75
- dispose: () => {
76
- disposeTools();
77
- },
78
- };
79
- }
80
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":"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"}