ahok-skill 1.3.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 (141) hide show
  1. package/.prettierrc +8 -0
  2. package/Dockerfile +59 -0
  3. package/RAW_SKILL.md +219 -0
  4. package/README.md +277 -0
  5. package/SKILL.md +58 -0
  6. package/bin/opm.js +268 -0
  7. package/data/openmemory.sqlite +0 -0
  8. package/data/openmemory.sqlite-shm +0 -0
  9. package/data/openmemory.sqlite-wal +0 -0
  10. package/dist/ai/graph.js +293 -0
  11. package/dist/ai/mcp.js +397 -0
  12. package/dist/cli.js +78 -0
  13. package/dist/core/cfg.js +87 -0
  14. package/dist/core/db.js +636 -0
  15. package/dist/core/memory.js +116 -0
  16. package/dist/core/migrate.js +227 -0
  17. package/dist/core/models.js +105 -0
  18. package/dist/core/telemetry.js +57 -0
  19. package/dist/core/types.js +2 -0
  20. package/dist/core/vector/postgres.js +52 -0
  21. package/dist/core/vector/valkey.js +246 -0
  22. package/dist/core/vector_store.js +2 -0
  23. package/dist/index.js +44 -0
  24. package/dist/memory/decay.js +301 -0
  25. package/dist/memory/embed.js +675 -0
  26. package/dist/memory/hsg.js +959 -0
  27. package/dist/memory/reflect.js +131 -0
  28. package/dist/memory/user_summary.js +99 -0
  29. package/dist/migrate.js +9 -0
  30. package/dist/ops/compress.js +255 -0
  31. package/dist/ops/dynamics.js +189 -0
  32. package/dist/ops/extract.js +333 -0
  33. package/dist/ops/ingest.js +214 -0
  34. package/dist/server/index.js +109 -0
  35. package/dist/server/middleware/auth.js +137 -0
  36. package/dist/server/routes/auth.js +186 -0
  37. package/dist/server/routes/compression.js +108 -0
  38. package/dist/server/routes/dashboard.js +399 -0
  39. package/dist/server/routes/docs.js +241 -0
  40. package/dist/server/routes/dynamics.js +312 -0
  41. package/dist/server/routes/ide.js +280 -0
  42. package/dist/server/routes/index.js +33 -0
  43. package/dist/server/routes/keys.js +132 -0
  44. package/dist/server/routes/langgraph.js +61 -0
  45. package/dist/server/routes/memory.js +213 -0
  46. package/dist/server/routes/sources.js +140 -0
  47. package/dist/server/routes/system.js +63 -0
  48. package/dist/server/routes/temporal.js +293 -0
  49. package/dist/server/routes/users.js +101 -0
  50. package/dist/server/routes/vercel.js +57 -0
  51. package/dist/server/server.js +211 -0
  52. package/dist/server.js +3 -0
  53. package/dist/sources/base.js +223 -0
  54. package/dist/sources/github.js +171 -0
  55. package/dist/sources/google_drive.js +166 -0
  56. package/dist/sources/google_sheets.js +112 -0
  57. package/dist/sources/google_slides.js +139 -0
  58. package/dist/sources/index.js +34 -0
  59. package/dist/sources/notion.js +165 -0
  60. package/dist/sources/onedrive.js +143 -0
  61. package/dist/sources/web_crawler.js +166 -0
  62. package/dist/temporal_graph/index.js +20 -0
  63. package/dist/temporal_graph/query.js +240 -0
  64. package/dist/temporal_graph/store.js +116 -0
  65. package/dist/temporal_graph/timeline.js +241 -0
  66. package/dist/temporal_graph/types.js +2 -0
  67. package/dist/utils/chunking.js +60 -0
  68. package/dist/utils/index.js +31 -0
  69. package/dist/utils/keyword.js +94 -0
  70. package/dist/utils/text.js +120 -0
  71. package/nodemon.json +7 -0
  72. package/package.json +50 -0
  73. package/references/api_reference.md +66 -0
  74. package/references/examples.md +45 -0
  75. package/src/ai/graph.ts +363 -0
  76. package/src/ai/mcp.ts +494 -0
  77. package/src/cli.ts +94 -0
  78. package/src/core/cfg.ts +110 -0
  79. package/src/core/db.ts +1052 -0
  80. package/src/core/memory.ts +99 -0
  81. package/src/core/migrate.ts +302 -0
  82. package/src/core/models.ts +107 -0
  83. package/src/core/telemetry.ts +47 -0
  84. package/src/core/types.ts +130 -0
  85. package/src/core/vector/postgres.ts +61 -0
  86. package/src/core/vector/valkey.ts +261 -0
  87. package/src/core/vector_store.ts +9 -0
  88. package/src/index.ts +5 -0
  89. package/src/memory/decay.ts +427 -0
  90. package/src/memory/embed.ts +707 -0
  91. package/src/memory/hsg.ts +1245 -0
  92. package/src/memory/reflect.ts +158 -0
  93. package/src/memory/user_summary.ts +110 -0
  94. package/src/migrate.ts +8 -0
  95. package/src/ops/compress.ts +296 -0
  96. package/src/ops/dynamics.ts +272 -0
  97. package/src/ops/extract.ts +360 -0
  98. package/src/ops/ingest.ts +286 -0
  99. package/src/server/index.ts +159 -0
  100. package/src/server/middleware/auth.ts +156 -0
  101. package/src/server/routes/auth.ts +223 -0
  102. package/src/server/routes/compression.ts +106 -0
  103. package/src/server/routes/dashboard.ts +420 -0
  104. package/src/server/routes/docs.ts +380 -0
  105. package/src/server/routes/dynamics.ts +516 -0
  106. package/src/server/routes/ide.ts +283 -0
  107. package/src/server/routes/index.ts +32 -0
  108. package/src/server/routes/keys.ts +131 -0
  109. package/src/server/routes/langgraph.ts +71 -0
  110. package/src/server/routes/memory.ts +440 -0
  111. package/src/server/routes/sources.ts +111 -0
  112. package/src/server/routes/system.ts +68 -0
  113. package/src/server/routes/temporal.ts +335 -0
  114. package/src/server/routes/users.ts +111 -0
  115. package/src/server/routes/vercel.ts +55 -0
  116. package/src/server/server.js +215 -0
  117. package/src/server.ts +1 -0
  118. package/src/sources/base.ts +257 -0
  119. package/src/sources/github.ts +156 -0
  120. package/src/sources/google_drive.ts +144 -0
  121. package/src/sources/google_sheets.ts +85 -0
  122. package/src/sources/google_slides.ts +115 -0
  123. package/src/sources/index.ts +19 -0
  124. package/src/sources/notion.ts +148 -0
  125. package/src/sources/onedrive.ts +131 -0
  126. package/src/sources/web_crawler.ts +161 -0
  127. package/src/temporal_graph/index.ts +4 -0
  128. package/src/temporal_graph/query.ts +299 -0
  129. package/src/temporal_graph/store.ts +156 -0
  130. package/src/temporal_graph/timeline.ts +319 -0
  131. package/src/temporal_graph/types.ts +41 -0
  132. package/src/utils/chunking.ts +66 -0
  133. package/src/utils/index.ts +25 -0
  134. package/src/utils/keyword.ts +137 -0
  135. package/src/utils/text.ts +115 -0
  136. package/tests/test_api_workspace_management.ts +413 -0
  137. package/tests/test_bulk_delete.ts +267 -0
  138. package/tests/test_omnibus.ts +166 -0
  139. package/tests/test_workspace_management.ts +278 -0
  140. package/tests/verify.ts +104 -0
  141. package/tsconfig.json +15 -0
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.dynroutes = dynroutes;
37
+ const db_1 = require("../../core/db");
38
+ const dynamics_1 = require("../../ops/dynamics");
39
+ function dynroutes(app) {
40
+ app.get("/dynamics/constants", async (incoming_http_request, outgoing_http_response) => {
41
+ try {
42
+ const advanced_memory_dynamics_configuration_constants = {
43
+ alpha_learning_rate_for_recall_reinforcement_value: dynamics_1.ALPHA_LEARNING_RATE_FOR_RECALL_REINFORCEMENT,
44
+ beta_learning_rate_for_emotional_frequency_value: dynamics_1.BETA_LEARNING_RATE_FOR_EMOTIONAL_FREQUENCY,
45
+ gamma_attenuation_constant_for_graph_distance_value: dynamics_1.GAMMA_ATTENUATION_CONSTANT_FOR_GRAPH_DISTANCE,
46
+ theta_consolidation_coefficient_for_long_term_memory: dynamics_1.THETA_CONSOLIDATION_COEFFICIENT_FOR_LONG_TERM,
47
+ eta_reinforcement_factor_for_trace_learning_value: dynamics_1.ETA_REINFORCEMENT_FACTOR_FOR_TRACE_LEARNING,
48
+ lambda_one_fast_decay_rate_for_short_term: dynamics_1.LAMBDA_ONE_FAST_DECAY_RATE,
49
+ lambda_two_slow_decay_rate_for_consolidation: dynamics_1.LAMBDA_TWO_SLOW_DECAY_RATE,
50
+ tau_energy_threshold_for_retrieval_cutoff: dynamics_1.TAU_ENERGY_THRESHOLD_FOR_RETRIEVAL,
51
+ sectoral_interdependence_matrix_for_cross_sector_resonance: dynamics_1.SECTORAL_INTERDEPENDENCE_MATRIX_FOR_COGNITIVE_RESONANCE,
52
+ };
53
+ outgoing_http_response.json({
54
+ success_status_indicator: true,
55
+ dynamics_constants_configuration: advanced_memory_dynamics_configuration_constants,
56
+ });
57
+ }
58
+ catch (unexpected_error_during_constants_retrieval) {
59
+ console.error("[DYNAMICS] Error retrieving dynamics constants:", unexpected_error_during_constants_retrieval);
60
+ outgoing_http_response.status(500).json({ err: "internal" });
61
+ }
62
+ });
63
+ app.post("/dynamics/salience/calculate", async (incoming_http_request, outgoing_http_response) => {
64
+ try {
65
+ const incoming_request_body_payload = incoming_http_request.body;
66
+ const initial_salience_value_from_request = incoming_request_body_payload.initial_salience || 0.5;
67
+ const lambda_decay_constant_from_request = incoming_request_body_payload.decay_lambda || 0.01;
68
+ const recall_reinforcement_count_from_request = incoming_request_body_payload.recall_count || 0;
69
+ const emotional_frequency_metric_from_request = incoming_request_body_payload.emotional_frequency || 0;
70
+ const time_elapsed_in_days_from_request = incoming_request_body_payload.time_elapsed_days || 0;
71
+ const calculated_dynamic_salience_result = await (0, dynamics_1.calculateDynamicSalienceWithTimeDecay)(initial_salience_value_from_request, lambda_decay_constant_from_request, recall_reinforcement_count_from_request, emotional_frequency_metric_from_request, time_elapsed_in_days_from_request);
72
+ outgoing_http_response.json({
73
+ success_status_indicator: true,
74
+ calculated_salience_value: calculated_dynamic_salience_result,
75
+ input_parameters_used: {
76
+ initial_salience: initial_salience_value_from_request,
77
+ decay_lambda: lambda_decay_constant_from_request,
78
+ recall_count: recall_reinforcement_count_from_request,
79
+ emotional_frequency: emotional_frequency_metric_from_request,
80
+ time_elapsed_days: time_elapsed_in_days_from_request,
81
+ },
82
+ });
83
+ }
84
+ catch (unexpected_error_during_salience_calculation) {
85
+ console.error("[DYNAMICS] Error calculating dynamic salience:", unexpected_error_during_salience_calculation);
86
+ outgoing_http_response.status(500).json({ err: "internal" });
87
+ }
88
+ });
89
+ app.post("/dynamics/resonance/calculate", async (incoming_http_request, outgoing_http_response) => {
90
+ try {
91
+ const incoming_request_body_payload = incoming_http_request.body;
92
+ const memory_sector_type_from_request = incoming_request_body_payload.memory_sector || "semantic";
93
+ const query_sector_type_from_request = incoming_request_body_payload.query_sector || "semantic";
94
+ const base_cosine_similarity_from_request = incoming_request_body_payload.base_similarity || 0.8;
95
+ const calculated_cross_sector_resonance_score = await (0, dynamics_1.calculateCrossSectorResonanceScore)(memory_sector_type_from_request, query_sector_type_from_request, base_cosine_similarity_from_request);
96
+ outgoing_http_response.json({
97
+ success_status_indicator: true,
98
+ resonance_modulated_score: calculated_cross_sector_resonance_score,
99
+ input_parameters_used: {
100
+ memory_sector: memory_sector_type_from_request,
101
+ query_sector: query_sector_type_from_request,
102
+ base_similarity: base_cosine_similarity_from_request,
103
+ },
104
+ });
105
+ }
106
+ catch (unexpected_error_during_resonance_calculation) {
107
+ console.error("[DYNAMICS] Error calculating cross-sector resonance:", unexpected_error_during_resonance_calculation);
108
+ outgoing_http_response.status(500).json({ err: "internal" });
109
+ }
110
+ });
111
+ app.post("/dynamics/retrieval/energy-based", async (incoming_http_request, outgoing_http_response) => {
112
+ try {
113
+ const incoming_request_body_payload = incoming_http_request.body;
114
+ const query_text_content_from_request = incoming_request_body_payload.query;
115
+ const query_sector_type_from_request = incoming_request_body_payload.sector || "semantic";
116
+ const minimum_energy_threshold_from_request = incoming_request_body_payload.min_energy ||
117
+ dynamics_1.TAU_ENERGY_THRESHOLD_FOR_RETRIEVAL;
118
+ if (!query_text_content_from_request) {
119
+ return outgoing_http_response
120
+ .status(400)
121
+ .json({ err: "query_required" });
122
+ }
123
+ const { embedForSector } = await Promise.resolve().then(() => __importStar(require("../../memory/embed")));
124
+ const query_vector_embedding_array = await embedForSector(query_text_content_from_request, query_sector_type_from_request);
125
+ const retrieved_memories_with_energy_scores = await (0, dynamics_1.retrieveMemoriesWithEnergyThresholding)(query_vector_embedding_array, query_sector_type_from_request, minimum_energy_threshold_from_request);
126
+ outgoing_http_response.json({
127
+ success_status_indicator: true,
128
+ query_text: query_text_content_from_request,
129
+ query_sector: query_sector_type_from_request,
130
+ minimum_energy_threshold: minimum_energy_threshold_from_request,
131
+ retrieved_memories_count: retrieved_memories_with_energy_scores.length,
132
+ memories_with_activation_energy: retrieved_memories_with_energy_scores.map((memory_record) => ({
133
+ memory_id: memory_record.id,
134
+ memory_content: memory_record.content,
135
+ primary_sector_classification: memory_record.primary_sector,
136
+ salience_score: memory_record.salience,
137
+ activation_energy_level: memory_record.activation_energy,
138
+ })),
139
+ });
140
+ }
141
+ catch (unexpected_error_during_energy_retrieval) {
142
+ console.error("[DYNAMICS] Error performing energy-based retrieval:", unexpected_error_during_energy_retrieval);
143
+ outgoing_http_response.status(500).json({ err: "internal" });
144
+ }
145
+ });
146
+ app.post("/dynamics/reinforcement/trace", async (incoming_http_request, outgoing_http_response) => {
147
+ try {
148
+ const incoming_request_body_payload = incoming_http_request.body;
149
+ const target_memory_id_from_request = incoming_request_body_payload.memory_id;
150
+ if (!target_memory_id_from_request) {
151
+ return outgoing_http_response
152
+ .status(400)
153
+ .json({ err: "memory_id_required" });
154
+ }
155
+ const memory_record_from_database = await db_1.q.get_mem.get(target_memory_id_from_request);
156
+ if (!memory_record_from_database) {
157
+ return outgoing_http_response
158
+ .status(404)
159
+ .json({ err: "memory_not_found" });
160
+ }
161
+ const current_salience_before_reinforcement = memory_record_from_database.salience;
162
+ const updated_salience_after_reinforcement = await (0, dynamics_1.applyRetrievalTraceReinforcementToMemory)(target_memory_id_from_request, current_salience_before_reinforcement);
163
+ await db_1.q.upd_seen.run(target_memory_id_from_request, Date.now(), updated_salience_after_reinforcement, Date.now());
164
+ const connected_waypoints_from_database = await db_1.q.get_waypoints_by_src.all(target_memory_id_from_request);
165
+ const linked_nodes_with_weights_array = connected_waypoints_from_database.map((waypoint_record) => ({
166
+ target_id: waypoint_record.dst_id,
167
+ weight: waypoint_record.weight,
168
+ }));
169
+ const propagated_reinforcement_updates_list = await (0, dynamics_1.propagateAssociativeReinforcementToLinkedNodes)(target_memory_id_from_request, updated_salience_after_reinforcement, linked_nodes_with_weights_array);
170
+ for (const reinforcement_update_record of propagated_reinforcement_updates_list) {
171
+ await db_1.q.upd_seen.run(reinforcement_update_record.node_id, Date.now(), reinforcement_update_record.new_salience, Date.now());
172
+ }
173
+ outgoing_http_response.json({
174
+ success_status_indicator: true,
175
+ reinforced_memory_id: target_memory_id_from_request,
176
+ previous_salience_value: current_salience_before_reinforcement,
177
+ updated_salience_value: updated_salience_after_reinforcement,
178
+ salience_increase_amount: updated_salience_after_reinforcement -
179
+ current_salience_before_reinforcement,
180
+ linked_nodes_reinforced_count: propagated_reinforcement_updates_list.length,
181
+ linked_nodes_updates: propagated_reinforcement_updates_list,
182
+ });
183
+ }
184
+ catch (unexpected_error_during_trace_reinforcement) {
185
+ console.error("[DYNAMICS] Error applying trace reinforcement:", unexpected_error_during_trace_reinforcement);
186
+ outgoing_http_response.status(500).json({ err: "internal" });
187
+ }
188
+ });
189
+ app.post("/dynamics/activation/spreading", async (incoming_http_request, outgoing_http_response) => {
190
+ try {
191
+ const incoming_request_body_payload = incoming_http_request.body;
192
+ const initial_memory_ids_array_from_request = incoming_request_body_payload.initial_memory_ids || [];
193
+ const maximum_spreading_iterations_from_request = incoming_request_body_payload.max_iterations || 3;
194
+ if (!Array.isArray(initial_memory_ids_array_from_request) ||
195
+ initial_memory_ids_array_from_request.length === 0) {
196
+ return outgoing_http_response
197
+ .status(400)
198
+ .json({ err: "initial_memory_ids_required" });
199
+ }
200
+ const spreading_activation_results_map = await (0, dynamics_1.performSpreadingActivationRetrieval)(initial_memory_ids_array_from_request, maximum_spreading_iterations_from_request);
201
+ const activation_results_as_array = Array.from(spreading_activation_results_map.entries())
202
+ .map(([memory_node_id, activation_energy_level]) => ({
203
+ memory_id: memory_node_id,
204
+ activation_level: activation_energy_level,
205
+ }))
206
+ .sort((first_entry, second_entry) => second_entry.activation_level -
207
+ first_entry.activation_level);
208
+ outgoing_http_response.json({
209
+ success_status_indicator: true,
210
+ initial_activated_memories_count: initial_memory_ids_array_from_request.length,
211
+ maximum_iterations_performed: maximum_spreading_iterations_from_request,
212
+ total_activated_nodes_count: activation_results_as_array.length,
213
+ spreading_activation_results: activation_results_as_array,
214
+ });
215
+ }
216
+ catch (unexpected_error_during_spreading_activation) {
217
+ console.error("[DYNAMICS] Error performing spreading activation:", unexpected_error_during_spreading_activation);
218
+ outgoing_http_response.status(500).json({ err: "internal" });
219
+ }
220
+ });
221
+ app.get("/dynamics/waypoints/graph", async (incoming_http_request, outgoing_http_response) => {
222
+ try {
223
+ const waypoint_graph_structure_from_database = await (0, dynamics_1.buildAssociativeWaypointGraphFromMemories)();
224
+ const graph_statistics_summary = {
225
+ total_nodes_in_graph: waypoint_graph_structure_from_database.size,
226
+ total_edges_across_all_nodes: 0,
227
+ average_edges_per_node: 0,
228
+ nodes_with_no_connections: 0,
229
+ };
230
+ const detailed_graph_nodes_array = [];
231
+ for (const [memory_node_identifier, node_data_structure,] of waypoint_graph_structure_from_database) {
232
+ const number_of_outgoing_edges = node_data_structure.connected_waypoint_edges.length;
233
+ graph_statistics_summary.total_edges_across_all_nodes +=
234
+ number_of_outgoing_edges;
235
+ if (number_of_outgoing_edges === 0) {
236
+ graph_statistics_summary.nodes_with_no_connections++;
237
+ }
238
+ detailed_graph_nodes_array.push({
239
+ node_memory_id: memory_node_identifier,
240
+ outgoing_edges_count: number_of_outgoing_edges,
241
+ connected_targets: node_data_structure.connected_waypoint_edges.map((edge_record) => ({
242
+ target_memory_id: edge_record.target_node_id,
243
+ link_weight: edge_record.link_weight_value,
244
+ time_gap_milliseconds: edge_record.time_gap_delta_t,
245
+ })),
246
+ });
247
+ }
248
+ if (graph_statistics_summary.total_nodes_in_graph > 0) {
249
+ graph_statistics_summary.average_edges_per_node =
250
+ graph_statistics_summary.total_edges_across_all_nodes /
251
+ graph_statistics_summary.total_nodes_in_graph;
252
+ }
253
+ outgoing_http_response.json({
254
+ success_status_indicator: true,
255
+ graph_summary_statistics: graph_statistics_summary,
256
+ detailed_node_information: detailed_graph_nodes_array,
257
+ });
258
+ }
259
+ catch (unexpected_error_building_waypoint_graph) {
260
+ console.error("[DYNAMICS] Error building waypoint graph:", unexpected_error_building_waypoint_graph);
261
+ outgoing_http_response.status(500).json({ err: "internal" });
262
+ }
263
+ });
264
+ app.post("/dynamics/waypoints/calculate-weight", async (incoming_http_request, outgoing_http_response) => {
265
+ try {
266
+ const incoming_request_body_payload = incoming_http_request.body;
267
+ const source_memory_id_from_request = incoming_request_body_payload.source_memory_id;
268
+ const target_memory_id_from_request = incoming_request_body_payload.target_memory_id;
269
+ if (!source_memory_id_from_request ||
270
+ !target_memory_id_from_request) {
271
+ return outgoing_http_response
272
+ .status(400)
273
+ .json({ err: "both_memory_ids_required" });
274
+ }
275
+ const source_memory_record = await db_1.q.get_mem.get(source_memory_id_from_request);
276
+ const target_memory_record = await db_1.q.get_mem.get(target_memory_id_from_request);
277
+ if (!source_memory_record || !target_memory_record) {
278
+ return outgoing_http_response
279
+ .status(404)
280
+ .json({ err: "one_or_both_memories_not_found" });
281
+ }
282
+ const source_memory_mean_vector = source_memory_record.mean_vec;
283
+ const target_memory_mean_vector = target_memory_record.mean_vec;
284
+ if (!source_memory_mean_vector || !target_memory_mean_vector) {
285
+ return outgoing_http_response
286
+ .status(400)
287
+ .json({ err: "memories_missing_embeddings" });
288
+ }
289
+ const { bufferToVector } = await Promise.resolve().then(() => __importStar(require("../../memory/embed")));
290
+ const source_vector_array = bufferToVector(source_memory_mean_vector);
291
+ const target_vector_array = bufferToVector(target_memory_mean_vector);
292
+ const time_gap_between_memories_milliseconds = Math.abs(source_memory_record.created_at -
293
+ target_memory_record.created_at);
294
+ const calculated_waypoint_link_weight = await (0, dynamics_1.calculateAssociativeWaypointLinkWeight)(source_vector_array, target_vector_array, time_gap_between_memories_milliseconds);
295
+ outgoing_http_response.json({
296
+ success_status_indicator: true,
297
+ source_memory_identifier: source_memory_id_from_request,
298
+ target_memory_identifier: target_memory_id_from_request,
299
+ calculated_link_weight_value: calculated_waypoint_link_weight,
300
+ time_gap_in_days: time_gap_between_memories_milliseconds / 86400000,
301
+ calculation_details: {
302
+ temporal_decay_factor_applied: true,
303
+ cosine_similarity_computed: true,
304
+ },
305
+ });
306
+ }
307
+ catch (unexpected_error_calculating_waypoint_weight) {
308
+ console.error("[DYNAMICS] Error calculating waypoint weight:", unexpected_error_calculating_waypoint_weight);
309
+ outgoing_http_response.status(500).json({ err: "internal" });
310
+ }
311
+ });
312
+ }
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ide = ide;
37
+ const db_1 = require("../../core/db");
38
+ const hsg_1 = require("../../memory/hsg");
39
+ const user_summary_1 = require("../../memory/user_summary");
40
+ const utils_1 = require("../../utils");
41
+ const crypto = __importStar(require("crypto"));
42
+ function ide(app) {
43
+ app.post("/api/ide/events", async (req, res) => {
44
+ try {
45
+ const event_type = req.body.event_type;
46
+ const file_path = req.body.file_path || "unknown";
47
+ const content = req.body.content || "";
48
+ const session_id = req.body.session_id || "default";
49
+ const metadata = req.body.metadata || {};
50
+ const user_id = req.body.user_id || "anonymous";
51
+ if (!event_type)
52
+ return res.status(400).json({ err: "event_type_required" });
53
+ let memory_content = "";
54
+ if (event_type === "open") {
55
+ memory_content = `Opened file: ${file_path}`;
56
+ }
57
+ else if (event_type === "save") {
58
+ if (content) {
59
+ memory_content = `Saved file: ${file_path}\n\n${content}`;
60
+ }
61
+ else {
62
+ memory_content = `Saved file: ${file_path}`;
63
+ }
64
+ }
65
+ else if (event_type === "close") {
66
+ memory_content = `Closed file: ${file_path}`;
67
+ }
68
+ else {
69
+ memory_content = `[${event_type}] ${file_path}\n${content}`.trim();
70
+ }
71
+ const full_metadata = {
72
+ ...metadata,
73
+ ide_event_type: event_type,
74
+ ide_file_path: file_path,
75
+ ide_session_id: session_id,
76
+ ide_timestamp: Date.now(),
77
+ ide_mode: true,
78
+ };
79
+ const result = await (0, hsg_1.add_hsg_memory)(memory_content, undefined, full_metadata, user_id);
80
+ // Update user summary asynchronously
81
+ if (user_id && user_id !== "anonymous") {
82
+ (0, user_summary_1.update_user_summary)(user_id).catch(err => console.error("[IDE] Failed to update user summary:", err));
83
+ }
84
+ res.json({
85
+ success: true,
86
+ memory_id: result.id,
87
+ primary_sector: result.primary_sector,
88
+ sectors: result.sectors,
89
+ });
90
+ }
91
+ catch (err) {
92
+ console.error("[IDE] Error storing IDE event:", err);
93
+ res.status(500).json({ err: "internal" });
94
+ }
95
+ });
96
+ app.post("/api/ide/context", async (req, res) => {
97
+ try {
98
+ const query = req.body.query;
99
+ const k = req.body.k || req.body.limit || 5;
100
+ const session_id = req.body.session_id;
101
+ const file_path = req.body.file_path;
102
+ if (!query)
103
+ return res.status(400).json({ err: "query_required" });
104
+ const results = await (0, hsg_1.hsg_query)(query, k);
105
+ let filtered = results;
106
+ if (session_id) {
107
+ filtered = [];
108
+ for (const r of results) {
109
+ const mem = await db_1.q.get_mem.get(r.id);
110
+ if (mem) {
111
+ const meta = (0, utils_1.p)(mem.meta);
112
+ if (meta && meta.ide_session_id === session_id) {
113
+ filtered.push(r);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ if (file_path) {
119
+ filtered = filtered.filter((r) => r.content.includes(file_path));
120
+ }
121
+ const formatted = filtered.map((r) => ({
122
+ memory_id: r.id,
123
+ content: r.content,
124
+ primary_sector: r.primary_sector,
125
+ sectors: r.sectors,
126
+ score: r.score,
127
+ salience: r.salience,
128
+ last_seen_at: r.last_seen_at,
129
+ path: r.path,
130
+ }));
131
+ res.json({
132
+ success: true,
133
+ memories: formatted,
134
+ total: formatted.length,
135
+ query: query,
136
+ });
137
+ }
138
+ catch (err) {
139
+ console.error("[IDE] Error retrieving IDE context:", err);
140
+ res.status(500).json({ err: "internal" });
141
+ }
142
+ });
143
+ app.post("/api/ide/session/start", async (req, res) => {
144
+ try {
145
+ const user_id = req.body.user_id || "anonymous";
146
+ const project_name = req.body.project_name || "unknown";
147
+ const ide_name = req.body.ide_name || "unknown";
148
+ const session_id = `session_${Date.now()}_${crypto.randomBytes(7).toString("hex")}`;
149
+ const now_ts = Date.now();
150
+ const content = `Session started: ${user_id} in ${project_name} using ${ide_name}`;
151
+ const metadata = {
152
+ ide_session_id: session_id,
153
+ ide_user_id: user_id,
154
+ ide_project_name: project_name,
155
+ ide_name: ide_name,
156
+ session_start_time: now_ts,
157
+ session_type: "ide_session",
158
+ ide_mode: true,
159
+ };
160
+ const result = await (0, hsg_1.add_hsg_memory)(content, undefined, metadata, user_id);
161
+ if (user_id && user_id !== "anonymous") {
162
+ (0, user_summary_1.update_user_summary)(user_id).catch(err => console.error("[IDE] Failed to update summary on session start:", err));
163
+ }
164
+ res.json({
165
+ success: true,
166
+ session_id: session_id,
167
+ memory_id: result.id,
168
+ started_at: now_ts,
169
+ user_id: user_id,
170
+ project_name: project_name,
171
+ ide_name: ide_name,
172
+ });
173
+ }
174
+ catch (err) {
175
+ console.error("[IDE] Error starting IDE session:", err);
176
+ res.status(500).json({ err: "internal" });
177
+ }
178
+ });
179
+ app.post("/api/ide/session/end", async (req, res) => {
180
+ try {
181
+ const session_id = req.body.session_id;
182
+ const user_id = req.body.user_id || "anonymous";
183
+ if (!session_id)
184
+ return res.status(400).json({ err: "session_id_required" });
185
+ const now_ts = Date.now();
186
+ const all_memories = await db_1.q.all_mem.all(10000, 0);
187
+ const session_memories = all_memories.filter((m) => {
188
+ try {
189
+ const meta = (0, utils_1.p)(m.meta);
190
+ return meta && meta.ide_session_id === session_id;
191
+ }
192
+ catch {
193
+ return false;
194
+ }
195
+ });
196
+ const total_events = session_memories.length;
197
+ const sectors = {};
198
+ const files = new Set();
199
+ for (const m of session_memories) {
200
+ sectors[m.primary_sector] =
201
+ (sectors[m.primary_sector] || 0) + 1;
202
+ try {
203
+ const meta = (0, utils_1.p)(m.meta);
204
+ if (meta &&
205
+ meta.ide_file_path &&
206
+ meta.ide_file_path !== "unknown") {
207
+ files.add(meta.ide_file_path);
208
+ }
209
+ }
210
+ catch { }
211
+ }
212
+ const summary = `Session ${session_id} ended. Events: ${total_events}, Files: ${files.size}, Sectors: ${(0, utils_1.j)(sectors)}`;
213
+ const metadata = {
214
+ ide_session_id: session_id,
215
+ session_end_time: now_ts,
216
+ session_type: "ide_session_end",
217
+ total_events: total_events,
218
+ sectors_distribution: sectors,
219
+ files_touched: Array.from(files),
220
+ ide_mode: true,
221
+ };
222
+ const result = await (0, hsg_1.add_hsg_memory)(summary, undefined, metadata, user_id);
223
+ if (user_id && user_id !== "anonymous") {
224
+ (0, user_summary_1.update_user_summary)(user_id).catch(err => console.error("[IDE] Failed to update summary on session end:", err));
225
+ }
226
+ res.json({
227
+ success: true,
228
+ session_id: session_id,
229
+ ended_at: now_ts,
230
+ summary_memory_id: result.id,
231
+ statistics: {
232
+ total_events: total_events,
233
+ sectors: sectors,
234
+ unique_files: files.size,
235
+ files: Array.from(files),
236
+ },
237
+ });
238
+ }
239
+ catch (err) {
240
+ console.error("[IDE] Error ending IDE session:", err);
241
+ res.status(500).json({ err: "internal" });
242
+ }
243
+ });
244
+ app.get("/api/ide/patterns/:session_id", async (req, res) => {
245
+ try {
246
+ const session_id = req.params.session_id;
247
+ if (!session_id)
248
+ return res.status(400).json({ err: "session_id_required" });
249
+ const all_memories = await db_1.q.all_mem.all(10000, 0);
250
+ const procedural = all_memories.filter((m) => {
251
+ if (m.primary_sector !== "procedural")
252
+ return false;
253
+ try {
254
+ const meta = (0, utils_1.p)(m.meta);
255
+ return meta && meta.ide_session_id === session_id;
256
+ }
257
+ catch {
258
+ return false;
259
+ }
260
+ });
261
+ const patterns = procedural.map((m) => ({
262
+ pattern_id: m.id,
263
+ description: m.content,
264
+ salience: m.salience,
265
+ detected_at: m.created_at,
266
+ last_reinforced: m.last_seen_at,
267
+ }));
268
+ res.json({
269
+ success: true,
270
+ session_id: session_id,
271
+ pattern_count: patterns.length,
272
+ patterns: patterns,
273
+ });
274
+ }
275
+ catch (err) {
276
+ console.error("[IDE] Error detecting patterns:", err);
277
+ res.status(500).json({ err: "internal" });
278
+ }
279
+ });
280
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.routes = routes;
4
+ const system_1 = require("./system");
5
+ const memory_1 = require("./memory");
6
+ const dynamics_1 = require("./dynamics");
7
+ const ide_1 = require("./ide");
8
+ const compression_1 = require("./compression");
9
+ const langgraph_1 = require("./langgraph");
10
+ const users_1 = require("./users");
11
+ const temporal_1 = require("./temporal");
12
+ const dashboard_1 = require("./dashboard");
13
+ const vercel_1 = require("./vercel");
14
+ const sources_1 = require("./sources");
15
+ const auth_1 = require("./auth");
16
+ const docs_1 = require("./docs");
17
+ const keys_1 = require("./keys");
18
+ function routes(app) {
19
+ (0, system_1.sys)(app);
20
+ (0, memory_1.mem)(app);
21
+ (0, dynamics_1.dynroutes)(app);
22
+ (0, ide_1.ide)(app);
23
+ (0, compression_1.compression)(app);
24
+ (0, langgraph_1.lg)(app);
25
+ (0, users_1.usr)(app);
26
+ (0, temporal_1.temporal)(app);
27
+ (0, dashboard_1.dash)(app);
28
+ (0, vercel_1.vercel)(app);
29
+ (0, sources_1.src)(app);
30
+ (0, auth_1.auth)(app);
31
+ (0, docs_1.docs_route)(app);
32
+ (0, keys_1.keys)(app);
33
+ }