@agenttool/telescope 0.1.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 (78) hide show
  1. package/CLAUDE.md +71 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +4 -0
  4. package/README.md +230 -0
  5. package/dist/archive.d.ts +22 -0
  6. package/dist/archive.d.ts.map +1 -0
  7. package/dist/archive.js +477 -0
  8. package/dist/archive.js.map +1 -0
  9. package/dist/cli-core.d.ts +7 -0
  10. package/dist/cli-core.d.ts.map +1 -0
  11. package/dist/cli-core.js +154 -0
  12. package/dist/cli-core.js.map +1 -0
  13. package/dist/cli.d.ts +3 -0
  14. package/dist/cli.d.ts.map +1 -0
  15. package/dist/cli.js +4 -0
  16. package/dist/cli.js.map +1 -0
  17. package/dist/constants.d.ts +6 -0
  18. package/dist/constants.d.ts.map +1 -0
  19. package/dist/constants.js +15 -0
  20. package/dist/constants.js.map +1 -0
  21. package/dist/errors.d.ts +13 -0
  22. package/dist/errors.d.ts.map +1 -0
  23. package/dist/errors.js +25 -0
  24. package/dist/errors.js.map +1 -0
  25. package/dist/format.d.ts +4 -0
  26. package/dist/format.d.ts.map +1 -0
  27. package/dist/format.js +69 -0
  28. package/dist/format.js.map +1 -0
  29. package/dist/index.d.ts +14 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +11 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/parsers/agent-txt.d.ts +25 -0
  34. package/dist/parsers/agent-txt.d.ts.map +1 -0
  35. package/dist/parsers/agent-txt.js +86 -0
  36. package/dist/parsers/agent-txt.js.map +1 -0
  37. package/dist/parsers/cards.d.ts +18 -0
  38. package/dist/parsers/cards.d.ts.map +1 -0
  39. package/dist/parsers/cards.js +46 -0
  40. package/dist/parsers/cards.js.map +1 -0
  41. package/dist/parsers/common.d.ts +19 -0
  42. package/dist/parsers/common.d.ts.map +1 -0
  43. package/dist/parsers/common.js +69 -0
  44. package/dist/parsers/common.js.map +1 -0
  45. package/dist/parsers/love.d.ts +29 -0
  46. package/dist/parsers/love.d.ts.map +1 -0
  47. package/dist/parsers/love.js +247 -0
  48. package/dist/parsers/love.js.map +1 -0
  49. package/dist/parsers/pathways.d.ts +13 -0
  50. package/dist/parsers/pathways.d.ts.map +1 -0
  51. package/dist/parsers/pathways.js +47 -0
  52. package/dist/parsers/pathways.js.map +1 -0
  53. package/dist/plans.d.ts +14 -0
  54. package/dist/plans.d.ts.map +1 -0
  55. package/dist/plans.js +131 -0
  56. package/dist/plans.js.map +1 -0
  57. package/dist/scan.d.ts +3 -0
  58. package/dist/scan.d.ts.map +1 -0
  59. package/dist/scan.js +1093 -0
  60. package/dist/scan.js.map +1 -0
  61. package/dist/target.d.ts +6 -0
  62. package/dist/target.d.ts.map +1 -0
  63. package/dist/target.js +180 -0
  64. package/dist/target.js.map +1 -0
  65. package/dist/transport.d.ts +23 -0
  66. package/dist/transport.d.ts.map +1 -0
  67. package/dist/transport.js +291 -0
  68. package/dist/transport.js.map +1 -0
  69. package/dist/types.d.ts +131 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +2 -0
  72. package/dist/types.js.map +1 -0
  73. package/dist/verify.d.ts +12 -0
  74. package/dist/verify.d.ts.map +1 -0
  75. package/dist/verify.js +38 -0
  76. package/dist/verify.js.map +1 -0
  77. package/package.json +65 -0
  78. package/schema/agenttool-telescope-report-v0.1.schema.json +404 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-core.js","sourceRoot":"","sources":["../src/cli-core.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from "./cli-core.js";
