@attest-ai/core 0.4.2 → 0.6.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 (116) hide show
  1. package/dist/cjs/index.cjs +2595 -0
  2. package/dist/cjs/index.cjs.map +1 -0
  3. package/dist/cjs/index.d.cts +1111 -0
  4. package/dist/cjs/proto/index.cjs +208 -0
  5. package/dist/cjs/proto/index.cjs.map +1 -0
  6. package/dist/cjs/proto/index.d.cts +269 -0
  7. package/dist/esm/cli.d.ts +9 -0
  8. package/dist/esm/cli.js +154 -0
  9. package/dist/esm/cli.js.map +1 -0
  10. package/dist/esm/index.d.ts +1111 -0
  11. package/dist/esm/index.js +2490 -0
  12. package/dist/esm/index.js.map +1 -0
  13. package/dist/esm/proto/index.d.ts +269 -0
  14. package/dist/esm/proto/index.js +152 -0
  15. package/dist/esm/proto/index.js.map +1 -0
  16. package/package.json +37 -11
  17. package/dist/adapters/anthropic.d.ts +0 -31
  18. package/dist/adapters/anthropic.d.ts.map +0 -1
  19. package/dist/adapters/anthropic.js +0 -42
  20. package/dist/adapters/anthropic.js.map +0 -1
  21. package/dist/adapters/gemini.d.ts +0 -30
  22. package/dist/adapters/gemini.d.ts.map +0 -1
  23. package/dist/adapters/gemini.js +0 -41
  24. package/dist/adapters/gemini.js.map +0 -1
  25. package/dist/adapters/index.d.ts +0 -11
  26. package/dist/adapters/index.d.ts.map +0 -1
  27. package/dist/adapters/index.js +0 -7
  28. package/dist/adapters/index.js.map +0 -1
  29. package/dist/adapters/manual.d.ts +0 -9
  30. package/dist/adapters/manual.d.ts.map +0 -1
  31. package/dist/adapters/manual.js +0 -16
  32. package/dist/adapters/manual.js.map +0 -1
  33. package/dist/adapters/ollama.d.ts +0 -19
  34. package/dist/adapters/ollama.d.ts.map +0 -1
  35. package/dist/adapters/ollama.js +0 -30
  36. package/dist/adapters/ollama.js.map +0 -1
  37. package/dist/adapters/openai.d.ts +0 -34
  38. package/dist/adapters/openai.d.ts.map +0 -1
  39. package/dist/adapters/openai.js +0 -42
  40. package/dist/adapters/openai.js.map +0 -1
  41. package/dist/adapters/otel.d.ts +0 -25
  42. package/dist/adapters/otel.d.ts.map +0 -1
  43. package/dist/adapters/otel.js +0 -133
  44. package/dist/adapters/otel.js.map +0 -1
  45. package/dist/agent.d.ts +0 -14
  46. package/dist/agent.d.ts.map +0 -1
  47. package/dist/agent.js +0 -54
  48. package/dist/agent.js.map +0 -1
  49. package/dist/client.d.ts +0 -19
  50. package/dist/client.d.ts.map +0 -1
  51. package/dist/client.js +0 -132
  52. package/dist/client.js.map +0 -1
  53. package/dist/context.d.ts +0 -4
  54. package/dist/context.d.ts.map +0 -1
  55. package/dist/context.js +0 -3
  56. package/dist/context.js.map +0 -1
  57. package/dist/delegate.d.ts +0 -3
  58. package/dist/delegate.d.ts.map +0 -1
  59. package/dist/delegate.js +0 -30
  60. package/dist/delegate.js.map +0 -1
  61. package/dist/engine-downloader.d.ts +0 -7
  62. package/dist/engine-downloader.d.ts.map +0 -1
  63. package/dist/engine-downloader.js +0 -136
  64. package/dist/engine-downloader.js.map +0 -1
  65. package/dist/engine-manager.d.ts +0 -26
  66. package/dist/engine-manager.d.ts.map +0 -1
  67. package/dist/engine-manager.js +0 -172
  68. package/dist/engine-manager.js.map +0 -1
  69. package/dist/expect.d.ts +0 -133
  70. package/dist/expect.d.ts.map +0 -1
  71. package/dist/expect.js +0 -330
  72. package/dist/expect.js.map +0 -1
  73. package/dist/index.d.ts +0 -15
  74. package/dist/index.d.ts.map +0 -1
  75. package/dist/index.js +0 -14
  76. package/dist/index.js.map +0 -1
  77. package/dist/proto/codec.d.ts +0 -20
  78. package/dist/proto/codec.d.ts.map +0 -1
  79. package/dist/proto/codec.js +0 -71
  80. package/dist/proto/codec.js.map +0 -1
  81. package/dist/proto/constants.d.ts +0 -21
  82. package/dist/proto/constants.d.ts.map +0 -1
  83. package/dist/proto/constants.js +0 -25
  84. package/dist/proto/constants.js.map +0 -1
  85. package/dist/proto/errors.d.ts +0 -8
  86. package/dist/proto/errors.d.ts.map +0 -1
  87. package/dist/proto/errors.js +0 -13
  88. package/dist/proto/errors.js.map +0 -1
  89. package/dist/proto/index.d.ts +0 -5
  90. package/dist/proto/index.d.ts.map +0 -1
  91. package/dist/proto/index.js +0 -5
  92. package/dist/proto/index.js.map +0 -1
  93. package/dist/proto/types.d.ts +0 -104
  94. package/dist/proto/types.d.ts.map +0 -1
  95. package/dist/proto/types.js +0 -2
  96. package/dist/proto/types.js.map +0 -1
  97. package/dist/result.d.ts +0 -15
  98. package/dist/result.d.ts.map +0 -1
  99. package/dist/result.js +0 -32
  100. package/dist/result.js.map +0 -1
  101. package/dist/tier.d.ts +0 -5
  102. package/dist/tier.d.ts.map +0 -1
  103. package/dist/tier.js +0 -10
  104. package/dist/tier.js.map +0 -1
  105. package/dist/trace-tree.d.ts +0 -20
  106. package/dist/trace-tree.d.ts.map +0 -1
  107. package/dist/trace-tree.js +0 -92
  108. package/dist/trace-tree.js.map +0 -1
  109. package/dist/trace.d.ts +0 -40
  110. package/dist/trace.d.ts.map +0 -1
  111. package/dist/trace.js +0 -85
  112. package/dist/trace.js.map +0 -1
  113. package/dist/version.d.ts +0 -3
  114. package/dist/version.d.ts.map +0 -1
  115. package/dist/version.js +0 -3
  116. package/dist/version.js.map +0 -1
