@attest-ai/core 0.3.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 (97) hide show
  1. package/dist/adapters/anthropic.d.ts +31 -0
  2. package/dist/adapters/anthropic.d.ts.map +1 -0
  3. package/dist/adapters/anthropic.js +42 -0
  4. package/dist/adapters/anthropic.js.map +1 -0
  5. package/dist/adapters/gemini.d.ts +30 -0
  6. package/dist/adapters/gemini.d.ts.map +1 -0
  7. package/dist/adapters/gemini.js +41 -0
  8. package/dist/adapters/gemini.js.map +1 -0
  9. package/dist/adapters/index.d.ts +11 -0
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters/index.js +7 -0
  12. package/dist/adapters/index.js.map +1 -0
  13. package/dist/adapters/manual.d.ts +9 -0
  14. package/dist/adapters/manual.d.ts.map +1 -0
  15. package/dist/adapters/manual.js +16 -0
  16. package/dist/adapters/manual.js.map +1 -0
  17. package/dist/adapters/ollama.d.ts +19 -0
  18. package/dist/adapters/ollama.d.ts.map +1 -0
  19. package/dist/adapters/ollama.js +30 -0
  20. package/dist/adapters/ollama.js.map +1 -0
  21. package/dist/adapters/openai.d.ts +34 -0
  22. package/dist/adapters/openai.d.ts.map +1 -0
  23. package/dist/adapters/openai.js +42 -0
  24. package/dist/adapters/openai.js.map +1 -0
  25. package/dist/adapters/otel.d.ts +25 -0
  26. package/dist/adapters/otel.d.ts.map +1 -0
  27. package/dist/adapters/otel.js +133 -0
  28. package/dist/adapters/otel.js.map +1 -0
  29. package/dist/agent.d.ts +14 -0
  30. package/dist/agent.d.ts.map +1 -0
  31. package/dist/agent.js +54 -0
  32. package/dist/agent.js.map +1 -0
  33. package/dist/client.d.ts +19 -0
  34. package/dist/client.d.ts.map +1 -0
  35. package/dist/client.js +132 -0
  36. package/dist/client.js.map +1 -0
  37. package/dist/context.d.ts +4 -0
  38. package/dist/context.d.ts.map +1 -0
  39. package/dist/context.js +3 -0
  40. package/dist/context.js.map +1 -0
  41. package/dist/delegate.d.ts +3 -0
  42. package/dist/delegate.d.ts.map +1 -0
  43. package/dist/delegate.js +30 -0
  44. package/dist/delegate.js.map +1 -0
  45. package/dist/engine-manager.d.ts +26 -0
  46. package/dist/engine-manager.d.ts.map +1 -0
  47. package/dist/engine-manager.js +147 -0
  48. package/dist/engine-manager.js.map +1 -0
  49. package/dist/expect.d.ts +127 -0
  50. package/dist/expect.d.ts.map +1 -0
  51. package/dist/expect.js +319 -0
  52. package/dist/expect.js.map +1 -0
  53. package/dist/index.d.ts +15 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +14 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/proto/codec.d.ts +20 -0
  58. package/dist/proto/codec.d.ts.map +1 -0
  59. package/dist/proto/codec.js +71 -0
  60. package/dist/proto/codec.js.map +1 -0
  61. package/dist/proto/constants.d.ts +21 -0
  62. package/dist/proto/constants.d.ts.map +1 -0
  63. package/dist/proto/constants.js +25 -0
  64. package/dist/proto/constants.js.map +1 -0
  65. package/dist/proto/errors.d.ts +8 -0
  66. package/dist/proto/errors.d.ts.map +1 -0
  67. package/dist/proto/errors.js +13 -0
  68. package/dist/proto/errors.js.map +1 -0
  69. package/dist/proto/index.d.ts +5 -0
  70. package/dist/proto/index.d.ts.map +1 -0
  71. package/dist/proto/index.js +5 -0
  72. package/dist/proto/index.js.map +1 -0
  73. package/dist/proto/types.d.ts +104 -0
  74. package/dist/proto/types.d.ts.map +1 -0
  75. package/dist/proto/types.js +2 -0
  76. package/dist/proto/types.js.map +1 -0
  77. package/dist/result.d.ts +15 -0
  78. package/dist/result.d.ts.map +1 -0
  79. package/dist/result.js +32 -0
  80. package/dist/result.js.map +1 -0
  81. package/dist/tier.d.ts +5 -0
  82. package/dist/tier.d.ts.map +1 -0
  83. package/dist/tier.js +10 -0
  84. package/dist/tier.js.map +1 -0
  85. package/dist/trace-tree.d.ts +20 -0
  86. package/dist/trace-tree.d.ts.map +1 -0
  87. package/dist/trace-tree.js +92 -0
  88. package/dist/trace-tree.js.map +1 -0
  89. package/dist/trace.d.ts +40 -0
  90. package/dist/trace.d.ts.map +1 -0
  91. package/dist/trace.js +85 -0
  92. package/dist/trace.js.map +1 -0
  93. package/dist/version.d.ts +2 -0
  94. package/dist/version.d.ts.map +1 -0
  95. package/dist/version.js +2 -0
  96. package/dist/version.js.map +1 -0
  97. package/package.json +50 -0
