@yadsh/dsh-qa-surface 0.5.0 → 0.6.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 (380) hide show
  1. package/README.md +206 -11
  2. package/compatibility.json +10 -1
  3. package/cordis.patch.yml +11 -1
  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/attestation.js +6 -0
  11. package/lib/attestation.js.map +1 -1
  12. package/lib/client/QaAccountsController.js +29 -0
  13. package/lib/client/QaAccountsController.js.map +1 -1
  14. package/lib/client/QaSessionController.js +205 -61
  15. package/lib/client/QaSessionController.js.map +1 -1
  16. package/lib/client/QaSurface.js +125 -56
  17. package/lib/client/QaSurface.js.map +1 -1
  18. package/lib/client/QaSurfaceGuard.js +96 -0
  19. package/lib/client/QaSurfaceGuard.js.map +1 -0
  20. package/lib/client/QaTranscriptAdapter.js +11 -5
  21. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  22. package/lib/client/attestation.js +14 -2
  23. package/lib/client/attestation.js.map +1 -1
  24. package/lib/client/components/QaChangelog.js +44 -0
  25. package/lib/client/components/QaChangelog.js.map +1 -1
  26. package/lib/client/components/QaComposer.js +1 -1
  27. package/lib/client/components/QaComposer.js.map +1 -1
  28. package/lib/client/components/QaHeader.js +2 -8
  29. package/lib/client/components/QaHeader.js.map +1 -1
  30. package/lib/client/components/QaMessage.js +20 -7
  31. package/lib/client/components/QaMessage.js.map +1 -1
  32. package/lib/client/components/QaModal.js +24 -6
  33. package/lib/client/components/QaModal.js.map +1 -1
  34. package/lib/client/components/QaSidebar.js +2 -6
  35. package/lib/client/components/QaSidebar.js.map +1 -1
  36. package/lib/client/components/QaSourcesPanel.js +6 -5
  37. package/lib/client/components/QaSourcesPanel.js.map +1 -1
  38. package/lib/client/components/QaWidthHandle.js +21 -1
  39. package/lib/client/components/QaWidthHandle.js.map +1 -1
  40. package/lib/client/components/surface-utils.js +2 -0
  41. package/lib/client/components/surface-utils.js.map +1 -1
  42. package/lib/client/index.js +72 -24
  43. package/lib/client/index.js.map +1 -1
  44. package/lib/client/panels/PanelHost.js +209 -0
  45. package/lib/client/panels/PanelHost.js.map +1 -0
  46. package/lib/client/panels/PanelLauncher.js +39 -0
  47. package/lib/client/panels/PanelLauncher.js.map +1 -0
  48. package/lib/client/panels/contract.js +2 -0
  49. package/lib/client/panels/contract.js.map +1 -0
  50. package/lib/client/panels/index.js +2 -0
  51. package/lib/client/panels/index.js.map +1 -0
  52. package/lib/client/panels/registry.js +171 -0
  53. package/lib/client/panels/registry.js.map +1 -0
  54. package/lib/client/project-session-state.js +13 -5
  55. package/lib/client/project-session-state.js.map +1 -1
  56. package/lib/client/settings/card.js +2 -2
  57. package/lib/client/settings/card.js.map +1 -1
  58. package/lib/client/settings/sections/accounts.js +3 -1
  59. package/lib/client/settings/sections/accounts.js.map +1 -1
  60. package/lib/client/settings/sections/documents.js +88 -0
  61. package/lib/client/settings/sections/documents.js.map +1 -0
  62. package/lib/client/settings/sections/interface.js +2 -0
  63. package/lib/client/settings/sections/interface.js.map +1 -1
  64. package/lib/client/settings/sections.js +1 -0
  65. package/lib/client/settings/sections.js.map +1 -1
  66. package/lib/client/settings-extensions/contract.js +2 -0
  67. package/lib/client/settings-extensions/contract.js.map +1 -0
  68. package/lib/client/settings-extensions/index.js +2 -0
  69. package/lib/client/settings-extensions/index.js.map +1 -0
  70. package/lib/client/settings-extensions/registry.js +63 -0
  71. package/lib/client/settings-extensions/registry.js.map +1 -0
  72. package/lib/client/settlement.js +51 -5
  73. package/lib/client/settlement.js.map +1 -1
  74. package/lib/client/source-preview.js +24 -0
  75. package/lib/client/source-preview.js.map +1 -0
  76. package/lib/client/styles.js +158 -32
  77. package/lib/client/styles.js.map +1 -1
  78. package/lib/client/subagent-codenames.js +109 -0
  79. package/lib/client/subagent-codenames.js.map +1 -0
  80. package/lib/client/types.js +2 -0
  81. package/lib/client/types.js.map +1 -1
  82. package/lib/client/user-settings/GeneralSettingsPage.js +13 -0
  83. package/lib/client/user-settings/GeneralSettingsPage.js.map +1 -0
  84. package/lib/client/user-settings/ProfileSettingsPage.js +59 -0
  85. package/lib/client/user-settings/ProfileSettingsPage.js.map +1 -0
  86. package/lib/client/user-settings/SkillCatalog.js +23 -0
  87. package/lib/client/user-settings/SkillCatalog.js.map +1 -0
  88. package/lib/client/user-settings/SkillEditor.js +89 -0
  89. package/lib/client/user-settings/SkillEditor.js.map +1 -0
  90. package/lib/client/user-settings/SkillToolPicker.js +58 -0
  91. package/lib/client/user-settings/SkillToolPicker.js.map +1 -0
  92. package/lib/client/user-settings/SkillsSettingsPage.js +171 -0
  93. package/lib/client/user-settings/SkillsSettingsPage.js.map +1 -0
  94. package/lib/client/user-settings/StartersSettingsPage.js +78 -0
  95. package/lib/client/user-settings/StartersSettingsPage.js.map +1 -0
  96. package/lib/client/user-settings/UserSettingsDialog.js +50 -0
  97. package/lib/client/user-settings/UserSettingsDialog.js.map +1 -0
  98. package/lib/client/user-settings/copy.js +84 -0
  99. package/lib/client/user-settings/copy.js.map +1 -0
  100. package/lib/client/user-settings/draft.js +127 -0
  101. package/lib/client/user-settings/draft.js.map +1 -0
  102. package/lib/client/user-settings/fields.js +24 -0
  103. package/lib/client/user-settings/fields.js.map +1 -0
  104. package/lib/client.js +5554 -1415
  105. package/lib/client.js.map +1 -1
  106. package/lib/config-resolvers/accounts.js +30 -0
  107. package/lib/config-resolvers/accounts.js.map +1 -1
  108. package/lib/config-resolvers/defaults.js +23 -0
  109. package/lib/config-resolvers/defaults.js.map +1 -1
  110. package/lib/config-resolvers/tools.js +37 -0
  111. package/lib/config-resolvers/tools.js.map +1 -0
  112. package/lib/config-resolvers/ui.js +2 -0
  113. package/lib/config-resolvers/ui.js.map +1 -1
  114. package/lib/config.js +288 -0
  115. package/lib/config.js.map +1 -1
  116. package/lib/documents/artifacts/ids.js +43 -0
  117. package/lib/documents/artifacts/ids.js.map +1 -0
  118. package/lib/documents/artifacts/manifest.js +66 -0
  119. package/lib/documents/artifacts/manifest.js.map +1 -0
  120. package/lib/documents/artifacts/store.js +169 -0
  121. package/lib/documents/artifacts/store.js.map +1 -0
  122. package/lib/documents/capabilities.js +93 -0
  123. package/lib/documents/capabilities.js.map +1 -0
  124. package/lib/documents/config.js +302 -0
  125. package/lib/documents/config.js.map +1 -0
  126. package/lib/documents/defaults.js +78 -0
  127. package/lib/documents/defaults.js.map +1 -0
  128. package/lib/documents/errors.js +101 -0
  129. package/lib/documents/errors.js.map +1 -0
  130. package/lib/documents/index.js +80 -0
  131. package/lib/documents/index.js.map +1 -0
  132. package/lib/documents/inspect/facts.js +161 -0
  133. package/lib/documents/inspect/facts.js.map +1 -0
  134. package/lib/documents/inspect/zip.js +108 -0
  135. package/lib/documents/inspect/zip.js.map +1 -0
  136. package/lib/documents/markdown/directives.js +135 -0
  137. package/lib/documents/markdown/directives.js.map +1 -0
  138. package/lib/documents/markdown/frontmatter.js +35 -0
  139. package/lib/documents/markdown/frontmatter.js.map +1 -0
  140. package/lib/documents/markdown/normalize.js +113 -0
  141. package/lib/documents/markdown/normalize.js.map +1 -0
  142. package/lib/documents/orchestrator/assets.js +243 -0
  143. package/lib/documents/orchestrator/assets.js.map +1 -0
  144. package/lib/documents/orchestrator/convert-document.js +186 -0
  145. package/lib/documents/orchestrator/convert-document.js.map +1 -0
  146. package/lib/documents/orchestrator/create-document.js +292 -0
  147. package/lib/documents/orchestrator/create-document.js.map +1 -0
  148. package/lib/documents/orchestrator/extract-document.js +162 -0
  149. package/lib/documents/orchestrator/extract-document.js.map +1 -0
  150. package/lib/documents/orchestrator/inspect-document.js +89 -0
  151. package/lib/documents/orchestrator/inspect-document.js.map +1 -0
  152. package/lib/documents/orchestrator/runtime-deps.js +59 -0
  153. package/lib/documents/orchestrator/runtime-deps.js.map +1 -0
  154. package/lib/documents/orchestrator/scope.js +132 -0
  155. package/lib/documents/orchestrator/scope.js.map +1 -0
  156. package/lib/documents/providers/docling.js +247 -0
  157. package/lib/documents/providers/docling.js.map +1 -0
  158. package/lib/documents/providers/libreoffice.js +130 -0
  159. package/lib/documents/providers/libreoffice.js.map +1 -0
  160. package/lib/documents/providers/markitdown.js +89 -0
  161. package/lib/documents/providers/markitdown.js.map +1 -0
  162. package/lib/documents/providers/pandoc.js +161 -0
  163. package/lib/documents/providers/pandoc.js.map +1 -0
  164. package/lib/documents/providers/process.js +164 -0
  165. package/lib/documents/providers/process.js.map +1 -0
  166. package/lib/documents/providers/registry.js +152 -0
  167. package/lib/documents/providers/registry.js.map +1 -0
  168. package/lib/documents/providers/shared.js +75 -0
  169. package/lib/documents/providers/shared.js.map +1 -0
  170. package/lib/documents/runtime.js +114 -0
  171. package/lib/documents/runtime.js.map +1 -0
  172. package/lib/documents/security/file-types.js +188 -0
  173. package/lib/documents/security/file-types.js.map +1 -0
  174. package/lib/documents/security/limits.js +78 -0
  175. package/lib/documents/security/limits.js.map +1 -0
  176. package/lib/documents/security/mime.js +43 -0
  177. package/lib/documents/security/mime.js.map +1 -0
  178. package/lib/documents/security/paths.js +133 -0
  179. package/lib/documents/security/paths.js.map +1 -0
  180. package/lib/documents/templates/registry.js +147 -0
  181. package/lib/documents/templates/registry.js.map +1 -0
  182. package/lib/documents/templates/resolver.js +59 -0
  183. package/lib/documents/templates/resolver.js.map +1 -0
  184. package/lib/documents/tools/convert.js +125 -0
  185. package/lib/documents/tools/convert.js.map +1 -0
  186. package/lib/documents/tools/create.js +187 -0
  187. package/lib/documents/tools/create.js.map +1 -0
  188. package/lib/documents/tools/index.js +41 -0
  189. package/lib/documents/tools/index.js.map +1 -0
  190. package/lib/documents/tools/inspect.js +135 -0
  191. package/lib/documents/tools/inspect.js.map +1 -0
  192. package/lib/documents/tools/shared.js +88 -0
  193. package/lib/documents/tools/shared.js.map +1 -0
  194. package/lib/documents/tools/to-markdown.js +125 -0
  195. package/lib/documents/tools/to-markdown.js.map +1 -0
  196. package/lib/documents/types.js +12 -0
  197. package/lib/documents/types.js.map +1 -0
  198. package/lib/index.js +231 -22
  199. package/lib/index.js.map +1 -1
  200. package/lib/integration-principals.js +22 -0
  201. package/lib/integration-principals.js.map +1 -0
  202. package/lib/lockdown-policy.js +15 -3
  203. package/lib/lockdown-policy.js.map +1 -1
  204. package/lib/personal-skills/errors.js +9 -0
  205. package/lib/personal-skills/errors.js.map +1 -0
  206. package/lib/personal-skills/host.js +80 -0
  207. package/lib/personal-skills/host.js.map +1 -0
  208. package/lib/personal-skills/index.js +10 -0
  209. package/lib/personal-skills/index.js.map +1 -0
  210. package/lib/personal-skills/paths.js +127 -0
  211. package/lib/personal-skills/paths.js.map +1 -0
  212. package/lib/personal-skills/provider.js +109 -0
  213. package/lib/personal-skills/provider.js.map +1 -0
  214. package/lib/personal-skills/remotes.js +40 -0
  215. package/lib/personal-skills/remotes.js.map +1 -0
  216. package/lib/personal-skills/service.js +686 -0
  217. package/lib/personal-skills/service.js.map +1 -0
  218. package/lib/personal-skills/skill-file.js +278 -0
  219. package/lib/personal-skills/skill-file.js.map +1 -0
  220. package/lib/personal-skills/skill-format.js +202 -0
  221. package/lib/personal-skills/skill-format.js.map +1 -0
  222. package/lib/personal-skills/watcher.js +96 -0
  223. package/lib/personal-skills/watcher.js.map +1 -0
  224. package/lib/profile.js +6 -4
  225. package/lib/profile.js.map +1 -1
  226. package/lib/prompt-notes.js +19 -0
  227. package/lib/prompt-notes.js.map +1 -1
  228. package/lib/provenance/file-preview.js +68 -21
  229. package/lib/provenance/file-preview.js.map +1 -1
  230. package/lib/provenance/host-store.js +44 -11
  231. package/lib/provenance/host-store.js.map +1 -1
  232. package/lib/provenance/index.js +1 -0
  233. package/lib/provenance/index.js.map +1 -1
  234. package/lib/provenance/normalize.js +3 -1
  235. package/lib/provenance/normalize.js.map +1 -1
  236. package/lib/provenance/snapshot-store.js +154 -0
  237. package/lib/provenance/snapshot-store.js.map +1 -0
  238. package/lib/qa-tools/activation-detector.js +53 -0
  239. package/lib/qa-tools/activation-detector.js.map +1 -0
  240. package/lib/qa-tools/activation-manager.js +111 -0
  241. package/lib/qa-tools/activation-manager.js.map +1 -0
  242. package/lib/qa-tools/catalog.js +108 -0
  243. package/lib/qa-tools/catalog.js.map +1 -0
  244. package/lib/qa-tools/durable-marker.js +115 -0
  245. package/lib/qa-tools/durable-marker.js.map +1 -0
  246. package/lib/qa-tools/index.js +83 -0
  247. package/lib/qa-tools/index.js.map +1 -0
  248. package/lib/qa-tools/lifecycle.js +64 -0
  249. package/lib/qa-tools/lifecycle.js.map +1 -0
  250. package/lib/qa-tools/types.js +2 -0
  251. package/lib/qa-tools/types.js.map +1 -0
  252. package/lib/resolve-config.js +5 -0
  253. package/lib/resolve-config.js.map +1 -1
  254. package/lib/secure-session.js +75 -18
  255. package/lib/secure-session.js.map +1 -1
  256. package/lib/starters.js +117 -0
  257. package/lib/starters.js.map +1 -0
  258. package/lib/typert.host.js +767 -22
  259. package/lib/typert.remote-client.d.ts +17 -1
  260. package/lib/typert.remote-client.js +609 -17
  261. package/lib/types/account-remotes.d.ts +3 -1
  262. package/lib/types/accounts/errors.d.ts +1 -1
  263. package/lib/types/accounts/file.d.ts +10 -0
  264. package/lib/types/accounts/store.d.ts +7 -1
  265. package/lib/types/attestation.d.ts +2 -0
  266. package/lib/types/client/QaAccountsController.d.ts +7 -1
  267. package/lib/types/client/QaSessionController.d.ts +14 -0
  268. package/lib/types/client/QaSurface.d.ts +14 -4
  269. package/lib/types/client/QaSurfaceGuard.d.ts +27 -0
  270. package/lib/types/client/QaTranscriptAdapter.d.ts +7 -0
  271. package/lib/types/client/attestation.d.ts +8 -1
  272. package/lib/types/client/components/QaComposer.d.ts +3 -1
  273. package/lib/types/client/components/QaHeader.d.ts +3 -1
  274. package/lib/types/client/components/QaModal.d.ts +5 -4
  275. package/lib/types/client/components/QaSidebar.d.ts +8 -11
  276. package/lib/types/client/components/QaWidthHandle.d.ts +13 -0
  277. package/lib/types/client/index.d.ts +1 -0
  278. package/lib/types/client/panels/PanelHost.d.ts +18 -0
  279. package/lib/types/client/panels/PanelLauncher.d.ts +5 -0
  280. package/lib/types/client/panels/contract.d.ts +83 -0
  281. package/lib/types/client/panels/index.d.ts +3 -0
  282. package/lib/types/client/panels/registry.d.ts +40 -0
  283. package/lib/types/client/project-session-state.d.ts +7 -0
  284. package/lib/types/client/settings/sections/documents.d.ts +13 -0
  285. package/lib/types/client/settings/sections.d.ts +1 -0
  286. package/lib/types/client/settings-extensions/contract.d.ts +32 -0
  287. package/lib/types/client/settings-extensions/index.d.ts +3 -0
  288. package/lib/types/client/settings-extensions/registry.d.ts +15 -0
  289. package/lib/types/client/settlement.d.ts +41 -5
  290. package/lib/types/client/source-preview.d.ts +8 -0
  291. package/lib/types/client/styles.d.ts +2 -0
  292. package/lib/types/client/subagent-codenames.d.ts +18 -0
  293. package/lib/types/client/types.d.ts +35 -3
  294. package/lib/types/client/user-settings/GeneralSettingsPage.d.ts +14 -0
  295. package/lib/types/client/user-settings/ProfileSettingsPage.d.ts +18 -0
  296. package/lib/types/client/user-settings/SkillCatalog.d.ts +16 -0
  297. package/lib/types/client/user-settings/SkillEditor.d.ts +42 -0
  298. package/lib/types/client/user-settings/SkillToolPicker.d.ts +17 -0
  299. package/lib/types/client/user-settings/SkillsSettingsPage.d.ts +15 -0
  300. package/lib/types/client/user-settings/StartersSettingsPage.d.ts +14 -0
  301. package/lib/types/client/user-settings/UserSettingsDialog.d.ts +43 -0
  302. package/lib/types/client/user-settings/copy.d.ts +25 -0
  303. package/lib/types/client/user-settings/draft.d.ts +51 -0
  304. package/lib/types/client/user-settings/fields.d.ts +43 -0
  305. package/lib/types/config-resolvers/tools.d.ts +6 -0
  306. package/lib/types/documents/artifacts/ids.d.ts +14 -0
  307. package/lib/types/documents/artifacts/manifest.d.ts +32 -0
  308. package/lib/types/documents/artifacts/store.d.ts +67 -0
  309. package/lib/types/documents/capabilities.d.ts +32 -0
  310. package/lib/types/documents/config.d.ts +27 -0
  311. package/lib/types/documents/defaults.d.ts +161 -0
  312. package/lib/types/documents/errors.d.ts +42 -0
  313. package/lib/types/documents/index.d.ts +63 -0
  314. package/lib/types/documents/inspect/facts.d.ts +43 -0
  315. package/lib/types/documents/inspect/zip.d.ts +28 -0
  316. package/lib/types/documents/markdown/directives.d.ts +39 -0
  317. package/lib/types/documents/markdown/frontmatter.d.ts +15 -0
  318. package/lib/types/documents/markdown/normalize.d.ts +30 -0
  319. package/lib/types/documents/orchestrator/assets.d.ts +55 -0
  320. package/lib/types/documents/orchestrator/convert-document.d.ts +25 -0
  321. package/lib/types/documents/orchestrator/create-document.d.ts +18 -0
  322. package/lib/types/documents/orchestrator/extract-document.d.ts +24 -0
  323. package/lib/types/documents/orchestrator/inspect-document.d.ts +12 -0
  324. package/lib/types/documents/orchestrator/runtime-deps.d.ts +43 -0
  325. package/lib/types/documents/orchestrator/scope.d.ts +52 -0
  326. package/lib/types/documents/providers/docling.d.ts +54 -0
  327. package/lib/types/documents/providers/libreoffice.d.ts +40 -0
  328. package/lib/types/documents/providers/markitdown.d.ts +28 -0
  329. package/lib/types/documents/providers/pandoc.d.ts +42 -0
  330. package/lib/types/documents/providers/process.d.ts +54 -0
  331. package/lib/types/documents/providers/registry.d.ts +68 -0
  332. package/lib/types/documents/providers/shared.d.ts +27 -0
  333. package/lib/types/documents/runtime.d.ts +59 -0
  334. package/lib/types/documents/security/file-types.d.ts +39 -0
  335. package/lib/types/documents/security/limits.d.ts +24 -0
  336. package/lib/types/documents/security/mime.d.ts +13 -0
  337. package/lib/types/documents/security/paths.d.ts +38 -0
  338. package/lib/types/documents/templates/registry.d.ts +50 -0
  339. package/lib/types/documents/templates/resolver.d.ts +30 -0
  340. package/lib/types/documents/tools/convert.d.ts +9 -0
  341. package/lib/types/documents/tools/create.d.ts +14 -0
  342. package/lib/types/documents/tools/index.d.ts +33 -0
  343. package/lib/types/documents/tools/inspect.d.ts +9 -0
  344. package/lib/types/documents/tools/shared.d.ts +77 -0
  345. package/lib/types/documents/tools/to-markdown.d.ts +12 -0
  346. package/lib/types/documents/types.d.ts +294 -0
  347. package/lib/types/index.d.ts +75 -3
  348. package/lib/types/integration-principals.d.ts +9 -0
  349. package/lib/types/lockdown-policy.d.ts +12 -2
  350. package/lib/types/personal-skills/errors.d.ts +11 -0
  351. package/lib/types/personal-skills/host.d.ts +42 -0
  352. package/lib/types/personal-skills/index.d.ts +10 -0
  353. package/lib/types/personal-skills/paths.d.ts +39 -0
  354. package/lib/types/personal-skills/provider.d.ts +33 -0
  355. package/lib/types/personal-skills/remotes.d.ts +35 -0
  356. package/lib/types/personal-skills/service.d.ts +131 -0
  357. package/lib/types/personal-skills/skill-file.d.ts +64 -0
  358. package/lib/types/personal-skills/skill-format.d.ts +100 -0
  359. package/lib/types/personal-skills/watcher.d.ts +39 -0
  360. package/lib/types/profile.d.ts +13 -0
  361. package/lib/types/prompt-notes.d.ts +9 -0
  362. package/lib/types/provenance/file-preview.d.ts +47 -4
  363. package/lib/types/provenance/host-store.d.ts +7 -1
  364. package/lib/types/provenance/index.d.ts +1 -0
  365. package/lib/types/provenance/snapshot-store.d.ts +23 -0
  366. package/lib/types/qa-tools/activation-detector.d.ts +29 -0
  367. package/lib/types/qa-tools/activation-manager.d.ts +47 -0
  368. package/lib/types/qa-tools/catalog.d.ts +40 -0
  369. package/lib/types/qa-tools/durable-marker.d.ts +16 -0
  370. package/lib/types/qa-tools/index.d.ts +40 -0
  371. package/lib/types/qa-tools/lifecycle.d.ts +44 -0
  372. package/lib/types/qa-tools/types.d.ts +45 -0
  373. package/lib/types/secure-session.d.ts +33 -2
  374. package/lib/types/starters.d.ts +45 -0
  375. package/lib/types/types.d.ts +208 -3
  376. package/package.json +22 -9
  377. package/scripts/repair-session-events.mjs +260 -0
  378. package/lib/client/components/QaProfile.js +0 -64
  379. package/lib/client/components/QaProfile.js.map +0 -1
  380. package/lib/types/client/components/QaProfile.d.ts +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/personal-skills/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,278 @@
