@yadsh/dsh-qa-surface 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +194 -9
- package/compatibility.json +10 -1
- package/cordis.patch.yml +9 -0
- package/lib/account-remotes.js +10 -0
- package/lib/account-remotes.js.map +1 -1
- package/lib/accounts/errors.js.map +1 -1
- package/lib/accounts/file.js.map +1 -1
- package/lib/accounts/store.js +22 -0
- package/lib/accounts/store.js.map +1 -1
- package/lib/client/QaAccountsController.js +29 -0
- package/lib/client/QaAccountsController.js.map +1 -1
- package/lib/client/QaSessionController.js +168 -48
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +125 -56
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/QaSurfaceGuard.js +96 -0
- package/lib/client/QaSurfaceGuard.js.map +1 -0
- package/lib/client/QaTranscriptAdapter.js +11 -5
- package/lib/client/QaTranscriptAdapter.js.map +1 -1
- package/lib/client/components/QaChangelog.js +31 -0
- package/lib/client/components/QaChangelog.js.map +1 -1
- package/lib/client/components/QaComposer.js +1 -1
- package/lib/client/components/QaComposer.js.map +1 -1
- package/lib/client/components/QaHeader.js +2 -8
- package/lib/client/components/QaHeader.js.map +1 -1
- package/lib/client/components/QaMessage.js +20 -7
- package/lib/client/components/QaMessage.js.map +1 -1
- package/lib/client/components/QaModal.js +24 -6
- package/lib/client/components/QaModal.js.map +1 -1
- package/lib/client/components/QaSidebar.js +2 -6
- package/lib/client/components/QaSidebar.js.map +1 -1
- package/lib/client/components/QaSourcesPanel.js +6 -5
- package/lib/client/components/QaSourcesPanel.js.map +1 -1
- package/lib/client/components/QaWidthHandle.js +21 -1
- package/lib/client/components/QaWidthHandle.js.map +1 -1
- package/lib/client/components/surface-utils.js +2 -0
- package/lib/client/components/surface-utils.js.map +1 -1
- package/lib/client/index.js +72 -24
- package/lib/client/index.js.map +1 -1
- package/lib/client/panels/PanelHost.js +209 -0
- package/lib/client/panels/PanelHost.js.map +1 -0
- package/lib/client/panels/PanelLauncher.js +39 -0
- package/lib/client/panels/PanelLauncher.js.map +1 -0
- package/lib/client/panels/contract.js +2 -0
- package/lib/client/panels/contract.js.map +1 -0
- package/lib/client/panels/index.js +2 -0
- package/lib/client/panels/index.js.map +1 -0
- package/lib/client/panels/registry.js +171 -0
- package/lib/client/panels/registry.js.map +1 -0
- package/lib/client/project-session-state.js +3 -0
- package/lib/client/project-session-state.js.map +1 -1
- package/lib/client/settings/card.js +2 -2
- package/lib/client/settings/card.js.map +1 -1
- package/lib/client/settings/sections/accounts.js +3 -1
- package/lib/client/settings/sections/accounts.js.map +1 -1
- package/lib/client/settings/sections/documents.js +88 -0
- package/lib/client/settings/sections/documents.js.map +1 -0
- package/lib/client/settings/sections/interface.js +2 -0
- package/lib/client/settings/sections/interface.js.map +1 -1
- package/lib/client/settings/sections.js +1 -0
- package/lib/client/settings/sections.js.map +1 -1
- package/lib/client/settings-extensions/contract.js +2 -0
- package/lib/client/settings-extensions/contract.js.map +1 -0
- package/lib/client/settings-extensions/index.js +2 -0
- package/lib/client/settings-extensions/index.js.map +1 -0
- package/lib/client/settings-extensions/registry.js +63 -0
- package/lib/client/settings-extensions/registry.js.map +1 -0
- package/lib/client/settlement.js +51 -5
- package/lib/client/settlement.js.map +1 -1
- package/lib/client/source-preview.js +24 -0
- package/lib/client/source-preview.js.map +1 -0
- package/lib/client/styles.js +157 -32
- package/lib/client/styles.js.map +1 -1
- package/lib/client/subagent-codenames.js +109 -0
- package/lib/client/subagent-codenames.js.map +1 -0
- package/lib/client/types.js +1 -0
- package/lib/client/types.js.map +1 -1
- package/lib/client/user-settings/GeneralSettingsPage.js +13 -0
- package/lib/client/user-settings/GeneralSettingsPage.js.map +1 -0
- package/lib/client/user-settings/ProfileSettingsPage.js +59 -0
- package/lib/client/user-settings/ProfileSettingsPage.js.map +1 -0
- package/lib/client/user-settings/SkillCatalog.js +23 -0
- package/lib/client/user-settings/SkillCatalog.js.map +1 -0
- package/lib/client/user-settings/SkillEditor.js +89 -0
- package/lib/client/user-settings/SkillEditor.js.map +1 -0
- package/lib/client/user-settings/SkillToolPicker.js +58 -0
- package/lib/client/user-settings/SkillToolPicker.js.map +1 -0
- package/lib/client/user-settings/SkillsSettingsPage.js +171 -0
- package/lib/client/user-settings/SkillsSettingsPage.js.map +1 -0
- package/lib/client/user-settings/StartersSettingsPage.js +78 -0
- package/lib/client/user-settings/StartersSettingsPage.js.map +1 -0
- package/lib/client/user-settings/UserSettingsDialog.js +50 -0
- package/lib/client/user-settings/UserSettingsDialog.js.map +1 -0
- package/lib/client/user-settings/copy.js +84 -0
- package/lib/client/user-settings/copy.js.map +1 -0
- package/lib/client/user-settings/draft.js +127 -0
- package/lib/client/user-settings/draft.js.map +1 -0
- package/lib/client/user-settings/fields.js +24 -0
- package/lib/client/user-settings/fields.js.map +1 -0
- package/lib/client.js +5467 -1379
- package/lib/client.js.map +1 -1
- package/lib/config-resolvers/accounts.js +30 -0
- package/lib/config-resolvers/accounts.js.map +1 -1
- package/lib/config-resolvers/defaults.js +23 -0
- package/lib/config-resolvers/defaults.js.map +1 -1
- package/lib/config-resolvers/tools.js +37 -0
- package/lib/config-resolvers/tools.js.map +1 -0
- package/lib/config-resolvers/ui.js +2 -0
- package/lib/config-resolvers/ui.js.map +1 -1
- package/lib/config.js +288 -0
- package/lib/config.js.map +1 -1
- package/lib/documents/artifacts/ids.js +43 -0
- package/lib/documents/artifacts/ids.js.map +1 -0
- package/lib/documents/artifacts/manifest.js +66 -0
- package/lib/documents/artifacts/manifest.js.map +1 -0
- package/lib/documents/artifacts/store.js +169 -0
- package/lib/documents/artifacts/store.js.map +1 -0
- package/lib/documents/capabilities.js +93 -0
- package/lib/documents/capabilities.js.map +1 -0
- package/lib/documents/config.js +302 -0
- package/lib/documents/config.js.map +1 -0
- package/lib/documents/defaults.js +78 -0
- package/lib/documents/defaults.js.map +1 -0
- package/lib/documents/errors.js +101 -0
- package/lib/documents/errors.js.map +1 -0
- package/lib/documents/index.js +80 -0
- package/lib/documents/index.js.map +1 -0
- package/lib/documents/inspect/facts.js +161 -0
- package/lib/documents/inspect/facts.js.map +1 -0
- package/lib/documents/inspect/zip.js +108 -0
- package/lib/documents/inspect/zip.js.map +1 -0
- package/lib/documents/markdown/directives.js +135 -0
- package/lib/documents/markdown/directives.js.map +1 -0
- package/lib/documents/markdown/frontmatter.js +35 -0
- package/lib/documents/markdown/frontmatter.js.map +1 -0
- package/lib/documents/markdown/normalize.js +113 -0
- package/lib/documents/markdown/normalize.js.map +1 -0
- package/lib/documents/orchestrator/assets.js +243 -0
- package/lib/documents/orchestrator/assets.js.map +1 -0
- package/lib/documents/orchestrator/convert-document.js +186 -0
- package/lib/documents/orchestrator/convert-document.js.map +1 -0
- package/lib/documents/orchestrator/create-document.js +292 -0
- package/lib/documents/orchestrator/create-document.js.map +1 -0
- package/lib/documents/orchestrator/extract-document.js +162 -0
- package/lib/documents/orchestrator/extract-document.js.map +1 -0
- package/lib/documents/orchestrator/inspect-document.js +89 -0
- package/lib/documents/orchestrator/inspect-document.js.map +1 -0
- package/lib/documents/orchestrator/runtime-deps.js +59 -0
- package/lib/documents/orchestrator/runtime-deps.js.map +1 -0
- package/lib/documents/orchestrator/scope.js +132 -0
- package/lib/documents/orchestrator/scope.js.map +1 -0
- package/lib/documents/providers/docling.js +247 -0
- package/lib/documents/providers/docling.js.map +1 -0
- package/lib/documents/providers/libreoffice.js +130 -0
- package/lib/documents/providers/libreoffice.js.map +1 -0
- package/lib/documents/providers/markitdown.js +89 -0
- package/lib/documents/providers/markitdown.js.map +1 -0
- package/lib/documents/providers/pandoc.js +161 -0
- package/lib/documents/providers/pandoc.js.map +1 -0
- package/lib/documents/providers/process.js +164 -0
- package/lib/documents/providers/process.js.map +1 -0
- package/lib/documents/providers/registry.js +152 -0
- package/lib/documents/providers/registry.js.map +1 -0
- package/lib/documents/providers/shared.js +75 -0
- package/lib/documents/providers/shared.js.map +1 -0
- package/lib/documents/runtime.js +114 -0
- package/lib/documents/runtime.js.map +1 -0
- package/lib/documents/security/file-types.js +188 -0
- package/lib/documents/security/file-types.js.map +1 -0
- package/lib/documents/security/limits.js +78 -0
- package/lib/documents/security/limits.js.map +1 -0
- package/lib/documents/security/mime.js +43 -0
- package/lib/documents/security/mime.js.map +1 -0
- package/lib/documents/security/paths.js +133 -0
- package/lib/documents/security/paths.js.map +1 -0
- package/lib/documents/templates/registry.js +147 -0
- package/lib/documents/templates/registry.js.map +1 -0
- package/lib/documents/templates/resolver.js +59 -0
- package/lib/documents/templates/resolver.js.map +1 -0
- package/lib/documents/tools/convert.js +125 -0
- package/lib/documents/tools/convert.js.map +1 -0
- package/lib/documents/tools/create.js +187 -0
- package/lib/documents/tools/create.js.map +1 -0
- package/lib/documents/tools/index.js +41 -0
- package/lib/documents/tools/index.js.map +1 -0
- package/lib/documents/tools/inspect.js +135 -0
- package/lib/documents/tools/inspect.js.map +1 -0
- package/lib/documents/tools/shared.js +88 -0
- package/lib/documents/tools/shared.js.map +1 -0
- package/lib/documents/tools/to-markdown.js +125 -0
- package/lib/documents/tools/to-markdown.js.map +1 -0
- package/lib/documents/types.js +12 -0
- package/lib/documents/types.js.map +1 -0
- package/lib/index.js +225 -20
- package/lib/index.js.map +1 -1
- package/lib/integration-principals.js +22 -0
- package/lib/integration-principals.js.map +1 -0
- package/lib/lockdown-policy.js +15 -3
- package/lib/lockdown-policy.js.map +1 -1
- package/lib/personal-skills/errors.js +9 -0
- package/lib/personal-skills/errors.js.map +1 -0
- package/lib/personal-skills/host.js +80 -0
- package/lib/personal-skills/host.js.map +1 -0
- package/lib/personal-skills/index.js +10 -0
- package/lib/personal-skills/index.js.map +1 -0
- package/lib/personal-skills/paths.js +127 -0
- package/lib/personal-skills/paths.js.map +1 -0
- package/lib/personal-skills/provider.js +109 -0
- package/lib/personal-skills/provider.js.map +1 -0
- package/lib/personal-skills/remotes.js +40 -0
- package/lib/personal-skills/remotes.js.map +1 -0
- package/lib/personal-skills/service.js +686 -0
- package/lib/personal-skills/service.js.map +1 -0
- package/lib/personal-skills/skill-file.js +278 -0
- package/lib/personal-skills/skill-file.js.map +1 -0
- package/lib/personal-skills/skill-format.js +202 -0
- package/lib/personal-skills/skill-format.js.map +1 -0
- package/lib/personal-skills/watcher.js +96 -0
- package/lib/personal-skills/watcher.js.map +1 -0
- package/lib/profile.js +6 -4
- package/lib/profile.js.map +1 -1
- package/lib/prompt-notes.js +19 -0
- package/lib/prompt-notes.js.map +1 -1
- package/lib/provenance/file-preview.js +68 -21
- package/lib/provenance/file-preview.js.map +1 -1
- package/lib/provenance/host-store.js +44 -11
- package/lib/provenance/host-store.js.map +1 -1
- package/lib/provenance/index.js +1 -0
- package/lib/provenance/index.js.map +1 -1
- package/lib/provenance/normalize.js +3 -1
- package/lib/provenance/normalize.js.map +1 -1
- package/lib/provenance/snapshot-store.js +154 -0
- package/lib/provenance/snapshot-store.js.map +1 -0
- package/lib/qa-tools/activation-detector.js +53 -0
- package/lib/qa-tools/activation-detector.js.map +1 -0
- package/lib/qa-tools/activation-manager.js +111 -0
- package/lib/qa-tools/activation-manager.js.map +1 -0
- package/lib/qa-tools/catalog.js +108 -0
- package/lib/qa-tools/catalog.js.map +1 -0
- package/lib/qa-tools/durable-marker.js +115 -0
- package/lib/qa-tools/durable-marker.js.map +1 -0
- package/lib/qa-tools/index.js +83 -0
- package/lib/qa-tools/index.js.map +1 -0
- package/lib/qa-tools/lifecycle.js +64 -0
- package/lib/qa-tools/lifecycle.js.map +1 -0
- package/lib/qa-tools/types.js +2 -0
- package/lib/qa-tools/types.js.map +1 -0
- package/lib/resolve-config.js +5 -0
- package/lib/resolve-config.js.map +1 -1
- package/lib/secure-session.js +35 -3
- package/lib/secure-session.js.map +1 -1
- package/lib/starters.js +117 -0
- package/lib/starters.js.map +1 -0
- package/lib/typert.host.js +767 -22
- package/lib/typert.remote-client.d.ts +17 -1
- package/lib/typert.remote-client.js +609 -17
- package/lib/types/account-remotes.d.ts +3 -1
- package/lib/types/accounts/errors.d.ts +1 -1
- package/lib/types/accounts/file.d.ts +10 -0
- package/lib/types/accounts/store.d.ts +7 -1
- package/lib/types/client/QaAccountsController.d.ts +7 -1
- package/lib/types/client/QaSessionController.d.ts +12 -0
- package/lib/types/client/QaSurface.d.ts +14 -4
- package/lib/types/client/QaSurfaceGuard.d.ts +27 -0
- package/lib/types/client/QaTranscriptAdapter.d.ts +7 -0
- package/lib/types/client/components/QaComposer.d.ts +3 -1
- package/lib/types/client/components/QaHeader.d.ts +3 -1
- package/lib/types/client/components/QaModal.d.ts +5 -4
- package/lib/types/client/components/QaSidebar.d.ts +8 -11
- package/lib/types/client/components/QaWidthHandle.d.ts +13 -0
- package/lib/types/client/index.d.ts +1 -0
- package/lib/types/client/panels/PanelHost.d.ts +18 -0
- package/lib/types/client/panels/PanelLauncher.d.ts +5 -0
- package/lib/types/client/panels/contract.d.ts +83 -0
- package/lib/types/client/panels/index.d.ts +3 -0
- package/lib/types/client/panels/registry.d.ts +40 -0
- package/lib/types/client/project-session-state.d.ts +5 -0
- package/lib/types/client/settings/sections/documents.d.ts +13 -0
- package/lib/types/client/settings/sections.d.ts +1 -0
- package/lib/types/client/settings-extensions/contract.d.ts +32 -0
- package/lib/types/client/settings-extensions/index.d.ts +3 -0
- package/lib/types/client/settings-extensions/registry.d.ts +15 -0
- package/lib/types/client/settlement.d.ts +41 -5
- package/lib/types/client/source-preview.d.ts +8 -0
- package/lib/types/client/styles.d.ts +2 -0
- package/lib/types/client/subagent-codenames.d.ts +18 -0
- package/lib/types/client/types.d.ts +35 -3
- package/lib/types/client/user-settings/GeneralSettingsPage.d.ts +14 -0
- package/lib/types/client/user-settings/ProfileSettingsPage.d.ts +18 -0
- package/lib/types/client/user-settings/SkillCatalog.d.ts +16 -0
- package/lib/types/client/user-settings/SkillEditor.d.ts +42 -0
- package/lib/types/client/user-settings/SkillToolPicker.d.ts +17 -0
- package/lib/types/client/user-settings/SkillsSettingsPage.d.ts +15 -0
- package/lib/types/client/user-settings/StartersSettingsPage.d.ts +14 -0
- package/lib/types/client/user-settings/UserSettingsDialog.d.ts +43 -0
- package/lib/types/client/user-settings/copy.d.ts +25 -0
- package/lib/types/client/user-settings/draft.d.ts +51 -0
- package/lib/types/client/user-settings/fields.d.ts +43 -0
- package/lib/types/config-resolvers/tools.d.ts +6 -0
- package/lib/types/documents/artifacts/ids.d.ts +14 -0
- package/lib/types/documents/artifacts/manifest.d.ts +32 -0
- package/lib/types/documents/artifacts/store.d.ts +67 -0
- package/lib/types/documents/capabilities.d.ts +32 -0
- package/lib/types/documents/config.d.ts +27 -0
- package/lib/types/documents/defaults.d.ts +161 -0
- package/lib/types/documents/errors.d.ts +42 -0
- package/lib/types/documents/index.d.ts +63 -0
- package/lib/types/documents/inspect/facts.d.ts +43 -0
- package/lib/types/documents/inspect/zip.d.ts +28 -0
- package/lib/types/documents/markdown/directives.d.ts +39 -0
- package/lib/types/documents/markdown/frontmatter.d.ts +15 -0
- package/lib/types/documents/markdown/normalize.d.ts +30 -0
- package/lib/types/documents/orchestrator/assets.d.ts +55 -0
- package/lib/types/documents/orchestrator/convert-document.d.ts +25 -0
- package/lib/types/documents/orchestrator/create-document.d.ts +18 -0
- package/lib/types/documents/orchestrator/extract-document.d.ts +24 -0
- package/lib/types/documents/orchestrator/inspect-document.d.ts +12 -0
- package/lib/types/documents/orchestrator/runtime-deps.d.ts +43 -0
- package/lib/types/documents/orchestrator/scope.d.ts +52 -0
- package/lib/types/documents/providers/docling.d.ts +54 -0
- package/lib/types/documents/providers/libreoffice.d.ts +40 -0
- package/lib/types/documents/providers/markitdown.d.ts +28 -0
- package/lib/types/documents/providers/pandoc.d.ts +42 -0
- package/lib/types/documents/providers/process.d.ts +54 -0
- package/lib/types/documents/providers/registry.d.ts +68 -0
- package/lib/types/documents/providers/shared.d.ts +27 -0
- package/lib/types/documents/runtime.d.ts +59 -0
- package/lib/types/documents/security/file-types.d.ts +39 -0
- package/lib/types/documents/security/limits.d.ts +24 -0
- package/lib/types/documents/security/mime.d.ts +13 -0
- package/lib/types/documents/security/paths.d.ts +38 -0
- package/lib/types/documents/templates/registry.d.ts +50 -0
- package/lib/types/documents/templates/resolver.d.ts +30 -0
- package/lib/types/documents/tools/convert.d.ts +9 -0
- package/lib/types/documents/tools/create.d.ts +14 -0
- package/lib/types/documents/tools/index.d.ts +33 -0
- package/lib/types/documents/tools/inspect.d.ts +9 -0
- package/lib/types/documents/tools/shared.d.ts +77 -0
- package/lib/types/documents/tools/to-markdown.d.ts +12 -0
- package/lib/types/documents/types.d.ts +294 -0
- package/lib/types/index.d.ts +75 -3
- package/lib/types/integration-principals.d.ts +9 -0
- package/lib/types/lockdown-policy.d.ts +12 -2
- package/lib/types/personal-skills/errors.d.ts +11 -0
- package/lib/types/personal-skills/host.d.ts +42 -0
- package/lib/types/personal-skills/index.d.ts +10 -0
- package/lib/types/personal-skills/paths.d.ts +39 -0
- package/lib/types/personal-skills/provider.d.ts +33 -0
- package/lib/types/personal-skills/remotes.d.ts +35 -0
- package/lib/types/personal-skills/service.d.ts +131 -0
- package/lib/types/personal-skills/skill-file.d.ts +64 -0
- package/lib/types/personal-skills/skill-format.d.ts +100 -0
- package/lib/types/personal-skills/watcher.d.ts +39 -0
- package/lib/types/profile.d.ts +13 -0
- package/lib/types/prompt-notes.d.ts +9 -0
- package/lib/types/provenance/file-preview.d.ts +47 -4
- package/lib/types/provenance/host-store.d.ts +7 -1
- package/lib/types/provenance/index.d.ts +1 -0
- package/lib/types/provenance/snapshot-store.d.ts +23 -0
- package/lib/types/qa-tools/activation-detector.d.ts +29 -0
- package/lib/types/qa-tools/activation-manager.d.ts +47 -0
- package/lib/types/qa-tools/catalog.d.ts +40 -0
- package/lib/types/qa-tools/durable-marker.d.ts +16 -0
- package/lib/types/qa-tools/index.d.ts +40 -0
- package/lib/types/qa-tools/lifecycle.d.ts +44 -0
- package/lib/types/qa-tools/types.d.ts +45 -0
- package/lib/types/secure-session.d.ts +24 -2
- package/lib/types/starters.d.ts +45 -0
- package/lib/types/types.d.ts +202 -3
- package/package.json +24 -11
- package/scripts/repair-session-events.mjs +260 -0
- package/lib/client/components/QaProfile.js +0 -64
- package/lib/client/components/QaProfile.js.map +0 -1
- package/lib/types/client/components/QaProfile.d.ts +0 -25
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic display codenames for subagent sessions.
|
|
3
|
+
*
|
|
4
|
+
* The host addresses a background child by its session UUID — opaque noise in
|
|
5
|
+
* an operator-facing notice. A pure string hash folds the full UUID into a
|
|
6
|
+
* stable adjective-plus-noun codename ("Дотошный Барсук"): the same child
|
|
7
|
+
* keeps its codename across reloads and reconnects, nothing is stored, and
|
|
8
|
+
* within one chat's handful of subagents collisions are rare. A codename is
|
|
9
|
+
* decoration only — the short session id stays in the notice body for log
|
|
10
|
+
* correlation.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* The codename one subagent session displays: two FNV-1a passes with
|
|
14
|
+
* different seeds pick the adjective and the noun independently, so the
|
|
15
|
+
* pairs spread across the whole vocabulary instead of walking it in lockstep.
|
|
16
|
+
*/
|
|
17
|
+
export declare function codenameFor(id: string): string;
|
|
18
|
+
//# sourceMappingURL=subagent-codenames.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ClientRemote } from "@deepseek-ai/dsh-api-gateway/client";
|
|
2
2
|
import type { ISessions, SessionFace } from "@deepseek-ai/dsh-api-session-controller/client";
|
|
3
3
|
import type { UiConversation } from "@deepseek-ai/dsh-client-ui-conversation/client";
|
|
4
|
-
import type { QaAccountProfileInput, QaAccountSession, QaAccountUserPublic, QaApprovalDecision, QaClaimResult, QaLockdownProof, QaOwnershipEntry, QaPendingApproval, QaPendingQuestion, QaQuestionAnswerItem, QaSessionState, QaSourceFilePreview, QaTurnSources, QaWhoamiResult } from "../types.js";
|
|
4
|
+
import type { QaAccountProfileInput, QaAccountSession, QaAccountStartersInput, QaAccountStarter, QaAccountUserPublic, QaApprovalDecision, QaClaimResult, QaLockdownProof, QaOwnershipEntry, QaPendingApproval, QaPendingQuestion, QaQuestionAnswerItem, QaSessionState, QaSkillDocument, QaSkillDraftInput, QaSkillRemoval, QaSkillSummary, QaSkillToolDescriptor, QaSkillValidation, QaSourceFilePreview, QaTurnSources, QaWhoamiResult } from "../types.js";
|
|
5
5
|
/** Wire content one prompt carries: text plus base64 image uploads. */
|
|
6
6
|
export type QaPromptContent = Parameters<SessionFace["prompt"]>[0];
|
|
7
7
|
/** DSH session runtime surface the QA controller is allowed to touch. */
|
|
@@ -134,6 +134,34 @@ export interface QaQuestionApi {
|
|
|
134
134
|
readonly error: unknown;
|
|
135
135
|
}>;
|
|
136
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Personal-skill remotes of this plugin's namespace. The browser names a
|
|
139
|
+
* skill, never a directory: the account token behind the call decides where
|
|
140
|
+
* that name resolves.
|
|
141
|
+
*/
|
|
142
|
+
export interface QaSkillApi {
|
|
143
|
+
skillsList(token: string): Promise<RemoteResult<{
|
|
144
|
+
readonly skills: readonly QaSkillSummary[];
|
|
145
|
+
}>>;
|
|
146
|
+
skillsGet(token: string, name: string): Promise<RemoteResult<QaSkillDocument>>;
|
|
147
|
+
skillsCreate(token: string, input: QaSkillDraftInput): Promise<RemoteResult<QaSkillDocument>>;
|
|
148
|
+
skillsUpdate(token: string, name: string, input: QaSkillDraftInput): Promise<RemoteResult<QaSkillDocument>>;
|
|
149
|
+
skillsRemove(token: string, name: string, expectedRevision: string | null): Promise<RemoteResult<QaSkillRemoval>>;
|
|
150
|
+
skillsTools(token: string): Promise<RemoteResult<{
|
|
151
|
+
readonly tools: readonly QaSkillToolDescriptor[];
|
|
152
|
+
}>>;
|
|
153
|
+
skillsValidate(token: string, name: string | null, input: QaSkillDraftInput): Promise<RemoteResult<QaSkillValidation>>;
|
|
154
|
+
}
|
|
155
|
+
/** The skill API with the account token already bound at the call site. */
|
|
156
|
+
export interface QaBoundSkillApi {
|
|
157
|
+
list(): Promise<RemoteResult<readonly QaSkillSummary[]>>;
|
|
158
|
+
get(name: string): Promise<RemoteResult<QaSkillDocument>>;
|
|
159
|
+
create(input: QaSkillDraftInput): Promise<RemoteResult<QaSkillDocument>>;
|
|
160
|
+
update(name: string, input: QaSkillDraftInput): Promise<RemoteResult<QaSkillDocument>>;
|
|
161
|
+
remove(name: string, expectedRevision: string | null): Promise<RemoteResult<QaSkillRemoval>>;
|
|
162
|
+
tools(): Promise<RemoteResult<readonly QaSkillToolDescriptor[]>>;
|
|
163
|
+
validate(name: string | null, input: QaSkillDraftInput): Promise<RemoteResult<QaSkillValidation>>;
|
|
164
|
+
}
|
|
137
165
|
/** Account remotes exposed by the plugin's own typert namespace. */
|
|
138
166
|
export interface QaAccountsApi {
|
|
139
167
|
accountsWhoami(token: string): Promise<RemoteResult<QaWhoamiResult>>;
|
|
@@ -148,8 +176,13 @@ export interface QaAccountsApi {
|
|
|
148
176
|
}>>;
|
|
149
177
|
/** Replace the caller's own self-declared profile; the token is the identity. */
|
|
150
178
|
accountsUpdateProfile(token: string, input: QaAccountProfileInput): Promise<RemoteResult<QaAccountUserPublic>>;
|
|
179
|
+
/** Replace the caller's own starter buttons; the token is the identity. */
|
|
180
|
+
accountsUpdateStarters(token: string, input: QaAccountStartersInput): Promise<RemoteResult<QaAccountUserPublic>>;
|
|
151
181
|
}
|
|
152
|
-
|
|
182
|
+
/** One button above an empty composer: what it reads and what it sends. */
|
|
183
|
+
export type QaQuickQuestion = QaAccountStarter;
|
|
184
|
+
/** Result shape every generated remote call resolves to. */
|
|
185
|
+
export type RemoteResult<Value> = {
|
|
153
186
|
readonly ok: true;
|
|
154
187
|
readonly value: Value;
|
|
155
188
|
} | {
|
|
@@ -164,5 +197,4 @@ export interface StorageLike {
|
|
|
164
197
|
}
|
|
165
198
|
/** The state projected while no QA chat is bound (route inactive or booting). */
|
|
166
199
|
export declare const QA_SESSION_IDLE_STATE: QaSessionState;
|
|
167
|
-
export {};
|
|
168
200
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface QaGeneralSettingsPageProps {
|
|
2
|
+
readonly email: string;
|
|
3
|
+
readonly role: string;
|
|
4
|
+
readonly chatCount: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Placeholder with a purpose: the section exists so the dialog has a home for
|
|
8
|
+
* the user-scoped preferences that follow (notifications, integrations,
|
|
9
|
+
* privacy), and so the thing it must not become is written down — deployment
|
|
10
|
+
* and chat policy live in the Host settings, not here. It shows the account
|
|
11
|
+
* facts a user can act on today and nothing invented.
|
|
12
|
+
*/
|
|
13
|
+
export declare function QaGeneralSettingsPage(props: QaGeneralSettingsPageProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=GeneralSettingsPage.d.ts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { QaAccountIdentityField, QaAccountProfile, QaAccountProfileInput } from "../../types.js";
|
|
2
|
+
export interface QaProfileSettingsPageProps {
|
|
3
|
+
readonly email: string;
|
|
4
|
+
readonly profile: QaAccountProfile;
|
|
5
|
+
/** Handle fields the deployment declares, in its configured order. */
|
|
6
|
+
readonly identities: readonly QaAccountIdentityField[];
|
|
7
|
+
readonly instructionsMaxLength: number;
|
|
8
|
+
/** Persist the edited profile; resolves to refusal copy, or null. */
|
|
9
|
+
readonly onSave: (input: QaAccountProfileInput) => Promise<string | null>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The signed-in user's profile, moved into the settings dialog unchanged: the
|
|
13
|
+
* same fields, the same storage and the same limits as the modal it replaces.
|
|
14
|
+
* The form is seeded from the stored profile whenever that profile changes, so
|
|
15
|
+
* a reload or a write from another tab never leaves stale edits on screen.
|
|
16
|
+
*/
|
|
17
|
+
export declare function QaProfileSettingsPage(props: QaProfileSettingsPageProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=ProfileSettingsPage.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { QaSkillSummary } from "../../types.js";
|
|
2
|
+
export interface QaSkillCatalogProps {
|
|
3
|
+
readonly skills: readonly QaSkillSummary[];
|
|
4
|
+
readonly loading: boolean;
|
|
5
|
+
readonly error: string | null;
|
|
6
|
+
readonly onOpen: (name: string) => void;
|
|
7
|
+
readonly onCreate: () => void;
|
|
8
|
+
readonly onReload: () => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The skills list: what exists, how it is invoked, and what needs attention.
|
|
12
|
+
* Search is client-side over the fields the spec names (name, description,
|
|
13
|
+
* whenToUse) — the catalog of one account is small by construction.
|
|
14
|
+
*/
|
|
15
|
+
export declare function QaSkillCatalog(props: QaSkillCatalogProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=SkillCatalog.d.ts.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { QaSkillDiagnostic, QaSkillDocument, QaSkillDraftInput, QaSkillToolDescriptor } from "../../types.js";
|
|
2
|
+
/** What the Host last answered about the draft being edited. */
|
|
3
|
+
export interface QaSkillValidationState {
|
|
4
|
+
/** The file a save would write, as the Host's serializer renders it. */
|
|
5
|
+
readonly preview: string;
|
|
6
|
+
readonly diagnostics: readonly QaSkillDiagnostic[];
|
|
7
|
+
/** True while a newer draft is on its way to the Host. */
|
|
8
|
+
readonly pending: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface QaSkillEditorProps {
|
|
11
|
+
/** `create` starts from an empty draft; `edit` from the loaded document. */
|
|
12
|
+
readonly mode: "create" | "edit";
|
|
13
|
+
/** Absent while a fresh skill is being created. */
|
|
14
|
+
readonly document: QaSkillDocument | null;
|
|
15
|
+
/** The Host's answer for the current draft. */
|
|
16
|
+
readonly validation: QaSkillValidationState;
|
|
17
|
+
/** Report the draft so the page can ask the Host about it. */
|
|
18
|
+
readonly onDraftChange: (input: QaSkillDraftInput) => void;
|
|
19
|
+
readonly tools: readonly QaSkillToolDescriptor[];
|
|
20
|
+
readonly toolsError: string | null;
|
|
21
|
+
readonly saving: boolean;
|
|
22
|
+
readonly error: string | null;
|
|
23
|
+
/** True once a save was refused because the file changed elsewhere. */
|
|
24
|
+
readonly conflict: boolean;
|
|
25
|
+
readonly onBack: () => void;
|
|
26
|
+
readonly onSave: (input: QaSkillDraftInput) => void;
|
|
27
|
+
readonly onDelete: () => void;
|
|
28
|
+
/** Re-read the stored skill after a conflict; absent on create. */
|
|
29
|
+
readonly onReload: () => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* One skill's editor. It never wraps itself in a nested modal — the settings
|
|
33
|
+
* dialog's own content area is the page.
|
|
34
|
+
*
|
|
35
|
+
* Two validators run: this component checks the rules it can check instantly,
|
|
36
|
+
* and the Host answers with the authoritative set plus the exact file a save
|
|
37
|
+
* would write. Both are shown, and a save is only offered when neither has an
|
|
38
|
+
* error — the Host still refuses on write, because a stale answer is always
|
|
39
|
+
* possible between a keystroke and a round trip.
|
|
40
|
+
*/
|
|
41
|
+
export declare function QaSkillEditor(props: QaSkillEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
//# sourceMappingURL=SkillEditor.d.ts.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { QaSkillToolDescriptor } from "../../types.js";
|
|
2
|
+
export interface QaSkillToolPickerProps {
|
|
3
|
+
readonly open: boolean;
|
|
4
|
+
readonly tools: readonly QaSkillToolDescriptor[];
|
|
5
|
+
readonly toolsError: string | null;
|
|
6
|
+
readonly selected: readonly string[];
|
|
7
|
+
readonly onApply: (tools: readonly string[]) => void;
|
|
8
|
+
readonly onClose: () => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Multi-select over the deployment's tool catalog. Availability is the QA
|
|
12
|
+
* session's own scope, and the picker says so: a tool the session cannot reach
|
|
13
|
+
* is still offered — an imported skill has to stay repairable — but it is
|
|
14
|
+
* grouped and labelled as unavailable, and choosing it grants nothing.
|
|
15
|
+
*/
|
|
16
|
+
export declare function QaSkillToolPicker(props: QaSkillToolPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=SkillToolPicker.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { QaBoundSkillApi } from "../types.js";
|
|
2
|
+
export interface QaSkillsSettingsPageProps {
|
|
3
|
+
/** The token-bound skill API the surface hands to this page. */
|
|
4
|
+
readonly api: QaBoundSkillApi;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Personal skills: the catalog, and the editor for one skill or a new one.
|
|
8
|
+
*
|
|
9
|
+
* The page owns the server state (list, tools, loaded document, in-flight
|
|
10
|
+
* failures) and hands the editor a draft only once a document has loaded, so
|
|
11
|
+
* a save always carries the revision it read. Creating and editing share one
|
|
12
|
+
* route: the difference is whether a loaded document exists to compare with.
|
|
13
|
+
*/
|
|
14
|
+
export declare function QaSkillsSettingsPage(props: QaSkillsSettingsPageProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=SkillsSettingsPage.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { QaAccountStarters, QaAccountStartersInput } from "../../types.js";
|
|
2
|
+
export interface QaStartersSettingsPageProps {
|
|
3
|
+
readonly starters: QaAccountStarters;
|
|
4
|
+
/** Persist the edited list; resolves to refusal copy, or null. */
|
|
5
|
+
readonly onSave: (input: QaAccountStartersInput) => Promise<string | null>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The signed-in user's own starter buttons: what each button reads, what
|
|
9
|
+
* pressing it sends, and whether the deployment's standard suggestions stay
|
|
10
|
+
* visible next to them. Same full-replace contract as the profile form — the
|
|
11
|
+
* list is seeded from the stored record whenever that record changes.
|
|
12
|
+
*/
|
|
13
|
+
export declare function QaStartersSettingsPage(props: QaStartersSettingsPageProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=StartersSettingsPage.d.ts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { QaAccountIdentityField, QaAccountProfile, QaAccountProfileInput, QaAccountStarters, QaAccountStartersInput } from "../../types.js";
|
|
2
|
+
import type { QaBoundSkillApi } from "../types.js";
|
|
3
|
+
import type { QaUserSettingsSections } from "../settings-extensions/index.js";
|
|
4
|
+
/** Sections of the user-facing settings dialog. */
|
|
5
|
+
export type QaSettingsSectionId = "profile" | "starters" | "general" | "skills" | (string & {});
|
|
6
|
+
export interface QaUserSettingsDialogProps {
|
|
7
|
+
readonly open: boolean;
|
|
8
|
+
/** Section to show when the dialog opens. */
|
|
9
|
+
readonly initialSection: QaSettingsSectionId;
|
|
10
|
+
readonly onClose: () => void;
|
|
11
|
+
readonly email: string;
|
|
12
|
+
readonly role: string;
|
|
13
|
+
readonly chatCount: number;
|
|
14
|
+
/** Self-service profile editing; absent when the deployment turns it off. */
|
|
15
|
+
readonly profile?: {
|
|
16
|
+
readonly profile: QaAccountProfile;
|
|
17
|
+
readonly fields: readonly QaAccountIdentityField[];
|
|
18
|
+
readonly instructionsMaxLength: number;
|
|
19
|
+
readonly onSave: (input: QaAccountProfileInput) => Promise<string | null>;
|
|
20
|
+
};
|
|
21
|
+
/** Self-service starter buttons; absent when the deployment turns them off. */
|
|
22
|
+
readonly starters?: {
|
|
23
|
+
readonly starters: QaAccountStarters;
|
|
24
|
+
readonly onSave: (input: QaAccountStartersInput) => Promise<string | null>;
|
|
25
|
+
};
|
|
26
|
+
/** Personal skills; absent when the deployment cannot host them. */
|
|
27
|
+
readonly skills?: QaBoundSkillApi;
|
|
28
|
+
/** Additive pages contributed by separately shipped QA plugins. */
|
|
29
|
+
readonly extensions?: QaUserSettingsSections;
|
|
30
|
+
/** Current account token, passed only to the selected extension page. */
|
|
31
|
+
readonly token?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One settings dialog for everything the signed-in user owns: the profile, a
|
|
35
|
+
* place for personal preferences, and their skills.
|
|
36
|
+
*
|
|
37
|
+
* It replaces the separate profile modal rather than sitting beside it — the
|
|
38
|
+
* section list is the single entry point — and it is deliberately a plain
|
|
39
|
+
* tablist inside the shared dialog shell: on a narrow screen the same element
|
|
40
|
+
* becomes a horizontal strip instead of a second navigation screen.
|
|
41
|
+
*/
|
|
42
|
+
export declare function QaUserSettingsDialog(props: QaUserSettingsDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
//# sourceMappingURL=UserSettingsDialog.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { QaSkillDiagnostic } from "../../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Audience-facing copy for the settings dialog. The Host sends stable codes
|
|
4
|
+
* and never Russian prose, so every message a user reads is written here.
|
|
5
|
+
*/
|
|
6
|
+
/** One message per diagnostic code; `detail` carries the offending value. */
|
|
7
|
+
export declare function diagnosticMessage(diagnostic: QaSkillDiagnostic): string;
|
|
8
|
+
/**
|
|
9
|
+
* Turn one remote refusal into copy. The Host folds domain failures into a
|
|
10
|
+
* `(reason: <code>)` marker on the wire message; anything else — a transport
|
|
11
|
+
* fault, an unknown code — reads as the generic failure.
|
|
12
|
+
*/
|
|
13
|
+
export declare function skillFailureCopy(error: unknown): string;
|
|
14
|
+
/** Whether a failure is the optimistic-concurrency refusal. */
|
|
15
|
+
export declare function isSkillConflict(error: unknown): boolean;
|
|
16
|
+
export declare const SKILLS_EMPTY_COPY: {
|
|
17
|
+
readonly title: "У вас пока нет навыков.";
|
|
18
|
+
readonly body: "Навык — это набор инструкций, который помогает ассистенту стабильно выполнять повторяющиеся задачи.";
|
|
19
|
+
readonly action: "Создать первый навык";
|
|
20
|
+
};
|
|
21
|
+
export declare const SKILLS_TOOLS_HINT = "\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u044D\u0442\u043E\u0442 \u043D\u0430\u0432\u044B\u043A. \u041E\u043D\u0438 \u043D\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0439.";
|
|
22
|
+
export declare const SKILLS_DESCRIPTION_HINT = "\u041A\u0440\u0430\u0442\u043A\u043E \u043E\u043F\u0438\u0448\u0438\u0442\u0435, \u0447\u0442\u043E \u0434\u0435\u043B\u0430\u0435\u0442 \u043D\u0430\u0432\u044B\u043A \u0438 \u0432 \u043A\u0430\u043A\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044F\u0445 \u0435\u0433\u043E \u0441\u0442\u043E\u0438\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C.";
|
|
23
|
+
export declare const SKILLS_NAME_HINT = "\u0421\u0442\u0440\u043E\u0447\u043D\u044B\u0435 \u043B\u0430\u0442\u0438\u043D\u0441\u043A\u0438\u0435 \u0431\u0443\u043A\u0432\u044B, \u0446\u0438\u0444\u0440\u044B \u0438 \u0434\u0435\u0444\u0438\u0441\u044B. \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: jira-investigation.";
|
|
24
|
+
export declare const SKILLS_BEHAVIOUR_HINT = "\u00AB\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u00BB \u0437\u043D\u0430\u0447\u0438\u0442, \u0447\u0442\u043E \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442 \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430\u0432\u044B\u043A \u0441\u0430\u043C, \u043A\u043E\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043E\u0432\u043F\u0430\u0434\u0451\u0442 \u0441 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435\u043C. \u0421\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u043D\u0430\u0432\u044B\u043A\u0430 \u043D\u0435 \u0445\u0440\u0430\u043D\u0438\u0442\u0441\u044F \u0432 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0435 \u043F\u043E\u0441\u0442\u043E\u044F\u043D\u043D\u043E.";
|
|
25
|
+
//# sourceMappingURL=copy.d.ts.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { QaSkillDiagnostic, QaSkillDocument, QaSkillDraftInput, QaSkillSummary } from "../../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The editor's draft: a plain, mutable-shaped snapshot of one skill, plus the
|
|
4
|
+
* pure helpers the pages share.
|
|
5
|
+
*
|
|
6
|
+
* This module holds no serializer on purpose. The Host owns the file format;
|
|
7
|
+
* the editor checks the subset of rules it can check by itself — the name
|
|
8
|
+
* grammar, the required fields, the declared tools — and asks the Host for the
|
|
9
|
+
* rest: the exact file, the operator's size limit, the preserved frontmatter.
|
|
10
|
+
* A YAML library's Node build carries `require` calls the browser module
|
|
11
|
+
* loader cannot answer, so the format's YAML half stays on the Host.
|
|
12
|
+
*/
|
|
13
|
+
export interface QaSkillDraft {
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly description: string;
|
|
16
|
+
readonly whenToUse: string;
|
|
17
|
+
readonly modelInvocable: boolean;
|
|
18
|
+
readonly userInvocable: boolean;
|
|
19
|
+
readonly allowedTools: readonly string[];
|
|
20
|
+
readonly body: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function emptyDraft(): QaSkillDraft;
|
|
23
|
+
export declare function draftFromDocument(document: QaSkillDocument): QaSkillDraft;
|
|
24
|
+
/** Whether a fresh draft carries anything worth warning about on exit. */
|
|
25
|
+
export declare function draftHasContent(draft: QaSkillDraft): boolean;
|
|
26
|
+
/** Collapse diagnostics that describe the same thing for the same field. */
|
|
27
|
+
export declare function mergeDiagnostics(...groups: readonly (readonly QaSkillDiagnostic[])[]): readonly QaSkillDiagnostic[];
|
|
28
|
+
export declare function draftIsDirty(draft: QaSkillDraft, document: QaSkillDocument): boolean;
|
|
29
|
+
export interface QaSkillDraftDiagnostics {
|
|
30
|
+
readonly availableTools: readonly string[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The rules the editor checks by itself, so typing is answered immediately.
|
|
34
|
+
* The size limit, the preserved frontmatter and the serialized file are the
|
|
35
|
+
* Host's business and arrive from it; the Host also re-checks all of this on
|
|
36
|
+
* every write, so nothing here is the authority.
|
|
37
|
+
*/
|
|
38
|
+
export declare function draftDiagnostics(draft: QaSkillDraft, options: QaSkillDraftDiagnostics): readonly QaSkillDiagnostic[];
|
|
39
|
+
/** Whether the draft is complete enough to send. */
|
|
40
|
+
export declare function draftIsSavable(draft: QaSkillDraft): boolean;
|
|
41
|
+
export declare function draftInput(draft: QaSkillDraft, revision: string | null): QaSkillDraftInput;
|
|
42
|
+
/** The terse line under a catalog row: invocation, command, tool count. */
|
|
43
|
+
export declare function skillMetaLine(skill: QaSkillSummary): string;
|
|
44
|
+
/** Tools the catalog cannot use right now, as the row's warning text. */
|
|
45
|
+
export declare function skillToolWarning(skill: QaSkillSummary): string | null;
|
|
46
|
+
/** Case-insensitive search over the fields the catalog offers. */
|
|
47
|
+
export declare function skillMatchesQuery(skill: QaSkillSummary, query: string): boolean;
|
|
48
|
+
/** Editing one tool name out of a draft, wherever the picker put it. */
|
|
49
|
+
export declare function withToolRemoved(tools: readonly string[], name: string): readonly string[];
|
|
50
|
+
export declare function withToolAdded(tools: readonly string[], name: string): readonly string[];
|
|
51
|
+
//# sourceMappingURL=draft.d.ts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Field primitives for the settings dialog. The plugin's host-facing settings
|
|
4
|
+
* card owns `qa-card-*`, whose stylesheet is injected only where that card is
|
|
5
|
+
* mounted; the QA page carries its own `dsh-qa-settings-*` rules instead, so
|
|
6
|
+
* the dialog looks the same whether or not a loopback operator ever opened
|
|
7
|
+
* the deployment settings.
|
|
8
|
+
*/
|
|
9
|
+
export interface QaSettingsFieldProps {
|
|
10
|
+
readonly label: string;
|
|
11
|
+
/** Secondary line under the control; not part of the field's name. */
|
|
12
|
+
readonly hint?: string;
|
|
13
|
+
readonly children: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
export declare function QaSettingsField(props: QaSettingsFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function QaSettingsSection(props: {
|
|
17
|
+
readonly title: string;
|
|
18
|
+
readonly aside?: ReactNode;
|
|
19
|
+
readonly children: ReactNode;
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare function QaSettingsToggle(props: {
|
|
22
|
+
readonly label: string;
|
|
23
|
+
readonly checked: boolean;
|
|
24
|
+
readonly disabled?: boolean;
|
|
25
|
+
readonly hint?: string;
|
|
26
|
+
readonly onChange: (checked: boolean) => void;
|
|
27
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare function QaSettingsNotice(props: {
|
|
29
|
+
readonly tone: "info" | "warn" | "error";
|
|
30
|
+
readonly children: ReactNode;
|
|
31
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export declare function QaSettingsActions(props: {
|
|
33
|
+
readonly children: ReactNode;
|
|
34
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
export declare function QaSettingsButton(props: {
|
|
36
|
+
readonly label: string;
|
|
37
|
+
readonly tone?: "primary" | "plain" | "danger";
|
|
38
|
+
readonly type?: "button" | "submit";
|
|
39
|
+
readonly disabled?: boolean;
|
|
40
|
+
readonly title?: string;
|
|
41
|
+
readonly onClick?: () => void;
|
|
42
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { QaSurfaceConfig, ResolvedQaSurfaceConfig } from "../types.js";
|
|
2
|
+
type ToolsSlice = ResolvedQaSurfaceConfig["tools"];
|
|
3
|
+
/** Resolve the QA tool delivery domain: activation trigger, policy, and scope. */
|
|
4
|
+
export declare function resolveTools(input: QaSurfaceConfig): ToolsSlice;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ULID generation for artifact ids (§18).
|
|
3
|
+
*
|
|
4
|
+
* `doc_<ULID>` — 48 bits of time followed by 80 bits of randomness, encoded in
|
|
5
|
+
* Crockford base32. The time prefix keeps a directory listing chronological,
|
|
6
|
+
* and the randomness keeps ids unguessable without a UUID dependency.
|
|
7
|
+
*/
|
|
8
|
+
/** A fresh ULID for the current millisecond. */
|
|
9
|
+
export declare function createUlid(now?: number): string;
|
|
10
|
+
/** A fresh artifact id: `doc_<ULID>`. */
|
|
11
|
+
export declare function createArtifactId(now?: number): string;
|
|
12
|
+
/** Whether a string is an artifact id this pipeline could have issued. */
|
|
13
|
+
export declare function isArtifactId(value: string): boolean;
|
|
14
|
+
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest construction and persistence (§19).
|
|
3
|
+
*
|
|
4
|
+
* The manifest is the source of truth about an artifact: which operation,
|
|
5
|
+
* which backends and versions, which template (and its hash), which files came
|
|
6
|
+
* out, which warnings were raised, and which session/workspace the bundle
|
|
7
|
+
* belongs to. Logical reproducibility rests on it, because byte-level
|
|
8
|
+
* reproducibility of DOCX/PDF cannot be promised (§31).
|
|
9
|
+
*/
|
|
10
|
+
import type { BackendInfo, DocumentFileResult, DocumentFormat, DocumentManifest, DocumentWarning } from "../types.js";
|
|
11
|
+
import type { ArtifactStore } from "./store.js";
|
|
12
|
+
export declare const MANIFEST_FILE = "manifest.json";
|
|
13
|
+
export declare const MANIFEST_SCHEMA_VERSION: 1;
|
|
14
|
+
export interface BuildManifestInput {
|
|
15
|
+
readonly artifactId: string;
|
|
16
|
+
readonly operation: DocumentManifest["operation"];
|
|
17
|
+
readonly createdAt: string;
|
|
18
|
+
readonly input: DocumentManifest["input"];
|
|
19
|
+
readonly outputs: DocumentManifest["outputs"];
|
|
20
|
+
readonly template?: string;
|
|
21
|
+
readonly templateSha256?: string;
|
|
22
|
+
readonly backends: Readonly<Record<string, BackendInfo>>;
|
|
23
|
+
readonly warnings: readonly DocumentWarning[];
|
|
24
|
+
readonly scope: DocumentManifest["scope"];
|
|
25
|
+
}
|
|
26
|
+
export declare function buildManifest(input: BuildManifestInput): DocumentManifest;
|
|
27
|
+
export declare function writeManifest(store: ArtifactStore, artifactId: string, manifest: DocumentManifest): Promise<string>;
|
|
28
|
+
export declare function readManifest(store: ArtifactStore, artifactId: string): Promise<DocumentManifest>;
|
|
29
|
+
/** Project a tool-level file result onto the manifest's output record. */
|
|
30
|
+
export declare function outputRecord(file: DocumentFileResult): DocumentManifest["outputs"][number];
|
|
31
|
+
export declare function formatOfOperation(operation: DocumentManifest["operation"]): DocumentFormat | "unknown";
|
|
32
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact bundle storage (§18, §47).
|
|
3
|
+
*
|
|
4
|
+
* One directory per operation:
|
|
5
|
+
*
|
|
6
|
+
* ```text
|
|
7
|
+
* <root>/<artifact-id>/
|
|
8
|
+
* manifest.json
|
|
9
|
+
* source.md
|
|
10
|
+
* input/original.pdf
|
|
11
|
+
* assets/
|
|
12
|
+
* output.docx
|
|
13
|
+
* extracted.md
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Everything the store writes goes through a root-relative path that is
|
|
17
|
+
* validated first, and every file lands atomically (temp file + rename) so a
|
|
18
|
+
* crashed host never leaves a half-written artifact that a later read would
|
|
19
|
+
* trust. Job temp directories live under `<root>/.tmp` and are removed on both
|
|
20
|
+
* success and failure (§47).
|
|
21
|
+
*/
|
|
22
|
+
export interface FileFingerprint {
|
|
23
|
+
readonly path: string;
|
|
24
|
+
readonly size: number;
|
|
25
|
+
readonly sha256: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function sha256Hex(data: string | Buffer): string;
|
|
28
|
+
export declare function sha256OfFile(filePath: string): Promise<string>;
|
|
29
|
+
export interface ArtifactStoreOptions {
|
|
30
|
+
/** Directory the bundles live in; created on demand. */
|
|
31
|
+
readonly root: string;
|
|
32
|
+
}
|
|
33
|
+
export declare class ArtifactStore {
|
|
34
|
+
readonly root: string;
|
|
35
|
+
constructor(options: ArtifactStoreOptions);
|
|
36
|
+
/** Absolute path of a root-relative artifact member, containment checked. */
|
|
37
|
+
path(relativePath: string): string;
|
|
38
|
+
artifactDir(artifactId: string): string;
|
|
39
|
+
/** Prepare a fresh bundle directory and return its id. */
|
|
40
|
+
create(now?: number): Promise<{
|
|
41
|
+
artifactId: string;
|
|
42
|
+
dir: string;
|
|
43
|
+
}>;
|
|
44
|
+
ensureDir(relativePath: string): Promise<string>;
|
|
45
|
+
/** Atomically write a root-relative member. */
|
|
46
|
+
write(relativePath: string, data: string | Buffer): Promise<FileFingerprint>;
|
|
47
|
+
read(relativePath: string): Promise<Buffer>;
|
|
48
|
+
fingerprint(relativePath: string): Promise<FileFingerprint>;
|
|
49
|
+
exists(relativePath: string): Promise<boolean>;
|
|
50
|
+
/** Job-scoped temp directory: never an artifact, always removed (§47). */
|
|
51
|
+
createWorkDir(jobId: string): Promise<string>;
|
|
52
|
+
removeWorkDir(dir: string): Promise<void>;
|
|
53
|
+
/** Bundle directories, newest first, with their modification time. */
|
|
54
|
+
list(): Promise<{
|
|
55
|
+
artifactId: string;
|
|
56
|
+
dir: string;
|
|
57
|
+
modifiedAt: Date;
|
|
58
|
+
}[]>;
|
|
59
|
+
/** Retention sweep (§41): drop bundles older than `maxAgeDays`. */
|
|
60
|
+
cleanup(options: {
|
|
61
|
+
readonly maxAgeDays: number;
|
|
62
|
+
readonly now?: Date;
|
|
63
|
+
}): Promise<{
|
|
64
|
+
removed: string[];
|
|
65
|
+
}>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability discovery (§43) and backend health (§42).
|
|
3
|
+
*
|
|
4
|
+
* Health separates required from optional backends on purpose: a deployment
|
|
5
|
+
* without Docling cannot extract PDFs, but it still creates documents, so the
|
|
6
|
+
* subsystem reports `degraded` and names what is missing instead of declaring
|
|
7
|
+
* itself down. An optional backend that was never enabled reports `disabled`,
|
|
8
|
+
* which is not a fault.
|
|
9
|
+
*/
|
|
10
|
+
import type { ResolvedQaDocumentsConfig } from "./config.js";
|
|
11
|
+
import { type ProviderSeams, type ProviderSet } from "./providers/registry.js";
|
|
12
|
+
import type { DocumentCapabilities, DocumentHealth } from "./types.js";
|
|
13
|
+
import { type TemplateRegistry } from "./templates/registry.js";
|
|
14
|
+
export interface HealthOptions {
|
|
15
|
+
readonly config: ResolvedQaDocumentsConfig;
|
|
16
|
+
readonly providers: ProviderSet;
|
|
17
|
+
/** Probe the two process-based backends; `false` answers from configuration. */
|
|
18
|
+
readonly probeProcessBackends?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function documentHealth(options: HealthOptions): Promise<DocumentHealth>;
|
|
21
|
+
export declare function documentCapabilities(options: {
|
|
22
|
+
readonly config: ResolvedQaDocumentsConfig;
|
|
23
|
+
readonly providers: ProviderSet;
|
|
24
|
+
readonly templates: TemplateRegistry;
|
|
25
|
+
}): DocumentCapabilities;
|
|
26
|
+
/** Load the template registry of a workspace for capability reporting. */
|
|
27
|
+
export declare function capabilitiesForRoot(options: {
|
|
28
|
+
readonly config: ResolvedQaDocumentsConfig;
|
|
29
|
+
readonly templateRoot: string | undefined;
|
|
30
|
+
readonly seams?: ProviderSeams;
|
|
31
|
+
}): Promise<DocumentCapabilities>;
|
|
32
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
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 { type QaDocumentsConfig, type ResolvedQaDocumentsConfig } from "./defaults.js";
|
|
16
|
+
export { DEFAULT_QA_DOCUMENTS_CONFIG, type QaDocumentsCommandConfig, type QaDocumentsConfig, type QaDocumentsCreateConfig, type QaDocumentsEndpointConfig, type QaDocumentsExtractionConfig, type QaDocumentsLimitsConfig, type QaDocumentsRetentionConfig, type QaDocumentsStorageConfig, type QaDocumentsTemplatesConfig, type QaDocumentsWorkersConfig, type ResolvedQaDocumentsConfig, } from "./defaults.js";
|
|
17
|
+
/** Materialize and validate the document configuration. */
|
|
18
|
+
export declare function resolveDocumentsConfig(input?: QaDocumentsConfig): ResolvedQaDocumentsConfig;
|
|
19
|
+
/**
|
|
20
|
+
* Apply the documented environment overrides (§20). Kept out of
|
|
21
|
+
* {@link resolveDocumentsConfig} so the resolver stays a pure function of its
|
|
22
|
+
* input — configuration tests never depend on the ambient environment.
|
|
23
|
+
*/
|
|
24
|
+
export declare function applyDocumentsEnvOverrides(config: QaDocumentsConfig, env: NodeJS.ProcessEnv): QaDocumentsConfig;
|
|
25
|
+
/** Milliseconds a retention sweep interval would wait. */
|
|
26
|
+
export declare function retentionIntervalMs(config: ResolvedQaDocumentsConfig): number;
|
|
27
|
+
//# sourceMappingURL=config.d.ts.map
|