@zelari/core 1.48.1 → 2.0.0-alpha.2
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/agents/promptModules.d.ts +9 -0
- package/dist/agents/promptModules.d.ts.map +1 -1
- package/dist/agents/promptModules.js +34 -0
- package/dist/agents/promptModules.js.map +1 -1
- package/dist/experimental.d.ts +17 -0
- package/dist/experimental.d.ts.map +1 -0
- package/dist/experimental.js +31 -0
- package/dist/experimental.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/mission/index.d.ts +5 -0
- package/dist/mission/index.d.ts.map +1 -0
- package/dist/mission/index.js +5 -0
- package/dist/mission/index.js.map +1 -0
- package/dist/mission/missionState.d.ts +37 -0
- package/dist/mission/missionState.d.ts.map +1 -0
- package/dist/mission/missionState.js +61 -0
- package/dist/mission/missionState.js.map +1 -0
- package/dist/runtime/executionContext.d.ts +46 -0
- package/dist/runtime/executionContext.d.ts.map +1 -0
- package/dist/runtime/executionContext.js +63 -0
- package/dist/runtime/executionContext.js.map +1 -0
- package/dist/runtime/index.d.ts +10 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +10 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/memoryProviders.d.ts +27 -0
- package/dist/runtime/memoryProviders.d.ts.map +1 -0
- package/dist/runtime/memoryProviders.js +64 -0
- package/dist/runtime/memoryProviders.js.map +1 -0
- package/dist/runtime/nodeProviders.d.ts +21 -0
- package/dist/runtime/nodeProviders.d.ts.map +1 -0
- package/dist/runtime/nodeProviders.js +138 -0
- package/dist/runtime/nodeProviders.js.map +1 -0
- package/dist/runtime/profiles.d.ts +44 -0
- package/dist/runtime/profiles.d.ts.map +1 -0
- package/dist/runtime/profiles.js +91 -0
- package/dist/runtime/profiles.js.map +1 -0
- package/dist/runtime/providers.d.ts +85 -0
- package/dist/runtime/providers.d.ts.map +1 -0
- package/dist/runtime/providers.js +58 -0
- package/dist/runtime/providers.js.map +1 -0
- package/dist/runtime/worktreeWorkspace.d.ts +38 -0
- package/dist/runtime/worktreeWorkspace.d.ts.map +1 -0
- package/dist/runtime/worktreeWorkspace.js +80 -0
- package/dist/runtime/worktreeWorkspace.js.map +1 -0
- package/dist/session/exportSession.d.ts +31 -0
- package/dist/session/exportSession.d.ts.map +1 -0
- package/dist/session/exportSession.js +37 -0
- package/dist/session/exportSession.js.map +1 -0
- package/dist/session/index.d.ts +15 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +15 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/lineage.d.ts +38 -0
- package/dist/session/lineage.d.ts.map +1 -0
- package/dist/session/lineage.js +69 -0
- package/dist/session/lineage.js.map +1 -0
- package/dist/session/modelSurface.d.ts +43 -0
- package/dist/session/modelSurface.d.ts.map +1 -0
- package/dist/session/modelSurface.js +96 -0
- package/dist/session/modelSurface.js.map +1 -0
- package/dist/session/replay.d.ts +61 -0
- package/dist/session/replay.d.ts.map +1 -0
- package/dist/session/replay.js +137 -0
- package/dist/session/replay.js.map +1 -0
- package/dist/session/store.d.ts +60 -0
- package/dist/session/store.d.ts.map +1 -0
- package/dist/session/store.js +117 -0
- package/dist/session/store.js.map +1 -0
- package/dist/session/types.d.ts +85 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +62 -0
- package/dist/session/types.js.map +1 -0
- package/dist/session/writer.d.ts +44 -0
- package/dist/session/writer.d.ts.map +1 -0
- package/dist/session/writer.js +114 -0
- package/dist/session/writer.js.map +1 -0
- package/dist/shared/events.d.ts +76 -2
- package/dist/shared/events.d.ts.map +1 -1
- package/dist/shared/events.js +6 -0
- package/dist/shared/events.js.map +1 -1
- package/dist/skills/index.d.ts +2 -2
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/verification/completionPolicy.d.ts +33 -0
- package/dist/verification/completionPolicy.d.ts.map +1 -0
- package/dist/verification/completionPolicy.js +68 -0
- package/dist/verification/completionPolicy.js.map +1 -0
- package/dist/verification/criteriaPack.v1.d.ts +27 -0
- package/dist/verification/criteriaPack.v1.d.ts.map +1 -0
- package/dist/verification/criteriaPack.v1.js +58 -0
- package/dist/verification/criteriaPack.v1.js.map +1 -0
- package/dist/verification/engine.d.ts +38 -0
- package/dist/verification/engine.d.ts.map +1 -0
- package/dist/verification/engine.js +163 -0
- package/dist/verification/engine.js.map +1 -0
- package/dist/verification/index.d.ts +11 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +11 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/metrics.d.ts +26 -0
- package/dist/verification/metrics.d.ts.map +1 -0
- package/dist/verification/metrics.js +29 -0
- package/dist/verification/metrics.js.map +1 -0
- package/dist/verification/types.d.ts +161 -0
- package/dist/verification/types.d.ts.map +1 -0
- package/dist/verification/types.js +92 -0
- package/dist/verification/types.js.map +1 -0
- package/dist/verification/verifier.d.ts +133 -0
- package/dist/verification/verifier.d.ts.map +1 -0
- package/dist/verification/verifier.js +215 -0
- package/dist/verification/verifier.js.map +1 -0
- package/package.json +17 -1
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session/store.ts — session directory management.
|
|
3
|
+
*
|
|
4
|
+
* Default location (ADR-0016 ratification): `<workspaceRoot>/.zelari/sessions/
|
|
5
|
+
* <sessionId>/events.jsonl`, overridable via `ZELARI_SESSIONS_DIR` or the
|
|
6
|
+
* explicit option. The legacy home-level sidecar remains read-only compat.
|
|
7
|
+
*/
|
|
8
|
+
import { promises as fs } from 'node:fs';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import crypto from 'node:crypto';
|
|
11
|
+
import { SessionLogWriter } from './writer.js';
|
|
12
|
+
import { buildProjection, readSessionLog } from './replay.js';
|
|
13
|
+
import { ACTOR_SYSTEM } from './types.js';
|
|
14
|
+
export function resolveSessionsDir(options = {}) {
|
|
15
|
+
if (options.baseDir)
|
|
16
|
+
return options.baseDir;
|
|
17
|
+
const envDir = options.env?.ZELARI_SESSIONS_DIR ?? process.env.ZELARI_SESSIONS_DIR;
|
|
18
|
+
if (envDir)
|
|
19
|
+
return envDir;
|
|
20
|
+
const root = options.workspaceRoot ?? process.cwd();
|
|
21
|
+
return path.join(root, '.zelari', 'sessions');
|
|
22
|
+
}
|
|
23
|
+
export class SessionStore {
|
|
24
|
+
baseDir;
|
|
25
|
+
constructor(baseDir) {
|
|
26
|
+
this.baseDir = baseDir;
|
|
27
|
+
}
|
|
28
|
+
static withDefaults(options = {}) {
|
|
29
|
+
return new SessionStore(resolveSessionsDir(options));
|
|
30
|
+
}
|
|
31
|
+
get dir() {
|
|
32
|
+
return this.baseDir;
|
|
33
|
+
}
|
|
34
|
+
sessionDir(sessionId) {
|
|
35
|
+
return path.join(this.baseDir, sessionId);
|
|
36
|
+
}
|
|
37
|
+
eventsPath(sessionId) {
|
|
38
|
+
return path.join(this.sessionDir(sessionId), 'events.jsonl');
|
|
39
|
+
}
|
|
40
|
+
/** Create a new session and its writer; appends `session.started`. */
|
|
41
|
+
async create(options = {}) {
|
|
42
|
+
const sessionId = crypto.randomUUID();
|
|
43
|
+
const writer = await SessionLogWriter.open(this.sessionDir(sessionId), sessionId, 1);
|
|
44
|
+
await writer.append({
|
|
45
|
+
kind: 'session.started',
|
|
46
|
+
actor: ACTOR_SYSTEM,
|
|
47
|
+
data: {
|
|
48
|
+
reason: options.reason ?? 'new',
|
|
49
|
+
profile: options.profile,
|
|
50
|
+
workspace: options.workspace,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
return { sessionId, writer };
|
|
54
|
+
}
|
|
55
|
+
/** Replay a session log (tolerant read). */
|
|
56
|
+
async read(sessionId) {
|
|
57
|
+
return readSessionLog(this.eventsPath(sessionId));
|
|
58
|
+
}
|
|
59
|
+
/** Materialized view of a session. */
|
|
60
|
+
async projection(sessionId) {
|
|
61
|
+
const report = await this.read(sessionId);
|
|
62
|
+
return buildProjection(report.events, report.issues);
|
|
63
|
+
}
|
|
64
|
+
/** Reopen a session for writing (continues seq after lastSeq). Pure: no event appended. */
|
|
65
|
+
async open(sessionId) {
|
|
66
|
+
const report = await this.read(sessionId);
|
|
67
|
+
if (report.events.length === 0 && report.issues.length === 0) {
|
|
68
|
+
throw new Error(`Session not found: ${sessionId} (${this.eventsPath(sessionId)})`);
|
|
69
|
+
}
|
|
70
|
+
const lastSeq = report.events[report.events.length - 1]?.seq ?? 0;
|
|
71
|
+
const writer = await SessionLogWriter.open(this.sessionDir(sessionId), sessionId, lastSeq + 1);
|
|
72
|
+
return { writer, report, projection: buildProjection(report.events, report.issues) };
|
|
73
|
+
}
|
|
74
|
+
async exists(sessionId) {
|
|
75
|
+
try {
|
|
76
|
+
await fs.access(this.eventsPath(sessionId));
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** Summaries of all stored sessions (newest first by startedAt). */
|
|
84
|
+
async list() {
|
|
85
|
+
let names;
|
|
86
|
+
try {
|
|
87
|
+
names = await fs.readdir(this.baseDir);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
const summaries = [];
|
|
93
|
+
for (const name of names) {
|
|
94
|
+
const report = await readSessionLog(this.eventsPath(name));
|
|
95
|
+
if (report.events.length === 0 && report.issues.length === 0)
|
|
96
|
+
continue;
|
|
97
|
+
const projection = buildProjection(report.events);
|
|
98
|
+
summaries.push({
|
|
99
|
+
sessionId: name,
|
|
100
|
+
lastSeq: projection.lastSeq,
|
|
101
|
+
eventCount: projection.eventCount,
|
|
102
|
+
startedAt: projection.startedAt,
|
|
103
|
+
endedAt: projection.endedAt,
|
|
104
|
+
forkParent: projection.fork?.parentSessionId,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
summaries.sort((a, b) => (b.startedAt ?? 0) - (a.startedAt ?? 0));
|
|
108
|
+
return summaries;
|
|
109
|
+
}
|
|
110
|
+
/** End a session cleanly (appends `session.ended` and releases the writer). */
|
|
111
|
+
async end(writer, reason = 'completed') {
|
|
112
|
+
const event = { kind: 'session.ended', actor: ACTOR_SYSTEM, data: { reason } };
|
|
113
|
+
await writer.append(event);
|
|
114
|
+
await writer.close();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/session/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session/types.ts — Session spine v1: envelope + event vocabulary (ADR-0016/0021).
|
|
3
|
+
*
|
|
4
|
+
* The session log is the single source of truth for what the model saw and
|
|
5
|
+
* what the harness did. One JSON object per line:
|
|
6
|
+
*
|
|
7
|
+
* {"schemaVersion":1,"sessionId":"…","seq":7,"ts":1755…,"kind":"tool.result",
|
|
8
|
+
* "actor":{"type":"agent"},"data":{…}}
|
|
9
|
+
*
|
|
10
|
+
* Invariant (P1): model-visible ⟺ logged — every kind that feeds the model
|
|
11
|
+
* input must appear in MODEL_SURFACE_KINDS (see modelSurface.ts). The
|
|
12
|
+
* vocabulary is closed: new kinds require a schema review (ADR-0021).
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
/** Bump on breaking envelope/event changes; migrations documented in MIGRATION.md. */
|
|
16
|
+
export declare const SESSION_SCHEMA_VERSION = 1;
|
|
17
|
+
export declare const SessionActorSchema: z.ZodObject<{
|
|
18
|
+
type: z.ZodEnum<{
|
|
19
|
+
user: "user";
|
|
20
|
+
system: "system";
|
|
21
|
+
tool: "tool";
|
|
22
|
+
agent: "agent";
|
|
23
|
+
subagent: "subagent";
|
|
24
|
+
}>;
|
|
25
|
+
id: z.ZodOptional<z.ZodString>;
|
|
26
|
+
role: z.ZodOptional<z.ZodString>;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
export type SessionActor = z.infer<typeof SessionActorSchema>;
|
|
29
|
+
/**
|
|
30
|
+
* Closed event vocabulary (surface + state events).
|
|
31
|
+
* Surface (model-visible): user.message, assistant.message, tool.call,
|
|
32
|
+
* tool.result, session.compacted. Everything else is state/derived.
|
|
33
|
+
*/
|
|
34
|
+
export declare const SESSION_EVENT_KINDS: readonly ["session.started", "session.resumed", "session.ended", "session.forked", "user.message", "assistant.message", "tool.call", "tool.result", "context.injected", "session.compacted", "task.created", "task.updated", "kraken.task", "council.member", "mission.phase", "mission.replan", "verification.run", "note"];
|
|
35
|
+
export type SessionEventKind = (typeof SESSION_EVENT_KINDS)[number];
|
|
36
|
+
export declare const SessionEventEnvelopeSchema: z.ZodObject<{
|
|
37
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
38
|
+
sessionId: z.ZodString;
|
|
39
|
+
seq: z.ZodNumber;
|
|
40
|
+
ts: z.ZodNumber;
|
|
41
|
+
kind: z.ZodEnum<{
|
|
42
|
+
note: "note";
|
|
43
|
+
"session.started": "session.started";
|
|
44
|
+
"session.resumed": "session.resumed";
|
|
45
|
+
"session.ended": "session.ended";
|
|
46
|
+
"session.forked": "session.forked";
|
|
47
|
+
"user.message": "user.message";
|
|
48
|
+
"assistant.message": "assistant.message";
|
|
49
|
+
"tool.call": "tool.call";
|
|
50
|
+
"tool.result": "tool.result";
|
|
51
|
+
"context.injected": "context.injected";
|
|
52
|
+
"session.compacted": "session.compacted";
|
|
53
|
+
"task.created": "task.created";
|
|
54
|
+
"task.updated": "task.updated";
|
|
55
|
+
"kraken.task": "kraken.task";
|
|
56
|
+
"council.member": "council.member";
|
|
57
|
+
"mission.phase": "mission.phase";
|
|
58
|
+
"mission.replan": "mission.replan";
|
|
59
|
+
"verification.run": "verification.run";
|
|
60
|
+
}>;
|
|
61
|
+
actor: z.ZodObject<{
|
|
62
|
+
type: z.ZodEnum<{
|
|
63
|
+
user: "user";
|
|
64
|
+
system: "system";
|
|
65
|
+
tool: "tool";
|
|
66
|
+
agent: "agent";
|
|
67
|
+
subagent: "subagent";
|
|
68
|
+
}>;
|
|
69
|
+
id: z.ZodOptional<z.ZodString>;
|
|
70
|
+
role: z.ZodOptional<z.ZodString>;
|
|
71
|
+
}, z.core.$strip>;
|
|
72
|
+
data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
export type SessionEventEnvelope = z.infer<typeof SessionEventEnvelopeSchema>;
|
|
75
|
+
/** Event payload without writer-assigned fields (seq/ts/sessionId/schemaVersion). */
|
|
76
|
+
export interface SessionEventInput {
|
|
77
|
+
kind: SessionEventKind;
|
|
78
|
+
actor: SessionActor;
|
|
79
|
+
data?: Record<string, unknown>;
|
|
80
|
+
}
|
|
81
|
+
/** Convenience actors. */
|
|
82
|
+
export declare const ACTOR_USER: SessionActor;
|
|
83
|
+
export declare const ACTOR_AGENT: SessionActor;
|
|
84
|
+
export declare const ACTOR_SYSTEM: SessionActor;
|
|
85
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,8TAmBtB,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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session/types.ts — Session spine v1: envelope + event vocabulary (ADR-0016/0021).
|
|
3
|
+
*
|
|
4
|
+
* The session log is the single source of truth for what the model saw and
|
|
5
|
+
* what the harness did. One JSON object per line:
|
|
6
|
+
*
|
|
7
|
+
* {"schemaVersion":1,"sessionId":"…","seq":7,"ts":1755…,"kind":"tool.result",
|
|
8
|
+
* "actor":{"type":"agent"},"data":{…}}
|
|
9
|
+
*
|
|
10
|
+
* Invariant (P1): model-visible ⟺ logged — every kind that feeds the model
|
|
11
|
+
* input must appear in MODEL_SURFACE_KINDS (see modelSurface.ts). The
|
|
12
|
+
* vocabulary is closed: new kinds require a schema review (ADR-0021).
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
/** Bump on breaking envelope/event changes; migrations documented in MIGRATION.md. */
|
|
16
|
+
export const SESSION_SCHEMA_VERSION = 1;
|
|
17
|
+
export const SessionActorSchema = z.object({
|
|
18
|
+
type: z.enum(['user', 'agent', 'system', 'subagent', 'tool']),
|
|
19
|
+
id: z.string().min(1).optional(),
|
|
20
|
+
/** Human label for display (e.g. role/persona name). */
|
|
21
|
+
role: z.string().min(1).optional(),
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Closed event vocabulary (surface + state events).
|
|
25
|
+
* Surface (model-visible): user.message, assistant.message, tool.call,
|
|
26
|
+
* tool.result, session.compacted. Everything else is state/derived.
|
|
27
|
+
*/
|
|
28
|
+
export const SESSION_EVENT_KINDS = [
|
|
29
|
+
'session.started',
|
|
30
|
+
'session.resumed',
|
|
31
|
+
'session.ended',
|
|
32
|
+
'session.forked',
|
|
33
|
+
'user.message',
|
|
34
|
+
'assistant.message',
|
|
35
|
+
'tool.call',
|
|
36
|
+
'tool.result',
|
|
37
|
+
'context.injected',
|
|
38
|
+
'session.compacted',
|
|
39
|
+
'task.created',
|
|
40
|
+
'task.updated',
|
|
41
|
+
'kraken.task',
|
|
42
|
+
'council.member',
|
|
43
|
+
'mission.phase',
|
|
44
|
+
'mission.replan',
|
|
45
|
+
'verification.run',
|
|
46
|
+
'note',
|
|
47
|
+
];
|
|
48
|
+
export const SessionEventEnvelopeSchema = z.object({
|
|
49
|
+
schemaVersion: z.literal(SESSION_SCHEMA_VERSION),
|
|
50
|
+
sessionId: z.string().min(1),
|
|
51
|
+
/** Monotonic, gap-free, 1-based. Assigned by the writer after validation. */
|
|
52
|
+
seq: z.number().int().positive(),
|
|
53
|
+
ts: z.number().int().nonnegative(),
|
|
54
|
+
kind: z.enum(SESSION_EVENT_KINDS),
|
|
55
|
+
actor: SessionActorSchema,
|
|
56
|
+
data: z.record(z.string(), z.unknown()),
|
|
57
|
+
});
|
|
58
|
+
/** Convenience actors. */
|
|
59
|
+
export const ACTOR_USER = { type: 'user' };
|
|
60
|
+
export const ACTOR_AGENT = { type: 'agent' };
|
|
61
|
+
export const ACTOR_SYSTEM = { type: 'system' };
|
|
62
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +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;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,cAAc;IACd,mBAAmB;IACnB,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,mBAAmB;IACnB,cAAc;IACd,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session/writer.ts — single-writer append-only JSONL log with ownership lock.
|
|
3
|
+
*
|
|
4
|
+
* Ownership: `<sessionDir>/writer.lock` is created with flag 'wx' holding
|
|
5
|
+
* `{ownership, pid, ts}`. A second writer gets SessionLogLockedError; a stale
|
|
6
|
+
* lock (older than staleLockMs) may be taken over. `seq` is assigned after
|
|
7
|
+
* Zod validation of the envelope — a rejected event never consumes a seq.
|
|
8
|
+
*/
|
|
9
|
+
import { type SessionEventEnvelope, type SessionEventInput } from './types.js';
|
|
10
|
+
export declare class SessionLogLockedError extends Error {
|
|
11
|
+
readonly sessionPath: string;
|
|
12
|
+
readonly owner: string;
|
|
13
|
+
readonly code = "SESSION_LOG_LOCKED";
|
|
14
|
+
constructor(sessionPath: string, owner: string);
|
|
15
|
+
}
|
|
16
|
+
export interface SessionLogWriterOptions {
|
|
17
|
+
/** Locks older than this may be taken over. Default 10 minutes. */
|
|
18
|
+
staleLockMs?: number;
|
|
19
|
+
/** Injectable clock for tests. */
|
|
20
|
+
now?: () => number;
|
|
21
|
+
}
|
|
22
|
+
export declare class SessionLogWriter {
|
|
23
|
+
private readonly sessionId;
|
|
24
|
+
private readonly eventsPath;
|
|
25
|
+
private readonly lockPath;
|
|
26
|
+
private readonly ownership;
|
|
27
|
+
private readonly staleLockMs;
|
|
28
|
+
private readonly now;
|
|
29
|
+
private nextSeq;
|
|
30
|
+
private closed;
|
|
31
|
+
private chain;
|
|
32
|
+
private constructor();
|
|
33
|
+
/** Create the writer and acquire the ownership lock. */
|
|
34
|
+
static open(sessionDir: string, sessionId: string, startSeq?: number, options?: SessionLogWriterOptions): Promise<SessionLogWriter>;
|
|
35
|
+
get path(): string;
|
|
36
|
+
get currentSeq(): number;
|
|
37
|
+
private lockPayload;
|
|
38
|
+
private acquireLock;
|
|
39
|
+
/** Append one event; returns the validated envelope with its assigned seq. */
|
|
40
|
+
append(input: SessionEventInput): Promise<SessionEventEnvelope>;
|
|
41
|
+
/** Flush pending appends, mark closed, release the ownership lock. */
|
|
42
|
+
close(): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/session/writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAEpB,qBAAa,qBAAsB,SAAQ,KAAK;aAG5B,WAAW,EAAE,MAAM;aACnB,KAAK,EAAE,MAAM;IAH/B,QAAQ,CAAC,IAAI,wBAAwB;gBAEnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM;CAKhC;AAED,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAID,qBAAa,gBAAgB;IAYzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAX5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAoC;IAEjD,OAAO;IAaP,wDAAwD;WAC3C,IAAI,CACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,SAAI,EACZ,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,gBAAgB,CAAC;IAO5B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,OAAO,CAAC,WAAW;YAIL,WAAW;IAyBzB,8EAA8E;IACxE,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmBrE,sEAAsE;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session/writer.ts — single-writer append-only JSONL log with ownership lock.
|
|
3
|
+
*
|
|
4
|
+
* Ownership: `<sessionDir>/writer.lock` is created with flag 'wx' holding
|
|
5
|
+
* `{ownership, pid, ts}`. A second writer gets SessionLogLockedError; a stale
|
|
6
|
+
* lock (older than staleLockMs) may be taken over. `seq` is assigned after
|
|
7
|
+
* Zod validation of the envelope — a rejected event never consumes a seq.
|
|
8
|
+
*/
|
|
9
|
+
import { promises as fs } from 'node:fs';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import crypto from 'node:crypto';
|
|
12
|
+
import { SESSION_SCHEMA_VERSION, SessionEventEnvelopeSchema, } from './types.js';
|
|
13
|
+
export class SessionLogLockedError extends Error {
|
|
14
|
+
sessionPath;
|
|
15
|
+
owner;
|
|
16
|
+
code = 'SESSION_LOG_LOCKED';
|
|
17
|
+
constructor(sessionPath, owner) {
|
|
18
|
+
super(`Session log is locked by another writer: ${sessionPath} (owner=${owner})`);
|
|
19
|
+
this.sessionPath = sessionPath;
|
|
20
|
+
this.owner = owner;
|
|
21
|
+
this.name = 'SessionLogLockedError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const DEFAULT_STALE_LOCK_MS = 10 * 60 * 1000;
|
|
25
|
+
export class SessionLogWriter {
|
|
26
|
+
sessionId;
|
|
27
|
+
eventsPath;
|
|
28
|
+
lockPath;
|
|
29
|
+
ownership = crypto.randomUUID();
|
|
30
|
+
staleLockMs;
|
|
31
|
+
now;
|
|
32
|
+
nextSeq;
|
|
33
|
+
closed = false;
|
|
34
|
+
chain = Promise.resolve();
|
|
35
|
+
constructor(sessionDir, sessionId, startSeq, options) {
|
|
36
|
+
this.sessionId = sessionId;
|
|
37
|
+
this.eventsPath = path.join(sessionDir, 'events.jsonl');
|
|
38
|
+
this.lockPath = path.join(sessionDir, 'writer.lock');
|
|
39
|
+
this.nextSeq = startSeq;
|
|
40
|
+
this.staleLockMs = options.staleLockMs ?? DEFAULT_STALE_LOCK_MS;
|
|
41
|
+
this.now = options.now ?? Date.now;
|
|
42
|
+
}
|
|
43
|
+
/** Create the writer and acquire the ownership lock. */
|
|
44
|
+
static async open(sessionDir, sessionId, startSeq = 1, options = {}) {
|
|
45
|
+
const writer = new SessionLogWriter(sessionDir, sessionId, startSeq, options);
|
|
46
|
+
await fs.mkdir(sessionDir, { recursive: true });
|
|
47
|
+
await writer.acquireLock();
|
|
48
|
+
return writer;
|
|
49
|
+
}
|
|
50
|
+
get path() {
|
|
51
|
+
return this.eventsPath;
|
|
52
|
+
}
|
|
53
|
+
get currentSeq() {
|
|
54
|
+
return this.nextSeq - 1;
|
|
55
|
+
}
|
|
56
|
+
lockPayload() {
|
|
57
|
+
return JSON.stringify({ ownership: this.ownership, pid: process.pid, ts: this.now() });
|
|
58
|
+
}
|
|
59
|
+
async acquireLock() {
|
|
60
|
+
const payload = this.lockPayload();
|
|
61
|
+
try {
|
|
62
|
+
await fs.writeFile(this.lockPath, payload, { encoding: 'utf-8', flag: 'wx', mode: 0o644 });
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
if (err.code !== 'EEXIST')
|
|
67
|
+
throw err;
|
|
68
|
+
}
|
|
69
|
+
const existing = await fs.readFile(this.lockPath, 'utf-8').catch(() => null);
|
|
70
|
+
let owner = 'unknown';
|
|
71
|
+
let ts = 0;
|
|
72
|
+
if (existing) {
|
|
73
|
+
try {
|
|
74
|
+
const parsed = JSON.parse(existing);
|
|
75
|
+
owner = parsed.ownership ?? owner;
|
|
76
|
+
ts = parsed.ts ?? ts;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Corrupt lock file — treat as stale.
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const stale = ts > 0 && this.now() - ts > this.staleLockMs;
|
|
83
|
+
if (!stale)
|
|
84
|
+
throw new SessionLogLockedError(this.eventsPath, owner);
|
|
85
|
+
await fs.writeFile(this.lockPath, payload, { encoding: 'utf-8' });
|
|
86
|
+
}
|
|
87
|
+
/** Append one event; returns the validated envelope with its assigned seq. */
|
|
88
|
+
async append(input) {
|
|
89
|
+
if (this.closed)
|
|
90
|
+
throw new Error(`SessionLogWriter is closed (${this.eventsPath})`);
|
|
91
|
+
const envelope = {
|
|
92
|
+
schemaVersion: SESSION_SCHEMA_VERSION,
|
|
93
|
+
sessionId: this.sessionId,
|
|
94
|
+
seq: this.nextSeq,
|
|
95
|
+
ts: this.now(),
|
|
96
|
+
kind: input.kind,
|
|
97
|
+
actor: input.actor,
|
|
98
|
+
data: input.data ?? {},
|
|
99
|
+
};
|
|
100
|
+
SessionEventEnvelopeSchema.parse(envelope);
|
|
101
|
+
this.nextSeq += 1;
|
|
102
|
+
const line = JSON.stringify(envelope) + '\n';
|
|
103
|
+
this.chain = this.chain.then(() => fs.appendFile(this.eventsPath, line, 'utf-8'));
|
|
104
|
+
await this.chain;
|
|
105
|
+
return envelope;
|
|
106
|
+
}
|
|
107
|
+
/** Flush pending appends, mark closed, release the ownership lock. */
|
|
108
|
+
async close() {
|
|
109
|
+
await this.chain;
|
|
110
|
+
this.closed = true;
|
|
111
|
+
await fs.rm(this.lockPath, { force: true });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/session/writer.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/events.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* @see docs/plans/2026-06-28-zelari-code.md (Task 11.1)
|
|
11
11
|
*/
|
|
12
12
|
/** Discriminator for every {@link BrainEvent} variant. */
|
|
13
|
-
export type BrainEventType = 'agent_start' | 'agent_end' | 'message_start' | 'message_end' | 'message_delta' | 'thinking_delta' | 'tool_execution_start' | 'tool_execution_update' | 'tool_execution_end' | 'queue_update' | 'session_compacted' | 'error' | 'member_cost' | 'council_mode' | 'task_update' | 'task_snapshot' | 'context_metrics';
|
|
13
|
+
export type BrainEventType = 'agent_start' | 'agent_end' | 'message_start' | 'message_end' | 'message_delta' | 'thinking_delta' | 'tool_execution_start' | 'tool_execution_update' | 'tool_execution_end' | 'queue_update' | 'session_compacted' | 'error' | 'member_cost' | 'council_mode' | 'task_update' | 'task_snapshot' | 'context_metrics' | 'kraken_progress' | 'kraken_metrics';
|
|
14
14
|
/** Fields shared by every event. */
|
|
15
15
|
export interface BrainEventBase {
|
|
16
16
|
/** Type discriminator. */
|
|
@@ -246,8 +246,80 @@ export interface BrainTaskSnapshotEvent extends BrainEventBase {
|
|
|
246
246
|
source: BrainTaskSource;
|
|
247
247
|
tasks: BrainTaskPayload[];
|
|
248
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* User-facing phase of one standard-Kraken parent turn, derived by
|
|
251
|
+
* projection from tool activity (KrakenTurnRuntime) — the model never
|
|
252
|
+
* self-reports progress. `planning` is the plan-phase counterpart of
|
|
253
|
+
* `implementing`.
|
|
254
|
+
*/
|
|
255
|
+
export type KrakenProgressPhase = 'understanding' | 'exploring' | 'selecting' | 'planning' | 'implementing' | 'verifying' | 'repairing' | 'completed';
|
|
256
|
+
/** Counters + phase for one Kraken turn (plain JSON, renderer-safe). */
|
|
257
|
+
export interface KrakenProgressPayload {
|
|
258
|
+
phase: KrakenProgressPhase;
|
|
259
|
+
/** Work phase of the turn: the `planning`/`implementing` label follows this. */
|
|
260
|
+
mode: 'plan' | 'build';
|
|
261
|
+
/** Tentacles spawned this turn (all kinds). */
|
|
262
|
+
tentacles: number;
|
|
263
|
+
/** Explore tentacles seen (candidate counter for the UI). */
|
|
264
|
+
exploreTentacles: number;
|
|
265
|
+
/** Verify tentacles seen. */
|
|
266
|
+
verifyTentacles: number;
|
|
267
|
+
/** Successful mutating tool calls this turn (write/edit/apply_diff). */
|
|
268
|
+
writes: number;
|
|
269
|
+
/** Epoch ms when the current phase was entered (elapsed display). */
|
|
270
|
+
phaseEnteredAt: number;
|
|
271
|
+
/**
|
|
272
|
+
* Required checks registered for this turn (Fase 6: kraken_select
|
|
273
|
+
* output). Absent until a selection produces checks — additive and
|
|
274
|
+
* optional, so older consumers keep parsing the payload fine.
|
|
275
|
+
*/
|
|
276
|
+
checkTotal?: number;
|
|
277
|
+
/**
|
|
278
|
+
* Required checks explicitly PASSED so far (Fase 7: verify
|
|
279
|
+
* tentacle structured report). Only `pass` counts — `unknown`
|
|
280
|
+
* never does. Absent until the first verify tentacle reports.
|
|
281
|
+
*/
|
|
282
|
+
checksPassed?: number;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* A Kraken turn changed user-facing phase. Emitted ONLY on change (sparse);
|
|
286
|
+
* counters ride the payload. Consumers without a Kraken card ignore it
|
|
287
|
+
* safely — additive by design, like task_update/task_snapshot (ADR-0018 3b).
|
|
288
|
+
*/
|
|
289
|
+
export interface BrainKrakenProgressEvent extends BrainEventBase {
|
|
290
|
+
type: 'kraken_progress';
|
|
291
|
+
progress: KrakenProgressPayload;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Turn-level Kraken selection metrics (Fase 10, ADR-0020 §58). Emitted ONCE
|
|
295
|
+
* per turn — only when the turn actually used the selection flow (null
|
|
296
|
+
* snapshot on plain turns ⇒ no event ⇒ simple tasks pay zero overhead).
|
|
297
|
+
* Consumers without a Kraken card ignore it safely (additive by design).
|
|
298
|
+
*/
|
|
299
|
+
export interface KrakenMetricsPayload {
|
|
300
|
+
selectionUsed: boolean;
|
|
301
|
+
candidateCount: number;
|
|
302
|
+
/** Provider-reported total tokens across candidate tentacles (0 if none reported). */
|
|
303
|
+
candidateTokens: number;
|
|
304
|
+
/** Provider-reported tokens for the judging call (absent if not reported). */
|
|
305
|
+
selectionTokens?: number;
|
|
306
|
+
/** Wall-clock ms of the judging call. */
|
|
307
|
+
selectionLatencyMs?: number;
|
|
308
|
+
selectionFallback: boolean;
|
|
309
|
+
selectionFallbackReason?: string;
|
|
310
|
+
needsMoreEvidence: boolean;
|
|
311
|
+
verificationPass: number;
|
|
312
|
+
verificationFail: number;
|
|
313
|
+
verificationUnknown: number;
|
|
314
|
+
repairTriggered: boolean;
|
|
315
|
+
repairSucceeded: boolean;
|
|
316
|
+
}
|
|
317
|
+
export interface BrainKrakenMetricsEvent extends BrainEventBase {
|
|
318
|
+
type: 'kraken_metrics';
|
|
319
|
+
metrics: KrakenMetricsPayload;
|
|
320
|
+
}
|
|
249
321
|
/** Discriminated union of every event the brain can emit. */
|
|
250
|
-
export type BrainEvent = BrainAgentStartEvent | BrainAgentEndEvent | BrainMessageStartEvent | BrainMessageDeltaEvent | BrainMessageEndEvent | BrainThinkingDeltaEvent | BrainToolExecutionStartEvent | BrainToolExecutionUpdateEvent | BrainToolExecutionEndEvent | BrainQueueUpdateEvent | BrainSessionCompactedEvent | BrainErrorEvent | BrainMemberCostEvent | BrainCouncilModeEvent | BrainTaskUpdateEvent | BrainTaskSnapshotEvent | BrainContextMetricsEvent;
|
|
322
|
+
export type BrainEvent = BrainAgentStartEvent | BrainAgentEndEvent | BrainMessageStartEvent | BrainMessageDeltaEvent | BrainMessageEndEvent | BrainThinkingDeltaEvent | BrainToolExecutionStartEvent | BrainToolExecutionUpdateEvent | BrainToolExecutionEndEvent | BrainQueueUpdateEvent | BrainSessionCompactedEvent | BrainErrorEvent | BrainMemberCostEvent | BrainCouncilModeEvent | BrainTaskUpdateEvent | BrainTaskSnapshotEvent | BrainContextMetricsEvent | BrainKrakenProgressEvent | BrainKrakenMetricsEvent;
|
|
251
323
|
/**
|
|
252
324
|
* Map from a {@link BrainEventType} discriminator to its concrete event type.
|
|
253
325
|
* Lets callers say `BrainEventOf<'agent_start'>` instead of repeating the
|
|
@@ -298,6 +370,8 @@ export declare function isBrainCouncilModeEvent(e: BrainEvent): e is BrainCounci
|
|
|
298
370
|
export declare function isBrainTaskUpdateEvent(e: BrainEvent): e is BrainTaskUpdateEvent;
|
|
299
371
|
export declare function isBrainTaskSnapshotEvent(e: BrainEvent): e is BrainTaskSnapshotEvent;
|
|
300
372
|
export declare function isBrainContextMetricsEvent(e: BrainEvent): e is BrainContextMetricsEvent;
|
|
373
|
+
export declare function isBrainKrakenProgressEvent(e: BrainEvent): e is BrainKrakenProgressEvent;
|
|
374
|
+
export declare function isBrainKrakenMetricsEvent(e: BrainEvent): e is BrainKrakenMetricsEvent;
|
|
301
375
|
/**
|
|
302
376
|
* Build a fully-formed {@link BrainEvent}, stamping the common `id` (UUID v4)
|
|
303
377
|
* and `ts` (epoch ms) fields automatically. The caller supplies only the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/shared/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0DAA0D;AAC1D,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,WAAW,GACX,eAAe,GACf,aAAa,GACb,eAAe,GACf,gBAAgB,GAChB,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,cAAc,GACd,mBAAmB,GACnB,OAAO,GACP,aAAa,GACb,cAAc,GACd,aAAa,GACb,eAAe,GACf,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/shared/events.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/events.js
CHANGED
|
@@ -61,6 +61,12 @@ export function isBrainTaskSnapshotEvent(e) {
|
|
|
61
61
|
export function isBrainContextMetricsEvent(e) {
|
|
62
62
|
return e.type === 'context_metrics';
|
|
63
63
|
}
|
|
64
|
+
export function isBrainKrakenProgressEvent(e) {
|
|
65
|
+
return e.type === 'kraken_progress';
|
|
66
|
+
}
|
|
67
|
+
export function isBrainKrakenMetricsEvent(e) {
|
|
68
|
+
return e.type === 'kraken_metrics';
|
|
69
|
+
}
|
|
64
70
|
// --- Constructor ------------------------------------------------------------
|
|
65
71
|
/**
|
|
66
72
|
* Build a fully-formed {@link BrainEvent}, stamping the common `id` (UUID v4)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/shared/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/shared/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgcH,+EAA+E;AAE/E,MAAM,UAAU,sBAAsB,CAAC,CAAa;IAClD,OAAO,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAa;IAChD,OAAO,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,CAAa;IACpD,OAAO,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,CAAa;IACpD,OAAO,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,CAAa;IAClD,OAAO,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,CAAa;IACrD,OAAO,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,CAAa;IAC1D,OAAO,CAAC,CAAC,IAAI,KAAK,sBAAsB,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,CAAa;IAC3D,OAAO,CAAC,CAAC,IAAI,KAAK,uBAAuB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,CAAa;IACxD,OAAO,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,CAAa;IACnD,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,CAAa;IACxD,OAAO,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAa;IAC7C,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,CAAa;IAClD,OAAO,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,CAAa;IACnD,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,CAAa;IAClD,OAAO,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,CAAa;IACpD,OAAO,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,CAAa;IACtD,OAAO,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,CAAa;IACtD,OAAO,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,CAAa;IACrD,OAAO,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC;AACrC,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAO,EACP,SAAiB,EACjB,IAA+D;IAE/D,OAAO;QACL,IAAI;QACJ,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;QACvB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;QACd,SAAS;QACT,GAAG,IAAI;KACW,CAAC;AACvB,CAAC"}
|
package/dist/skills/index.d.ts
CHANGED
|
@@ -8,8 +8,8 @@ export * from '../agents/toolSchemas.js';
|
|
|
8
8
|
export * from '../agents/advancedTools.js';
|
|
9
9
|
export * from '../agents/vaultTools.js';
|
|
10
10
|
export { cliToolToEnhanced } from '../agents/harnessToolBridge.js';
|
|
11
|
-
export type { EnhancedToolDefinition } from '../types/systemTypes.js';
|
|
12
|
-
export { KRAKEN_IDENTITY_MODULE, KRAKEN_LEAD_PLAYBOOK_MODULE, SINGLE_AGENT_IDENTITY_MODULE, getBasePromptModules, CODING_PRACTICES_MODULE, NATIVE_TOOL_PROTOCOL_MODULE, CLARIFICATION_PROTOCOL_MODULE, } from '../agents/promptModules.js';
|
|
11
|
+
export type { EnhancedToolDefinition, SystemPromptModule } from '../types/systemTypes.js';
|
|
12
|
+
export { KRAKEN_IDENTITY_MODULE, KRAKEN_LEAD_PLAYBOOK_MODULE, KRAKEN_SELECTION_PLAYBOOK_MODULE, SINGLE_AGENT_IDENTITY_MODULE, getBasePromptModules, CODING_PRACTICES_MODULE, NATIVE_TOOL_PROTOCOL_MODULE, CLARIFICATION_PROTOCOL_MODULE, } from '../agents/promptModules.js';
|
|
13
13
|
export type { PromptPackMode, LegacyPromptPackMode } from '../agents/promptModules.js';
|
|
14
14
|
export { buildSystemPrompt, buildSystemPromptSplit, systemMessagesFromSplit, } from '../agents/systemPromptBuilder.js';
|
|
15
15
|
export type { BuildSystemPromptOptions } from '../agents/systemPromptBuilder.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,gCAAgC,EAChC,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC"}
|