@smartmemory/stratum 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 (81) hide show
  1. package/dist/cli/guard.js +91 -0
  2. package/dist/cli/guard.js.map +1 -0
  3. package/dist/cli/mcp_install.js +302 -0
  4. package/dist/cli/mcp_install.js.map +1 -0
  5. package/dist/cli/query_gate.js +316 -0
  6. package/dist/cli/query_gate.js.map +1 -0
  7. package/dist/cli/stratum.js +291 -0
  8. package/dist/cli/stratum.js.map +1 -0
  9. package/dist/connectors/background.js +531 -0
  10. package/dist/connectors/background.js.map +1 -0
  11. package/dist/connectors/base.js +12 -0
  12. package/dist/connectors/base.js.map +1 -0
  13. package/dist/connectors/claude-bg-worker.js +99 -0
  14. package/dist/connectors/claude-bg-worker.js.map +1 -0
  15. package/dist/connectors/claude.js +170 -0
  16. package/dist/connectors/claude.js.map +1 -0
  17. package/dist/connectors/codex.js +319 -0
  18. package/dist/connectors/codex.js.map +1 -0
  19. package/dist/connectors/index.js +7 -0
  20. package/dist/connectors/index.js.map +1 -0
  21. package/dist/connectors/proc_identity.js +90 -0
  22. package/dist/connectors/proc_identity.js.map +1 -0
  23. package/dist/connectors/runner.js +63 -0
  24. package/dist/connectors/runner.js.map +1 -0
  25. package/dist/contracts/events.json +65 -0
  26. package/dist/contracts/mcp-surface.json +215 -0
  27. package/dist/engine/checkpoint.js +50 -0
  28. package/dist/engine/checkpoint.js.map +1 -0
  29. package/dist/engine/engine.js +2356 -0
  30. package/dist/engine/engine.js.map +1 -0
  31. package/dist/engine/ledger.js +36 -0
  32. package/dist/engine/ledger.js.map +1 -0
  33. package/dist/engine/state.js +42 -0
  34. package/dist/engine/state.js.map +1 -0
  35. package/dist/eval/expr.js +679 -0
  36. package/dist/eval/expr.js.map +1 -0
  37. package/dist/eval/files.js +130 -0
  38. package/dist/eval/files.js.map +1 -0
  39. package/dist/guard/canonical.js +116 -0
  40. package/dist/guard/canonical.js.map +1 -0
  41. package/dist/guard/errors.js +80 -0
  42. package/dist/guard/errors.js.map +1 -0
  43. package/dist/guard/evidence.js +475 -0
  44. package/dist/guard/evidence.js.map +1 -0
  45. package/dist/guard/fingerprint.js +13 -0
  46. package/dist/guard/fingerprint.js.map +1 -0
  47. package/dist/guard/lock.js +360 -0
  48. package/dist/guard/lock.js.map +1 -0
  49. package/dist/guard/store.js +396 -0
  50. package/dist/guard/store.js.map +1 -0
  51. package/dist/guard/transition.js +477 -0
  52. package/dist/guard/transition.js.map +1 -0
  53. package/dist/ir/refs.js +69 -0
  54. package/dist/ir/refs.js.map +1 -0
  55. package/dist/ir/schema.js +123 -0
  56. package/dist/ir/schema.js.map +1 -0
  57. package/dist/ir/validate.js +595 -0
  58. package/dist/ir/validate.js.map +1 -0
  59. package/dist/judge/codex_judged.js +85 -0
  60. package/dist/judge/codex_judged.js.map +1 -0
  61. package/dist/judge/fixture_judged.js +62 -0
  62. package/dist/judge/fixture_judged.js.map +1 -0
  63. package/dist/judge/judged.js +89 -0
  64. package/dist/judge/judged.js.map +1 -0
  65. package/dist/judge/pricing.js +22 -0
  66. package/dist/judge/pricing.js.map +1 -0
  67. package/dist/mcp/contracts.js +162 -0
  68. package/dist/mcp/contracts.js.map +1 -0
  69. package/dist/mcp/main.js +7 -0
  70. package/dist/mcp/main.js.map +1 -0
  71. package/dist/mcp/server.js +370 -0
  72. package/dist/mcp/server.js.map +1 -0
  73. package/dist/migrate/check.js +164 -0
  74. package/dist/migrate/check.js.map +1 -0
  75. package/dist/parallel/certificate.js +37 -0
  76. package/dist/parallel/certificate.js.map +1 -0
  77. package/dist/parallel/evaluate.js +73 -0
  78. package/dist/parallel/evaluate.js.map +1 -0
  79. package/dist/speckit/compiler.js +162 -0
  80. package/dist/speckit/compiler.js.map +1 -0
  81. package/package.json +47 -0