3
+ process.exitCode = await runCli(process.argv.slice(2));
4
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TelescopeLimits } from "./types.js";
2
+ export declare const REPORT_SCHEMA: "agenttool-telescope/v0.1";
3
+ export declare const TOOL_NAME: "@agenttool/telescope";
4
+ export declare const TOOL_VERSION: "0.1.0";
5
+ export declare const DEFAULT_LIMITS: Readonly<TelescopeLimits>;
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,aAAa,EAAG,0BAAmC,CAAC;AACjE,eAAO,MAAM,SAAS,EAAG,sBAA+B,CAAC;AACzD,eAAO,MAAM,YAAY,EAAG,OAAgB,CAAC;AAE7C,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,eAAe,CAUnD,CAAC"}
@@ -0,0 +1,15 @@
1
+ export const REPORT_SCHEMA = "agenttool-telescope/v0.1";
2
+ export const TOOL_NAME = "@agenttool/telescope";
3
+ export const TOOL_VERSION = "0.1.0";
4
+ export const DEFAULT_LIMITS = Object.freeze({
5
+ timeout_ms: 15_000,
6
+ max_response_bytes: 256 * 1024,
7
+ max_total_bytes: 1_500 * 1024,
8
+ max_redirects: 3,
9
+ max_requests: 12,
10
+ max_agent_txt_lines: 512,
11
+ max_agent_txt_line_bytes: 4_096,
12
+ max_json_depth: 20,
13
+ max_json_nodes: 10_000,
14
+ });
15
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,0BAAmC,CAAC;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,sBAA+B,CAAC;AACzD,MAAM,CAAC,MAAM,YAAY,GAAG,OAAgB,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAA8B,MAAM,CAAC,MAAM,CAAC;IACrE,UAAU,EAAE,MAAM;IAClB,kBAAkB,EAAE,GAAG,GAAG,IAAI;IAC9B,eAAe,EAAE,KAAK,GAAG,IAAI;IAC7B,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,EAAE;IAChB,mBAAmB,EAAE,GAAG;IACxB,wBAAwB,EAAE,KAAK;IAC/B,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE,MAAM;CACvB,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare class TargetInputError extends Error {
2
+ readonly code: string;
3
+ constructor(code: string, message: string);
4
+ }
5
+ export declare class NetworkPolicyError extends Error {
6
+ readonly code: string;
7
+ constructor(code: string, message: string);
8
+ }
9
+ export declare class LimitError extends Error {
10
+ readonly code: string;
11
+ constructor(code: string, message: string);
12
+ }
13
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C"}
package/dist/errors.js ADDED
@@ -0,0 +1,25 @@
1
+ export class TargetInputError extends Error {
2
+ code;
3
+ constructor(code, message) {
4
+ super(message);
5
+ this.name = "TargetInputError";
6
+ this.code = code;
7
+ }
8
+ }
9
+ export class NetworkPolicyError extends Error {
10
+ code;
11
+ constructor(code, message) {
12
+ super(message);
13
+ this.name = "NetworkPolicyError";
14
+ this.code = code;
15
+ }
16
+ }
17
+ export class LimitError extends Error {
18
+ code;
19
+ constructor(code, message) {
20
+ super(message);
21
+ this.name = "LimitError";
22
+ this.code = code;
23
+ }
24
+ }
25
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import type { TelescopeReport } from "./types.js";
2
+ export declare function escapeTerminalText(value: string, maxLength?: number): string;
3
+ export declare function formatTelescopeReport(report: TelescopeReport, format?: "human" | "json"): string;
4
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CAYzE;AAQD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EACvB,MAAM,GAAE,OAAO,GAAG,MAAgB,GACjC,MAAM,CAyER"}
package/dist/format.js ADDED
@@ -0,0 +1,69 @@
1
+ export function escapeTerminalText(value, maxLength = 500) {
2
+ const escaped = value.replace(/[\u0000-\u001f\u007f-\u009f\u061c\u200b-\u200f\u2028-\u202e\u2060-\u206f\ufeff]/gu, (character) => {
3
+ const code = character.codePointAt(0)?.toString(16).padStart(4, "0") ?? "0000";
4
+ return `\\u${code}`;
5
+ });
6
+ return escaped.length <= maxLength
7
+ ? escaped
8
+ : `${escaped.slice(0, maxLength)}…`;
9
+ }
10
+ function displayClaimValue(value) {
11
+ if (Array.isArray(value))
12
+ return escapeTerminalText(JSON.stringify(value));
13
+ if (typeof value === "string")
14
+ return escapeTerminalText(value);
15
+ return String(value);
16
+ }
17
+ export function formatTelescopeReport(report, format = "human") {
18
+ if (format === "json")
19
+ return `${JSON.stringify(report, null, 2)}\n`;
20
+ const lines = [
21
+ `Telescope ${escapeTerminalText(report.tool.version)} — ${escapeTerminalText(report.subject.origin)}`,
22
+ `status: ${report.status}`,
23
+ `mode: public HTTPS, read-only GETs, credentials omitted · transport ${report.network_boundary.http_transport} · resolver ${report.network_boundary.dns_resolver}`,
24
+ `network boundary: ${escapeTerminalText(report.network_boundary.statement, 2_048)}`,
25
+ "",
26
+ "Sources",
27
+ ];
28
+ for (const source of report.sources) {
29
+ const suffix = [
30
+ source.status_code === null ? null : `HTTP ${source.status_code}`,
31
+ source.bytes === null ? null : `${source.bytes} bytes`,
32
+ source.error_code,
33
+ ]
34
+ .filter((value) => Boolean(value))
35
+ .join(", ");
36
+ lines.push(`- ${source.id}: ${source.state}${suffix ? ` (${escapeTerminalText(suffix)})` : ""}`, ` ${escapeTerminalText(source.final_url ?? source.url)}`);
37
+ }
38
+ lines.push("", "Surfaces");
39
+ for (const surface of report.surfaces) {
40
+ lines.push(`- ${surface.id}: ${surface.state} · schema ${surface.schema_conformance}`);
41
+ for (const item of surface.claims) {
42
+ lines.push(` ${escapeTerminalText(item.key)} = ${displayClaimValue(item.value)} [${item.basis}]`);
43
+ }
44
+ if (surface.boundary_codes.length > 0) {
45
+ lines.push(` boundaries: ${surface.boundary_codes.join(", ")}`);
46
+ }
47
+ }
48
+ lines.push("", "Generated actions (never executed by Telescope; POSIX display, prefer executable + argv)");
49
+ if (report.actions.length === 0) {
50
+ lines.push("- none");
51
+ }
52
+ else {
53
+ for (const action of report.actions) {
54
+ lines.push(`- ${action.id}: ${escapeTerminalText(action.display, 32_768)}`, ` boundaries: ${action.boundary_codes.join(", ")}`);
55
+ }
56
+ }
57
+ lines.push("", "Extensions");
58
+ for (const extension of report.extensions) {
59
+ lines.push(`- ${escapeTerminalText(extension.id)}: ${extension.state} — ${escapeTerminalText(extension.summary)}`);
60
+ }
61
+ if (report.diagnostics.length > 0) {
62
+ lines.push("", "Diagnostics");
63
+ for (const item of report.diagnostics) {
64
+ lines.push(`- ${item.level} ${escapeTerminalText(item.code)}: ${escapeTerminalText(item.message)}`);
65
+ }
66
+ }
67
+ return `${lines.join("\n")}\n`;
68
+ }
69
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export { DEFAULT_LIMITS, REPORT_SCHEMA, TOOL_NAME, TOOL_VERSION, } from "./constants.js";
2
+ export { verifyNpmTarballFile } from "./archive.js";
3
+ export { escapeTerminalText, formatTelescopeReport } from "./format.js";
4
+ export { parseAgentTxt } from "./parsers/agent-txt.js";
5
+ export { parseA2aCard, parseMcpCard } from "./parsers/cards.js";
6
+ export { parseLoveDiscovery, parseLoveManifest, selectLoveManifest, } from "./parsers/love.js";
7
+ export { parsePathways } from "./parsers/pathways.js";
8
+ export { inspectTarget } from "./scan.js";
9
+ export { defaultResolveHostname, isGloballyReachableAddress, normalizeTarget, } from "./target.js";
10
+ export { verifyArtifact, verifyArtifactFile } from "./verify.js";
11
+ export type { ActionPlan, AdapterContext, DiscoveryAdapter, ExtensionObservation, FetchLike, NetworkBoundary, ObservationState, ResolveAddress, ResolveHostname, SourceObservation, SurfaceObservation, TelescopeClaim, TelescopeDiagnostic, TelescopeLimits, TelescopeOptions, TelescopeReport, TelescopeSubject, } from "./types.js";
12
+ export type { ArtifactExpectation, VerificationResult } from "./verify.js";
13
+ export type { NpmTarballExpectation, NpmTarballInspectionResult, } from "./archive.js";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjE,YAAY,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EACV,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export { DEFAULT_LIMITS, REPORT_SCHEMA, TOOL_NAME, TOOL_VERSION, } from "./constants.js";
2
+ export { verifyNpmTarballFile } from "./archive.js";
3
+ export { escapeTerminalText, formatTelescopeReport } from "./format.js";
4
+ export { parseAgentTxt } from "./parsers/agent-txt.js";
5
+ export { parseA2aCard, parseMcpCard } from "./parsers/cards.js";
6
+ export { parseLoveDiscovery, parseLoveManifest, selectLoveManifest, } from "./parsers/love.js";
7
+ export { parsePathways } from "./parsers/pathways.js";
8
+ export { inspectTarget } from "./scan.js";
9
+ export { defaultResolveHostname, isGloballyReachableAddress, normalizeTarget, } from "./target.js";
10
+ export { verifyArtifact, verifyArtifactFile } from "./verify.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { TelescopeLimits } from "../types.js";
2
+ import { type ParseResult } from "./common.js";
3
+ export interface AgentTxtEntry {
4
+ key: string;
5
+ value: string;
6
+ line: number;
7
+ }
8
+ export interface ParsedAgentTxt {
9
+ entries: AgentTxtEntry[];
10
+ selected: {
11
+ substrate: string | null;
12
+ convention: string | null;
13
+ pathways_url: string | null;
14
+ mcp_card_url: string | null;
15
+ webfinger_template: string | null;
16
+ love_packages_url: string | null;
17
+ offer_bus_atom_url: string | null;
18
+ offer_bus_rss_url: string | null;
19
+ offer_bus_json_url: string | null;
20
+ offer_bus_boundary: string | null;
21
+ websub: string | null;
22
+ };
23
+ }
24
+ export declare function parseAgentTxt(body: Uint8Array, limits: TelescopeLimits): ParseResult<ParsedAgentTxt>;
25
+ //# sourceMappingURL=agent-txt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-txt.d.ts","sourceRoot":"","sources":["../../src/parsers/agent-txt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;CACH;AAgBD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,GACtB,WAAW,CAAC,cAAc,CAAC,CA+E7B"}
@@ -0,0 +1,86 @@
1
+ import { decodeUtf8, parseFailure } from "./common.js";
2
+ const SELECTED_KEYS = {
3
+ Substrate: "substrate",
4
+ Convention: "convention",
5
+ Pathways: "pathways_url",
6
+ "MCP-Server-Card": "mcp_card_url",
7
+ WebFinger: "webfinger_template",
8
+ "LOVE-Packages": "love_packages_url",
9
+ "Offer-Bus": "offer_bus_atom_url",
10
+ "Offer-Bus-RSS": "offer_bus_rss_url",
11
+ "Offer-Bus-JSON": "offer_bus_json_url",
12
+ "Offer-Bus-Boundary": "offer_bus_boundary",
13
+ WebSub: "websub",
14
+ };
15
+ export function parseAgentTxt(body, limits) {
16
+ const decoded = decodeUtf8(body);
17
+ if (!decoded.ok)
18
+ return decoded;
19
+ const lines = decoded.value.split(/\r?\n/);
20
+ if (lines.length > limits.max_agent_txt_lines) {
21
+ return parseFailure("agent_txt_line_limit");
22
+ }
23
+ const entries = [];
24
+ const warnings = [];
25
+ for (const [offset, line] of lines.entries()) {
26
+ if (new TextEncoder().encode(line).byteLength >
27
+ limits.max_agent_txt_line_bytes) {
28
+ return parseFailure("agent_txt_line_too_large");
29
+ }
30
+ const trimmed = line.trim();
31
+ if (!trimmed || trimmed.startsWith("#"))
32
+ continue;
33
+ const colon = line.indexOf(":");
34
+ if (colon <= 0) {
35
+ warnings.push("agent_txt_malformed_line");
36
+ continue;
37
+ }
38
+ const key = line.slice(0, colon).trim();
39
+ const value = line.slice(colon + 1).trim();
40
+ if (!/^[A-Za-z][A-Za-z0-9-]{0,63}$/.test(key) || value.length === 0) {
41
+ warnings.push("agent_txt_malformed_line");
42
+ continue;
43
+ }
44
+ entries.push({ key, value, line: offset + 1 });
45
+ }
46
+ if (entries.length === 0)
47
+ return parseFailure("agent_txt_no_entries");
48
+ const byKey = new Map();
49
+ for (const entry of entries) {
50
+ const existing = byKey.get(entry.key) ?? [];
51
+ existing.push(entry);
52
+ byKey.set(entry.key, existing);
53
+ }
54
+ for (const values of byKey.values()) {
55
+ if (values.length > 1)
56
+ warnings.push("agent_txt_duplicate_key");
57
+ }
58
+ const selected = {
59
+ substrate: null,
60
+ convention: null,
61
+ pathways_url: null,
62
+ mcp_card_url: null,
63
+ webfinger_template: null,
64
+ love_packages_url: null,
65
+ offer_bus_atom_url: null,
66
+ offer_bus_rss_url: null,
67
+ offer_bus_json_url: null,
68
+ offer_bus_boundary: null,
69
+ websub: null,
70
+ };
71
+ for (const [remoteKey, localKey] of Object.entries(SELECTED_KEYS)) {
72
+ const values = byKey.get(remoteKey) ?? [];
73
+ if (values.length === 1) {
74
+ selected[localKey] = values[0]?.value ?? null;
75
+ }
76
+ else if (values.length > 1) {
77
+ warnings.push(`agent_txt_ambiguous_${localKey}`);
78
+ }
79
+ }
80
+ return {
81
+ ok: true,
82
+ value: { entries, selected },
83
+ warnings: [...new Set(warnings)],
84
+ };
85
+ }
86
+ //# sourceMappingURL=agent-txt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-txt.js","sourceRoot":"","sources":["../../src/parsers/agent-txt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { TelescopeLimits } from "../types.js";
2
+ import { type ParseResult } from "./common.js";
3
+ export interface ParsedMcpCard {
4
+ name: string;
5
+ version: string | null;
6
+ protocol_version: string;
7
+ endpoint: string;
8
+ transport: string | null;
9
+ authentication: string | null;
10
+ }
11
+ export declare function parseMcpCard(body: Uint8Array, limits: TelescopeLimits): ParseResult<ParsedMcpCard>;
12
+ export interface ParsedA2aCard {
13
+ name: string;
14
+ version: string | null;
15
+ endpoint: string | null;
16
+ }
17
+ export declare function parseA2aCard(body: Uint8Array, limits: TelescopeLimits): ParseResult<ParsedA2aCard>;
18
+ //# sourceMappingURL=cards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../src/parsers/cards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,GACtB,WAAW,CAAC,aAAa,CAAC,CAyB5B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,GACtB,WAAW,CAAC,aAAa,CAAC,CAkB5B"}
@@ -0,0 +1,46 @@
1
+ import { isRecord, parseFailure, parseJsonBody, readBoundedString, } from "./common.js";
2
+ export function parseMcpCard(body, limits) {
3
+ const decoded = parseJsonBody(body, limits);
4
+ if (!decoded.ok)
5
+ return decoded;
6
+ if (!isRecord(decoded.value))
7
+ return parseFailure("mcp_card_not_object");
8
+ const name = readBoundedString(decoded.value.name, 256);
9
+ const protocolVersion = readBoundedString(decoded.value.protocolVersion ?? decoded.value.protocol_version, 128);
10
+ const endpoint = readBoundedString(decoded.value.endpoint, 2_048);
11
+ if (!name || !protocolVersion || !endpoint) {
12
+ return parseFailure("mcp_card_missing_fields");
13
+ }
14
+ return {
15
+ ok: true,
16
+ value: {
17
+ name,
18
+ version: readBoundedString(decoded.value.version, 128),
19
+ protocol_version: protocolVersion,
20
+ endpoint,
21
+ transport: readBoundedString(decoded.value.transport, 512),
22
+ authentication: readBoundedString(decoded.value.authentication, 512),
23
+ },
24
+ warnings: [],
25
+ };
26
+ }
27
+ export function parseA2aCard(body, limits) {
28
+ const decoded = parseJsonBody(body, limits);
29
+ if (!decoded.ok)
30
+ return decoded;
31
+ if (!isRecord(decoded.value))
32
+ return parseFailure("a2a_card_not_object");
33
+ const name = readBoundedString(decoded.value.name, 256);
34
+ if (!name)
35
+ return parseFailure("a2a_card_missing_name");
36
+ return {
37
+ ok: true,
38
+ value: {
39
+ name,
40
+ version: readBoundedString(decoded.value.version, 128),
41
+ endpoint: readBoundedString(decoded.value.url ?? decoded.value.endpoint, 2_048),
42
+ },
43
+ warnings: [],
44
+ };
45
+ }
46
+ //# sourceMappingURL=cards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.js","sourceRoot":"","sources":["../../src/parsers/cards.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,iBAAiB,GAElB,MAAM,aAAa,CAAC;AAWrB,MAAM,UAAU,YAAY,CAC1B,IAAgB,EAChB,MAAuB;IAEvB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,iBAAiB,CACvC,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAC/D,GAAG,CACJ,CAAC;IACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClE,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3C,OAAO,YAAY,CAAC,yBAAyB,CAAC,CAAC;IACjD,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,IAAI;YACJ,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC;YACtD,gBAAgB,EAAE,eAAe;YACjC,QAAQ;YACR,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC;YAC1D,cAAc,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC;SACrE;QACD,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,YAAY,CAC1B,IAAgB,EAChB,MAAuB;IAEvB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;IACxD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,IAAI;YACJ,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC;YACtD,QAAQ,EAAE,iBAAiB,CACzB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC3C,KAAK,CACN;SACF;QACD,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { TelescopeLimits } from "../types.js";
2
+ export interface ParseSuccess<T> {
3
+ ok: true;
4
+ value: T;
5
+ warnings: string[];
6
+ }
7
+ export interface ParseFailure {
8
+ ok: false;
9
+ code: string;
10
+ }
11
+ export type ParseResult<T> = ParseSuccess<T> | ParseFailure;
12
+ export declare function parseFailure(code: string): ParseFailure;
13
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
14
+ export declare function readBoundedString(value: unknown, maxLength?: number): string | null;
15
+ export declare function isExactSemver(value: string): boolean;
16
+ export declare function isNpmPackageName(value: string): boolean;
17
+ export declare function decodeUtf8(body: Uint8Array): ParseResult<string>;
18
+ export declare function parseJsonBody(body: Uint8Array, limits: TelescopeLimits): ParseResult<unknown>;
19
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/parsers/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;AAE5D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEvD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,SAAS,SAAQ,GAChB,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMvD;AAuBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAUhE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,GACtB,WAAW,CAAC,OAAO,CAAC,CAatB"}
@@ -0,0 +1,69 @@
1
+ export function parseFailure(code) {
2
+ return { ok: false, code };
3
+ }
4
+ export function isRecord(value) {
5
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6
+ }
7
+ export function readBoundedString(value, maxLength = 2_048) {
8
+ return typeof value === "string" &&
9
+ value.length > 0 &&
10
+ value.length <= maxLength
11
+ ? value
12
+ : null;
13
+ }
14
+ export function isExactSemver(value) {
15
+ return /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-(?:0|[1-9]\d*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/.test(value);
16
+ }
17
+ export function isNpmPackageName(value) {
18
+ if (value.length > 214 || value.toLowerCase() !== value)
19
+ return false;
20
+ if (value === "node_modules" || value === "favicon.ico")
21
+ return false;
22
+ return /^(?:@[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*|[a-z0-9][a-z0-9._-]*)$/.test(value);
23
+ }
24
+ function validateJsonComplexity(value, limits) {
25
+ let nodes = 0;
26
+ const visit = (current, depth) => {
27
+ nodes += 1;
28
+ if (nodes > limits.max_json_nodes || depth > limits.max_json_depth) {
29
+ return false;
30
+ }
31
+ if (Array.isArray(current)) {
32
+ return current.every((entry) => visit(entry, depth + 1));
33
+ }
34
+ if (isRecord(current)) {
35
+ return Object.values(current).every((entry) => visit(entry, depth + 1));
36
+ }
37
+ return true;
38
+ };
39
+ return visit(value, 0);
40
+ }
41
+ export function decodeUtf8(body) {
42
+ try {
43
+ return {
44
+ ok: true,
45
+ value: new TextDecoder("utf-8", { fatal: true }).decode(body),
46
+ warnings: [],
47
+ };
48
+ }
49
+ catch {
50
+ return parseFailure("invalid_utf8");
51
+ }
52
+ }
53
+ export function parseJsonBody(body, limits) {
54
+ const decoded = decodeUtf8(body);
55
+ if (!decoded.ok)
56
+ return decoded;
57
+ let value;
58
+ try {
59
+ value = JSON.parse(decoded.value);
60
+ }
61
+ catch {
62
+ return parseFailure("invalid_json");
63
+ }
64
+ if (!validateJsonComplexity(value, limits)) {
65
+ return parseFailure("json_complexity_limit");
66
+ }
67
+ return { ok: true, value, warnings: [] };
68
+ }
69
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/parsers/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { TelescopeLimits } from "../types.js";
2
+ import { type ParseResult } from "./common.js";
3
+ export interface ParsedLoveDiscovery {
4
+ index_url: string;
5
+ access: string | null;
6
+ registry_role: string | null;
7
+ npm_mirror: {
8
+ registry_url: string;
9
+ authority: boolean | null;
10
+ } | null;
11
+ }
12
+ export declare function parseLoveDiscovery(body: Uint8Array, limits: TelescopeLimits): ParseResult<ParsedLoveDiscovery>;
13
+ export interface LoveManifestSelection {
14
+ manifest_url: string;
15
+ }
16
+ export declare function selectLoveManifest(body: Uint8Array, limits: TelescopeLimits, packageName: string, version: string): ParseResult<LoveManifestSelection>;
17
+ export interface ParsedLoveManifest {
18
+ name: string;
19
+ version: string;
20
+ artifact: {
21
+ filename: string;
22
+ sha256: string;
23
+ size: number;
24
+ mirrors: string[];
25
+ };
26
+ dependency_self_contained: boolean | null;
27
+ }
28
+ export declare function parseLoveManifest(body: Uint8Array, limits: TelescopeLimits, expectedName: string, expectedVersion: string): ParseResult<ParsedLoveManifest>;
29
+ //# sourceMappingURL=love.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"love.d.ts","sourceRoot":"","sources":["../../src/parsers/love.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;KAC3B,GAAG,IAAI,CAAC;CACV;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,GACtB,WAAW,CAAC,mBAAmB,CAAC,CAoDlC;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,WAAW,CAAC,qBAAqB,CAAC,CAyCpC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,yBAAyB,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3C;AAiCD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,WAAW,CAAC,kBAAkB,CAAC,CA2IjC"}