@shield-agent/kya 0.32.9 → 0.33.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/.cursor-plugin/plugin.json +1 -1
  2. package/.mcp.json +1 -1
  3. package/LIMITATIONS.md +2 -2
  4. package/README.md +178 -12
  5. package/amp/settings.example.json +1 -1
  6. package/claude/claude_desktop_config.example.json +1 -1
  7. package/cline/cline_mcp_settings.example.json +1 -1
  8. package/copilot/mcp-config.example.json +1 -1
  9. package/data/iocs.json +17 -0
  10. package/dist/cli.d.ts +1 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +149 -16
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/connect.d.ts +1 -1
  15. package/dist/commands/connect.d.ts.map +1 -1
  16. package/dist/commands/connect.js +11 -3
  17. package/dist/commands/connect.js.map +1 -1
  18. package/dist/commands/dash.d.ts.map +1 -1
  19. package/dist/commands/dash.js +25 -1
  20. package/dist/commands/dash.js.map +1 -1
  21. package/dist/commands/doctor.d.ts +8 -0
  22. package/dist/commands/doctor.d.ts.map +1 -0
  23. package/dist/commands/doctor.js +26 -0
  24. package/dist/commands/doctor.js.map +1 -0
  25. package/dist/commands/eval-tool.d.ts +3 -0
  26. package/dist/commands/eval-tool.d.ts.map +1 -1
  27. package/dist/commands/eval-tool.js +2 -1
  28. package/dist/commands/eval-tool.js.map +1 -1
  29. package/dist/commands/export.d.ts +33 -0
  30. package/dist/commands/export.d.ts.map +1 -0
  31. package/dist/commands/export.js +121 -0
  32. package/dist/commands/export.js.map +1 -0
  33. package/dist/commands/hook.d.ts.map +1 -1
  34. package/dist/commands/hook.js +120 -26
  35. package/dist/commands/hook.js.map +1 -1
  36. package/dist/commands/hosted-hook.d.ts +8 -1
  37. package/dist/commands/hosted-hook.d.ts.map +1 -1
  38. package/dist/commands/hosted-hook.js +15 -5
  39. package/dist/commands/hosted-hook.js.map +1 -1
  40. package/dist/commands/map.d.ts +21 -0
  41. package/dist/commands/map.d.ts.map +1 -0
  42. package/dist/commands/map.js +76 -0
  43. package/dist/commands/map.js.map +1 -0
  44. package/dist/commands/notify-flush.d.ts.map +1 -1
  45. package/dist/commands/notify-flush.js +7 -1
  46. package/dist/commands/notify-flush.js.map +1 -1
  47. package/dist/commands/posture.d.ts +21 -0
  48. package/dist/commands/posture.d.ts.map +1 -0
  49. package/dist/commands/posture.js +177 -0
  50. package/dist/commands/posture.js.map +1 -0
  51. package/dist/commands/receipt-serve.d.ts +7 -0
  52. package/dist/commands/receipt-serve.d.ts.map +1 -1
  53. package/dist/commands/receipt-serve.js +50 -0
  54. package/dist/commands/receipt-serve.js.map +1 -1
  55. package/dist/commands/start.d.ts.map +1 -1
  56. package/dist/commands/start.js +5 -1
  57. package/dist/commands/start.js.map +1 -1
  58. package/dist/commands/team.d.ts.map +1 -1
  59. package/dist/commands/team.js +30 -11
  60. package/dist/commands/team.js.map +1 -1
  61. package/dist/commands/wire-hooks.d.ts +5 -1
  62. package/dist/commands/wire-hooks.d.ts.map +1 -1
  63. package/dist/commands/wire-hooks.js +23 -8
  64. package/dist/commands/wire-hooks.js.map +1 -1
  65. package/dist/commands/wrap.d.ts +38 -1
  66. package/dist/commands/wrap.d.ts.map +1 -1
  67. package/dist/commands/wrap.js +82 -6
  68. package/dist/commands/wrap.js.map +1 -1
  69. package/dist/daily-slot.d.ts +2 -0
  70. package/dist/daily-slot.d.ts.map +1 -0
  71. package/dist/daily-slot.js +29 -0
  72. package/dist/daily-slot.js.map +1 -0
  73. package/dist/dash/dash.d.ts.map +1 -1
  74. package/dist/dash/dash.js +10 -0
  75. package/dist/dash/dash.js.map +1 -1
  76. package/dist/dash/entitlement.d.ts +1 -1
  77. package/dist/dash/entitlement.d.ts.map +1 -1
  78. package/dist/dash/entitlement.js +1 -0
  79. package/dist/dash/entitlement.js.map +1 -1
  80. package/dist/dash/input.d.ts +1 -1
  81. package/dist/dash/input.d.ts.map +1 -1
  82. package/dist/dash/input.js +3 -0
  83. package/dist/dash/input.js.map +1 -1
  84. package/dist/dash/render.js +1 -1
  85. package/dist/dash/render.js.map +1 -1
  86. package/dist/dash/screens/free.js +1 -1
  87. package/dist/dash/screens/free.js.map +1 -1
  88. package/dist/device-id.d.ts +5 -0
  89. package/dist/device-id.d.ts.map +1 -0
  90. package/dist/device-id.js +78 -0
  91. package/dist/device-id.js.map +1 -0
  92. package/dist/fs-atomic.d.ts +9 -3
  93. package/dist/fs-atomic.d.ts.map +1 -1
  94. package/dist/fs-atomic.js +17 -11
  95. package/dist/fs-atomic.js.map +1 -1
  96. package/dist/gate/config-gen.d.ts +26 -2
  97. package/dist/gate/config-gen.d.ts.map +1 -1
  98. package/dist/gate/config-gen.js +53 -4
  99. package/dist/gate/config-gen.js.map +1 -1
  100. package/dist/gate/otlp-receiver.d.ts.map +1 -1
  101. package/dist/gate/otlp-receiver.js +3 -1
  102. package/dist/gate/otlp-receiver.js.map +1 -1
  103. package/dist/guard-pack.d.ts +58 -0
  104. package/dist/guard-pack.d.ts.map +1 -0
  105. package/dist/guard-pack.js +753 -0
  106. package/dist/guard-pack.js.map +1 -0
  107. package/dist/ioc/exec.d.ts +19 -0
  108. package/dist/ioc/exec.d.ts.map +1 -0
  109. package/dist/ioc/exec.js +49 -0
  110. package/dist/ioc/exec.js.map +1 -0
  111. package/dist/ioc/format.d.ts +4 -0
  112. package/dist/ioc/format.d.ts.map +1 -0
  113. package/dist/ioc/format.js +23 -0
  114. package/dist/ioc/format.js.map +1 -0
  115. package/dist/ioc/list.d.ts +29 -0
  116. package/dist/ioc/list.d.ts.map +1 -0
  117. package/dist/ioc/list.js +25 -0
  118. package/dist/ioc/list.js.map +1 -0
  119. package/dist/ioc/result.d.ts +18 -0
  120. package/dist/ioc/result.d.ts.map +1 -0
  121. package/dist/ioc/result.js +26 -0
  122. package/dist/ioc/result.js.map +1 -0
  123. package/dist/ioc/scan.d.ts +21 -0
  124. package/dist/ioc/scan.d.ts.map +1 -0
  125. package/dist/ioc/scan.js +247 -0
  126. package/dist/ioc/scan.js.map +1 -0
  127. package/dist/ioc/spawn.d.ts +26 -0
  128. package/dist/ioc/spawn.d.ts.map +1 -0
  129. package/dist/ioc/spawn.js +52 -0
  130. package/dist/ioc/spawn.js.map +1 -0
  131. package/dist/map/build.d.ts +58 -0
  132. package/dist/map/build.d.ts.map +1 -0
  133. package/dist/map/build.js +439 -0
  134. package/dist/map/build.js.map +1 -0
  135. package/dist/map/heat.d.ts +44 -0
  136. package/dist/map/heat.d.ts.map +1 -0
  137. package/dist/map/heat.js +96 -0
  138. package/dist/map/heat.js.map +1 -0
  139. package/dist/map/load.d.ts +38 -0
  140. package/dist/map/load.d.ts.map +1 -0
  141. package/dist/map/load.js +38 -0
  142. package/dist/map/load.js.map +1 -0
  143. package/dist/map/page.d.ts +90 -0
  144. package/dist/map/page.d.ts.map +1 -0
  145. package/dist/map/page.js +374 -0
  146. package/dist/map/page.js.map +1 -0
  147. package/dist/map/target-class.d.ts +22 -0
  148. package/dist/map/target-class.d.ts.map +1 -0
  149. package/dist/map/target-class.js +151 -0
  150. package/dist/map/target-class.js.map +1 -0
  151. package/dist/map/types.d.ts +102 -0
  152. package/dist/map/types.d.ts.map +1 -0
  153. package/dist/map/types.js +3 -0
  154. package/dist/map/types.js.map +1 -0
  155. package/dist/mcp/protocol.d.ts.map +1 -1
  156. package/dist/mcp/protocol.js +16 -5
  157. package/dist/mcp/protocol.js.map +1 -1
  158. package/dist/never-code.d.ts +7 -0
  159. package/dist/never-code.d.ts.map +1 -0
  160. package/dist/never-code.js +9 -0
  161. package/dist/never-code.js.map +1 -0
  162. package/dist/never-list-input.d.ts +48 -12
  163. package/dist/never-list-input.d.ts.map +1 -1
  164. package/dist/never-list-input.js +696 -29
  165. package/dist/never-list-input.js.map +1 -1
  166. package/dist/notify/dispatch.d.ts +4 -0
  167. package/dist/notify/dispatch.d.ts.map +1 -1
  168. package/dist/notify/dispatch.js +3 -1
  169. package/dist/notify/dispatch.js.map +1 -1
  170. package/dist/offline-evaluate.d.ts +26 -1
  171. package/dist/offline-evaluate.d.ts.map +1 -1
  172. package/dist/offline-evaluate.js +33 -4
  173. package/dist/offline-evaluate.js.map +1 -1
  174. package/dist/otel/exporter.d.ts +15 -2
  175. package/dist/otel/exporter.d.ts.map +1 -1
  176. package/dist/otel/exporter.js +52 -6
  177. package/dist/otel/exporter.js.map +1 -1
  178. package/dist/otel/map-attrs-optin.d.ts +39 -0
  179. package/dist/otel/map-attrs-optin.d.ts.map +1 -0
  180. package/dist/otel/map-attrs-optin.js +109 -0
  181. package/dist/otel/map-attrs-optin.js.map +1 -0
  182. package/dist/parse-args.d.ts +2 -0
  183. package/dist/parse-args.d.ts.map +1 -1
  184. package/dist/parse-args.js +4 -2
  185. package/dist/parse-args.js.map +1 -1
  186. package/dist/posture/card.d.ts +26 -0
  187. package/dist/posture/card.d.ts.map +1 -0
  188. package/dist/posture/card.js +46 -0
  189. package/dist/posture/card.js.map +1 -0
  190. package/dist/posture/collect.d.ts +19 -0
  191. package/dist/posture/collect.d.ts.map +1 -0
  192. package/dist/posture/collect.js +182 -0
  193. package/dist/posture/collect.js.map +1 -0
  194. package/dist/posture/send.d.ts +24 -0
  195. package/dist/posture/send.d.ts.map +1 -0
  196. package/dist/posture/send.js +162 -0
  197. package/dist/posture/send.js.map +1 -0
  198. package/dist/posture/spawn.d.ts +20 -0
  199. package/dist/posture/spawn.d.ts.map +1 -0
  200. package/dist/posture/spawn.js +33 -0
  201. package/dist/posture/spawn.js.map +1 -0
  202. package/dist/posture/store.d.ts +34 -0
  203. package/dist/posture/store.d.ts.map +1 -0
  204. package/dist/posture/store.js +107 -0
  205. package/dist/posture/store.js.map +1 -0
  206. package/dist/posture/validate.d.ts +33 -0
  207. package/dist/posture/validate.d.ts.map +1 -0
  208. package/dist/posture/validate.js +232 -0
  209. package/dist/posture/validate.js.map +1 -0
  210. package/dist/project-policy.d.ts +23 -0
  211. package/dist/project-policy.d.ts.map +1 -0
  212. package/dist/project-policy.js +95 -0
  213. package/dist/project-policy.js.map +1 -0
  214. package/dist/receipt/daemon.d.ts +9 -9
  215. package/dist/receipt/daemon.d.ts.map +1 -1
  216. package/dist/receipt/daemon.js +26 -11
  217. package/dist/receipt/daemon.js.map +1 -1
  218. package/dist/receipt/embeddings.d.ts +28 -10
  219. package/dist/receipt/embeddings.d.ts.map +1 -1
  220. package/dist/receipt/embeddings.js +221 -35
  221. package/dist/receipt/embeddings.js.map +1 -1
  222. package/dist/receipt/gate-page.d.ts.map +1 -1
  223. package/dist/receipt/gate-page.js +5 -22
  224. package/dist/receipt/gate-page.js.map +1 -1
  225. package/dist/receipt/live-server.d.ts +8 -0
  226. package/dist/receipt/live-server.d.ts.map +1 -1
  227. package/dist/receipt/live-server.js +136 -4
  228. package/dist/receipt/live-server.js.map +1 -1
  229. package/dist/receipt/render-receipt.d.ts +7 -1
  230. package/dist/receipt/render-receipt.d.ts.map +1 -1
  231. package/dist/receipt/render-receipt.js +101 -13
  232. package/dist/receipt/render-receipt.js.map +1 -1
  233. package/dist/receipt/search.d.ts +5 -0
  234. package/dist/receipt/search.d.ts.map +1 -1
  235. package/dist/receipt/search.js +23 -2
  236. package/dist/receipt/search.js.map +1 -1
  237. package/dist/receipt/semantic-setup.d.ts +21 -0
  238. package/dist/receipt/semantic-setup.d.ts.map +1 -0
  239. package/dist/receipt/semantic-setup.js +111 -0
  240. package/dist/receipt/semantic-setup.js.map +1 -0
  241. package/dist/receipt/semantic-status.d.ts +7 -0
  242. package/dist/receipt/semantic-status.d.ts.map +1 -0
  243. package/dist/receipt/semantic-status.js +26 -0
  244. package/dist/receipt/semantic-status.js.map +1 -0
  245. package/dist/sdk/govern.d.ts.map +1 -1
  246. package/dist/sdk/govern.js +7 -3
  247. package/dist/sdk/govern.js.map +1 -1
  248. package/dist/telemetry.d.ts.map +1 -1
  249. package/dist/telemetry.js +3 -23
  250. package/dist/telemetry.js.map +1 -1
  251. package/dist/trail-map-fields.d.ts +10 -0
  252. package/dist/trail-map-fields.d.ts.map +1 -0
  253. package/dist/trail-map-fields.js +53 -0
  254. package/dist/trail-map-fields.js.map +1 -0
  255. package/dist/trail-summary.d.ts.map +1 -1
  256. package/dist/trail-summary.js +11 -3
  257. package/dist/trail-summary.js.map +1 -1
  258. package/dist/trail.d.ts +9 -1
  259. package/dist/trail.d.ts.map +1 -1
  260. package/dist/trail.js +24 -1
  261. package/dist/trail.js.map +1 -1
  262. package/droid/README.md +1 -1
  263. package/droid/mcp.example.json +1 -1
  264. package/gemini/settings.example.json +1 -1
  265. package/grok/README.md +1 -1
  266. package/kilo/kilo.example.json +1 -1
  267. package/kimi/mcp.example.json +1 -1
  268. package/kiro/mcp.example.json +1 -1
  269. package/manifest.json +1 -1
  270. package/mastracode/mcp.example.json +1 -1
  271. package/mcp.json +1 -1
  272. package/openai/codex.config.example.toml +1 -1
  273. package/opencode/opencode.example.json +1 -1
  274. package/package.json +8 -4
  275. package/qwen/settings.example.json +1 -1
  276. package/server.json +2 -2
  277. package/vendor/cytoscape/LICENSE +19 -0
  278. package/vendor/cytoscape/README.md +7 -0
  279. package/vendor/cytoscape/cytoscape.min.js +31 -0
