@zelari/core 2.5.0 → 2.6.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/core/AgentHarness.d.ts +17 -0
- package/dist/core/AgentHarness.d.ts.map +1 -1
- package/dist/core/AgentHarness.js +43 -0
- package/dist/core/AgentHarness.js.map +1 -1
- package/dist/mission/budgetContinuation.d.ts +36 -0
- package/dist/mission/budgetContinuation.d.ts.map +1 -0
- package/dist/mission/budgetContinuation.js +66 -0
- package/dist/mission/budgetContinuation.js.map +1 -0
- package/dist/runtime/harnessManifest.d.ts +91 -0
- package/dist/runtime/harnessManifest.d.ts.map +1 -0
- package/dist/runtime/harnessManifest.js +113 -0
- package/dist/runtime/harnessManifest.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +4 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/profiles.d.ts +7 -0
- package/dist/runtime/profiles.d.ts.map +1 -1
- package/dist/runtime/profiles.js +10 -0
- package/dist/runtime/profiles.js.map +1 -1
- package/dist/runtime/resourceBudget.d.ts +69 -0
- package/dist/runtime/resourceBudget.d.ts.map +1 -0
- package/dist/runtime/resourceBudget.js +98 -0
- package/dist/runtime/resourceBudget.js.map +1 -0
- package/dist/runtime/resourcePolicy.d.ts +56 -0
- package/dist/runtime/resourcePolicy.d.ts.map +1 -0
- package/dist/runtime/resourcePolicy.js +77 -0
- package/dist/runtime/resourcePolicy.js.map +1 -0
- package/dist/session/compactionState.d.ts.map +1 -1
- package/dist/session/compactionState.js +20 -2
- package/dist/session/compactionState.js.map +1 -1
- package/dist/session/index.d.ts +1 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +1 -0
- package/dist/session/index.js.map +1 -1
- package/dist/session/invariants.d.ts +5 -0
- package/dist/session/invariants.d.ts.map +1 -1
- package/dist/session/invariants.js +58 -0
- package/dist/session/invariants.js.map +1 -1
- package/dist/session/modelSurface.d.ts +19 -1
- package/dist/session/modelSurface.d.ts.map +1 -1
- package/dist/session/modelSurface.js +61 -1
- package/dist/session/modelSurface.js.map +1 -1
- package/dist/session/taskContract.d.ts +104 -0
- package/dist/session/taskContract.d.ts.map +1 -0
- package/dist/session/taskContract.js +129 -0
- package/dist/session/taskContract.js.map +1 -0
- package/dist/session/types.d.ts +7 -1
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js +15 -0
- package/dist/session/types.js.map +1 -1
- package/dist/verification/index.d.ts +1 -0
- package/dist/verification/index.d.ts.map +1 -1
- package/dist/verification/index.js +1 -0
- package/dist/verification/index.js.map +1 -1
- package/dist/verification/metrics.d.ts +20 -0
- package/dist/verification/metrics.d.ts.map +1 -1
- package/dist/verification/metrics.js +18 -0
- package/dist/verification/metrics.js.map +1 -1
- package/dist/verification/resourceReserveGate.d.ts +39 -0
- package/dist/verification/resourceReserveGate.d.ts.map +1 -0
- package/dist/verification/resourceReserveGate.js +56 -0
- package/dist/verification/resourceReserveGate.js.map +1 -0
- package/package.json +1 -1
|
@@ -193,4 +193,62 @@ function pushCompactionViolations(events, knownSeq, pairs, violations) {
|
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* 2.6 Track A/B relational invariants: resource events + task contract
|
|
198
|
+
* (doc section 24.1). Standalone so replay/CI can opt in per surface.
|
|
199
|
+
*/
|
|
200
|
+
export function validateResourceAndContractEvents(events) {
|
|
201
|
+
const violations = [];
|
|
202
|
+
let lastToolCallsUsed = -1;
|
|
203
|
+
for (const e of events) {
|
|
204
|
+
if (e.kind === 'resource.snapshot') {
|
|
205
|
+
const used = e.data.toolCallsUsed;
|
|
206
|
+
const remaining = e.data.toolCallsRemaining;
|
|
207
|
+
if (typeof used !== 'number' || typeof remaining !== 'number' || used < 0 || remaining < 0) {
|
|
208
|
+
violations.push({ code: 'RESOURCE_SNAPSHOT_INVALID', seq: e.seq, message: 'snapshot must carry non-negative toolCallsUsed/Remaining' });
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (used < lastToolCallsUsed) {
|
|
212
|
+
violations.push({ code: 'RESOURCE_USED_MONOTONIC', seq: e.seq, message: `toolCallsUsed went ${lastToolCallsUsed} -> ${used}` });
|
|
213
|
+
}
|
|
214
|
+
lastToolCallsUsed = used;
|
|
215
|
+
const limit = typeof e.data.toolCallsLimit === 'number' ? e.data.toolCallsLimit : used + remaining;
|
|
216
|
+
if (used + remaining !== limit) {
|
|
217
|
+
violations.push({ code: 'RESOURCE_REMAINING_COHERENT', seq: e.seq, message: `used(${used}) + remaining(${remaining}) != limit(${limit})` });
|
|
218
|
+
}
|
|
219
|
+
for (const key of ['verificationReserve', 'repairReserve']) {
|
|
220
|
+
const v = e.data[key];
|
|
221
|
+
if (typeof v === 'number' && v < 0) {
|
|
222
|
+
violations.push({ code: 'RESERVE_NEGATIVE', seq: e.seq, message: `${key} is negative (${v})` });
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (e.kind === 'session.harness_manifest') {
|
|
227
|
+
if (typeof e.data.manifestHash !== 'string' || !e.data.manifest) {
|
|
228
|
+
violations.push({ code: 'MANIFEST_PAYLOAD_INVALID', seq: e.seq, message: 'session.harness_manifest needs {manifest, manifestHash}' });
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
let lastVersion = 0;
|
|
233
|
+
for (const e of events) {
|
|
234
|
+
if (e.kind !== 'task.contract' && e.kind !== 'task.contract_updated')
|
|
235
|
+
continue;
|
|
236
|
+
const contract = e.data.contract;
|
|
237
|
+
const version = contract && typeof contract === 'object' ? contract.version : undefined;
|
|
238
|
+
if (typeof version !== 'number' || version < 1) {
|
|
239
|
+
violations.push({ code: 'TASK_CONTRACT_VERSION_MONOTONIC', seq: e.seq, message: 'contract payload must carry a positive version' });
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
if (version <= lastVersion) {
|
|
243
|
+
violations.push({ code: 'TASK_CONTRACT_VERSION_MONOTONIC', seq: e.seq, message: `version ${version} did not increase past ${lastVersion}` });
|
|
244
|
+
}
|
|
245
|
+
lastVersion = version;
|
|
246
|
+
const source = contract && typeof contract === 'object' ? contract.source : undefined;
|
|
247
|
+
const userSeq = source && typeof source === 'object' ? source.userSeq : undefined;
|
|
248
|
+
if (typeof userSeq !== 'number' || userSeq < 1) {
|
|
249
|
+
violations.push({ code: 'TASK_CONTRACT_SOURCE_INVALID', seq: e.seq, message: 'contract.source.userSeq must be a positive event seq' });
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return violations;
|
|
253
|
+
}
|
|
196
254
|
//# sourceMappingURL=invariants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../src/session/invariants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../src/session/invariants.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,25 @@
|
|
|
6
6
|
* `session.compacted` events replace `[fromSeq, toSeq]` (ledger unchanged).
|
|
7
7
|
* The CLI maps these onto its provider-specific request format — nothing else
|
|
8
8
|
* may invent model-visible history (ADR-0016 invariant: model-visible ⟺ logged).
|
|
9
|
+
*
|
|
10
|
+
* 2.6 (doc §10.2): LATEST-ONLY kinds. `resource.snapshot` is model-surface
|
|
11
|
+
* but only its LAST event projects — earlier snapshots stay in the ledger
|
|
12
|
+
* (state) without flooding the context. Every event kind may opt into this
|
|
13
|
+
* projection; today it is exactly {'resource.snapshot'}.
|
|
9
14
|
*/
|
|
10
15
|
import type { SessionEventEnvelope, SessionEventKind } from './types.js';
|
|
11
16
|
/** Event kinds that (may) feed the model input. Everything else is state. */
|
|
12
17
|
export declare const MODEL_SURFACE_KINDS: ReadonlySet<SessionEventKind>;
|
|
18
|
+
/**
|
|
19
|
+
* Surface kinds projected LATEST-ONLY: the highest-seq event of the kind
|
|
20
|
+
* becomes one system message; earlier ones remain in the log (state).
|
|
21
|
+
*/
|
|
22
|
+
export declare const LATEST_ONLY_SURFACE_KINDS: ReadonlySet<SessionEventKind>;
|
|
13
23
|
export declare function isModelSurfaceEvent(event: {
|
|
14
24
|
kind: string;
|
|
15
25
|
}): boolean;
|
|
26
|
+
/** Highest seq per latest-only kind — the sole event of that kind that projects. */
|
|
27
|
+
export declare function latestSurfaceSeqByKind(events: readonly SessionEventEnvelope[]): Map<SessionEventKind, number>;
|
|
16
28
|
/** Provider-neutral derived message with provenance (source event seq). */
|
|
17
29
|
export interface DerivedMessage {
|
|
18
30
|
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
@@ -36,12 +48,18 @@ export interface DeriveMessagesOptions {
|
|
|
36
48
|
*/
|
|
37
49
|
includeToolCalls?: boolean;
|
|
38
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Human/model-readable RESOURCE STATUS block (doc §10.3) from a snapshot
|
|
53
|
+
* payload. Pure — used by deriveMessages and by the CLI emitter tests.
|
|
54
|
+
*/
|
|
55
|
+
export declare function formatResourceSnapshot(data: Record<string, unknown>): string;
|
|
39
56
|
/**
|
|
40
57
|
* Project surface events into the neutral model history. Deterministic.
|
|
41
58
|
*
|
|
42
59
|
* Range-bearing `session.compacted` events replace `[fromSeq, toSeq]` with
|
|
43
60
|
* the checkpoint (durable shadowing). Compact events without a range stay
|
|
44
|
-
* additive (legacy `{summary}` append).
|
|
61
|
+
* additive (legacy `{summary}` append). Latest-only kinds project exactly
|
|
62
|
+
* their last event (see LATEST_ONLY_SURFACE_KINDS).
|
|
45
63
|
*/
|
|
46
64
|
export declare function deriveMessages(events: readonly SessionEventEnvelope[], options?: DeriveMessagesOptions): DerivedMessage[];
|
|
47
65
|
/** A tool call paired with its result (when both exist in the log). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelSurface.d.ts","sourceRoot":"","sources":["../../src/session/modelSurface.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"modelSurface.d.ts","sourceRoot":"","sources":["../../src/session/modelSurface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGzE,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,gBAAgB,CAQ5D,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,gBAAgB,CAAkC,CAAC;AAEvG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAEpE;AAED,oFAAoF;AACpF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,oBAAoB,EAAE,GACtC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAQ/B;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAUD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAe5E;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,oBAAoB,EAAE,EACvC,OAAO,GAAE,qBAA0B,GAClC,cAAc,EAAE,CAiFlB;AAED,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,GAAG,YAAY,EAAE,CAoBrF"}
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
* `session.compacted` events replace `[fromSeq, toSeq]` (ledger unchanged).
|
|
7
7
|
* The CLI maps these onto its provider-specific request format — nothing else
|
|
8
8
|
* may invent model-visible history (ADR-0016 invariant: model-visible ⟺ logged).
|
|
9
|
+
*
|
|
10
|
+
* 2.6 (doc §10.2): LATEST-ONLY kinds. `resource.snapshot` is model-surface
|
|
11
|
+
* but only its LAST event projects — earlier snapshots stay in the ledger
|
|
12
|
+
* (state) without flooding the context. Every event kind may opt into this
|
|
13
|
+
* projection; today it is exactly {'resource.snapshot'}.
|
|
9
14
|
*/
|
|
10
15
|
import { coveringCompactions, isSeqShadowed } from './compaction.js';
|
|
11
16
|
/** Event kinds that (may) feed the model input. Everything else is state. */
|
|
@@ -15,24 +20,69 @@ export const MODEL_SURFACE_KINDS = new Set([
|
|
|
15
20
|
'tool.call',
|
|
16
21
|
'tool.result',
|
|
17
22
|
'session.compacted',
|
|
23
|
+
// 2.6: budget awareness for the model (latest-only projection below).
|
|
24
|
+
'resource.snapshot',
|
|
18
25
|
]);
|
|
26
|
+
/**
|
|
27
|
+
* Surface kinds projected LATEST-ONLY: the highest-seq event of the kind
|
|
28
|
+
* becomes one system message; earlier ones remain in the log (state).
|
|
29
|
+
*/
|
|
30
|
+
export const LATEST_ONLY_SURFACE_KINDS = new Set(['resource.snapshot']);
|
|
19
31
|
export function isModelSurfaceEvent(event) {
|
|
20
32
|
return MODEL_SURFACE_KINDS.has(event.kind);
|
|
21
33
|
}
|
|
34
|
+
/** Highest seq per latest-only kind — the sole event of that kind that projects. */
|
|
35
|
+
export function latestSurfaceSeqByKind(events) {
|
|
36
|
+
const latest = new Map();
|
|
37
|
+
for (const e of events) {
|
|
38
|
+
if (LATEST_ONLY_SURFACE_KINDS.has(e.kind) && !isSeqShadowed(e.seq, coveringCompactions(events))) {
|
|
39
|
+
latest.set(e.kind, e.seq);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return latest;
|
|
43
|
+
}
|
|
22
44
|
function asString(value) {
|
|
23
45
|
return typeof value === 'string' ? value : undefined;
|
|
24
46
|
}
|
|
47
|
+
function asNumber(value) {
|
|
48
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Human/model-readable RESOURCE STATUS block (doc §10.3) from a snapshot
|
|
52
|
+
* payload. Pure — used by deriveMessages and by the CLI emitter tests.
|
|
53
|
+
*/
|
|
54
|
+
export function formatResourceSnapshot(data) {
|
|
55
|
+
const used = asNumber(data.toolCallsUsed) ?? 0;
|
|
56
|
+
const remaining = asNumber(data.toolCallsRemaining) ?? 0;
|
|
57
|
+
const lines = [
|
|
58
|
+
'RESOURCE STATUS',
|
|
59
|
+
`Tool calls: ${used} / ${used + remaining}`,
|
|
60
|
+
`Remaining: ${remaining}`,
|
|
61
|
+
];
|
|
62
|
+
const wall = asNumber(data.wallMsRemaining);
|
|
63
|
+
if (wall !== undefined)
|
|
64
|
+
lines.push(`Wall clock remaining: ${Math.max(0, Math.round(wall / 1000))}s`);
|
|
65
|
+
lines.push(`Verification reserve: ${asNumber(data.verificationReserve) ?? 0}`);
|
|
66
|
+
lines.push(`Repair reserve: ${asNumber(data.repairReserve) ?? 0}`);
|
|
67
|
+
if (typeof data.stage === 'string')
|
|
68
|
+
lines.push(`Stage: ${data.stage}`);
|
|
69
|
+
if (typeof data.pressure === 'string')
|
|
70
|
+
lines.push(`Pressure: ${data.pressure}`);
|
|
71
|
+
return lines.join('\n');
|
|
72
|
+
}
|
|
25
73
|
/**
|
|
26
74
|
* Project surface events into the neutral model history. Deterministic.
|
|
27
75
|
*
|
|
28
76
|
* Range-bearing `session.compacted` events replace `[fromSeq, toSeq]` with
|
|
29
77
|
* the checkpoint (durable shadowing). Compact events without a range stay
|
|
30
|
-
* additive (legacy `{summary}` append).
|
|
78
|
+
* additive (legacy `{summary}` append). Latest-only kinds project exactly
|
|
79
|
+
* their last event (see LATEST_ONLY_SURFACE_KINDS).
|
|
31
80
|
*/
|
|
32
81
|
export function deriveMessages(events, options = {}) {
|
|
33
82
|
const coverings = coveringCompactions(events);
|
|
34
83
|
const orderedCoverings = [...coverings].sort((a, b) => a.fromSeq - b.fromSeq || a.seq - b.seq);
|
|
35
84
|
const compactBySeq = new Map(coverings.map((c) => [c.seq, c]));
|
|
85
|
+
const latestOfKind = latestSurfaceSeqByKind(events);
|
|
36
86
|
const messages = [];
|
|
37
87
|
let nextCheckpoint = 0;
|
|
38
88
|
const pushCheckpoint = (compact) => {
|
|
@@ -59,6 +109,9 @@ export function deriveMessages(events, options = {}) {
|
|
|
59
109
|
continue;
|
|
60
110
|
if (!isModelSurfaceEvent(e))
|
|
61
111
|
continue;
|
|
112
|
+
// Latest-only projection: skip superseded snapshots of the same kind.
|
|
113
|
+
if (LATEST_ONLY_SURFACE_KINDS.has(e.kind) && latestOfKind.get(e.kind) !== e.seq)
|
|
114
|
+
continue;
|
|
62
115
|
const d = e.data;
|
|
63
116
|
switch (e.kind) {
|
|
64
117
|
case 'user.message':
|
|
@@ -99,6 +152,13 @@ export function deriveMessages(events, options = {}) {
|
|
|
99
152
|
seq: e.seq,
|
|
100
153
|
});
|
|
101
154
|
break;
|
|
155
|
+
case 'resource.snapshot':
|
|
156
|
+
messages.push({
|
|
157
|
+
role: 'system',
|
|
158
|
+
content: formatResourceSnapshot(d),
|
|
159
|
+
seq: e.seq,
|
|
160
|
+
});
|
|
161
|
+
break;
|
|
102
162
|
}
|
|
103
163
|
}
|
|
104
164
|
pushDueCheckpoints(Number.POSITIVE_INFINITY);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelSurface.js","sourceRoot":"","sources":["../../src/session/modelSurface.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"modelSurface.js","sourceRoot":"","sources":["../../src/session/modelSurface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session/taskContract.ts — first-class task contract (2.6 Track A, doc §14).
|
|
3
|
+
*
|
|
4
|
+
* Goal + constraints + acceptance criteria extracted from user prose into a
|
|
5
|
+
* versioned, append-only structure (`task.contract` / `task.contract_updated`
|
|
6
|
+
* events). Authority is explicit: user > agent-derived. A derived item may
|
|
7
|
+
* never contradict a user constraint, rewrite the goal, or drop a required
|
|
8
|
+
* user criterion. CompactionStateSnapshot prefers the contract; the legacy
|
|
9
|
+
* regex extraction stays as fallback compatibility.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
export declare const TaskConstraintSchema: z.ZodObject<{
|
|
13
|
+
id: z.ZodString;
|
|
14
|
+
text: z.ZodString;
|
|
15
|
+
source: z.ZodEnum<{
|
|
16
|
+
user: "user";
|
|
17
|
+
"agent-derived": "agent-derived";
|
|
18
|
+
}>;
|
|
19
|
+
required: z.ZodBoolean;
|
|
20
|
+
}, z.core.$strip>;
|
|
21
|
+
export type TaskConstraint = z.infer<typeof TaskConstraintSchema>;
|
|
22
|
+
export declare const TaskCriterionSchema: z.ZodObject<{
|
|
23
|
+
id: z.ZodString;
|
|
24
|
+
text: z.ZodString;
|
|
25
|
+
source: z.ZodEnum<{
|
|
26
|
+
user: "user";
|
|
27
|
+
"agent-derived": "agent-derived";
|
|
28
|
+
}>;
|
|
29
|
+
required: z.ZodBoolean;
|
|
30
|
+
verificationHint: z.ZodOptional<z.ZodObject<{
|
|
31
|
+
kind: z.ZodEnum<{
|
|
32
|
+
command: "command";
|
|
33
|
+
manual: "manual";
|
|
34
|
+
tool: "tool";
|
|
35
|
+
semantic: "semantic";
|
|
36
|
+
}>;
|
|
37
|
+
value: z.ZodOptional<z.ZodString>;
|
|
38
|
+
}, z.core.$strip>>;
|
|
39
|
+
}, z.core.$strip>;
|
|
40
|
+
export type TaskCriterion = z.infer<typeof TaskCriterionSchema>;
|
|
41
|
+
export declare const TaskContractSchema: z.ZodObject<{
|
|
42
|
+
version: z.ZodNumber;
|
|
43
|
+
goal: z.ZodString;
|
|
44
|
+
constraints: z.ZodArray<z.ZodObject<{
|
|
45
|
+
id: z.ZodString;
|
|
46
|
+
text: z.ZodString;
|
|
47
|
+
source: z.ZodEnum<{
|
|
48
|
+
user: "user";
|
|
49
|
+
"agent-derived": "agent-derived";
|
|
50
|
+
}>;
|
|
51
|
+
required: z.ZodBoolean;
|
|
52
|
+
}, z.core.$strip>>;
|
|
53
|
+
acceptanceCriteria: z.ZodArray<z.ZodObject<{
|
|
54
|
+
id: z.ZodString;
|
|
55
|
+
text: z.ZodString;
|
|
56
|
+
source: z.ZodEnum<{
|
|
57
|
+
user: "user";
|
|
58
|
+
"agent-derived": "agent-derived";
|
|
59
|
+
}>;
|
|
60
|
+
required: z.ZodBoolean;
|
|
61
|
+
verificationHint: z.ZodOptional<z.ZodObject<{
|
|
62
|
+
kind: z.ZodEnum<{
|
|
63
|
+
command: "command";
|
|
64
|
+
manual: "manual";
|
|
65
|
+
tool: "tool";
|
|
66
|
+
semantic: "semantic";
|
|
67
|
+
}>;
|
|
68
|
+
value: z.ZodOptional<z.ZodString>;
|
|
69
|
+
}, z.core.$strip>>;
|
|
70
|
+
}, z.core.$strip>>;
|
|
71
|
+
source: z.ZodObject<{
|
|
72
|
+
userSeq: z.ZodNumber;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
export type TaskContract = z.infer<typeof TaskContractSchema>;
|
|
76
|
+
/** Merge rules: monotone version, user authority, no required-item loss. */
|
|
77
|
+
export interface TaskContractUpdate {
|
|
78
|
+
goal?: string;
|
|
79
|
+
addConstraints?: TaskConstraint[];
|
|
80
|
+
addCriteria?: TaskCriterion[];
|
|
81
|
+
/** Ids the AGENT wants to drop — user-sourced/required items survive. */
|
|
82
|
+
removeConstraintIds?: string[];
|
|
83
|
+
removeCriterionIds?: string[];
|
|
84
|
+
nextUserSeq?: number;
|
|
85
|
+
}
|
|
86
|
+
export declare class TaskContractConflictError extends Error {
|
|
87
|
+
readonly reason: string;
|
|
88
|
+
readonly code = "TASK_CONTRACT_CONFLICT";
|
|
89
|
+
constructor(reason: string);
|
|
90
|
+
}
|
|
91
|
+
/** Apply an update under the authority rules (doc §14.3). Pure. */
|
|
92
|
+
export declare function applyTaskContractUpdate(contract: TaskContract, update: TaskContractUpdate): TaskContract;
|
|
93
|
+
/** Project the contract onto the compaction state shape (§14.5). */
|
|
94
|
+
export declare function contractToCompactionFields(contract: TaskContract): {
|
|
95
|
+
userConstraints: string[];
|
|
96
|
+
activeCriteria: Array<{
|
|
97
|
+
id: string;
|
|
98
|
+
required: boolean;
|
|
99
|
+
}>;
|
|
100
|
+
goal: string;
|
|
101
|
+
};
|
|
102
|
+
/** Derive an initial contract from the first user message (heuristic, CLI-side seed). */
|
|
103
|
+
export declare function deriveInitialContract(userSeq: number, text: string): TaskContract;
|
|
104
|
+
//# sourceMappingURL=taskContract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskContract.d.ts","sourceRoot":"","sources":["../../src/session/taskContract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;iBAK/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;iBAW9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAEtC,QAAQ,CAAC,MAAM,EAAE,MAAM;IADnC,QAAQ,CAAC,IAAI,4BAA4B;gBACpB,MAAM,EAAE,MAAM;CAIpC;AAED,mEAAmE;AACnE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,kBAAkB,GACzB,YAAY,CAyCd;AAED,oEAAoE;AACpE,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,YAAY,GAAG;IAClE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;CACd,CAMA;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAyBjF"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session/taskContract.ts — first-class task contract (2.6 Track A, doc §14).
|
|
3
|
+
*
|
|
4
|
+
* Goal + constraints + acceptance criteria extracted from user prose into a
|
|
5
|
+
* versioned, append-only structure (`task.contract` / `task.contract_updated`
|
|
6
|
+
* events). Authority is explicit: user > agent-derived. A derived item may
|
|
7
|
+
* never contradict a user constraint, rewrite the goal, or drop a required
|
|
8
|
+
* user criterion. CompactionStateSnapshot prefers the contract; the legacy
|
|
9
|
+
* regex extraction stays as fallback compatibility.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
export const TaskConstraintSchema = z.object({
|
|
13
|
+
id: z.string().min(1),
|
|
14
|
+
text: z.string().min(1),
|
|
15
|
+
source: z.enum(['user', 'agent-derived']),
|
|
16
|
+
required: z.boolean(),
|
|
17
|
+
});
|
|
18
|
+
export const TaskCriterionSchema = z.object({
|
|
19
|
+
id: z.string().min(1),
|
|
20
|
+
text: z.string().min(1),
|
|
21
|
+
source: z.enum(['user', 'agent-derived']),
|
|
22
|
+
required: z.boolean(),
|
|
23
|
+
verificationHint: z
|
|
24
|
+
.object({
|
|
25
|
+
kind: z.enum(['command', 'tool', 'semantic', 'manual']),
|
|
26
|
+
value: z.string().optional(),
|
|
27
|
+
})
|
|
28
|
+
.optional(),
|
|
29
|
+
});
|
|
30
|
+
export const TaskContractSchema = z.object({
|
|
31
|
+
version: z.number().int().positive(),
|
|
32
|
+
goal: z.string().min(1),
|
|
33
|
+
constraints: z.array(TaskConstraintSchema),
|
|
34
|
+
acceptanceCriteria: z.array(TaskCriterionSchema),
|
|
35
|
+
source: z.object({
|
|
36
|
+
/** Seq of the user.message the contract was extracted from. */
|
|
37
|
+
userSeq: z.number().int().positive(),
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
40
|
+
export class TaskContractConflictError extends Error {
|
|
41
|
+
reason;
|
|
42
|
+
code = 'TASK_CONTRACT_CONFLICT';
|
|
43
|
+
constructor(reason) {
|
|
44
|
+
super(`task contract update rejected: ${reason}`);
|
|
45
|
+
this.reason = reason;
|
|
46
|
+
this.name = 'TaskContractConflictError';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Apply an update under the authority rules (doc §14.3). Pure. */
|
|
50
|
+
export function applyTaskContractUpdate(contract, update) {
|
|
51
|
+
if (update.goal !== undefined && update.goal !== contract.goal) {
|
|
52
|
+
// Goal changes only when the update itself is user-driven (nextUserSeq
|
|
53
|
+
// present = a new user message authorized the rewrite).
|
|
54
|
+
if (update.nextUserSeq === undefined) {
|
|
55
|
+
throw new TaskContractConflictError('agent-derived update may not rewrite the goal');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const constraints = contract.constraints.filter((c) => {
|
|
59
|
+
if (!update.removeConstraintIds?.includes(c.id))
|
|
60
|
+
return true;
|
|
61
|
+
if (c.source === 'user' && c.required) {
|
|
62
|
+
throw new TaskContractConflictError(`required user constraint "${c.id}" cannot be removed`);
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
});
|
|
66
|
+
const criteria = contract.acceptanceCriteria.filter((c) => {
|
|
67
|
+
if (!update.removeCriterionIds?.includes(c.id))
|
|
68
|
+
return true;
|
|
69
|
+
if (c.source === 'user' && c.required) {
|
|
70
|
+
throw new TaskContractConflictError(`required user criterion "${c.id}" cannot be removed`);
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
});
|
|
74
|
+
for (const add of update.addConstraints ?? []) {
|
|
75
|
+
if (constraints.some((c) => c.id === add.id) || (update.addConstraints ?? []).filter((x) => x.id === add.id).length > 1) {
|
|
76
|
+
throw new TaskContractConflictError(`duplicate constraint id "${add.id}"`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const add of update.addCriteria ?? []) {
|
|
80
|
+
if (criteria.some((c) => c.id === add.id) || (update.addCriteria ?? []).filter((x) => x.id === add.id).length > 1) {
|
|
81
|
+
throw new TaskContractConflictError(`duplicate criterion id "${add.id}"`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return TaskContractSchema.parse({
|
|
85
|
+
version: contract.version + 1,
|
|
86
|
+
goal: update.goal ?? contract.goal,
|
|
87
|
+
constraints: [...constraints, ...(update.addConstraints ?? [])],
|
|
88
|
+
acceptanceCriteria: [...criteria, ...(update.addCriteria ?? [])],
|
|
89
|
+
source: {
|
|
90
|
+
userSeq: update.nextUserSeq ?? contract.source.userSeq,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** Project the contract onto the compaction state shape (§14.5). */
|
|
95
|
+
export function contractToCompactionFields(contract) {
|
|
96
|
+
return {
|
|
97
|
+
goal: contract.goal,
|
|
98
|
+
userConstraints: contract.constraints.filter((c) => c.source === 'user' && c.required).map((c) => c.text),
|
|
99
|
+
activeCriteria: contract.acceptanceCriteria.map((c) => ({ id: c.id, required: c.required })),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/** Derive an initial contract from the first user message (heuristic, CLI-side seed). */
|
|
103
|
+
export function deriveInitialContract(userSeq, text) {
|
|
104
|
+
const lines = text.split(/\r?\n/).map((l) => l.trim()).filter(Boolean);
|
|
105
|
+
// Strip list markers before heuristic matching ("- do not…" → "do not…").
|
|
106
|
+
const stripped = lines.map((l) => l.replace(/^[-*]\s+/, ''));
|
|
107
|
+
const constraintLines = stripped.filter((l) => /^(do not|don't|never|no |non |without changing|keep)/i.test(l));
|
|
108
|
+
const criteriaLines = stripped
|
|
109
|
+
.filter((l) => /^\[?\s*[x ]?\s*\]?\s*/.test(l) === false ? /^(acceptance|verify|test)[:\s]/i.test(l) : true)
|
|
110
|
+
.map((l) => l.replace(/^\[?\s*[x ]?\s*\]?\s*/, '').replace(/^(acceptance|verify|test)[:\s]+/i, ''));
|
|
111
|
+
return TaskContractSchema.parse({
|
|
112
|
+
version: 1,
|
|
113
|
+
goal: lines[0] ?? text.slice(0, 200),
|
|
114
|
+
constraints: constraintLines.map((t, i) => ({
|
|
115
|
+
id: `uc-${i + 1}`,
|
|
116
|
+
text: t,
|
|
117
|
+
source: 'user',
|
|
118
|
+
required: true,
|
|
119
|
+
})),
|
|
120
|
+
acceptanceCriteria: criteriaLines.map((t, i) => ({
|
|
121
|
+
id: `ac-${i + 1}`,
|
|
122
|
+
text: t,
|
|
123
|
+
source: 'user',
|
|
124
|
+
required: true,
|
|
125
|
+
})),
|
|
126
|
+
source: { userSeq },
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=taskContract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskContract.js","sourceRoot":"","sources":["../../src/session/taskContract.ts"],"names":[],"mappings":"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"}
|
package/dist/session/types.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export type SessionActor = z.infer<typeof SessionActorSchema>;
|
|
|
33
33
|
* `session.compacted` with `{fromSeq,toSeq,checkpoint}` shadows that range
|
|
34
34
|
* in deriveMessages(); `{summary}` without a range is legacy (append-only).
|
|
35
35
|
*/
|
|
36
|
-
export declare const SESSION_EVENT_KINDS: readonly ["session.started", "session.resumed", "session.ended", "session.forked", "user.message", "assistant.message", "tool.call", "tool.result", "tool.interrupted", "context.injected", "session.compacted", "task.created", "task.updated", "kraken.task", "council.member", "mission.phase", "mission.replan", "mission.progress", "verification.run", "verification.evidence", "note"];
|
|
36
|
+
export declare const SESSION_EVENT_KINDS: readonly ["session.started", "session.resumed", "session.ended", "session.forked", "session.harness_manifest", "user.message", "assistant.message", "tool.call", "tool.result", "tool.interrupted", "context.injected", "session.compacted", "task.created", "task.updated", "task.contract", "task.contract_updated", "kraken.task", "council.member", "mission.phase", "mission.replan", "mission.progress", "verification.run", "verification.evidence", "resource.snapshot", "resource.limit_reached", "resource.reserve_entered", "note"];
|
|
37
37
|
export type SessionEventKind = (typeof SESSION_EVENT_KINDS)[number];
|
|
38
38
|
export declare const SessionEventEnvelopeSchema: z.ZodObject<{
|
|
39
39
|
schemaVersion: z.ZodLiteral<1>;
|
|
@@ -46,6 +46,7 @@ export declare const SessionEventEnvelopeSchema: z.ZodObject<{
|
|
|
46
46
|
"session.resumed": "session.resumed";
|
|
47
47
|
"session.ended": "session.ended";
|
|
48
48
|
"session.forked": "session.forked";
|
|
49
|
+
"session.harness_manifest": "session.harness_manifest";
|
|
49
50
|
"user.message": "user.message";
|
|
50
51
|
"assistant.message": "assistant.message";
|
|
51
52
|
"tool.call": "tool.call";
|
|
@@ -55,6 +56,8 @@ export declare const SessionEventEnvelopeSchema: z.ZodObject<{
|
|
|
55
56
|
"session.compacted": "session.compacted";
|
|
56
57
|
"task.created": "task.created";
|
|
57
58
|
"task.updated": "task.updated";
|
|
59
|
+
"task.contract": "task.contract";
|
|
60
|
+
"task.contract_updated": "task.contract_updated";
|
|
58
61
|
"kraken.task": "kraken.task";
|
|
59
62
|
"council.member": "council.member";
|
|
60
63
|
"mission.phase": "mission.phase";
|
|
@@ -62,6 +65,9 @@ export declare const SessionEventEnvelopeSchema: z.ZodObject<{
|
|
|
62
65
|
"mission.progress": "mission.progress";
|
|
63
66
|
"verification.run": "verification.run";
|
|
64
67
|
"verification.evidence": "verification.evidence";
|
|
68
|
+
"resource.snapshot": "resource.snapshot";
|
|
69
|
+
"resource.limit_reached": "resource.limit_reached";
|
|
70
|
+
"resource.reserve_entered": "resource.reserve_entered";
|
|
65
71
|
}>;
|
|
66
72
|
actor: z.ZodObject<{
|
|
67
73
|
type: z.ZodEnum<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAK7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAK7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,ghBA2CtB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,0BAA0B;AAC1B,eAAO,MAAM,UAAU,EAAE,YAA+B,CAAC;AACzD,eAAO,MAAM,WAAW,EAAE,YAAgC,CAAC;AAC3D,eAAO,MAAM,YAAY,EAAE,YAAiC,CAAC"}
|
package/dist/session/types.js
CHANGED
|
@@ -32,6 +32,10 @@ export const SESSION_EVENT_KINDS = [
|
|
|
32
32
|
'session.resumed',
|
|
33
33
|
'session.ended',
|
|
34
34
|
'session.forked',
|
|
35
|
+
// 2.6 Track A (harness manifest): canonical harness fingerprint recorded
|
|
36
|
+
// once at session start / manifest change. State-only (never model-surface):
|
|
37
|
+
// data = {manifest, manifestHash}. Schema review per ADR-0021.
|
|
38
|
+
'session.harness_manifest',
|
|
35
39
|
'user.message',
|
|
36
40
|
'assistant.message',
|
|
37
41
|
'tool.call',
|
|
@@ -42,6 +46,11 @@ export const SESSION_EVENT_KINDS = [
|
|
|
42
46
|
'session.compacted',
|
|
43
47
|
'task.created',
|
|
44
48
|
'task.updated',
|
|
49
|
+
// 2.6 Track A (doc §14): first-class task contract. Append-only,
|
|
50
|
+
// monotone versioning (task.contract_updated supersedes, never rewrites).
|
|
51
|
+
// State-only: compaction projects it into CompactionStateSnapshot.
|
|
52
|
+
'task.contract',
|
|
53
|
+
'task.contract_updated',
|
|
45
54
|
'kraken.task',
|
|
46
55
|
'council.member',
|
|
47
56
|
'mission.phase',
|
|
@@ -54,6 +63,12 @@ export const SESSION_EVENT_KINDS = [
|
|
|
54
63
|
// the session-log anchor EvidenceRef.seq points at (command output, fs
|
|
55
64
|
// observation, digest). Not model-surface. Schema review per ADR-0021.
|
|
56
65
|
'verification.evidence',
|
|
66
|
+
// 2.6 Track B (resource-aware execution, doc §9-§12): host-owned resource
|
|
67
|
+
// state. `resource.snapshot` is model-surface with LATEST-ONLY projection
|
|
68
|
+
// (doc §10.2 — see modelSurface.ts); limit/reserve events are state-only.
|
|
69
|
+
'resource.snapshot',
|
|
70
|
+
'resource.limit_reached',
|
|
71
|
+
'resource.reserve_entered',
|
|
57
72
|
'note',
|
|
58
73
|
];
|
|
59
74
|
export const SessionEventEnvelopeSchema = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7D,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChC,wDAAwD;IACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAGH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,cAAc;IACd,mBAAmB;IACnB,WAAW;IACX,aAAa;IACb,qEAAqE;IACrE,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,cAAc;IACd,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,6EAA6E;IAC7E,0EAA0E;IAC1E,kBAAkB;IAClB,kBAAkB;IAClB,wEAAwE;IACxE,uEAAuE;IACvE,uEAAuE;IACvE,uBAAuB;IACvB,MAAM;CACE,CAAC;AAGX,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,6EAA6E;IAC7E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACjC,KAAK,EAAE,kBAAkB;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;CACxC,CAAC,CAAC;AAUH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,UAAU,GAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,WAAW,GAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3D,MAAM,CAAC,MAAM,YAAY,GAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7D,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChC,wDAAwD;IACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAGH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,yEAAyE;IACzE,6EAA6E;IAC7E,+DAA+D;IAC/D,0BAA0B;IAC1B,cAAc;IACd,mBAAmB;IACnB,WAAW;IACX,aAAa;IACb,qEAAqE;IACrE,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,cAAc;IACd,cAAc;IACd,iEAAiE;IACjE,0EAA0E;IAC1E,mEAAmE;IACnE,eAAe;IACf,uBAAuB;IACvB,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,6EAA6E;IAC7E,0EAA0E;IAC1E,kBAAkB;IAClB,kBAAkB;IAClB,wEAAwE;IACxE,uEAAuE;IACvE,uEAAuE;IACvE,uBAAuB;IACvB,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,mBAAmB;IACnB,wBAAwB;IACxB,0BAA0B;IAC1B,MAAM;CACE,CAAC;AAGX,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,6EAA6E;IAC7E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACjC,KAAK,EAAE,kBAAkB;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;CACxC,CAAC,CAAC;AAUH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,UAAU,GAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,WAAW,GAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3D,MAAM,CAAC,MAAM,YAAY,GAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC"}
|