@claudeye/linux-x64 1.0.2-beta.1 → 1.0.2-beta.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.
Files changed (126) hide show
  1. package/assets/dist/action-registry.d.ts +9 -0
  2. package/assets/dist/action-registry.js +1 -0
  3. package/assets/dist/action-runner.d.ts +4 -0
  4. package/assets/dist/action-runner.js +1 -0
  5. package/assets/dist/action-types.d.ts +54 -0
  6. package/assets/dist/action-types.js +1 -0
  7. package/assets/dist/alert-dispatcher.d.ts +2 -0
  8. package/assets/dist/alert-dispatcher.js +1 -0
  9. package/assets/dist/alert-registry.d.ts +13 -0
  10. package/assets/dist/alert-registry.js +1 -0
  11. package/assets/dist/alert-types.d.ts +18 -0
  12. package/assets/dist/alert-types.js +1 -0
  13. package/assets/dist/app.d.ts +75 -0
  14. package/assets/dist/app.js +1 -0
  15. package/assets/dist/auth-registry.d.ts +11 -0
  16. package/assets/dist/auth-registry.js +1 -0
  17. package/assets/dist/condition-registry.d.ts +8 -0
  18. package/assets/dist/condition-registry.js +1 -0
  19. package/assets/dist/create-registry.d.ts +27 -0
  20. package/assets/dist/create-registry.js +1 -0
  21. package/assets/dist/dashboard-registry.d.ts +36 -0
  22. package/assets/dist/dashboard-registry.js +1 -0
  23. package/assets/dist/dashboard-runner.d.ts +3 -0
  24. package/assets/dist/dashboard-runner.js +1 -0
  25. package/assets/dist/dashboard-types.d.ts +194 -0
  26. package/assets/dist/dashboard-types.js +1 -0
  27. package/assets/dist/enrich-registry.d.ts +9 -0
  28. package/assets/dist/enrich-registry.js +1 -0
  29. package/assets/dist/enrich-runner.d.ts +3 -0
  30. package/assets/dist/enrich-runner.js +1 -0
  31. package/assets/dist/enrich-types.d.ts +39 -0
  32. package/assets/dist/enrich-types.js +1 -0
  33. package/assets/dist/index.d.ts +13 -0
  34. package/assets/dist/index.js +1 -0
  35. package/assets/dist/loader.d.ts +1 -0
  36. package/assets/dist/loader.js +1 -0
  37. package/assets/dist/queue-condition-registry.d.ts +13 -0
  38. package/assets/dist/queue-condition-registry.js +1 -0
  39. package/assets/dist/registry.d.ts +8 -0
  40. package/assets/dist/registry.js +1 -0
  41. package/assets/dist/run-all.d.ts +21 -0
  42. package/assets/dist/run-all.js +1 -0
  43. package/assets/dist/runner.d.ts +2 -0
  44. package/assets/dist/runner.js +1 -0
  45. package/assets/dist/server-spawn.d.ts +9 -0
  46. package/assets/dist/server-spawn.js +11 -0
  47. package/assets/dist/types.d.ts +101 -0
  48. package/assets/dist/types.js +1 -0
  49. package/assets/standalone/.next/BUILD_ID +1 -1
  50. package/assets/standalone/.next/build-manifest.json +2 -2
  51. package/assets/standalone/.next/prerender-manifest.json +3 -3
  52. package/assets/standalone/.next/server/app/_global-error.html +2 -2
  53. package/assets/standalone/.next/server/app/_global-error.rsc +1 -1
  54. package/assets/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  55. package/assets/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  56. package/assets/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  57. package/assets/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  58. package/assets/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  59. package/assets/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  60. package/assets/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  61. package/assets/standalone/.next/server/app/_not-found.html +2 -2
  62. package/assets/standalone/.next/server/app/_not-found.rsc +5 -5
  63. package/assets/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +5 -5
  64. package/assets/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  65. package/assets/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +5 -5
  66. package/assets/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  67. package/assets/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  68. package/assets/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  69. package/assets/standalone/.next/server/app/dashboard/[viewName]/page/server-reference-manifest.json +4 -4
  70. package/assets/standalone/.next/server/app/dashboard/[viewName]/page_client-reference-manifest.js +1 -1
  71. package/assets/standalone/.next/server/app/dashboard/page/server-reference-manifest.json +4 -4
  72. package/assets/standalone/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
  73. package/assets/standalone/.next/server/app/login/page/server-reference-manifest.json +2 -2
  74. package/assets/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  75. package/assets/standalone/.next/server/app/login.html +2 -2
  76. package/assets/standalone/.next/server/app/login.rsc +6 -6
  77. package/assets/standalone/.next/server/app/login.segments/_full.segment.rsc +6 -6
  78. package/assets/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
  79. package/assets/standalone/.next/server/app/login.segments/_index.segment.rsc +5 -5
  80. package/assets/standalone/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  81. package/assets/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  82. package/assets/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
  83. package/assets/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  84. package/assets/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  85. package/assets/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  86. package/assets/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  87. package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +1 -1
  88. package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +8 -8
  89. package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  90. package/assets/standalone/.next/server/app/queue/page/server-reference-manifest.json +3 -3
  91. package/assets/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  92. package/assets/standalone/.next/server/chunks/[root-of-the-server]__b18c2f99._.js +2 -2
  93. package/assets/standalone/.next/server/chunks/_d3c87a9f._.js +1 -1
  94. package/assets/standalone/.next/server/chunks/_fb07f1d4._.js +1 -1
  95. package/assets/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_7a66d362.js +1 -1
  96. package/assets/standalone/.next/server/chunks/ssr/_1d335924._.js +1 -1
  97. package/assets/standalone/.next/server/chunks/ssr/_34abf048._.js +2 -2
  98. package/assets/standalone/.next/server/chunks/ssr/_3e6c3cad._.js +2 -2
  99. package/assets/standalone/.next/server/chunks/ssr/_40b9779b._.js +2 -2
  100. package/assets/standalone/.next/server/chunks/ssr/_472a5ae2._.js +2 -2
  101. package/assets/standalone/.next/server/chunks/ssr/_76ab933f._.js +1 -1
  102. package/assets/standalone/.next/server/chunks/ssr/_87e025a1._.js +1 -1
  103. package/assets/standalone/.next/server/chunks/ssr/_cce5033e._.js +2 -2
  104. package/assets/standalone/.next/server/chunks/ssr/_d7141734._.js +2 -2
  105. package/assets/standalone/.next/server/chunks/ssr/_d982b289._.js +2 -2
  106. package/assets/standalone/.next/server/chunks/ssr/_f7ec0663._.js +2 -2
  107. package/assets/standalone/.next/server/chunks/ssr/app_actions_compute-dashboard_ts_fc151dbb._.js +1 -1
  108. package/assets/standalone/.next/server/chunks/ssr/app_login_page_tsx_ccc0019b._.js +1 -1
  109. package/assets/standalone/.next/server/chunks/ssr/app_queue_queue-client_tsx_45f040f7._.js +1 -1
  110. package/assets/standalone/.next/server/chunks/ssr/components_navbar_tsx_e9e361f1._.js +1 -1
  111. package/assets/standalone/.next/server/pages/404.html +2 -2
  112. package/assets/standalone/.next/server/pages/500.html +2 -2
  113. package/assets/standalone/.next/server/server-reference-manifest.js +1 -1
  114. package/assets/standalone/.next/server/server-reference-manifest.json +15 -15
  115. package/assets/standalone/.next/static/chunks/{75b94de1cb34ea99.js → 03a963c74a738019.js} +1 -1
  116. package/assets/standalone/.next/static/chunks/{4dfebb576f021bb7.js → 6869fbfc3b75bbde.js} +1 -1
  117. package/assets/standalone/.next/static/chunks/{ce8254787694286e.js → 7ec327353a0d957f.js} +1 -1
  118. package/assets/standalone/.next/static/chunks/{574c1b95e00e77d2.js → 9c07f0f12c773b3f.js} +1 -1
  119. package/assets/standalone/.next/static/chunks/{69dfe8394e01d2d8.js → e5ecbc1e31c7a458.js} +1 -1
  120. package/assets/standalone/.next/static/chunks/{c6a54313a7174f44.js → fe2b1f1f4a6556c1.js} +1 -1
  121. package/assets/standalone/package.json +1 -1
  122. package/bin/claudeye +0 -0
  123. package/package.json +1 -1
  124. /package/assets/standalone/.next/static/{f4HcoCdLHX_UOKi4Qqe8U → Qf1a9hhlIMFDrqGZ1NRvH}/_buildManifest.js +0 -0
  125. /package/assets/standalone/.next/static/{f4HcoCdLHX_UOKi4Qqe8U → Qf1a9hhlIMFDrqGZ1NRvH}/_clientMiddlewareManifest.json +0 -0
  126. /package/assets/standalone/.next/static/{f4HcoCdLHX_UOKi4Qqe8U → Qf1a9hhlIMFDrqGZ1NRvH}/_ssgManifest.js +0 -0
