@zelari/core 0.7.9
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/LICENSE +21 -0
- package/dist/agents/advancedTools.d.ts +7 -0
- package/dist/agents/advancedTools.d.ts.map +1 -0
- package/dist/agents/advancedTools.js +115 -0
- package/dist/agents/advancedTools.js.map +1 -0
- package/dist/agents/councilApi.d.ts +328 -0
- package/dist/agents/councilApi.d.ts.map +1 -0
- package/dist/agents/councilApi.js +952 -0
- package/dist/agents/councilApi.js.map +1 -0
- package/dist/agents/councilDirectives.d.ts +26 -0
- package/dist/agents/councilDirectives.d.ts.map +1 -0
- package/dist/agents/councilDirectives.js +98 -0
- package/dist/agents/councilDirectives.js.map +1 -0
- package/dist/agents/harnessToolBridge.d.ts +26 -0
- package/dist/agents/harnessToolBridge.d.ts.map +1 -0
- package/dist/agents/harnessToolBridge.js +60 -0
- package/dist/agents/harnessToolBridge.js.map +1 -0
- package/dist/agents/promoteMember.d.ts +77 -0
- package/dist/agents/promoteMember.d.ts.map +1 -0
- package/dist/agents/promoteMember.js +210 -0
- package/dist/agents/promoteMember.js.map +1 -0
- package/dist/agents/promptModules.d.ts +20 -0
- package/dist/agents/promptModules.d.ts.map +1 -0
- package/dist/agents/promptModules.js +139 -0
- package/dist/agents/promptModules.js.map +1 -0
- package/dist/agents/roles.d.ts +40 -0
- package/dist/agents/roles.d.ts.map +1 -0
- package/dist/agents/roles.js +352 -0
- package/dist/agents/roles.js.map +1 -0
- package/dist/agents/skills/builtin/debugging.d.ts +2 -0
- package/dist/agents/skills/builtin/debugging.d.ts.map +1 -0
- package/dist/agents/skills/builtin/debugging.js +248 -0
- package/dist/agents/skills/builtin/debugging.js.map +1 -0
- package/dist/agents/skills/builtin/docs.d.ts +2 -0
- package/dist/agents/skills/builtin/docs.d.ts.map +1 -0
- package/dist/agents/skills/builtin/docs.js +291 -0
- package/dist/agents/skills/builtin/docs.js.map +1 -0
- package/dist/agents/skills/builtin/git-ops.d.ts +2 -0
- package/dist/agents/skills/builtin/git-ops.d.ts.map +1 -0
- package/dist/agents/skills/builtin/git-ops.js +301 -0
- package/dist/agents/skills/builtin/git-ops.js.map +1 -0
- package/dist/agents/skills/builtin/planning.d.ts +2 -0
- package/dist/agents/skills/builtin/planning.d.ts.map +1 -0
- package/dist/agents/skills/builtin/planning.js +335 -0
- package/dist/agents/skills/builtin/planning.js.map +1 -0
- package/dist/agents/skills/builtin/refactoring.d.ts +2 -0
- package/dist/agents/skills/builtin/refactoring.d.ts.map +1 -0
- package/dist/agents/skills/builtin/refactoring.js +261 -0
- package/dist/agents/skills/builtin/refactoring.js.map +1 -0
- package/dist/agents/skills/builtin/review.d.ts +2 -0
- package/dist/agents/skills/builtin/review.d.ts.map +1 -0
- package/dist/agents/skills/builtin/review.js +302 -0
- package/dist/agents/skills/builtin/review.js.map +1 -0
- package/dist/agents/skills/builtin/testing.d.ts +2 -0
- package/dist/agents/skills/builtin/testing.d.ts.map +1 -0
- package/dist/agents/skills/builtin/testing.js +245 -0
- package/dist/agents/skills/builtin/testing.js.map +1 -0
- package/dist/agents/skills.d.ts +138 -0
- package/dist/agents/skills.d.ts.map +1 -0
- package/dist/agents/skills.js +277 -0
- package/dist/agents/skills.js.map +1 -0
- package/dist/agents/systemPromptBuilder.d.ts +45 -0
- package/dist/agents/systemPromptBuilder.d.ts.map +1 -0
- package/dist/agents/systemPromptBuilder.js +159 -0
- package/dist/agents/systemPromptBuilder.js.map +1 -0
- package/dist/agents/toolSchemas.d.ts +55 -0
- package/dist/agents/toolSchemas.d.ts.map +1 -0
- package/dist/agents/toolSchemas.js +316 -0
- package/dist/agents/toolSchemas.js.map +1 -0
- package/dist/agents/tools.d.ts +67 -0
- package/dist/agents/tools.d.ts.map +1 -0
- package/dist/agents/tools.js +225 -0
- package/dist/agents/tools.js.map +1 -0
- package/dist/agents/vaultTools.d.ts +9 -0
- package/dist/agents/vaultTools.d.ts.map +1 -0
- package/dist/agents/vaultTools.js +134 -0
- package/dist/agents/vaultTools.js.map +1 -0
- package/dist/core/AgentHarness.d.ts +250 -0
- package/dist/core/AgentHarness.d.ts.map +1 -0
- package/dist/core/AgentHarness.js +614 -0
- package/dist/core/AgentHarness.js.map +1 -0
- package/dist/core/providerStream.d.ts +61 -0
- package/dist/core/providerStream.d.ts.map +1 -0
- package/dist/core/providerStream.js +99 -0
- package/dist/core/providerStream.js.map +1 -0
- package/dist/core/sessionJsonl.d.ts +50 -0
- package/dist/core/sessionJsonl.d.ts.map +1 -0
- package/dist/core/sessionJsonl.js +99 -0
- package/dist/core/sessionJsonl.js.map +1 -0
- package/dist/core/tools/auditLog.d.ts +14 -0
- package/dist/core/tools/auditLog.d.ts.map +1 -0
- package/dist/core/tools/auditLog.js +26 -0
- package/dist/core/tools/auditLog.js.map +1 -0
- package/dist/core/tools/builtin/_walk.d.ts +40 -0
- package/dist/core/tools/builtin/_walk.d.ts.map +1 -0
- package/dist/core/tools/builtin/_walk.js +129 -0
- package/dist/core/tools/builtin/_walk.js.map +1 -0
- package/dist/core/tools/builtin/diff.d.ts +45 -0
- package/dist/core/tools/builtin/diff.d.ts.map +1 -0
- package/dist/core/tools/builtin/diff.js +477 -0
- package/dist/core/tools/builtin/diff.js.map +1 -0
- package/dist/core/tools/builtin/filesystem.d.ts +45 -0
- package/dist/core/tools/builtin/filesystem.d.ts.map +1 -0
- package/dist/core/tools/builtin/filesystem.js +110 -0
- package/dist/core/tools/builtin/filesystem.js.map +1 -0
- package/dist/core/tools/builtin/listFiles.d.ts +18 -0
- package/dist/core/tools/builtin/listFiles.d.ts.map +1 -0
- package/dist/core/tools/builtin/listFiles.js +48 -0
- package/dist/core/tools/builtin/listFiles.js.map +1 -0
- package/dist/core/tools/builtin/search.d.ts +49 -0
- package/dist/core/tools/builtin/search.d.ts.map +1 -0
- package/dist/core/tools/builtin/search.js +148 -0
- package/dist/core/tools/builtin/search.js.map +1 -0
- package/dist/core/tools/builtin/shell.d.ts +27 -0
- package/dist/core/tools/builtin/shell.d.ts.map +1 -0
- package/dist/core/tools/builtin/shell.js +98 -0
- package/dist/core/tools/builtin/shell.js.map +1 -0
- package/dist/core/tools/builtin/shellResolver.d.ts +25 -0
- package/dist/core/tools/builtin/shellResolver.d.ts.map +1 -0
- package/dist/core/tools/builtin/shellResolver.js +117 -0
- package/dist/core/tools/builtin/shellResolver.js.map +1 -0
- package/dist/core/tools/builtin/web.d.ts +43 -0
- package/dist/core/tools/builtin/web.d.ts.map +1 -0
- package/dist/core/tools/builtin/web.js +208 -0
- package/dist/core/tools/builtin/web.js.map +1 -0
- package/dist/core/tools/registry.d.ts +31 -0
- package/dist/core/tools/registry.d.ts.map +1 -0
- package/dist/core/tools/registry.js +115 -0
- package/dist/core/tools/registry.js.map +1 -0
- package/dist/core/tools/toolTypes.d.ts +60 -0
- package/dist/core/tools/toolTypes.d.ts.map +1 -0
- package/dist/core/tools/toolTypes.js +8 -0
- package/dist/core/tools/toolTypes.js.map +1 -0
- package/dist/core/tools/zodBridge.d.ts +6 -0
- package/dist/core/tools/zodBridge.d.ts.map +1 -0
- package/dist/core/tools/zodBridge.js +56 -0
- package/dist/core/tools/zodBridge.js.map +1 -0
- package/dist/council/index.d.ts +14 -0
- package/dist/council/index.d.ts.map +1 -0
- package/dist/council/index.js +14 -0
- package/dist/council/index.js.map +1 -0
- package/dist/council/modeBanners.d.ts +5 -0
- package/dist/council/modeBanners.d.ts.map +1 -0
- package/dist/council/modeBanners.js +10 -0
- package/dist/council/modeBanners.js.map +1 -0
- package/dist/council/runMode.d.ts +25 -0
- package/dist/council/runMode.d.ts.map +1 -0
- package/dist/council/runMode.js +41 -0
- package/dist/council/runMode.js.map +1 -0
- package/dist/events/index.d.ts +6 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +6 -0
- package/dist/events/index.js.map +1 -0
- package/dist/harness/index.d.ts +9 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +9 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/tools/index.d.ts +20 -0
- package/dist/harness/tools/index.d.ts.map +1 -0
- package/dist/harness/tools/index.js +19 -0
- package/dist/harness/tools/index.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/eventBus.d.ts +58 -0
- package/dist/shared/eventBus.d.ts.map +1 -0
- package/dist/shared/eventBus.js +104 -0
- package/dist/shared/eventBus.js.map +1 -0
- package/dist/shared/events.d.ts +230 -0
- package/dist/shared/events.d.ts.map +1 -0
- package/dist/shared/events.js +76 -0
- package/dist/shared/events.js.map +1 -0
- package/dist/shared/index.d.ts +8 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +8 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/skills/index.d.ts +10 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +10 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/types/context.d.ts +54 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +3 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/knowledge.d.ts +79 -0
- package/dist/types/knowledge.d.ts.map +1 -0
- package/dist/types/knowledge.js +5 -0
- package/dist/types/knowledge.js.map +1 -0
- package/dist/types/legacy.d.ts +466 -0
- package/dist/types/legacy.d.ts.map +1 -0
- package/dist/types/legacy.js +2 -0
- package/dist/types/legacy.js.map +1 -0
- package/dist/types/systemTypes.d.ts +113 -0
- package/dist/types/systemTypes.d.ts.map +1 -0
- package/dist/types/systemTypes.js +10 -0
- package/dist/types/systemTypes.js.map +1 -0
- package/package.json +151 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Council run-mode detection — implementation vs design-phase.
|
|
3
|
+
*
|
|
4
|
+
* Drives gated tool-emission enforcement, mode banners in member prompts,
|
|
5
|
+
* and the complete-design post-processor skip in implementation runs.
|
|
6
|
+
*/
|
|
7
|
+
const DESIGN_KEYWORDS = /\b(design|architect|architecture|spec|blueprint|mockup|wireframe|greenfield|from scratch)\b/i;
|
|
8
|
+
const IMPLEMENTATION_KEYWORDS = /\b(fix|refactor|bug|implement|patch|migrate|add tests|debug|repair|hotfix)\b/i;
|
|
9
|
+
const PLAN_CONTINUE = /\b(continue|extend|update|refine)\b[\s\S]{0,40}\b(plan|phase|milestone)\b/i;
|
|
10
|
+
/**
|
|
11
|
+
* Resolve how this council run should behave.
|
|
12
|
+
*
|
|
13
|
+
* Override order: `forceMode` → `ZELARI_COUNCIL_MODE` env → heuristics →
|
|
14
|
+
* default `implementation`.
|
|
15
|
+
*/
|
|
16
|
+
export function resolveCouncilRunMode(input) {
|
|
17
|
+
if (input.forceMode) {
|
|
18
|
+
return input.forceMode;
|
|
19
|
+
}
|
|
20
|
+
const envMode = input.env?.ZELARI_COUNCIL_MODE?.toLowerCase();
|
|
21
|
+
if (envMode === 'design' || envMode === 'design-phase') {
|
|
22
|
+
return 'design-phase';
|
|
23
|
+
}
|
|
24
|
+
if (envMode === 'implementation' || envMode === 'impl') {
|
|
25
|
+
return 'implementation';
|
|
26
|
+
}
|
|
27
|
+
const msg = input.userMessage;
|
|
28
|
+
const hasDesign = DESIGN_KEYWORDS.test(msg);
|
|
29
|
+
const hasImpl = IMPLEMENTATION_KEYWORDS.test(msg);
|
|
30
|
+
if (hasDesign && !hasImpl) {
|
|
31
|
+
return 'design-phase';
|
|
32
|
+
}
|
|
33
|
+
if (PLAN_CONTINUE.test(msg) && input.hasExistingPlan) {
|
|
34
|
+
return 'design-phase';
|
|
35
|
+
}
|
|
36
|
+
return 'implementation';
|
|
37
|
+
}
|
|
38
|
+
export function councilTierFromSize(councilSize) {
|
|
39
|
+
return councilSize >= 6 ? 'full' : 'lite';
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=runMode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runMode.js","sourceRoot":"","sources":["../../src/council/runMode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,eAAe,GACnB,8FAA8F,CAAC;AAEjG,MAAM,uBAAuB,GAC3B,+EAA+E,CAAC;AAElF,MAAM,aAAa,GACjB,4EAA4E,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA0B;IAC9D,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;IAC9D,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QACvD,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,KAAK,gBAAgB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC;IAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAElD,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QACrD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,OAAO,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent harness — the provider-neutral agent loop.
|
|
3
|
+
* `AgentHarness` is the single entrypoint for running an LLM-driven turn
|
|
4
|
+
* (system prompt + tools + streaming events).
|
|
5
|
+
*/
|
|
6
|
+
export * from '../core/AgentHarness.js';
|
|
7
|
+
export * from '../core/providerStream.js';
|
|
8
|
+
export * from '../core/sessionJsonl.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent harness — the provider-neutral agent loop.
|
|
3
|
+
* `AgentHarness` is the single entrypoint for running an LLM-driven turn
|
|
4
|
+
* (system prompt + tools + streaming events).
|
|
5
|
+
*/
|
|
6
|
+
export * from '../core/AgentHarness.js';
|
|
7
|
+
export * from '../core/providerStream.js';
|
|
8
|
+
export * from '../core/sessionJsonl.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zelari/core/harness/tools — built-in tools registry.
|
|
3
|
+
* Includes ToolRegistry class + the 5 default tools (filesystem, shell, search,
|
|
4
|
+
* listFiles, diff) + their shared types.
|
|
5
|
+
*
|
|
6
|
+
* `ToolContext` is intentionally NOT re-exported here: the authoritative
|
|
7
|
+
* version lives in `@zelari/core/types` (re-exported via `systemTypes.ts`
|
|
8
|
+
* from `agents/tools.ts`). Re-exporting the local `core/tools/toolTypes.ts`
|
|
9
|
+
* copy too would create an ambiguous re-export at the root `index.ts`
|
|
10
|
+
* barrel (v0.6.2 audit CRITICAL-1 follow-up).
|
|
11
|
+
*/
|
|
12
|
+
export * from '../../core/tools/registry.js';
|
|
13
|
+
export type { TypedResult, ToolPermission, ToolDefinition, AuditEntry, } from '../../core/tools/toolTypes.js';
|
|
14
|
+
export { typedOk, typedErr } from '../../core/tools/toolTypes.js';
|
|
15
|
+
export * from '../../core/tools/builtin/filesystem.js';
|
|
16
|
+
export * from '../../core/tools/builtin/shell.js';
|
|
17
|
+
export * from '../../core/tools/builtin/search.js';
|
|
18
|
+
export * from '../../core/tools/builtin/listFiles.js';
|
|
19
|
+
export * from '../../core/tools/builtin/diff.js';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/harness/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,cAAc,8BAA8B,CAAC;AAI7C,YAAY,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zelari/core/harness/tools — built-in tools registry.
|
|
3
|
+
* Includes ToolRegistry class + the 5 default tools (filesystem, shell, search,
|
|
4
|
+
* listFiles, diff) + their shared types.
|
|
5
|
+
*
|
|
6
|
+
* `ToolContext` is intentionally NOT re-exported here: the authoritative
|
|
7
|
+
* version lives in `@zelari/core/types` (re-exported via `systemTypes.ts`
|
|
8
|
+
* from `agents/tools.ts`). Re-exporting the local `core/tools/toolTypes.ts`
|
|
9
|
+
* copy too would create an ambiguous re-export at the root `index.ts`
|
|
10
|
+
* barrel (v0.6.2 audit CRITICAL-1 follow-up).
|
|
11
|
+
*/
|
|
12
|
+
export * from '../../core/tools/registry.js';
|
|
13
|
+
export { typedOk, typedErr } from '../../core/tools/toolTypes.js';
|
|
14
|
+
export * from '../../core/tools/builtin/filesystem.js';
|
|
15
|
+
export * from '../../core/tools/builtin/shell.js';
|
|
16
|
+
export * from '../../core/tools/builtin/search.js';
|
|
17
|
+
export * from '../../core/tools/builtin/listFiles.js';
|
|
18
|
+
export * from '../../core/tools/builtin/diff.js';
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/harness/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,cAAc,8BAA8B,CAAC;AAU7C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zelari/core — public API surface.
|
|
3
|
+
*
|
|
4
|
+
* Stable entrypoint. Anything not re-exported here is internal and may
|
|
5
|
+
* change without notice. Subpath imports (@zelari/core/harness, etc.) are
|
|
6
|
+
* supported for fine-grained access.
|
|
7
|
+
*/
|
|
8
|
+
export * from './events/index.js';
|
|
9
|
+
export * from './types/index.js';
|
|
10
|
+
export * from './harness/index.js';
|
|
11
|
+
export * from './council/index.js';
|
|
12
|
+
export * from './skills/index.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zelari/core — public API surface.
|
|
3
|
+
*
|
|
4
|
+
* Stable entrypoint. Anything not re-exported here is internal and may
|
|
5
|
+
* change without notice. Subpath imports (@zelari/core/harness, etc.) are
|
|
6
|
+
* supported for fine-grained access.
|
|
7
|
+
*/
|
|
8
|
+
// Events (provider-neutral contract)
|
|
9
|
+
export * from './events/index.js';
|
|
10
|
+
// Public types
|
|
11
|
+
export * from './types/index.js';
|
|
12
|
+
// Agent loop
|
|
13
|
+
export * from './harness/index.js';
|
|
14
|
+
// Council (multi-agent orchestration)
|
|
15
|
+
export * from './council/index.js';
|
|
16
|
+
// Skills (built-in)
|
|
17
|
+
export * from './skills/index.js';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qCAAqC;AACrC,cAAc,mBAAmB,CAAC;AAElC,eAAe;AACf,cAAc,kBAAkB,CAAC;AAEjC,aAAa;AACb,cAAc,oBAAoB,CAAC;AAEnC,sCAAsC;AACtC,cAAc,oBAAoB,CAAC;AAEnC,oBAAoB;AACpB,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventBus — typed, in-memory pub/sub over the {@link BrainEvent} union.
|
|
3
|
+
*
|
|
4
|
+
* This is the transport-agnostic core for fanning agent events out to any
|
|
5
|
+
* frontend (Electron renderer today, Ink CLI tomorrow). It deals only in
|
|
6
|
+
* provider-neutral {@link BrainEvent}s and pulls in no Node- or Electron-
|
|
7
|
+
* specific APIs, so it is safe to import from the renderer/browser too.
|
|
8
|
+
*
|
|
9
|
+
* Dispatch rules:
|
|
10
|
+
* - Typed subscribers (registered via {@link EventBus.subscribe}) fire first.
|
|
11
|
+
* - Wildcard subscribers (registered via {@link EventBus.subscribeAll}) fire
|
|
12
|
+
* afterwards, so type-specific handlers always see an event before the
|
|
13
|
+
* catch-all observers do.
|
|
14
|
+
* - A subscriber that throws — or returns a rejected Promise — is logged and
|
|
15
|
+
* isolated; it never blocks the remaining subscribers.
|
|
16
|
+
* - Async subscribers are fire-and-forget: the bus invokes the handler
|
|
17
|
+
* synchronously and does NOT await its returned Promise.
|
|
18
|
+
*
|
|
19
|
+
* @see docs/plans/2026-06-28-zelari-code.md (Task 11.2)
|
|
20
|
+
*/
|
|
21
|
+
import type { BrainEvent, BrainEventType } from './events.js';
|
|
22
|
+
/** Async-capable subscriber. Receives an event, may return a Promise. */
|
|
23
|
+
export type Subscriber<T extends BrainEvent = BrainEvent> = (event: T) => void | Promise<void>;
|
|
24
|
+
/** Wildcard subscriber — receives every event regardless of type. */
|
|
25
|
+
export type AllEventsSubscriber = (event: BrainEvent) => void | Promise<void>;
|
|
26
|
+
/** Returned by subscribe/subscribeAll; call to remove that handler. */
|
|
27
|
+
export interface Unsubscribe {
|
|
28
|
+
(): void;
|
|
29
|
+
}
|
|
30
|
+
export declare class EventBus {
|
|
31
|
+
/** Per-type subscriber registry. */
|
|
32
|
+
private subscribers;
|
|
33
|
+
/** Wildcard subscribers (receive every event). */
|
|
34
|
+
private wildcardSubscribers;
|
|
35
|
+
constructor();
|
|
36
|
+
/** Subscribe to a specific event type. Returns an unsubscribe function. */
|
|
37
|
+
subscribe<T extends BrainEventType>(type: T, handler: Subscriber<Extract<BrainEvent, {
|
|
38
|
+
type: T;
|
|
39
|
+
}>>): Unsubscribe;
|
|
40
|
+
/** Subscribe to all events. Returns an unsubscribe function. */
|
|
41
|
+
subscribeAll(handler: AllEventsSubscriber): Unsubscribe;
|
|
42
|
+
/**
|
|
43
|
+
* Emit an event to all matching subscribers (typed first, then wildcard).
|
|
44
|
+
* Errors in individual subscribers are logged but do not prevent other
|
|
45
|
+
* subscribers from receiving the event.
|
|
46
|
+
*/
|
|
47
|
+
emit(event: BrainEvent): void;
|
|
48
|
+
/** Remove all subscribers (typed + wildcard). */
|
|
49
|
+
clear(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Number of subscribers. With a `type`, returns typed subscribers for that
|
|
52
|
+
* type; without, returns the total across all types plus wildcard handlers.
|
|
53
|
+
*/
|
|
54
|
+
listenerCount(type?: BrainEventType): number;
|
|
55
|
+
/** Invoke a single subscriber, isolating sync throws and async rejections. */
|
|
56
|
+
private dispatch;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=eventBus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventBus.d.ts","sourceRoot":"","sources":["../../src/shared/eventBus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE9D,yEAAyE;AACzE,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/F,qEAAqE;AACrE,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9E,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,IAAI,IAAI,CAAC;CACV;AAED,qBAAa,QAAQ;IACnB,oCAAoC;IACpC,OAAO,CAAC,WAAW,CAAuC;IAC1D,kDAAkD;IAClD,OAAO,CAAC,mBAAmB,CAA2B;;IAOtD,2EAA2E;IAC3E,SAAS,CAAC,CAAC,SAAS,cAAc,EAChC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,GACpD,WAAW;IAkBd,gEAAgE;IAChE,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW;IAOvD;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQ7B,iDAAiD;IACjD,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,aAAa,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,MAAM;IAS5C,8EAA8E;IAC9E,OAAO,CAAC,QAAQ;CAYjB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventBus — typed, in-memory pub/sub over the {@link BrainEvent} union.
|
|
3
|
+
*
|
|
4
|
+
* This is the transport-agnostic core for fanning agent events out to any
|
|
5
|
+
* frontend (Electron renderer today, Ink CLI tomorrow). It deals only in
|
|
6
|
+
* provider-neutral {@link BrainEvent}s and pulls in no Node- or Electron-
|
|
7
|
+
* specific APIs, so it is safe to import from the renderer/browser too.
|
|
8
|
+
*
|
|
9
|
+
* Dispatch rules:
|
|
10
|
+
* - Typed subscribers (registered via {@link EventBus.subscribe}) fire first.
|
|
11
|
+
* - Wildcard subscribers (registered via {@link EventBus.subscribeAll}) fire
|
|
12
|
+
* afterwards, so type-specific handlers always see an event before the
|
|
13
|
+
* catch-all observers do.
|
|
14
|
+
* - A subscriber that throws — or returns a rejected Promise — is logged and
|
|
15
|
+
* isolated; it never blocks the remaining subscribers.
|
|
16
|
+
* - Async subscribers are fire-and-forget: the bus invokes the handler
|
|
17
|
+
* synchronously and does NOT await its returned Promise.
|
|
18
|
+
*
|
|
19
|
+
* @see docs/plans/2026-06-28-zelari-code.md (Task 11.2)
|
|
20
|
+
*/
|
|
21
|
+
export class EventBus {
|
|
22
|
+
/** Per-type subscriber registry. */
|
|
23
|
+
subscribers;
|
|
24
|
+
/** Wildcard subscribers (receive every event). */
|
|
25
|
+
wildcardSubscribers;
|
|
26
|
+
constructor() {
|
|
27
|
+
this.subscribers = new Map();
|
|
28
|
+
this.wildcardSubscribers = new Set();
|
|
29
|
+
}
|
|
30
|
+
/** Subscribe to a specific event type. Returns an unsubscribe function. */
|
|
31
|
+
subscribe(type, handler) {
|
|
32
|
+
let set = this.subscribers.get(type);
|
|
33
|
+
if (!set) {
|
|
34
|
+
set = new Set();
|
|
35
|
+
this.subscribers.set(type, set);
|
|
36
|
+
}
|
|
37
|
+
// The handler is narrowed to a single variant; emit() only ever dispatches
|
|
38
|
+
// matching events to it, so widening the stored type is sound here.
|
|
39
|
+
const stored = handler;
|
|
40
|
+
set.add(stored);
|
|
41
|
+
return () => {
|
|
42
|
+
const current = this.subscribers.get(type);
|
|
43
|
+
if (!current)
|
|
44
|
+
return;
|
|
45
|
+
current.delete(stored);
|
|
46
|
+
if (current.size === 0)
|
|
47
|
+
this.subscribers.delete(type);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Subscribe to all events. Returns an unsubscribe function. */
|
|
51
|
+
subscribeAll(handler) {
|
|
52
|
+
this.wildcardSubscribers.add(handler);
|
|
53
|
+
return () => {
|
|
54
|
+
this.wildcardSubscribers.delete(handler);
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Emit an event to all matching subscribers (typed first, then wildcard).
|
|
59
|
+
* Errors in individual subscribers are logged but do not prevent other
|
|
60
|
+
* subscribers from receiving the event.
|
|
61
|
+
*/
|
|
62
|
+
emit(event) {
|
|
63
|
+
const set = this.subscribers.get(event.type);
|
|
64
|
+
if (set) {
|
|
65
|
+
for (const handler of set)
|
|
66
|
+
this.dispatch(handler, event);
|
|
67
|
+
}
|
|
68
|
+
for (const handler of this.wildcardSubscribers)
|
|
69
|
+
this.dispatch(handler, event);
|
|
70
|
+
}
|
|
71
|
+
/** Remove all subscribers (typed + wildcard). */
|
|
72
|
+
clear() {
|
|
73
|
+
this.subscribers.clear();
|
|
74
|
+
this.wildcardSubscribers.clear();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Number of subscribers. With a `type`, returns typed subscribers for that
|
|
78
|
+
* type; without, returns the total across all types plus wildcard handlers.
|
|
79
|
+
*/
|
|
80
|
+
listenerCount(type) {
|
|
81
|
+
if (type !== undefined) {
|
|
82
|
+
return this.subscribers.get(type)?.size ?? 0;
|
|
83
|
+
}
|
|
84
|
+
let total = this.wildcardSubscribers.size;
|
|
85
|
+
for (const set of this.subscribers.values())
|
|
86
|
+
total += set.size;
|
|
87
|
+
return total;
|
|
88
|
+
}
|
|
89
|
+
/** Invoke a single subscriber, isolating sync throws and async rejections. */
|
|
90
|
+
dispatch(handler, event) {
|
|
91
|
+
try {
|
|
92
|
+
const result = handler(event);
|
|
93
|
+
if (result instanceof Promise) {
|
|
94
|
+
result.catch((err) => {
|
|
95
|
+
console.error('[eventBus] subscriber error:', err);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
console.error('[eventBus] subscriber error:', err);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=eventBus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventBus.js","sourceRoot":"","sources":["../../src/shared/eventBus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrainEvent — provider-neutral event contract for AnathemaBrain's agent system.
|
|
3
|
+
*
|
|
4
|
+
* These types are the ONLY contract between the agent loop (main process) and any
|
|
5
|
+
* frontend (Electron renderer today, Ink CLI tomorrow). They are intentionally
|
|
6
|
+
* standalone: no Electron imports, no project imports. Every payload is plain,
|
|
7
|
+
* JSON-serializable data so events can cross the IPC boundary or a socket
|
|
8
|
+
* untouched.
|
|
9
|
+
*
|
|
10
|
+
* @see docs/plans/2026-06-28-zelari-code.md (Task 11.1)
|
|
11
|
+
*/
|
|
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';
|
|
14
|
+
/** Fields shared by every event. */
|
|
15
|
+
export interface BrainEventBase {
|
|
16
|
+
/** Type discriminator. */
|
|
17
|
+
type: BrainEventType;
|
|
18
|
+
/** Unique event id (UUID v4 string). */
|
|
19
|
+
id: string;
|
|
20
|
+
/** Event timestamp (epoch ms). */
|
|
21
|
+
ts: number;
|
|
22
|
+
/** Session this event belongs to. */
|
|
23
|
+
sessionId: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The agent loop has started; carries the resolved model + provider.
|
|
27
|
+
*
|
|
28
|
+
* @since 0.5.0 `memberId` is included when the agent run belongs to a
|
|
29
|
+
* council member (i.e. the run was launched by the council
|
|
30
|
+
* pipeline, not by a direct user prompt). `memberName` is
|
|
31
|
+
* the human-readable label (e.g. "Caronte") for UI display
|
|
32
|
+
* without a second lookup into the roles table.
|
|
33
|
+
*/
|
|
34
|
+
export interface BrainAgentStartEvent extends BrainEventBase {
|
|
35
|
+
type: 'agent_start';
|
|
36
|
+
model: string;
|
|
37
|
+
provider: string;
|
|
38
|
+
memberId?: string;
|
|
39
|
+
memberName?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The agent loop has finished, was cancelled, or errored out.
|
|
43
|
+
*
|
|
44
|
+
* @since 0.5.0 `memberId` + `memberName` mirror the corresponding
|
|
45
|
+
* `agent_start` (see above).
|
|
46
|
+
*/
|
|
47
|
+
export interface BrainAgentEndEvent extends BrainEventBase {
|
|
48
|
+
type: 'agent_end';
|
|
49
|
+
reason: 'completed' | 'cancelled' | 'error';
|
|
50
|
+
durationMs: number;
|
|
51
|
+
memberId?: string;
|
|
52
|
+
memberName?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* An assistant message has begun streaming.
|
|
56
|
+
*
|
|
57
|
+
* @since 0.5.0 `memberId` + `memberName` identify the council member
|
|
58
|
+
* producing this message (omitted for direct user prompts).
|
|
59
|
+
*/
|
|
60
|
+
export interface BrainMessageStartEvent extends BrainEventBase {
|
|
61
|
+
type: 'message_start';
|
|
62
|
+
messageId: string;
|
|
63
|
+
role: 'assistant';
|
|
64
|
+
memberId?: string;
|
|
65
|
+
memberName?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* An incremental chunk of assistant message text.
|
|
69
|
+
*
|
|
70
|
+
* @since 0.5.0 `memberId` + `memberName` mirror `message_start` so
|
|
71
|
+
* consumers can stream-attribute text to a council member
|
|
72
|
+
* without buffering until `message_end`.
|
|
73
|
+
*/
|
|
74
|
+
export interface BrainMessageDeltaEvent extends BrainEventBase {
|
|
75
|
+
type: 'message_delta';
|
|
76
|
+
messageId: string;
|
|
77
|
+
delta: string;
|
|
78
|
+
memberId?: string;
|
|
79
|
+
memberName?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* An assistant message has finished streaming.
|
|
83
|
+
*
|
|
84
|
+
* @since 0.5.0 `memberId` + `memberName` mirror `message_start`.
|
|
85
|
+
*/
|
|
86
|
+
export interface BrainMessageEndEvent extends BrainEventBase {
|
|
87
|
+
type: 'message_end';
|
|
88
|
+
messageId: string;
|
|
89
|
+
totalLength: number;
|
|
90
|
+
finishReason: string;
|
|
91
|
+
memberId?: string;
|
|
92
|
+
memberName?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Real token usage reported by the provider (Task G.4). When the
|
|
95
|
+
* provider sends an OpenAI-shaped `usage` chunk (gated by
|
|
96
|
+
* `stream_options.include_usage`), this carries the actual numbers.
|
|
97
|
+
* When missing, downstream consumers fall back to the
|
|
98
|
+
* ~4-characters-per-token approximation that v3-B used.
|
|
99
|
+
*
|
|
100
|
+
* @see docs/plans/2026-06-29-anathema-coder-v3-G.md (Task G.4.4)
|
|
101
|
+
*/
|
|
102
|
+
usage?: UsageBreakdown;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Provider-reported token usage for one assistant turn (Task G.4).
|
|
106
|
+
* The numbers come from the OpenAI-compatible `usage` field in the
|
|
107
|
+
* final SSE chunk before `[DONE]`. Providers that don't honor
|
|
108
|
+
* `stream_options.include_usage` will not emit this — consumers must
|
|
109
|
+
* degrade gracefully to the approximation.
|
|
110
|
+
*/
|
|
111
|
+
export interface UsageBreakdown {
|
|
112
|
+
/** Tokens in the prompt (system + user messages, including tool messages). */
|
|
113
|
+
promptTokens: number;
|
|
114
|
+
/** Tokens generated by the assistant. */
|
|
115
|
+
completionTokens: number;
|
|
116
|
+
/** Convenience: promptTokens + completionTokens. */
|
|
117
|
+
totalTokens: number;
|
|
118
|
+
}
|
|
119
|
+
/** An incremental chunk of the model's reasoning / thinking trace. */
|
|
120
|
+
export interface BrainThinkingDeltaEvent extends BrainEventBase {
|
|
121
|
+
type: 'thinking_delta';
|
|
122
|
+
messageId: string;
|
|
123
|
+
delta: string;
|
|
124
|
+
}
|
|
125
|
+
/** A tool call has started executing. */
|
|
126
|
+
export interface BrainToolExecutionStartEvent extends BrainEventBase {
|
|
127
|
+
type: 'tool_execution_start';
|
|
128
|
+
toolCallId: string;
|
|
129
|
+
toolName: string;
|
|
130
|
+
args: Record<string, unknown>;
|
|
131
|
+
}
|
|
132
|
+
/** Progress update emitted while a tool is still running. */
|
|
133
|
+
export interface BrainToolExecutionUpdateEvent extends BrainEventBase {
|
|
134
|
+
type: 'tool_execution_update';
|
|
135
|
+
toolCallId: string;
|
|
136
|
+
delta?: string;
|
|
137
|
+
}
|
|
138
|
+
/** A tool call has finished, successfully or with an error. */
|
|
139
|
+
export interface BrainToolExecutionEndEvent extends BrainEventBase {
|
|
140
|
+
type: 'tool_execution_end';
|
|
141
|
+
toolCallId: string;
|
|
142
|
+
result: string;
|
|
143
|
+
isError: boolean;
|
|
144
|
+
durationMs: number;
|
|
145
|
+
}
|
|
146
|
+
/** The count of queued user prompts has changed. */
|
|
147
|
+
export interface BrainQueueUpdateEvent extends BrainEventBase {
|
|
148
|
+
type: 'queue_update';
|
|
149
|
+
queuedCount: number;
|
|
150
|
+
}
|
|
151
|
+
/** The session history was compacted into a summary. */
|
|
152
|
+
export interface BrainSessionCompactedEvent extends BrainEventBase {
|
|
153
|
+
type: 'session_compacted';
|
|
154
|
+
summary: string;
|
|
155
|
+
messagesRemoved: number;
|
|
156
|
+
}
|
|
157
|
+
/** A recoverable, fatal, or cancellation error occurred. */
|
|
158
|
+
export interface BrainErrorEvent extends BrainEventBase {
|
|
159
|
+
type: 'error';
|
|
160
|
+
severity: 'recoverable' | 'fatal' | 'cancelled';
|
|
161
|
+
message: string;
|
|
162
|
+
code?: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Per-member cost report emitted at the end of a council member's run.
|
|
166
|
+
* Carries the actual `MemberCost` payload produced by
|
|
167
|
+
* `MemberCostTracker.record()` (see `electron/cli/councilCost.ts`).
|
|
168
|
+
*
|
|
169
|
+
* Note: we inline a structural type here instead of importing the
|
|
170
|
+
* `MemberCost` type, to keep this events module free of CLI-side deps
|
|
171
|
+
* (architecture rule: events.ts must be renderer/Node-loadable without
|
|
172
|
+
* pulling in `electron/cli/*`).
|
|
173
|
+
*/
|
|
174
|
+
export interface BrainMemberCostEvent extends BrainEventBase {
|
|
175
|
+
type: 'member_cost';
|
|
176
|
+
cost: {
|
|
177
|
+
memberId: string;
|
|
178
|
+
name: string;
|
|
179
|
+
promptTokens: number;
|
|
180
|
+
completionTokens: number;
|
|
181
|
+
totalTokens: number;
|
|
182
|
+
durationMs: number;
|
|
183
|
+
toolCalls: number;
|
|
184
|
+
errored: boolean;
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/** Emitted once at the start of a council run (tier + mode metadata). */
|
|
188
|
+
export interface BrainCouncilModeEvent extends BrainEventBase {
|
|
189
|
+
type: 'council_mode';
|
|
190
|
+
tier: 'lite' | 'full';
|
|
191
|
+
councilSize: number;
|
|
192
|
+
runMode: 'implementation' | 'design-phase';
|
|
193
|
+
}
|
|
194
|
+
/** Discriminated union of every event the brain can emit. */
|
|
195
|
+
export type BrainEvent = BrainAgentStartEvent | BrainAgentEndEvent | BrainMessageStartEvent | BrainMessageDeltaEvent | BrainMessageEndEvent | BrainThinkingDeltaEvent | BrainToolExecutionStartEvent | BrainToolExecutionUpdateEvent | BrainToolExecutionEndEvent | BrainQueueUpdateEvent | BrainSessionCompactedEvent | BrainErrorEvent | BrainMemberCostEvent | BrainCouncilModeEvent;
|
|
196
|
+
/**
|
|
197
|
+
* Map from a {@link BrainEventType} discriminator to its concrete event type.
|
|
198
|
+
* Lets callers say `BrainEventOf<'agent_start'>` instead of repeating the
|
|
199
|
+
* `Extract<BrainEvent, { type: ... }>` dance.
|
|
200
|
+
*/
|
|
201
|
+
export type BrainEventOf<T extends BrainEventType> = Extract<BrainEvent, {
|
|
202
|
+
type: T;
|
|
203
|
+
}>;
|
|
204
|
+
export declare function isBrainAgentStartEvent(e: BrainEvent): e is BrainAgentStartEvent;
|
|
205
|
+
export declare function isBrainAgentEndEvent(e: BrainEvent): e is BrainAgentEndEvent;
|
|
206
|
+
export declare function isBrainMessageStartEvent(e: BrainEvent): e is BrainMessageStartEvent;
|
|
207
|
+
export declare function isBrainMessageDeltaEvent(e: BrainEvent): e is BrainMessageDeltaEvent;
|
|
208
|
+
export declare function isBrainMessageEndEvent(e: BrainEvent): e is BrainMessageEndEvent;
|
|
209
|
+
export declare function isBrainThinkingDeltaEvent(e: BrainEvent): e is BrainThinkingDeltaEvent;
|
|
210
|
+
export declare function isBrainToolExecutionStartEvent(e: BrainEvent): e is BrainToolExecutionStartEvent;
|
|
211
|
+
export declare function isBrainToolExecutionUpdateEvent(e: BrainEvent): e is BrainToolExecutionUpdateEvent;
|
|
212
|
+
export declare function isBrainToolExecutionEndEvent(e: BrainEvent): e is BrainToolExecutionEndEvent;
|
|
213
|
+
export declare function isBrainQueueUpdateEvent(e: BrainEvent): e is BrainQueueUpdateEvent;
|
|
214
|
+
export declare function isBrainSessionCompactedEvent(e: BrainEvent): e is BrainSessionCompactedEvent;
|
|
215
|
+
export declare function isBrainErrorEvent(e: BrainEvent): e is BrainErrorEvent;
|
|
216
|
+
export declare function isBrainMemberCostEvent(e: BrainEvent): e is BrainMemberCostEvent;
|
|
217
|
+
export declare function isBrainCouncilModeEvent(e: BrainEvent): e is BrainCouncilModeEvent;
|
|
218
|
+
/**
|
|
219
|
+
* Build a fully-formed {@link BrainEvent}, stamping the common `id` (UUID v4)
|
|
220
|
+
* and `ts` (epoch ms) fields automatically. The caller supplies only the
|
|
221
|
+
* variant-specific payload.
|
|
222
|
+
*
|
|
223
|
+
* Uses the global `crypto.randomUUID()` (Web Crypto), available in both Node 20+
|
|
224
|
+
* and the browser/renderer — keeping this module free of Node-only imports.
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* const ev = createBrainEvent('message_delta', sessionId, { messageId, delta });
|
|
228
|
+
*/
|
|
229
|
+
export declare function createBrainEvent<T extends BrainEventType>(type: T, sessionId: string, data: Omit<BrainEventOf<T>, 'type' | 'id' | 'ts' | 'sessionId'>): BrainEventOf<T>;
|
|
230
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/shared/events.ts"],"names":[],"mappings":"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"}
|