@shield-agent/kya 0.24.1 → 0.25.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 (90) hide show
  1. package/.cursor-plugin/plugin.json +1 -1
  2. package/.mcp.json +1 -1
  3. package/LIMITATIONS.md +3 -3
  4. package/README.md +27 -5
  5. package/amp/README.md +2 -2
  6. package/amp/settings.example.json +1 -1
  7. package/claude/claude_desktop_config.example.json +1 -1
  8. package/claude/run-stdio.mjs +1 -1
  9. package/cline/README.md +1 -1
  10. package/cline/cline_mcp_settings.example.json +1 -1
  11. package/copilot/README.md +1 -1
  12. package/copilot/mcp-config.example.json +1 -1
  13. package/dist/cli.d.ts +1 -1
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +14 -3
  16. package/dist/cli.js.map +1 -1
  17. package/dist/commands/discover.d.ts +21 -0
  18. package/dist/commands/discover.d.ts.map +1 -0
  19. package/dist/commands/discover.js +140 -0
  20. package/dist/commands/discover.js.map +1 -0
  21. package/dist/commands/import-traces.js +2 -2
  22. package/dist/commands/import-traces.js.map +1 -1
  23. package/dist/discover/catalog.d.ts +30 -0
  24. package/dist/discover/catalog.d.ts.map +1 -0
  25. package/dist/discover/catalog.js +166 -0
  26. package/dist/discover/catalog.js.map +1 -0
  27. package/dist/discover/push.d.ts +21 -0
  28. package/dist/discover/push.d.ts.map +1 -0
  29. package/dist/discover/push.js +40 -0
  30. package/dist/discover/push.js.map +1 -0
  31. package/dist/discover/scan.d.ts +74 -0
  32. package/dist/discover/scan.d.ts.map +1 -0
  33. package/dist/discover/scan.js +448 -0
  34. package/dist/discover/scan.js.map +1 -0
  35. package/dist/discover/snapshot.d.ts +32 -0
  36. package/dist/discover/snapshot.d.ts.map +1 -0
  37. package/dist/discover/snapshot.js +92 -0
  38. package/dist/discover/snapshot.js.map +1 -0
  39. package/dist/importers/adr-sensor.d.ts +12 -0
  40. package/dist/importers/adr-sensor.d.ts.map +1 -0
  41. package/dist/importers/adr-sensor.js +272 -0
  42. package/dist/importers/adr-sensor.js.map +1 -0
  43. package/dist/importers/formats.d.ts.map +1 -1
  44. package/dist/importers/formats.js +4 -0
  45. package/dist/importers/formats.js.map +1 -1
  46. package/dist/importers/index.d.ts.map +1 -1
  47. package/dist/importers/index.js +3 -0
  48. package/dist/importers/index.js.map +1 -1
  49. package/dist/mcp-servers.d.ts +0 -2
  50. package/dist/mcp-servers.d.ts.map +1 -1
  51. package/dist/mcp-servers.js +46 -6
  52. package/dist/mcp-servers.js.map +1 -1
  53. package/dist/receipt/enrich.d.ts +12 -0
  54. package/dist/receipt/enrich.d.ts.map +1 -1
  55. package/dist/receipt/enrich.js +30 -0
  56. package/dist/receipt/enrich.js.map +1 -1
  57. package/dist/receipt/live-server.d.ts +2 -0
  58. package/dist/receipt/live-server.d.ts.map +1 -1
  59. package/dist/receipt/live-server.js +28 -2
  60. package/dist/receipt/live-server.js.map +1 -1
  61. package/dist/receipt/render-receipt.d.ts +3 -1
  62. package/dist/receipt/render-receipt.d.ts.map +1 -1
  63. package/dist/receipt/render-receipt.js +48 -7
  64. package/dist/receipt/render-receipt.js.map +1 -1
  65. package/dist/trail.d.ts +1 -1
  66. package/dist/trail.d.ts.map +1 -1
  67. package/dist/trail.js +1 -1
  68. package/dist/trail.js.map +1 -1
  69. package/droid/README.md +3 -3
  70. package/droid/mcp.example.json +1 -1
  71. package/gemini/settings.example.json +1 -1
  72. package/grok/README.md +1 -1
  73. package/kilo/README.md +1 -1
  74. package/kilo/kilo.example.json +1 -1
  75. package/kimi/README.md +1 -1
  76. package/kimi/mcp.example.json +1 -1
  77. package/kiro/README.md +1 -1
  78. package/kiro/mcp.example.json +1 -1
  79. package/manifest.json +1 -1
  80. package/mastracode/README.md +1 -1
  81. package/mastracode/mcp.example.json +1 -1
  82. package/mcp.json +1 -1
  83. package/openai/codex.config.example.toml +2 -2
  84. package/openai/responses-mcp.example.json +1 -1
  85. package/opencode/README.md +1 -1
  86. package/opencode/opencode.example.json +1 -1
  87. package/package.json +2 -2
  88. package/qwen/README.md +1 -1
  89. package/qwen/settings.example.json +1 -1
  90. package/server.json +2 -2
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Known-tool catalog for endpoint discovery.
3
+ *
4
+ * The catalog maps a stable short id to display metadata and a default
5
+ * sanction. The defaults are advisory; the hosted console can override them.
6
+ * v1 deliberately has no UNSANCTIONED defaults - unknown tooling defaults to
7
+ * REVIEW so operators can inspect before classifying.
8
+ */
9
+ export type DiscoveryCategory = "cli-agent" | "ide-extension" | "desktop-app" | "model-runtime" | "mcp-server" | "other";
10
+ export type Sanction = "SANCTIONED" | "REVIEW" | "UNSANCTIONED";
11
+ export interface CatalogEntry {
12
+ readonly name: string;
13
+ readonly vendor: string;
14
+ readonly category: DiscoveryCategory;
15
+ readonly defaultSanction: Sanction;
16
+ }
17
+ export interface CatalogEntryWithId extends CatalogEntry {
18
+ readonly id: string;
19
+ readonly binaries: readonly string[];
20
+ readonly appNames: readonly string[];
21
+ readonly extensionMarkers: readonly string[];
22
+ readonly defaultPorts: readonly number[];
23
+ }
24
+ /** Read-only catalog of tools the discovery scanner knows about. */
25
+ export declare function discoveryCatalog(): ReadonlyMap<string, CatalogEntryWithId>;
26
+ export declare function lookupDiscoveryId(id: string): CatalogEntryWithId | undefined;
27
+ /** All binary names across the catalog, useful for PATH scanning. */
28
+ export declare function knownDiscoveryBinaries(): ReadonlySet<string>;
29
+ export declare function knownDiscoveryVendors(): readonly string[];
30
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/discover/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,eAAe,GACf,aAAa,GACb,eAAe,GACf,YAAY,GACZ,OAAO,CAAC;AAEZ,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;CACpC;AAoID,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAoBD,oEAAoE;AACpE,wBAAgB,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAE5E;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,IAAI,WAAW,CAAC,MAAM,CAAC,CAM5D;AAED,wBAAgB,qBAAqB,IAAI,SAAS,MAAM,EAAE,CAQzD"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Known-tool catalog for endpoint discovery.
3
+ *
4
+ * The catalog maps a stable short id to display metadata and a default
5
+ * sanction. The defaults are advisory; the hosted console can override them.
6
+ * v1 deliberately has no UNSANCTIONED defaults - unknown tooling defaults to
7
+ * REVIEW so operators can inspect before classifying.
8
+ */
9
+ const CATALOG_DEFS = [
10
+ {
11
+ id: "claude",
12
+ name: "Claude Code",
13
+ vendor: "Anthropic",
14
+ category: "cli-agent",
15
+ defaultSanction: "SANCTIONED",
16
+ binaries: ["claude", "claude-code"],
17
+ appNames: ["Claude", "Claude.app"],
18
+ extensionMarkers: ["anthropic", "claude"],
19
+ },
20
+ {
21
+ id: "cursor-agent",
22
+ name: "Cursor",
23
+ vendor: "Cursor Inc",
24
+ category: "cli-agent",
25
+ defaultSanction: "SANCTIONED",
26
+ binaries: ["cursor", "cursor-agent"],
27
+ appNames: ["Cursor", "Cursor.app"],
28
+ extensionMarkers: ["cursor"],
29
+ },
30
+ {
31
+ id: "codex",
32
+ name: "Codex CLI",
33
+ vendor: "OpenAI",
34
+ category: "cli-agent",
35
+ defaultSanction: "SANCTIONED",
36
+ binaries: ["codex"],
37
+ appNames: ["Codex"],
38
+ extensionMarkers: ["codex"],
39
+ },
40
+ {
41
+ id: "gemini",
42
+ name: "Gemini CLI",
43
+ vendor: "Google",
44
+ category: "cli-agent",
45
+ defaultSanction: "SANCTIONED",
46
+ binaries: ["gemini"],
47
+ appNames: ["Gemini"],
48
+ extensionMarkers: ["gemini"],
49
+ },
50
+ {
51
+ id: "opencode",
52
+ name: "OpenCode",
53
+ vendor: "OpenCode",
54
+ category: "cli-agent",
55
+ defaultSanction: "SANCTIONED",
56
+ binaries: ["opencode"],
57
+ appNames: ["OpenCode"],
58
+ extensionMarkers: ["opencode"],
59
+ },
60
+ {
61
+ id: "kyo",
62
+ name: "Kyo",
63
+ vendor: "Kyo",
64
+ category: "cli-agent",
65
+ defaultSanction: "REVIEW",
66
+ binaries: ["kyo"],
67
+ appNames: ["Kyo"],
68
+ extensionMarkers: ["kyo"],
69
+ },
70
+ {
71
+ id: "aider",
72
+ name: "Aider",
73
+ vendor: "Aider",
74
+ category: "cli-agent",
75
+ defaultSanction: "SANCTIONED",
76
+ binaries: ["aider"],
77
+ appNames: ["Aider"],
78
+ extensionMarkers: ["aider"],
79
+ },
80
+ {
81
+ id: "ollama",
82
+ name: "Ollama",
83
+ vendor: "Ollama",
84
+ category: "model-runtime",
85
+ defaultSanction: "SANCTIONED",
86
+ binaries: ["ollama"],
87
+ appNames: ["Ollama"],
88
+ extensionMarkers: ["ollama"],
89
+ defaultPorts: [11434],
90
+ },
91
+ {
92
+ id: "lm-studio",
93
+ name: "LM Studio",
94
+ vendor: "LM Studio",
95
+ category: "model-runtime",
96
+ defaultSanction: "SANCTIONED",
97
+ binaries: ["lmstudio", "lm-studio"],
98
+ appNames: ["LM Studio", "LMStudio"],
99
+ extensionMarkers: ["lmstudio"],
100
+ defaultPorts: [1234],
101
+ },
102
+ {
103
+ id: "llama-server",
104
+ name: "llama.cpp server",
105
+ vendor: "llama.cpp",
106
+ category: "model-runtime",
107
+ defaultSanction: "REVIEW",
108
+ binaries: ["llama-server", "llama-server.exe"],
109
+ appNames: ["llama-server"],
110
+ extensionMarkers: ["llama"],
111
+ },
112
+ {
113
+ id: "mcpserver",
114
+ name: "Generic MCP server",
115
+ vendor: "unknown",
116
+ category: "mcp-server",
117
+ defaultSanction: "REVIEW",
118
+ binaries: ["mcpserver"],
119
+ extensionMarkers: ["mcp"],
120
+ },
121
+ ];
122
+ const ENTRIES = (() => {
123
+ const map = new Map();
124
+ for (const def of CATALOG_DEFS) {
125
+ map.set(def.id, {
126
+ id: def.id,
127
+ name: def.name,
128
+ vendor: def.vendor,
129
+ category: def.category,
130
+ defaultSanction: def.defaultSanction,
131
+ binaries: def.binaries ?? [],
132
+ appNames: def.appNames ?? [],
133
+ extensionMarkers: def.extensionMarkers ?? [],
134
+ defaultPorts: def.defaultPorts ?? [],
135
+ });
136
+ }
137
+ return map;
138
+ })();
139
+ /** Read-only catalog of tools the discovery scanner knows about. */
140
+ export function discoveryCatalog() {
141
+ return ENTRIES;
142
+ }
143
+ export function lookupDiscoveryId(id) {
144
+ return ENTRIES.get(id);
145
+ }
146
+ /** All binary names across the catalog, useful for PATH scanning. */
147
+ export function knownDiscoveryBinaries() {
148
+ const set = new Set();
149
+ for (const entry of ENTRIES.values()) {
150
+ for (const b of entry.binaries)
151
+ set.add(b);
152
+ }
153
+ return set;
154
+ }
155
+ export function knownDiscoveryVendors() {
156
+ const set = new Set();
157
+ for (const entry of ENTRIES.values()) {
158
+ if (entry.vendor && entry.vendor !== "unknown")
159
+ set.add(entry.vendor.toLowerCase());
160
+ set.add(entry.id.toLowerCase());
161
+ for (const m of entry.extensionMarkers)
162
+ set.add(m.toLowerCase());
163
+ }
164
+ return [...set];
165
+ }
166
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/discover/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Hosted sync for discovery snapshots.
3
+ *
4
+ * Pushes the local endpoint inventory to `POST /api/v1/kya/endpoints` on the
5
+ * hosted console. This is fire-and-forget from the scanner's perspective: it
6
+ * returns an outcome object so the CLI can print status, but it never throws.
7
+ */
8
+ import type { DiscoverySnapshot } from "./scan.js";
9
+ export interface PushOptions {
10
+ readonly baseUrl: string;
11
+ readonly apiKey: string;
12
+ readonly fetchFn?: typeof fetch;
13
+ readonly timeoutMs?: number;
14
+ }
15
+ export interface PushResult {
16
+ readonly ok: boolean;
17
+ readonly status: number;
18
+ readonly error?: string;
19
+ }
20
+ export declare function pushDiscoverySnapshot(snapshot: DiscoverySnapshot, opts: PushOptions): Promise<PushResult>;
21
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/discover/push.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,UAAU,CAAC,CA2BrB"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Hosted sync for discovery snapshots.
3
+ *
4
+ * Pushes the local endpoint inventory to `POST /api/v1/kya/endpoints` on the
5
+ * hosted console. This is fire-and-forget from the scanner's perspective: it
6
+ * returns an outcome object so the CLI can print status, but it never throws.
7
+ */
8
+ import { CLI_VERSION } from "../version.js";
9
+ function stripTrailingSlash(url) {
10
+ return url.endsWith("/") ? url.slice(0, -1) : url;
11
+ }
12
+ export async function pushDiscoverySnapshot(snapshot, opts) {
13
+ const baseUrl = stripTrailingSlash(opts.baseUrl.trim());
14
+ const url = `${baseUrl}/api/v1/kya/endpoints`;
15
+ const fetchFn = opts.fetchFn ?? globalThis.fetch;
16
+ const timeoutMs = opts.timeoutMs ?? 10_000;
17
+ try {
18
+ const res = await fetchFn(url, {
19
+ method: "POST",
20
+ headers: {
21
+ Authorization: `Bearer ${opts.apiKey.trim()}`,
22
+ "Content-Type": "application/json; charset=utf-8",
23
+ "User-Agent": `shield-agent-kya-cli/${CLI_VERSION}`,
24
+ },
25
+ body: JSON.stringify(snapshot),
26
+ signal: AbortSignal.timeout(timeoutMs),
27
+ redirect: "error",
28
+ });
29
+ if (!res.ok) {
30
+ const text = await res.text().catch(() => "");
31
+ return { ok: false, status: res.status, error: `HTTP ${res.status}${text ? ` ${text}` : ""}` };
32
+ }
33
+ return { ok: true, status: res.status };
34
+ }
35
+ catch (err) {
36
+ const message = err instanceof Error ? err.message : String(err);
37
+ return { ok: false, status: 0, error: message };
38
+ }
39
+ }
40
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/discover/push.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAgB5C,SAAS,kBAAkB,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAA2B,EAC3B,IAAiB;IAEjB,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,GAAG,OAAO,uBAAuB,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;YAC7B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;gBAC7C,cAAc,EAAE,iCAAiC;gBACjD,YAAY,EAAE,wBAAwB,WAAW,EAAE;aACpD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACtC,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;QACjG,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAClD,CAAC;AACH,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Endpoint discovery scanner.
3
+ *
4
+ * Collects a best-effort inventory of AI agents, IDE extensions, desktop apps,
5
+ * model runtimes, and MCP servers present on the local workstation. The scanner
6
+ * only inspects paths and config files; it never executes discovered binaries
7
+ * and never connects to runtime ports.
8
+ */
9
+ import type { DiscoveryCategory } from "./catalog.js";
10
+ export type Confidence = "high" | "medium" | "low";
11
+ export interface DiscoveryEvidence {
12
+ readonly path?: string;
13
+ readonly version?: string;
14
+ readonly port?: number;
15
+ readonly command?: string;
16
+ readonly configPath?: string;
17
+ }
18
+ export interface DiscoveryFinding {
19
+ readonly id: string;
20
+ readonly name: string;
21
+ readonly vendor: string;
22
+ readonly category: DiscoveryCategory;
23
+ readonly source: string;
24
+ readonly confidence: Confidence;
25
+ readonly evidence: DiscoveryEvidence;
26
+ }
27
+ export interface DiscoveryCoverage {
28
+ readonly attempted: readonly string[];
29
+ readonly unavailable: readonly string[];
30
+ readonly truncated: boolean;
31
+ }
32
+ export interface DiscoverySnapshot {
33
+ readonly endpointUid: string;
34
+ readonly hostnameHash: string;
35
+ readonly os: "darwin" | "linux" | "win32" | "unknown";
36
+ readonly capturedAt: string;
37
+ readonly inventory: readonly DiscoveryFinding[];
38
+ readonly coverage: DiscoveryCoverage;
39
+ }
40
+ export interface ScanOptions {
41
+ readonly env?: NodeJS.ProcessEnv;
42
+ readonly cwd?: string;
43
+ readonly now?: Date;
44
+ /** Injected fs-ish object for tests. */
45
+ readonly fs?: ScanFs;
46
+ /** Override PATH directories (defaults to process.env.PATH). */
47
+ readonly pathDirs?: readonly string[];
48
+ /** Override home dir used for redaction (defaults to os.homedir()). */
49
+ readonly homeDir?: string;
50
+ /** Override OS platform (defaults to process.platform). */
51
+ readonly platform?: string;
52
+ }
53
+ export interface ScanFs {
54
+ existsSync(path: string): boolean;
55
+ statSync(path: string): {
56
+ isFile(): boolean;
57
+ isDirectory(): boolean;
58
+ mode: number;
59
+ size: number;
60
+ };
61
+ readdirSync(path: string): readonly string[];
62
+ readFileSync(path: string, encoding: "utf8"): string;
63
+ }
64
+ export declare function buildEndpointId(os: DiscoverySnapshot["os"]): {
65
+ endpointUid: string;
66
+ hostnameHash: string;
67
+ };
68
+ export declare function scanCliBinaries(pathDirs: readonly string[], fs: ScanFs, platformName: string): DiscoveryFinding[];
69
+ export declare function scanIdeExtensions(extensionRoots: readonly string[], fs: ScanFs): DiscoveryFinding[];
70
+ export declare function scanDesktopApps(appDirs: readonly string[], fs: ScanFs, platformName: string): DiscoveryFinding[];
71
+ export declare function scanModelRuntimes(pathDirs: readonly string[], fs: ScanFs, platformName: string): DiscoveryFinding[];
72
+ export declare function scanMcpServers(configPaths: readonly string[], fs: ScanFs): DiscoveryFinding[];
73
+ export declare function scanEndpoint(options?: ScanOptions): DiscoverySnapshot;
74
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/discover/scan.ts"],"names":[],"mappings":"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"}