@agent-inspect/harness 3.0.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.
@@ -0,0 +1,101 @@
1
+ import { InspectRunOptions } from 'agent-inspect';
2
+
3
+ type HarnessDiagnosticSeverity = "warning" | "error";
4
+ type HarnessDiagnosticCode = "target_not_found" | "bootstrap_failed" | "resolve_failed" | "invoke_failed" | "shutdown_failed" | "cli_usage_error" | "fixture_read_failed" | "stdin_read_failed" | "expected_read_failed" | "expected_output_mismatch";
5
+ interface HarnessDiagnosticError {
6
+ name?: string;
7
+ message: string;
8
+ stack?: string;
9
+ }
10
+ interface HarnessDiagnostic {
11
+ code: HarnessDiagnosticCode;
12
+ severity: HarnessDiagnosticSeverity;
13
+ message: string;
14
+ targetName?: string;
15
+ timestamp: number;
16
+ error?: HarnessDiagnosticError;
17
+ }
18
+ type HarnessDiagnosticInput = Omit<HarnessDiagnostic, "timestamp"> & {
19
+ timestamp?: number;
20
+ };
21
+ interface FixtureRunnerContext<TApp = unknown> {
22
+ readonly runnerName: string;
23
+ readonly targetName: string;
24
+ readonly app: TApp | undefined;
25
+ addDiagnostic(diagnostic: HarnessDiagnosticInput): void;
26
+ getDiagnostics(): readonly HarnessDiagnostic[];
27
+ }
28
+ interface TargetDefinition<TApp, TTarget, TInput, TOutput> {
29
+ /** Human-readable label for target listing. Experimental during v1.x. */
30
+ description?: string;
31
+ /** Safe, bounded metadata for local tooling and recipes. Experimental during v1.x. */
32
+ metadata?: Record<string, unknown>;
33
+ /** Resolve a framework-specific object or function from the bootstrapped app. */
34
+ resolve(app: TApp, context: FixtureRunnerContext<TApp>): TTarget | Promise<TTarget>;
35
+ /** Invoke the resolved target with fixture input. */
36
+ invoke(target: TTarget, input: TInput, context: FixtureRunnerContext<TApp>): TOutput | Promise<TOutput>;
37
+ }
38
+ type FixtureTargets<TApp = unknown> = Record<string, TargetDefinition<TApp, unknown, unknown, unknown>>;
39
+ type TargetInput<TDefinition> = TDefinition extends TargetDefinition<infer _TApp, infer _TTarget, infer TInput, infer _TOutput> ? TInput : never;
40
+ type TargetOutput<TDefinition> = TDefinition extends TargetDefinition<infer _TApp, infer _TTarget, infer _TInput, infer TOutput> ? TOutput : never;
41
+ type HarnessTraceMode = "off" | "run" | "run-if-enabled" | "observe";
42
+ interface HarnessTraceOptions extends InspectRunOptions {
43
+ /**
44
+ * `run-if-enabled` uses `maybeInspectRun()` and is the default.
45
+ * `observe` proxies resolved targets and traces `run` / `execute` / `invoke` methods when enabled.
46
+ */
47
+ mode?: HarnessTraceMode;
48
+ runName?: string | ((targetName: string) => string);
49
+ }
50
+ interface FixtureRunnerOptions<TApp, TTargets extends FixtureTargets<TApp>> {
51
+ name?: string;
52
+ targets: TTargets;
53
+ trace?: HarnessTraceOptions;
54
+ bootstrap?(context: FixtureRunnerContext<TApp>): TApp | Promise<TApp>;
55
+ shutdown?(app: TApp | undefined, context: FixtureRunnerContext<TApp>): void | Promise<void>;
56
+ }
57
+ interface FixtureRunOptions {
58
+ trace?: HarnessTraceOptions;
59
+ }
60
+ interface HarnessArgvIo {
61
+ cwd?: string;
62
+ stdin?(): string | Promise<string>;
63
+ stdout?(chunk: string): void;
64
+ stderr?(chunk: string): void;
65
+ }
66
+ interface HarnessArgvResult {
67
+ ok: boolean;
68
+ exitCode: 0 | 1;
69
+ targetName?: string;
70
+ listed?: boolean;
71
+ matchedExpected?: boolean;
72
+ output?: unknown;
73
+ error?: HarnessDiagnosticError;
74
+ diagnostics: readonly HarnessDiagnostic[];
75
+ }
76
+ interface HarnessTargetInfo {
77
+ name: string;
78
+ description?: string;
79
+ metadata?: Record<string, unknown>;
80
+ }
81
+ interface FixtureRunner<TApp, TTargets extends FixtureTargets<TApp>> {
82
+ listTargets(): HarnessTargetInfo[];
83
+ getDiagnostics(): readonly HarnessDiagnostic[];
84
+ runTarget<TName extends Extract<keyof TTargets, string>>(targetName: TName, input: TargetInput<TTargets[TName]>, options?: FixtureRunOptions): Promise<TargetOutput<TTargets[TName]>>;
85
+ runFromArgv(argv?: readonly string[], io?: HarnessArgvIo): Promise<HarnessArgvResult>;
86
+ }
87
+ declare class HarnessError extends Error {
88
+ readonly code: HarnessDiagnosticCode;
89
+ readonly targetName?: string;
90
+ constructor(code: HarnessDiagnosticCode, message: string, options?: {
91
+ targetName?: string;
92
+ cause?: unknown;
93
+ });
94
+ }
95
+ declare class HarnessTargetNotFoundError extends HarnessError {
96
+ constructor(targetName: string);
97
+ }
98
+ declare function defineTarget<TApp, TTarget, TInput, TOutput>(definition: TargetDefinition<TApp, TTarget, TInput, TOutput>): TargetDefinition<TApp, TTarget, TInput, TOutput>;
99
+ declare function createFixtureRunner<TApp, const TTargets extends FixtureTargets<TApp>>(options: FixtureRunnerOptions<TApp, TTargets>): FixtureRunner<TApp, TTargets>;
100
+
101
+ export { type FixtureRunOptions, type FixtureRunner, type FixtureRunnerContext, type FixtureRunnerOptions, type FixtureTargets, type HarnessArgvIo, type HarnessArgvResult, type HarnessDiagnostic, type HarnessDiagnosticCode, type HarnessDiagnosticError, type HarnessDiagnosticInput, type HarnessDiagnosticSeverity, HarnessError, type HarnessTargetInfo, HarnessTargetNotFoundError, type HarnessTraceMode, type HarnessTraceOptions, type TargetDefinition, type TargetInput, type TargetOutput, createFixtureRunner, defineTarget };
@@ -0,0 +1,101 @@
1
+ import { InspectRunOptions } from 'agent-inspect';
2
+
3
+ type HarnessDiagnosticSeverity = "warning" | "error";
4
+ type HarnessDiagnosticCode = "target_not_found" | "bootstrap_failed" | "resolve_failed" | "invoke_failed" | "shutdown_failed" | "cli_usage_error" | "fixture_read_failed" | "stdin_read_failed" | "expected_read_failed" | "expected_output_mismatch";
5
+ interface HarnessDiagnosticError {
6
+ name?: string;
7
+ message: string;
8
+ stack?: string;
9
+ }
10
+ interface HarnessDiagnostic {
11
+ code: HarnessDiagnosticCode;
12
+ severity: HarnessDiagnosticSeverity;
13
+ message: string;
14
+ targetName?: string;
15
+ timestamp: number;
16
+ error?: HarnessDiagnosticError;
17
+ }
18
+ type HarnessDiagnosticInput = Omit<HarnessDiagnostic, "timestamp"> & {
19
+ timestamp?: number;
20
+ };
21
+ interface FixtureRunnerContext<TApp = unknown> {
22
+ readonly runnerName: string;
23
+ readonly targetName: string;
24
+ readonly app: TApp | undefined;
25
+ addDiagnostic(diagnostic: HarnessDiagnosticInput): void;
26
+ getDiagnostics(): readonly HarnessDiagnostic[];
27
+ }
28
+ interface TargetDefinition<TApp, TTarget, TInput, TOutput> {
29
+ /** Human-readable label for target listing. Experimental during v1.x. */
30
+ description?: string;
31
+ /** Safe, bounded metadata for local tooling and recipes. Experimental during v1.x. */
32
+ metadata?: Record<string, unknown>;
33
+ /** Resolve a framework-specific object or function from the bootstrapped app. */
34
+ resolve(app: TApp, context: FixtureRunnerContext<TApp>): TTarget | Promise<TTarget>;
35
+ /** Invoke the resolved target with fixture input. */
36
+ invoke(target: TTarget, input: TInput, context: FixtureRunnerContext<TApp>): TOutput | Promise<TOutput>;
37
+ }
38
+ type FixtureTargets<TApp = unknown> = Record<string, TargetDefinition<TApp, unknown, unknown, unknown>>;
39
+ type TargetInput<TDefinition> = TDefinition extends TargetDefinition<infer _TApp, infer _TTarget, infer TInput, infer _TOutput> ? TInput : never;
40
+ type TargetOutput<TDefinition> = TDefinition extends TargetDefinition<infer _TApp, infer _TTarget, infer _TInput, infer TOutput> ? TOutput : never;
41
+ type HarnessTraceMode = "off" | "run" | "run-if-enabled" | "observe";
42
+ interface HarnessTraceOptions extends InspectRunOptions {
43
+ /**
44
+ * `run-if-enabled` uses `maybeInspectRun()` and is the default.
45
+ * `observe` proxies resolved targets and traces `run` / `execute` / `invoke` methods when enabled.
46
+ */
47
+ mode?: HarnessTraceMode;
48
+ runName?: string | ((targetName: string) => string);
49
+ }
50
+ interface FixtureRunnerOptions<TApp, TTargets extends FixtureTargets<TApp>> {
51
+ name?: string;
52
+ targets: TTargets;
53
+ trace?: HarnessTraceOptions;
54
+ bootstrap?(context: FixtureRunnerContext<TApp>): TApp | Promise<TApp>;
55
+ shutdown?(app: TApp | undefined, context: FixtureRunnerContext<TApp>): void | Promise<void>;
56
+ }
57
+ interface FixtureRunOptions {
58
+ trace?: HarnessTraceOptions;
59
+ }
60
+ interface HarnessArgvIo {
61
+ cwd?: string;
62
+ stdin?(): string | Promise<string>;
63
+ stdout?(chunk: string): void;
64
+ stderr?(chunk: string): void;
65
+ }
66
+ interface HarnessArgvResult {
67
+ ok: boolean;
68
+ exitCode: 0 | 1;
69
+ targetName?: string;
70
+ listed?: boolean;
71
+ matchedExpected?: boolean;
72
+ output?: unknown;
73
+ error?: HarnessDiagnosticError;
74
+ diagnostics: readonly HarnessDiagnostic[];
75
+ }
76
+ interface HarnessTargetInfo {
77
+ name: string;
78
+ description?: string;
79
+ metadata?: Record<string, unknown>;
80
+ }
81
+ interface FixtureRunner<TApp, TTargets extends FixtureTargets<TApp>> {
82
+ listTargets(): HarnessTargetInfo[];
83
+ getDiagnostics(): readonly HarnessDiagnostic[];
84
+ runTarget<TName extends Extract<keyof TTargets, string>>(targetName: TName, input: TargetInput<TTargets[TName]>, options?: FixtureRunOptions): Promise<TargetOutput<TTargets[TName]>>;
85
+ runFromArgv(argv?: readonly string[], io?: HarnessArgvIo): Promise<HarnessArgvResult>;
86
+ }
87
+ declare class HarnessError extends Error {
88
+ readonly code: HarnessDiagnosticCode;
89
+ readonly targetName?: string;
90
+ constructor(code: HarnessDiagnosticCode, message: string, options?: {
91
+ targetName?: string;
92
+ cause?: unknown;
93
+ });
94
+ }
95
+ declare class HarnessTargetNotFoundError extends HarnessError {
96
+ constructor(targetName: string);
97
+ }
98
+ declare function defineTarget<TApp, TTarget, TInput, TOutput>(definition: TargetDefinition<TApp, TTarget, TInput, TOutput>): TargetDefinition<TApp, TTarget, TInput, TOutput>;
99
+ declare function createFixtureRunner<TApp, const TTargets extends FixtureTargets<TApp>>(options: FixtureRunnerOptions<TApp, TTargets>): FixtureRunner<TApp, TTargets>;
100
+
101
+ export { type FixtureRunOptions, type FixtureRunner, type FixtureRunnerContext, type FixtureRunnerOptions, type FixtureTargets, type HarnessArgvIo, type HarnessArgvResult, type HarnessDiagnostic, type HarnessDiagnosticCode, type HarnessDiagnosticError, type HarnessDiagnosticInput, type HarnessDiagnosticSeverity, HarnessError, type HarnessTargetInfo, HarnessTargetNotFoundError, type HarnessTraceMode, type HarnessTraceOptions, type TargetDefinition, type TargetInput, type TargetOutput, createFixtureRunner, defineTarget };