@x12i/memorix-scoper-contracts 1.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.
Files changed (62) hide show
  1. package/README.md +9 -0
  2. package/dist/errors.d.ts +24 -0
  3. package/dist/errors.d.ts.map +1 -0
  4. package/dist/errors.js +70 -0
  5. package/dist/errors.js.map +1 -0
  6. package/dist/evidence.d.ts +2 -0
  7. package/dist/evidence.d.ts.map +1 -0
  8. package/dist/evidence.js +2 -0
  9. package/dist/evidence.js.map +1 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +3 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/schemas/catalog.d.ts +441 -0
  15. package/dist/schemas/catalog.d.ts.map +1 -0
  16. package/dist/schemas/catalog.js +55 -0
  17. package/dist/schemas/catalog.js.map +1 -0
  18. package/dist/schemas/evidence.d.ts +602 -0
  19. package/dist/schemas/evidence.d.ts.map +1 -0
  20. package/dist/schemas/evidence.js +83 -0
  21. package/dist/schemas/evidence.js.map +1 -0
  22. package/dist/schemas/index.d.ts +6 -0
  23. package/dist/schemas/index.d.ts.map +1 -0
  24. package/dist/schemas/index.js +6 -0
  25. package/dist/schemas/index.js.map +1 -0
  26. package/dist/schemas/nexum-persist.d.ts +47 -0
  27. package/dist/schemas/nexum-persist.d.ts.map +1 -0
  28. package/dist/schemas/nexum-persist.js +27 -0
  29. package/dist/schemas/nexum-persist.js.map +1 -0
  30. package/dist/schemas/profile.d.ts +69 -0
  31. package/dist/schemas/profile.d.ts.map +1 -0
  32. package/dist/schemas/profile.js +15 -0
  33. package/dist/schemas/profile.js.map +1 -0
  34. package/dist/schemas/request.d.ts +296 -0
  35. package/dist/schemas/request.d.ts.map +1 -0
  36. package/dist/schemas/request.js +98 -0
  37. package/dist/schemas/request.js.map +1 -0
  38. package/dist/schemas.d.ts +1077 -0
  39. package/dist/schemas.d.ts.map +1 -0
  40. package/dist/schemas.js +199 -0
  41. package/dist/schemas.js.map +1 -0
  42. package/dist/schemas.test.d.ts +2 -0
  43. package/dist/schemas.test.d.ts.map +1 -0
  44. package/dist/schemas.test.js +29 -0
  45. package/dist/schemas.test.js.map +1 -0
  46. package/package.json +53 -0
  47. package/schemas/CatalogEntry.json +17 -0
  48. package/schemas/CatalogEntry.schema.json +157 -0
  49. package/schemas/EvidenceBundle.json +15 -0
  50. package/schemas/EvidenceBundle.schema.json +469 -0
  51. package/schemas/EvidenceItem.json +15 -0
  52. package/schemas/EvidenceRef.json +9 -0
  53. package/schemas/EvidenceSelection.schema.json +83 -0
  54. package/schemas/RetrievalPlan.json +13 -0
  55. package/schemas/RetrievalPlan.schema.json +73 -0
  56. package/schemas/RetrievalStep.json +14 -0
  57. package/schemas/ScopeRequest.json +28 -0
  58. package/schemas/ScopeRequest.schema.json +108 -0
  59. package/schemas/ScoperBudgets.json +14 -0
  60. package/schemas/ScoperProfile.json +17 -0
  61. package/schemas/TrustedExecutionContext.json +22 -0
  62. package/schemas/TrustedExecutionContext.schema.json +129 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ import { z } from "zod";
