@shield-agent/kya 0.1.29 → 0.1.31

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 (54) hide show
  1. package/.mcp.json +1 -1
  2. package/LIMITATIONS.md +6 -2
  3. package/README.md +29 -22
  4. package/assets/activity-receipt.png +0 -0
  5. package/claude/claude_desktop_config.example.json +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +81 -3
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/receipt.d.ts +38 -0
  10. package/dist/commands/receipt.d.ts.map +1 -0
  11. package/dist/commands/receipt.js +92 -0
  12. package/dist/commands/receipt.js.map +1 -0
  13. package/dist/commands/start.d.ts +15 -0
  14. package/dist/commands/start.d.ts.map +1 -0
  15. package/dist/commands/start.js +113 -0
  16. package/dist/commands/start.js.map +1 -0
  17. package/dist/commands/wrap.d.ts +4 -2
  18. package/dist/commands/wrap.d.ts.map +1 -1
  19. package/dist/commands/wrap.js +41 -5
  20. package/dist/commands/wrap.js.map +1 -1
  21. package/dist/config.d.ts +5 -0
  22. package/dist/config.d.ts.map +1 -1
  23. package/dist/config.js +5 -0
  24. package/dist/config.js.map +1 -1
  25. package/dist/dash/render.d.ts.map +1 -1
  26. package/dist/dash/render.js +4 -0
  27. package/dist/dash/render.js.map +1 -1
  28. package/dist/receipt/auto-open.d.ts +17 -0
  29. package/dist/receipt/auto-open.d.ts.map +1 -0
  30. package/dist/receipt/auto-open.js +68 -0
  31. package/dist/receipt/auto-open.js.map +1 -0
  32. package/dist/receipt/live-server.d.ts +17 -0
  33. package/dist/receipt/live-server.d.ts.map +1 -0
  34. package/dist/receipt/live-server.js +197 -0
  35. package/dist/receipt/live-server.js.map +1 -0
  36. package/dist/receipt/render-receipt.d.ts +29 -0
  37. package/dist/receipt/render-receipt.d.ts.map +1 -0
  38. package/dist/receipt/render-receipt.js +439 -0
  39. package/dist/receipt/render-receipt.js.map +1 -0
  40. package/dist/trail-summary.d.ts +13 -0
  41. package/dist/trail-summary.d.ts.map +1 -0
  42. package/dist/trail-summary.js +254 -0
  43. package/dist/trail-summary.js.map +1 -0
  44. package/dist/trail.d.ts +28 -0
  45. package/dist/trail.d.ts.map +1 -0
  46. package/dist/trail.js +92 -0
  47. package/dist/trail.js.map +1 -0
  48. package/gemini/settings.example.json +1 -1
  49. package/grok/README.md +1 -1
  50. package/manifest.json +1 -1
  51. package/mcp.json +1 -1
  52. package/openai/codex.config.example.toml +1 -1
  53. package/package.json +1 -1
  54. package/server.json +2 -2
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Short human summary for trail/receipt.
3
+ * Picks safe fields (path / shell bin / size hint), runs redactEvidence, clips to 80 chars.
4
+ * Never serializes full args or body/content values.
5
+ */
6
+ import { redactEvidence } from "./orr/agentshield.js";
7
+ const MAX_LEN = 80;
8
+ const PATH_KEYS = [
9
+ "path",
10
+ "file",
11
+ "filepath",
12
+ "file_path",
13
+ "filePath",
14
+ "target",
15
+ "uri",
16
+ "url",
17
+ "destination",
18
+ "dest",
19
+ ];
20
+ const CMD_KEYS = ["command", "cmd", "script", "shell", "argv"];
21
+ const OP_KEYS = ["op", "operation", "action", "method", "mode"];
22
+ /** Exact keys we never surface as values (bodies + common secret names). */
23
+ const SKIP_KEYS = new Set([
24
+ "password",
25
+ "passwd",
26
+ "secret",
27
+ "token",
28
+ "apikey",
29
+ "api_key",
30
+ "authorization",
31
+ "auth",
32
+ "cookie",
33
+ "content",
34
+ "body",
35
+ "data",
36
+ "text",
37
+ "code",
38
+ "diff",
39
+ "patch",
40
+ "payload",
41
+ "raw",
42
+ "accesstoken",
43
+ "access_token",
44
+ "refreshtoken",
45
+ "refresh_token",
46
+ "client_secret",
47
+ "clientsecret",
48
+ "private_key",
49
+ "privatekey",
50
+ "credential",
51
+ "credentials",
52
+ ]);
53
+ const SENSITIVE_KEY_RE = /(secret|token|password|passwd|credential|authorization|apikey|api[_-]?key|private[_-]?key)/i;
54
+ function isPlainObject(v) {
55
+ return typeof v === "object" && v !== null && !Array.isArray(v);
56
+ }
57
+ function isSensitiveKey(key) {
58
+ const lower = key.toLowerCase();
59
+ return SKIP_KEYS.has(lower) || SENSITIVE_KEY_RE.test(lower);
60
+ }
61
+ function pickString(obj, keys) {
62
+ for (const k of keys) {
63
+ if (isSensitiveKey(k))
64
+ continue;
65
+ const v = obj[k];
66
+ if (typeof v === "string" && v.trim())
67
+ return v.trim();
68
+ if (Array.isArray(v) && v.every((x) => typeof x === "string")) {
69
+ const joined = v.filter(Boolean).join(" ").trim();
70
+ if (joined)
71
+ return joined;
72
+ }
73
+ // Nested { file: { path: "..." } }
74
+ if (isPlainObject(v)) {
75
+ const nested = pickString(v, PATH_KEYS);
76
+ if (nested)
77
+ return nested;
78
+ }
79
+ }
80
+ return undefined;
81
+ }
82
+ function toolVerb(toolId) {
83
+ const last = toolId.split(/[./]/).filter(Boolean).pop()?.toLowerCase() ?? "";
84
+ if (/^(write|edit|update|create|put|patch|delete|rm|remove|exec|run|shell|read|checkout)$/.test(last)) {
85
+ return last === "exec" || last === "run" ? "shell" : last;
86
+ }
87
+ const id = toolId.toLowerCase();
88
+ if (id.includes("shell") || id.includes("exec"))
89
+ return "shell";
90
+ if (id.includes("write") || id.includes("edit"))
91
+ return "write";
92
+ if (id.includes("delete") || /\.rm\b/.test(id))
93
+ return "delete";
94
+ if (id.includes("read"))
95
+ return "read";
96
+ return "";
97
+ }
98
+ function contentHint(obj) {
99
+ for (const k of ["content", "body", "text", "code", "diff", "patch", "data"]) {
100
+ const v = obj[k];
101
+ if (typeof v === "string" && v.length > 0)
102
+ return `${v.length} chars`;
103
+ if (Buffer.isBuffer(v))
104
+ return `${v.length} bytes`;
105
+ }
106
+ return undefined;
107
+ }
108
+ /** Strip query/fragment from URLs before they enter the summary. */
109
+ export function scrubUrl(value) {
110
+ try {
111
+ if (/^[a-z][a-z0-9+.-]*:/i.test(value)) {
112
+ const u = new URL(value);
113
+ u.search = "";
114
+ u.hash = "";
115
+ // Drop userinfo (user:pass@host)
116
+ u.username = "";
117
+ u.password = "";
118
+ return u.toString();
119
+ }
120
+ }
121
+ catch {
122
+ /* not a URL */
123
+ }
124
+ return value.replace(/([?&#][^=\s]*=)[^&\s#]+/g, "$1[redacted]");
125
+ }
126
+ /**
127
+ * Shell lines: keep bin + arg count only — never the full command
128
+ * (env assignments, -p passwords, Basic auth headers).
129
+ */
130
+ export function summarizeShellCommand(cmd) {
131
+ const trimmed = cmd.trim();
132
+ if (!trimmed)
133
+ return "shell";
134
+ // Space-free URL masquerading as a "command" — scrub query before binning.
135
+ if (!/\s/.test(trimmed) && (/^[a-z][a-z0-9+.-]*:/i.test(trimmed) || /[?&#].*=/.test(trimmed))) {
136
+ return finalize([`shell`, pathLike(trimmed)]) ?? "shell";
137
+ }
138
+ const tokens = trimmed.split(/\s+/).filter(Boolean);
139
+ // Skip leading ENV=value assignments
140
+ let i = 0;
141
+ while (i < tokens.length && /^[A-Za-z_][A-Za-z0-9_]*=/.test(tokens[i]))
142
+ i++;
143
+ let bin = tokens[i] ?? "cmd";
144
+ if (/^[a-z][a-z0-9+.-]*:/i.test(bin) || /[?&#].*=/.test(bin)) {
145
+ bin = pathLike(bin);
146
+ }
147
+ const rest = Math.max(0, tokens.length - i - 1);
148
+ const shortBin = bin.length > 48 ? `${bin.slice(0, 47)}…` : bin;
149
+ return rest > 0 ? `shell ${shortBin} (+${rest} args)` : `shell ${shortBin}`;
150
+ }
151
+ function extraRedact(s) {
152
+ let out = redactEvidence(s);
153
+ out = out.replace(/\bBasic\s+[A-Za-z0-9+/=_-]{4,}/gi, "Basic [redacted]");
154
+ out = out.replace(/\bCookie:\s*[^\s;]+(?:;\s*[^\s;]+)*/gi, "Cookie: [redacted]");
155
+ out = out.replace(/\bsession=[^\s;&]+/gi, "session=[redacted]");
156
+ out = out.replace(/([?&#](?:access_token|api[_-]?key|token|secret|password|auth|sid)=)[^&\s#]+/gi, "$1[redacted]");
157
+ out = out.replace(/\b[A-Z][A-Z0-9_]{2,}=(('[^']*')|("[^"]*")|\S+)/g, (m) => {
158
+ const name = m.split("=")[0] ?? "";
159
+ if (SENSITIVE_KEY_RE.test(name) || /KEY|TOKEN|SECRET|PASSWORD|PASSWD|CREDENTIAL/i.test(name)) {
160
+ return `${name}=[redacted]`;
161
+ }
162
+ return m;
163
+ });
164
+ out = out.replace(/(?:^|\s)(-p|--password|--passwd|--token|--secret|--api-key)(\s+|=)\S+/gi, " $1=[redacted]");
165
+ return out;
166
+ }
167
+ /** Keys allowed in the free-form string fallback (never header/env blobs). */
168
+ const SAFE_FALLBACK_KEYS = new Set([
169
+ "name",
170
+ "title",
171
+ "label",
172
+ "id",
173
+ "ref",
174
+ "branch",
175
+ "repo",
176
+ "message",
177
+ "note",
178
+ "description",
179
+ ]);
180
+ function finalize(parts) {
181
+ const raw = parts.filter(Boolean).join(" ").replace(/\s+/g, " ").trim();
182
+ if (!raw)
183
+ return undefined;
184
+ const redacted = extraRedact(raw).replace(/\r?\n/g, " ").trim();
185
+ if (!redacted)
186
+ return undefined;
187
+ if (redacted.length <= MAX_LEN)
188
+ return redacted;
189
+ return `${redacted.slice(0, MAX_LEN - 1)}…`;
190
+ }
191
+ function pathLike(value) {
192
+ if (/^[a-z][a-z0-9+.-]*:/i.test(value) || /[?&#].*=/.test(value)) {
193
+ return scrubUrl(value);
194
+ }
195
+ return value;
196
+ }
197
+ /**
198
+ * Derive a one-line change summary for the activity feed.
199
+ * Returns undefined when there is nothing safe/useful to show.
200
+ */
201
+ export function deriveTrailSummary(toolId, args) {
202
+ const verb = toolVerb(toolId);
203
+ if (args == null) {
204
+ return undefined;
205
+ }
206
+ if (typeof args === "string") {
207
+ // Treat bare strings as opaque — only length, avoid dumping secrets.
208
+ return finalize([verb || "args", `(${args.length} chars)`]);
209
+ }
210
+ if (typeof args === "number" || typeof args === "boolean") {
211
+ return finalize([verb || "args", String(args)]);
212
+ }
213
+ if (Array.isArray(args)) {
214
+ // Argv-style: summarize as shell bin + count
215
+ if (args.every((x) => typeof x === "string")) {
216
+ return finalize([summarizeShellCommand(args.join(" "))]);
217
+ }
218
+ return finalize([verb || "args", `(${args.length} items)`]);
219
+ }
220
+ if (!isPlainObject(args)) {
221
+ return undefined;
222
+ }
223
+ const path = pickString(args, PATH_KEYS);
224
+ const cmd = pickString(args, CMD_KEYS);
225
+ const op = pickString(args, OP_KEYS);
226
+ const hint = contentHint(args);
227
+ if (cmd) {
228
+ return finalize([summarizeShellCommand(cmd)]);
229
+ }
230
+ if (path) {
231
+ const head = op || verb || "touch";
232
+ const safePath = pathLike(path);
233
+ return finalize(hint ? [head, safePath, `(${hint})`] : [head, safePath]);
234
+ }
235
+ for (const [k, v] of Object.entries(args)) {
236
+ if (!SAFE_FALLBACK_KEYS.has(k.toLowerCase()))
237
+ continue;
238
+ if (isSensitiveKey(k))
239
+ continue;
240
+ if (typeof v === "string" && v.trim() && v.length <= 120) {
241
+ return finalize([verb || k, pathLike(v.trim())]);
242
+ }
243
+ }
244
+ if (hint) {
245
+ return finalize([verb || "args", hint]);
246
+ }
247
+ // Args present but nothing safe to show
248
+ const keys = Object.keys(args);
249
+ if (keys.length > 0) {
250
+ return finalize(["(no safe summary)"]);
251
+ }
252
+ return undefined;
253
+ }
254
+ //# sourceMappingURL=trail-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trail-summary.js","sourceRoot":"","sources":["../src/trail-summary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB,MAAM,SAAS,GAAG;IAChB,MAAM;IACN,MAAM;IACN,UAAU;IACV,WAAW;IACX,UAAU;IACV,QAAQ;IACR,KAAK;IACL,KAAK;IACL,aAAa;IACb,MAAM;CACE,CAAC;AAEX,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAExE,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAEzE,4EAA4E;AAC5E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,SAAS;IACT,eAAe;IACf,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS;IACT,KAAK;IACL,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,cAAc;IACd,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,gBAAgB,GACpB,6FAA6F,CAAC;AAEhG,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,UAAU,CAAC,GAA4B,EAAE,IAAuB;IACvE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,cAAc,CAAC,CAAC,CAAC;YAAE,SAAS;QAChC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QACD,mCAAmC;QACnC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACxC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7E,IAAI,sFAAsF,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtG,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAChC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAChE,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAChE,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChE,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,GAA4B;IAC/C,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QAC7E,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,CAAC,MAAM,QAAQ,CAAC;QACtE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC,CAAC,MAAM,QAAQ,CAAC;IACrD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,CAAC;QACH,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;YACd,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YACZ,iCAAiC;YACjC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,2EAA2E;IAC3E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC9F,OAAO,QAAQ,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,qCAAqC;IACrC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;QAAE,CAAC,EAAE,CAAC;IAC7E,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAC7B,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,kCAAkC,EAAE,kBAAkB,CAAC,CAAC;IAC1E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,uCAAuC,EAAE,oBAAoB,CAAC,CAAC;IACjF,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;IAChE,GAAG,GAAG,GAAG,CAAC,OAAO,CACf,+EAA+E,EAC/E,cAAc,CACf,CAAC;IACF,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,8CAA8C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7F,OAAO,GAAG,IAAI,aAAa,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IACH,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,yEAAyE,EAAE,gBAAgB,CAAC,CAAC;IAC/G,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,MAAM;IACN,OAAO;IACP,OAAO;IACP,IAAI;IACJ,KAAK;IACL,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,aAAa;CACd,CAAC,CAAC;AAEH,SAAS,QAAQ,CAAC,KAAe;IAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO;QAAE,OAAO,QAAQ,CAAC;IAChD,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,IAAc;IAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE9B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,qEAAqE;QACrE,OAAO,QAAQ,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1D,OAAO,QAAQ,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,6CAA6C;QAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC7C,OAAO,QAAQ,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,QAAQ,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,QAAQ,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC;QACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAAE,SAAS;QACvD,IAAI,cAAc,CAAC,CAAC,CAAC;YAAE,SAAS;QAChC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACzD,OAAO,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,QAAQ,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,wCAAwC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type TrailProduct = "cursor" | "claude" | "codex" | "grok" | "ide" | "runtime" | "other";
2
+ export interface TrailEvent {
3
+ readonly ts: string;
4
+ readonly sessionId: string;
5
+ readonly host?: string;
6
+ /** Coding tool / product that produced the event. */
7
+ readonly product?: TrailProduct;
8
+ readonly toolId: string;
9
+ readonly verdict: string;
10
+ readonly reasonCode: string;
11
+ readonly mode: "observe" | "hold" | "offline";
12
+ readonly neverEvent?: boolean;
13
+ readonly packId?: string;
14
+ readonly argsHash?: string;
15
+ /** Short redacted change line for the activity feed (never raw args). */
16
+ readonly summary?: string;
17
+ }
18
+ export declare function trailPath(cwd: string): string;
19
+ export declare function receiptsDir(cwd: string): string;
20
+ /** Detect Cursor / Claude Code / Codex / Grok / host from env. */
21
+ export declare function detectProduct(env?: NodeJS.ProcessEnv, host?: string): TrailProduct;
22
+ export declare function productLabel(p: TrailProduct | undefined): string;
23
+ export declare function appendTrail(cwd: string, event: TrailEvent): void;
24
+ export declare function readTrail(cwd: string): TrailEvent[];
25
+ /** Events with ts >= since (ISO or Date). Invalid ts kept if unparseable. */
26
+ export declare function readTrailSince(cwd: string, since: Date): TrailEvent[];
27
+ export declare function defaultSessionId(env?: NodeJS.ProcessEnv): string;
28
+ //# sourceMappingURL=trail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trail.d.ts","sourceRoot":"","sources":["../src/trail.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,MAAM,GACN,KAAK,GACL,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAC3B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,CAAC,EAAE,MAAM,GACZ,YAAY,CAed;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAiBhE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAQhE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CAanD;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,UAAU,EAAE,CAOrE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAO7E"}
package/dist/trail.js ADDED
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Local session trail (JSONL). Observe path — not a second PEP.
3
+ */
4
+ import { appendFileSync, existsSync, mkdirSync, readFileSync } from "node:fs";
5
+ import { join } from "node:path";
6
+ import { configDir } from "./config.js";
7
+ export function trailPath(cwd) {
8
+ return join(configDir(cwd), "trail.jsonl");
9
+ }
10
+ export function receiptsDir(cwd) {
11
+ return join(configDir(cwd), "receipts");
12
+ }
13
+ /** Detect Cursor / Claude Code / Codex / Grok / host from env. */
14
+ export function detectProduct(env = process.env, host) {
15
+ if (env.CURSOR_SESSION_ID || env.CURSOR_TRACE_ID || env.CURSOR_AGENT)
16
+ return "cursor";
17
+ if (env.CLAUDECODE ||
18
+ env.CLAUDE_CODE_ENTRYPOINT ||
19
+ env.CLAUDE_SESSION_ID ||
20
+ (env.TERM_PROGRAM && /claude/i.test(env.TERM_PROGRAM))) {
21
+ return "claude";
22
+ }
23
+ if (env.CODEX_HOME || env.CODEX_SESSION || env.OPENAI_CODEX)
24
+ return "codex";
25
+ if (env.GROK_SESSION || env.GROK_BUILD || env.XAI_GROK)
26
+ return "grok";
27
+ if (host === "ide")
28
+ return "ide";
29
+ if (host === "runtime")
30
+ return "runtime";
31
+ return "other";
32
+ }
33
+ export function productLabel(p) {
34
+ switch (p) {
35
+ case "cursor":
36
+ return "Cursor";
37
+ case "claude":
38
+ return "Claude Code";
39
+ case "codex":
40
+ return "Codex";
41
+ case "grok":
42
+ return "Grok";
43
+ case "ide":
44
+ return "IDE";
45
+ case "runtime":
46
+ return "Runtime";
47
+ default:
48
+ return "Other";
49
+ }
50
+ }
51
+ export function appendTrail(cwd, event) {
52
+ const dir = configDir(cwd);
53
+ mkdirSync(dir, { recursive: true });
54
+ const enriched = {
55
+ ...event,
56
+ product: event.product ?? detectProduct(process.env, event.host),
57
+ };
58
+ appendFileSync(trailPath(cwd), `${JSON.stringify(enriched)}\n`, "utf8");
59
+ }
60
+ export function readTrail(cwd) {
61
+ const path = trailPath(cwd);
62
+ if (!existsSync(path))
63
+ return [];
64
+ const lines = readFileSync(path, "utf8").split("\n").filter(Boolean);
65
+ const out = [];
66
+ for (const line of lines) {
67
+ try {
68
+ out.push(JSON.parse(line));
69
+ }
70
+ catch {
71
+ /* skip bad lines */
72
+ }
73
+ }
74
+ return out;
75
+ }
76
+ /** Events with ts >= since (ISO or Date). Invalid ts kept if unparseable. */
77
+ export function readTrailSince(cwd, since) {
78
+ const sinceMs = since.getTime();
79
+ return readTrail(cwd).filter((e) => {
80
+ const t = Date.parse(e.ts);
81
+ if (Number.isNaN(t))
82
+ return true;
83
+ return t >= sinceMs;
84
+ });
85
+ }
86
+ export function defaultSessionId(env = process.env) {
87
+ return (env.KYA_SESSION_ID?.trim() ||
88
+ env.CURSOR_SESSION_ID?.trim() ||
89
+ env.CLAUDE_SESSION_ID?.trim() ||
90
+ `local-${new Date().toISOString().slice(0, 10)}`);
91
+ }
92
+ //# sourceMappingURL=trail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trail.js","sourceRoot":"","sources":["../src/trail.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "shield-kya": {
4
4
  "command": "npx",
5
- "args": ["--no-install", "@shield-agent/kya@0.1.23", "serve-mcp", "--stdio"],
5
+ "args": ["--no-install", "@shield-agent/kya@0.1.31", "serve-mcp", "--stdio"],
6
6
  "env": {
7
7
  "KYA_BASE_URL": "https://shield-agent.com",
8
8
  "KYA_API_KEY": "${KYA_API_KEY}",
package/grok/README.md CHANGED
@@ -40,7 +40,7 @@ chat = client.chat.create(
40
40
  There is no grok.com stdio path. For a local agent host use the same stdio launch as Claude:
41
41
 
42
42
  ```bash
43
- npx --no-install @shield-agent/kya@0.1.23 serve-mcp --stdio
43
+ npx --no-install @shield-agent/kya@0.1.31 serve-mcp --stdio
44
44
  ```
45
45
 
46
46
  Env: `KYA_BASE_URL`, `KYA_API_KEY`, `KYA_HOST`. Codex and Gemini example configs in this package show the full snippets.
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "manifest_version": "0.3",
3
3
  "name": "shield-kya",
4
4
  "display_name": "Shield KYA",
5
- "version": "0.1.29",
5
+ "version": "0.1.31",
6
6
  "description": "Know Your Agent MCP gate: ALLOW / DENY / REQUIRE_APPROVE. Sole PEP is Shield.",
7
7
  "long_description": "Local Claude Desktop extension that runs the packaged `dist/cli.js serve-mcp --stdio` against your Shield control plane (local or https://shield-agent.com). Tools evaluate policy, ingest session risk, and open Hold tickets. They never execute irreversible side effects.",
8
8
  "author": {
package/mcp.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "shield-kya": {
4
4
  "description": "Know Your Agent local MCP gate: wrap-before-write, named-agent registry, Hold/Clear.",
5
5
  "command": "npx",
6
- "args": ["--no-install", "@shield-agent/kya@0.1.23", "serve-mcp", "--stdio"],
6
+ "args": ["--no-install", "@shield-agent/kya@0.1.31", "serve-mcp", "--stdio"],
7
7
  "env": {
8
8
  "KYA_BASE_URL": "${KYA_BASE_URL}",
9
9
  "KYA_API_KEY": "${KYA_API_KEY}",
@@ -11,7 +11,7 @@
11
11
  # --- Local stdio (OSS) ---
12
12
  [mcp_servers.shield-kya]
13
13
  command = "npx"
14
- args = ["--no-install", "@shield-agent/kya@0.1.23", "serve-mcp", "--stdio"]
14
+ args = ["--no-install", "@shield-agent/kya@0.1.31", "serve-mcp", "--stdio"]
15
15
  startup_timeout_sec = 20
16
16
  env_vars = ["KYA_BASE_URL", "KYA_API_KEY", "KYA_HOST", "KYA_AGENT_ID"]
17
17
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shield-agent/kya",
3
- "version": "0.1.29",
3
+ "version": "0.1.31",
4
4
  "description": "Know Your Agent light CLI + local MCP gate (provider-agnostic, zero vertical packs required).",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "url": "https://github.com/The-Pixel-Boys/shield-kya",
8
8
  "source": "github"
9
9
  },
10
- "version": "0.1.29",
10
+ "version": "0.1.31",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@shield-agent/kya",
15
- "version": "0.1.29",
15
+ "version": "0.1.31",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },