@yadsh/dsh-qa-surface 0.10.0 → 0.11.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.
- package/README.md +310 -48
- package/lib/access/service.js +49 -10
- package/lib/access/service.js.map +1 -1
- package/lib/account-remotes.js +41 -0
- package/lib/account-remotes.js.map +1 -1
- package/lib/accounts/database.js +140 -0
- package/lib/accounts/database.js.map +1 -1
- package/lib/accounts/errors.js.map +1 -1
- package/lib/accounts/service-token.js +103 -0
- package/lib/accounts/service-token.js.map +1 -0
- package/lib/accounts/store.js +291 -5
- package/lib/accounts/store.js.map +1 -1
- package/lib/admin/conversation-log.js +14 -8
- package/lib/admin/conversation-log.js.map +1 -1
- package/lib/admin/permissions.js +5 -0
- package/lib/admin/permissions.js.map +1 -1
- package/lib/admin/quality-store.js +4 -0
- package/lib/admin/quality-store.js.map +1 -1
- package/lib/admin/service.js +173 -0
- package/lib/admin/service.js.map +1 -1
- package/lib/admin/session-log.js +39 -8
- package/lib/admin/session-log.js.map +1 -1
- package/lib/attachment-rules.js +39 -6
- package/lib/attachment-rules.js.map +1 -1
- package/lib/cli.js +83 -1
- package/lib/cli.js.map +1 -1
- package/lib/client/QaAccountsController.js +213 -4
- package/lib/client/QaAccountsController.js.map +1 -1
- package/lib/client/QaSessionController.js +37 -21
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +28 -4
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/admin/QaAdmin.js +9 -1
- package/lib/client/admin/QaAdmin.js.map +1 -1
- package/lib/client/admin/pages/SkillFiles.js +78 -0
- package/lib/client/admin/pages/SkillFiles.js.map +1 -0
- package/lib/client/admin/pages/Users.js +65 -1
- package/lib/client/admin/pages/Users.js.map +1 -1
- package/lib/client/admin/routes.js +8 -1
- package/lib/client/admin/routes.js.map +1 -1
- package/lib/client/admin/styles.js +2 -0
- package/lib/client/admin/styles.js.map +1 -1
- package/lib/client/attachments.js +41 -11
- package/lib/client/attachments.js.map +1 -1
- package/lib/client/components/QaAuthGate.js +19 -10
- package/lib/client/components/QaAuthGate.js.map +1 -1
- package/lib/client/components/QaChangelog.js +43 -0
- package/lib/client/components/QaChangelog.js.map +1 -1
- package/lib/client/index.js +13 -0
- package/lib/client/index.js.map +1 -1
- package/lib/client/lineage.js +64 -0
- package/lib/client/lineage.js.map +1 -1
- package/lib/client/settings/sections/attachments.js +6 -5
- package/lib/client/settings/sections/attachments.js.map +1 -1
- package/lib/client/settings/sections/notes.js +22 -4
- package/lib/client/settings/sections/notes.js.map +1 -1
- package/lib/client/styles.js +9 -0
- package/lib/client/styles.js.map +1 -1
- package/lib/client/types.js.map +1 -1
- package/lib/client/user-settings/IntegrationTokensPage.js +150 -0
- package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -0
- package/lib/client/user-settings/PasswordSettingsPage.js +48 -0
- package/lib/client/user-settings/PasswordSettingsPage.js.map +1 -0
- package/lib/client/user-settings/SkillCatalog.js +2 -2
- package/lib/client/user-settings/SkillCatalog.js.map +1 -1
- package/lib/client/user-settings/UserSettingsDialog.js +17 -2
- package/lib/client/user-settings/UserSettingsDialog.js.map +1 -1
- package/lib/client/user-settings/copy.js +20 -0
- package/lib/client/user-settings/copy.js.map +1 -1
- package/lib/client.js +2480 -137
- package/lib/client.js.map +1 -1
- package/lib/config-resolvers/attachments.js +6 -5
- package/lib/config-resolvers/attachments.js.map +1 -1
- package/lib/config-resolvers/defaults.js +23 -2
- package/lib/config-resolvers/defaults.js.map +1 -1
- package/lib/config-resolvers/integration.js +94 -0
- package/lib/config-resolvers/integration.js.map +1 -0
- package/lib/config-resolvers/notes.js +2 -0
- package/lib/config-resolvers/notes.js.map +1 -1
- package/lib/config.js +72 -0
- package/lib/config.js.map +1 -1
- package/lib/index.js +197 -2
- package/lib/index.js.map +1 -1
- package/lib/integration/answer.js +100 -0
- package/lib/integration/answer.js.map +1 -0
- package/lib/integration/attachments.js +246 -0
- package/lib/integration/attachments.js.map +1 -0
- package/lib/integration/contract.js +53 -0
- package/lib/integration/contract.js.map +1 -0
- package/lib/integration/host-runner.js +243 -0
- package/lib/integration/host-runner.js.map +1 -0
- package/lib/integration/http.js +576 -0
- package/lib/integration/http.js.map +1 -0
- package/lib/integration/service.js +373 -0
- package/lib/integration/service.js.map +1 -0
- package/lib/integration/transcript-reader.js +202 -0
- package/lib/integration/transcript-reader.js.map +1 -0
- package/lib/integration/transcript.js +148 -0
- package/lib/integration/transcript.js.map +1 -0
- package/lib/personal-skills/index.js +2 -2
- package/lib/personal-skills/index.js.map +1 -1
- package/lib/personal-skills/paths.js +14 -8
- package/lib/personal-skills/paths.js.map +1 -1
- package/lib/personal-skills/provider.js +16 -4
- package/lib/personal-skills/provider.js.map +1 -1
- package/lib/personal-skills/service.js +240 -30
- package/lib/personal-skills/service.js.map +1 -1
- package/lib/prompt-notes.js +58 -0
- package/lib/prompt-notes.js.map +1 -1
- package/lib/provenance/document-preview.js +10 -1
- package/lib/provenance/document-preview.js.map +1 -1
- package/lib/qa-tools/catalog.js +12 -1
- package/lib/qa-tools/catalog.js.map +1 -1
- package/lib/qa-tools/docs-tools.js +563 -0
- package/lib/qa-tools/docs-tools.js.map +1 -0
- package/lib/resolve-config.js +4 -0
- package/lib/resolve-config.js.map +1 -1
- package/lib/secure-session.js +83 -3
- package/lib/secure-session.js.map +1 -1
- package/lib/shared/integration-tokens.js +23 -0
- package/lib/shared/integration-tokens.js.map +1 -0
- package/lib/typert.host.js +1176 -213
- package/lib/typert.remote-client.d.ts +27 -1
- package/lib/typert.remote-client.js +911 -69
- package/lib/types/access/service.d.ts +33 -2
- package/lib/types/account-remotes.d.ts +30 -1
- package/lib/types/accounts/database.d.ts +53 -0
- package/lib/types/accounts/errors.d.ts +5 -1
- package/lib/types/accounts/service-token.d.ts +70 -0
- package/lib/types/accounts/store.d.ts +131 -1
- package/lib/types/admin/conversation-log.d.ts +12 -0
- package/lib/types/admin/service.d.ts +56 -1
- package/lib/types/admin/session-log.d.ts +21 -0
- package/lib/types/attachment-rules.d.ts +26 -3
- package/lib/types/client/QaAccountsController.d.ts +64 -5
- package/lib/types/client/QaSessionController.d.ts +24 -2
- package/lib/types/client/admin/pages/SkillFiles.d.ts +17 -0
- package/lib/types/client/admin/routes.d.ts +2 -0
- package/lib/types/client/attachments.d.ts +21 -4
- package/lib/types/client/lineage.d.ts +42 -0
- package/lib/types/client/settings/sections/notes.d.ts +5 -3
- package/lib/types/client/types.d.ts +71 -1
- package/lib/types/client/user-settings/IntegrationTokensPage.d.ts +21 -0
- package/lib/types/client/user-settings/PasswordSettingsPage.d.ts +19 -0
- package/lib/types/client/user-settings/UserSettingsDialog.d.ts +11 -2
- package/lib/types/client/user-settings/copy.d.ts +10 -1
- package/lib/types/config-resolvers/integration.d.ts +47 -0
- package/lib/types/config.d.ts +10 -0
- package/lib/types/index.d.ts +73 -1
- package/lib/types/integration/answer.d.ts +65 -0
- package/lib/types/integration/attachments.d.ts +85 -0
- package/lib/types/integration/contract.d.ts +196 -0
- package/lib/types/integration/host-runner.d.ts +44 -0
- package/lib/types/integration/http.d.ts +79 -0
- package/lib/types/integration/service.d.ts +120 -0
- package/lib/types/integration/transcript-reader.d.ts +100 -0
- package/lib/types/integration/transcript.d.ts +59 -0
- package/lib/types/personal-skills/index.d.ts +2 -2
- package/lib/types/personal-skills/paths.d.ts +15 -3
- package/lib/types/personal-skills/provider.d.ts +14 -2
- package/lib/types/personal-skills/service.d.ts +89 -14
- package/lib/types/prompt-notes.d.ts +28 -0
- package/lib/types/provenance/document-preview.d.ts +4 -0
- package/lib/types/qa-tools/catalog.d.ts +1 -1
- package/lib/types/qa-tools/docs-tools.d.ts +160 -0
- package/lib/types/secure-session.d.ts +52 -1
- package/lib/types/shared/integration-tokens.d.ts +24 -0
- package/lib/types/types.d.ts +170 -2
- package/package.json +2 -2
|
@@ -12,9 +12,19 @@ import { normalizeAllowedTools, parseSkillFile, serializeSkillFile, skillFileBod
|
|
|
12
12
|
*/
|
|
13
13
|
const RECOGNIZED_RESOURCES = new Set(["references", "assets", "scripts"]);
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Name of the sidecar that records which skills an administrator wrote. It
|
|
16
|
+
* sits beside the skill directories, and everything that enumerates skills
|
|
17
|
+
* ignores dot entries — so the record never becomes a skill and never reaches
|
|
18
|
+
* the model.
|
|
19
|
+
*/
|
|
20
|
+
export const QA_SKILL_ADMIN_EDITS_FILE = ".admin-edits.json";
|
|
21
|
+
/** Cap on the sidecar: its entry count, and the bytes read back from it. */
|
|
22
|
+
const ADMIN_EDITS_MAX = 512;
|
|
23
|
+
const ADMIN_EDITS_MAX_BYTES = 64 * 1024;
|
|
24
|
+
/**
|
|
25
|
+
* Skills over one directory: an account's own, or the deployment's shared one.
|
|
16
26
|
*
|
|
17
|
-
* The service is the only writer: it derives every path from the
|
|
27
|
+
* The service is the only writer: it derives every path from the scope,
|
|
18
28
|
* validates a draft before touching the disk, writes `SKILL.md` through a
|
|
19
29
|
* temporary file and a rename, and keeps a removed skill recoverable in the
|
|
20
30
|
* trash beside its skills root. Reading is deliberately permissive — a skill
|
|
@@ -32,21 +42,18 @@ export class QaPersonalSkills {
|
|
|
32
42
|
get enabled() {
|
|
33
43
|
return this.options.getConfig().accounts.skills.enabled;
|
|
34
44
|
}
|
|
35
|
-
/** Resolve one
|
|
36
|
-
rootsFor(
|
|
45
|
+
/** Resolve one scope's storage roots, or refuse the operation. */
|
|
46
|
+
rootsFor(scope) {
|
|
47
|
+
if (isSharedScope(scope))
|
|
48
|
+
return this.sharedRoots();
|
|
37
49
|
const config = this.options.getConfig();
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
const workspacePath = this.options.workspacePath();
|
|
42
|
-
if (workspacePath === undefined) {
|
|
43
|
-
throw new QaPersonalSkillError("workspace-unavailable", "the configured QA workspace is not registered");
|
|
44
|
-
}
|
|
50
|
+
this.requireEnabled();
|
|
51
|
+
const workspacePath = this.requireWorkspacePath();
|
|
45
52
|
let personalRoot;
|
|
46
53
|
try {
|
|
47
54
|
// `prepare` tolerates a missing account directory: reading one's own
|
|
48
55
|
// skills must not require an unrelated session to exist first.
|
|
49
|
-
personalRoot = prepareQaUserWorkspace(workspacePath,
|
|
56
|
+
personalRoot = prepareQaUserWorkspace(workspacePath, scope.userId);
|
|
50
57
|
}
|
|
51
58
|
catch (error) {
|
|
52
59
|
throw new QaPersonalSkillError("workspace-unavailable", error instanceof Error ? error.message : String(error));
|
|
@@ -55,6 +62,36 @@ export class QaPersonalSkills {
|
|
|
55
62
|
ensureSkillRoots(roots);
|
|
56
63
|
return roots;
|
|
57
64
|
}
|
|
65
|
+
/** The deployment's own skills root, below the registered workspace. */
|
|
66
|
+
sharedRoots() {
|
|
67
|
+
const config = this.options.getConfig();
|
|
68
|
+
this.requireEnabled();
|
|
69
|
+
const workspacePath = this.requireWorkspacePath();
|
|
70
|
+
const roots = resolveSkillRoots(workspacePath, config.accounts.skills.relativeRoot, "the deployment workspace's");
|
|
71
|
+
ensureSkillRoots(roots);
|
|
72
|
+
return { ...roots, shared: true };
|
|
73
|
+
}
|
|
74
|
+
requireEnabled() {
|
|
75
|
+
if (!this.options.getConfig().accounts.skills.enabled) {
|
|
76
|
+
throw new QaPersonalSkillError("skills-disabled", "personal skills are not enabled on this deployment");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** The registered workspace every scope is resolved against, or a refusal. */
|
|
80
|
+
requireWorkspacePath() {
|
|
81
|
+
const workspacePath = this.options.workspacePath();
|
|
82
|
+
if (workspacePath === undefined) {
|
|
83
|
+
throw new QaPersonalSkillError("workspace-unavailable", "the configured QA workspace is not registered");
|
|
84
|
+
}
|
|
85
|
+
return workspacePath;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The absolute directory a scope reads and writes. The console names it so
|
|
89
|
+
* an operator can open the same path in a file manager; nothing in the wire
|
|
90
|
+
* contract can name a path the service did not derive itself.
|
|
91
|
+
*/
|
|
92
|
+
rootPath(scope) {
|
|
93
|
+
return this.rootsFor(scope).skills;
|
|
94
|
+
}
|
|
58
95
|
/**
|
|
59
96
|
* Resolve the storage roots a session cwd names. This is the discovery
|
|
60
97
|
* provider's entry point and takes no account token: the cwd itself is the
|
|
@@ -78,11 +115,12 @@ export class QaPersonalSkills {
|
|
|
78
115
|
return undefined;
|
|
79
116
|
}
|
|
80
117
|
}
|
|
81
|
-
/** Every skill of one
|
|
118
|
+
/** Every skill of one scope, sorted by directory name. */
|
|
82
119
|
list(context) {
|
|
83
120
|
const roots = this.rootsFor(context);
|
|
84
121
|
const available = this.availableTools();
|
|
85
|
-
|
|
122
|
+
const edits = this.adminEdits(roots);
|
|
123
|
+
return listSkillDirectories(roots).map((directoryName) => this.summarize(this.load(roots, directoryName), available, edits));
|
|
86
124
|
}
|
|
87
125
|
/** One skill with everything the editor needs. */
|
|
88
126
|
get(context, name) {
|
|
@@ -91,7 +129,7 @@ export class QaPersonalSkills {
|
|
|
91
129
|
if (!stored.exists) {
|
|
92
130
|
throw new QaPersonalSkillError("skill-not-found", `no skill directory named ${name}`);
|
|
93
131
|
}
|
|
94
|
-
return this.document(stored, this.availableTools());
|
|
132
|
+
return this.document(stored, this.availableTools(), this.adminEdits(roots));
|
|
95
133
|
}
|
|
96
134
|
/**
|
|
97
135
|
* Check one unsaved draft without touching storage: the serializer is the
|
|
@@ -117,7 +155,7 @@ export class QaPersonalSkills {
|
|
|
117
155
|
}),
|
|
118
156
|
};
|
|
119
157
|
}
|
|
120
|
-
/** Whether one
|
|
158
|
+
/** Whether one scope stores a skill under this name. */
|
|
121
159
|
has(context, name) {
|
|
122
160
|
try {
|
|
123
161
|
const roots = this.rootsFor(context);
|
|
@@ -128,7 +166,7 @@ export class QaPersonalSkills {
|
|
|
128
166
|
}
|
|
129
167
|
}
|
|
130
168
|
/** Create one skill directory and its `SKILL.md`. */
|
|
131
|
-
create(context, input) {
|
|
169
|
+
create(context, input, origin = {}) {
|
|
132
170
|
const roots = this.rootsFor(context);
|
|
133
171
|
const prepared = this.prepareWrite(input, this.options.getConfig(), true);
|
|
134
172
|
const directory = skillDirectory(roots, prepared.name);
|
|
@@ -137,20 +175,21 @@ export class QaPersonalSkills {
|
|
|
137
175
|
}
|
|
138
176
|
try {
|
|
139
177
|
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
140
|
-
this.
|
|
178
|
+
this.writeAtomic(skillFilePath(roots, prepared.name), prepared.text);
|
|
141
179
|
}
|
|
142
180
|
catch (error) {
|
|
143
181
|
rmSync(directory, { recursive: true, force: true });
|
|
144
182
|
throw this.storageError(error);
|
|
145
183
|
}
|
|
146
184
|
this.refreshCatalog("skill.create", context, prepared.name);
|
|
185
|
+
this.rememberWrite(roots, prepared.name, prepared.text, undefined, origin);
|
|
147
186
|
return this.get(context, prepared.name);
|
|
148
187
|
}
|
|
149
188
|
/**
|
|
150
189
|
* Replace one skill's file, preserving the frontmatter fields this editor
|
|
151
190
|
* does not own and moving the whole directory when the name changed.
|
|
152
191
|
*/
|
|
153
|
-
update(context, name, input) {
|
|
192
|
+
update(context, name, input, origin = {}) {
|
|
154
193
|
const roots = this.rootsFor(context);
|
|
155
194
|
const prepared = this.prepareWrite(input, this.options.getConfig(), true);
|
|
156
195
|
const current = this.load(roots, name);
|
|
@@ -166,12 +205,13 @@ export class QaPersonalSkills {
|
|
|
166
205
|
});
|
|
167
206
|
const target = skillDirectory(roots, prepared.name);
|
|
168
207
|
if (current.directory === target) {
|
|
169
|
-
this.
|
|
208
|
+
this.writeAtomic(current.filePath, text);
|
|
170
209
|
}
|
|
171
210
|
else {
|
|
172
211
|
this.renameSkillDirectory(current.directory, target, text, prepared.name);
|
|
173
212
|
}
|
|
174
213
|
this.refreshCatalog("skill.update", context, prepared.name);
|
|
214
|
+
this.rememberWrite(roots, prepared.name, text, name, origin);
|
|
175
215
|
return this.get(context, prepared.name);
|
|
176
216
|
}
|
|
177
217
|
/** Move one skill directory into the trash beside its skills root. */
|
|
@@ -190,6 +230,7 @@ export class QaPersonalSkills {
|
|
|
190
230
|
throw this.storageError(error);
|
|
191
231
|
}
|
|
192
232
|
this.refreshCatalog("skill.delete", context, name);
|
|
233
|
+
this.forgetWrite(roots, name);
|
|
193
234
|
return { name, trashed: true };
|
|
194
235
|
}
|
|
195
236
|
/**
|
|
@@ -241,6 +282,17 @@ export class QaPersonalSkills {
|
|
|
241
282
|
if (roots === undefined)
|
|
242
283
|
return [];
|
|
243
284
|
this.observe(roots.skills);
|
|
285
|
+
const shared = this.sharedRootsForDiscovery(roots);
|
|
286
|
+
// The account's own skills come first: on a duplicate name the registry
|
|
287
|
+
// ranks a personal skill above the shared one, and this order is the same
|
|
288
|
+
// decision told to every caller that reads the list directly.
|
|
289
|
+
return [
|
|
290
|
+
...this.discoverIn(roots),
|
|
291
|
+
...(shared === undefined ? [] : this.discoverIn(shared)),
|
|
292
|
+
];
|
|
293
|
+
}
|
|
294
|
+
/** One roots pair's discoverable skills; never throws. */
|
|
295
|
+
discoverIn(roots) {
|
|
244
296
|
try {
|
|
245
297
|
return listSkillDirectories(roots)
|
|
246
298
|
.map((directoryName) => this.load(roots, directoryName))
|
|
@@ -253,6 +305,28 @@ export class QaPersonalSkills {
|
|
|
253
305
|
return [];
|
|
254
306
|
}
|
|
255
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* The deployment's shared root for one cwd-scoped read, or undefined. It
|
|
310
|
+
* answers undefined when shared skills cannot be resolved at all, and when
|
|
311
|
+
* the shared root is the root the personal read already covered — a session
|
|
312
|
+
* pinned to the workspace root would otherwise list everything twice.
|
|
313
|
+
*/
|
|
314
|
+
sharedRootsForDiscovery(personal) {
|
|
315
|
+
let shared;
|
|
316
|
+
try {
|
|
317
|
+
shared = this.sharedRoots();
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
this.options.logger.warn("skill.shared-discover-failed", {
|
|
321
|
+
message: error instanceof Error ? error.message : String(error),
|
|
322
|
+
});
|
|
323
|
+
return undefined;
|
|
324
|
+
}
|
|
325
|
+
if (sameDirectory(shared.skills, personal.skills))
|
|
326
|
+
return undefined;
|
|
327
|
+
this.observe(shared.skills);
|
|
328
|
+
return shared;
|
|
329
|
+
}
|
|
256
330
|
/** Re-read one skill of a session cwd, re-checking the same boundary. */
|
|
257
331
|
read(cwd, directoryName) {
|
|
258
332
|
const config = this.options.getConfig();
|
|
@@ -261,6 +335,15 @@ export class QaPersonalSkills {
|
|
|
261
335
|
const roots = this.rootsForCwd(cwd, config.accounts.skills.relativeRoot);
|
|
262
336
|
if (roots === undefined)
|
|
263
337
|
return undefined;
|
|
338
|
+
const personal = this.readFrom(roots, directoryName);
|
|
339
|
+
if (personal !== undefined)
|
|
340
|
+
return personal;
|
|
341
|
+
const shared = this.sharedRootsForDiscovery(roots);
|
|
342
|
+
return shared === undefined
|
|
343
|
+
? undefined
|
|
344
|
+
: this.readFrom(shared, directoryName);
|
|
345
|
+
}
|
|
346
|
+
readFrom(roots, directoryName) {
|
|
264
347
|
let directory;
|
|
265
348
|
try {
|
|
266
349
|
directory = skillDirectory(roots, directoryName);
|
|
@@ -309,6 +392,7 @@ export class QaPersonalSkills {
|
|
|
309
392
|
load(roots, directoryName) {
|
|
310
393
|
const absent = {
|
|
311
394
|
exists: false,
|
|
395
|
+
shared: roots.shared,
|
|
312
396
|
directoryName,
|
|
313
397
|
directory: path.join(roots.skills, directoryName),
|
|
314
398
|
filePath: path.join(roots.skills, directoryName, "SKILL.md"),
|
|
@@ -334,6 +418,7 @@ export class QaPersonalSkills {
|
|
|
334
418
|
const resources = this.resources(directory);
|
|
335
419
|
const base = {
|
|
336
420
|
exists: true,
|
|
421
|
+
shared: roots.shared,
|
|
337
422
|
directoryName,
|
|
338
423
|
directory,
|
|
339
424
|
filePath,
|
|
@@ -502,7 +587,7 @@ export class QaPersonalSkills {
|
|
|
502
587
|
renameSync(path.join(from, entry), path.join(to, entry));
|
|
503
588
|
moved.push(entry);
|
|
504
589
|
}
|
|
505
|
-
this.
|
|
590
|
+
this.writeAtomic(path.join(to, "SKILL.md"), text);
|
|
506
591
|
}
|
|
507
592
|
catch (error) {
|
|
508
593
|
// Put every entry back before reporting: a half-moved skill directory is
|
|
@@ -533,7 +618,7 @@ export class QaPersonalSkills {
|
|
|
533
618
|
}
|
|
534
619
|
}
|
|
535
620
|
/** Write one file through a temporary sibling and a rename. */
|
|
536
|
-
|
|
621
|
+
writeAtomic(filePath, text) {
|
|
537
622
|
const temporary = `${filePath}.${process.pid}.${randomUUID()}.tmp`;
|
|
538
623
|
try {
|
|
539
624
|
writeFileSync(temporary, text, "utf8");
|
|
@@ -567,7 +652,7 @@ export class QaPersonalSkills {
|
|
|
567
652
|
throw new QaPersonalSkillError("skill-conflict", `skill ${name} changed after it was read`);
|
|
568
653
|
}
|
|
569
654
|
}
|
|
570
|
-
summarize(stored, available) {
|
|
655
|
+
summarize(stored, available, edits) {
|
|
571
656
|
const contents = stored.contents;
|
|
572
657
|
return {
|
|
573
658
|
name: stored.directoryName,
|
|
@@ -582,12 +667,13 @@ export class QaPersonalSkills {
|
|
|
582
667
|
diagnostics: stored.diagnostics,
|
|
583
668
|
updatedAt: stored.updatedAt,
|
|
584
669
|
revision: stored.revision,
|
|
670
|
+
adminEdit: this.adminEditOf(stored, edits),
|
|
585
671
|
};
|
|
586
672
|
}
|
|
587
|
-
document(stored, available) {
|
|
673
|
+
document(stored, available, edits) {
|
|
588
674
|
const contents = stored.contents;
|
|
589
675
|
return {
|
|
590
|
-
...this.summarize(stored, available),
|
|
676
|
+
...this.summarize(stored, available, edits),
|
|
591
677
|
body: contents?.body ?? skillFileBody(stored.raw),
|
|
592
678
|
extraFrontmatter: contents?.extraFrontmatter ?? {},
|
|
593
679
|
sourcePath: stored.filePath,
|
|
@@ -605,12 +691,17 @@ export class QaPersonalSkills {
|
|
|
605
691
|
* is still stored, and the deployment needs to see which half broke.
|
|
606
692
|
*/
|
|
607
693
|
refreshCatalog(action, context, name) {
|
|
608
|
-
// The account id is hashed: an audit line names no personal data.
|
|
694
|
+
// The account id is hashed: an audit line names no personal data. The
|
|
695
|
+
// deployment-wide store has no account to name at all.
|
|
609
696
|
this.options.logger.info(action, {
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
697
|
+
...(isSharedScope(context)
|
|
698
|
+
? { scope: "shared" }
|
|
699
|
+
: {
|
|
700
|
+
user: createHash("sha256")
|
|
701
|
+
.update(context.userId)
|
|
702
|
+
.digest("hex")
|
|
703
|
+
.slice(0, 12),
|
|
704
|
+
}),
|
|
614
705
|
skill: name,
|
|
615
706
|
});
|
|
616
707
|
try {
|
|
@@ -623,6 +714,99 @@ export class QaPersonalSkills {
|
|
|
623
714
|
});
|
|
624
715
|
}
|
|
625
716
|
}
|
|
717
|
+
// -------------------------------------------------------------------------
|
|
718
|
+
// Administrator provenance
|
|
719
|
+
// -------------------------------------------------------------------------
|
|
720
|
+
/**
|
|
721
|
+
* The administrator marks stored beside one skills root.
|
|
722
|
+
*
|
|
723
|
+
* The sidecar is advisory: a mark that cannot be read or written never fails
|
|
724
|
+
* a save, because losing a badge is a smaller failure than losing an edit.
|
|
725
|
+
* Each mark names the revision it describes, so a mark whose content has
|
|
726
|
+
* since changed reports as absent rather than as a claim about the present.
|
|
727
|
+
*/
|
|
728
|
+
adminEdits(roots) {
|
|
729
|
+
const read = readSkillText(path.join(roots.skills, QA_SKILL_ADMIN_EDITS_FILE), ADMIN_EDITS_MAX_BYTES);
|
|
730
|
+
if (read === undefined)
|
|
731
|
+
return new Map();
|
|
732
|
+
let parsed;
|
|
733
|
+
try {
|
|
734
|
+
parsed = JSON.parse(read.text);
|
|
735
|
+
}
|
|
736
|
+
catch {
|
|
737
|
+
return new Map();
|
|
738
|
+
}
|
|
739
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
740
|
+
return new Map();
|
|
741
|
+
const entries = parsed.entries;
|
|
742
|
+
if (typeof entries !== "object" || entries === null)
|
|
743
|
+
return new Map();
|
|
744
|
+
const marks = new Map();
|
|
745
|
+
for (const [name, value] of Object.entries(entries)) {
|
|
746
|
+
const record = adminEditRecord(value);
|
|
747
|
+
if (record !== undefined)
|
|
748
|
+
marks.set(name, record);
|
|
749
|
+
}
|
|
750
|
+
return marks;
|
|
751
|
+
}
|
|
752
|
+
/** The mark to report for one stored skill: absent unless it still matches. */
|
|
753
|
+
adminEditOf(stored, edits) {
|
|
754
|
+
const record = edits.get(stored.directoryName);
|
|
755
|
+
if (record === undefined || stored.revision === "")
|
|
756
|
+
return null;
|
|
757
|
+
if (record.revision !== stored.revision)
|
|
758
|
+
return null;
|
|
759
|
+
return { actorId: record.actorId, at: record.at };
|
|
760
|
+
}
|
|
761
|
+
/**
|
|
762
|
+
* Record one administrator write, or clear the mark when the owner wrote.
|
|
763
|
+
* `previousName` is the directory the skill had before the write, so a
|
|
764
|
+
* rename by an administrator moves the mark with the skill instead of
|
|
765
|
+
* leaving one behind for a name nothing answers to any more.
|
|
766
|
+
*/
|
|
767
|
+
rememberWrite(roots, name, text, previousName, origin) {
|
|
768
|
+
const actorId = origin.actorId;
|
|
769
|
+
const edits = new Map(this.adminEdits(roots));
|
|
770
|
+
let changed = false;
|
|
771
|
+
if (previousName !== undefined && previousName !== name) {
|
|
772
|
+
changed = edits.delete(previousName) || changed;
|
|
773
|
+
}
|
|
774
|
+
if (actorId === undefined) {
|
|
775
|
+
changed = edits.delete(name) || changed;
|
|
776
|
+
}
|
|
777
|
+
else {
|
|
778
|
+
edits.set(name, {
|
|
779
|
+
actorId,
|
|
780
|
+
at: new Date().toISOString(),
|
|
781
|
+
revision: hashText(text),
|
|
782
|
+
});
|
|
783
|
+
changed = true;
|
|
784
|
+
}
|
|
785
|
+
if (!changed)
|
|
786
|
+
return;
|
|
787
|
+
this.writeAdminEdits(roots, edits);
|
|
788
|
+
}
|
|
789
|
+
/** Drop the mark of a skill that no longer exists. */
|
|
790
|
+
forgetWrite(roots, name) {
|
|
791
|
+
const edits = new Map(this.adminEdits(roots));
|
|
792
|
+
if (!edits.delete(name))
|
|
793
|
+
return;
|
|
794
|
+
this.writeAdminEdits(roots, edits);
|
|
795
|
+
}
|
|
796
|
+
writeAdminEdits(roots, edits) {
|
|
797
|
+
try {
|
|
798
|
+
mkdirSync(roots.skills, { recursive: true, mode: 0o700 });
|
|
799
|
+
const entries = [...edits.entries()]
|
|
800
|
+
.sort((left, right) => (left[1].at < right[1].at ? 1 : -1))
|
|
801
|
+
.slice(0, ADMIN_EDITS_MAX);
|
|
802
|
+
this.writeAtomic(path.join(roots.skills, QA_SKILL_ADMIN_EDITS_FILE), `${JSON.stringify({ version: 1, entries: Object.fromEntries(entries) }, null, 2)}\n`);
|
|
803
|
+
}
|
|
804
|
+
catch (error) {
|
|
805
|
+
this.options.logger.warn("skill.admin-edit-record-failed", {
|
|
806
|
+
message: error instanceof Error ? error.message : String(error),
|
|
807
|
+
});
|
|
808
|
+
}
|
|
809
|
+
}
|
|
626
810
|
}
|
|
627
811
|
/**
|
|
628
812
|
* The one place the feature defines what an account-scoped cwd looks like:
|
|
@@ -630,6 +814,32 @@ export class QaPersonalSkills {
|
|
|
630
814
|
* root, which is what keeps the discovery provider from reading arbitrary
|
|
631
815
|
* directories a session happens to be pinned to.
|
|
632
816
|
*/
|
|
817
|
+
/** Whether a scope names the deployment-wide store. */
|
|
818
|
+
function isSharedScope(scope) {
|
|
819
|
+
return scope.shared === true;
|
|
820
|
+
}
|
|
821
|
+
/** Whether two derived directories are the same one. */
|
|
822
|
+
function sameDirectory(left, right) {
|
|
823
|
+
return process.platform === "win32"
|
|
824
|
+
? left.toLowerCase() === right.toLowerCase()
|
|
825
|
+
: left === right;
|
|
826
|
+
}
|
|
827
|
+
/** One mark read back from the sidecar, or undefined when it is malformed. */
|
|
828
|
+
function adminEditRecord(value) {
|
|
829
|
+
if (typeof value !== "object" || value === null)
|
|
830
|
+
return undefined;
|
|
831
|
+
const record = value;
|
|
832
|
+
const { actorId, at, revision } = record;
|
|
833
|
+
if (typeof actorId !== "string" ||
|
|
834
|
+
actorId === "" ||
|
|
835
|
+
typeof at !== "string" ||
|
|
836
|
+
at === "" ||
|
|
837
|
+
typeof revision !== "string" ||
|
|
838
|
+
revision === "") {
|
|
839
|
+
return undefined;
|
|
840
|
+
}
|
|
841
|
+
return { actorId, at, revision };
|
|
842
|
+
}
|
|
633
843
|
function qaUserWorkspaceFromCwd(cwd) {
|
|
634
844
|
const segments = path.resolve(cwd).split(/[/\\]+/u);
|
|
635
845
|
const userId = segments.at(-1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/personal-skills/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/personal-skills/service.ts"],"names":[],"mappings":"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"}
|
package/lib/prompt-notes.js
CHANGED
|
@@ -12,6 +12,10 @@ export const QA_IDENTITY_NOTE = "dsh-qa-surface:user-identity";
|
|
|
12
12
|
export const QA_SOURCES_NOTE = "dsh-qa-surface:structured-sources";
|
|
13
13
|
/** Note name asking the model to name its delegations. */
|
|
14
14
|
export const QA_DELEGATION_NOTE = "dsh-qa-surface:delegation-naming";
|
|
15
|
+
/** Note name routing an attached office document to the document pipeline. */
|
|
16
|
+
export const QA_DOCUMENTS_NOTE = "dsh-qa-surface:attached-documents";
|
|
17
|
+
/** Note name carrying the deployment's rule about where an answer comes from. */
|
|
18
|
+
export const QA_SOURCE_PRIORITY_NOTE = "dsh-qa-surface:source-priority";
|
|
15
19
|
/**
|
|
16
20
|
* Built-in note texts. Each is the fallback for its settings template
|
|
17
21
|
* (`notes.*.template`); the placeholders mark the parts the injector
|
|
@@ -21,6 +25,8 @@ export const QA_IDENTITY_NOTE_TEMPLATE = "{identity}\n\n{instructions}";
|
|
|
21
25
|
export const QA_SOURCES_NOTE_TEMPLATE = "Source provenance is collected automatically from your tool calls; the QA surface lists what it collected beside the answer. Do not append a manual Sources/Источники bibliography of your own.";
|
|
22
26
|
export const QA_SOURCES_FALLBACK_TEMPLATE = "A delegated run whose provider cannot expose tool events must call {reportTool} before finishing.";
|
|
23
27
|
export const QA_DELEGATION_NOTE_TEMPLATE = "When you start a background subagent, give the delegation a short vivid name in its description field: two or three words in the user's language that say what the run is for («Сверка отчётов», \"Log triage\"). The QA surface shows that description as the subagent's display name in the operator's panel and completion notices.";
|
|
28
|
+
export const QA_DOCUMENTS_NOTE_TEMPLATE = "A document a chat user attached is a path on disk, not text: read it with the deployment's document pipeline — `document_inspect` says what a DOCX or PDF is, `document_to_markdown` extracts its text, `document_from_url` stores the text of an attachment that only exists behind a URL. The plain file reader refuses those formats as binary, so that refusal is expected and is not a hint to go looking for the file somewhere else. When the pipeline itself refuses a path, report the refusal and the path it named instead of trying another reader.";
|
|
29
|
+
export const QA_SOURCE_PRIORITY_NOTE_TEMPLATE = "Answer from the source that owns the question: read what the conversation and its attachments already carry, then search the product documentation and ask the domain expert, and only then look in memory. Recalled memory is background from earlier sessions — a miss there is not evidence that no source exists, and it is not where a document, a page or a product fact should be looked up.";
|
|
24
30
|
/** Substitute `{name}` placeholders; a placeholder without a value drops out. */
|
|
25
31
|
function renderTemplate(template, tokens) {
|
|
26
32
|
return template.replace(/\{(\w+)\}/g, (token, name) => {
|
|
@@ -133,6 +139,8 @@ export class QaPromptNotes {
|
|
|
133
139
|
...this.identityNotes(root, config),
|
|
134
140
|
...this.sourcesNotes(root, config),
|
|
135
141
|
...this.delegationNotes(root),
|
|
142
|
+
...this.documentsNotes(root),
|
|
143
|
+
...this.sourcePriorityNotes(root),
|
|
136
144
|
].filter((note) => this.carriedText(agent, note.name) !== note.text);
|
|
137
145
|
if (pending.length === 0)
|
|
138
146
|
return decision;
|
|
@@ -225,6 +233,56 @@ export class QaPromptNotes {
|
|
|
225
233
|
},
|
|
226
234
|
];
|
|
227
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* Which reader an attached document belongs to.
|
|
238
|
+
*
|
|
239
|
+
* A chat user's `.docx` or `.pdf` arrives as a path into the attachment
|
|
240
|
+
* store, and the reader the model reaches for by habit answers `binary file`
|
|
241
|
+
* for it. That answer is a fact about the format, not about the file being
|
|
242
|
+
* missing, and a run that reads it as the second one searches the workspace
|
|
243
|
+
* for a document it was already handed. The note names the pipeline and both
|
|
244
|
+
* halves of the trap: the plain reader's refusal is expected, and the
|
|
245
|
+
* pipeline's own refusal is a report to make, not a reason to try a third
|
|
246
|
+
* reader.
|
|
247
|
+
*/
|
|
248
|
+
documentsNotes(rootSessionId) {
|
|
249
|
+
if (!this.options.isQaSession(rootSessionId))
|
|
250
|
+
return [];
|
|
251
|
+
if (!this.options.config().notes.documents.enabled)
|
|
252
|
+
return [];
|
|
253
|
+
const template = this.options.config().notes.documents.template;
|
|
254
|
+
return [
|
|
255
|
+
{
|
|
256
|
+
name: QA_DOCUMENTS_NOTE,
|
|
257
|
+
text: template === ""
|
|
258
|
+
? QA_DOCUMENTS_NOTE_TEMPLATE
|
|
259
|
+
: renderTemplate(template, {}).trim(),
|
|
260
|
+
},
|
|
261
|
+
];
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Where an answer comes from, in this deployment's terms.
|
|
265
|
+
*
|
|
266
|
+
* The memory plugin's own skill says the same thing in its own words, but a
|
|
267
|
+
* persona may be the entire system prompt and a skill is read only once the
|
|
268
|
+
* model decides to reach for it: the rule that outlives both is the one
|
|
269
|
+
* delivered as a note, ahead of the first tool call that would break it.
|
|
270
|
+
*/
|
|
271
|
+
sourcePriorityNotes(rootSessionId) {
|
|
272
|
+
if (!this.options.isQaSession(rootSessionId))
|
|
273
|
+
return [];
|
|
274
|
+
if (!this.options.config().notes.sourcePriority.enabled)
|
|
275
|
+
return [];
|
|
276
|
+
const template = this.options.config().notes.sourcePriority.template;
|
|
277
|
+
return [
|
|
278
|
+
{
|
|
279
|
+
name: QA_SOURCE_PRIORITY_NOTE,
|
|
280
|
+
text: template === ""
|
|
281
|
+
? QA_SOURCE_PRIORITY_NOTE_TEMPLATE
|
|
282
|
+
: renderTemplate(template, {}).trim(),
|
|
283
|
+
},
|
|
284
|
+
];
|
|
285
|
+
}
|
|
228
286
|
carriedKey(agent, noteName) {
|
|
229
287
|
return `${String(agent.id)}:${noteName}`;
|
|
230
288
|
}
|