@@ -9,10 +9,14 @@
9
9
  * Privacy: only verdict metadata ships (tool id, verdict, reason code, mode,
10
10
  * host, session id, token counts when known). Tool args, prompts, approval
11
11
  * bodies, and API keys are never exported - same rule as docs/otlp.md.
12
+ * Map attributes (target class, device id) ship only when mapAttrs is on (default off).
12
13
  *
13
14
  * No new dependencies: one hand-built OTLP/JSON payload and the global fetch.
14
15
  */
15
16
  import { randomBytes } from "node:crypto";
17
+ import { deviceId as localDeviceId, installSalt } from "../device-id.js";
18
+ import { SAFE_CLASS, sessionHash } from "../map/build.js";
19
+ import { detectProduct } from "../trail.js";
16
20
  import { CLI_VERSION } from "../version.js";
17
21
  import { recordOtlpExport } from "./stats.js";
18
22
  const EXPORT_TIMEOUT_MS = 2_000;
@@ -27,16 +31,24 @@ export function otlpExportStats() {
27
31
  * Resolve export config from env > parsed .kya/config.json. Accepts the parsed
28
32
  * config object so callers that already read the file (resolveConfig) need no
29
33
  * config.ts change. Returns undefined when disabled (no endpoint anywhere).
34
+ * `userConfigJson` is the validated passwd-home config (readOptInConfig) alone: only it can turn on the map attributes.
30
35
  */
31
- export function resolveOtlpExportConfig(env = process.env, configJson) {
36
+ export function resolveOtlpExportConfig(env = process.env, configJson, userConfigJson) {
32
37
  const file = readFileKey(configJson);
33
38
  const endpoint = env.KYA_OTLP_EXPORT_ENDPOINT?.trim() || file?.endpoint;
34
39
  if (!endpoint)
35
40
  return undefined;
41
+ // A repo can set env (.claude/settings.json) and the project config. Neither may add data or pick the receiver for it:
42
+ // map attributes need mapAttrs in the user-level file AND the endpoint in use must be that file's endpoint.
43
+ const user = readFileKey(userConfigJson);
44
+ const mapAttrs = !env.KYA_OTLP_EXPORT_ENDPOINT?.trim() && user?.mapAttrs === true && user.endpoint === endpoint;
45
+ // With map attributes on, the endpoint, headers and insecure flag all come from that same validated file.
46
+ const src = mapAttrs ? user : file;
36
47
  return {
37
48
  endpoint,
38
- ...(file?.headers ? { headers: file.headers } : {}),
39
- insecure: file?.insecure === true,
49
+ ...(src?.headers ? { headers: src.headers } : {}),
50
+ insecure: src?.insecure === true,
51
+ ...(mapAttrs ? { mapAttrs: true } : {}),
40
52
  };
41
53
  }
42
54
  function readFileKey(configJson) {
@@ -66,6 +78,7 @@ function readFileKey(configJson) {
66
78
  endpoint,
67
79
  ...(headers ? { headers } : {}),
68
80
  insecure: key.insecure === true,
81
+ ...(key.mapAttrs === true ? { mapAttrs: true } : {}),
69
82
  };
70
83
  }
71
84
  /** Loopback plaintext is fine; anything else over http requires insecure:true. */
@@ -115,8 +128,23 @@ function intAttr(key, value) {
115
128
  return undefined;
116
129
  return attr(key, { intValue: String(Math.floor(value)) });
117
130
  }
131
+ const DEVICE_ID = /^[0-9a-f]{16}$/;
132
+ const CLASS_MAX = 128;
133
+ /** A project class names the project folder. That name stays in the local view, so the span gets only the family. */
134
+ function offMachineClass(cls) {
135
+ if (typeof cls !== "string" || cls.length > CLASS_MAX || !SAFE_CLASS.test(cls))
136
+ return undefined;
137
+ return cls.startsWith("project:") ? "project" : cls;
138
+ }
139
+ /** The two map attributes. Fields are picked one by one: a trail row passed as the event also has argsHash and paths. */
140
+ function mapAttributes(event) {
141
+ // Same trust rule as the map: only a class with the shape the trail writer produces.
142
+ const cls = offMachineClass(event.targetClass);
143
+ const dev = typeof event.deviceId === "string" && DEVICE_ID.test(event.deviceId) ? event.deviceId : undefined;
144
+ return [strAttr("kya.target.class", cls), strAttr("kya.device", dev)].filter((a) => a !== undefined);
145
+ }
118
146
  /** One OTLP/JSON ExportTraceServiceRequest carrying exactly one verdict span. */
119
- export function buildVerdictTracePayload(event) {
147
+ export function buildVerdictTracePayload(event, opts = {}) {
120
148
  const start = nano(event.ts);
121
149
  const attributes = [
122
150
  strAttr("gen_ai.tool.name", event.toolId),
@@ -124,10 +152,13 @@ export function buildVerdictTracePayload(event) {
124
152
  strAttr("kya.reason_code", event.reasonCode),
125
153
  strAttr("kya.mode", event.mode),
126
154
  strAttr("kya.host", event.host),
127
- strAttr("kya.session_id", event.sessionId),
155
+ // With map attributes on, the raw host session id never leaves: the map's session hash, or no attribute.
156
+ strAttr("kya.session_id", opts.mapAttrs === true ? opts.sessionHash : event.sessionId),
128
157
  intAttr("gen_ai.usage.input_tokens", event.tokensIn),
129
158
  intAttr("gen_ai.usage.output_tokens", event.tokensOut),
130
159
  ].filter((a) => a !== undefined);
160
+ if (opts.mapAttrs === true)
161
+ attributes.push(...mapAttributes(event));
131
162
  const denied = event.verdict === "DENY";
132
163
  return {
133
164
  resourceSpans: [
@@ -162,6 +193,21 @@ export function buildVerdictTracePayload(event) {
162
193
  ],
163
194
  };
164
195
  }
196
+ /** With mapAttrs on, a row without deviceId (MCP gate, older rows) gets this install's id. */
197
+ function withDevice(event, config, env) {
198
+ if (config.mapAttrs !== true || event.deviceId !== undefined)
199
+ return event;
200
+ const id = localDeviceId(env);
201
+ return id ? { ...event, deviceId: id } : event;
202
+ }
203
+ /** Payload options. With mapAttrs, the session id goes out as the same salted hash as `kya map` and `kya export`. */
204
+ function payloadOpts(event, config, env) {
205
+ if (config.mapAttrs !== true)
206
+ return { mapAttrs: config.mapAttrs };
207
+ const salt = installSalt(env);
208
+ const product = event.product ?? detectProduct(env, event.host);
209
+ return { mapAttrs: true, ...(salt ? { sessionHash: sessionHash(salt, product, event.sessionId) } : {}) };
210
+ }
165
211
  /**
166
212
  * Export one verdict span. Never throws, never blocks the caller beyond the
167
213
  * 2s timeout budget, and never touches the verdict itself. No-op when the
@@ -182,7 +228,7 @@ export async function exportVerdictSpan(event, config, env = process.env) {
182
228
  "content-type": "application/json",
183
229
  ...(config.headers ?? {}),
184
230
  },
185
- body: JSON.stringify(buildVerdictTracePayload(event)),
231
+ body: JSON.stringify(buildVerdictTracePayload(withDevice(event, config, env), payloadOpts(event, config, env))),
186
232
  signal: controller.signal,
187
233
  });
188
234
  // Drain so the socket is released back to the pool.
@@ -1 +1 @@
1
- {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../src/otel/exporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../src/otel/exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The user-level config for the OTLP map-attribute opt-in, read from a path a repo cannot steer.
3
+ * A repo sets env through .claude/settings.json or .mcp.json, so HOME and KYA_HOME (and a relative value of them,
4
+ * which resolves against the project dir) never pick this file. The path is the passwd home: os.userInfo().homedir.
5
+ * Used ONLY for the map-attribute decision. All other config loading is unchanged.
6
+ */
7
+ import { type Stats } from "node:fs";
8
+ export interface OptInDeps {
9
+ /** Test seam for the passwd home. Never read from env. */
10
+ readonly passwdHome?: () => string;
11
+ readonly lstat?: (p: string) => Stats;
12
+ readonly stat?: (p: string) => Stats;
13
+ readonly realpath?: (p: string) => string;
14
+ readonly uid?: () => number;
15
+ readonly platform?: NodeJS.Platform;
16
+ /** Test seam: fstat of the opened file. */
17
+ readonly fstat?: (fd: number) => Stats;
18
+ /** Test seam: runs after the checks and before the open, to simulate a swap of the file. */
19
+ readonly beforeOpen?: (path: string) => void;
20
+ }
21
+ /**
22
+ * Why the file at `path` cannot carry the opt-in, or undefined when it can.
23
+ * The project check protects one case the owner, mode and symlink checks cannot: a repo checked out at or above the
24
+ * home (a dotfiles repo in ~) commits `.kya/config.json`. That file is the user's own, 0644, no link. So it is checked
25
+ * against the real project dir of the call, not the process cwd (the hosted hook runs from home).
26
+ * Refused: no absolute project dir (fail closed); the file (or its symlink target) is under the project dir;
27
+ * a hard link (nlink is not 1, so a project file can share it); another user owns it; group or others can write it;
28
+ * a symlink that resolves outside the passwd home. Windows has no POSIX owner or mode bits, so there those two
29
+ * checks do not run.
30
+ */
31
+ export declare function optInRefusal(path: string, home: string, projectDir: string | undefined, deps?: OptInDeps): string | undefined;
32
+ /** Parsed `<passwd home>/.kya/config.json` when it passes optInRefusal, else undefined. Never throws. */
33
+ export declare function readOptInConfig(projectDir: string | undefined, deps?: OptInDeps): unknown;
34
+ /**
35
+ * One stderr line for `kya doctor` when the passwd-home file asks for map attributes but a check refuses it.
36
+ * The export ignores the opt-in silently; this is the only place that says why. Undefined when nothing to say.
37
+ */
38
+ export declare function optInHint(projectDir: string | undefined, deps?: OptInDeps): string | undefined;
39
+ //# sourceMappingURL=map-attrs-optin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-attrs-optin.d.ts","sourceRoot":"","sources":["../../src/otel/map-attrs-optin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAA8F,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAIjI,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,KAAK,CAAC;IACvC,4FAA4F;IAC5F,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAmBD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,GAAE,SAAc,GAAG,MAAM,GAAG,SAAS,CAejI;AAED,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,GAAE,SAAc,GAAG,OAAO,CAoB7F;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,GAAE,SAAc,GAAG,MAAM,GAAG,SAAS,CAclG"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * The user-level config for the OTLP map-attribute opt-in, read from a path a repo cannot steer.
3
+ * A repo sets env through .claude/settings.json or .mcp.json, so HOME and KYA_HOME (and a relative value of them,
4
+ * which resolves against the project dir) never pick this file. The path is the passwd home: os.userInfo().homedir.
5
+ * Used ONLY for the map-attribute decision. All other config loading is unchanged.
6
+ */
7
+ import { closeSync, constants, fstatSync, lstatSync, openSync, readFileSync, realpathSync, statSync } from "node:fs";
8
+ import { userInfo } from "node:os";
9
+ import { isAbsolute, join, relative, resolve, sep } from "node:path";
10
+ /** Owner, mode and link-count checks on one stat result. Windows has no POSIX owner or mode bits: those two do not run. */
11
+ function fileRefusal(st, deps) {
12
+ if (!st.isFile())
13
+ return "not a file";
14
+ if (st.nlink !== 1)
15
+ return "hard link";
16
+ if ((deps.platform ?? process.platform) !== "win32") {
17
+ const uid = deps.uid ?? (typeof process.getuid === "function" ? process.getuid.bind(process) : undefined);
18
+ if (uid && st.uid !== uid())
19
+ return "owned by another user";
20
+ if ((st.mode & 0o022) !== 0)
21
+ return "group or world writable";
22
+ }
23
+ return undefined;
24
+ }
25
+ function under(child, dir) {
26
+ const r = relative(dir, child);
27
+ return r === "" || (r !== ".." && !r.startsWith(`..${sep}`) && !isAbsolute(r));
28
+ }
29
+ /**
30
+ * Why the file at `path` cannot carry the opt-in, or undefined when it can.
31
+ * The project check protects one case the owner, mode and symlink checks cannot: a repo checked out at or above the
32
+ * home (a dotfiles repo in ~) commits `.kya/config.json`. That file is the user's own, 0644, no link. So it is checked
33
+ * against the real project dir of the call, not the process cwd (the hosted hook runs from home).
34
+ * Refused: no absolute project dir (fail closed); the file (or its symlink target) is under the project dir;
35
+ * a hard link (nlink is not 1, so a project file can share it); another user owns it; group or others can write it;
36
+ * a symlink that resolves outside the passwd home. Windows has no POSIX owner or mode bits, so there those two
37
+ * checks do not run.
38
+ */
39
+ export function optInRefusal(path, home, projectDir, deps = {}) {
40
+ if (!projectDir || !isAbsolute(projectDir))
41
+ return "no project dir";
42
+ const lst = (deps.lstat ?? lstatSync)(path);
43
+ const rp = deps.realpath ?? realpathSync;
44
+ const real = rp(path);
45
+ const realHome = rp(home);
46
+ if (lst.isSymbolicLink() && !under(real, realHome))
47
+ return "symlink outside the home";
48
+ let realDir;
49
+ try {
50
+ realDir = rp(projectDir);
51
+ }
52
+ catch {
53
+ realDir = resolve(projectDir);
54
+ }
55
+ if (under(real, realDir) || under(resolve(path), resolve(projectDir)))
56
+ return "under the project dir";
57
+ return fileRefusal((deps.stat ?? statSync)(real), deps);
58
+ }
59
+ /** Parsed `<passwd home>/.kya/config.json` when it passes optInRefusal, else undefined. Never throws. */
60
+ export function readOptInConfig(projectDir, deps = {}) {
61
+ try {
62
+ const home = deps.passwdHome ? deps.passwdHome() : userInfo().homedir;
63
+ if (!home || !isAbsolute(home))
64
+ return undefined;
65
+ const path = join(home, ".kya", "config.json");
66
+ if (optInRefusal(path, home, projectDir, deps) !== undefined)
67
+ return undefined;
68
+ const real = (deps.realpath ?? realpathSync)(path);
69
+ deps.beforeOpen?.(real);
70
+ // Open once (no symlink follow where the OS has O_NOFOLLOW), check the opened file again, read the same fd:
71
+ // a swap of the path after the checks cannot change what is read.
72
+ const fd = openSync(real, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
73
+ try {
74
+ if (fileRefusal((deps.fstat ?? fstatSync)(fd), deps) !== undefined)
75
+ return undefined;
76
+ return JSON.parse(readFileSync(fd, "utf8"));
77
+ }
78
+ finally {
79
+ closeSync(fd);
80
+ }
81
+ }
82
+ catch {
83
+ return undefined;
84
+ }
85
+ }
86
+ /**
87
+ * One stderr line for `kya doctor` when the passwd-home file asks for map attributes but a check refuses it.
88
+ * The export ignores the opt-in silently; this is the only place that says why. Undefined when nothing to say.
89
+ */
90
+ export function optInHint(projectDir, deps = {}) {
91
+ try {
92
+ const home = deps.passwdHome ? deps.passwdHome() : userInfo().homedir;
93
+ if (!home || !isAbsolute(home))
94
+ return undefined;
95
+ const path = join(home, ".kya", "config.json");
96
+ const raw = JSON.parse(readFileSync(path, "utf8"));
97
+ if (raw?.otlpExport?.mapAttrs !== true)
98
+ return undefined;
99
+ const why = optInRefusal(path, home, projectDir, deps);
100
+ if (why === undefined)
101
+ return undefined;
102
+ const fix = why === "group or world writable" ? ` Run "chmod 600 ${path}".` : "";
103
+ return `kya: otlpExport.mapAttrs in ${path} is ignored (${why}).${fix} See docs/otlp.md.`;
104
+ }
105
+ catch {
106
+ return undefined;
107
+ }
108
+ }
109
+ //# sourceMappingURL=map-attrs-optin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-attrs-optin.js","sourceRoot":"","sources":["../../src/otel/map-attrs-optin.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export interface ParsedArgs {
6
6
  readonly command: string | undefined;
7
7
  readonly positionals: readonly string[];
8
8
  readonly flags: Readonly<Record<string, string | boolean>>;
9
+ /** Tokens after a bare `--` (also kept in `positionals`); undefined when there was no `--`. */
10
+ readonly rest?: readonly string[];
9
11
  }
10
12
  export declare function parseArgs(argv: readonly string[]): ParsedArgs;
11
13
  export declare function flagString(flags: Readonly<Record<string, string | boolean>>, ...names: string[]): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAC5D;AAKD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAoD7D;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EACjD,GAAG,KAAK,EAAE,MAAM,EAAE,GACjB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EACjD,GAAG,KAAK,EAAE,MAAM,EAAE,GACjB,OAAO,CAOT;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EACjD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,MAAM,CAOR"}
1
+ {"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAC3D,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAKD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAsD7D;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EACjD,GAAG,KAAK,EAAE,MAAM,EAAE,GACjB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EACjD,GAAG,KAAK,EAAE,MAAM,EAAE,GACjB,OAAO,CAOT;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EACjD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,MAAM,CAOR"}
@@ -10,10 +10,12 @@ export function parseArgs(argv) {
10
10
  const flags = {};
11
11
  const positionals = [];
12
12
  let command;
13
+ let rest;
13
14
  for (let i = 0; i < args.length; i++) {
14
15
  const token = args[i];
15
16
  if (token === "--") {
16
- positionals.push(...args.slice(i + 1));
17
+ rest = args.slice(i + 1);
18
+ positionals.push(...rest);
17
19
  break;
18
20
  }
19
21
  if (token.startsWith("--")) {
@@ -56,7 +58,7 @@ export function parseArgs(argv) {
56
58
  positionals.push(token);
57
59
  }
58
60
  }
59
- return { command, positionals, flags };
61
+ return { command, positionals, flags, ...(rest ? { rest } : {}) };
60
62
  }
61
63
  export function flagString(flags, ...names) {
62
64
  for (const name of names) {
@@ -1 +1 @@
1
- {"version":3,"file":"parse-args.js","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-args.js","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Violation } from "./validate.js";
2
+ export interface PostureCard {
3
+ readonly share: boolean;
4
+ readonly hosted: boolean;
5
+ readonly hosts: readonly string[];
6
+ readonly extensions: readonly string[];
7
+ readonly mcpServers: readonly string[];
8
+ readonly iocLine: string;
9
+ readonly neverMode: string;
10
+ readonly violations: readonly Violation[];
11
+ readonly policy: string;
12
+ readonly lastSentAt: string | undefined;
13
+ }
14
+ export declare function postureCard(env: NodeJS.ProcessEnv, now?: Date): PostureCard;
15
+ /**
16
+ * Local toggle from the live server or the dashboard. Turning on refuses when the preview
17
+ * does not pass the local check (nothing would be sent, so nothing is switched on).
18
+ */
19
+ export declare function setPostureShare(env: NodeJS.ProcessEnv, share: boolean): {
20
+ ok: true;
21
+ share: boolean;
22
+ } | {
23
+ ok: false;
24
+ error: string;
25
+ };
26
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/posture/card.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,GAAE,IAAiB,GAAG,WAAW,CAqBvF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,KAAK,EAAE,OAAO,GACb;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQ7D"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * The posture view for the receipt report, the live server and `kya dash`. Shows what would be
3
+ * sent and the local toggle. Sync and local only. The device id and the label are never part of
4
+ * this view, so a shared report page cannot carry them.
5
+ */
6
+ import { readIocResult } from "../ioc/result.js";
7
+ import { previewPosture } from "./send.js";
8
+ import { readCredentials } from "../login/credentials.js";
9
+ import { readPostureState, shareOn, writePostureConfig } from "./store.js";
10
+ export function postureCard(env, now = new Date()) {
11
+ const { report, violations } = previewPosture(env, now);
12
+ const r = report;
13
+ const arr = (k) => (Array.isArray(r[k]) ? r[k] : []);
14
+ const ioc = readIocResult(env);
15
+ const state = readPostureState(env);
16
+ return {
17
+ share: shareOn(env),
18
+ hosted: readCredentials(env) !== undefined,
19
+ hosts: arr("hosts").map((h) => String(h["id"])),
20
+ extensions: arr("extensions").map((e) => `${e["id"]}${e["version"] ? ` ${e["version"]}` : ""} (${e["editor"]})`),
21
+ mcpServers: arr("mcpServers").map((m) => `${m["name"]} (${m["transport"]}${m["command"] ? `, ${m["command"]}` : ""})`),
22
+ iocLine: ioc
23
+ ? `${ioc.findings.length} finding(s), list ${ioc.listVersion}, checked ${ioc.checkedAt}`
24
+ : "no result yet (run kya doctor --iocs)",
25
+ neverMode: String(r["never"]?.["mode"] ?? "unknown"),
26
+ // Before the first IoC scan the preview has no ioc part; that is shown on its own line, not as a fault.
27
+ violations: violations.filter((v) => v.path !== "ioc"),
28
+ policy: state.policy ? (state.policy.enabled ? "enabled" : "disabled") : "not checked yet",
29
+ lastSentAt: state.lastSentAt,
30
+ };
31
+ }
32
+ /**
33
+ * Local toggle from the live server or the dashboard. Turning on refuses when the preview
34
+ * does not pass the local check (nothing would be sent, so nothing is switched on).
35
+ */
36
+ export function setPostureShare(env, share) {
37
+ if (share) {
38
+ // The ioc part is absent until a first scan; the send scans, so it does not block turning on.
39
+ const violations = previewPosture(env).violations.filter((v) => v.path !== "ioc");
40
+ if (violations.length > 0)
41
+ return { ok: false, error: "the report fails the local check; nothing was switched on" };
42
+ }
43
+ writePostureConfig(env, { share });
44
+ return { ok: true, share };
45
+ }
46
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/posture/card.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { IocResult } from "../ioc/result.js";
2
+ /** Agent-related extensions the client may report (plus any id an IoC check names). */
3
+ export declare const AGENT_EXTENSIONS: Readonly<Record<string, string>>;
4
+ export interface CollectInput {
5
+ readonly deviceId: string;
6
+ readonly label: string;
7
+ readonly now: Date;
8
+ readonly home: string;
9
+ readonly pathDirs: readonly string[];
10
+ readonly platform: string;
11
+ readonly arch: string;
12
+ readonly ioc: IocResult | undefined;
13
+ /** IoC ids named by a check (added to the extension allowlist). */
14
+ readonly iocExtensionIds: readonly string[];
15
+ readonly hosted: boolean;
16
+ }
17
+ /** The report object before validation. Callers must run checkReport on it before any send. */
18
+ export declare function collectReport(input: CollectInput): Record<string, unknown>;
19
+ //# sourceMappingURL=collect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../src/posture/collect.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,uFAAuF;AACvF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc7D,CAAC;AA0BF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAiGD,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiC1E"}