olympus-ai 3.3.0 → 3.4.1

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 (116) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +2 -0
  4. package/dist/__tests__/installer.test.js +1 -1
  5. package/dist/__tests__/learning/aggregation.test.d.ts +2 -0
  6. package/dist/__tests__/learning/aggregation.test.d.ts.map +1 -0
  7. package/dist/__tests__/learning/aggregation.test.js +282 -0
  8. package/dist/__tests__/learning/aggregation.test.js.map +1 -0
  9. package/dist/__tests__/learning/anomaly.test.d.ts +2 -0
  10. package/dist/__tests__/learning/anomaly.test.d.ts.map +1 -0
  11. package/dist/__tests__/learning/anomaly.test.js +107 -0
  12. package/dist/__tests__/learning/anomaly.test.js.map +1 -0
  13. package/dist/__tests__/learning/baselines.test.d.ts +2 -0
  14. package/dist/__tests__/learning/baselines.test.d.ts.map +1 -0
  15. package/dist/__tests__/learning/baselines.test.js +155 -0
  16. package/dist/__tests__/learning/baselines.test.js.map +1 -0
  17. package/dist/__tests__/learning/efficiency.test.d.ts +2 -0
  18. package/dist/__tests__/learning/efficiency.test.d.ts.map +1 -0
  19. package/dist/__tests__/learning/efficiency.test.js +94 -0
  20. package/dist/__tests__/learning/efficiency.test.js.map +1 -0
  21. package/dist/__tests__/learning/feedback-loop-injection.test.d.ts +6 -0
  22. package/dist/__tests__/learning/feedback-loop-injection.test.d.ts.map +1 -0
  23. package/dist/__tests__/learning/feedback-loop-injection.test.js +288 -0
  24. package/dist/__tests__/learning/feedback-loop-injection.test.js.map +1 -0
  25. package/dist/__tests__/learning/learning-capture-integration.test.d.ts +6 -0
  26. package/dist/__tests__/learning/learning-capture-integration.test.d.ts.map +1 -0
  27. package/dist/__tests__/learning/learning-capture-integration.test.js +151 -0
  28. package/dist/__tests__/learning/learning-capture-integration.test.js.map +1 -0
  29. package/dist/__tests__/learning/token-metrics.test.d.ts +2 -0
  30. package/dist/__tests__/learning/token-metrics.test.d.ts.map +1 -0
  31. package/dist/__tests__/learning/token-metrics.test.js +308 -0
  32. package/dist/__tests__/learning/token-metrics.test.js.map +1 -0
  33. package/dist/__tests__/token-tracking-integration.test.d.ts +8 -0
  34. package/dist/__tests__/token-tracking-integration.test.d.ts.map +1 -0
  35. package/dist/__tests__/token-tracking-integration.test.js +669 -0
  36. package/dist/__tests__/token-tracking-integration.test.js.map +1 -0
  37. package/dist/agents/prometheus.d.ts.map +1 -1
  38. package/dist/agents/prometheus.js +27 -0
  39. package/dist/agents/prometheus.js.map +1 -1
  40. package/dist/cli/commands/metrics.d.ts +10 -2
  41. package/dist/cli/commands/metrics.d.ts.map +1 -1
  42. package/dist/cli/commands/metrics.js +25 -239
  43. package/dist/cli/commands/metrics.js.map +1 -1
  44. package/dist/cli/index.js +196 -1
  45. package/dist/cli/index.js.map +1 -1
  46. package/dist/config/loader.d.ts.map +1 -1
  47. package/dist/config/loader.js +14 -0
  48. package/dist/config/loader.js.map +1 -1
  49. package/dist/hooks/registrations/budget-warning.d.ts +8 -0
  50. package/dist/hooks/registrations/budget-warning.d.ts.map +1 -0
  51. package/dist/hooks/registrations/budget-warning.js +63 -0
  52. package/dist/hooks/registrations/budget-warning.js.map +1 -0
  53. package/dist/hooks/registrations/index.d.ts +3 -2
  54. package/dist/hooks/registrations/index.d.ts.map +1 -1
  55. package/dist/hooks/registrations/index.js +5 -3
  56. package/dist/hooks/registrations/index.js.map +1 -1
  57. package/dist/hooks/registrations/learning-capture.d.ts +19 -0
  58. package/dist/hooks/registrations/learning-capture.d.ts.map +1 -0
  59. package/dist/hooks/registrations/learning-capture.js +220 -0
  60. package/dist/hooks/registrations/learning-capture.js.map +1 -0
  61. package/dist/hooks/registrations/session-start.d.ts.map +1 -1
  62. package/dist/hooks/registrations/session-start.js +13 -0
  63. package/dist/hooks/registrations/session-start.js.map +1 -1
  64. package/dist/hooks/registrations/token-metrics.d.ts +10 -2
  65. package/dist/hooks/registrations/token-metrics.d.ts.map +1 -1
  66. package/dist/hooks/registrations/token-metrics.js +18 -4
  67. package/dist/hooks/registrations/token-metrics.js.map +1 -1
  68. package/dist/installer/index.d.ts +2 -2
  69. package/dist/installer/index.d.ts.map +1 -1
  70. package/dist/installer/index.js +202 -15
  71. package/dist/installer/index.js.map +1 -1
  72. package/dist/learning/aggregation.d.ts +39 -0
  73. package/dist/learning/aggregation.d.ts.map +1 -0
  74. package/dist/learning/aggregation.js +101 -0
  75. package/dist/learning/aggregation.js.map +1 -0
  76. package/dist/learning/anomaly.d.ts +30 -0
  77. package/dist/learning/anomaly.d.ts.map +1 -0
  78. package/dist/learning/anomaly.js +102 -0
  79. package/dist/learning/anomaly.js.map +1 -0
  80. package/dist/learning/baselines.d.ts +44 -0
  81. package/dist/learning/baselines.d.ts.map +1 -0
  82. package/dist/learning/baselines.js +126 -0
  83. package/dist/learning/baselines.js.map +1 -0
  84. package/dist/learning/efficiency.d.ts +23 -0
  85. package/dist/learning/efficiency.d.ts.map +1 -0
  86. package/dist/learning/efficiency.js +67 -0
  87. package/dist/learning/efficiency.js.map +1 -0
  88. package/dist/learning/hooks/learned-context.d.ts.map +1 -1
  89. package/dist/learning/hooks/learned-context.js +46 -0
  90. package/dist/learning/hooks/learned-context.js.map +1 -1
  91. package/dist/learning/pricing.d.ts +30 -0
  92. package/dist/learning/pricing.d.ts.map +1 -0
  93. package/dist/learning/pricing.js +98 -0
  94. package/dist/learning/pricing.js.map +1 -0
  95. package/dist/learning/session-state.d.ts +12 -2
  96. package/dist/learning/session-state.d.ts.map +1 -1
  97. package/dist/learning/session-state.js +72 -3
  98. package/dist/learning/session-state.js.map +1 -1
  99. package/dist/learning/storage.d.ts +21 -1
  100. package/dist/learning/storage.d.ts.map +1 -1
  101. package/dist/learning/storage.js +84 -0
  102. package/dist/learning/storage.js.map +1 -1
  103. package/dist/learning/token-estimator.d.ts +41 -0
  104. package/dist/learning/token-estimator.d.ts.map +1 -0
  105. package/dist/learning/token-estimator.js +111 -0
  106. package/dist/learning/token-estimator.js.map +1 -0
  107. package/dist/learning/types.d.ts +32 -0
  108. package/dist/learning/types.d.ts.map +1 -1
  109. package/dist/learning/utils.d.ts +42 -0
  110. package/dist/learning/utils.d.ts.map +1 -0
  111. package/dist/learning/utils.js +76 -0
  112. package/dist/learning/utils.js.map +1 -0
  113. package/dist/shared/types.d.ts +29 -0
  114. package/dist/shared/types.d.ts.map +1 -1
  115. package/package.json +1 -1
  116. package/scripts/dist/hooks/olympus-hooks.cjs +86 -84
