@yadsh/dsh-qa-surface 0.10.0 → 0.11.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.
Files changed (169) hide show
  1. package/README.md +251 -12
  2. package/lib/access/service.js +49 -10
  3. package/lib/access/service.js.map +1 -1
  4. package/lib/account-remotes.js +41 -0
  5. package/lib/account-remotes.js.map +1 -1
  6. package/lib/accounts/database.js +140 -0
  7. package/lib/accounts/database.js.map +1 -1
  8. package/lib/accounts/errors.js.map +1 -1
  9. package/lib/accounts/service-token.js +103 -0
  10. package/lib/accounts/service-token.js.map +1 -0
  11. package/lib/accounts/store.js +291 -5
  12. package/lib/accounts/store.js.map +1 -1
  13. package/lib/admin/conversation-log.js +14 -8
  14. package/lib/admin/conversation-log.js.map +1 -1
  15. package/lib/admin/permissions.js +5 -0
  16. package/lib/admin/permissions.js.map +1 -1
  17. package/lib/admin/quality-store.js +4 -0
  18. package/lib/admin/quality-store.js.map +1 -1
  19. package/lib/admin/service.js +173 -0
  20. package/lib/admin/service.js.map +1 -1
  21. package/lib/admin/session-log.js +39 -8
  22. package/lib/admin/session-log.js.map +1 -1
  23. package/lib/attachment-rules.js +39 -6
  24. package/lib/attachment-rules.js.map +1 -1
  25. package/lib/cli.js +83 -1
  26. package/lib/cli.js.map +1 -1
  27. package/lib/client/QaAccountsController.js +213 -4
  28. package/lib/client/QaAccountsController.js.map +1 -1
  29. package/lib/client/QaSessionController.js +37 -21
  30. package/lib/client/QaSessionController.js.map +1 -1
  31. package/lib/client/QaSurface.js +28 -4
  32. package/lib/client/QaSurface.js.map +1 -1
  33. package/lib/client/admin/QaAdmin.js +9 -1
  34. package/lib/client/admin/QaAdmin.js.map +1 -1
  35. package/lib/client/admin/pages/SkillFiles.js +78 -0
  36. package/lib/client/admin/pages/SkillFiles.js.map +1 -0
  37. package/lib/client/admin/pages/Users.js +65 -1
  38. package/lib/client/admin/pages/Users.js.map +1 -1
  39. package/lib/client/admin/routes.js +8 -1
  40. package/lib/client/admin/routes.js.map +1 -1
  41. package/lib/client/admin/styles.js +2 -0
  42. package/lib/client/admin/styles.js.map +1 -1
  43. package/lib/client/attachments.js +41 -11
  44. package/lib/client/attachments.js.map +1 -1
  45. package/lib/client/components/QaAuthGate.js +19 -10
  46. package/lib/client/components/QaAuthGate.js.map +1 -1
  47. package/lib/client/components/QaChangelog.js +27 -0
  48. package/lib/client/components/QaChangelog.js.map +1 -1
  49. package/lib/client/index.js +13 -0
  50. package/lib/client/index.js.map +1 -1
  51. package/lib/client/lineage.js +64 -0
  52. package/lib/client/lineage.js.map +1 -1
  53. package/lib/client/settings/sections/attachments.js +6 -5
  54. package/lib/client/settings/sections/attachments.js.map +1 -1
  55. package/lib/client/settings/sections/notes.js +22 -4
  56. package/lib/client/settings/sections/notes.js.map +1 -1
  57. package/lib/client/styles.js +9 -0
  58. package/lib/client/styles.js.map +1 -1
  59. package/lib/client/types.js.map +1 -1
  60. package/lib/client/user-settings/IntegrationTokensPage.js +150 -0
  61. package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -0
  62. package/lib/client/user-settings/PasswordSettingsPage.js +48 -0
  63. package/lib/client/user-settings/PasswordSettingsPage.js.map +1 -0
  64. package/lib/client/user-settings/SkillCatalog.js +2 -2
  65. package/lib/client/user-settings/SkillCatalog.js.map +1 -1
  66. package/lib/client/user-settings/UserSettingsDialog.js +17 -2
  67. package/lib/client/user-settings/UserSettingsDialog.js.map +1 -1
  68. package/lib/client/user-settings/copy.js +20 -0
  69. package/lib/client/user-settings/copy.js.map +1 -1
  70. package/lib/client.js +2466 -137
  71. package/lib/client.js.map +1 -1
  72. package/lib/config-resolvers/attachments.js +6 -5
  73. package/lib/config-resolvers/attachments.js.map +1 -1
  74. package/lib/config-resolvers/defaults.js +23 -2
  75. package/lib/config-resolvers/defaults.js.map +1 -1
  76. package/lib/config-resolvers/integration.js +94 -0
  77. package/lib/config-resolvers/integration.js.map +1 -0
  78. package/lib/config-resolvers/notes.js +2 -0
  79. package/lib/config-resolvers/notes.js.map +1 -1
  80. package/lib/config.js +72 -0
  81. package/lib/config.js.map +1 -1
  82. package/lib/index.js +197 -2
  83. package/lib/index.js.map +1 -1
  84. package/lib/integration/answer.js +100 -0
  85. package/lib/integration/answer.js.map +1 -0
  86. package/lib/integration/attachments.js +231 -0
  87. package/lib/integration/attachments.js.map +1 -0
  88. package/lib/integration/contract.js +53 -0
  89. package/lib/integration/contract.js.map +1 -0
  90. package/lib/integration/host-runner.js +243 -0
  91. package/lib/integration/host-runner.js.map +1 -0
  92. package/lib/integration/http.js +538 -0
  93. package/lib/integration/http.js.map +1 -0
  94. package/lib/integration/service.js +331 -0
  95. package/lib/integration/service.js.map +1 -0
  96. package/lib/integration/transcript-reader.js +202 -0
  97. package/lib/integration/transcript-reader.js.map +1 -0
  98. package/lib/integration/transcript.js +148 -0
  99. package/lib/integration/transcript.js.map +1 -0
  100. package/lib/personal-skills/index.js +2 -2
  101. package/lib/personal-skills/index.js.map +1 -1
  102. package/lib/personal-skills/paths.js +14 -8
  103. package/lib/personal-skills/paths.js.map +1 -1
  104. package/lib/personal-skills/provider.js +16 -4
  105. package/lib/personal-skills/provider.js.map +1 -1
  106. package/lib/personal-skills/service.js +240 -30
  107. package/lib/personal-skills/service.js.map +1 -1
  108. package/lib/prompt-notes.js +58 -0
  109. package/lib/prompt-notes.js.map +1 -1
  110. package/lib/provenance/document-preview.js +10 -1
  111. package/lib/provenance/document-preview.js.map +1 -1
  112. package/lib/qa-tools/catalog.js +12 -1
  113. package/lib/qa-tools/catalog.js.map +1 -1
  114. package/lib/qa-tools/docs-tools.js +563 -0
  115. package/lib/qa-tools/docs-tools.js.map +1 -0
  116. package/lib/resolve-config.js +4 -0
  117. package/lib/resolve-config.js.map +1 -1
  118. package/lib/secure-session.js +83 -3
  119. package/lib/secure-session.js.map +1 -1
  120. package/lib/shared/integration-tokens.js +23 -0
  121. package/lib/shared/integration-tokens.js.map +1 -0
  122. package/lib/typert.host.js +1176 -213
  123. package/lib/typert.remote-client.d.ts +27 -1
  124. package/lib/typert.remote-client.js +911 -69
  125. package/lib/types/access/service.d.ts +33 -2
  126. package/lib/types/account-remotes.d.ts +30 -1
  127. package/lib/types/accounts/database.d.ts +53 -0
  128. package/lib/types/accounts/errors.d.ts +5 -1
  129. package/lib/types/accounts/service-token.d.ts +70 -0
  130. package/lib/types/accounts/store.d.ts +131 -1
  131. package/lib/types/admin/conversation-log.d.ts +12 -0
  132. package/lib/types/admin/service.d.ts +56 -1
  133. package/lib/types/admin/session-log.d.ts +21 -0
  134. package/lib/types/attachment-rules.d.ts +26 -3
  135. package/lib/types/client/QaAccountsController.d.ts +64 -5
  136. package/lib/types/client/QaSessionController.d.ts +24 -2
  137. package/lib/types/client/admin/pages/SkillFiles.d.ts +17 -0
  138. package/lib/types/client/admin/routes.d.ts +2 -0
  139. package/lib/types/client/attachments.d.ts +21 -4
  140. package/lib/types/client/lineage.d.ts +42 -0
  141. package/lib/types/client/settings/sections/notes.d.ts +5 -3
  142. package/lib/types/client/types.d.ts +71 -1
  143. package/lib/types/client/user-settings/IntegrationTokensPage.d.ts +21 -0
  144. package/lib/types/client/user-settings/PasswordSettingsPage.d.ts +19 -0
  145. package/lib/types/client/user-settings/UserSettingsDialog.d.ts +11 -2
  146. package/lib/types/client/user-settings/copy.d.ts +10 -1
  147. package/lib/types/config-resolvers/integration.d.ts +47 -0
  148. package/lib/types/config.d.ts +10 -0
  149. package/lib/types/index.d.ts +73 -1
  150. package/lib/types/integration/answer.d.ts +65 -0
  151. package/lib/types/integration/attachments.d.ts +85 -0
  152. package/lib/types/integration/contract.d.ts +196 -0
  153. package/lib/types/integration/host-runner.d.ts +44 -0
  154. package/lib/types/integration/http.d.ts +79 -0
  155. package/lib/types/integration/service.d.ts +120 -0
  156. package/lib/types/integration/transcript-reader.d.ts +100 -0
  157. package/lib/types/integration/transcript.d.ts +59 -0
  158. package/lib/types/personal-skills/index.d.ts +2 -2
  159. package/lib/types/personal-skills/paths.d.ts +15 -3
  160. package/lib/types/personal-skills/provider.d.ts +14 -2
  161. package/lib/types/personal-skills/service.d.ts +89 -14
  162. package/lib/types/prompt-notes.d.ts +28 -0
  163. package/lib/types/provenance/document-preview.d.ts +4 -0
  164. package/lib/types/qa-tools/catalog.d.ts +1 -1
  165. package/lib/types/qa-tools/docs-tools.d.ts +160 -0
  166. package/lib/types/secure-session.d.ts +52 -1
  167. package/lib/types/shared/integration-tokens.d.ts +24 -0
  168. package/lib/types/types.d.ts +170 -2
  169. package/package.json +4 -4