@@ -0,0 +1,19 @@
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
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,132 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ export const activeBuilder = new AsyncLocalStorage();
3
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,30 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,26 @@
1
+ import { type ChildProcess } from "node:child_process";
2
+ import { type Interface as ReadlineInterface } from "node:readline";
3
+ import type { InitializeResult } from "./proto/types.js";
4
+ export declare class EngineManager {
5
+ private readonly enginePath;
6
+ private readonly logLevel;
7
+ private process;
8
+ private reader;
9
+ private initialized;
10
+ private requestId;
11
+ private initResult;
12
+ constructor(options?: {
13
+ enginePath?: string;
14
+ logLevel?: string;
15
+ });
16
+ start(): Promise<InitializeResult>;
17
+ stop(): Promise<void>;
18
+ sendRequest(method: string, params: Record<string, unknown>): Promise<unknown>;
19
+ private sendRequestInternal;
20
+ get isRunning(): boolean;
21
+ /** Expose process for AttestClient reader loop access */
22
+ get childProcess(): ChildProcess | null;
23
+ /** Expose readline interface for AttestClient reader loop */
24
+ get readlineInterface(): ReadlineInterface | null;
25
+ }
26
+ //# sourceMappingURL=engine-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-manager.d.ts","sourceRoot":"","sources":["../src/engine-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAmB,KAAK,SAAS,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAIrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAqCzD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAiC;gBAEvC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAK1D,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAyBlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCrB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;YAOtE,mBAAmB;IAmCjC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,yDAAyD;IACzD,IAAI,YAAY,IAAI,YAAY,GAAG,IAAI,CAEtC;IAED,6DAA6D;IAC7D,IAAI,iBAAiB,IAAI,iBAAiB,GAAG,IAAI,CAEhD;CACF"}
@@ -0,0 +1,147 @@
1
+ import { spawn, execSync } from "node:child_process";
2
+ import { createInterface } from "node:readline";
3
+ import { existsSync, accessSync, constants as fsConstants } from "node:fs";
4
+ import { resolve, join, dirname } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { decodeResponse, encodeRequest, extractResult } from "./proto/codec.js";
7
+ import { VERSION } from "./version.js";
8
+ const ENGINE_BINARY_NAME = "attest-engine";
9
+ function findEngineBinary() {
10
+ // Check PATH via `which`
11
+ try {
12
+ const found = execSync(`which ${ENGINE_BINARY_NAME}`, { encoding: "utf-8" }).trim();
13
+ if (found)
14
+ return found;
15
+ }
16
+ catch {
17
+ // not on PATH
18
+ }
19
+ // Check known locations
20
+ const candidates = [
21
+ join(dirname(fileURLToPath(import.meta.url)), "..", "..", "..", "..", "..", "bin", ENGINE_BINARY_NAME),
22
+ join(process.cwd(), "bin", ENGINE_BINARY_NAME),
23
+ ];
24
+ for (const candidate of candidates) {
25
+ const resolved = resolve(candidate);
26
+ try {
27
+ accessSync(resolved, fsConstants.X_OK);
28
+ if (existsSync(resolved))
29
+ return resolved;
30
+ }
31
+ catch {
32
+ // not accessible
33
+ }
34
+ }
35
+ throw new Error(`Cannot find '${ENGINE_BINARY_NAME}' binary. ` +
36
+ "Ensure it is built (make engine) and on your PATH or in ./bin/.");
37
+ }
38
+ export class EngineManager {
39
+ enginePath;
40
+ logLevel;
41
+ process = null;
42
+ reader = null;
43
+ initialized = false;
44
+ requestId = 0;
45
+ initResult = null;
46
+ constructor(options) {
47
+ this.enginePath = options?.enginePath ?? findEngineBinary();
48
+ this.logLevel = options?.logLevel ?? "warn";
49
+ }
50
+ async start() {
51
+ this.process = spawn(this.enginePath, [`--log-level=${this.logLevel}`], {
52
+ stdio: ["pipe", "pipe", "pipe"],
53
+ });
54
+ this.reader = createInterface({ input: this.process.stdout });
55
+ const result = await this.sendRequestInternal("initialize", {
56
+ sdk_name: "attest-typescript",
57
+ sdk_version: VERSION,
58
+ protocol_version: 1,
59
+ required_capabilities: ["layers_1_4"],
60
+ preferred_encoding: "json",
61
+ });
62
+ this.initResult = result;
63
+ if (!this.initResult.compatible) {
64
+ throw new Error(`Engine incompatible. Missing capabilities: ${JSON.stringify(this.initResult.missing)}`);
65
+ }
66
+ this.initialized = true;
67
+ return this.initResult;
68
+ }
69
+ async stop() {
70
+ if (this.process === null)
71
+ return;
72
+ if (this.initialized) {
73
+ try {
74
+ await this.sendRequestInternal("shutdown", {});
75
+ }
76
+ catch {
77
+ // shutdown failed, will kill
78
+ }
79
+ }
80
+ if (this.reader) {
81
+ this.reader.close();
82
+ this.reader = null;
83
+ }
84
+ if (this.process.exitCode === null) {
85
+ this.process.kill("SIGTERM");
86
+ await new Promise((res) => {
87
+ const timer = setTimeout(() => {
88
+ this.process?.kill("SIGKILL");
89
+ }, 5000);
90
+ this.process.on("exit", () => {
91
+ clearTimeout(timer);
92
+ res();
93
+ });
94
+ });
95
+ }
96
+ this.initialized = false;
97
+ this.process = null;
98
+ }
99
+ async sendRequest(method, params) {
100
+ if (!this.initialized && method !== "initialize") {
101
+ throw new Error("Engine not initialized. Call start() first.");
102
+ }
103
+ return this.sendRequestInternal(method, params);
104
+ }
105
+ async sendRequestInternal(method, params) {
106
+ if (this.process === null || this.process.stdin === null || this.reader === null) {
107
+ throw new Error("Engine process not started.");
108
+ }
109
+ this.requestId += 1;
110
+ const requestStr = encodeRequest(this.requestId, method, params);
111
+ return new Promise((resolve, reject) => {
112
+ const onLine = (line) => {
113
+ try {
114
+ const response = decodeResponse(line);
115
+ resolve(extractResult(response));
116
+ }
117
+ catch (err) {
118
+ reject(err);
119
+ }
120
+ };
121
+ this.reader.once("line", onLine);
122
+ const ok = this.process.stdin.write(requestStr, (err) => {
123
+ if (err) {
124
+ this.reader.removeListener("line", onLine);
125
+ reject(err);
126
+ }
127
+ });
128
+ if (!ok) {
129
+ this.process.stdin.once("drain", () => {
130
+ // write will proceed after drain
131
+ });
132
+ }
133
+ });
134
+ }
135
+ get isRunning() {
136
+ return this.process !== null && this.process.exitCode === null;
137
+ }
138
+ /** Expose process for AttestClient reader loop access */
139
+ get childProcess() {
140
+ return this.process;
141
+ }
142
+ /** Expose readline interface for AttestClient reader loop */
143
+ get readlineInterface() {
144
+ return this.reader;
145
+ }
146
+ }
147
+ //# sourceMappingURL=engine-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-manager.js","sourceRoot":"","sources":["../src/engine-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import type { Assertion, Trace } from "./proto/types.js";
2
+ import type { AgentResult } from "./result.js";
3
+ export declare class ExpectChain {
4
+ private readonly _result;
5
+ private readonly _assertions;
6
+ constructor(result: AgentResult);
7
+ get assertions(): Assertion[];
8
+ get trace(): Trace;
9
+ private add;
10
+ outputMatchesSchema(schema: Record<string, unknown>): this;
11
+ outputFieldMatchesSchema(field: string, schema: Record<string, unknown>): this;
12
+ toolArgsMatchSchema(toolName: string, schema: Record<string, unknown>): this;
13
+ toolResultMatchesSchema(toolName: string, schema: Record<string, unknown>): this;
14
+ costUnder(maxCost: number, opts?: {
15
+ soft?: boolean;
16
+ }): this;
17
+ latencyUnder(maxMs: number, opts?: {
18
+ soft?: boolean;
19
+ }): this;
20
+ tokensUnder(maxTokens: number, opts?: {
21
+ soft?: boolean;
22
+ }): this;
23
+ tokensBetween(minTokens: number, maxTokens: number, opts?: {
24
+ soft?: boolean;
25
+ }): this;
26
+ stepCount(operator: string, value: number, opts?: {
27
+ soft?: boolean;
28
+ }): this;
29
+ toolCallCount(operator: string, value: number, opts?: {
30
+ soft?: boolean;
31
+ }): this;
32
+ constraint(field: string, operator: string, opts?: {
33
+ value?: number;
34
+ min?: number;
35
+ max?: number;
36
+ soft?: boolean;
37
+ }): this;
38
+ toolsCalledInOrder(tools: string[], opts?: {
39
+ soft?: boolean;
40
+ }): this;
41
+ toolsCalledExactly(tools: string[], opts?: {
42
+ soft?: boolean;
43
+ }): this;
44
+ noToolLoops(tool: string, maxRepetitions?: number, opts?: {
45
+ soft?: boolean;
46
+ }): this;
47
+ noDuplicateTools(opts?: {
48
+ soft?: boolean;
49
+ }): this;
50
+ requiredTools(tools: string[], opts?: {
51
+ soft?: boolean;
52
+ }): this;
53
+ forbiddenTools(tools: string[], opts?: {
54
+ soft?: boolean;
55
+ }): this;
56
+ outputContains(value: string, opts?: {
57
+ caseSensitive?: boolean;
58
+ soft?: boolean;
59
+ }): this;
60
+ outputNotContains(value: string, opts?: {
61
+ caseSensitive?: boolean;
62
+ soft?: boolean;
63
+ }): this;
64
+ outputMatchesRegex(pattern: string, opts?: {
65
+ soft?: boolean;
66
+ }): this;
67
+ outputHasAllKeywords(keywords: string[], opts?: {
68
+ caseSensitive?: boolean;
69
+ soft?: boolean;
70
+ }): this;
71
+ outputHasAnyKeyword(keywords: string[], opts?: {
72
+ caseSensitive?: boolean;
73
+ soft?: boolean;
74
+ }): this;
75
+ outputForbids(terms: string[]): this;
76
+ contentContains(target: string, value: string, opts?: {
77
+ caseSensitive?: boolean;
78
+ soft?: boolean;
79
+ }): this;
80
+ outputSimilarTo(reference: string, opts?: {
81
+ threshold?: number;
82
+ model?: string;
83
+ soft?: boolean;
84
+ }): this;
85
+ passesJudge(criteria: string, opts?: {
86
+ rubric?: string;
87
+ threshold?: number;
88
+ model?: string;
89
+ soft?: boolean;
90
+ }): this;
91
+ agentCalled(agentId: string, opts?: {
92
+ soft?: boolean;
93
+ }): this;
94
+ delegationDepth(maxDepth: number, opts?: {
95
+ soft?: boolean;
96
+ }): this;
97
+ agentOutputContains(agentId: string, value: string, opts?: {
98
+ caseSensitive?: boolean;
99
+ soft?: boolean;
100
+ }): this;
101
+ crossAgentDataFlow(fromAgent: string, toAgent: string, field: string, opts?: {
102
+ soft?: boolean;
103
+ }): this;
104
+ followsTransitions(transitions: [string, string][], opts?: {
105
+ soft?: boolean;
106
+ }): this;
107
+ aggregateCostUnder(maxCost: number, opts?: {
108
+ soft?: boolean;
109
+ }): this;
110
+ aggregateTokensUnder(maxTokens: number, opts?: {
111
+ soft?: boolean;
112
+ }): this;
113
+ agentOrderedBefore(agentA: string, agentB: string, opts?: {
114
+ soft?: boolean;
115
+ }): this;
116
+ agentsOverlap(agentA: string, agentB: string, opts?: {
117
+ soft?: boolean;
118
+ }): this;
119
+ agentWallTimeUnder(agentId: string, maxMs: number, opts?: {
120
+ soft?: boolean;
121
+ }): this;
122
+ orderedAgents(groups: string[][], opts?: {
123
+ soft?: boolean;
124
+ }): this;
125
+ }
126
+ export declare function attestExpect(result: AgentResult): ExpectChain;
127
+ //# sourceMappingURL=expect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../src/expect.ts"],"names":[],"mappings":"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"}