@miller-tech/uap 1.5.4 → 1.5.6

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 (70) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/bin/cli.js +6 -0
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/bin/llama-server-optimize.js +0 -0
  5. package/dist/bin/policy.js +0 -0
  6. package/dist/bin/tool-calls.js +0 -0
  7. package/dist/cli/dashboard.d.ts +1 -0
  8. package/dist/cli/dashboard.d.ts.map +1 -1
  9. package/dist/cli/dashboard.js.map +1 -1
  10. package/dist/memory/active-context.d.ts +65 -0
  11. package/dist/memory/active-context.d.ts.map +1 -0
  12. package/dist/memory/active-context.js +126 -0
  13. package/dist/memory/active-context.js.map +1 -0
  14. package/dist/memory/dedup-detector.d.ts +57 -0
  15. package/dist/memory/dedup-detector.d.ts.map +1 -0
  16. package/dist/memory/dedup-detector.js +107 -0
  17. package/dist/memory/dedup-detector.js.map +1 -0
  18. package/dist/memory/dedup-memory.d.ts +89 -0
  19. package/dist/memory/dedup-memory.d.ts.map +1 -0
  20. package/dist/memory/dedup-memory.js +173 -0
  21. package/dist/memory/dedup-memory.js.map +1 -0
  22. package/dist/memory/merge-claude-md.d.ts +45 -0
  23. package/dist/memory/merge-claude-md.d.ts.map +1 -0
  24. package/dist/memory/merge-claude-md.js +118 -0
  25. package/dist/memory/merge-claude-md.js.map +1 -0
  26. package/dist/memory/patterns.d.ts +37 -0
  27. package/dist/memory/patterns.d.ts.map +1 -0
  28. package/dist/memory/patterns.js +81 -0
  29. package/dist/memory/patterns.js.map +1 -0
  30. package/dist/memory/semantic-edge-graph.d.ts +86 -0
  31. package/dist/memory/semantic-edge-graph.d.ts.map +1 -0
  32. package/dist/memory/semantic-edge-graph.js +168 -0
  33. package/dist/memory/semantic-edge-graph.js.map +1 -0
  34. package/dist/memory/semantic-retrieval.d.ts +70 -0
  35. package/dist/memory/semantic-retrieval.d.ts.map +1 -0
  36. package/dist/memory/semantic-retrieval.js +112 -0
  37. package/dist/memory/semantic-retrieval.js.map +1 -0
  38. package/dist/memory/smart-consolidator.d.ts +53 -0
  39. package/dist/memory/smart-consolidator.d.ts.map +1 -0
  40. package/dist/memory/smart-consolidator.js +144 -0
  41. package/dist/memory/smart-consolidator.js.map +1 -0
  42. package/dist/memory/view-memory.d.ts +80 -0
  43. package/dist/memory/view-memory.d.ts.map +1 -0
  44. package/dist/memory/view-memory.js +130 -0
  45. package/dist/memory/view-memory.js.map +1 -0
  46. package/dist/memory/wrapped-memory.d.ts +77 -0
  47. package/dist/memory/wrapped-memory.d.ts.map +1 -0
  48. package/dist/memory/wrapped-memory.js +127 -0
  49. package/dist/memory/wrapped-memory.js.map +1 -0
  50. package/dist/telemetry/session-telemetry.d.ts +5 -0
  51. package/dist/telemetry/session-telemetry.d.ts.map +1 -1
  52. package/dist/telemetry/session-telemetry.js +243 -0
  53. package/dist/telemetry/session-telemetry.js.map +1 -1
  54. package/dist/utils/adaptive-cache.d.ts +67 -0
  55. package/dist/utils/adaptive-cache.d.ts.map +1 -0
  56. package/dist/utils/adaptive-cache.js +149 -0
  57. package/dist/utils/adaptive-cache.js.map +1 -0
  58. package/dist/utils/concurrency.d.ts +33 -0
  59. package/dist/utils/concurrency.d.ts.map +1 -0
  60. package/dist/utils/concurrency.js +88 -0
  61. package/dist/utils/concurrency.js.map +1 -0
  62. package/dist/utils/file-discovery.d.ts +38 -0
  63. package/dist/utils/file-discovery.d.ts.map +1 -0
  64. package/dist/utils/file-discovery.js +100 -0
  65. package/dist/utils/file-discovery.js.map +1 -0
  66. package/dist/utils/performance-monitor.d.ts +52 -0
  67. package/dist/utils/performance-monitor.d.ts.map +1 -0
  68. package/dist/utils/performance-monitor.js +103 -0
  69. package/dist/utils/performance-monitor.js.map +1 -0
  70. package/package.json +5 -3
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Wrapped Memory Module for UAP
3
+ *
4
+ * Provides a wrapper interface for memory storage with additional utilities.
5
+ */
6
+ const DEFAULT_CONFIG = {
7
+ autoId: true,
8
+ idPrefix: 'mem-',
9
+ defaultType: 'general',
10
+ };
11
+ /**
12
+ * Wrapped Memory
13
+ * A wrapper around memory storage with convenience methods
14
+ */
15
+ export class WrappedMemory {
16
+ config;
17
+ storage = new Map();
18
+ constructor(config = {}) {
19
+ this.config = { ...DEFAULT_CONFIG, ...config };
20
+ }
21
+ /**
22
+ * Add a memory entry
23
+ */
24
+ add(entry) {
25
+ const id = entry.id ||
26
+ (this.config.autoId
27
+ ? `${this.config.idPrefix}${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
28
+ : `${this.config.idPrefix}${Date.now()}-${Math.random().toString(36).slice(2, 9)}`);
29
+ const fullEntry = {
30
+ ...entry,
31
+ id,
32
+ timestamp: entry.timestamp || new Date().toISOString(),
33
+ };
34
+ this.storage.set(id, fullEntry);
35
+ return id;
36
+ }
37
+ /**
38
+ * Get a memory entry by ID
39
+ */
40
+ get(id) {
41
+ return this.storage.get(id) || null;
42
+ }
43
+ /**
44
+ * Update a memory entry
45
+ */
46
+ update(id, content, type, importance) {
47
+ const existing = this.storage.get(id);
48
+ if (!existing)
49
+ return false;
50
+ const updated = {
51
+ ...existing,
52
+ content,
53
+ type: type || existing.type,
54
+ importance: importance ?? existing.importance,
55
+ timestamp: new Date().toISOString(),
56
+ };
57
+ this.storage.set(id, updated);
58
+ return true;
59
+ }
60
+ /**
61
+ * Delete a memory entry
62
+ */
63
+ delete(id) {
64
+ return this.storage.delete(id);
65
+ }
66
+ /**
67
+ * Get all entries
68
+ */
69
+ getAll() {
70
+ return Array.from(this.storage.values());
71
+ }
72
+ /**
73
+ * Query entries by type
74
+ */
75
+ getByType(type) {
76
+ return this.getAll().filter((e) => e.type === type);
77
+ }
78
+ /**
79
+ * Search content
80
+ */
81
+ search(query, limit = 10) {
82
+ const lowerQuery = query.toLowerCase();
83
+ return this.getAll()
84
+ .filter((e) => e.content.toLowerCase().includes(lowerQuery))
85
+ .slice(0, limit);
86
+ }
87
+ /**
88
+ * Get entries by date range
89
+ */
90
+ getByDateRange(start, end, limit) {
91
+ return this.getAll()
92
+ .filter((e) => {
93
+ const ts = new Date(e.timestamp);
94
+ return ts >= start && ts <= end;
95
+ })
96
+ .slice(0, limit);
97
+ }
98
+ /**
99
+ * Count entries
100
+ */
101
+ count() {
102
+ return this.storage.size;
103
+ }
104
+ /**
105
+ * Clear all entries
106
+ */
107
+ clear() {
108
+ this.storage.clear();
109
+ }
110
+ /**
111
+ * Export all data as JSON
112
+ */
113
+ export() {
114
+ return JSON.stringify(Array.from(this.storage.values()), null, 2);
115
+ }
116
+ /**
117
+ * Import data from JSON
118
+ */
119
+ import(data) {
120
+ const entries = JSON.parse(data);
121
+ this.storage.clear();
122
+ for (const entry of entries) {
123
+ this.storage.set(entry.id, entry);
124
+ }
125
+ }
126
+ }
127
+ //# sourceMappingURL=wrapped-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapped-memory.js","sourceRoot":"","sources":["../../src/memory/wrapped-memory.ts"],"names":[],"mappings":"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"}
@@ -52,5 +52,10 @@ export declare function backupFile(filePath: string, projectRoot?: string): stri
52
52
  export declare function backupDirectory(dirPath: string, projectRoot?: string): Promise<number>;
53
53
  export declare function showActivePolicies(): void;
54
54
  export declare function resetStats(): void;
55
+ export declare function startDashboard(intervalMs?: number, showWorkGraph?: boolean): void;
56
+ export declare function stopDashboard(): void;
57
+ export declare function dashboardPause(): void;
58
+ export declare function dashboardResume(): void;
59
+ export declare function showDashboardSnapshot(showWorkGraph?: boolean): void;
55
60
  export {};
56
61
  //# sourceMappingURL=session-telemetry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-telemetry.d.ts","sourceRoot":"","sources":["../../src/telemetry/session-telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-telemetry.d.ts","sourceRoot":"","sources":["../../src/telemetry/session-telemetry.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,8 @@ function getStats() {
58
58
  costs: [],
59
59
  totalCostUsd: 0,
60
60
  estimatedCostWithoutUap: 0,
61
+ maxEntries: 100, // LRU eviction limit
62
+ lastCleanup: Date.now(),
61
63
  };
62
64
  }
63
65
  return _stats;
@@ -807,4 +809,245 @@ export function showActivePolicies() {
807
809
  export function resetStats() {
808
810
  _stats = null;
809
811
  }
812
+ // ─── Memory Management & LRU Eviction ───
813
+ function trimMapLRU(map, maxSize) {
814
+ if (map.size <= maxSize)
815
+ return;
816
+ const entries = [...map.entries()];
817
+ // Sort by last access time (add lastAccessed property to your types)
818
+ entries.sort((a, b) => {
819
+ const aLastAccessed = a[1].lastAccessed || 0;
820
+ const bLastAccessed = b[1].lastAccessed || 0;
821
+ return aLastAccessed - bLastAccessed;
822
+ });
823
+ // Remove oldest half
824
+ const toRemove = Math.floor(entries.length / 2);
825
+ for (let i = 0; i < toRemove; i++) {
826
+ map.delete(entries[i][0]);
827
+ }
828
+ }
829
+ function cleanupCompletedItems() {
830
+ const s = getStats();
831
+ const oneHourAgo = Date.now() - 3600000;
832
+ // Remove completed agents older than 1 hour
833
+ for (const [id, agent] of s.agents) {
834
+ if (agent.status === 'done' && agent.endTime && agent.endTime < oneHourAgo) {
835
+ s.agents.delete(id);
836
+ }
837
+ }
838
+ // Remove completed tasks older than 1 hour
839
+ for (const [id, task] of s.tasks) {
840
+ if ((task.status === 'done' || task.status === 'failed') &&
841
+ task.endTime &&
842
+ task.endTime < oneHourAgo) {
843
+ s.tasks.delete(id);
844
+ }
845
+ }
846
+ // Trim Maps to max size using LRU
847
+ trimMapLRU(s.agents, Math.floor(s.maxEntries * 0.5));
848
+ trimMapLRU(s.tasks, Math.floor(s.maxEntries * 0.3));
849
+ trimMapLRU(s.skills, Math.floor(s.maxEntries * 0.1));
850
+ trimMapLRU(s.patterns, Math.floor(s.maxEntries * 0.1));
851
+ s.lastCleanup = Date.now();
852
+ }
853
+ function scheduleCleanup() {
854
+ const s = getStats();
855
+ // Run cleanup every 5 minutes or when memory pressure detected
856
+ if (Date.now() - s.lastCleanup > 300000) {
857
+ cleanupCompletedItems();
858
+ }
859
+ }
860
+ let dashboardState = null;
861
+ let dashboardInterval = null;
862
+ const DASHBOARD_CONFIG = {
863
+ BASE_INTERVAL: 2000,
864
+ IDLE_THRESHOLD: 3,
865
+ MAX_IDLE_INTERVAL: 30000,
866
+ ACTIVITY_THRESHOLD: 2, // Consider active if >2 agents/tasks working
867
+ };
868
+ function generateDashboardHash(s) {
869
+ const activeAgents = [...s.agents.values()].filter((a) => a.status === 'working').length;
870
+ const activeTasks = [...s.tasks.values()].filter((t) => t.status === 'in_progress').length;
871
+ return `${s.sessionId}-${activeAgents}-${activeTasks}-${Date.now() % 1000}`;
872
+ }
873
+ function shouldUpdateDashboard(s) {
874
+ const activeAgents = [...s.agents.values()].filter((a) => a.status === 'working').length;
875
+ const activeTasks = [...s.tasks.values()].filter((t) => t.status === 'in_progress').length;
876
+ return activeAgents > 0 || activeTasks > 0 || s.errors > 0;
877
+ }
878
+ export function startDashboard(intervalMs = 2000, showWorkGraph = false) {
879
+ if (dashboardInterval) {
880
+ console.log(`${DIM}[DASHBOARD]${RESET} Already running`);
881
+ return;
882
+ }
883
+ const s = getStats();
884
+ const initialHash = generateDashboardHash(s);
885
+ dashboardState = {
886
+ lastDataHash: initialHash,
887
+ consecutiveEmptyUpdates: 0,
888
+ idleTimeout: null,
889
+ showWorkGraph,
890
+ };
891
+ console.log(`${GREEN}[DASHBOARD]${RESET} ${DIM}Starting adaptive dashboard (base: ${intervalMs}ms)${RESET}${showWorkGraph ? ` ${DIM}(with work graph)${RESET}` : ''}`);
892
+ const updateDashboard = () => {
893
+ if (!dashboardState)
894
+ return;
895
+ const currentHash = generateDashboardHash(s);
896
+ const shouldUpdate = currentHash !== dashboardState.lastDataHash || shouldUpdateDashboard(s);
897
+ if (shouldUpdate) {
898
+ renderDashboard(s, intervalMs);
899
+ dashboardState.lastDataHash = currentHash;
900
+ dashboardState.consecutiveEmptyUpdates = 0;
901
+ // Reset idle timeout on activity
902
+ if (dashboardState.idleTimeout) {
903
+ clearTimeout(dashboardState.idleTimeout);
904
+ dashboardState.idleTimeout = null;
905
+ }
906
+ }
907
+ else {
908
+ dashboardState.consecutiveEmptyUpdates++;
909
+ // Extend interval on idle: 2s → 4s → 8s → max 30s
910
+ if (dashboardState.consecutiveEmptyUpdates >= DASHBOARD_CONFIG.IDLE_THRESHOLD) {
911
+ const newInterval = Math.min(intervalMs *
912
+ Math.pow(2, dashboardState.consecutiveEmptyUpdates - DASHBOARD_CONFIG.IDLE_THRESHOLD), DASHBOARD_CONFIG.MAX_IDLE_INTERVAL);
913
+ console.log(`${DIM}[DASHBOARD]${RESET} ${DIM}Idle detected, extending interval to ${newInterval}ms${RESET}`);
914
+ // Schedule next check with extended interval
915
+ dashboardState.idleTimeout = setTimeout(() => {
916
+ if (dashboardState?.idleTimeout) {
917
+ clearTimeout(dashboardState.idleTimeout);
918
+ dashboardState.idleTimeout = null;
919
+ }
920
+ updateDashboard();
921
+ }, newInterval);
922
+ }
923
+ }
924
+ };
925
+ renderDashboard(s, intervalMs);
926
+ dashboardInterval = setInterval(() => {
927
+ scheduleCleanup();
928
+ updateDashboard();
929
+ }, intervalMs);
930
+ }
931
+ function renderDashboard(s, currentInterval) {
932
+ const w = 80;
933
+ const line = BOX.h.repeat(w);
934
+ console.log(`\n${CYAN}${BOX.tl}${line}${BOX.tr}${RESET}`);
935
+ console.log(boxLine(`${BOLD}${WHITE}${BG_CYAN} UAP LIVE DASHBOARD ${RESET} ${DIM}Session ${s.sessionId}${RESET} ${DIM}${new Date().toLocaleTimeString()}${RESET}${currentInterval > DASHBOARD_CONFIG.BASE_INTERVAL ? ` (${currentInterval}ms)` : ''}`, w));
936
+ console.log(`${CYAN}${BOX.bl}${line}${BOX.br}${RESET}`);
937
+ const activeAgents = [...s.agents.values()].filter((a) => a.status === 'working');
938
+ const activeTasks = [...s.tasks.values()].filter((t) => t.status === 'in_progress');
939
+ const activeSkillNames = [...s.skills.values()].filter((sk) => sk.active).map((sk) => sk.name);
940
+ const activePatternNames = [...s.patterns.values()].filter((p) => p.active).map((p) => p.name);
941
+ const queuedDeploys = [...s.deploys.values()].filter((a) => a.status === 'queued' || a.status === 'batched');
942
+ console.log(` ${DIM}Duration:${RESET} ${elapsed()} ${DIM}Tokens:${RESET} ${BLUE}${formatTokens(s.tokensUsed)}${RESET}${s.tokensSaved > 0 ? ` ${GREEN}(-${formatTokens(s.tokensSaved)})${RESET}` : ''}${s.totalCostUsd > 0 ? ` ${DIM}($${s.totalCostUsd.toFixed(3)})${RESET}` : ''}`);
943
+ console.log(` ${DIM}Agents:${RESET} ${activeAgents.length} working${activeAgents.length > 0 ? ` (${activeAgents.map((a) => a.name).join(', ')})` : ''}`);
944
+ console.log(` ${DIM}Tasks:${RESET} ${activeTasks.length} in progress${activeTasks.length > 0 ? ` (${activeTasks.map((t) => truncate(t.title, 25)).join(', ')})` : ''}`);
945
+ if (queuedDeploys.length > 0) {
946
+ console.log(` ${YELLOW}[DEPLOY]${RESET} ${queuedDeploys.length} queued${queuedDeploys.length > 1 ? '+' : ''}`);
947
+ }
948
+ if (activeSkillNames.length > 0) {
949
+ console.log(` ${GREEN}[SKILLS]${RESET} ${activeSkillNames.slice(0, 3).join(', ')}${activeSkillNames.length > 3 ? ` +${activeSkillNames.length - 3}` : ''}`);
950
+ }
951
+ if (activePatternNames.length > 0) {
952
+ console.log(` ${BLUE}[PATTERNS]${RESET} ${activePatternNames.slice(0, 3).join(', ')}${activePatternNames.length > 3 ? ` +${activePatternNames.length - 3}` : ''}`);
953
+ }
954
+ if (s.errors > 0) {
955
+ console.log(` ${RED}[ERRORS]${RESET} ${s.errors} total`);
956
+ }
957
+ if (dashboardState?.showWorkGraph && s.tasks.size > 0) {
958
+ workGraph();
959
+ }
960
+ }
961
+ export function stopDashboard() {
962
+ if (!dashboardInterval) {
963
+ console.log(`${DIM}[DASHBOARD]${RESET} Not running`);
964
+ return;
965
+ }
966
+ clearInterval(dashboardInterval);
967
+ dashboardInterval = null;
968
+ console.log(`${GREEN}[DASHBOARD]${RESET} ${DIM}Stopped${RESET}`);
969
+ }
970
+ export function dashboardPause() {
971
+ if (!dashboardInterval) {
972
+ console.log(`${DIM}[DASHBOARD]${RESET} Not running`);
973
+ return;
974
+ }
975
+ clearInterval(dashboardInterval);
976
+ dashboardInterval = null;
977
+ console.log(`${YELLOW}[DASHBOARD]${RESET} ${DIM}Paused${RESET}`);
978
+ }
979
+ export function dashboardResume() {
980
+ if (dashboardInterval) {
981
+ console.log(`${DIM}[DASHBOARD]${RESET} Already running`);
982
+ return;
983
+ }
984
+ const s = getStats();
985
+ console.log(`${GREEN}[DASHBOARD]${RESET} ${DIM}Resumed${RESET}`);
986
+ dashboardInterval = setInterval(() => {
987
+ const w = 80;
988
+ const line = BOX.h.repeat(w);
989
+ console.log(`\n${CYAN}${BOX.tl}${line}${BOX.tr}${RESET}`);
990
+ console.log(boxLine(`${BOLD}${WHITE}${BG_CYAN} UAP LIVE DASHBOARD ${RESET} ${DIM}Session ${s.sessionId}${RESET} ${DIM}${new Date().toLocaleTimeString()}${RESET}`, w));
991
+ console.log(`${CYAN}${BOX.bl}${line}${BOX.br}${RESET}`);
992
+ const activeAgents = [...s.agents.values()].filter((a) => a.status === 'working');
993
+ const activeTasks = [...s.tasks.values()].filter((t) => t.status === 'in_progress');
994
+ const activeSkillNames = [...s.skills.values()].filter((sk) => sk.active).map((sk) => sk.name);
995
+ const activePatternNames = [...s.patterns.values()].filter((p) => p.active).map((p) => p.name);
996
+ const queuedDeploys = [...s.deploys.values()].filter((a) => a.status === 'queued' || a.status === 'batched');
997
+ console.log(` ${DIM}Duration:${RESET} ${elapsed()} ${DIM}Tokens:${RESET} ${BLUE}${formatTokens(s.tokensUsed)}${RESET}${s.tokensSaved > 0 ? ` ${GREEN}(-${formatTokens(s.tokensSaved)})${RESET}` : ''}${s.totalCostUsd > 0 ? ` ${DIM}($${s.totalCostUsd.toFixed(3)})${RESET}` : ''}`);
998
+ console.log(` ${DIM}Agents:${RESET} ${activeAgents.length} working${activeAgents.length > 0 ? ` (${activeAgents.map((a) => a.name).join(', ')})` : ''}`);
999
+ console.log(` ${DIM}Tasks:${RESET} ${activeTasks.length} in progress${activeTasks.length > 0 ? ` (${activeTasks.map((t) => truncate(t.title, 25)).join(', ')})` : ''}`);
1000
+ if (queuedDeploys.length > 0) {
1001
+ console.log(` ${YELLOW}[DEPLOY]${RESET} ${queuedDeploys.length} queued${queuedDeploys.length > 1 ? '+' : ''}`);
1002
+ }
1003
+ if (activeSkillNames.length > 0) {
1004
+ console.log(` ${GREEN}[SKILLS]${RESET} ${activeSkillNames.slice(0, 3).join(', ')}${activeSkillNames.length > 3 ? ` +${activeSkillNames.length - 3}` : ''}`);
1005
+ }
1006
+ if (activePatternNames.length > 0) {
1007
+ console.log(` ${BLUE}[PATTERNS]${RESET} ${activePatternNames.slice(0, 3).join(', ')}${activePatternNames.length > 3 ? ` +${activePatternNames.length - 3}` : ''}`);
1008
+ }
1009
+ if (s.errors > 0) {
1010
+ console.log(` ${RED}[ERRORS]${RESET} ${s.errors} total`);
1011
+ }
1012
+ }, 2000);
1013
+ }
1014
+ export function showDashboardSnapshot(showWorkGraph = false) {
1015
+ const s = getStats();
1016
+ const w = 80;
1017
+ const line = BOX.h.repeat(w);
1018
+ console.log(`\n${CYAN}${BOX.tl}${line}${BOX.tr}${RESET}`);
1019
+ console.log(boxLine(`${BOLD}${WHITE}${BG_CYAN} UAP DASHBOARD ${RESET} ${DIM}Session ${s.sessionId}${RESET} ${DIM}${new Date().toLocaleTimeString()}${RESET}`, w));
1020
+ console.log(`${CYAN}${BOX.bl}${line}${BOX.br}${RESET}`);
1021
+ const activeAgents = [...s.agents.values()].filter((a) => a.status === 'working');
1022
+ const activeTasks = [...s.tasks.values()].filter((t) => t.status === 'in_progress');
1023
+ const doneTasks = [...s.tasks.values()].filter((t) => t.status === 'done');
1024
+ const activeSkillNames = [...s.skills.values()].filter((sk) => sk.active).map((sk) => sk.name);
1025
+ const activePatternNames = [...s.patterns.values()].filter((p) => p.active).map((p) => p.name);
1026
+ const queuedDeploys = [...s.deploys.values()].filter((a) => a.status === 'queued' || a.status === 'batched');
1027
+ const executingDeploys = [...s.deploys.values()].filter((a) => a.status === 'executing');
1028
+ console.log(` ${DIM}Duration:${RESET} ${elapsed()} ${DIM}Tokens:${RESET} ${BLUE}${formatTokens(s.tokensUsed)}${RESET}${s.tokensSaved > 0 ? ` ${GREEN}(-${formatTokens(s.tokensSaved)})${RESET}` : ''}${s.totalCostUsd > 0 ? ` ${DIM}($${s.totalCostUsd.toFixed(3)})${RESET}` : ''}`);
1029
+ console.log(` ${DIM}Agents:${RESET} ${s.agents.size} total (${activeAgents.length} working, ${[...s.agents.values()].filter((a) => a.status === 'done').length} done)`);
1030
+ console.log(` ${DIM}Tasks:${RESET} ${doneTasks.length}/${s.tasks.size} done${activeTasks.length > 0 ? ` (${activeTasks.length} in progress)` : ''}`);
1031
+ if (queuedDeploys.length > 0) {
1032
+ console.log(` ${YELLOW}[DEPLOY]${RESET} ${queuedDeploys.length} queued${queuedDeploys.length > 1 ? '+' : ''}${executingDeploys.length > 0 ? ` ${CYAN}${executingDeploys.length} executing${RESET}` : ''}`);
1033
+ }
1034
+ if (activeSkillNames.length > 0) {
1035
+ console.log(` ${GREEN}[SKILLS]${RESET} ${activeSkillNames.slice(0, 5).join(', ')}${activeSkillNames.length > 5 ? ` +${activeSkillNames.length - 5}` : ''}`);
1036
+ }
1037
+ if (activePatternNames.length > 0) {
1038
+ console.log(` ${BLUE}[PATTERNS]${RESET} ${activePatternNames.slice(0, 5).join(', ')}${activePatternNames.length > 5 ? ` +${activePatternNames.length - 5}` : ''}`);
1039
+ }
1040
+ if (s.memoryHits > 0 || s.memoryMisses > 0) {
1041
+ console.log(` ${MAGENTA}[MEMORY]${RESET} ${s.memoryHits} hits / ${s.memoryMisses} misses`);
1042
+ }
1043
+ if (s.policyChecks > 0) {
1044
+ console.log(` ${s.policyBlocks > 0 ? RED : GREEN}[POLICY]${RESET} ${s.policyChecks} checks${s.policyBlocks > 0 ? ` (${s.policyBlocks} blocked)` : ''}`);
1045
+ }
1046
+ if (s.errors > 0) {
1047
+ console.log(` ${RED}[ERRORS]${RESET} ${s.errors} total`);
1048
+ }
1049
+ if (showWorkGraph && s.tasks.size > 0) {
1050
+ workGraph();
1051
+ }
1052
+ }
810
1053
  //# sourceMappingURL=session-telemetry.js.map