@yadsh/dsh-qa-surface 0.7.3 → 0.8.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 +56 -9
- package/lib/access/model.js +24 -4
- package/lib/access/model.js.map +1 -1
- package/lib/access/role-repository.js +199 -91
- package/lib/access/role-repository.js.map +1 -1
- package/lib/access/service.js +194 -6
- package/lib/access/service.js.map +1 -1
- package/lib/account-remotes.js +2 -4
- package/lib/account-remotes.js.map +1 -1
- package/lib/accounts/database.js +447 -0
- package/lib/accounts/database.js.map +1 -0
- package/lib/accounts/file.js +27 -90
- package/lib/accounts/file.js.map +1 -1
- package/lib/accounts/store.js +210 -59
- package/lib/accounts/store.js.map +1 -1
- package/lib/admin/quality-store.js +199 -54
- package/lib/admin/quality-store.js.map +1 -1
- package/lib/admin/service.js +39 -6
- package/lib/admin/service.js.map +1 -1
- package/lib/cli.js +2 -1
- package/lib/cli.js.map +1 -1
- package/lib/client/QaSessionController.js +20 -2
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +69 -31
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/QaTranscriptAdapter.js +4 -0
- package/lib/client/QaTranscriptAdapter.js.map +1 -1
- package/lib/client/admin/QaAdmin.js +17 -7
- package/lib/client/admin/QaAdmin.js.map +1 -1
- package/lib/client/admin/{format.js → copy.js} +1 -1
- package/lib/client/admin/copy.js.map +1 -0
- package/lib/client/admin/pages/Conversations.js +1 -1
- package/lib/client/admin/pages/Conversations.js.map +1 -1
- package/lib/client/admin/pages/Overview.js +1 -1
- package/lib/client/admin/pages/Overview.js.map +1 -1
- package/lib/client/admin/pages/Quality.js +1 -1
- package/lib/client/admin/pages/Quality.js.map +1 -1
- package/lib/client/admin/pages/Review.js +1 -1
- package/lib/client/admin/pages/Review.js.map +1 -1
- package/lib/client/admin/pages/Users.js +6 -2
- package/lib/client/admin/pages/Users.js.map +1 -1
- package/lib/client/admin/shared.js +1 -1
- package/lib/client/admin/shared.js.map +1 -1
- package/lib/client/components/Markdown.js +14 -206
- package/lib/client/components/Markdown.js.map +1 -1
- package/lib/client/components/QaChangelog.js +60 -0
- package/lib/client/components/QaChangelog.js.map +1 -1
- package/lib/client/components/QaHeader.js +1 -3
- package/lib/client/components/QaHeader.js.map +1 -1
- package/lib/client/components/QaMessage.js +9 -4
- package/lib/client/components/QaMessage.js.map +1 -1
- package/lib/client/components/QaSidebar.js +5 -2
- package/lib/client/components/QaSidebar.js.map +1 -1
- package/lib/client/components/QaSourcesPanel.js +3 -18
- package/lib/client/components/QaSourcesPanel.js.map +1 -1
- package/lib/client/components/QaWorkGroup.js +4 -8
- package/lib/client/components/QaWorkGroup.js.map +1 -1
- package/lib/client/components/source-icon.js +26 -0
- package/lib/client/components/source-icon.js.map +1 -0
- package/lib/client/components/thinking-phrases.js +2 -11
- package/lib/client/components/thinking-phrases.js.map +1 -1
- package/lib/client/components/use-now.js +21 -0
- package/lib/client/components/use-now.js.map +1 -0
- package/lib/client/index.js +11 -3
- package/lib/client/index.js.map +1 -1
- package/lib/client/lineage.js +18 -0
- package/lib/client/lineage.js.map +1 -0
- package/lib/client/markdown/CodeBlock.js +28 -0
- package/lib/client/markdown/CodeBlock.js.map +1 -0
- package/lib/client/markdown/blocks.js +342 -0
- package/lib/client/markdown/blocks.js.map +1 -0
- package/lib/client/markdown/highlight.js +1089 -0
- package/lib/client/markdown/highlight.js.map +1 -0
- package/lib/client/markdown/inline.js +377 -0
- package/lib/client/markdown/inline.js.map +1 -0
- package/lib/client/markdown/render.js +147 -0
- package/lib/client/markdown/render.js.map +1 -0
- package/lib/client/markdown/source-chip.js +55 -0
- package/lib/client/markdown/source-chip.js.map +1 -0
- package/lib/client/markdown/use-transient-flag.js +27 -0
- package/lib/client/markdown/use-transient-flag.js.map +1 -0
- package/lib/client/role/RoleSelector.js +11 -2
- package/lib/client/role/RoleSelector.js.map +1 -1
- package/lib/client/role/preview.js +123 -0
- package/lib/client/role/preview.js.map +1 -0
- package/lib/client/styles.js +73 -19
- package/lib/client/styles.js.map +1 -1
- package/lib/client.js +3137 -761
- package/lib/client.js.map +1 -1
- package/lib/config-resolvers/accounts.js +15 -0
- package/lib/config-resolvers/accounts.js.map +1 -1
- package/lib/config-resolvers/defaults.js +8 -0
- package/lib/config-resolvers/defaults.js.map +1 -1
- package/lib/config-resolvers/sources.js +16 -0
- package/lib/config-resolvers/sources.js.map +1 -1
- package/lib/config.js +57 -0
- package/lib/config.js.map +1 -1
- package/lib/index.js +25 -10
- package/lib/index.js.map +1 -1
- package/lib/lockdown-policy.js +19 -0
- package/lib/lockdown-policy.js.map +1 -1
- package/lib/provenance/host-store.js +7 -3
- package/lib/provenance/host-store.js.map +1 -1
- package/lib/provenance/retention.js +25 -0
- package/lib/provenance/retention.js.map +1 -0
- package/lib/provenance/snapshot-store.js +290 -35
- package/lib/provenance/snapshot-store.js.map +1 -1
- package/lib/questions.js +16 -3
- package/lib/questions.js.map +1 -1
- package/lib/secure-session.js +136 -23
- package/lib/secure-session.js.map +1 -1
- package/lib/typert.host.js +79 -52
- package/lib/typert.remote-client.js +75 -48
- package/lib/types/access/role-repository.d.ts +38 -7
- package/lib/types/access/service.d.ts +77 -3
- package/lib/types/account-remotes.d.ts +8 -4
- package/lib/types/accounts/database.d.ts +84 -0
- package/lib/types/accounts/file.d.ts +17 -39
- package/lib/types/accounts/store.d.ts +98 -19
- package/lib/types/admin/quality-store.d.ts +20 -2
- package/lib/types/client/admin/{format.d.ts → copy.d.ts} +1 -1
- package/lib/types/client/components/Markdown.d.ts +7 -8
- package/lib/types/client/components/QaSidebar.d.ts +3 -1
- package/lib/types/client/components/QaSourcesPanel.d.ts +1 -3
- package/lib/types/client/components/source-icon.d.ts +12 -0
- package/lib/types/client/components/use-now.d.ts +8 -0
- package/lib/types/client/lineage.d.ts +15 -0
- package/lib/types/client/markdown/CodeBlock.d.ts +14 -0
- package/lib/types/client/markdown/blocks.d.ts +74 -0
- package/lib/types/client/markdown/highlight.d.ts +29 -0
- package/lib/types/client/markdown/inline.d.ts +40 -0
- package/lib/types/client/markdown/render.d.ts +13 -0
- package/lib/types/client/markdown/source-chip.d.ts +32 -0
- package/lib/types/client/markdown/use-transient-flag.d.ts +12 -0
- package/lib/types/client/role/RoleSelector.d.ts +11 -1
- package/lib/types/client/role/preview.d.ts +109 -0
- package/lib/types/index.d.ts +5 -1
- package/lib/types/lockdown-policy.d.ts +16 -0
- package/lib/types/provenance/host-store.d.ts +7 -3
- package/lib/types/provenance/retention.d.ts +46 -0
- package/lib/types/provenance/snapshot-store.d.ts +63 -7
- package/lib/types/questions.d.ts +5 -0
- package/lib/types/secure-session.d.ts +27 -1
- package/lib/types/types.d.ts +54 -0
- package/package.json +3 -3
- package/lib/client/admin/format.js.map +0 -1
package/lib/types/types.d.ts
CHANGED
|
@@ -45,6 +45,17 @@ export type QaPermission = "users.read" | "users.manage" | "roles.read" | "roles
|
|
|
45
45
|
export interface QaToolSelection {
|
|
46
46
|
readonly always: readonly string[];
|
|
47
47
|
readonly skillGrantable: readonly string[];
|
|
48
|
+
/**
|
|
49
|
+
* Names this layer takes away, whatever grants them.
|
|
50
|
+
*
|
|
51
|
+
* The deployment's pinned tools and the Common layer reach every role, so
|
|
52
|
+
* without this a system tool could only be withdrawn by editing the profile
|
|
53
|
+
* and restarting the Host. A denial beats every grant — system, Common, the
|
|
54
|
+
* role's own list and every skill — and it narrows the ceiling a delegated
|
|
55
|
+
* assistant is held to, so one checkbox takes a tool away from a role and
|
|
56
|
+
* from the experts that role may spawn.
|
|
57
|
+
*/
|
|
58
|
+
readonly deny?: readonly string[];
|
|
48
59
|
}
|
|
49
60
|
/** Tool/skill selection shared by the common layer and one QA subrole. */
|
|
50
61
|
export interface QaCapabilitySelection {
|
|
@@ -434,6 +445,16 @@ export interface QaSkillRemoval {
|
|
|
434
445
|
}
|
|
435
446
|
export interface QaSourcesConfig {
|
|
436
447
|
readonly enabled?: boolean;
|
|
448
|
+
/**
|
|
449
|
+
* How much durable provenance the deployment keeps. Every bound counts
|
|
450
|
+
* turns, shards or days, and zero keeps everything for that bound.
|
|
451
|
+
*/
|
|
452
|
+
readonly retention?: {
|
|
453
|
+
readonly maxTurnsPerSession?: number;
|
|
454
|
+
readonly maxSessions?: number;
|
|
455
|
+
readonly maxAgeDays?: number;
|
|
456
|
+
readonly sweepIntervalMinutes?: number;
|
|
457
|
+
};
|
|
437
458
|
readonly collect?: {
|
|
438
459
|
readonly parentAgent?: boolean;
|
|
439
460
|
readonly subagents?: boolean;
|
|
@@ -582,6 +603,21 @@ export interface QaSurfaceConfig {
|
|
|
582
603
|
readonly enabled?: boolean;
|
|
583
604
|
readonly allowRegistration?: boolean;
|
|
584
605
|
readonly sessionTtlDays?: number;
|
|
606
|
+
/**
|
|
607
|
+
* Login/registration attempts accepted per rolling minute, store-wide.
|
|
608
|
+
* The limit backs the password checks, so the default stays tight.
|
|
609
|
+
*/
|
|
610
|
+
readonly maxAuthAttemptsPerMinute?: number;
|
|
611
|
+
/**
|
|
612
|
+
* What happens to ownership records of chats the Harness no longer knows.
|
|
613
|
+
* A record is a chat's auth boundary, so only vanished chats are ever
|
|
614
|
+
* swept, and only after `ownershipGraceHours`.
|
|
615
|
+
*/
|
|
616
|
+
readonly retention?: {
|
|
617
|
+
readonly pruneVanishedSessions?: boolean;
|
|
618
|
+
readonly ownershipGraceHours?: number;
|
|
619
|
+
readonly sweepIntervalMinutes?: number;
|
|
620
|
+
};
|
|
585
621
|
/** Let admins see chats owned by other QA accounts. */
|
|
586
622
|
readonly showOtherUsersChats?: boolean;
|
|
587
623
|
/**
|
|
@@ -720,8 +756,15 @@ export interface ResolvedQaSurfaceConfig {
|
|
|
720
756
|
readonly enabled: boolean;
|
|
721
757
|
readonly allowRegistration: boolean;
|
|
722
758
|
readonly sessionTtlDays: number;
|
|
759
|
+
/** Login/registration attempts accepted per rolling minute, store-wide. */
|
|
760
|
+
readonly maxAuthAttemptsPerMinute: number;
|
|
723
761
|
readonly showOtherUsersChats: boolean;
|
|
724
762
|
readonly perUserWorkspace: boolean;
|
|
763
|
+
readonly retention: {
|
|
764
|
+
readonly pruneVanishedSessions: boolean;
|
|
765
|
+
readonly ownershipGraceHours: number;
|
|
766
|
+
readonly sweepIntervalMinutes: number;
|
|
767
|
+
};
|
|
725
768
|
readonly profile: {
|
|
726
769
|
readonly enabled: boolean;
|
|
727
770
|
readonly inject: boolean;
|
|
@@ -757,6 +800,12 @@ export interface ResolvedQaSurfaceConfig {
|
|
|
757
800
|
};
|
|
758
801
|
readonly sources: {
|
|
759
802
|
readonly enabled: boolean;
|
|
803
|
+
readonly retention: {
|
|
804
|
+
readonly maxTurnsPerSession: number;
|
|
805
|
+
readonly maxSessions: number;
|
|
806
|
+
readonly maxAgeDays: number;
|
|
807
|
+
readonly sweepIntervalMinutes: number;
|
|
808
|
+
};
|
|
760
809
|
readonly collect: {
|
|
761
810
|
readonly parentAgent: boolean;
|
|
762
811
|
readonly subagents: boolean;
|
|
@@ -1360,7 +1409,12 @@ export interface QaAdminUserDetail {
|
|
|
1360
1409
|
readonly effective: readonly {
|
|
1361
1410
|
readonly subroleId: string;
|
|
1362
1411
|
readonly name: string;
|
|
1412
|
+
/** Visible from the first step: system-required, Common and the role. */
|
|
1363
1413
|
readonly tools: number;
|
|
1414
|
+
/** The role's ceiling for tools a loaded skill requires. */
|
|
1415
|
+
readonly grantableTools: number;
|
|
1416
|
+
/** Tools the profile withdraws, whatever else grants them. */
|
|
1417
|
+
readonly deniedTools: number;
|
|
1364
1418
|
readonly skills: number;
|
|
1365
1419
|
}[];
|
|
1366
1420
|
readonly activity: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yadsh/dsh-qa-surface",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "A focused end-user QA surface backed by native DeepSeek Harness sessions",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -131,7 +131,8 @@
|
|
|
131
131
|
"dependencies": {
|
|
132
132
|
"yaml": "^2.9.0",
|
|
133
133
|
"zod": "^4.4.3",
|
|
134
|
-
"@yadsh/dsh-plugin-
|
|
134
|
+
"@yadsh/dsh-plugin-kit": "^0.2.0",
|
|
135
|
+
"@yadsh/dsh-plugin-log": "^0.4.0"
|
|
135
136
|
},
|
|
136
137
|
"devDependencies": {
|
|
137
138
|
"@deepseek-ai/cordis": "4.0.2",
|
|
@@ -175,7 +176,6 @@
|
|
|
175
176
|
"typescript": "^7.0.2",
|
|
176
177
|
"vitest": "^4.1.11",
|
|
177
178
|
"@yadsh/dsh-config": "^0.0.0",
|
|
178
|
-
"@yadsh/dsh-plugin-kit": "^0.1.0",
|
|
179
179
|
"@yadsh/dsh-plugin-scripts": "^0.0.0"
|
|
180
180
|
},
|
|
181
181
|
"publishConfig": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/client/admin/format.ts"],"names":[],"mappings":"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"}
|