@@ -1,6 +1,7 @@
1
1
  import { join } from 'path';
2
2
  import { readJsonFile, writeJsonFile } from './storage.js';
3
3
  import { randomUUID } from 'crypto';
4
+ import { getSessionBaseline } from './baselines.js';
4
5
  const MAX_RECENT_PROMPTS = 10;
5
6
  const SESSION_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
6
7
  /** Get session state file path */
@@ -8,7 +9,8 @@ export function getSessionStatePath(directory) {
8
9
  return join(directory, '.olympus', 'session-state.json');
9
10
  }
10
11
  /** Create fresh session state */
11
- export function createSessionState(sessionId) {
12
+ export function createSessionState(sessionId, projectPath) {
13
+ const baseline = getSessionBaseline(projectPath);
12
14
  return {
13
15
  session_id: sessionId || randomUUID(),
14
16
  started_at: new Date().toISOString(),
@@ -16,6 +18,13 @@ export function createSessionState(sessionId) {
16
18
  recent_prompts: [],
17
19
  pending_completion: null,
18
20
  todo_snapshot: null,
21
+ token_budget: {
22
+ session_baseline: baseline,
23
+ current_usage: 0,
24
+ warning_threshold: 1.5,
25
+ warning_issued: false,
26
+ started_at: new Date().toISOString()
27
+ }
19
28
  };
20
29
  }
21
30
  /** Load or create session state */
@@ -23,13 +32,24 @@ export function loadSessionState(directory, sessionId) {
23
32
  const path = getSessionStatePath(directory);
24
33
  const state = readJsonFile(path, null);
25
34
  if (!state) {
26
- return createSessionState(sessionId);
35
+ return createSessionState(sessionId, directory);
27
36
  }
28
37
  // Check for session timeout
29
38
  const lastUpdate = new Date(state.last_updated).getTime();
30
39
  const now = Date.now();
31
40
  if (now - lastUpdate > SESSION_TIMEOUT_MS) {
32
- return createSessionState(sessionId);
41
+ return createSessionState(sessionId, directory);
42
+ }
43
+ // Initialize token_budget if missing (backward compatibility)
44
+ if (!state.token_budget) {
45
+ const baseline = getSessionBaseline(directory);
46
+ state.token_budget = {
47
+ session_baseline: baseline,
48
+ current_usage: 0,
49
+ warning_threshold: 1.5,
50
+ warning_issued: false,
51
+ started_at: state.started_at
52
+ };
33
53
  }
34
54
  return state;
35
55
  }
@@ -75,4 +95,53 @@ export function hasPendingCompletion(state) {
75
95
  const now = Date.now();
76
96
  return now - claimedAt < 5 * 60 * 1000;
77
97
  }
98
+ /** Initialize token budget for session */
99
+ export function initializeTokenBudget(state, projectPath) {
100
+ const baseline = getSessionBaseline(projectPath);
101
+ state.token_budget = {
102
+ session_baseline: baseline,
103
+ current_usage: 0,
104
+ warning_threshold: 1.5,
105
+ warning_issued: false,
106
+ started_at: new Date().toISOString()
107
+ };
108
+ state.last_updated = new Date().toISOString();
109
+ return state;
110
+ }
111
+ /** Update token budget with new usage */
112
+ export function updateTokenBudget(state, tokensUsed) {
113
+ if (!state.token_budget) {
114
+ state.token_budget = {
115
+ session_baseline: getSessionBaseline(),
116
+ current_usage: 0,
117
+ warning_threshold: 1.5,
118
+ warning_issued: false,
119
+ started_at: new Date().toISOString()
120
+ };
121
+ }
122
+ state.token_budget.current_usage += tokensUsed;
123
+ state.last_updated = new Date().toISOString();
124
+ return state;
125
+ }
126
+ /** Mark that warning has been issued */
127
+ export function markWarningIssued(state) {
128
+ if (state.token_budget) {
129
+ state.token_budget.warning_issued = true;
130
+ state.last_updated = new Date().toISOString();
131
+ }
132
+ return state;
133
+ }
134
+ /** Check if budget warning should be issued */
135
+ export function shouldIssueWarning(state) {
136
+ if (!state.token_budget)
137
+ return false;
138
+ if (state.token_budget.warning_issued)
139
+ return false;
140
+ const threshold = state.token_budget.session_baseline * state.token_budget.warning_threshold;
141
+ return state.token_budget.current_usage >= threshold;
142
+ }
143
+ /** Get current token budget info */
144
+ export function getTokenBudgetInfo(state) {
145
+ return state.token_budget ?? null;
146
+ }
78
147
  //# sourceMappingURL=session-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/learning/session-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAE,aAAa;AAEzD,kCAAkC;AAClC,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAC3D,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,kBAAkB,CAAC,SAAkB;IACnD,OAAO;QACL,UAAU,EAAE,SAAS,IAAI,UAAU,EAAE;QACrC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,cAAc,EAAE,EAAE;QAClB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,IAAI;KACpB,CAAC;AACJ,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,SAAkB;IACpE,MAAM,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAsB,IAAI,EAAE,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,4BAA4B;IAC5B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,GAAG,UAAU,GAAG,kBAAkB,EAAE,CAAC;QAC1C,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,KAAmB;IACrE,MAAM,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC5C,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,kBAAkB,CAChC,KAAmB,EACnB,MAAc,EACd,gBAAmC;IAEnC,MAAM,KAAK,GAAG;QACZ,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,iBAAiB,EAAE,gBAAgB;KACpC,CAAC;IAEF,KAAK,CAAC,cAAc,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACrF,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE9C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,mBAAmB,CACjC,KAAmB,EACnB,eAAuB,EACvB,SAAkB;IAElB,KAAK,CAAC,kBAAkB,GAAG;QACzB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,gBAAgB,EAAE,eAAe;QACjC,UAAU,EAAE,SAAS;KACtB,CAAC;IACF,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,UAAU;QAAE,OAAO,KAAK,CAAC;IAExD,4CAA4C;IAC5C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,OAAO,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/learning/session-state.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { FeedbackEntry } from './types.js';
1
+ import type { FeedbackEntry, AgentPerformance } from './types.js';
2
2
  /** Get learning storage directory (cross-platform) */
3
3
  export declare function getLearningDir(): string;
4
4
  /** Get project-specific learning directory */
@@ -13,6 +13,26 @@ declare function rotateIfNeeded(filePath: string, maxLines?: number): void;
13
13
  export declare function appendFeedback(entry: FeedbackEntry): void;
14
14
  /** Read feedback log */
15
15
  export declare function readFeedbackLog(): FeedbackEntry[];
16
+ /** Save feedback entry (alias for appendFeedback) */
17
+ export declare function saveFeedback(entry: FeedbackEntry): void;
18
+ /** Load feedback entries (alias for readFeedbackLog) */
19
+ export declare function loadFeedback(): FeedbackEntry[];
20
+ /**
21
+ * Update agent performance metrics with token efficiency
22
+ * Recalculates token_efficiency based on feedback entries with token usage
23
+ */
24
+ export declare function updateAgentPerformance(agentName: string, feedbackEntries: FeedbackEntry[]): AgentPerformance | null;
25
+ /**
26
+ * Get session baseline for token budgeting
27
+ * Default to 10000 tokens if not configured
28
+ */
29
+ export declare function getSessionBaseline(config?: {
30
+ learning?: {
31
+ tokenMetrics?: {
32
+ sessionBaseline?: number;
33
+ };
34
+ };
35
+ }): number;
16
36
  /** Read JSON file with type safety and error handling */
17
37
  export declare function readJsonFile<T>(path: string, defaultValue: T): T;
18
38
  /** Write JSON file with error handling */
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/learning/storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKhD,sDAAsD;AACtD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAY7D;AAED,qDAAqD;AACrD,iBAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAwB,GAAG,IAAI,CAiBlF;AAED,yCAAyC;AACzC,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAQzD;AAED,wBAAwB;AACxB,wBAAgB,eAAe,IAAI,aAAa,EAAE,CASjD;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAQhE;AAED,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAWhE;AAED,mEAAmE;AACnE,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/learning/storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAC;AAMnF,sDAAsD;AACtD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAY7D;AAED,qDAAqD;AACrD,iBAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAwB,GAAG,IAAI,CAiBlF;AAED,yCAAyC;AACzC,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAQzD;AAED,wBAAwB;AACxB,wBAAgB,eAAe,IAAI,aAAa,EAAE,CASjD;AAED,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEvD;AAED,wDAAwD;AACxD,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAE9C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,aAAa,EAAE,GAC/B,gBAAgB,GAAG,IAAI,CA4EzB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE;YAAE,eAAe,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,CAElH;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAQhE;AAED,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAWhE;AAED,mEAAmE;AACnE,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -2,6 +2,7 @@ import { homedir } from 'os';
2
2
  import { join, resolve, dirname } from 'path';
3
3
  import { existsSync, mkdirSync, appendFileSync, readFileSync, writeFileSync, renameSync } from 'fs';
4
4
  import { createHash } from 'crypto';
5
+ import { getTokenUsage, safeTokenTotal } from './utils.js';
5
6
  /** Maximum lines before rotating JSONL files */
6
7
  const MAX_JSONL_LINES = 10000;
7
8
  /** Get learning storage directory (cross-platform) */
@@ -68,6 +69,89 @@ export function readFeedbackLog() {
68
69
  .filter(line => line.trim())
69
70
  .map(line => JSON.parse(line));
70
71
  }
72
+ /** Save feedback entry (alias for appendFeedback) */
73
+ export function saveFeedback(entry) {
74
+ appendFeedback(entry);
75
+ }
76
+ /** Load feedback entries (alias for readFeedbackLog) */
77
+ export function loadFeedback() {
78
+ return readFeedbackLog();
79
+ }
80
+ /**
81
+ * Update agent performance metrics with token efficiency
82
+ * Recalculates token_efficiency based on feedback entries with token usage
83
+ */
84
+ export function updateAgentPerformance(agentName, feedbackEntries) {
85
+ const agentEntries = feedbackEntries.filter(e => e.agent_used === agentName);
86
+ if (agentEntries.length === 0) {
87
+ return null;
88
+ }
89
+ // Basic performance metrics
90
+ const totalInvocations = agentEntries.length;
91
+ const successCount = agentEntries.filter(e => e.event_type === 'success').length;
92
+ const revisionCount = agentEntries.filter(e => e.event_type === 'revision').length;
93
+ const cancellationCount = agentEntries.filter(e => e.event_type === 'cancellation').length;
94
+ const successRate = totalInvocations > 0 ? successCount / totalInvocations : 0;
95
+ // Token efficiency metrics
96
+ let tokenEfficiency;
97
+ const entriesWithTokens = agentEntries.filter(e => getTokenUsage(e) !== null);
98
+ if (entriesWithTokens.length > 0) {
99
+ const successEntries = entriesWithTokens.filter(e => e.event_type === 'success');
100
+ const failureEntries = entriesWithTokens.filter(e => e.event_type === 'revision' || e.event_type === 'cancellation');
101
+ const totalTokens = entriesWithTokens.reduce((sum, e) => sum + safeTokenTotal(e), 0);
102
+ const successTokens = successEntries.reduce((sum, e) => sum + safeTokenTotal(e), 0);
103
+ const failureTokens = failureEntries.reduce((sum, e) => sum + safeTokenTotal(e), 0);
104
+ const avgTokensPerSuccess = successEntries.length > 0 ? successTokens / successEntries.length : 0;
105
+ const avgTokensPerFailure = failureEntries.length > 0 ? failureTokens / failureEntries.length : 0;
106
+ tokenEfficiency = {
107
+ avg_tokens_per_success: avgTokensPerSuccess,
108
+ avg_tokens_per_failure: avgTokensPerFailure,
109
+ total_tokens: totalTokens,
110
+ invocation_count: entriesWithTokens.length,
111
+ efficiency_score: avgTokensPerSuccess,
112
+ trend: 'insufficient_data'
113
+ };
114
+ // Calculate trend (simple heuristic: compare first half vs second half)
115
+ if (entriesWithTokens.length >= 10) {
116
+ const midpoint = Math.floor(entriesWithTokens.length / 2);
117
+ const firstHalf = entriesWithTokens.slice(0, midpoint);
118
+ const secondHalf = entriesWithTokens.slice(midpoint);
119
+ const firstAvg = firstHalf.reduce((sum, e) => sum + safeTokenTotal(e), 0) / firstHalf.length;
120
+ const secondAvg = secondHalf.reduce((sum, e) => sum + safeTokenTotal(e), 0) / secondHalf.length;
121
+ const difference = secondAvg - firstAvg;
122
+ const threshold = firstAvg * 0.1; // 10% threshold
123
+ if (Math.abs(difference) < threshold) {
124
+ tokenEfficiency.trend = 'stable';
125
+ }
126
+ else if (difference < 0) {
127
+ tokenEfficiency.trend = 'improving'; // Fewer tokens is better
128
+ }
129
+ else {
130
+ tokenEfficiency.trend = 'declining';
131
+ }
132
+ }
133
+ }
134
+ return {
135
+ agent_name: agentName,
136
+ total_invocations: totalInvocations,
137
+ success_count: successCount,
138
+ revision_count: revisionCount,
139
+ cancellation_count: cancellationCount,
140
+ success_rate: successRate,
141
+ failure_patterns: [],
142
+ strong_areas: [],
143
+ weak_areas: [],
144
+ last_updated: new Date().toISOString(),
145
+ token_efficiency: tokenEfficiency
146
+ };
147
+ }
148
+ /**
149
+ * Get session baseline for token budgeting
150
+ * Default to 10000 tokens if not configured
151
+ */
152
+ export function getSessionBaseline(config) {
153
+ return config?.learning?.tokenMetrics?.sessionBaseline ?? 10000;
154
+ }
71
155
  /** Read JSON file with type safety and error handling */
72
156
  export function readJsonFile(path, defaultValue) {
73
157
  if (!existsSync(path))
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/learning/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/learning/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Token estimation utilities for Olympus learning system
3
+ *
4
+ * Uses gpt-tokenizer for accurate token counting with fallback to character-based estimation.
5
+ * Token counts are approximations for tracking trends, not exact billing calculations.
6
+ */
7
+ /**
8
+ * Main token estimation function
9
+ *
10
+ * @param text - Text to estimate tokens for
11
+ * @returns Estimated token count
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const tokens = await estimateTokens("Hello, world!");
16
+ * console.log(tokens); // ~4 tokens
17
+ * ```
18
+ */
19
+ export declare function estimateTokens(text: string): Promise<number>;
20
+ /**
21
+ * Estimate tokens from tool output (handles various result formats)
22
+ *
23
+ * @param output - Tool output object (from Claude Code SDK)
24
+ * @returns Estimated token count
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * const readResult = { content: "file contents..." };
29
+ * const tokens = await estimateTokensFromToolOutput(readResult);
30
+ * ```
31
+ */
32
+ export declare function estimateTokensFromToolOutput(output: unknown): Promise<number>;
33
+ /**
34
+ * Synchronous version of estimateTokens using only character-based estimation
35
+ * Useful when async operations aren't possible
36
+ *
37
+ * @param text - Text to estimate tokens for
38
+ * @returns Estimated token count (character-based)
39
+ */
40
+ export declare function estimateTokensSync(text: string): number;
41
+ //# sourceMappingURL=token-estimator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-estimator.d.ts","sourceRoot":"","sources":["../../src/learning/token-estimator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8BH;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BnF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Token estimation utilities for Olympus learning system
3
+ *
4
+ * Uses gpt-tokenizer for accurate token counting with fallback to character-based estimation.
5
+ * Token counts are approximations for tracking trends, not exact billing calculations.
6
+ */
7
+ let encode = null;
8
+ let tokenizerInitialized = false;
9
+ /**
10
+ * Initialize the GPT tokenizer (lazy-loaded)
11
+ */
12
+ async function initTokenizer() {
13
+ if (tokenizerInitialized)
14
+ return;
15
+ try {
16
+ // Dynamic import for gpt-tokenizer
17
+ const { encode: gptEncode } = await import('gpt-tokenizer');
18
+ encode = gptEncode;
19
+ tokenizerInitialized = true;
20
+ }
21
+ catch (error) {
22
+ // Tokenizer unavailable, will fall back to character counting
23
+ tokenizerInitialized = true;
24
+ }
25
+ }
26
+ /**
27
+ * Estimate token count using character-based heuristic
28
+ * Claude/GPT-4 average: ~1 token per 4 characters
29
+ */
30
+ function estimateTokensByCharacters(text) {
31
+ return Math.ceil(text.length / 4);
32
+ }
33
+ /**
34
+ * Main token estimation function
35
+ *
36
+ * @param text - Text to estimate tokens for
37
+ * @returns Estimated token count
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const tokens = await estimateTokens("Hello, world!");
42
+ * console.log(tokens); // ~4 tokens
43
+ * ```
44
+ */
45
+ export async function estimateTokens(text) {
46
+ if (!text || text.length === 0) {
47
+ return 0;
48
+ }
49
+ await initTokenizer();
50
+ try {
51
+ if (encode) {
52
+ const tokens = encode(text);
53
+ return tokens.length;
54
+ }
55
+ }
56
+ catch (error) {
57
+ // Fall through to character-based estimation
58
+ }
59
+ return estimateTokensByCharacters(text);
60
+ }
61
+ /**
62
+ * Estimate tokens from tool output (handles various result formats)
63
+ *
64
+ * @param output - Tool output object (from Claude Code SDK)
65
+ * @returns Estimated token count
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const readResult = { content: "file contents..." };
70
+ * const tokens = await estimateTokensFromToolOutput(readResult);
71
+ * ```
72
+ */
73
+ export async function estimateTokensFromToolOutput(output) {
74
+ if (!output) {
75
+ return 0;
76
+ }
77
+ // Handle common tool output formats
78
+ if (typeof output === 'object' && output !== null) {
79
+ // Check for common content fields
80
+ const obj = output;
81
+ if ('content' in obj && typeof obj.content === 'string') {
82
+ return estimateTokens(obj.content);
83
+ }
84
+ if ('output' in obj && typeof obj.output === 'string') {
85
+ return estimateTokens(obj.output);
86
+ }
87
+ if ('text' in obj && typeof obj.text === 'string') {
88
+ return estimateTokens(obj.text);
89
+ }
90
+ if ('result' in obj && typeof obj.result === 'string') {
91
+ return estimateTokens(obj.result);
92
+ }
93
+ }
94
+ // Fallback: stringify entire object
95
+ const text = typeof output === 'string' ? output : JSON.stringify(output);
96
+ return estimateTokens(text);
97
+ }
98
+ /**
99
+ * Synchronous version of estimateTokens using only character-based estimation
100
+ * Useful when async operations aren't possible
101
+ *
102
+ * @param text - Text to estimate tokens for
103
+ * @returns Estimated token count (character-based)
104
+ */
105
+ export function estimateTokensSync(text) {
106
+ if (!text || text.length === 0) {
107
+ return 0;
108
+ }
109
+ return estimateTokensByCharacters(text);
110
+ }
111
+ //# sourceMappingURL=token-estimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/learning/token-estimator.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,13 @@ export interface HookInput {
15
15
  * Session state maintained across hook invocations
16
16
  * Stored in .olympus/session-state.json
17
17
  */
18
+ export interface TokenBudget {
19
+ session_baseline: number;
20
+ current_usage: number;
21
+ warning_threshold: number;
22
+ warning_issued: boolean;
23
+ started_at: string;
24
+ }
18
25
  export interface SessionState {
19
26
  session_id: string;
20
27
  started_at: string;
@@ -34,8 +41,22 @@ export interface SessionState {
34
41
  completed: number;
35
42
  pending: number;
36
43
  } | null;
44
+ token_budget?: TokenBudget;
37
45
  }
38
46
  export type FeedbackCategory = 'correction' | 'rejection' | 'clarification' | 'enhancement' | 'praise' | 'explicit_preference';
47
+ export interface TokenUsage {
48
+ input_tokens: number;
49
+ output_tokens: number;
50
+ total_tokens: number;
51
+ estimated: boolean;
52
+ model?: string;
53
+ }
54
+ export interface CostEstimate {
55
+ input_cost: number;
56
+ output_cost: number;
57
+ total_cost: number;
58
+ pricing_version: string;
59
+ }
39
60
  export interface FeedbackEntry {
40
61
  id: string;
41
62
  timestamp: string;
@@ -49,6 +70,8 @@ export interface FeedbackEntry {
49
70
  feedback_category: FeedbackCategory;
50
71
  extracted_lesson?: string;
51
72
  confidence: number;
73
+ token_usage?: TokenUsage;
74
+ cost_estimate?: CostEstimate;
52
75
  }
53
76
  export interface UserPreferences {
54
77
  verbosity: 'concise' | 'detailed' | 'unknown';
@@ -64,6 +87,14 @@ export interface UserPreferences {
64
87
  }>;
65
88
  last_updated: string;
66
89
  }
90
+ export interface TokenEfficiency {
91
+ avg_tokens_per_success: number;
92
+ avg_tokens_per_failure: number;
93
+ total_tokens: number;
94
+ invocation_count: number;
95
+ efficiency_score: number;
96
+ trend: 'improving' | 'declining' | 'stable' | 'insufficient_data';
97
+ }
67
98
  export interface AgentPerformance {
68
99
  agent_name: string;
69
100
  total_invocations: number;
@@ -79,6 +110,7 @@ export interface AgentPerformance {
79
110
  strong_areas: string[];
80
111
  weak_areas: string[];
81
112
  last_updated: string;
113
+ token_efficiency?: TokenEfficiency;
82
114
  }
83
115
  export interface ProjectPatterns {
84
116
  project_hash: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/learning/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/learning/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Type guards and safe accessor utilities for learning system
3
+ * No external dependencies - using Node.js built-ins only
4
+ */
5
+ import type { FeedbackEntry, AgentPerformance, TokenUsage } from './types.js';
6
+ /**
7
+ * Safely extract token usage from feedback entry
8
+ * Returns null if token_usage is undefined or invalid
9
+ */
10
+ export declare function getTokenUsage(entry: FeedbackEntry): TokenUsage | null;
11
+ /**
12
+ * Safely extract efficiency score from agent performance
13
+ * Returns 0 if token_efficiency is undefined
14
+ */
15
+ export declare function getEfficiencyScore(perf: AgentPerformance): number;
16
+ /**
17
+ * Check if agent performance has minimum sample size for reliable metrics
18
+ * Default minimum is 5 invocations
19
+ */
20
+ export declare function hasMinimumSamples(perf: AgentPerformance, minimum?: number): boolean;
21
+ /**
22
+ * Safely get total tokens from feedback entry
23
+ * Returns 0 if token_usage is undefined or invalid
24
+ */
25
+ export declare function safeTokenTotal(entry: FeedbackEntry): number;
26
+ /**
27
+ * Type guard: check if value is a valid TokenUsage object
28
+ */
29
+ export declare function isTokenUsage(value: unknown): value is TokenUsage;
30
+ /**
31
+ * Type guard: check if feedback entry has token metrics
32
+ */
33
+ export declare function hasTokenMetrics(entry: FeedbackEntry): entry is FeedbackEntry & {
34
+ token_usage: TokenUsage;
35
+ };
36
+ /**
37
+ * Type guard: check if agent performance has efficiency metrics
38
+ */
39
+ export declare function hasEfficiencyMetrics(perf: AgentPerformance): perf is AgentPerformance & {
40
+ token_efficiency: NonNullable<AgentPerformance['token_efficiency']>;
41
+ };
42
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/learning/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI,CAkBrE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAMjE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAE,MAAU,GAAG,OAAO,CAMtF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAG3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAYhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,aAAa,GAAG;IAC9E,WAAW,EAAE,UAAU,CAAC;CACzB,CAEA;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,IAAI,gBAAgB,GAAG;IACvF,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC;CACrE,CAEA"}