@agenteer/stdlib 1.0.0-rc.1

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 (118) hide show
  1. package/README.md +98 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/context/context_curator.d.ts +115 -0
  4. package/dist/context/context_curator.d.ts.map +1 -0
  5. package/dist/context/context_curator.js +132 -0
  6. package/dist/context/context_curator.js.map +1 -0
  7. package/dist/humans/approval_gate.d.ts +82 -0
  8. package/dist/humans/approval_gate.d.ts.map +1 -0
  9. package/dist/humans/approval_gate.js +76 -0
  10. package/dist/humans/approval_gate.js.map +1 -0
  11. package/dist/humans/ask_user.d.ts +79 -0
  12. package/dist/humans/ask_user.d.ts.map +1 -0
  13. package/dist/humans/ask_user.js +101 -0
  14. package/dist/humans/ask_user.js.map +1 -0
  15. package/dist/index.d.ts +49 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +93 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/meta/cross_check.d.ts +96 -0
  20. package/dist/meta/cross_check.d.ts.map +1 -0
  21. package/dist/meta/cross_check.js +165 -0
  22. package/dist/meta/cross_check.js.map +1 -0
  23. package/dist/meta/judge_with_stripped_ctx.d.ts +75 -0
  24. package/dist/meta/judge_with_stripped_ctx.d.ts.map +1 -0
  25. package/dist/meta/judge_with_stripped_ctx.js +151 -0
  26. package/dist/meta/judge_with_stripped_ctx.js.map +1 -0
  27. package/dist/meta/parallel_fanout.d.ts +83 -0
  28. package/dist/meta/parallel_fanout.d.ts.map +1 -0
  29. package/dist/meta/parallel_fanout.js +120 -0
  30. package/dist/meta/parallel_fanout.js.map +1 -0
  31. package/dist/meta/repair_loop.d.ts +90 -0
  32. package/dist/meta/repair_loop.d.ts.map +1 -0
  33. package/dist/meta/repair_loop.js +230 -0
  34. package/dist/meta/repair_loop.js.map +1 -0
  35. package/dist/planner/default_planner.d.ts +88 -0
  36. package/dist/planner/default_planner.d.ts.map +1 -0
  37. package/dist/planner/default_planner.js +156 -0
  38. package/dist/planner/default_planner.js.map +1 -0
  39. package/dist/primitives/file_read.d.ts +60 -0
  40. package/dist/primitives/file_read.d.ts.map +1 -0
  41. package/dist/primitives/file_read.js +68 -0
  42. package/dist/primitives/file_read.js.map +1 -0
  43. package/dist/primitives/file_write.d.ts +60 -0
  44. package/dist/primitives/file_write.d.ts.map +1 -0
  45. package/dist/primitives/file_write.js +66 -0
  46. package/dist/primitives/file_write.js.map +1 -0
  47. package/dist/primitives/llm_call.d.ts +85 -0
  48. package/dist/primitives/llm_call.d.ts.map +1 -0
  49. package/dist/primitives/llm_call.js +99 -0
  50. package/dist/primitives/llm_call.js.map +1 -0
  51. package/dist/primitives/shell_exec.d.ts +66 -0
  52. package/dist/primitives/shell_exec.d.ts.map +1 -0
  53. package/dist/primitives/shell_exec.js +106 -0
  54. package/dist/primitives/shell_exec.js.map +1 -0
  55. package/dist/primitives/tool_call.d.ts +62 -0
  56. package/dist/primitives/tool_call.d.ts.map +1 -0
  57. package/dist/primitives/tool_call.js +69 -0
  58. package/dist/primitives/tool_call.js.map +1 -0
  59. package/dist/shared/capture.d.ts +34 -0
  60. package/dist/shared/capture.d.ts.map +1 -0
  61. package/dist/shared/capture.js +124 -0
  62. package/dist/shared/capture.js.map +1 -0
  63. package/dist/shared/ctx.d.ts +14 -0
  64. package/dist/shared/ctx.d.ts.map +1 -0
  65. package/dist/shared/ctx.js +48 -0
  66. package/dist/shared/ctx.js.map +1 -0
  67. package/dist/shared/index.d.ts +4 -0
  68. package/dist/shared/index.d.ts.map +1 -0
  69. package/dist/shared/index.js +4 -0
  70. package/dist/shared/index.js.map +1 -0
  71. package/dist/shared/validator.d.ts +47 -0
  72. package/dist/shared/validator.d.ts.map +1 -0
  73. package/dist/shared/validator.js +41 -0
  74. package/dist/shared/validator.js.map +1 -0
  75. package/dist/validators/compile.d.ts +83 -0
  76. package/dist/validators/compile.d.ts.map +1 -0
  77. package/dist/validators/compile.js +126 -0
  78. package/dist/validators/compile.js.map +1 -0
  79. package/dist/validators/json_schema_validate.d.ts +72 -0
  80. package/dist/validators/json_schema_validate.d.ts.map +1 -0
  81. package/dist/validators/json_schema_validate.js +85 -0
  82. package/dist/validators/json_schema_validate.js.map +1 -0
  83. package/dist/validators/regex_check.d.ts +64 -0
  84. package/dist/validators/regex_check.d.ts.map +1 -0
  85. package/dist/validators/regex_check.js +85 -0
  86. package/dist/validators/regex_check.js.map +1 -0
  87. package/dist/validators/test_run.d.ts +74 -0
  88. package/dist/validators/test_run.d.ts.map +1 -0
  89. package/dist/validators/test_run.js +149 -0
  90. package/dist/validators/test_run.js.map +1 -0
  91. package/dist/validators/typecheck.d.ts +61 -0
  92. package/dist/validators/typecheck.d.ts.map +1 -0
  93. package/dist/validators/typecheck.js +89 -0
  94. package/dist/validators/typecheck.js.map +1 -0
  95. package/package.json +61 -0
  96. package/src/context/context_curator.ts +154 -0
  97. package/src/humans/approval_gate.ts +101 -0
  98. package/src/humans/ask_user.ts +137 -0
  99. package/src/index.ts +149 -0
  100. package/src/meta/cross_check.ts +219 -0
  101. package/src/meta/judge_with_stripped_ctx.ts +171 -0
  102. package/src/meta/parallel_fanout.ts +142 -0
  103. package/src/meta/repair_loop.ts +267 -0
  104. package/src/planner/default_planner.ts +182 -0
  105. package/src/primitives/file_read.ts +82 -0
  106. package/src/primitives/file_write.ts +80 -0
  107. package/src/primitives/llm_call.ts +113 -0
  108. package/src/primitives/shell_exec.ts +122 -0
  109. package/src/primitives/tool_call.ts +84 -0
  110. package/src/shared/capture.ts +155 -0
  111. package/src/shared/ctx.ts +45 -0
  112. package/src/shared/index.ts +17 -0
  113. package/src/shared/validator.ts +51 -0
  114. package/src/validators/compile.ts +175 -0
  115. package/src/validators/json_schema_validate.ts +103 -0
  116. package/src/validators/regex_check.ts +107 -0
  117. package/src/validators/test_run.ts +199 -0
  118. package/src/validators/typecheck.ts +121 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/validators/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * `@agenteer/node-json-schema-validate` — deterministic validator (sub-plan 03 §8).