1
+ import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
2
+ import { KNOWN_SKILL_FIELDS, PRESERVED_SKILL_FIELDS, normalizeAllowedTools, skillNameProblem, skillWarning, } from "./skill-format.js";
3
+ /**
4
+ * The YAML half of the portable `SKILL.md` format: reading a file into its
5
+ * canonical shape, and writing one back. Only the Host loads this module — the
6
+ * editor reads a skill through the Host's DTOs and asks it to serialize a
7
+ * draft, because a YAML library carries a Node build whose `require` calls the
8
+ * browser module loader cannot answer. The rules that need no YAML live in
9
+ * `skill-format.js`, which both sides share.
10
+ *
11
+ * The grammar mirrors the upstream filesystem provider, which is what decides
12
+ * whether a file becomes a skill at all: `---` fences on the first and a later
13
+ * line, a YAML mapping, a kebab-case `name`, a non-empty `description`, the
14
+ * `user-invocable` / `disable-model-invocation` booleans with the accepted
15
+ * spellings, and silent tolerance of every other key. Where the upstream
16
+ * provider would drop a file entirely, this parser reports a blocking code so
17
+ * the editor can say why the skill never reaches the catalog.
18
+ */
19
+ /** Spellings the upstream parser throws on, dropping the skill with them. */
20
+ const LEGACY_INVOCATION_KEYS = [
21
+ "disableModelInvocation",
22
+ "modelInvocable",
23
+ "userInvocable",
24
+ ];
25
+ const TRUE_WORDS = new Set(["true", "yes", "on", "1"]);
26
+ const FALSE_WORDS = new Set(["false", "no", "off", "0"]);
27
+ /**
28
+ * Coerce one YAML node to a JSON value, or undefined when JSON cannot carry
29
+ * it: preserved frontmatter crosses a JSON bridge, so what crosses it has to
30
+ * be exactly what a Save writes back.
31
+ */
32
+ export function toJsonValue(value) {
33
+ if (value === null)
34
+ return null;
35
+ switch (typeof value) {
36
+ case "string":
37
+ case "boolean":
38
+ return value;
39
+ case "number":
40
+ return Number.isFinite(value) ? value : undefined;
41
+ case "object":
42
+ break;
43
+ default:
44
+ return undefined;
45
+ }
46
+ if (Array.isArray(value)) {
47
+ const items = [];
48
+ for (const entry of value) {
49
+ const json = toJsonValue(entry);
50
+ if (json === undefined)
51
+ return undefined;
52
+ items.push(json);
53
+ }
54
+ return items;
55
+ }
56
+ // Only a plain mapping survives: a Buffer, a Date or any other class
57
+ // instance would otherwise be flattened into its own enumerable keys.
58
+ const prototype = Object.getPrototypeOf(value);
59
+ if (prototype !== Object.prototype && prototype !== null)
60
+ return undefined;
61
+ const asObject = asRecord(value);
62
+ if (asObject === undefined)
63
+ return undefined;
64
+ const result = {};
65
+ for (const [key, entry] of Object.entries(asObject)) {
66
+ const json = toJsonValue(entry);
67
+ if (json === undefined)
68
+ return undefined;
69
+ result[key] = json;
70
+ }
71
+ return result;
72
+ }
73
+ function asRecord(value) {
74
+ return value !== null && typeof value === "object" && !Array.isArray(value)
75
+ ? value
76
+ : undefined;
77
+ }
78
+ /**
79
+ * Split the leading `---` block off a skill file. A file whose first line is
80
+ * not the fence is not a skill at all: the body alone carries no name.
81
+ */
82
+ function splitFrontmatter(raw) {
83
+ const text = raw.replace(/^\uFEFF/u, "");
84
+ const firstEnd = text.indexOf("\n");
85
+ if (firstEnd < 0)
86
+ return { kind: "missing" };
87
+ if (text.slice(0, firstEnd).replace(/\r$/u, "") !== "---") {
88
+ return { kind: "missing" };
89
+ }
90
+ let cursor = firstEnd + 1;
91
+ for (;;) {
92
+ const lineEnd = text.indexOf("\n", cursor);
93
+ const end = lineEnd < 0 ? text.length : lineEnd;
94
+ if (text.slice(cursor, end).replace(/\r$/u, "") === "---") {
95
+ return {
96
+ kind: "ok",
97
+ yamlText: text.slice(firstEnd + 1, cursor),
98
+ body: text.slice(end + 1),
99
+ };
100
+ }
101
+ if (lineEnd < 0)
102
+ return { kind: "unterminated" };
103
+ cursor = lineEnd + 1;
104
+ }
105
+ }
106
+ /** Read one frontmatter boolean with the spellings upstream accepts. */
107
+ function frontmatterBoolean(value) {
108
+ if (typeof value === "boolean")
109
+ return value;
110
+ if (typeof value === "number") {
111
+ if (value === 1)
112
+ return true;
113
+ if (value === 0)
114
+ return false;
115
+ return undefined;
116
+ }
117
+ if (typeof value !== "string")
118
+ return undefined;
119
+ const text = value.trim().toLowerCase();
120
+ if (TRUE_WORDS.has(text))
121
+ return true;
122
+ if (FALSE_WORDS.has(text))
123
+ return false;
124
+ return undefined;
125
+ }
126
+ /** The first line of a parser message, clipped for the wire. */
127
+ function firstLine(message) {
128
+ return (message.split("\n")[0] ?? "").slice(0, 200);
129
+ }
130
+ /** Parse one `SKILL.md` into its canonical shape plus read-time warnings. */
131
+ export function parseSkillFile(raw) {
132
+ const split = splitFrontmatter(raw);
133
+ if (split.kind === "missing") {
134
+ return { ok: false, code: "frontmatter-missing", detail: null };
135
+ }
136
+ if (split.kind === "unterminated") {
137
+ return { ok: false, code: "frontmatter-invalid", detail: "unterminated" };
138
+ }
139
+ let parsed;
140
+ try {
141
+ parsed = parseYaml(split.yamlText);
142
+ }
143
+ catch (error) {
144
+ return {
145
+ ok: false,
146
+ code: "frontmatter-invalid",
147
+ detail: firstLine(error instanceof Error ? error.message : String(error)),
148
+ };
149
+ }
150
+ const front = asRecord(parsed);
151
+ if (front === undefined) {
152
+ return { ok: false, code: "frontmatter-invalid", detail: "not-a-mapping" };
153
+ }
154
+ const rawName = front.name;
155
+ const name = typeof rawName === "string"
156
+ ? rawName.trim()
157
+ : rawName === undefined
158
+ ? ""
159
+ : String(rawName);
160
+ const nameProblem = skillNameProblem(name);
161
+ if (nameProblem !== null) {
162
+ return { ok: false, code: nameProblem, detail: null };
163
+ }
164
+ const rawDescription = front.description;
165
+ const description = typeof rawDescription === "string" ? rawDescription.trim() : "";
166
+ if (description === "") {
167
+ return { ok: false, code: "description-required", detail: null };
168
+ }
169
+ const legacy = LEGACY_INVOCATION_KEYS.find((key) => key in front);
170
+ if (legacy !== undefined) {
171
+ return { ok: false, code: "invocation-legacy-key", detail: legacy };
172
+ }
173
+ const warnings = [];
174
+ let modelInvocable = true;
175
+ let userInvocable = true;
176
+ for (const key of ["disable-model-invocation", "user-invocable"]) {
177
+ if (!(key in front))
178
+ continue;
179
+ const value = frontmatterBoolean(front[key]);
180
+ if (value === undefined) {
181
+ return { ok: false, code: "invocation-invalid", detail: key };
182
+ }
183
+ if (key === "disable-model-invocation")
184
+ modelInvocable = !value;
185
+ else
186
+ userInvocable = value;
187
+ }
188
+ let whenToUse = null;
189
+ if (front.whenToUse !== undefined && front.whenToUse !== null) {
190
+ if (typeof front.whenToUse === "string") {
191
+ const trimmed = front.whenToUse.trim();
192
+ whenToUse = trimmed === "" ? null : trimmed;
193
+ }
194
+ else {
195
+ warnings.push(skillWarning("field-type-invalid", "whenToUse", "whenToUse"));
196
+ }
197
+ }
198
+ const normalized = normalizeAllowedTools(front["allowed-tools"]);
199
+ if (normalized === undefined) {
200
+ return { ok: false, code: "allowed-tools-invalid", detail: null };
201
+ }
202
+ if (normalized.rejected.length > 0) {
203
+ warnings.push(skillWarning("tool-name-invalid", "tools", normalized.rejected.join(", ")));
204
+ }
205
+ const extraFrontmatter = {};
206
+ for (const [key, value] of Object.entries(front)) {
207
+ if (KNOWN_SKILL_FIELDS.has(key))
208
+ continue;
209
+ const json = toJsonValue(value);
210
+ if (json === undefined) {
211
+ // A YAML-only node (a tagged timestamp, a binary) cannot cross the JSON
212
+ // bridge this editor reads over; say so rather than drop it in silence.
213
+ warnings.push(skillWarning("field-type-invalid", null, key));
214
+ continue;
215
+ }
216
+ extraFrontmatter[key] = json;
217
+ if (!PRESERVED_SKILL_FIELDS.has(key)) {
218
+ warnings.push(skillWarning("unknown-field", null, key));
219
+ }
220
+ }
221
+ return {
222
+ ok: true,
223
+ value: {
224
+ name,
225
+ description,
226
+ whenToUse,
227
+ modelInvocable,
228
+ userInvocable,
229
+ allowedTools: normalized.tools,
230
+ rejectedTools: normalized.rejected,
231
+ extraFrontmatter,
232
+ body: split.body.trim(),
233
+ warnings,
234
+ },
235
+ };
236
+ }
237
+ /**
238
+ * Write one `SKILL.md` from a draft. Known fields are emitted first in the
239
+ * canonical order every reader of this plugin sees; preserved foreign fields
240
+ * follow in the order they were read, so a skill authored elsewhere keeps its
241
+ * extra frontmatter across a Save in the editor.
242
+ */
243
+ export function serializeSkillFile(draft) {
244
+ const front = {
245
+ name: draft.name,
246
+ description: draft.description,
247
+ };
248
+ const whenToUse = draft.whenToUse?.trim() ?? "";
249
+ if (whenToUse !== "")
250
+ front.whenToUse = whenToUse;
251
+ front["user-invocable"] = draft.userInvocable;
252
+ front["disable-model-invocation"] = !draft.modelInvocable;
253
+ if (draft.allowedTools.length > 0) {
254
+ front["allowed-tools"] = draft.allowedTools.join(" ");
255
+ }
256
+ for (const [key, value] of Object.entries(draft.extraFrontmatter)) {
257
+ if (value === undefined || key in front)
258
+ continue;
259
+ front[key] = value;
260
+ }
261
+ const yamlText = stringifyYaml(front, { lineWidth: 0 }).trimEnd();
262
+ const body = draft.body.trim();
263
+ return body === ""
264
+ ? `---\n${yamlText}\n---\n`
265
+ : `---\n${yamlText}\n---\n\n${body}\n`;
266
+ }
267
+ /**
268
+ * The markdown body of a skill file, whether or not its frontmatter parses.
269
+ * A file the editor cannot open still has to show its instructions, so a
270
+ * malformed block yields the text below it and a file without a block yields
271
+ * itself.
272
+ */
273
+ export function skillFileBody(raw) {
274
+ const split = splitFrontmatter(raw);
275
+ return split.kind === "ok" ? split.body.trim() : raw.trim();
276
+ }
277
+ export * from "./skill-format.js";
278
+ //# sourceMappingURL=skill-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-file.js","sourceRoot":"","sources":["../../src/personal-skills/skill-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * The rules of the `SKILL.md` format that need no YAML: the name grammar, the
3
+ * declared-tool list, the draft limits, and where a personal root may sit.
4
+ *
5
+ * This module is deliberately free of Node builtins *and* of the YAML
6
+ * dependency, because the browser editor imports it: a YAML library ships a
7
+ * Node build beside its browser one, and the DSH module loader has no engine
8
+ * for the `require("process")` that build contains. The parser and serializer
9
+ * that do need YAML live in `skill-file.js`, which only the Host loads — the
10
+ * editor asks the Host for the file a draft would write and for the
11
+ * authoritative diagnostics, and shows its own answer immediately for the
12
+ * rules below.
13
+ */
14
+ /** Name length cap; the upstream grammar itself is unbounded. */
15
+ export const QA_SKILL_NAME_MAX = 64;
16
+ export const QA_SKILL_DESCRIPTION_MAX = 1024;
17
+ export const QA_SKILL_WHEN_TO_USE_MAX = 2048;
18
+ /** One skill file's own ceiling, before any resource directory is considered. */
19
+ export const QA_SKILL_FILE_MAX_BYTES = 256 * 1024;
20
+ export const QA_SKILL_MAX_BYTES_MIN = 4096;
21
+ export const QA_SKILL_MAX_BYTES_MAX = 16 * 1024 * 1024;
22
+ export const QA_SKILL_MAX_TOOLS = 256;
23
+ /**
24
+ * Whether the feature is on for a deployment that could host it. The resolver
25
+ * still turns it off wherever accounts or per-account directories are absent:
26
+ * this is the operator's intent, not a capability.
27
+ */
28
+ export const QA_SKILL_ENABLED_BY_DEFAULT = true;
29
+ /** Where personal skills live below one account's own workspace directory. */
30
+ export const QA_SKILL_DEFAULT_RELATIVE_ROOT = ".dsh/skills";
31
+ export const QA_SKILL_RELATIVE_ROOT_MAX = 512;
32
+ /** DSH's skill-name grammar: the registry refuses anything else outright. */
33
+ export const QA_SKILL_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
34
+ /**
35
+ * Tool names are stored verbatim in canonical space-separated form, so the
36
+ * accepted shape has to exclude whitespace and YAML-significant characters.
37
+ */
38
+ const TOOL_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_.:-]{0,63}$/u;
39
+ /** Frontmatter keys the editor owns. */
40
+ export const KNOWN_SKILL_FIELDS = new Set([
41
+ "name",
42
+ "description",
43
+ "whenToUse",
44
+ "user-invocable",
45
+ "disable-model-invocation",
46
+ "allowed-tools",
47
+ ]);
48
+ /**
49
+ * Agent Skills fields the editor preserves without offering a control for
50
+ * them. Anything outside both sets is still preserved; it only earns a
51
+ * warning that the deployment's editor does not know the field.
52
+ */
53
+ export const PRESERVED_SKILL_FIELDS = new Set([
54
+ "license",
55
+ "compatibility",
56
+ "metadata",
57
+ "disallowed-tools",
58
+ "version",
59
+ "context",
60
+ "model",
61
+ "argument-hint",
62
+ "arguments",
63
+ ]);
64
+ /**
65
+ * Whether a configured `relativeRoot` may be resolved below a personal root.
66
+ * Only a relative, ordinary path qualifies: the value decides where the
67
+ * filesystem boundary of the feature sits, so an absolute path or one
68
+ * climbing out would move the boundary rather than relocate inside it.
69
+ */
70
+ export function skillRelativeRootProblem(value) {
71
+ const text = value.trim();
72
+ if (text === "")
73
+ return "must not be empty";
74
+ if (text.length > QA_SKILL_RELATIVE_ROOT_MAX)
75
+ return "is too long";
76
+ if (text.includes("\0"))
77
+ return "must not contain null bytes";
78
+ if (/^([a-zA-Z]:|[/\\])/u.test(text))
79
+ return "must be a relative path";
80
+ const segments = text
81
+ .split(/[/\\]+/u)
82
+ .filter((segment) => segment !== "" && segment !== ".");
83
+ if (segments.length === 0)
84
+ return "must name a directory";
85
+ if (segments.includes(".."))
86
+ return "must not contain '..'";
87
+ return null;
88
+ }
89
+ /** The directory segments of an already-validated relative root. */
90
+ export function skillRelativeRootSegments(value) {
91
+ return value
92
+ .split(/[/\\]+/u)
93
+ .filter((segment) => segment !== "" && segment !== ".");
94
+ }
95
+ /** The reason a candidate name cannot be used, or null when it can. */
96
+ export function skillNameProblem(value) {
97
+ if (value === "")
98
+ return "name-required";
99
+ if (value.length > QA_SKILL_NAME_MAX)
100
+ return "name-invalid";
101
+ return QA_SKILL_NAME_PATTERN.test(value) ? null : "name-invalid";
102
+ }
103
+ /**
104
+ * Read a declared tool list. The canonical form is one space-separated
105
+ * scalar, but an array (and comma separators) are accepted for compatibility
106
+ * with skills authored elsewhere, and every form normalizes to the canonical
107
+ * deduplicated order.
108
+ */
109
+ export function normalizeAllowedTools(value) {
110
+ if (value === undefined || value === null)
111
+ return { tools: [], rejected: [] };
112
+ const candidates = [];
113
+ if (typeof value === "string") {
114
+ candidates.push(...value.split(/[\s,]+/u));
115
+ }
116
+ else if (Array.isArray(value)) {
117
+ for (const entry of value) {
118
+ if (typeof entry !== "string")
119
+ return undefined;
120
+ candidates.push(...entry.split(/[\s,]+/u));
121
+ }
122
+ }
123
+ else {
124
+ return undefined;
125
+ }
126
+ const tools = [];
127
+ const rejected = [];
128
+ for (const candidate of candidates) {
129
+ const name = candidate.trim();
130
+ if (name === "")
131
+ continue;
132
+ if (!TOOL_NAME_PATTERN.test(name)) {
133
+ if (!rejected.includes(name))
134
+ rejected.push(name);
135
+ continue;
136
+ }
137
+ if (!tools.includes(name))
138
+ tools.push(name);
139
+ }
140
+ return { tools, rejected };
141
+ }
142
+ export function skillWarning(code, field, detail) {
143
+ return { code, severity: "warning", field, detail };
144
+ }
145
+ /** Byte length of the text a Save would write, in UTF-8. */
146
+ export function skillFileBytes(text) {
147
+ return new TextEncoder().encode(text).length;
148
+ }
149
+ /**
150
+ * Validate an editor draft. Every rule here is enforced again on the Host at
151
+ * write time; running it in the browser only makes the editor immediate, it is
152
+ * not the authority.
153
+ */
154
+ export function validateSkillDraft(input) {
155
+ const diagnostics = [];
156
+ const error = (code, field, detail) => {
157
+ diagnostics.push({ code, severity: "error", field, detail });
158
+ };
159
+ const nameProblem = skillNameProblem(input.name);
160
+ if (nameProblem !== null)
161
+ error(nameProblem, "name", null);
162
+ if (input.description.trim() === "") {
163
+ error("description-required", "description", null);
164
+ }
165
+ else if (input.description.length > QA_SKILL_DESCRIPTION_MAX) {
166
+ diagnostics.push(skillWarning("description-too-long", "description", String(QA_SKILL_DESCRIPTION_MAX)));
167
+ }
168
+ if (input.whenToUse !== null &&
169
+ input.whenToUse.length > QA_SKILL_WHEN_TO_USE_MAX) {
170
+ diagnostics.push(skillWarning("when-to-use-too-long", "whenToUse", String(QA_SKILL_WHEN_TO_USE_MAX)));
171
+ }
172
+ if (!input.modelInvocable && !input.userInvocable) {
173
+ diagnostics.push(skillWarning("invocation-never", "invocation", null));
174
+ }
175
+ const rejected = input.rejectedTools ?? [];
176
+ if (rejected.length > 0) {
177
+ error("tool-name-invalid", "tools", rejected.join(", "));
178
+ }
179
+ if (input.allowedTools.length > QA_SKILL_MAX_TOOLS) {
180
+ error("tools-too-many", "tools", String(QA_SKILL_MAX_TOOLS));
181
+ }
182
+ const available = input.availableTools;
183
+ if (available !== undefined) {
184
+ const known = new Set(available);
185
+ for (const tool of input.allowedTools) {
186
+ if (!known.has(tool)) {
187
+ diagnostics.push(skillWarning("tool-unavailable", "tools", tool));
188
+ }
189
+ }
190
+ }
191
+ const maxBytes = input.maxBytes ?? QA_SKILL_FILE_MAX_BYTES;
192
+ if (input.sizeBytes !== undefined && input.sizeBytes > maxBytes) {
193
+ error("file-too-large", null, String(maxBytes));
194
+ }
195
+ for (const key of input.extraFieldNames ?? []) {
196
+ if (KNOWN_SKILL_FIELDS.has(key) || PRESERVED_SKILL_FIELDS.has(key))
197
+ continue;
198
+ diagnostics.push(skillWarning("unknown-field", null, key));
199
+ }
200
+ return diagnostics;
201
+ }
202
+ //# sourceMappingURL=skill-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-format.js","sourceRoot":"","sources":["../../src/personal-skills/skill-format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { watch } from "node:fs";
2
+ /**
3
+ * Follows personal skill directories so a file edited by hand — outside the
4
+ * editor — still reaches the DSH catalog without a restart.
5
+ *
6
+ * Registration is lazy and bounded: a root is watched the first time the
7
+ * discovery provider meets it, at most {@link QA_SKILL_WATCH_LIMIT} roots stay
8
+ * open (least recently used first), and every watcher is closed on dispose. A
9
+ * root that cannot be watched degrades to "no live refresh for that account":
10
+ * a save through the editor invalidates the registry directly and never
11
+ * depends on this path.
12
+ */
13
+ export const QA_SKILL_WATCH_LIMIT = 16;
14
+ const DEFAULT_DEBOUNCE_MS = 250;
15
+ export class QaSkillWatcher {
16
+ options;
17
+ watchers = new Map();
18
+ limit;
19
+ debounceMs;
20
+ timer;
21
+ constructor(options) {
22
+ this.options = options;
23
+ this.limit = options.limit ?? QA_SKILL_WATCH_LIMIT;
24
+ this.debounceMs = options.debounceMs ?? DEFAULT_DEBOUNCE_MS;
25
+ }
26
+ /** How many roots are currently watched (tests and diagnostics). */
27
+ get size() {
28
+ return this.watchers.size;
29
+ }
30
+ /** Start following one skills root; idempotent per path. */
31
+ follow(root) {
32
+ if (this.watchers.has(root))
33
+ return;
34
+ while (this.watchers.size >= this.limit) {
35
+ const oldest = this.watchers.keys().next().value;
36
+ if (oldest === undefined)
37
+ break;
38
+ this.close(oldest);
39
+ }
40
+ const onChange = () => this.schedule();
41
+ try {
42
+ let watcher;
43
+ try {
44
+ watcher = watch(root, { recursive: true }, onChange);
45
+ }
46
+ catch {
47
+ // Recursive watching is unavailable on some filesystems; a direct
48
+ // child of the root is still worth following.
49
+ watcher = watch(root, onChange);
50
+ }
51
+ watcher.on("error", (error) => {
52
+ this.close(root);
53
+ this.options.onError(error instanceof Error ? error.message : String(error));
54
+ });
55
+ this.watchers.set(root, watcher);
56
+ }
57
+ catch (error) {
58
+ this.options.onError(error instanceof Error ? error.message : String(error));
59
+ }
60
+ }
61
+ /** Stop following one root. */
62
+ close(root) {
63
+ const watcher = this.watchers.get(root);
64
+ if (watcher === undefined)
65
+ return;
66
+ this.watchers.delete(root);
67
+ try {
68
+ watcher.close();
69
+ }
70
+ catch {
71
+ // Already closed by the platform.
72
+ }
73
+ }
74
+ dispose() {
75
+ if (this.timer !== undefined) {
76
+ clearTimeout(this.timer);
77
+ this.timer = undefined;
78
+ }
79
+ for (const root of [...this.watchers.keys()])
80
+ this.close(root);
81
+ }
82
+ /**
83
+ * Coalesce a burst of filesystem events into one catalog refresh. The timer
84
+ * never holds the process open: a watcher must not keep the Host alive.
85
+ */
86
+ schedule() {
87
+ if (this.timer !== undefined)
88
+ return;
89
+ this.timer = setTimeout(() => {
90
+ this.timer = undefined;
91
+ this.options.onChange();
92
+ }, this.debounceMs);
93
+ this.timer.unref?.();
94
+ }
95
+ }
96
+ //# sourceMappingURL=watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/personal-skills/watcher.ts"],"names":[],"mappings":"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"}