@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,147 +0,0 @@
1
- /**
2
- * Template registry (§12.2).
3
- *
4
- * A deployment describes its templates in a `manifest.yml` beside the
5
- * template files:
6
- *
7
- * ```yaml
8
- * templates:
9
- * default:
10
- * docx: ./docx/default.docx
11
- * qa-report:
12
- * docx: ./docx/qa-report.docx
13
- * typst: ./typst/qa-report
14
- * ```
15
- *
16
- * Every declared path is resolved against the template root and must stay
17
- * inside it: a registry file is operator input, but it is read from the
18
- * workspace, so it gets the same containment treatment as everything else
19
- * (§26.2).
20
- */
21
- import { readFile } from "node:fs/promises";
22
- import path from "node:path";
23
- import { parse as parseYaml } from "yaml";
24
- import { DocumentError, asDocumentError } from "../errors.js";
25
- import { canonicalizeForContainment, isInsideRoot } from "../security/paths.js";
26
- export const TEMPLATE_MANIFEST_FILE = "manifest.yml";
27
- /** The template name that always resolves, with or without a registry. */
28
- export const BUILTIN_TEMPLATE_NAME = "default";
29
- const EMPTY_REGISTRY = {
30
- templates: new Map(),
31
- warnings: [],
32
- };
33
- /** Located registry file inside a candidate root. */
34
- export async function findTemplateManifest(root) {
35
- const candidate = path.join(root, TEMPLATE_MANIFEST_FILE);
36
- try {
37
- const raw = await readFile(candidate, "utf8");
38
- return raw.trim() === "" ? undefined : candidate;
39
- }
40
- catch {
41
- return undefined;
42
- }
43
- }
44
- function readString(value) {
45
- return typeof value === "string" && value.trim() !== ""
46
- ? value.trim()
47
- : undefined;
48
- }
49
- /**
50
- * Load a registry from a template root. A missing root, a missing manifest or
51
- * an unreadable document all leave the builtin default in place and report a
52
- * warning — a broken template directory must not stop the agent from writing a
53
- * plain document, but it must not be silent either.
54
- */
55
- export async function loadTemplateRegistry(root) {
56
- if (root === undefined)
57
- return EMPTY_REGISTRY;
58
- const canonicalRoot = await canonicalizeForContainment(root);
59
- const manifestPath = await findTemplateManifest(canonicalRoot);
60
- if (manifestPath === undefined) {
61
- return {
62
- root: canonicalRoot,
63
- templates: new Map(),
64
- warnings: [
65
- {
66
- code: "METADATA_PARTIALLY_EXTRACTED",
67
- message: `no ${TEMPLATE_MANIFEST_FILE} found under the configured template root; only the builtin "default" template is available`,
68
- details: { root: canonicalRoot },
69
- },
70
- ],
71
- };
72
- }
73
- let document;
74
- try {
75
- document = parseYaml(await readFile(manifestPath, "utf8"));
76
- }
77
- catch (error) {
78
- return {
79
- root: canonicalRoot,
80
- templates: new Map(),
81
- warnings: [
82
- {
83
- code: "METADATA_PARTIALLY_EXTRACTED",
84
- message: `the template registry is not valid YAML: ${error instanceof Error ? error.message : String(error)}`,
85
- details: { manifest: TEMPLATE_MANIFEST_FILE },
86
- },
87
- ],
88
- };
89
- }
90
- const section = document?.templates;
91
- if (section === null || typeof section !== "object") {
92
- throw new DocumentError("INVALID_TEMPLATE", `${TEMPLATE_MANIFEST_FILE} must declare a "templates" mapping`, { details: { manifest: TEMPLATE_MANIFEST_FILE } });
93
- }
94
- const templates = new Map();
95
- for (const [rawName, rawEntry] of Object.entries(section)) {
96
- const name = rawName.trim();
97
- if (name === "")
98
- continue;
99
- if (rawEntry === null || typeof rawEntry !== "object") {
100
- throw new DocumentError("INVALID_TEMPLATE", `template "${name}" must be a mapping with a docx and/or typst path`, { details: { template: name } });
101
- }
102
- const entry = rawEntry;
103
- const docx = readString(entry["docx"]);
104
- const typst = readString(entry["typst"]);
105
- if (docx === undefined && typst === undefined) {
106
- throw new DocumentError("INVALID_TEMPLATE", `template "${name}" declares neither a docx nor a typst path`, { details: { template: name } });
107
- }
108
- templates.set(name, {
109
- name,
110
- ...(docx === undefined
111
- ? {}
112
- : { docx: resolveTemplatePath(canonicalRoot, docx, name, "docx") }),
113
- ...(typst === undefined
114
- ? {}
115
- : { typst: resolveTemplatePath(canonicalRoot, typst, name, "typst") }),
116
- });
117
- }
118
- return { root: canonicalRoot, templates, warnings: [] };
119
- }
120
- function resolveTemplatePath(root, declared, templateName, kind) {
121
- const resolved = path.resolve(root, declared);
122
- if (!isInsideRoot(root, resolved)) {
123
- throw new DocumentError("PATH_NOT_ALLOWED", `the ${kind} path of template "${templateName}" leaves the template root`, { details: { template: templateName } });
124
- }
125
- return resolved;
126
- }
127
- export function templateNames(registry) {
128
- return [
129
- ...new Set([BUILTIN_TEMPLATE_NAME, ...registry.templates.keys()]),
130
- ].sort();
131
- }
132
- /** Load a registry from a candidate root, defaulting to a file-system probe. */
133
- export async function loadTemplateRegistryFrom(roots, probe) {
134
- for (const candidate of roots) {
135
- if (candidate === undefined)
136
- continue;
137
- try {
138
- if (await probe(candidate))
139
- return await loadTemplateRegistry(candidate);
140
- }
141
- catch (error) {
142
- throw asDocumentError(error, "INVALID_TEMPLATE");
143
- }
144
- }
145
- return EMPTY_REGISTRY;
146
- }
147
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/documents/templates/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGhF,MAAM,CAAC,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAiBrD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE/C,MAAM,cAAc,GAAqB;IACvC,SAAS,EAAE,IAAI,GAAG,EAAE;IACpB,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY;IAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QACrD,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;QACd,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAwB;IAExB,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC/D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,8BAA8B;oBACpC,OAAO,EAAE,MAAM,sBAAsB,6FAA6F;oBAClI,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;iBACjC;aACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,SAAS,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,8BAA8B;oBACpC,OAAO,EAAE,4CAA4C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC7G,OAAO,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE;iBAC9C;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAI,QAA2C,EAAE,SAAS,CAAC;IACxE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,GAAG,sBAAsB,qCAAqC,EAC9D,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE,EAAE,CAClD,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IACtD,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAC9C,OAAkC,CACnC,EAAE,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1B,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,aAAa,IAAI,mDAAmD,EACpE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,QAAmC,CAAC;QAClD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9C,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,aAAa,IAAI,4CAA4C,EAC7D,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE;YAClB,IAAI;YACJ,GAAG,CAAC,IAAI,KAAK,SAAS;gBACpB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,KAAK,KAAK,SAAS;gBACrB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,KAAK,EAAE,mBAAmB,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;SACzE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAY,EACZ,QAAgB,EAChB,YAAoB,EACpB,IAAY;IAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,OAAO,IAAI,sBAAsB,YAAY,4BAA4B,EACzE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CACxC,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAA0B;IACtD,OAAO;QACL,GAAG,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;KAClE,CAAC,IAAI,EAAE,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAsC,EACtC,KAA8C;IAE9C,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QACtC,IAAI,CAAC;YACH,IAAI,MAAM,KAAK,CAAC,SAAS,CAAC;gBAAE,OAAO,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,eAAe,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -1,59 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,125 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/documents/tools/convert.ts"],"names":[],"mappings":"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"}
@@ -1,187 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/documents/tools/create.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
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
@@ -1 +0,0 @@
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"}