@@ -12,9 +12,19 @@ import { normalizeAllowedTools, parseSkillFile, serializeSkillFile, skillFileBod
12
12
  */
13
13
  const RECOGNIZED_RESOURCES = new Set(["references", "assets", "scripts"]);
14
14
  /**
15
- * Personal Skills over one account's own directory.
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 account id,
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 account's storage roots, or refuse the operation. */
36
- rootsFor(context) {
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
- if (!config.accounts.skills.enabled) {
39
- throw new QaPersonalSkillError("skills-disabled", "personal skills are not enabled on this deployment");
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, context.userId);
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 account, sorted by directory name. */
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
- return listSkillDirectories(roots).map((directoryName) => this.summarize(this.load(roots, directoryName), available));
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 account stores a skill under this name. */
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.writeSkillFile(skillFilePath(roots, prepared.name), prepared.text);
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.writeSkillFile(current.filePath, text);
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.writeSkillFile(path.join(to, "SKILL.md"), text);
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
- writeSkillFile(filePath, text) {
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
- user: createHash("sha256")
611
- .update(context.userId)
612
- .digest("hex")
613
- .slice(0, 12),
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":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAY9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,aAAa,GAEd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,GAGzB,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAoC1E;;;;;;;;;GASG;AACH,MAAM,OAAO,gBAAgB;IACV,GAAG,CAAU;IACb,OAAO,CAA0B;IAElD,YAAY,GAAY,EAAE,OAAgC;QACxD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,kEAAkE;IAClE,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1D,CAAC;IAED,oEAAoE;IAC5D,QAAQ,CAAC,OAA+B;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,oBAAoB,CAC5B,iBAAiB,EACjB,oDAAoD,CACrD,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QACnD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,oBAAoB,CAC5B,uBAAuB,EACvB,+CAA+C,CAChD,CAAC;QACJ,CAAC;QACD,IAAI,YAAoB,CAAC;QACzB,IAAI,CAAC;YACH,qEAAqE;YACrE,+DAA+D;YAC/D,YAAY,GAAG,sBAAsB,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,oBAAoB,CAC5B,uBAAuB,EACvB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,iBAAiB,CAC7B,YAAY,EACZ,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CACpC,CAAC;QACF,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACK,WAAW,CACjB,GAAW,EACX,YAAoB;QAEpB,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAC5D,sEAAsE;YACtE,uEAAuE;YACvE,qEAAqE;YACrE,wEAAwE;YACxE,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,OAA+B;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,CAC3D,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,GAAG,CAAC,OAA+B,EAAE,IAAY;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,oBAAoB,CAC5B,iBAAiB,EACjB,4BAA4B,IAAI,EAAE,CACnC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CACN,OAA+B,EAC/B,IAAmB,EACnB,KAAwB;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,gBAAgB,GACpB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,kBAAkB,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,kBAAkB,CAAC;gBAC9B,GAAG,QAAQ,CAAC,KAAK;gBACjB,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC;gBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa;gBAC9C,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1C,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;aAC/C,CAAC;SACH,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,GAAG,CAAC,OAA+B,EAAE,IAAY;QAC/C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,MAAM,CACJ,OAA+B,EAC/B,KAAwB;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,oBAAoB,CAC5B,cAAc,EACd,iBAAiB,QAAQ,CAAC,IAAI,iBAAiB,CAChD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,MAAM,CACJ,OAA+B,EAC/B,IAAY,EACZ,KAAwB;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,oBAAoB,CAC5B,iBAAiB,EACjB,4BAA4B,IAAI,EAAE,CACnC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,kBAAkB,CAAC;YAC9B,GAAG,QAAQ,CAAC,KAAK;YACjB,uEAAuE;YACvE,6DAA6D;YAC7D,gBAAgB,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,IAAI,EAAE;SAC3D,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,sEAAsE;IACtE,MAAM,CACJ,OAA+B,EAC/B,IAAY,EACZ,gBAA+B;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,oBAAoB,CAC5B,iBAAiB,EACjB,4BAA4B,IAAI,EAAE,CACnC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAA+B;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9C,2EAA2E;QAC3E,kDAAkD;QAClD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI;YACJ,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;YACtC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;SAC/B,CAAC,CAAC,CAAC;QACJ,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC/B,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,GAAW;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACzE,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,oBAAoB,CAAC,KAAK,CAAC;iBAC/B,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;iBACvD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBAChD,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,IAAI,CAAC,GAAW,EAAE,aAAqB;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACzE,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,IAAI,SAAiB,CAAC;QACtB,IAAI,CAAC;YACH,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEO,cAAc,CAAC,KAAoB;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1D,OAAO,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,CAAC;IAC/C,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAEO,aAAa,CAAC,OAA+B;QACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,IAAI,KAAmB,CAAC;QACxB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,KAAK,MAAM,aAAa,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,EAAE;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,2EAA2E;IACnE,iBAAiB,CACvB,KAAmB,EACnB,IAAY;QAEZ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,gBAAgB,IAAI,EAAE,CAAC;IACjE,CAAC;IAED,8EAA8E;IACtE,IAAI,CAAC,KAAmB,EAAE,aAAqB;QACrD,MAAM,MAAM,GAAkB;YAC5B,MAAM,EAAE,KAAK;YACb,aAAa;YACb,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC;YACjD,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC;YAC5D,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;SACjB,CAAC;QACF,IAAI,SAAiB,CAAC;QACtB,IAAI,CAAC;YACH,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YAAE,OAAO,MAAM,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;QACxE,MAAM,IAAI,GAAG,aAAa,CACxB,QAAQ,EACR,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAC5C,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,IAAI;YACZ,aAAa;YACb,SAAS;YACT,QAAQ;YACR,aAAa,EAAE,SAAS,CAAC,KAAK;SAC/B,CAAC;QACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO;gBACL,GAAG,IAAI;gBACP,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,SAAS;gBACnB,WAAW,EAAE;oBACX,GAAG,SAAS,CAAC,WAAW;oBACxB;wBACE,IAAI,EAAE,oBAAoB;wBAC1B,QAAQ,EAAE,OAAO;wBACjB,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,UAAU;qBACnB;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,WAAW,GAAwB;YACvC,GAAG,SAAS,CAAC,WAAW;YACxB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CACd,GAAG,kBAAkB,CAAC;gBACpB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;gBACvB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;gBACrC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;gBACjC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;gBAC3C,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa;gBACzC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY;gBACvC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpC,QAAQ;gBACR,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aAC3C,CAAC,CACH,CAAC;YACF,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACxC,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO;YACL,GAAG,IAAI;YACP,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC9C,WAAW;SACZ,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,SAAiB;QAIjC,IAAI,OAA0B,CAAC;QAC/B,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACvC,CAAC;QACD,MAAM,WAAW,GAAwB,EAAE,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC9C,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,sBAAsB;gBAC5B,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAClB,KAAwB,EACxB,MAA+B,EAC/B,MAAe;QAOf,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,WAAW,GACf,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI;YAC9D,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,MAAM,SAAS,GACb,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;YAClE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;YACxB,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,KAAK,GAAqB;YAC9B,IAAI;YACJ,WAAW;YACX,SAAS;YACT,cAAc,EAAE,KAAK,CAAC,cAAc,KAAK,KAAK;YAC9C,aAAa,EAAE,KAAK,CAAC,aAAa,KAAK,KAAK;YAC5C,YAAY,EAAE,UAAU,CAAC,KAAK;YAC9B,gBAAgB,EAAE,EAAE;YACpB,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;SACvD,CAAC;QACF,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,oBAAoB,CAC5B,oBAAoB,EACpB,6CAA6C,CAC9C,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,oBAAoB,CAC5B,eAAe,EACf,yCAAyC,CAC1C,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,oBAAoB,CAC5B,eAAe,EACf,0BAA0B,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACjD,MAAM,IAAI,oBAAoB,CAC5B,eAAe,EACf,WAAW,kBAAkB,wBAAwB,CACtD,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YAClC,GAAG,KAAK;YACR,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa;SAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBAClD,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI;aACL,CAAC,CAAC;YACH,MAAM,IAAI,oBAAoB,CAC5B,eAAe,EACf,6BAA6B,QAAQ,CAAC,IAAI,EAAE,CAC7C,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBACnD,IAAI,EAAE,sBAAsB;gBAC5B,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QACD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;YACtE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBACnD,IAAI,EAAE,sBAAsB;gBAC5B,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAClD,CAAC;IAED,kEAAkE;IAC1D,oBAAoB,CAC1B,IAAY,EACZ,EAAU,EACV,IAAY,EACZ,IAAY;QAEZ,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,oBAAoB,CAC5B,cAAc,EACd,iBAAiB,IAAI,iBAAiB,CACvC,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yEAAyE;YACzE,6BAA6B;YAC7B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBAAC,MAAM,CAAC;oBACP,oEAAoE;oBACpE,qCAAqC;gBACvC,CAAC;YACH,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,0CAA0C;YAC5C,CAAC;YACD,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED,+DAA+D;IACvD,cAAc,CAAC,QAAgB,EAAE,IAAY;QACnD,MAAM,SAAS,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAAC;QACnE,IAAI,CAAC;YACH,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACvC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,wDAAwD;YAC1D,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAa,EAAE,IAAY;QAC7C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;aACrB,WAAW,EAAE;aACb,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QACrD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,MAAM;YAClC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,cAAc,CACpB,IAAY,EACZ,QAAuB,EACvB,OAAe;QAEf,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC9C,MAAM,IAAI,oBAAoB,CAC5B,gBAAgB,EAChB,SAAS,IAAI,4BAA4B,CAC1C,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,SAAS,CACf,MAAqB,EACrB,SAA8B;QAE9B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,aAAa;YAC1B,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,EAAE;YACxC,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI;YACtC,cAAc,EAAE,QAAQ,EAAE,cAAc,IAAI,IAAI;YAChD,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,IAAI;YAC9C,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,EAAE;YAC1C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CACrD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAC/B;YACD,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC;YACtE,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAEO,QAAQ,CACd,MAAqB,EACrB,SAA8B;QAE9B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,OAAO;YACL,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC;YACpC,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;YACjD,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,IAAI,EAAE;YAClD,UAAU,EAAE,MAAM,CAAC,QAAQ;YAC3B,OAAO,EACL,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC;SACrE,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAAc;QACjC,IAAI,KAAK,YAAY,oBAAoB;YAAE,OAAO,KAAK,CAAC;QACxD,OAAO,IAAI,oBAAoB,CAC7B,qBAAqB,EACrB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,cAAc,CACpB,MAAc,EACd,OAA+B,EAC/B,IAAY;QAEZ,kEAAkE;QAClE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/B,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;iBACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;iBACtB,MAAM,CAAC,KAAK,CAAC;iBACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACf,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QACH,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE;gBAC5D,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,GAAW;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,cAAc,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3E,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,4BAA4B;QAC/D,CAAC,CAAC,cAAc,KAAK,4BAA4B,CAAC;IACtD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,CAAC;QACH,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAOD;;;;;;GAMG;AACH,SAAS,aAAa,CACpB,QAAgB,EAChB,QAAgB;IAEhB,IAAI,IAAY,CAAC;IACjB,IAAI,SAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,SAAS,CAAC;QACrC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACjB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;QACxE,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/personal-skills/service.ts"],"names":[],"mappings":"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"}
@@ -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
  }