@@ -0,0 +1,9 @@
1
+ import type { ConditionFunction, EvalScope } from "./types";
2
+ import type { ActionFunction, RegisteredAction } from "./action-types";
3
+ export declare function registerAction(name: string, fn: ActionFunction, condition?: ConditionFunction, scope?: EvalScope, subagentType?: string, cache?: boolean): void;
4
+ export declare const getRegisteredActions: () => RegisteredAction[];
5
+ export declare const getSessionScopedActions: () => RegisteredAction[];
6
+ export declare const getSubagentScopedActions: (subagentType?: string) => RegisteredAction[];
7
+ export declare const hasSubagentActions: () => boolean;
8
+ export declare const hasActions: () => boolean;
9
+ export declare const clearActions: () => void;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.clearActions=exports.hasActions=exports.hasSubagentActions=exports.getSubagentScopedActions=exports.getSessionScopedActions=exports.getRegisteredActions=void 0,exports.registerAction=registerAction;const create_registry_1=require("./create-registry"),registry=(0,create_registry_1.createScopedRegistry)("__CLAUDEYE_ACTION_REGISTRY__");function registerAction(o,r,t,i="session",s,c=!0){const e={name:o,fn:r,scope:i,cache:c};t&&(e.condition=t),s&&(e.subagentType=s),registry.register(e)}exports.getRegisteredActions=registry.getAll,exports.getSessionScopedActions=registry.getSessionScoped,exports.getSubagentScopedActions=registry.getSubagentScoped,exports.hasSubagentActions=registry.hasSubagent,exports.hasActions=registry.has,exports.clearActions=registry.clear;
@@ -0,0 +1,4 @@
1
+ import type { EvalContext, EvalLogStats, EvalRunResult } from "./types";
2
+ import type { EnrichRunResult } from "./enrich-types";
3
+ import type { ActionRunSummary, RegisteredAction } from "./action-types";
4
+ export declare function runAllActions(entries: Record<string, unknown>[], stats: EvalLogStats, projectName: string, sessionId: string, evalResults: Record<string, EvalRunResult>, enrichmentResults: Record<string, EnrichRunResult>, actionsToRun?: RegisteredAction[], contextOverrides?: Partial<EvalContext>): Promise<ActionRunSummary>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runAllActions=runAllActions;const action_registry_1=require("./action-registry"),run_all_1=require("./run-all");async function runAllActions(a,c,i,l,p,d,u,m){const g=u!=null?u:(0,action_registry_1.getRegisteredActions)(),o=Object.assign(Object.assign({entries:a,stats:c,projectName:i,sessionId:l,source:"session"},m),{evalResults:p,enrichmentResults:d}),f=g.map(e=>Object.assign(Object.assign({},e),{fn:s=>e.fn(o)}));return(0,run_all_1.runAll)(f,o,{skipResult:e=>({name:e.name,status:"success",durationMs:0,skipped:!0}),successResult:(e,s,t)=>{var r;const n=s;return{name:e.name,output:n.output,status:(r=n.status)!==null&&r!==void 0?r:"success",message:n.message,durationMs:t}},errorResult:(e,s,t)=>({name:e.name,status:"error",durationMs:t,error:s}),unexpectedResult:()=>({name:"?",status:"error",durationMs:0,error:"Unexpected rejection"}),buildSummary:(e,s)=>{let t=0,r=0;for(const n of e)n.skipped?r++:n.status==="error"&&t++;return{results:e,totalDurationMs:s,errorCount:t,skippedCount:r}}})}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Type definitions for the action system.
3
+ *
4
+ * Actions are a flexible user-defined primitive that can return arbitrary
5
+ * text output, structured data, or perform side-effects. Unlike evals
6
+ * (pass/fail grading) or enrichments (key-value metadata), actions have
7
+ * no fixed output shape — they return whatever the user needs.
8
+ *
9
+ * Actions receive the full session context plus cached eval and enrichment
10
+ * results, and are triggered manually from the dashboard (never automatically).
11
+ *
12
+ * Reuses EvalContext from types.ts — extends it with eval/enrichment results.
13
+ */
14
+ import type { EvalContext, ConditionFunction, EvalScope, EvalRunResult } from "./types";
15
+ import type { EnrichRunResult } from "./enrich-types";
16
+ /** Context passed to each action function. Extends EvalContext with cached results. */
17
+ export interface ActionContext extends EvalContext {
18
+ evalResults: Record<string, EvalRunResult>;
19
+ enrichmentResults: Record<string, EnrichRunResult>;
20
+ }
21
+ /** Result returned by an action function. */
22
+ export interface ActionResult {
23
+ output?: string;
24
+ status: 'success' | 'error';
25
+ message?: string;
26
+ }
27
+ /** An action function signature. */
28
+ export type ActionFunction = (context: ActionContext) => ActionResult | Promise<ActionResult>;
29
+ /** An action function stored in the registry. */
30
+ export interface RegisteredAction {
31
+ name: string;
32
+ fn: ActionFunction;
33
+ condition?: ConditionFunction;
34
+ scope: EvalScope;
35
+ subagentType?: string;
36
+ cache: boolean;
37
+ }
38
+ /** Result of running a single action. */
39
+ export interface ActionRunResult {
40
+ name: string;
41
+ output?: string;
42
+ status: 'success' | 'error';
43
+ message?: string;
44
+ durationMs: number;
45
+ error?: string;
46
+ skipped?: boolean;
47
+ }
48
+ /** Summary of running all registered actions. */
49
+ export interface ActionRunSummary {
50
+ results: ActionRunResult[];
51
+ totalDurationMs: number;
52
+ errorCount: number;
53
+ skippedCount: number;
54
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1,2 @@
1
+ import type { AlertContext } from "./alert-types";
2
+ export declare function fireAlerts(context: AlertContext, isRecompute?: boolean): Promise<void>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.fireAlerts=fireAlerts;const alert_registry_1=require("./alert-registry");async function fireAlerts(t,s=!1){if(!(0,alert_registry_1.hasAlerts)())return;const l=(0,alert_registry_1.getRegisteredAlerts)().filter(e=>!s||!e.suppressOnRecompute);await Promise.allSettled(l.map(async e=>{try{await e.fn(t)}catch(r){console.error(`[alert] Error in alert "${e.name}":`,r instanceof Error?r.message:r)}}))}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Module-level singleton alert registry backed by globalThis.
3
+ *
4
+ * Alerts are keyed by name — registering a duplicate name replaces
5
+ * the previous callback. Using globalThis ensures the registry
6
+ * survives webpack chunk splitting and remains a true singleton
7
+ * across dynamic imports.
8
+ */
9
+ import type { AlertFunction, AlertOptions, RegisteredAlert } from "./alert-types";
10
+ export declare function registerAlert(name: string, fn: AlertFunction, options?: AlertOptions): void;
11
+ export declare function getRegisteredAlerts(): RegisteredAlert[];
12
+ export declare function hasAlerts(): boolean;
13
+ export declare function clearAlerts(): void;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.registerAlert=registerAlert,exports.getRegisteredAlerts=getRegisteredAlerts,exports.hasAlerts=hasAlerts,exports.clearAlerts=clearAlerts;const REGISTRY_KEY="__CLAUDEYE_ALERT_REGISTRY__";function getRegistry(){const e=globalThis;return e[REGISTRY_KEY]||(e[REGISTRY_KEY]=[]),e[REGISTRY_KEY]}function registerAlert(e,n,t){var r;const s=getRegistry(),l=(r=t==null?void 0:t.suppressOnRecompute)!==null&&r!==void 0?r:!0,o=s.findIndex(i=>i.name===e);o>=0?s[o]={name:e,fn:n,suppressOnRecompute:l}:s.push({name:e,fn:n,suppressOnRecompute:l})}function getRegisteredAlerts(){return getRegistry()}function hasAlerts(){return getRegistry().length>0}function clearAlerts(){const e=globalThis;e[REGISTRY_KEY]=[]}
@@ -0,0 +1,18 @@
1
+ import type { EvalRunSummary } from "./types";
2
+ import type { EnrichRunSummary } from "./enrich-types";
3
+ export interface AlertContext {
4
+ projectName: string;
5
+ sessionId: string;
6
+ evalSummary?: EvalRunSummary;
7
+ enrichSummary?: EnrichRunSummary;
8
+ }
9
+ export type AlertFunction = (context: AlertContext) => void | Promise<void>;
10
+ export interface AlertOptions {
11
+ /** When true (default), this alert is suppressed during recomputes triggered by code changes. */
12
+ suppressOnRecompute?: boolean;
13
+ }
14
+ export interface RegisteredAlert {
15
+ name: string;
16
+ fn: AlertFunction;
17
+ suppressOnRecompute: boolean;
18
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1,75 @@
1
+ import type { AuthUser } from "./auth-registry";
2
+ import type { ConditionFunction, EvalFunction, EvalScope, QueueConditionOptions } from "./types";
3
+ import type { EnrichFunction } from "./enrich-types";
4
+ import type { ActionFunction } from "./action-types";
5
+ import type { AlertFunction, AlertOptions } from "./alert-types";
6
+ import type { FilterFunction, FilterOptions, ViewOptions, AggregateDefinition, AggregateOptions, PreBuiltFilterName } from "./dashboard-types";
7
+ export interface ClaudeyeAppOptions {
8
+ /** Port for the dashboard (default: 8020). */
9
+ port?: number;
10
+ /** Host to bind to (default: "localhost"). Use "0.0.0.0" for LAN access. */
11
+ host?: string;
12
+ /** Whether to auto-open the browser (default: true). */
13
+ open?: boolean;
14
+ }
15
+ export interface EvalOptions {
16
+ condition?: ConditionFunction;
17
+ scope?: EvalScope;
18
+ subagentType?: string;
19
+ }
20
+ export interface EnrichOptions {
21
+ condition?: ConditionFunction;
22
+ scope?: EvalScope;
23
+ subagentType?: string;
24
+ }
25
+ export interface ActionOptions {
26
+ condition?: ConditionFunction;
27
+ scope?: EvalScope;
28
+ subagentType?: string;
29
+ cache?: boolean;
30
+ }
31
+ export interface DashboardViewBuilder {
32
+ /** Register a filter on this view. Returns the view builder for chaining. */
33
+ filter(name: string, fn: FilterFunction, options?: FilterOptions): DashboardViewBuilder;
34
+ /** Enable pre-built filters on this view. Returns the view builder for chaining. */
35
+ filter(options: {
36
+ preBuilt: PreBuiltFilterName[];
37
+ }): DashboardViewBuilder;
38
+ /** Register an aggregate on this view. Returns the view builder for chaining. */
39
+ aggregate(name: string, definition: AggregateDefinition, options?: AggregateOptions): DashboardViewBuilder;
40
+ }
41
+ export interface DashboardBuilder {
42
+ /** Register a dashboard filter on the default view. Returns the app for chaining. */
43
+ filter(name: string, fn: FilterFunction, options?: FilterOptions): ClaudeyeApp;
44
+ /** Enable pre-built filters on the default view. Returns the app for chaining. */
45
+ filter(options: {
46
+ preBuilt: PreBuiltFilterName[];
47
+ }): ClaudeyeApp;
48
+ /** Register an aggregate on the default view. Returns the app for chaining. */
49
+ aggregate(name: string, definition: AggregateDefinition, options?: AggregateOptions): ClaudeyeApp;
50
+ /** Create or get a named dashboard view. Returns a view builder. */
51
+ view(name: string, options?: ViewOptions): DashboardViewBuilder;
52
+ }
53
+ export interface ClaudeyeApp {
54
+ /** Register a global condition that gates all evals and enrichments. Chainable. */
55
+ condition(fn: ConditionFunction): ClaudeyeApp;
56
+ /** Register a condition that gates background queue processing. Chainable. */
57
+ queueCondition(fn: ConditionFunction, options?: QueueConditionOptions): ClaudeyeApp;
58
+ /** Register an eval function. Chainable. */
59
+ eval(name: string, fn: EvalFunction, options?: EvalOptions): ClaudeyeApp;
60
+ /** Register an enricher function. Chainable. */
61
+ enrich(name: string, fn: EnrichFunction, options?: EnrichOptions): ClaudeyeApp;
62
+ /** Register a user-defined action. Chainable. */
63
+ action(name: string, fn: ActionFunction, options?: ActionOptions): ClaudeyeApp;
64
+ /** Register an alert callback that fires after all evals+enrichments complete. Chainable. */
65
+ alert(name: string, fn: AlertFunction, options?: AlertOptions): ClaudeyeApp;
66
+ /** Configure username/password authentication. Chainable. */
67
+ auth(options: {
68
+ users: AuthUser[];
69
+ }): ClaudeyeApp;
70
+ /** Dashboard filter registration namespace. */
71
+ dashboard: DashboardBuilder;
72
+ /** Start the Claudeye dashboard server. No-op when loading evals in the Next.js process. */
73
+ listen(port?: number, options?: ClaudeyeAppOptions): Promise<void>;
74
+ }
75
+ export declare function createApp(): ClaudeyeApp;
@@ -0,0 +1 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,r,t,e){e===void 0&&(e=t);var u=Object.getOwnPropertyDescriptor(r,t);(!u||("get"in u?!r.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(i,e,u)}):(function(i,r,t,e){e===void 0&&(e=t),i[e]=r[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,r){Object.defineProperty(i,"default",{enumerable:!0,value:r})}):function(i,r){i.default=r}),__importStar=this&&this.__importStar||(function(){var i=function(r){return i=Object.getOwnPropertyNames||function(t){var e=[];for(var u in t)Object.prototype.hasOwnProperty.call(t,u)&&(e[e.length]=u);return e},i(r)};return function(r){if(r&&r.__esModule)return r;var t={};if(r!=null)for(var e=i(r),u=0;u<e.length;u++)e[u]!=="default"&&__createBinding(t,r,e[u]);return __setModuleDefault(t,r),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.createApp=createApp;const registry_1=require("./registry"),enrich_registry_1=require("./enrich-registry"),action_registry_1=require("./action-registry"),alert_registry_1=require("./alert-registry"),dashboard_registry_1=require("./dashboard-registry"),condition_registry_1=require("./condition-registry"),queue_condition_registry_1=require("./queue-condition-registry"),auth_registry_1=require("./auth-registry"),LOADING_KEY="__CLAUDEYE_LOADING_EVALS__";function createApp(){const i={condition(r){return(0,condition_registry_1.setGlobalCondition)(r),i},queueCondition(r,t){return(0,queue_condition_registry_1.setQueueCondition)(r,t),i},eval(r,t,e){return(0,registry_1.registerEval)(r,t,e==null?void 0:e.condition,e==null?void 0:e.scope,e==null?void 0:e.subagentType),i},enrich(r,t,e){return(0,enrich_registry_1.registerEnricher)(r,t,e==null?void 0:e.condition,e==null?void 0:e.scope,e==null?void 0:e.subagentType),i},action(r,t,e){return(0,action_registry_1.registerAction)(r,t,e==null?void 0:e.condition,e==null?void 0:e.scope,e==null?void 0:e.subagentType,e==null?void 0:e.cache),i},alert(r,t,e){return(0,alert_registry_1.registerAlert)(r,t,e),i},auth(r){return(0,auth_registry_1.registerAuthUsers)(r.users),i},dashboard:{filter(r,t,e){if(typeof r=="object"){for(const u of r.preBuilt)(0,dashboard_registry_1.registerPreBuiltFilter)(u,"default");return i}return(0,dashboard_registry_1.registerFilter)(r,t,e==null?void 0:e.label,e==null?void 0:e.condition,"default"),i},aggregate(r,t,e){return(0,dashboard_registry_1.registerAggregate)(r,t,e==null?void 0:e.label,e==null?void 0:e.condition,"default"),i},view(r,t){var e;(0,dashboard_registry_1.registerView)(r,(e=t==null?void 0:t.label)!==null&&e!==void 0?e:r,t==null?void 0:t.cachedOnly);const u={filter(d,n,l){if(typeof d=="object"){for(const c of d.preBuilt)(0,dashboard_registry_1.registerPreBuiltFilter)(c,r);return u}return(0,dashboard_registry_1.registerFilter)(d,n,l==null?void 0:l.label,l==null?void 0:l.condition,r),u},aggregate(d,n,l){return(0,dashboard_registry_1.registerAggregate)(d,n,l==null?void 0:l.label,l==null?void 0:l.condition,r),u}};return u}},async listen(r,t){var e,u;if(globalThis[LOADING_KEY])return;const{spawnServer:n}=await Promise.resolve().then(()=>__importStar(require("./server-spawn")));await n((e=r!=null?r:t==null?void 0:t.port)!==null&&e!==void 0?e:8020,{open:(u=t==null?void 0:t.open)!==null&&u!==void 0?u:!0,host:t==null?void 0:t.host})}};return i}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Module-level singleton auth-user registry backed by globalThis.
3
+ * Stores users configured via app.auth() for later consumption by server-spawn.
4
+ */
5
+ export interface AuthUser {
6
+ username: string;
7
+ password: string;
8
+ }
9
+ export declare function registerAuthUsers(users: AuthUser[]): void;
10
+ export declare function getAuthUsers(): AuthUser[];
11
+ export declare function clearAuthUsers(): void;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.registerAuthUsers=registerAuthUsers,exports.getAuthUsers=getAuthUsers,exports.clearAuthUsers=clearAuthUsers;const REGISTRY_KEY="__CLAUDEYE_AUTH_REGISTRY__";function registerAuthUsers(s){const e=globalThis;e[REGISTRY_KEY]||(e[REGISTRY_KEY]=[]),e[REGISTRY_KEY].push(...s)}function getAuthUsers(){var s;return(s=globalThis[REGISTRY_KEY])!==null&&s!==void 0?s:[]}function clearAuthUsers(){const s=globalThis;s[REGISTRY_KEY]=[]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Module-level singleton condition registry backed by globalThis.
3
+ * Stores an optional global condition function that gates all evals and enrichments.
4
+ */
5
+ import type { ConditionFunction } from "./types";
6
+ export declare function setGlobalCondition(fn: ConditionFunction): void;
7
+ export declare function getGlobalCondition(): ConditionFunction | null;
8
+ export declare function clearGlobalCondition(): void;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setGlobalCondition=setGlobalCondition,exports.getGlobalCondition=getGlobalCondition,exports.clearGlobalCondition=clearGlobalCondition;const REGISTRY_KEY="__CLAUDEYE_CONDITION_REGISTRY__";function setGlobalCondition(o){const l=globalThis;l[REGISTRY_KEY]=o}function getGlobalCondition(){var o;return(o=globalThis[REGISTRY_KEY])!==null&&o!==void 0?o:null}function clearGlobalCondition(){const o=globalThis;o[REGISTRY_KEY]=null}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Factory for creating scoped registries backed by globalThis.
3
+ *
4
+ * Using globalThis as the backing store ensures the registry survives
5
+ * webpack chunk splitting and Next.js hot reloading — it remains a true
6
+ * singleton even when the module is imported from different bundles.
7
+ *
8
+ * Both the eval registry and enricher registry share the exact same
9
+ * structure (register, getAll, getSessionScoped, getSubagentScoped, etc.)
10
+ * so this factory eliminates that duplication.
11
+ */
12
+ import type { EvalScope } from "./types";
13
+ /** Minimum shape of a registry item that supports scope filtering. */
14
+ export interface ScopedRegistryItem {
15
+ name: string;
16
+ scope: EvalScope;
17
+ subagentType?: string;
18
+ }
19
+ export declare function createScopedRegistry<T extends ScopedRegistryItem>(key: string): {
20
+ register(entry: T): void;
21
+ getAll(): T[];
22
+ getSessionScoped(): T[];
23
+ getSubagentScoped(subagentType?: string): T[];
24
+ hasSubagent(): boolean;
25
+ has(): boolean;
26
+ clear(): void;
27
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.createScopedRegistry=createScopedRegistry;function createScopedRegistry(s){function r(){const e=globalThis;return e[s]||(e[s]=[]),e[s]}return{register(e){const t=r(),n=t.findIndex(o=>o.name===e.name);n>=0?t[n]=e:t.push(e)},getAll(){return r()},getSessionScoped(){return r().filter(e=>e.scope==="session"||e.scope==="both")},getSubagentScoped(e){return r().filter(t=>!(t.scope!=="subagent"&&t.scope!=="both"||t.subagentType&&e&&t.subagentType!==e))},hasSubagent(){return r().some(e=>e.scope==="subagent"||e.scope==="both")},has(){return r().length>0},clear(){const e=globalThis;e[s]=[]}}}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Module-level singleton filter registry backed by globalThis.
3
+ *
4
+ * Filters are keyed by (view, name) — the same filter name can appear in
5
+ * different views. When no view is specified, filters default to the
6
+ * "default" view for backward compatibility.
7
+ *
8
+ * Using globalThis ensures the registry survives webpack chunk splitting
9
+ * and remains a true singleton across dynamic imports.
10
+ */
11
+ import type { ConditionFunction } from "./types";
12
+ import type { FilterFunction, RegisteredFilter, RegisteredView, AggregateDefinition, RegisteredAggregate, PreBuiltFilterName } from "./dashboard-types";
13
+ /** A registered pre-built filter stored in the registry. */
14
+ export interface RegisteredPreBuiltFilter {
15
+ name: PreBuiltFilterName;
16
+ view: string;
17
+ label: string;
18
+ }
19
+ export declare function registerFilter(name: string, fn: FilterFunction, label?: string, condition?: ConditionFunction, view?: string): void;
20
+ export declare function getRegisteredFilters(): RegisteredFilter[];
21
+ export declare function getFiltersForView(viewName: string): RegisteredFilter[];
22
+ export declare function hasFilters(): boolean;
23
+ export declare function clearFilters(): void;
24
+ export declare function registerView(name: string, label: string, cachedOnly?: boolean): void;
25
+ export declare function getViewOptions(viewName: string): RegisteredView | undefined;
26
+ export declare function getRegisteredViews(): RegisteredView[];
27
+ export declare function hasViews(): boolean;
28
+ export declare function clearViews(): void;
29
+ export declare function registerAggregate(name: string, definition: AggregateDefinition, label?: string, condition?: ConditionFunction, view?: string): void;
30
+ export declare function getAggregatesForView(viewName: string): RegisteredAggregate[];
31
+ export declare function hasAggregates(): boolean;
32
+ export declare function clearAggregates(): void;
33
+ export declare function registerPreBuiltFilter(name: PreBuiltFilterName, view: string): void;
34
+ export declare function getPreBuiltFiltersForView(viewName: string): RegisteredPreBuiltFilter[];
35
+ export declare function hasPreBuiltFilters(): boolean;
36
+ export declare function clearPreBuiltFilters(): void;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.registerFilter=registerFilter,exports.getRegisteredFilters=getRegisteredFilters,exports.getFiltersForView=getFiltersForView,exports.hasFilters=hasFilters,exports.clearFilters=clearFilters,exports.registerView=registerView,exports.getViewOptions=getViewOptions,exports.getRegisteredViews=getRegisteredViews,exports.hasViews=hasViews,exports.clearViews=clearViews,exports.registerAggregate=registerAggregate,exports.getAggregatesForView=getAggregatesForView,exports.hasAggregates=hasAggregates,exports.clearAggregates=clearAggregates,exports.registerPreBuiltFilter=registerPreBuiltFilter,exports.getPreBuiltFiltersForView=getPreBuiltFiltersForView,exports.hasPreBuiltFilters=hasPreBuiltFilters,exports.clearPreBuiltFilters=clearPreBuiltFilters;const REGISTRY_KEY="__CLAUDEYE_DASHBOARD_FILTER_REGISTRY__",VIEW_REGISTRY_KEY="__CLAUDEYE_DASHBOARD_VIEW_REGISTRY__",AGGREGATE_REGISTRY_KEY="__CLAUDEYE_DASHBOARD_AGGREGATE_REGISTRY__",PREBUILT_REGISTRY_KEY="__CLAUDEYE_DASHBOARD_PREBUILT_FILTER_REGISTRY__";function getRegistry(){const e=globalThis;return e[REGISTRY_KEY]||(e[REGISTRY_KEY]=[]),e[REGISTRY_KEY]}function getViewRegistry(){const e=globalThis;return e[VIEW_REGISTRY_KEY]||(e[VIEW_REGISTRY_KEY]=[]),e[VIEW_REGISTRY_KEY]}function registerFilter(e,t,r,n,i){const s=getRegistry(),o=i!=null?i:"default",g={name:e,fn:t,label:r!=null?r:e,view:o};n&&(g.condition=n);const l=s.findIndex(c=>c.view===o&&c.name===e);l>=0?s[l]=g:s.push(g)}function getRegisteredFilters(){return getRegistry()}function getFiltersForView(e){return getRegistry().filter(t=>t.view===e)}function hasFilters(){return getRegistry().length>0}function clearFilters(){const e=globalThis;e[REGISTRY_KEY]=[]}function registerView(e,t,r){const n=getViewRegistry(),i={name:e,label:t};r&&(i.cachedOnly=r);const s=n.findIndex(o=>o.name===e);s>=0?n[s]=i:n.push(i)}function getViewOptions(e){return getViewRegistry().find(t=>t.name===e)}function getRegisteredViews(){return getViewRegistry()}function hasViews(){return getViewRegistry().length>0}function clearViews(){const e=globalThis;e[VIEW_REGISTRY_KEY]=[]}function getAggregateRegistry(){const e=globalThis;return e[AGGREGATE_REGISTRY_KEY]||(e[AGGREGATE_REGISTRY_KEY]=[]),e[AGGREGATE_REGISTRY_KEY]}function registerAggregate(e,t,r,n,i){const s=getAggregateRegistry(),o=i!=null?i:"default",g={name:e,collect:t.collect,reduce:t.reduce,label:r!=null?r:e,view:o};n&&(g.condition=n);const l=s.findIndex(c=>c.view===o&&c.name===e);l>=0?s[l]=g:s.push(g)}function getAggregatesForView(e){return getAggregateRegistry().filter(t=>t.view===e)}function hasAggregates(){return getAggregateRegistry().length>0}function clearAggregates(){const e=globalThis;e[AGGREGATE_REGISTRY_KEY]=[]}const PRE_BUILT_LABELS={lastModified:"Last Modified"};function getPreBuiltRegistry(){const e=globalThis;return e[PREBUILT_REGISTRY_KEY]||(e[PREBUILT_REGISTRY_KEY]=[]),e[PREBUILT_REGISTRY_KEY]}function registerPreBuiltFilter(e,t){const r=getPreBuiltRegistry(),n=PRE_BUILT_LABELS[e],i=r.findIndex(s=>s.view===t&&s.name===e);i>=0?r[i]={name:e,view:t,label:n}:r.push({name:e,view:t,label:n})}function getPreBuiltFiltersForView(e){return getPreBuiltRegistry().filter(t=>t.view===e)}function hasPreBuiltFilters(){return getPreBuiltRegistry().length>0}function clearPreBuiltFilters(){const e=globalThis;e[PREBUILT_REGISTRY_KEY]=[]}
@@ -0,0 +1,3 @@
1
+ import type { EvalContext, EvalLogStats } from "./types";
2
+ import type { FilterComputeSummary, RegisteredFilter } from "./dashboard-types";
3
+ export declare function runAllFilters(entries: Record<string, unknown>[], stats: EvalLogStats, projectName: string, sessionId: string, filtersToRun?: RegisteredFilter[], evalResults?: EvalContext['evalResults']): Promise<FilterComputeSummary>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runAllFilters=runAllFilters;const dashboard_registry_1=require("./dashboard-registry"),run_all_1=require("./run-all");async function runAllFilters(o,i,c,d,t,n){const p=t!=null?t:(0,dashboard_registry_1.getRegisteredFilters)(),u={entries:o,stats:i,projectName:c,sessionId:d,source:"session"};return n&&(u.evalResults=n),(0,run_all_1.runAll)(p,u,{skipResult:e=>({name:e.name,value:!1,durationMs:0,skipped:!0}),successResult:(e,s,r)=>({name:e.name,value:s,durationMs:r}),errorResult:(e,s,r)=>({name:e.name,value:!1,durationMs:r,error:s}),unexpectedResult:()=>({name:"?",value:!1,durationMs:0,error:"Unexpected rejection"}),buildSummary:(e,s)=>{let r=0,l=0;for(const a of e)a.skipped?l++:a.error&&r++;return{results:e,totalDurationMs:s,errorCount:r,skippedCount:l}}})}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Type definitions for the dashboard filter system.
3
+ *
4
+ * Filters return boolean/number/string values. The UI control type is
5
+ * auto-detected from the first non-null computed value across all sessions:
6
+ * - boolean → three-state toggle (true / false / any)
7
+ * - number → range slider with observed min/max
8
+ * - string → multi-select dropdown with observed unique values
9
+ *
10
+ * Reuses EvalContext from types.ts — no duplication.
11
+ */
12
+ import type { EvalContext, EvalLogStats, ConditionFunction } from "./types";
13
+ import type { EnrichmentValue } from "./enrich-types";
14
+ /** Allowed return types for filter functions. */
15
+ export type FilterValue = boolean | number | string;
16
+ /** A filter function signature. */
17
+ export type FilterFunction = (context: EvalContext) => FilterValue | Promise<FilterValue>;
18
+ /** Options when registering a filter. */
19
+ export interface FilterOptions {
20
+ /** Human-readable label for the tile. Defaults to the filter name. */
21
+ label?: string;
22
+ /** Per-filter condition that gates execution. */
23
+ condition?: ConditionFunction;
24
+ }
25
+ /** A filter function stored in the registry. */
26
+ export interface RegisteredFilter {
27
+ name: string;
28
+ fn: FilterFunction;
29
+ label: string;
30
+ condition?: ConditionFunction;
31
+ view: string;
32
+ }
33
+ /** Options when creating a dashboard view. */
34
+ export interface ViewOptions {
35
+ label?: string;
36
+ /** When true, only sessions with complete per-item cache entries are shown. */
37
+ cachedOnly?: boolean;
38
+ }
39
+ /** A named dashboard view stored in the registry. */
40
+ export interface RegisteredView {
41
+ name: string;
42
+ label: string;
43
+ cachedOnly?: boolean;
44
+ }
45
+ /** Info about a view, returned to the client for the view index. */
46
+ export interface DashboardViewInfo {
47
+ name: string;
48
+ label: string;
49
+ filterCount: number;
50
+ aggregateCount: number;
51
+ }
52
+ /** Result of computing a single filter for one session. */
53
+ export interface FilterComputeResult {
54
+ name: string;
55
+ value: FilterValue;
56
+ durationMs: number;
57
+ error?: string;
58
+ skipped?: boolean;
59
+ }
60
+ /** Summary of computing all filters for one session. */
61
+ export interface FilterComputeSummary {
62
+ results: FilterComputeResult[];
63
+ totalDurationMs: number;
64
+ errorCount: number;
65
+ skippedCount: number;
66
+ }
67
+ /** Metadata for a boolean filter — three-state toggle. */
68
+ export interface BooleanFilterMeta {
69
+ type: "boolean";
70
+ name: string;
71
+ label: string;
72
+ }
73
+ /** Metadata for a number filter — range slider with min/max. */
74
+ export interface NumberFilterMeta {
75
+ type: "number";
76
+ name: string;
77
+ label: string;
78
+ min: number;
79
+ max: number;
80
+ }
81
+ /** Metadata for a string filter — multi-select dropdown. */
82
+ export interface StringFilterMeta {
83
+ type: "string";
84
+ name: string;
85
+ label: string;
86
+ values: string[];
87
+ }
88
+ /** Metadata for a date filter — date range picker with from/to. */
89
+ export interface DateFilterMeta {
90
+ type: "date";
91
+ name: string;
92
+ label: string;
93
+ min: string;
94
+ max: string;
95
+ }
96
+ /** Discriminated union of filter metadata. */
97
+ export type FilterMeta = BooleanFilterMeta | NumberFilterMeta | StringFilterMeta | DateFilterMeta;
98
+ /** A single session row in the dashboard payload. */
99
+ export interface DashboardSessionRow {
100
+ projectName: string;
101
+ sessionId: string;
102
+ lastModified: string;
103
+ lastModifiedFormatted: string;
104
+ filterValues: Record<string, FilterValue>;
105
+ }
106
+ /** Full dashboard payload returned by the server action. */
107
+ export interface DashboardPayload {
108
+ sessions: DashboardSessionRow[];
109
+ filterMeta: FilterMeta[];
110
+ totalDurationMs: number;
111
+ totalCount: number;
112
+ matchingCount: number;
113
+ page: number;
114
+ pageSize: number;
115
+ }
116
+ /** Serializable filter state for server-side filtering (Sets aren't serializable). */
117
+ export type SerializedFilterState = {
118
+ type: "boolean";
119
+ value: "all" | "true" | "false";
120
+ } | {
121
+ type: "number";
122
+ min: number;
123
+ max: number;
124
+ } | {
125
+ type: "string";
126
+ selected: string[];
127
+ } | {
128
+ type: "date";
129
+ from: string | null;
130
+ to: string | null;
131
+ };
132
+ export type SerializedFilters = Record<string, SerializedFilterState>;
133
+ /** Known pre-built filter names. */
134
+ export type PreBuiltFilterName = "lastModified";
135
+ /** Values that can be returned from a collect function. */
136
+ export type AggregateValue = boolean | number | string;
137
+ /** Context passed to aggregate collect functions (extends EvalContext). */
138
+ export interface AggregateContext {
139
+ entries: Record<string, unknown>[];
140
+ stats: EvalLogStats;
141
+ projectName: string;
142
+ sessionId: string;
143
+ source: string;
144
+ evalResults: Record<string, {
145
+ pass: boolean;
146
+ score: number;
147
+ error?: string;
148
+ message?: string;
149
+ }>;
150
+ enrichResults: Record<string, Record<string, EnrichmentValue>>;
151
+ filterValues: Record<string, FilterValue>;
152
+ }
153
+ /** Per-session collect function — returns key-value pairs to aggregate. */
154
+ export type AggregateCollectFunction = (context: AggregateContext) => Record<string, AggregateValue> | Promise<Record<string, AggregateValue>>;
155
+ /** A collected session row (output of collect phase). */
156
+ export interface CollectedSession {
157
+ projectName: string;
158
+ sessionId: string;
159
+ values: Record<string, AggregateValue>;
160
+ }
161
+ /** A row in the final aggregate table (output of reduce phase). */
162
+ export type AggregateTableRow = Record<string, AggregateValue>;
163
+ /** Full reduce function — receives all collected sessions, returns table rows. */
164
+ export type AggregateReduceFunction = (collected: CollectedSession[]) => AggregateTableRow[] | Promise<AggregateTableRow[]>;
165
+ /** Options when registering an aggregate. */
166
+ export interface AggregateOptions {
167
+ label?: string;
168
+ condition?: ConditionFunction;
169
+ }
170
+ /** Aggregate registration — requires both collect and reduce. */
171
+ export type AggregateDefinition = {
172
+ collect: AggregateCollectFunction;
173
+ reduce: AggregateReduceFunction;
174
+ };
175
+ /** A registered aggregate stored in the registry. */
176
+ export interface RegisteredAggregate {
177
+ name: string;
178
+ collect: AggregateCollectFunction;
179
+ reduce: AggregateReduceFunction;
180
+ label: string;
181
+ condition?: ConditionFunction;
182
+ view: string;
183
+ }
184
+ /** Full payload for aggregates. */
185
+ export interface AggregatePayload {
186
+ aggregates: {
187
+ name: string;
188
+ label: string;
189
+ rows: AggregateTableRow[];
190
+ columns: string[];
191
+ }[];
192
+ totalSessions: number;
193
+ totalDurationMs: number;
194
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1,9 @@
1
+ import type { ConditionFunction, EvalScope } from "./types";
2
+ import type { EnrichFunction, RegisteredEnricher } from "./enrich-types";
3
+ export declare function registerEnricher(name: string, fn: EnrichFunction, condition?: ConditionFunction, scope?: EvalScope, subagentType?: string): void;
4
+ export declare const getRegisteredEnrichers: () => RegisteredEnricher[];
5
+ export declare const getSessionScopedEnrichers: () => RegisteredEnricher[];
6
+ export declare const getSubagentScopedEnrichers: (subagentType?: string) => RegisteredEnricher[];
7
+ export declare const hasSubagentEnrichers: () => boolean;
8
+ export declare const hasEnrichers: () => boolean;
9
+ export declare const clearEnrichers: () => void;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.clearEnrichers=exports.hasEnrichers=exports.hasSubagentEnrichers=exports.getSubagentScopedEnrichers=exports.getSessionScopedEnrichers=exports.getRegisteredEnrichers=void 0,exports.registerEnricher=registerEnricher;const create_registry_1=require("./create-registry"),registry=(0,create_registry_1.createScopedRegistry)("__CLAUDEYE_ENRICHER_REGISTRY__");function registerEnricher(t,i,r,c="session",s){const e={name:t,fn:i,scope:c};r&&(e.condition=r),s&&(e.subagentType=s),registry.register(e)}exports.getRegisteredEnrichers=registry.getAll,exports.getSessionScopedEnrichers=registry.getSessionScoped,exports.getSubagentScopedEnrichers=registry.getSubagentScoped,exports.hasSubagentEnrichers=registry.hasSubagent,exports.hasEnrichers=registry.has,exports.clearEnrichers=registry.clear;
@@ -0,0 +1,3 @@
1
+ import type { EvalContext, EvalLogStats } from "./types";
2
+ import type { EnrichRunSummary, RegisteredEnricher } from "./enrich-types";
3
+ export declare function runAllEnrichers(entries: Record<string, unknown>[], stats: EvalLogStats, projectName: string, sessionId: string, enrichersToRun?: RegisteredEnricher[], contextOverrides?: Partial<EvalContext>): Promise<EnrichRunSummary>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runAllEnrichers=runAllEnrichers;const enrich_registry_1=require("./enrich-registry"),run_all_1=require("./run-all");async function runAllEnrichers(i,a,o,c,n,l){const d=n!=null?n:(0,enrich_registry_1.getRegisteredEnrichers)(),p=Object.assign({entries:i,stats:a,projectName:o,sessionId:c,source:"session"},l);return(0,run_all_1.runAll)(d,p,{skipResult:e=>({name:e.name,data:{},durationMs:0,skipped:!0}),successResult:(e,t,r)=>({name:e.name,data:t,durationMs:r}),errorResult:(e,t,r)=>({name:e.name,data:{},durationMs:r,error:t}),unexpectedResult:()=>({name:"?",data:{},durationMs:0,error:"Unexpected rejection"}),buildSummary:(e,t)=>{let r=0,s=0;for(const u of e)u.skipped?s++:u.error&&r++;return{results:e,totalDurationMs:t,errorCount:r,skippedCount:s}}})}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Type definitions for the enrichment system.
3
+ *
4
+ * Enrichers extract key-value metadata from session logs (e.g. token counts,
5
+ * model names, costs) as opposed to evals which grade them with pass/fail.
6
+ * The returned data is displayed in the session detail panel alongside evals.
7
+ *
8
+ * Reuses EvalContext from types.ts — no duplication.
9
+ */
10
+ import type { EvalContext, ConditionFunction, EvalScope } from "./types";
11
+ /** Allowed value types for enrichment results. */
12
+ export type EnrichmentValue = string | number | boolean;
13
+ /** The key-value map returned by an enricher function. */
14
+ export type EnrichmentResult = Record<string, EnrichmentValue>;
15
+ /** An enricher function signature. */
16
+ export type EnrichFunction = (context: EvalContext) => EnrichmentResult | Promise<EnrichmentResult>;
17
+ /** An enricher function stored in the registry. */
18
+ export interface RegisteredEnricher {
19
+ name: string;
20
+ fn: EnrichFunction;
21
+ condition?: ConditionFunction;
22
+ scope: EvalScope;
23
+ subagentType?: string;
24
+ }
25
+ /** Result of running a single enricher. */
26
+ export interface EnrichRunResult {
27
+ name: string;
28
+ data: EnrichmentResult;
29
+ durationMs: number;
30
+ error?: string;
31
+ skipped?: boolean;
32
+ }
33
+ /** Summary of running all registered enrichers. */
34
+ export interface EnrichRunSummary {
35
+ results: EnrichRunResult[];
36
+ totalDurationMs: number;
37
+ errorCount: number;
38
+ skippedCount: number;
39
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Barrel export for the claudeye eval system.
3
+ * This is the public API surface published via `dist/`.
4
+ */
5
+ export { createApp } from "./app";
6
+ export type { ClaudeyeApp, ClaudeyeAppOptions, EvalOptions, EnrichOptions, ActionOptions, DashboardBuilder, DashboardViewBuilder } from "./app";
7
+ export { getQueueCondition, clearQueueCondition } from "./queue-condition-registry";
8
+ export type { AuthUser } from "./auth-registry";
9
+ export type { EvalScope, EvalContext, EvalResult, EvalFunction, EvalLogEntry, EvalLogStats, EvalContentBlock, RegisteredEval, EvalRunResult, EvalRunSummary, ConditionFunction, QueueConditionOptions, } from "./types";
10
+ export type { AlertContext, AlertFunction, RegisteredAlert } from "./alert-types";
11
+ export type { EnrichmentValue, EnrichmentResult, EnrichFunction, RegisteredEnricher, EnrichRunResult, EnrichRunSummary, } from "./enrich-types";
12
+ export type { ActionContext, ActionFunction, ActionResult, RegisteredAction, ActionRunResult, ActionRunSummary, } from "./action-types";
13
+ export type { FilterValue, FilterFunction, FilterOptions, RegisteredFilter, FilterComputeResult, FilterComputeSummary, FilterMeta, BooleanFilterMeta, NumberFilterMeta, StringFilterMeta, DashboardSessionRow, DashboardPayload, ViewOptions, RegisteredView, DashboardViewInfo, AggregateValue, AggregateContext, AggregateCollectFunction, AggregateReduceFunction, AggregateDefinition, AggregateOptions, CollectedSession, AggregateTableRow, AggregatePayload, } from "./dashboard-types";
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.clearQueueCondition=exports.getQueueCondition=exports.createApp=void 0;var app_1=require("./app");Object.defineProperty(exports,"createApp",{enumerable:!0,get:function(){return app_1.createApp}});var queue_condition_registry_1=require("./queue-condition-registry");Object.defineProperty(exports,"getQueueCondition",{enumerable:!0,get:function(){return queue_condition_registry_1.getQueueCondition}}),Object.defineProperty(exports,"clearQueueCondition",{enumerable:!0,get:function(){return queue_condition_registry_1.clearQueueCondition}});
@@ -0,0 +1 @@
1
+ export declare function ensureEvalsLoaded(): Promise<void>;