3
+ *
4
+ * Validates a value against a Zod schema in-process. The "JSON Schema"
5
+ * name reflects the published wire contract (sub-plan 02 §2.4); we use
6
+ * Zod as the runtime validator for M2 since all stdlib consumers are
7
+ * TypeScript. ajv-backed JSON-Schema validation lands alongside the
8
+ * registry in M6.
9
+ *
10
+ * R3 note: validators emit `verdict: "fail"` as DATA on output, not as
11
+ * `Failed`. `Failed` is reserved for "couldn't run at all."
12
+ */
13
+ import { z } from "zod";
14
+ import { type Node } from "@agenteer/core";
15
+ declare const InputSchema: z.ZodObject<{
16
+ value: z.ZodUnknown;
17
+ schema: z.ZodUnknown;
18
+ }, z.core.$strip>;
19
+ declare const OutputSchema: z.ZodObject<{
20
+ verdict: z.ZodEnum<{
21
+ pass: "pass";
22
+ fail: "fail";
23
+ }>;
24
+ errors: z.ZodArray<z.ZodObject<{
25
+ path: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
26
+ message: z.ZodString;
27
+ code: z.ZodOptional<z.ZodString>;
28
+ }, z.core.$strip>>;
29
+ value: z.ZodOptional<z.ZodUnknown>;
30
+ }, z.core.$strip>;
31
+ type Input = z.infer<typeof InputSchema>;
32
+ type Output = z.infer<typeof OutputSchema>;
33
+ export declare function jsonSchemaValidateFactory(): Node<Input, Output>;
34
+ export declare const jsonSchemaValidateManifest: {
35
+ manifest_version: 1;
36
+ id: string;
37
+ version: string;
38
+ name: string;
39
+ description: string;
40
+ required_actions: string[];
41
+ required_capabilities: {
42
+ tool_use: boolean;
43
+ vision: boolean;
44
+ structured_output: "any" | "native" | "text_parse";
45
+ min_context_tokens?: number | undefined;
46
+ };
47
+ dynamic_actions: boolean;
48
+ side_effects: {
49
+ writes_fs: boolean;
50
+ network: boolean;
51
+ mutates_ctx: boolean;
52
+ emits_ctx_variants: string[];
53
+ reads_ctx_variants: string[];
54
+ };
55
+ determinism: "deterministic" | "stochastic";
56
+ tags: string[];
57
+ author: string;
58
+ license: string;
59
+ input_schema?: unknown;
60
+ output_schema?: unknown;
61
+ dynamic_action_spec?: string | undefined;
62
+ homepage?: string | undefined;
63
+ repository?: string | undefined;
64
+ planner_hints?: {
65
+ cost_tier?: "cheap" | "medium" | "expensive" | undefined;
66
+ latency_tier?: "medium" | "fast" | "slow" | undefined;
67
+ typical_use?: string | undefined;
68
+ } | undefined;
69
+ sha256?: string | undefined;
70
+ };
71
+ export {};
72
+ //# sourceMappingURL=json_schema_validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json_schema_validate.d.ts","sourceRoot":"","sources":["../../src/validators/json_schema_validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,IAAI,EAIV,MAAM,gBAAgB,CAAC;AAYxB,QAAA,MAAM,WAAW;;;iBAKf,CAAC;AAQH,QAAA,MAAM,YAAY;;;;;;;;;;;iBAIhB,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACzC,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE3C,wBAAgB,yBAAyB,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAqC/D;AAWD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAW,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * `@agenteer/node-json-schema-validate` — deterministic validator (sub-plan 03 §8).
3
+ *
4
+ * Validates a value against a Zod schema in-process. The "JSON Schema"
5
+ * name reflects the published wire contract (sub-plan 02 §2.4); we use
6
+ * Zod as the runtime validator for M2 since all stdlib consumers are
7
+ * TypeScript. ajv-backed JSON-Schema validation lands alongside the
8
+ * registry in M6.
9
+ *
10
+ * R3 note: validators emit `verdict: "fail"` as DATA on output, not as
11
+ * `Failed`. `Failed` is reserved for "couldn't run at all."
12
+ */
13
+ import { z } from "zod";
14
+ import { makeManifest, } from "@agenteer/core";
15
+ const MANIFEST = makeManifest({
16
+ id: "@agenteer/node-json-schema-validate",
17
+ name: "json_schema_validate",
18
+ description: "Validate a value against a caller-supplied schema; return verdict + errors.",
19
+ determinism: "deterministic",
20
+ tags: ["validator"],
21
+ });
22
+ // We accept either a Zod schema reference or a raw "any" schema marker.
23
+ // At M2 the common case is Zod; the JSON-Schema path ships later.
24
+ const InputSchema = z.object({
25
+ /** Value to validate. */
26
+ value: z.unknown(),
27
+ /** Zod schema (pass a z.ZodType directly through the factory; runtime accepts unknown to satisfy I/O shape). */
28
+ schema: z.unknown(),
29
+ });
30
+ const ValidationIssueSchema = z.object({
31
+ path: z.array(z.union([z.string(), z.number()])),
32
+ message: z.string(),
33
+ code: z.string().optional(),
34
+ });
35
+ const OutputSchema = z.object({
36
+ verdict: z.enum(["pass", "fail"]),
37
+ errors: z.array(ValidationIssueSchema),
38
+ value: z.unknown().optional(),
39
+ });
40
+ export function jsonSchemaValidateFactory() {
41
+ return {
42
+ manifest: MANIFEST,
43
+ inputSchema: InputSchema,
44
+ outputSchema: OutputSchema,
45
+ ctx: [],
46
+ model: null,
47
+ async execute(input) {
48
+ const { value, schema } = input.original;
49
+ if (!isZodType(schema)) {
50
+ return {
51
+ kind: "failed",
52
+ reason: "invalid_input:schema_not_zod",
53
+ retryable: false,
54
+ evidence: { verdict: "fail" },
55
+ };
56
+ }
57
+ const parsed = schema.safeParse(value);
58
+ if (parsed.success) {
59
+ return {
60
+ kind: "output",
61
+ value: { verdict: "pass", errors: [], value: parsed.data },
62
+ evidence: { verdict: "pass" },
63
+ };
64
+ }
65
+ const errors = parsed.error.issues.map((i) => ({
66
+ path: [...i.path],
67
+ message: i.message,
68
+ code: i.code,
69
+ }));
70
+ return {
71
+ kind: "output",
72
+ value: { verdict: "fail", errors },
73
+ evidence: { verdict: "fail" },
74
+ };
75
+ },
76
+ };
77
+ }
78
+ function isZodType(x) {
79
+ return (typeof x === "object" &&
80
+ x !== null &&
81
+ "_def" in x &&
82
+ typeof x.safeParse === "function");
83
+ }
84
+ export const jsonSchemaValidateManifest = MANIFEST;
85
+ //# sourceMappingURL=json_schema_validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json_schema_validate.js","sourceRoot":"","sources":["../../src/validators/json_schema_validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * `@agenteer/node-regex-check` — deterministic regex assertion validator.
3
+ *
4
+ * Runs N `must_match` / `must_not_match` patterns against an input string.
5
+ * Returns `verdict: "fail"` as data per ratified resolution — `Failed`
6
+ * is reserved for "couldn't run at all" (invalid regex, missing input).
7
+ */
8
+ import { z } from "zod";
9
+ import { type Node } from "@agenteer/core";
10
+ import { type ValidatorOutput } from "../shared/index.js";
11
+ declare const InputSchema: z.ZodObject<{
12
+ input: z.ZodString;
13
+ rules: z.ZodArray<z.ZodObject<{
14
+ id: z.ZodString;
15
+ pattern: z.ZodString;
16
+ kind: z.ZodEnum<{
17
+ must_match: "must_match";
18
+ must_not_match: "must_not_match";
19
+ }>;
20
+ flags: z.ZodOptional<z.ZodString>;
21
+ message: z.ZodOptional<z.ZodString>;
22
+ }, z.core.$strip>>;
23
+ }, z.core.$strip>;
24
+ type Input = z.input<typeof InputSchema>;
25
+ export declare function regexCheckFactory(): Node<Input, ValidatorOutput>;
26
+ export declare const regexCheckManifest: {
27
+ manifest_version: 1;
28
+ id: string;
29
+ version: string;
30
+ name: string;
31
+ description: string;
32
+ required_actions: string[];
33
+ required_capabilities: {
34
+ tool_use: boolean;
35
+ vision: boolean;
36
+ structured_output: "any" | "native" | "text_parse";
37
+ min_context_tokens?: number | undefined;
38
+ };
39
+ dynamic_actions: boolean;
40
+ side_effects: {
41
+ writes_fs: boolean;
42
+ network: boolean;
43
+ mutates_ctx: boolean;
44
+ emits_ctx_variants: string[];
45
+ reads_ctx_variants: string[];
46
+ };
47
+ determinism: "deterministic" | "stochastic";
48
+ tags: string[];
49
+ author: string;
50
+ license: string;
51
+ input_schema?: unknown;
52
+ output_schema?: unknown;
53
+ dynamic_action_spec?: string | undefined;
54
+ homepage?: string | undefined;
55
+ repository?: string | undefined;
56
+ planner_hints?: {
57
+ cost_tier?: "cheap" | "medium" | "expensive" | undefined;
58
+ latency_tier?: "medium" | "fast" | "slow" | undefined;
59
+ typical_use?: string | undefined;
60
+ } | undefined;
61
+ sha256?: string | undefined;
62
+ };
63
+ export {};
64
+ //# sourceMappingURL=regex_check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex_check.d.ts","sourceRoot":"","sources":["../../src/validators/regex_check.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,IAAI,EAIV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,oBAAoB,CAAC;AAqB5B,QAAA,MAAM,WAAW;;;;;;;;;;;;iBAGf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAsDhE;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAW,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * `@agenteer/node-regex-check` — deterministic regex assertion validator.
3
+ *
4
+ * Runs N `must_match` / `must_not_match` patterns against an input string.
5
+ * Returns `verdict: "fail"` as data per ratified resolution — `Failed`
6
+ * is reserved for "couldn't run at all" (invalid regex, missing input).
7
+ */
8
+ import { z } from "zod";
9
+ import { makeManifest, } from "@agenteer/core";
10
+ import { failOutput, passOutput, ValidatorOutputSchema, } from "../shared/index.js";
11
+ const MANIFEST = makeManifest({
12
+ id: "@agenteer/node-regex-check",
13
+ name: "regex_check",
14
+ description: "Assert an input satisfies a set of must-match / must-not-match regex rules.",
15
+ determinism: "deterministic",
16
+ tags: ["validator"],
17
+ });
18
+ const RuleSchema = z.object({
19
+ id: z.string().min(1),
20
+ pattern: z.string().min(1),
21
+ kind: z.enum(["must_match", "must_not_match"]),
22
+ /** Regex flags (e.g. `i`, `m`). Invalid flags → Failed. */
23
+ flags: z.string().optional(),
24
+ /** Human-readable message used when this rule fails. */
25
+ message: z.string().optional(),
26
+ });
27
+ const InputSchema = z.object({
28
+ input: z.string(),
29
+ rules: z.array(RuleSchema).min(1),
30
+ });
31
+ export function regexCheckFactory() {
32
+ return {
33
+ manifest: MANIFEST,
34
+ inputSchema: InputSchema,
35
+ outputSchema: ValidatorOutputSchema,
36
+ ctx: [],
37
+ model: null,
38
+ async execute(input) {
39
+ const { input: text, rules } = input.original;
40
+ const issues = [];
41
+ for (const rule of rules) {
42
+ let re;
43
+ try {
44
+ re = new RegExp(rule.pattern, rule.flags);
45
+ }
46
+ catch (err) {
47
+ return {
48
+ kind: "failed",
49
+ reason: `invalid_regex:${rule.id}`,
50
+ retryable: false,
51
+ details: { error: err instanceof Error ? err.message : String(err) },
52
+ evidence: { verdict: "fail" },
53
+ };
54
+ }
55
+ const matched = re.test(text);
56
+ if (rule.kind === "must_match" && !matched) {
57
+ issues.push({
58
+ path: rule.id,
59
+ message: rule.message ?? `expected /${rule.pattern}/ to match`,
60
+ code: "must_match",
61
+ severity: "error",
62
+ });
63
+ }
64
+ else if (rule.kind === "must_not_match" && matched) {
65
+ issues.push({
66
+ path: rule.id,
67
+ message: rule.message ?? `expected /${rule.pattern}/ NOT to match`,
68
+ code: "must_not_match",
69
+ severity: "error",
70
+ });
71
+ }
72
+ }
73
+ const out = issues.length === 0
74
+ ? passOutput(`all ${rules.length} regex rule(s) passed`)
75
+ : failOutput(issues, `${issues.length} of ${rules.length} regex rule(s) failed`);
76
+ return {
77
+ kind: "output",
78
+ value: out,
79
+ evidence: { verdict: out.verdict },
80
+ };
81
+ },
82
+ };
83
+ }
84
+ export const regexCheckManifest = MANIFEST;
85
+ //# sourceMappingURL=regex_check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex_check.js","sourceRoot":"","sources":["../../src/validators/regex_check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * `@agenteer/node-test-run` — deterministic test-suite validator
3
+ * (sub-plan 03 §7).
4
+ *
5
+ * M4 ships a vitest adapter. Runs `vitest run --reporter=json` in the
6
+ * declared cwd, parses per-test results, surfaces failures as structured
7
+ * issues. Verdict is DATA; `Failed` is reserved for "couldn't run at all"
8
+ * (binary missing, denylist, capability denied).
9
+ */
10
+ import { z } from "zod";
11
+ import { type Node } from "@agenteer/core";
12
+ import { type ValidatorIssue, type ValidatorOutput } from "../shared/index.js";
13
+ declare const InputSchema: z.ZodObject<{
14
+ framework: z.ZodEnum<{
15
+ vitest: "vitest";
16
+ }>;
17
+ cwd: z.ZodString;
18
+ filter: z.ZodOptional<z.ZodString>;
19
+ flags: z.ZodDefault<z.ZodArray<z.ZodString>>;
20
+ timeout_ms: z.ZodDefault<z.ZodNumber>;
21
+ }, z.core.$strip>;
22
+ type Input = z.input<typeof InputSchema>;
23
+ export declare function testRunFactory(): Node<Input, ValidatorOutput>;
24
+ export declare const testRunManifest: {
25
+ manifest_version: 1;
26
+ id: string;
27
+ version: string;
28
+ name: string;
29
+ description: string;
30
+ required_actions: string[];
31
+ required_capabilities: {
32
+ tool_use: boolean;
33
+ vision: boolean;
34
+ structured_output: "any" | "native" | "text_parse";
35
+ min_context_tokens?: number | undefined;
36
+ };
37
+ dynamic_actions: boolean;
38
+ side_effects: {
39
+ writes_fs: boolean;
40
+ network: boolean;
41
+ mutates_ctx: boolean;
42
+ emits_ctx_variants: string[];
43
+ reads_ctx_variants: string[];
44
+ };
45
+ determinism: "deterministic" | "stochastic";
46
+ tags: string[];
47
+ author: string;
48
+ license: string;
49
+ input_schema?: unknown;
50
+ output_schema?: unknown;
51
+ dynamic_action_spec?: string | undefined;
52
+ homepage?: string | undefined;
53
+ repository?: string | undefined;
54
+ planner_hints?: {
55
+ cost_tier?: "cheap" | "medium" | "expensive" | undefined;
56
+ latency_tier?: "medium" | "fast" | "slow" | undefined;
57
+ typical_use?: string | undefined;
58
+ } | undefined;
59
+ sha256?: string | undefined;
60
+ };
61
+ export interface TestReport {
62
+ testCount: number;
63
+ issues: ValidatorIssue[];
64
+ }
65
+ export interface TestAdapter {
66
+ readonly framework: string;
67
+ command(opts: {
68
+ filter?: string;
69
+ flags: readonly string[];
70
+ }): string;
71
+ parseReport(stdout: string, stderr: string): TestReport;
72
+ }
73
+ export {};
74
+ //# sourceMappingURL=test_run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_run.d.ts","sourceRoot":"","sources":["../../src/validators/test_run.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,IAAI,EAMV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAa5B,QAAA,MAAM,WAAW;;;;;;;;iBAOf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,wBAAgB,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAqE7D;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAW,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM,CAAC;IACrE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;CACzD"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * `@agenteer/node-test-run` — deterministic test-suite validator
3
+ * (sub-plan 03 §7).
4
+ *
5
+ * M4 ships a vitest adapter. Runs `vitest run --reporter=json` in the
6
+ * declared cwd, parses per-test results, surfaces failures as structured
7
+ * issues. Verdict is DATA; `Failed` is reserved for "couldn't run at all"
8
+ * (binary missing, denylist, capability denied).
9
+ */
10
+ import { z } from "zod";
11
+ import { makeManifest, authorizeOperation, } from "@agenteer/core";
12
+ import { failOutput, passOutput, runCommand, tailOf, ValidatorOutputSchema, } from "../shared/index.js";
13
+ const MANIFEST = makeManifest({
14
+ id: "@agenteer/node-test-run",
15
+ name: "test_run",
16
+ description: "Run a test suite (v1: vitest). Returns structured per-test failures.",
17
+ determinism: "deterministic",
18
+ required_actions: ["shell.exec:"],
19
+ dynamic_actions: true,
20
+ dynamic_action_spec: "fs.read:${input.cwd}",
21
+ tags: ["validator"],
22
+ });
23
+ const InputSchema = z.object({
24
+ framework: z.enum(["vitest"]),
25
+ cwd: z.string().min(1),
26
+ /** Optional test name or path filter. */
27
+ filter: z.string().optional(),
28
+ flags: z.array(z.string()).default([]),
29
+ timeout_ms: z.number().int().min(1).max(1_800_000).default(600_000),
30
+ });
31
+ export function testRunFactory() {
32
+ return {
33
+ manifest: MANIFEST,
34
+ inputSchema: InputSchema,
35
+ outputSchema: ValidatorOutputSchema,
36
+ ctx: [],
37
+ model: null,
38
+ async execute(input, handle) {
39
+ const { framework, cwd, filter, flags } = input.original;
40
+ const timeout_ms = input.original.timeout_ms ?? 600_000;
41
+ try {
42
+ authorizeOperation(handle.granted, { kind: "shell.exec" });
43
+ }
44
+ catch (err) {
45
+ return {
46
+ kind: "failed",
47
+ reason: `permission_denied: ${err instanceof Error ? err.message : String(err)}`,
48
+ retryable: false,
49
+ evidence: { verdict: "fail" },
50
+ };
51
+ }
52
+ const adapter = ADAPTERS[framework];
53
+ const command = adapter.command({ ...(filter !== undefined ? { filter } : {}), flags: flags ?? [] });
54
+ try {
55
+ const r = await runCommand(command, { cwd, timeout_ms, signal: handle.signal });
56
+ const parsed = adapter.parseReport(r.stdout, r.stderr);
57
+ const failed = parsed.issues.filter((i) => i.severity === "error");
58
+ const verdict = r.exit_code === 0 && failed.length === 0 ? "pass" : "fail";
59
+ const out = verdict === "pass"
60
+ ? {
61
+ ...passOutput(`${framework} passed (${parsed.testCount} tests, ${r.duration_ms}ms)`),
62
+ exit_code: r.exit_code,
63
+ }
64
+ : failOutput(parsed.issues.length
65
+ ? parsed.issues
66
+ : [
67
+ {
68
+ message: `${framework} exited ${r.exit_code}${r.timed_out ? " (timed out)" : ""}`,
69
+ severity: "error",
70
+ },
71
+ ], `${framework}: ${failed.length} test(s) failed`, {
72
+ exit_code: r.exit_code,
73
+ stdout_tail: tailOf(r.stdout),
74
+ stderr_tail: tailOf(r.stderr),
75
+ });
76
+ return { kind: "output", value: out, evidence: { verdict } };
77
+ }
78
+ catch (err) {
79
+ return {
80
+ kind: "failed",
81
+ reason: err instanceof Error ? err.message : String(err),
82
+ retryable: true,
83
+ evidence: { verdict: "fail" },
84
+ };
85
+ }
86
+ },
87
+ };
88
+ }
89
+ export const testRunManifest = MANIFEST;
90
+ /** Parse Vitest's `--reporter=json` output when it's present; fall back to stdout. */
91
+ const VITEST_ADAPTER = {
92
+ framework: "vitest",
93
+ command(opts) {
94
+ const filter = opts.filter ? ` ${JSON.stringify(opts.filter)}` : "";
95
+ const extra = opts.flags.join(" ");
96
+ return `npx -y vitest run --reporter=json${filter} ${extra}`.replace(/\s+/g, " ").trim();
97
+ },
98
+ parseReport(stdout, _stderr) {
99
+ const json = extractLastJson(stdout);
100
+ if (!json)
101
+ return { testCount: 0, issues: [] };
102
+ const issues = [];
103
+ let testCount = 0;
104
+ const testResults = json.testResults ??
105
+ [];
106
+ for (const file of testResults) {
107
+ for (const t of file.testResults ?? []) {
108
+ testCount += 1;
109
+ if (t.status === "failed") {
110
+ issues.push({
111
+ path: `${file.name ?? "<file>"}::${t.fullName ?? t.name ?? "<test>"}`,
112
+ message: (t.failureMessages ?? ["failed"]).join("\n"),
113
+ code: "test_failed",
114
+ severity: "error",
115
+ });
116
+ }
117
+ }
118
+ }
119
+ return { testCount, issues };
120
+ },
121
+ };
122
+ const ADAPTERS = {
123
+ vitest: VITEST_ADAPTER,
124
+ };
125
+ function extractLastJson(text) {
126
+ // Vitest prints the JSON report on its own line; a few noisy warnings
127
+ // can precede it. Walk backwards and take the last balanced `{...}`.
128
+ const idx = text.lastIndexOf("}");
129
+ if (idx < 0)
130
+ return null;
131
+ let depth = 0;
132
+ for (let i = idx; i >= 0; i -= 1) {
133
+ const ch = text[i];
134
+ if (ch === "}")
135
+ depth += 1;
136
+ else if (ch === "{")
137
+ depth -= 1;
138
+ if (depth === 0) {
139
+ try {
140
+ return JSON.parse(text.slice(i, idx + 1));
141
+ }
142
+ catch {
143
+ return null;
144
+ }
145
+ }
146
+ }
147
+ return null;
148
+ }
149
+ //# sourceMappingURL=test_run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_run.js","sourceRoot":"","sources":["../../src/validators/test_run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * `@agenteer/node-typecheck` — thin wrapper over `compile` with
3
+ * types-only flags (sub-plan 03 §10).
4
+ *
5
+ * v1 supports TypeScript (`tsc --noEmit --strict`). The wrapper exists
6
+ * separately from `compile` so planners can distinguish "types only"
7
+ * from "full build"; the underlying adapter is shared.
8
+ */
9
+ import { z } from "zod";
10
+ import { type Node } from "@agenteer/core";
11
+ import { type ValidatorOutput } from "../shared/index.js";
12
+ declare const InputSchema: z.ZodObject<{
13
+ language: z.ZodEnum<{
14
+ typescript: "typescript";
15
+ }>;
16
+ cwd: z.ZodString;
17
+ tsconfig: z.ZodOptional<z.ZodString>;
18
+ strict: z.ZodDefault<z.ZodBoolean>;
19
+ timeout_ms: z.ZodDefault<z.ZodNumber>;
20
+ }, z.core.$strip>;
21
+ type Input = z.input<typeof InputSchema>;
22
+ export declare function typecheckFactory(): Node<Input, ValidatorOutput>;
23
+ export declare const typecheckManifest: {
24
+ manifest_version: 1;
25
+ id: string;
26
+ version: string;
27
+ name: string;
28
+ description: string;
29
+ required_actions: string[];
30
+ required_capabilities: {
31
+ tool_use: boolean;
32
+ vision: boolean;
33
+ structured_output: "any" | "native" | "text_parse";
34
+ min_context_tokens?: number | undefined;
35
+ };
36
+ dynamic_actions: boolean;
37
+ side_effects: {
38
+ writes_fs: boolean;
39
+ network: boolean;
40
+ mutates_ctx: boolean;
41
+ emits_ctx_variants: string[];
42
+ reads_ctx_variants: string[];
43
+ };
44
+ determinism: "deterministic" | "stochastic";
45
+ tags: string[];
46
+ author: string;
47
+ license: string;
48
+ input_schema?: unknown;
49
+ output_schema?: unknown;
50
+ dynamic_action_spec?: string | undefined;
51
+ homepage?: string | undefined;
52
+ repository?: string | undefined;
53
+ planner_hints?: {
54
+ cost_tier?: "cheap" | "medium" | "expensive" | undefined;
55
+ latency_tier?: "medium" | "fast" | "slow" | undefined;
56
+ typical_use?: string | undefined;
57
+ } | undefined;
58
+ sha256?: string | undefined;
59
+ };
60
+ export {};
61
+ //# sourceMappingURL=typecheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../../src/validators/typecheck.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,IAAI,EAMV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAa5B,QAAA,MAAM,WAAW;;;;;;;;iBAMf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAIzC,wBAAgB,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAkE/D;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAW,CAAC"}