2
+ import { EvidenceItemSchema } from "./evidence.js";
3
+ const idSchema = z.string().min(1).max(256);
4
+ const objectiveSchema = z.string().min(1).max(4000);
5
+ export const ScoperBudgetsSchema = z.object({
6
+ maxWallTimeMs: z.number().int().positive(),
7
+ maxSdkCalls: z.number().int().positive(),
8
+ maxPages: z.number().int().positive(),
9
+ maxRecords: z.number().int().positive(),
10
+ maxBytes: z.number().int().positive(),
11
+ maxEvidenceItems: z.number().int().positive(),
12
+ maxRelationshipDepth: z.number().int().nonnegative(),
13
+ maxReasoningRounds: z.number().int().positive(),
14
+ maxParallelCalls: z.number().int().positive(),
15
+ });
16
+ export const ScopeRequestSchema = z
17
+ .object({
18
+ objective: objectiveSchema,
19
+ seeds: z
20
+ .array(z.object({ kind: z.string().min(1).max(128), id: idSchema }))
21
+ .max(50)
22
+ .optional(),
23
+ domains: z.array(z.string().min(1).max(128)).max(20).optional(),
24
+ timeRange: z
25
+ .object({
26
+ from: z.string().datetime(),
27
+ to: z.string().datetime(),
28
+ })
29
+ .optional(),
30
+ freshness: z
31
+ .object({
32
+ includeStable: z.boolean().optional(),
33
+ includeLive: z.boolean().optional(),
34
+ })
35
+ .optional(),
36
+ requestedLimits: z
37
+ .object({
38
+ maxEvidenceItems: z.number().int().positive().max(10_000).optional(),
39
+ maxRelationshipDepth: z.number().int().nonnegative().max(32).optional(),
40
+ deadlineMs: z.number().int().positive().max(600_000).optional(),
41
+ })
42
+ .optional(),
43
+ responseMode: z.literal("evidence-bundle").optional(),
44
+ })
45
+ .superRefine((val, ctx) => {
46
+ if (val.timeRange && Date.parse(val.timeRange.from) > Date.parse(val.timeRange.to)) {
47
+ ctx.addIssue({
48
+ code: z.ZodIssueCode.custom,
49
+ message: "timeRange.from must be <= timeRange.to",
50
+ path: ["timeRange"],
51
+ });
52
+ }
53
+ const forbidden = [
54
+ "orgId",
55
+ "agentIds",
56
+ "callerId",
57
+ "credentials",
58
+ "token",
59
+ "host",
60
+ "port",
61
+ "url",
62
+ "databaseName",
63
+ "generationPin",
64
+ ];
65
+ for (const key of forbidden) {
66
+ if (Object.prototype.hasOwnProperty.call(val, key)) {
67
+ ctx.addIssue({
68
+ code: z.ZodIssueCode.custom,
69
+ message: `ScopeRequest must not contain ${key}`,
70
+ path: [key],
71
+ });
72
+ }
73
+ }
74
+ });
75
+ export const TrustedExecutionContextSchema = z.object({
76
+ orgId: z.string().min(1),
77
+ agentIds: z.array(z.string().min(1)).min(1),
78
+ callerId: z.string().min(1),
79
+ principalId: z.string().optional(),
80
+ permissions: z.array(z.string()),
81
+ classificationCeiling: z.string().min(1),
82
+ traceId: z.string().min(1),
83
+ deadlineAt: z.string().datetime(),
84
+ budgets: ScoperBudgetsSchema,
85
+ flags: z.object({
86
+ bagsOnly: z.boolean(),
87
+ nexumExploreEnabled: z.boolean(),
88
+ }),
89
+ });
90
+ export const ConflictItemSchema = z.object({
91
+ description: z.string(),
92
+ evidenceIds: z.array(z.string()),
93
+ resolution: z.enum(["unresolved", "source-precedence", "different-context"]),
94
+ });
95
+ export const UnknownItemSchema = z.object({
96
+ question: z.string(),
97
+ reason: z.string(),
98
+ missingDatasets: z.array(z.string()).optional(),
99
+ });
100
+ export const WarningItemSchema = z.object({
101
+ code: z.string(),
102
+ message: z.string(),
103
+ });
104
+ export const ContinuationSchema = z.object({
105
+ kind: z.enum(["cursor", "refinement-required", "budget-exhausted"]),
106
+ token: z.string().optional(),
107
+ suggestion: z.string().optional(),
108
+ });
109
+ export const EvidenceBundleSchema = z.object({
110
+ requestId: z.string(),
111
+ status: z.enum(["complete", "partial", "unavailable", "rejected"]),
112
+ interpretation: z.object({
113
+ objective: z.string(),
114
+ assumptions: z.array(z.string()),
115
+ }),
116
+ execution: z.object({
117
+ catalogVersion: z.string(),
118
+ profiles: z.array(z.object({ id: z.string(), version: z.string() })),
119
+ surfaces: z.array(z.enum(["estate-bag", "subject", "knowledge-explore"])),
120
+ }),
121
+ evidence: z.array(EvidenceItemSchema),
122
+ coverage: z.object({
123
+ complete: z.boolean(),
124
+ datasetsRead: z.array(z.string()),
125
+ datasetsSkipped: z.array(z.object({ id: z.string(), reason: z.string() })),
126
+ countChecks: z.array(z.object({
127
+ dataset: z.string(),
128
+ expected: z.number().optional(),
129
+ actual: z.number(),
130
+ matched: z.boolean(),
131
+ })),
132
+ }),
133
+ conflicts: z.array(ConflictItemSchema),
134
+ unknowns: z.array(UnknownItemSchema),
135
+ warnings: z.array(WarningItemSchema),
136
+ continuation: ContinuationSchema.nullable().optional(),
137
+ traceId: z.string(),
138
+ });
139
+ export const RetrievalStepSchema = z.object({
140
+ stepId: z.string().min(1),
141
+ operationId: z.string().min(1),
142
+ arguments: z.record(z.unknown()),
143
+ dependsOn: z.array(z.string()),
144
+ purpose: z.string(),
145
+ optional: z.boolean(),
146
+ });
147
+ export const RetrievalPlanSchema = z.object({
148
+ planId: z.string().min(1),
149
+ objective: z.string().min(1),
150
+ profiles: z.array(z.string()),
151
+ steps: z.array(RetrievalStepSchema),
152
+ });
153
+ export const EvidenceSelectionSchema = z.object({
154
+ selectedEvidenceIds: z.array(z.string()),
155
+ conflicts: z.array(ConflictItemSchema).optional(),
156
+ unknowns: z.array(UnknownItemSchema).optional(),
157
+ notes: z.array(z.string()).optional(),
158
+ });
159
+ export const IdentifierDescriptorSchema = z.object({
160
+ name: z.string(),
161
+ kind: z.string(),
162
+ required: z.boolean().optional(),
163
+ });
164
+ export const RelationshipDescriptorSchema = z.object({
165
+ name: z.string(),
166
+ target: z.string(),
167
+ cardinality: z.string(),
168
+ strength: z.enum(["identity", "authoritative-relation", "weak-correlation"]),
169
+ });
170
+ export const CatalogEntrySchema = z.object({
171
+ id: z.string(),
172
+ version: z.string(),
173
+ description: z.string(),
174
+ surface: z.enum(["estate-bag", "subject", "knowledge-explore"]),
175
+ operation: z.string(),
176
+ physicalContractVersion: z.string(),
177
+ identifiers: z.array(IdentifierDescriptorSchema),
178
+ relationships: z.array(RelationshipDescriptorSchema),
179
+ clock: z.enum(["stable", "live"]).optional(),
180
+ epistemicPlanes: z.array(z.string()),
181
+ limits: z.record(z.union([z.number(), z.string(), z.boolean()])),
182
+ classification: z.string(),
183
+ requiredPermissions: z.array(z.string()),
184
+ mayBeMissing: z.boolean(),
185
+ limitations: z.array(z.string()),
186
+ prohibitedInferences: z.array(z.string()),
187
+ owner: z.string(),
188
+ });
189
+ export const ScoperProfileSchema = z.object({
190
+ id: z.string(),
191
+ version: z.string(),
192
+ description: z.string(),
193
+ domains: z.array(z.string()),
194
+ requiredCatalogEntries: z.array(z.string()),
195
+ retrievalGuidance: z.array(z.string()),
196
+ prohibitedInferences: z.array(z.string()),
197
+ defaultBudgets: ScoperBudgetsSchema.partial(),
198
+ });
199
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schemas.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.test.d.ts","sourceRoot":"","sources":["../src/schemas.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { ScopeRequestSchema } from "./schemas.js";
3
+ import { EvidenceRefSchema, SubjectEvidenceRefSchema } from "./evidence.js";
4
+ describe("ScopeRequestSchema", () => {
5
+ it("accepts a minimal valid request", () => {
6
+ const parsed = ScopeRequestSchema.parse({ objective: "Find host inventory for seed asset" });
7
+ expect(parsed.objective).toContain("inventory");
8
+ });
9
+ it("rejects inverted time ranges", () => {
10
+ expect(() => ScopeRequestSchema.parse({
11
+ objective: "x",
12
+ timeRange: { from: "2024-02-01T00:00:00.000Z", to: "2024-01-01T00:00:00.000Z" },
13
+ })).toThrow();
14
+ });
15
+ });
16
+ describe("EvidenceRefSchema", () => {
17
+ it("requires subject refs", () => {
18
+ const ref = SubjectEvidenceRefSchema.parse({
19
+ surface: "subject",
20
+ objectType: "host",
21
+ contentType: "inventory",
22
+ recordId: "h-1",
23
+ revision: "1",
24
+ field: "hostname",
25
+ });
26
+ expect(EvidenceRefSchema.parse(ref).surface).toBe("subject");
27
+ });
28
+ });
29
+ //# sourceMappingURL=schemas.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.test.js","sourceRoot":"","sources":["../src/schemas.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE5E,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,CAAC,CAAC;QAC7F,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,GAAG,EAAE,CACV,kBAAkB,CAAC,KAAK,CAAC;YACvB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,EAAE,EAAE,0BAA0B,EAAE;SAChF,CAAC,CACH,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,GAAG,GAAG,wBAAwB,CAAC,KAAK,CAAC;YACzC,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,GAAG;YACb,KAAK,EAAE,UAAU;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@x12i/memorix-scoper-contracts",
3
+ "version": "1.0.0",
4
+ "description": "Zod schemas and types for Memorix Scoper",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./schemas": {
14
+ "types": "./dist/schemas/index.d.ts",
15
+ "import": "./dist/schemas/index.js"
16
+ },
17
+ "./errors": {
18
+ "types": "./dist/errors.d.ts",
19
+ "import": "./dist/errors.js"
20
+ },
21
+ "./evidence": {
22
+ "types": "./dist/evidence.d.ts",
23
+ "import": "./dist/evidence.js"
24
+ },
25
+ "./json-schema/*": "./schemas/*"
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "schemas",
30
+ "README.md"
31
+ ],
32
+ "publishConfig": {
33
+ "access": "restricted",
34
+ "registry": "https://registry.npmjs.org/",
35
+ "tag": "dev"
36
+ },
37
+ "scripts": {
38
+ "build": "tsc -p tsconfig.json",
39
+ "typecheck": "tsc -p tsconfig.json --noEmit",
40
+ "test": "vitest run"
41
+ },
42
+ "dependencies": {
43
+ "zod": "^3.25.67"
44
+ },
45
+ "devDependencies": {
46
+ "typescript": "^5.8.3",
47
+ "vitest": "^3.2.4"
48
+ },
49
+ "engines": {
50
+ "node": ">=22"
51
+ },
52
+ "license": "MIT"
53
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "CatalogEntry",
4
+ "type": "object",
5
+ "properties": {
6
+ "id": { "type": "string" },
7
+ "capability": { "type": "string" },
8
+ "objectType": { "type": "string" },
9
+ "contentType": { "type": "string" },
10
+ "description": { "type": "string" },
11
+ "version": { "type": "string" },
12
+ "enabled": { "type": "boolean" },
13
+ "requiresFeature": { "type": "string" },
14
+ "epistemicDefault": { "type": "string" }
15
+ },
16
+ "required": ["id", "capability", "description", "version"]
17
+ }
@@ -0,0 +1,157 @@
1
+ {
2
+ "$ref": "#/definitions/CatalogEntry",
3
+ "definitions": {
4
+ "CatalogEntry": {
5
+ "type": "object",
6
+ "properties": {
7
+ "id": {
8
+ "type": "string"
9
+ },
10
+ "version": {
11
+ "type": "string"
12
+ },
13
+ "description": {
14
+ "type": "string"
15
+ },
16
+ "surface": {
17
+ "type": "string",
18
+ "enum": [
19
+ "estate-bag",
20
+ "subject",
21
+ "knowledge-explore"
22
+ ]
23
+ },
24
+ "operation": {
25
+ "type": "string"
26
+ },
27
+ "physicalContractVersion": {
28
+ "type": "string"
29
+ },
30
+ "identifiers": {
31
+ "type": "array",
32
+ "items": {
33
+ "type": "object",
34
+ "properties": {
35
+ "name": {
36
+ "type": "string"
37
+ },
38
+ "kind": {
39
+ "type": "string"
40
+ },
41
+ "required": {
42
+ "type": "boolean"
43
+ }
44
+ },
45
+ "required": [
46
+ "name",
47
+ "kind"
48
+ ],
49
+ "additionalProperties": false
50
+ }
51
+ },
52
+ "relationships": {
53
+ "type": "array",
54
+ "items": {
55
+ "type": "object",
56
+ "properties": {
57
+ "name": {
58
+ "type": "string"
59
+ },
60
+ "target": {
61
+ "type": "string"
62
+ },
63
+ "cardinality": {
64
+ "type": "string"
65
+ },
66
+ "strength": {
67
+ "type": "string",
68
+ "enum": [
69
+ "identity",
70
+ "authoritative-relation",
71
+ "weak-correlation"
72
+ ]
73
+ }
74
+ },
75
+ "required": [
76
+ "name",
77
+ "target",
78
+ "cardinality",
79
+ "strength"
80
+ ],
81
+ "additionalProperties": false
82
+ }
83
+ },
84
+ "clock": {
85
+ "type": "string",
86
+ "enum": [
87
+ "stable",
88
+ "live"
89
+ ]
90
+ },
91
+ "epistemicPlanes": {
92
+ "type": "array",
93
+ "items": {
94
+ "type": "string"
95
+ }
96
+ },
97
+ "limits": {
98
+ "type": "object",
99
+ "additionalProperties": {
100
+ "type": [
101
+ "number",
102
+ "string",
103
+ "boolean"
104
+ ]
105
+ }
106
+ },
107
+ "classification": {
108
+ "type": "string"
109
+ },
110
+ "requiredPermissions": {
111
+ "type": "array",
112
+ "items": {
113
+ "type": "string"
114
+ }
115
+ },
116
+ "mayBeMissing": {
117
+ "type": "boolean"
118
+ },
119
+ "limitations": {
120
+ "type": "array",
121
+ "items": {
122
+ "type": "string"
123
+ }
124
+ },
125
+ "prohibitedInferences": {
126
+ "type": "array",
127
+ "items": {
128
+ "type": "string"
129
+ }
130
+ },
131
+ "owner": {
132
+ "type": "string"
133
+ }
134
+ },
135
+ "required": [
136
+ "id",
137
+ "version",
138
+ "description",
139
+ "surface",
140
+ "operation",
141
+ "physicalContractVersion",
142
+ "identifiers",
143
+ "relationships",
144
+ "epistemicPlanes",
145
+ "limits",
146
+ "classification",
147
+ "requiredPermissions",
148
+ "mayBeMissing",
149
+ "limitations",
150
+ "prohibitedInferences",
151
+ "owner"
152
+ ],
153
+ "additionalProperties": false
154
+ }
155
+ },
156
+ "$schema": "http://json-schema.org/draft-07/schema#"
157
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "EvidenceBundle",
4
+ "type": "object",
5
+ "properties": {
6
+ "items": { "type": "array" },
7
+ "conflicts": { "type": "array" },
8
+ "unknowns": { "type": "array" },
9
+ "warnings": { "type": "array" },
10
+ "continuations": { "type": "array" },
11
+ "answer": { "type": "string" },
12
+ "budgetsUsed": { "type": "object" }
13
+ },
14
+ "required": ["items"]
15
+ }