@@ -1,25 +0,0 @@
1
- import type { Trace } from "../proto/types.js";
2
- interface OTelSpanContext {
3
- traceId: string;
4
- }
5
- interface OTelSpan {
6
- name: string;
7
- startTime: [number, number];
8
- endTime: [number, number];
9
- attributes?: Record<string, unknown>;
10
- parentSpanId?: string;
11
- spanContext(): OTelSpanContext;
12
- }
13
- export declare class OTelAdapter {
14
- private readonly agentId;
15
- constructor(agentId?: string);
16
- static fromSpans(spans: OTelSpan[], agentId?: string): Trace;
17
- private buildTrace;
18
- private findRootSpan;
19
- private classifySpan;
20
- private extractLlmStep;
21
- private extractToolStep;
22
- private spanMetadata;
23
- }
24
- export {};
25
- //# sourceMappingURL=otel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../src/adapters/otel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,IAAI,eAAe,CAAC;CAChC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,OAAO,CAAC,EAAE,MAAM;IAI5B,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK;IAK5D,OAAO,CAAC,UAAU;IAuElB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,YAAY;CAKrB"}
@@ -1,133 +0,0 @@
1
- import { TraceBuilder } from "../trace.js";
2
- export class OTelAdapter {
3
- agentId;
4
- constructor(agentId) {
5
- this.agentId = agentId;
6
- }
7
- static fromSpans(spans, agentId) {
8
- const adapter = new OTelAdapter(agentId);
9
- return adapter.buildTrace(spans);
10
- }
11
- buildTrace(spans) {
12
- const sorted = [...spans].sort((a, b) => {
13
- const aTime = a.startTime[0] * 1e9 + a.startTime[1];
14
- const bTime = b.startTime[0] * 1e9 + b.startTime[1];
15
- return aTime - bTime;
16
- });
17
- const builder = new TraceBuilder(this.agentId);
18
- const rootSpan = this.findRootSpan(sorted);
19
- if (rootSpan) {
20
- const traceId = rootSpan.spanContext().traceId;
21
- if (traceId) {
22
- builder.setTraceId(`otel_${traceId.slice(0, 16)}`);
23
- }
24
- }
25
- let outputMessage = "";
26
- let totalTokens;
27
- let latencyMs;
28
- let model;
29
- for (const span of sorted) {
30
- const attrs = span.attributes ?? {};
31
- const stepType = this.classifySpan(attrs, span.name);
32
- if (stepType === "llm_call") {
33
- const [stepArgs, stepResult] = this.extractLlmStep(attrs);
34
- builder.addLlmCall(span.name, {
35
- args: stepArgs,
36
- result: stepResult,
37
- metadata: this.spanMetadata(span),
38
- });
39
- const completion = attrs["gen_ai.completion"];
40
- if (completion)
41
- outputMessage = String(completion);
42
- const inputTokens = Number(attrs["gen_ai.usage.input_tokens"] ?? 0);
43
- const outputTokens = Number(attrs["gen_ai.usage.output_tokens"] ?? 0);
44
- const spanTokens = inputTokens + outputTokens;
45
- if (spanTokens > 0)
46
- totalTokens = (totalTokens ?? 0) + spanTokens;
47
- if (model === undefined) {
48
- const responseModel = attrs["gen_ai.response.model"];
49
- const requestModel = attrs["gen_ai.request.model"];
50
- if (responseModel)
51
- model = String(responseModel);
52
- else if (requestModel)
53
- model = String(requestModel);
54
- }
55
- }
56
- else if (stepType === "tool_call") {
57
- const [stepArgs, stepResult] = this.extractToolStep(attrs);
58
- const toolName = String(attrs["gen_ai.tool.name"] ?? span.name);
59
- builder.addToolCall(toolName, {
60
- args: stepArgs,
61
- result: stepResult,
62
- metadata: this.spanMetadata(span),
63
- });
64
- }
65
- }
66
- if (rootSpan) {
67
- const startNs = rootSpan.startTime[0] * 1e9 + rootSpan.startTime[1];
68
- const endNs = rootSpan.endTime[0] * 1e9 + rootSpan.endTime[1];
69
- latencyMs = Math.floor((endNs - startNs) / 1_000_000);
70
- }
71
- builder.setOutput({ message: outputMessage });
72
- builder.setMetadata({ total_tokens: totalTokens, latency_ms: latencyMs, model });
73
- return builder.build();
74
- }
75
- findRootSpan(spans) {
76
- for (const span of spans) {
77
- if (!span.parentSpanId)
78
- return span;
79
- }
80
- return spans[0];
81
- }
82
- classifySpan(attrs, name) {
83
- const op = String(attrs["gen_ai.operation.name"] ?? "");
84
- if (op === "chat" || op === "completion" || op === "generate_content" || "gen_ai.completion" in attrs) {
85
- return "llm_call";
86
- }
87
- if (op === "tool" || "gen_ai.tool.name" in attrs) {
88
- return "tool_call";
89
- }
90
- const lower = name.toLowerCase();
91
- if (lower.includes("completion") || lower.includes("chat"))
92
- return "llm_call";
93
- if (lower.includes("tool"))
94
- return "tool_call";
95
- return undefined;
96
- }
97
- extractLlmStep(attrs) {
98
- const args = {};
99
- const result = {};
100
- if ("gen_ai.request.model" in attrs)
101
- args.model = String(attrs["gen_ai.request.model"]);
102
- if ("gen_ai.system" in attrs)
103
- args.system = String(attrs["gen_ai.system"]);
104
- if ("gen_ai.prompt" in attrs)
105
- args.prompt = String(attrs["gen_ai.prompt"]);
106
- if ("gen_ai.completion" in attrs)
107
- result.completion = String(attrs["gen_ai.completion"]);
108
- if ("gen_ai.usage.input_tokens" in attrs)
109
- result.input_tokens = Number(attrs["gen_ai.usage.input_tokens"]);
110
- if ("gen_ai.usage.output_tokens" in attrs)
111
- result.output_tokens = Number(attrs["gen_ai.usage.output_tokens"]);
112
- if ("gen_ai.response.model" in attrs)
113
- result.model = String(attrs["gen_ai.response.model"]);
114
- return [args, result];
115
- }
116
- extractToolStep(attrs) {
117
- const args = {};
118
- const result = {};
119
- if ("gen_ai.tool.call.id" in attrs)
120
- args.call_id = String(attrs["gen_ai.tool.call.id"]);
121
- if ("gen_ai.tool.parameters" in attrs)
122
- args.parameters = attrs["gen_ai.tool.parameters"];
123
- if ("gen_ai.tool.output" in attrs)
124
- result.output = attrs["gen_ai.tool.output"];
125
- return [args, result];
126
- }
127
- spanMetadata(span) {
128
- const startNs = span.startTime[0] * 1e9 + span.startTime[1];
129
- const endNs = span.endTime[0] * 1e9 + span.endTime[1];
130
- return { duration_ms: Math.floor((endNs - startNs) / 1_000_000) };
131
- }
132
- }
133
- //# sourceMappingURL=otel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"otel.js","sourceRoot":"","sources":["../../src/adapters/otel.ts"],"names":[],"mappings":"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"}
package/dist/agent.d.ts DELETED
@@ -1,14 +0,0 @@
1
- import type { Trace } from "./proto/types.js";
2
- import { AgentResult } from "./result.js";
3
- import { TraceBuilder } from "./trace.js";
4
- export declare class Agent {
5
- readonly name: string;
6
- private readonly fn;
7
- constructor(name: string, fn?: (builder: TraceBuilder, args: Record<string, unknown>) => unknown);
8
- run(args?: Record<string, unknown>): AgentResult;
9
- arun(args?: Record<string, unknown>): Promise<AgentResult>;
10
- private setOutput;
11
- withTrace(trace: Trace): AgentResult;
12
- }
13
- export declare function agent(name: string, fn: (builder: TraceBuilder, args: Record<string, unknown>) => unknown): (args?: Record<string, unknown>) => AgentResult;
14
- //# sourceMappingURL=agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,qBAAa,KAAK;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAkF;gBAGnG,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO;IAMxE,GAAG,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,WAAW;IAc9C,IAAI,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAcpE,OAAO,CAAC,SAAS;IAUjB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW;CAGrC;AAED,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,GACpE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,WAAW,CASjD"}
package/dist/agent.js DELETED
@@ -1,54 +0,0 @@
1
- import { AgentResult } from "./result.js";
2
- import { TraceBuilder } from "./trace.js";
3
- import { activeBuilder } from "./context.js";
4
- export class Agent {
5
- name;
6
- fn;
7
- constructor(name, fn) {
8
- this.name = name;
9
- this.fn = fn;
10
- }
11
- run(args = {}) {
12
- if (this.fn === undefined) {
13
- throw new Error("No agent function provided. Pass fn to Agent().");
14
- }
15
- const builder = new TraceBuilder(this.name);
16
- builder.setInput(args);
17
- const output = activeBuilder.run(builder, () => this.fn(builder, args));
18
- this.setOutput(builder, output);
19
- return new AgentResult(builder.build());
20
- }
21
- async arun(args = {}) {
22
- if (this.fn === undefined) {
23
- throw new Error("No agent function provided. Pass fn to Agent().");
24
- }
25
- const builder = new TraceBuilder(this.name);
26
- builder.setInput(args);
27
- const output = await activeBuilder.run(builder, async () => this.fn(builder, args));
28
- this.setOutput(builder, output);
29
- return new AgentResult(builder.build());
30
- }
31
- setOutput(builder, output) {
32
- if (output !== null && output !== undefined && typeof output === "object" && !Array.isArray(output)) {
33
- builder.setOutput(output);
34
- }
35
- else if (output !== undefined) {
36
- builder.setOutput({ result: output });
37
- }
38
- else {
39
- builder.setOutput({ result: null });
40
- }
41
- }
42
- withTrace(trace) {
43
- return new AgentResult(trace);
44
- }
45
- }
46
- export function agent(name, fn) {
47
- const wrapped = new Agent(name, fn);
48
- const wrapper = (args) => {
49
- return wrapped.run(args ?? {});
50
- };
51
- wrapper.agent = wrapped;
52
- return wrapper;
53
- }
54
- //# sourceMappingURL=agent.js.map
package/dist/agent.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,OAAO,KAAK;IACP,IAAI,CAAS;IACL,EAAE,CAAkF;IAErG,YACE,IAAY,EACZ,EAAsE;QAEtE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,GAAG,CAAC,OAAgC,EAAE;QACpC,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEhC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgC,EAAE;QAC3C,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,EAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEhC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEO,SAAS,CAAC,OAAqB,EAAE,MAAe;QACtD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpG,OAAO,CAAC,SAAS,CAAC,MAAiC,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,SAAS,CAAC,KAAY;QACpB,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,KAAK,CACnB,IAAY,EACZ,EAAqE;IAErE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,CAAC,IAA8B,EAAe,EAAE;QAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC;IAED,OAA8C,CAAC,KAAK,GAAG,OAAO,CAAC;IAChE,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/client.d.ts DELETED
@@ -1,19 +0,0 @@
1
- import type { Assertion, EvaluateBatchResult, Trace } from "./proto/types.js";
2
- import type { EngineManager } from "./engine-manager.js";
3
- export declare class AttestClient {
4
- private readonly engine;
5
- private requestId;
6
- private readonly pending;
7
- private writeChain;
8
- private readerActive;
9
- private lineHandler;
10
- constructor(engine: EngineManager);
11
- startReader(): void;
12
- stopReader(): void;
13
- private handleLine;
14
- private failAll;
15
- sendRequest(method: string, params: Record<string, unknown>): Promise<unknown>;
16
- evaluateBatch(trace: Trace, assertions: readonly Assertion[]): Promise<EvaluateBatchResult>;
17
- submitPluginResult(traceId: string, pluginName: string, assertionId: string, status: string, score: number, explanation: string): Promise<boolean>;
18
- }
19
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,mBAAmB,EACnB,KAAK,EAEN,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOzD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAyC;gBAEhD,MAAM,EAAE,aAAa;IAIjC,WAAW,IAAI,IAAI;IAkBnB,UAAU,IAAI,IAAI;IAYlB,OAAO,CAAC,UAAU;IAoClB,OAAO,CAAC,OAAO;IAOT,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B9E,aAAa,CACjB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,SAAS,SAAS,EAAE,GAC/B,OAAO,CAAC,mBAAmB,CAAC;IASzB,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;CAkBpB"}
package/dist/client.js DELETED
@@ -1,132 +0,0 @@
1
- import { ProtocolError } from "./proto/errors.js";
2
- import { decodeResponse, encodeRequest, extractId, extractResult, } from "./proto/codec.js";
3
- export class AttestClient {
4
- engine;
5
- requestId = 0;
6
- pending = new Map();
7
- writeChain = Promise.resolve();
8
- readerActive = false;
9
- lineHandler = null;
10
- constructor(engine) {
11
- this.engine = engine;
12
- }
13
- startReader() {
14
- if (this.readerActive)
15
- return;
16
- const rl = this.engine.readlineInterface;
17
- if (rl === null) {
18
- throw new Error("Engine readline interface not available. Call engine.start() first.");
19
- }
20
- this.readerActive = true;
21
- this.lineHandler = (line) => this.handleLine(line);
22
- rl.on("line", this.lineHandler);
23
- rl.on("close", () => {
24
- this.failAll(new Error("Engine closed stdout."));
25
- this.readerActive = false;
26
- });
27
- }
28
- stopReader() {
29
- if (!this.readerActive)
30
- return;
31
- const rl = this.engine.readlineInterface;
32
- if (rl !== null && this.lineHandler !== null) {
33
- rl.removeListener("line", this.lineHandler);
34
- }
35
- this.lineHandler = null;
36
- this.readerActive = false;
37
- }
38
- handleLine(line) {
39
- let reqId;
40
- try {
41
- const response = decodeResponse(line);
42
- reqId = extractId(response);
43
- const pending = this.pending.get(reqId);
44
- if (pending === undefined)
45
- return;
46
- this.pending.delete(reqId);
47
- try {
48
- const result = extractResult(response);
49
- pending.resolve(result);
50
- }
51
- catch (err) {
52
- pending.reject(err);
53
- }
54
- }
55
- catch (err) {
56
- if (err instanceof ProtocolError) {
57
- // Try to extract id from raw JSON for error routing
58
- try {
59
- const raw = JSON.parse(line.trim());
60
- reqId = Number(raw.id ?? -1);
61
- }
62
- catch {
63
- reqId = -1;
64
- }
65
- const pending = this.pending.get(reqId);
66
- if (pending !== undefined) {
67
- this.pending.delete(reqId);
68
- pending.reject(err);
69
- }
70
- }
71
- // Malformed responses are silently discarded (logged in production)
72
- }
73
- }
74
- failAll(err) {
75
- for (const pending of this.pending.values()) {
76
- pending.reject(err);
77
- }
78
- this.pending.clear();
79
- }
80
- async sendRequest(method, params) {
81
- if (!this.readerActive) {
82
- // Delegate to engine sequential mode
83
- return this.engine.sendRequest(method, params);
84
- }
85
- const cp = this.engine.childProcess;
86
- if (cp === null || cp.stdin === null) {
87
- throw new Error("Engine process not started.");
88
- }
89
- return new Promise((resolve, reject) => {
90
- // Serialize writes through promise chain
91
- this.writeChain = this.writeChain.then(() => {
92
- this.requestId += 1;
93
- const reqId = this.requestId;
94
- this.pending.set(reqId, { resolve, reject });
95
- const requestStr = encodeRequest(reqId, method, params);
96
- cp.stdin.write(requestStr, (err) => {
97
- if (err) {
98
- this.pending.delete(reqId);
99
- reject(err);
100
- }
101
- });
102
- });
103
- });
104
- }
105
- async evaluateBatch(trace, assertions) {
106
- const params = {
107
- trace,
108
- assertions: [...assertions],
109
- };
110
- const raw = await this.sendRequest("evaluate_batch", params);
111
- return raw;
112
- }
113
- async submitPluginResult(traceId, pluginName, assertionId, status, score, explanation) {
114
- const result = {
115
- assertion_id: assertionId,
116
- status,
117
- score,
118
- explanation,
119
- cost: 0.0,
120
- duration_ms: 0,
121
- };
122
- const params = {
123
- trace_id: traceId,
124
- plugin_name: pluginName,
125
- assertion_id: assertionId,
126
- result,
127
- };
128
- const raw = await this.sendRequest("submit_plugin_result", params);
129
- return Boolean(raw?.accepted ?? false);
130
- }
131
- }
132
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { AsyncLocalStorage } from "node:async_hooks";
2
- import type { TraceBuilder } from "./trace.js";
3
- export declare const activeBuilder: AsyncLocalStorage<TraceBuilder>;
4
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,aAAa,iCAAwC,CAAC"}
package/dist/context.js DELETED
@@ -1,3 +0,0 @@
1
- import { AsyncLocalStorage } from "node:async_hooks";
2
- export const activeBuilder = new AsyncLocalStorage();
3
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAgB,CAAC"}
@@ -1,3 +0,0 @@
1
- import { TraceBuilder } from "./trace.js";
2
- export declare function delegate(agentId: string, fn: (child: TraceBuilder) => Promise<void> | void): Promise<void>;
3
- //# sourceMappingURL=delegate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAChD,OAAO,CAAC,IAAI,CAAC,CAgCf"}
package/dist/delegate.js DELETED
@@ -1,30 +0,0 @@
1
- import { STEP_AGENT_CALL } from "./proto/constants.js";
2
- import { TraceBuilder } from "./trace.js";
3
- import { activeBuilder } from "./context.js";
4
- export async function delegate(agentId, fn) {
5
- const parent = activeBuilder.getStore();
6
- if (parent === undefined) {
7
- throw new Error("delegate() must be used within an Agent.run() context. " +
8
- "No active TraceBuilder found.");
9
- }
10
- const child = new TraceBuilder(agentId);
11
- // Access parent trace id via building and extracting — use internal workaround
12
- // The child needs the parent's trace_id. We set it after building.
13
- // TraceBuilder exposes setParentTraceId, but we need to read parent's id.
14
- // Build a temporary trace to get the id, or use the builder directly.
15
- // TraceBuilder stores _traceId privately. We need to read it.
16
- // Build approach: create a minimal parent trace to get the id.
17
- // Alternative: add a getter. For now, use the build-peek pattern.
18
- await activeBuilder.run(child, async () => {
19
- await fn(child);
20
- });
21
- const childTrace = child.build();
22
- parent.addStep({
23
- type: STEP_AGENT_CALL,
24
- name: agentId,
25
- args: undefined,
26
- result: childTrace.output,
27
- sub_trace: childTrace,
28
- });
29
- }
30
- //# sourceMappingURL=delegate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAe,EACf,EAAiD;IAEjD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,yDAAyD;YACzD,+BAA+B,CAChC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,+EAA+E;IAC/E,mEAAmE;IACnE,0EAA0E;IAC1E,sEAAsE;IAEtE,8DAA8D;IAC9D,+DAA+D;IAC/D,kEAAkE;IAElE,MAAM,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAEjC,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +0,0 @@
1
- export declare function attestBinDir(): string;
2
- export declare function platformKey(): string;
3
- export declare function binaryFilename(): string;
4
- export declare function cachedEnginePath(): string | null;
5
- export declare function parseChecksums(text: string): Map<string, string>;
6
- export declare function downloadEngine(): Promise<string>;
7
- //# sourceMappingURL=engine-downloader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine-downloader.d.ts","sourceRoot":"","sources":["../src/engine-downloader.ts"],"names":[],"mappings":"AAYA,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,wBAAgB,WAAW,IAAI,MAAM,CA0BpC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAmBhD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAYhE;AAuCD,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAiDtD"}
@@ -1,136 +0,0 @@
1
- import * as https from "node:https";
2
- import * as http from "node:http";
3
- import * as fs from "node:fs";
4
- import * as path from "node:path";
5
- import * as os from "node:os";
6
- import * as crypto from "node:crypto";
7
- import { ENGINE_VERSION } from "./version.js";
8
- const RELEASE_BASE = `https://github.com/attest-framework/attest/releases/download/v${ENGINE_VERSION}`;
9
- const CHECKSUMS_URL = `${RELEASE_BASE}/checksums-sha256.txt`;
10
- const MAX_REDIRECTS = 5;
11
- export function attestBinDir() {
12
- const dir = path.join(os.homedir(), ".attest", "bin");
13
- fs.mkdirSync(dir, { recursive: true });
14
- return dir;
15
- }
16
- export function platformKey() {
17
- const platform = os.platform();
18
- const arch = os.arch();
19
- const mapping = {
20
- darwin: { arm64: "darwin-arm64", x64: "darwin-amd64" },
21
- linux: { arm64: "linux-arm64", x64: "linux-amd64" },
22
- win32: { x64: "windows-amd64", arm64: "windows-arm64" }
23
- };
24
- const osMap = mapping[platform];
25
- if (!osMap) {
26
- throw new Error(`Unsupported platform: ${platform}. Supported: darwin, linux, win32.`);
27
- }
28
- const key = osMap[arch];
29
- if (!key) {
30
- throw new Error(`Unsupported architecture '${arch}' on platform '${platform}'. ` +
31
- `Supported architectures: ${Object.keys(osMap).join(", ")}.`);
32
- }
33
- return key;
34
- }
35
- export function binaryFilename() {
36
- return os.platform() === "win32" ? "attest-engine.exe" : "attest-engine";
37
- }
38
- export function cachedEnginePath() {
39
- const dir = path.join(os.homedir(), ".attest", "bin");
40
- const binPath = path.join(dir, binaryFilename());
41
- const versionFile = path.join(dir, ".engine-version");
42
- if (!fs.existsSync(binPath)) {
43
- return null;
44
- }
45
- if (!fs.existsSync(versionFile)) {
46
- return null;
47
- }
48
- const cachedVersion = fs.readFileSync(versionFile, "utf-8").trim();
49
- if (cachedVersion !== ENGINE_VERSION) {
50
- return null;
51
- }
52
- return binPath;
53
- }
54
- export function parseChecksums(text) {
55
- const checksums = new Map();
56
- for (const line of text.split("\n")) {
57
- const trimmed = line.trim();
58
- if (!trimmed)
59
- continue;
60
- // Format: "{hash} {filename}" (two spaces between hash and filename)
61
- const match = trimmed.match(/^([a-f0-9]{64})\s+(.+)$/);
62
- if (match) {
63
- checksums.set(match[2], match[1]);
64
- }
65
- }
66
- return checksums;
67
- }
68
- function httpsGet(url, redirectCount = 0) {
69
- if (redirectCount > MAX_REDIRECTS) {
70
- return Promise.reject(new Error(`Too many redirects (>${MAX_REDIRECTS}) following ${url}`));
71
- }
72
- return new Promise((resolve, reject) => {
73
- const client = url.startsWith("https:") ? https : http;
74
- client.get(url, (res) => {
75
- const status = res.statusCode ?? 0;
76
- if (status === 301 || status === 302) {
77
- const location = res.headers.location;
78
- if (!location) {
79
- reject(new Error(`Redirect ${status} without Location header from ${url}`));
80
- return;
81
- }
82
- res.resume();
83
- resolve(httpsGet(location, redirectCount + 1));
84
- return;
85
- }
86
- if (status < 200 || status >= 300) {
87
- res.resume();
88
- reject(new Error(`HTTP ${status} fetching ${url}`));
89
- return;
90
- }
91
- const chunks = [];
92
- res.on("data", (chunk) => chunks.push(chunk));
93
- res.on("end", () => resolve(Buffer.concat(chunks)));
94
- res.on("error", reject);
95
- }).on("error", reject);
96
- });
97
- }
98
- export async function downloadEngine() {
99
- const key = platformKey();
100
- const filename = `attest-engine-${key}`;
101
- const binaryUrl = `${RELEASE_BASE}/${filename}`;
102
- process.stderr.write(`[attest] Downloading engine v${ENGINE_VERSION} for ${key}...\n`);
103
- // Fetch checksums
104
- process.stderr.write(`[attest] Fetching checksums...\n`);
105
- const checksumsText = (await httpsGet(CHECKSUMS_URL)).toString("utf-8");
106
- const checksums = parseChecksums(checksumsText);
107
- const expectedHash = checksums.get(filename);
108
- if (!expectedHash) {
109
- throw new Error(`No checksum found for '${filename}' in checksums-sha256.txt. ` +
110
- `Available files: ${[...checksums.keys()].join(", ")}`);
111
- }
112
- // Download binary
113
- process.stderr.write(`[attest] Downloading ${binaryUrl}...\n`);
114
- const data = await httpsGet(binaryUrl);
115
- // Verify SHA256
116
- const actualHash = crypto.createHash("sha256").update(data).digest("hex");
117
- if (actualHash !== expectedHash) {
118
- throw new Error(`SHA256 mismatch for ${filename}. ` +
119
- `Expected: ${expectedHash}, got: ${actualHash}. ` +
120
- `The download may be corrupted. Delete ~/.attest/bin/ and retry.`);
121
- }
122
- process.stderr.write(`[attest] Checksum verified.\n`);
123
- // Atomic write: temp file + rename
124
- const dir = attestBinDir();
125
- const destFilename = binaryFilename();
126
- const destPath = path.join(dir, destFilename);
127
- const tmpPath = path.join(dir, `.${destFilename}.tmp.${process.pid}`);
128
- fs.writeFileSync(tmpPath, data);
129
- fs.chmodSync(tmpPath, 0o755);
130
- fs.renameSync(tmpPath, destPath);
131
- // Write version marker
132
- fs.writeFileSync(path.join(dir, ".engine-version"), ENGINE_VERSION);
133
- process.stderr.write(`[attest] Engine installed at ${destPath}\n`);
134
- return destPath;
135
- }
136
- //# sourceMappingURL=engine-downloader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine-downloader.js","sourceRoot":"","sources":["../src/engine-downloader.ts"],"names":[],"mappings":"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"}