@@ -0,0 +1,123 @@
1
+ import { z } from "zod";
2
+ import { PATH_FIELD_PATTERN, STEP_ID_PATTERN } from "./refs.js";
3
+ export const StepIdSchema = z.string().regex(STEP_ID_PATTERN, "invalid step id");
4
+ export const ContractFieldNameSchema = z.string().regex(PATH_FIELD_PATTERN, "invalid contract field name");
5
+ export const BudgetSchema = z.object({
6
+ usd: z.number().positive().optional(),
7
+ tokens: z.number().int().positive().optional(),
8
+ dispatches: z.number().int().positive().optional(),
9
+ ms: z.number().int().positive().optional(),
10
+ }).strict().refine((budget) => Object.keys(budget).length > 0, "budget requires at least one key");
11
+ export const EnsurePredicateSchema = z.union([
12
+ z.object({ expr: z.string() }).strict(),
13
+ z.object({ file_exists: z.string() }).strict(),
14
+ z.object({ file_contains: z.object({ path: z.string(), text: z.string() }).strict() }).strict(),
15
+ z.object({ judged: z.object({ statement: z.string(), stakes: z.enum(["cheap", "default", "paranoid"]) }).strict() }).strict(),
16
+ ]);
17
+ export const IterateSchema = z.object({
18
+ max: z.number().int().positive(),
19
+ until: z.string(),
20
+ }).strict();
21
+ export const GateSchema = z.object({
22
+ on_approve: StepIdSchema.nullable(),
23
+ on_revise: StepIdSchema.nullable(),
24
+ on_kill: StepIdSchema.nullable(),
25
+ max_rounds: z.number().int().positive().optional(),
26
+ }).strict();
27
+ export const FanoutStageSchema = z.object({
28
+ do: z.string(),
29
+ agent: z.enum(["claude", "codex"]).optional(),
30
+ out: z.string().optional(),
31
+ ensure: z.array(EnsurePredicateSchema).optional(),
32
+ attempts: z.number().int().positive().optional(),
33
+ when: z.string().optional(),
34
+ }).strict();
35
+ export const FanoutSchema = z.object({
36
+ over: z.string(),
37
+ steps: z.array(FanoutStageSchema).min(1),
38
+ concurrency: z.number().int().positive(),
39
+ isolation: z.enum(["worktree", "none"]),
40
+ require: z.union([z.literal("all"), z.literal("any"), z.number().int().positive()]),
41
+ merge: z.literal("sequential"),
42
+ pre_merge: z.array(z.string()).optional(),
43
+ dispatch: z.enum(["engine", "consumer"]).default("engine"),
44
+ }).strict();
45
+ const StepShape = z.object({
46
+ id: StepIdSchema,
47
+ after: z.array(StepIdSchema).optional(),
48
+ when: z.string().optional(),
49
+ do: z.string().optional(),
50
+ set: z.record(z.string()).optional(),
51
+ agent: z.enum(["claude", "codex"]).optional(),
52
+ out: z.string().optional(),
53
+ ensure: z.array(EnsurePredicateSchema).optional(),
54
+ attempts: z.number().int().positive().optional(),
55
+ iterate: IterateSchema.optional(),
56
+ budget: BudgetSchema.optional(),
57
+ on_fail: StepIdSchema.optional(),
58
+ gate: GateSchema.optional(),
59
+ fanout: FanoutSchema.optional(),
60
+ run: z.string().optional(),
61
+ with: z.record(z.unknown()).optional(),
62
+ }).strict();
63
+ const COMMON_STEP_FIELDS = new Set(["id", "after", "when"]);
64
+ const STEP_FIELDS = {
65
+ do: ["id", "after", "when", "do", "agent", "out", "ensure", "attempts", "iterate", "budget", "on_fail"],
66
+ set: ["id", "after", "when", "set", "out", "ensure"],
67
+ gate: ["id", "after", "when", "gate"],
68
+ fanout: ["id", "after", "when", "fanout", "attempts", "budget", "on_fail"],
69
+ run: ["id", "after", "when", "run", "with", "budget", "on_fail"],
70
+ };
71
+ export const StepSchema = StepShape.superRefine((step, ctx) => {
72
+ const kinds = ["do", "set", "gate", "fanout", "run"].filter((key) => step[key] !== undefined);
73
+ if (kinds.length !== 1) {
74
+ ctx.addIssue({ code: z.ZodIssueCode.custom, message: "E2_CONSTRUCT_MIX" });
75
+ return;
76
+ }
77
+ const kind = kinds[0];
78
+ const allowed = new Set(STEP_FIELDS[kind]);
79
+ for (const key of Object.keys(step)) {
80
+ if (!allowed.has(key) && !COMMON_STEP_FIELDS.has(key)) {
81
+ ctx.addIssue({ code: z.ZodIssueCode.custom, path: [key], message: "E2_FIELD_FOR_KIND" });
82
+ }
83
+ }
84
+ if (kind === "set" && step.out === undefined) {
85
+ ctx.addIssue({ code: z.ZodIssueCode.custom, path: ["out"], message: "required for set" });
86
+ }
87
+ if (kind === "run" && step.with === undefined) {
88
+ ctx.addIssue({ code: z.ZodIssueCode.custom, path: ["with"], message: "required for run" });
89
+ }
90
+ });
91
+ // z.record() drops an own __proto__ key during structural parsing, which
92
+ // would SILENTLY lose a declared field (anti-E2). Reserved names are
93
+ // therefore rejected loudly before the record parse ever runs.
94
+ export const RESERVED_FIELD_NAMES = new Set(["__proto__", "constructor", "prototype"]);
95
+ const rejectReservedFields = (value, ctx) => {
96
+ if (typeof value !== "object" || value === null)
97
+ return;
98
+ for (const key of Object.getOwnPropertyNames(value)) {
99
+ if (RESERVED_FIELD_NAMES.has(key)) {
100
+ ctx.addIssue({ code: z.ZodIssueCode.custom, path: [key], message: "E2_RESERVED_FIELD" });
101
+ }
102
+ }
103
+ };
104
+ export const ContractSchema = z.custom((value) => typeof value === "object" && value !== null && !Array.isArray(value), "contract must be an object").superRefine(rejectReservedFields).pipe(z.record(ContractFieldNameSchema, z.string()));
105
+ export const ContractsSchema = z.record(z.string().regex(PATH_FIELD_PATTERN), ContractSchema);
106
+ export const FlowOutputSchema = z.object({
107
+ from: z.string(),
108
+ contract: z.string(),
109
+ }).strict();
110
+ export const FlowSchema = z.object({
111
+ input: ContractSchema,
112
+ output: FlowOutputSchema,
113
+ budget: BudgetSchema.optional(),
114
+ max_rounds: z.number().int().positive().optional(),
115
+ steps: z.array(StepSchema),
116
+ }).strict();
117
+ export const FlowMapSchema = z.object({ entry: z.string() }).catchall(FlowSchema);
118
+ export const SpecificationSchema = z.object({
119
+ version: z.literal(1),
120
+ contracts: ContractsSchema,
121
+ flows: FlowMapSchema,
122
+ }).strict();
123
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"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"}