@qmilab/lodestar-core 0.1.5 → 0.2.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.
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/schemas/action.d.ts +31 -13
- package/dist/schemas/action.d.ts.map +1 -1
- package/dist/schemas/action.js +20 -1
- package/dist/schemas/action.js.map +1 -1
- package/dist/schemas/approval.d.ts +271 -0
- package/dist/schemas/approval.d.ts.map +1 -0
- package/dist/schemas/approval.js +119 -0
- package/dist/schemas/approval.js.map +1 -0
- package/dist/schemas/belief.d.ts.map +1 -1
- package/dist/schemas/belief.js +7 -1
- package/dist/schemas/belief.js.map +1 -1
- package/dist/schemas/calibration.d.ts +977 -0
- package/dist/schemas/calibration.d.ts.map +1 -0
- package/dist/schemas/calibration.js +187 -0
- package/dist/schemas/calibration.js.map +1 -0
- package/dist/schemas/claim.d.ts.map +1 -1
- package/dist/schemas/claim.js +4 -2
- package/dist/schemas/claim.js.map +1 -1
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +11 -5
- package/dist/schemas/common.js.map +1 -1
- package/dist/schemas/policy.d.ts +768 -0
- package/dist/schemas/policy.d.ts.map +1 -0
- package/dist/schemas/policy.js +200 -0
- package/dist/schemas/policy.js.map +1 -0
- package/dist/schemas/probe-pack.d.ts +152 -0
- package/dist/schemas/probe-pack.d.ts.map +1 -0
- package/dist/schemas/probe-pack.js +140 -0
- package/dist/schemas/probe-pack.js.map +1 -0
- package/dist/schemas/reflection.d.ts +405 -0
- package/dist/schemas/reflection.d.ts.map +1 -0
- package/dist/schemas/reflection.js +154 -0
- package/dist/schemas/reflection.js.map +1 -0
- package/dist/schemas/revision.d.ts.map +1 -1
- package/dist/schemas/revision.js.map +1 -1
- package/dist/schemas/sentinel.d.ts +134 -0
- package/dist/schemas/sentinel.d.ts.map +1 -0
- package/dist/schemas/sentinel.js +97 -0
- package/dist/schemas/sentinel.js.map +1 -0
- package/package.json +2 -7
- package/src/index.ts +18 -0
- package/src/schemas/action.ts +20 -1
- package/src/schemas/approval.ts +136 -0
- package/src/schemas/belief.ts +7 -1
- package/src/schemas/calibration.ts +212 -0
- package/src/schemas/claim.ts +15 -8
- package/src/schemas/common.ts +16 -10
- package/src/schemas/policy.ts +231 -0
- package/src/schemas/probe-pack.ts +169 -0
- package/src/schemas/reflection.ts +166 -0
- package/src/schemas/revision.ts +7 -5
- package/src/schemas/sentinel.ts +104 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calibration.d.ts","sourceRoot":"","sources":["../../src/schemas/calibration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { TimestampSchema } from "./common.js";
|
|
3
|
+
/**
|
|
4
|
+
* Calibration wire format.
|
|
5
|
+
*
|
|
6
|
+
* These schemas describe what the harness `Calibrator` measures —
|
|
7
|
+
* per-class ECE / Brier / calibration-gap tables and the flagged classes.
|
|
8
|
+
* They lived in `@qmilab/lodestar-harness` while the calibrator was a
|
|
9
|
+
* return-value-only surface; they **graduated to `@qmilab/lodestar-core`**
|
|
10
|
+
* when the durable `calibration.computed@1` event landed (ADR-0011), so
|
|
11
|
+
* the event payload can embed the report (core is the dependency root and
|
|
12
|
+
* cannot import the harness). The harness re-exports them unchanged, so
|
|
13
|
+
* harness consumers are unaffected.
|
|
14
|
+
*
|
|
15
|
+
* The Calibrator stays measure-only: it returns a {@link CalibrationReport}
|
|
16
|
+
* and never writes. Recording a report as a `calibration.computed@1` event
|
|
17
|
+
* is a separate publish step (`lodestar harness calibrate` / the harness
|
|
18
|
+
* `eventLogCalibrationSink`), the same measure/record split the sentinels
|
|
19
|
+
* follow (a `Sentinel` returns findings; `eventLogAlertSink` writes them).
|
|
20
|
+
*
|
|
21
|
+
* Everything here is validated at the calibrator and event-sink boundaries,
|
|
22
|
+
* the same discipline the probe-run observation and sentinel-alert builders
|
|
23
|
+
* hold.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Which signal in the event log produced a calibration sample.
|
|
27
|
+
* - `action_outcome`: a belief → decision → action chain where the
|
|
28
|
+
* action's realised result (terminal phase or an explicit Outcome) is
|
|
29
|
+
* the label.
|
|
30
|
+
* - `truth_status`: the firewall transitioned the belief's `truth_status`
|
|
31
|
+
* to `supported` / `contradicted` — the world adjudicating the belief.
|
|
32
|
+
*/
|
|
33
|
+
export const SampleSourceSchema = z.enum(["action_outcome", "truth_status"]);
|
|
34
|
+
/** The scored metrics for a set of samples (one class, or the pool). */
|
|
35
|
+
export const CalibrationMetricsSchema = z.object({
|
|
36
|
+
n: z.number().int().nonnegative(),
|
|
37
|
+
/** mean of stated confidence */
|
|
38
|
+
mean_confidence: z.number().min(0).max(1),
|
|
39
|
+
/** realised positive rate, mean(correct) */
|
|
40
|
+
empirical_accuracy: z.number().min(0).max(1),
|
|
41
|
+
/** mean((p - y)^2); 0 is perfect, lower is better */
|
|
42
|
+
brier_score: z.number().min(0).max(1),
|
|
43
|
+
/** expected calibration error over equal-width confidence bins */
|
|
44
|
+
ece: z.number().min(0).max(1),
|
|
45
|
+
/** signed mean_confidence - empirical_accuracy; > 0 is overconfident */
|
|
46
|
+
calibration_gap: z.number().min(-1).max(1),
|
|
47
|
+
overconfident: z.boolean(),
|
|
48
|
+
});
|
|
49
|
+
/** One non-empty bin of a reliability diagram. */
|
|
50
|
+
export const ReliabilityBinSchema = z.object({
|
|
51
|
+
lower: z.number().min(0).max(1),
|
|
52
|
+
upper: z.number().min(0).max(1),
|
|
53
|
+
n: z.number().int().positive(),
|
|
54
|
+
mean_confidence: z.number().min(0).max(1),
|
|
55
|
+
empirical_accuracy: z.number().min(0).max(1),
|
|
56
|
+
});
|
|
57
|
+
/** Per-class result: metrics, the reliability bins, and the verdict. */
|
|
58
|
+
export const CalibrationClassResultSchema = z.object({
|
|
59
|
+
calibration_class: z.string(),
|
|
60
|
+
metrics: CalibrationMetricsSchema,
|
|
61
|
+
/** non-empty bins only, ascending by `lower` */
|
|
62
|
+
reliability_bins: z.array(ReliabilityBinSchema),
|
|
63
|
+
flagged: z.boolean(),
|
|
64
|
+
/** human-legible reason when flagged; `null` when not */
|
|
65
|
+
flag_reason: z.string().nullable(),
|
|
66
|
+
});
|
|
67
|
+
/** The thresholds and toggles actually applied, echoed for reproducibility. */
|
|
68
|
+
export const ResolvedCalibratorConfigSchema = z.object({
|
|
69
|
+
bins: z.number().int().positive(),
|
|
70
|
+
min_samples: z.number().int().positive(),
|
|
71
|
+
ece_threshold: z.number().min(0).max(1),
|
|
72
|
+
gap_threshold: z.number().min(0).max(1),
|
|
73
|
+
outcome_sources: z.array(SampleSourceSchema).min(1),
|
|
74
|
+
include_synthetic_authority: z.boolean(),
|
|
75
|
+
});
|
|
76
|
+
/**
|
|
77
|
+
* The calibrator's output: per-class tables, a pooled `overall` block,
|
|
78
|
+
* the flagged class names, and the config that produced it. A pure
|
|
79
|
+
* function of `(events, config)` — no clock, no scope inference — so it
|
|
80
|
+
* is deterministic and testable, and re-running it over the same event
|
|
81
|
+
* window reproduces the report (the property the `cursor` on
|
|
82
|
+
* {@link CalibrationComputedPayloadSchema} makes auditable).
|
|
83
|
+
*/
|
|
84
|
+
export const CalibrationReportSchema = z.object({
|
|
85
|
+
/** total samples resolved and included (after exclusions) */
|
|
86
|
+
sample_count: z.number().int().nonnegative(),
|
|
87
|
+
classes: z.array(CalibrationClassResultSchema),
|
|
88
|
+
overall: CalibrationMetricsSchema,
|
|
89
|
+
flagged_classes: z.array(z.string()),
|
|
90
|
+
config: ResolvedCalibratorConfigSchema,
|
|
91
|
+
});
|
|
92
|
+
// ── The calibration.computed@1 governed event (ADR-0011) ─────────────────
|
|
93
|
+
/**
|
|
94
|
+
* What invoked a calibration pass.
|
|
95
|
+
*
|
|
96
|
+
* `cli` — a human ran `lodestar harness calibrate --session <id>`.
|
|
97
|
+
* `programmatic` — a host computed and recorded calibration from its own
|
|
98
|
+
* code (e.g. a guarded loop at a deliberate checkpoint).
|
|
99
|
+
*/
|
|
100
|
+
export const CalibrationTriggerSchema = z.enum(["cli", "programmatic"]);
|
|
101
|
+
/**
|
|
102
|
+
* The seq window a calibration pass measured.
|
|
103
|
+
*
|
|
104
|
+
* Replayability is by cursor: re-running `calibrate` over the same events
|
|
105
|
+
* in this window — those with `seq` strictly greater than `from_seq` and
|
|
106
|
+
* less than or equal to `to_seq`, within the event's own session slice —
|
|
107
|
+
* reproduces the embedded `report` (the calibrator is a pure function of
|
|
108
|
+
* `(events, config)`). This is what makes calibration drift auditable
|
|
109
|
+
* across time — two `calibration.computed@1` events with overlapping
|
|
110
|
+
* windows can be diffed, and either can be recomputed from the log to
|
|
111
|
+
* verify it was not tampered with. (`seq` is per-project, so the session
|
|
112
|
+
* slice is the natural replay scope; a v0 calibration pass reads one
|
|
113
|
+
* session.)
|
|
114
|
+
*/
|
|
115
|
+
export const CalibrationCursorSchema = z
|
|
116
|
+
.object({
|
|
117
|
+
from_seq: z
|
|
118
|
+
.number()
|
|
119
|
+
.int()
|
|
120
|
+
.min(-1)
|
|
121
|
+
.describe("Exclusive lower bound. The pass measured events with seq strictly greater than this; " +
|
|
122
|
+
"-1 means from the start of the partition."),
|
|
123
|
+
to_seq: z
|
|
124
|
+
.number()
|
|
125
|
+
.int()
|
|
126
|
+
.min(-1)
|
|
127
|
+
.describe("Inclusive upper bound: the highest event seq included. Equal to from_seq when the " +
|
|
128
|
+
"window is empty (the pass ran but observed no events)."),
|
|
129
|
+
})
|
|
130
|
+
// An inverted window `(from_seq, to_seq]` with `to_seq < from_seq` selects
|
|
131
|
+
// no events and cannot reproduce a non-empty report — it would persist a
|
|
132
|
+
// `calibration.computed@1` whose replay guarantee is a lie. Reject it at the
|
|
133
|
+
// boundary; the empty window `from_seq === to_seq` is the only equality case
|
|
134
|
+
// (the pass ran but observed nothing), and it satisfies this.
|
|
135
|
+
.refine((c) => c.to_seq >= c.from_seq, {
|
|
136
|
+
message: "to_seq must be >= from_seq (an inverted cursor selects no events)",
|
|
137
|
+
path: ["to_seq"],
|
|
138
|
+
});
|
|
139
|
+
/**
|
|
140
|
+
* The payload of a `calibration.computed@1` event.
|
|
141
|
+
*
|
|
142
|
+
* The durable record of one calibration pass: the verdict (`report`), the
|
|
143
|
+
* window it measured (`cursor`, for replay), and provenance (`computed_at`,
|
|
144
|
+
* `triggered_by`, `computation_id`). It does NOT enforce anything — the
|
|
145
|
+
* Policy Kernel's arbitrate hook reads an in-process `CalibrationReport`
|
|
146
|
+
* snapshot, not this event (see `docs/architecture/calibrator.md` and
|
|
147
|
+
* ADR-0011). This event exists so calibration drift is auditable and
|
|
148
|
+
* replayable, the way a probe run or a sentinel finding already is.
|
|
149
|
+
*
|
|
150
|
+
* Not signed in v0: the event inherits the log's canonical-hash
|
|
151
|
+
* tamper-evidence, and nothing un-parks a held action on the strength of a
|
|
152
|
+
* calibration *event* (the gate only ever escalates — the conservative
|
|
153
|
+
* direction). If a future slice makes the gate consume persisted
|
|
154
|
+
* calibration events as an authority, signing graduates then, the same
|
|
155
|
+
* staged path the approval resolution followed (ADR-0010).
|
|
156
|
+
*/
|
|
157
|
+
export const CalibrationComputedPayloadSchema = z
|
|
158
|
+
.object({
|
|
159
|
+
/** Stable id for this pass, so the audit chain can reference it. */
|
|
160
|
+
computation_id: z.string().min(1),
|
|
161
|
+
triggered_by: CalibrationTriggerSchema,
|
|
162
|
+
/** The seq window measured — re-running `calibrate` over it reproduces `report`. */
|
|
163
|
+
cursor: CalibrationCursorSchema,
|
|
164
|
+
/** The verdict: the full report this pass produced. */
|
|
165
|
+
report: CalibrationReportSchema,
|
|
166
|
+
computed_at: TimestampSchema,
|
|
167
|
+
})
|
|
168
|
+
// The cursor is only an honest replay key if it is *consistent* with the
|
|
169
|
+
// report. An empty window `(n, n]` selects zero events, so it can reproduce
|
|
170
|
+
// only a zero-sample report — and a zero-sample report can only have come
|
|
171
|
+
// from an empty window. Enforce the biconditional: empty window ⟺
|
|
172
|
+
// `sample_count === 0`. This rejects the two non-replayable shapes a
|
|
173
|
+
// programmatic caller could otherwise persist — an empty window carrying a
|
|
174
|
+
// populated report (replaying it yields nothing), and a populated window
|
|
175
|
+
// carrying a zero-sample report (the window's events would yield samples).
|
|
176
|
+
.refine((p) => (p.cursor.to_seq === p.cursor.from_seq) === (p.report.sample_count === 0), {
|
|
177
|
+
message: "an empty cursor window (to_seq === from_seq) must accompany a zero-sample report and vice " +
|
|
178
|
+
"versa — otherwise the recorded window cannot reproduce the report it claims as its replay key",
|
|
179
|
+
path: ["cursor", "to_seq"],
|
|
180
|
+
});
|
|
181
|
+
/**
|
|
182
|
+
* Event-type literal. Use this constant rather than the bare string so a
|
|
183
|
+
* future rename is grep-safe. Mirrors `reflection.completed@1`.
|
|
184
|
+
*/
|
|
185
|
+
export const CALIBRATION_COMPUTED_EVENT_TYPE = "calibration.computed";
|
|
186
|
+
export const CALIBRATION_COMPUTED_SCHEMA_VERSION = "1";
|
|
187
|
+
//# sourceMappingURL=calibration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calibration.js","sourceRoot":"","sources":["../../src/schemas/calibration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../src/schemas/claim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../src/schemas/claim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB;;GAEG;AACH,eAAO,MAAM,sBAAsB,+CAA6C,CAAA;AAChF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAErE;;GAEG;AACH,eAAO,MAAM,iBAAiB,+DAA6D,CAAA;AAC3F,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;EAIxB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAetB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAM/C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,gIAOhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;EAO7B,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM5B,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
|
package/dist/schemas/claim.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { PredicateSchema, ResourceScopeSchema, SensitivitySchema, TimestampSchema } from "./common.js";
|
|
2
|
+
import { PredicateSchema, ResourceScopeSchema, SensitivitySchema, TimestampSchema, } from "./common.js";
|
|
3
3
|
/**
|
|
4
4
|
* How a claim was extracted from observation(s).
|
|
5
5
|
*/
|
|
@@ -29,7 +29,9 @@ export const ClaimSchema = z.object({
|
|
|
29
29
|
id: z.string(),
|
|
30
30
|
statement: z.string().describe("human-readable claim"),
|
|
31
31
|
structured_predicate: PredicateSchema.optional().describe("for queryable claims"),
|
|
32
|
-
source_observation_ids: z
|
|
32
|
+
source_observation_ids: z
|
|
33
|
+
.array(z.string())
|
|
34
|
+
.min(1, "a claim must reference at least one observation"),
|
|
33
35
|
extraction_method: ExtractionMethodSchema,
|
|
34
36
|
extracted_by: z.string().describe("actor_id of the extractor"),
|
|
35
37
|
status: ClaimStatusSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/schemas/claim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/schemas/claim.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,6DAA2D,CAAA;AACzF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,6DAA2D,CAAA;AACzF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;EAKyC,CAAA;AACzE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;EAMkC,CAAA;AAC9D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,eAAe,aAAwC,CAAA;AACpE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,cAAc,aAEmE,CAAA;AAC9F,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;EAIvB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA"}
|
package/dist/schemas/common.js
CHANGED
|
@@ -12,19 +12,23 @@ export const SensitivitySchema = z.enum(["public", "internal", "confidential", "
|
|
|
12
12
|
* Scope a claim, belief, memory, or action applies to. Hierarchical
|
|
13
13
|
* from broadest (global) to narrowest (session).
|
|
14
14
|
*/
|
|
15
|
-
export const ResourceScopeSchema = z
|
|
15
|
+
export const ResourceScopeSchema = z
|
|
16
|
+
.object({
|
|
16
17
|
level: z.enum(["global", "organization", "user", "project", "repo", "session"]),
|
|
17
18
|
identifier: z.string().describe("identifier within the scope level, e.g. project_id"),
|
|
18
|
-
})
|
|
19
|
+
})
|
|
20
|
+
.describe("Scope that bounds where a claim, belief, or memory applies");
|
|
19
21
|
/**
|
|
20
22
|
* Structured predicate for queryable claims and beliefs.
|
|
21
23
|
* Free-form for v0; refined in later versions as the planner matures.
|
|
22
24
|
*/
|
|
23
|
-
export const PredicateSchema = z
|
|
25
|
+
export const PredicateSchema = z
|
|
26
|
+
.object({
|
|
24
27
|
subject: z.string(),
|
|
25
28
|
relation: z.string(),
|
|
26
29
|
object: z.unknown(),
|
|
27
|
-
})
|
|
30
|
+
})
|
|
31
|
+
.describe("Structured form of a claim suitable for queries");
|
|
28
32
|
/**
|
|
29
33
|
* ISO 8601 timestamp string.
|
|
30
34
|
*/
|
|
@@ -32,7 +36,9 @@ export const TimestampSchema = z.string().datetime({ offset: true });
|
|
|
32
36
|
/**
|
|
33
37
|
* ISO 8601 duration string (e.g. "P30D", "PT1H").
|
|
34
38
|
*/
|
|
35
|
-
export const DurationSchema = z
|
|
39
|
+
export const DurationSchema = z
|
|
40
|
+
.string()
|
|
41
|
+
.regex(/^P(?:\d+Y)?(?:\d+M)?(?:\d+W)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+(?:\.\d+)?S)?)?$/);
|
|
36
42
|
/**
|
|
37
43
|
* Generic Source reference used in evidence and explanations.
|
|
38
44
|
* Points to an observation, belief, or external identifier.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGzF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGzF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;CACtF,CAAC;KACD,QAAQ,CAAC,4DAA4D,CAAC,CAAA;AAGzE;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC;KACD,QAAQ,CAAC,iDAAiD,CAAC,CAAA;AAG9D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AAGpE;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,KAAK,CAAC,oFAAoF,CAAC,CAAA;AAG9F;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC/E,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CAChF,CAAC,CAAA"}
|