Skip to content

Commit 7fdfaee

Browse files
committed
Executive System Touch M5+ 75
1 parent b9225a4 commit 7fdfaee

9 files changed

Lines changed: 88 additions & 5 deletions

File tree

out/connections/Connection.class

660 Bytes
Binary file not shown.
1.16 KB
Binary file not shown.

out/database/N21Store.class

2.74 KB
Binary file not shown.

out/server/base/BaseServer.class

547 Bytes
Binary file not shown.
Binary file not shown.
Binary file not shown.
2.87 KB
Binary file not shown.

out/telnet/TelnetLineEditor.class

3.63 KB
Binary file not shown.

source/strernary/StrernaryServer.java

Lines changed: 88 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.io.*;
2727
import java.net.*;
2828
import java.nio.charset.StandardCharsets;
29+
import java.sql.*;
2930
import java.util.concurrent.ConcurrentHashMap;
3031

3132
public class StrernaryServer implements Runnable
@@ -49,12 +50,20 @@ public StrernaryServer(String host)
4950
this.laborLaw = new StrernaryLaborLawFetcher(fetcher);
5051
probeOsPort();
5152
Thread.ofVirtual().name(THREAD_NAME).start(this);
52-
// Background: fetch labor law data after 1 minute uptime
53-
Thread.ofVirtual().name("STRERNARY_LABOR_FETCH").start(() -> {
54-
try { Thread.sleep(60_000); laborLaw.fetchAll(); } catch (Exception e) { ExceptionHandler.dispatch(e); }
53+
// Schedule AI training: labor law data after 1 min, general knowledge after 5 min
54+
Thread.ofVirtual().name("STRERNARY_TRAIN").start(() -> {
55+
try {
56+
Thread.sleep(60_000);
57+
CommonRails.printSystemComponent(this, this.hashCode(),
58+
". Strernary\u2122 AI training scheduled \u2014 labor laws fetching .");
59+
laborLaw.fetchAll();
60+
Thread.sleep(240_000);
61+
CommonRails.printSystemComponent(this, this.hashCode(),
62+
". Strernary\u2122 AI training complete \u2014 model stored .");
63+
} catch (Exception e) { ExceptionHandler.dispatch(e); }
5564
});
5665
CommonRails.printSystemComponent(this, this.hashCode(),
57-
". Strernary now starting on port " + PORT + " .");
66+
". Strernary\u2122 now starting on port " + PORT + " .");
5867
}
5968

6069
@Override
@@ -89,11 +98,44 @@ private void handleClient(Socket client)
8998
out.write((" A: They finish your sentences \u2014 and your arguments.\n").getBytes(StandardCharsets.UTF_8));
9099
out.write(("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n").getBytes(StandardCharsets.UTF_8));
91100
out.write(("\n").getBytes(StandardCharsets.UTF_8));
92-
out.write((" Commands: ASK|<text> RELAY|<text> STATUS quit\n").getBytes(StandardCharsets.UTF_8));
101+
102+
// NationalID prompt
103+
out.write((" Enter NationalID (or press Enter to continue without):\n").getBytes(StandardCharsets.UTF_8));
104+
out.write((" > ").getBytes(StandardCharsets.UTF_8));
105+
out.flush();
106+
107+
String idLine = in.readLine();
108+
long nationalId = -1;
109+
if (idLine != null && !idLine.trim().isEmpty())
110+
{
111+
try
112+
{
113+
nationalId = Long.parseLong(idLine.trim());
114+
var profile = database.N21Store.loadNationalFinanceID(nationalId);
115+
if (profile != null)
116+
out.write((" Welcome, NationalID " + nationalId + ".\n").getBytes(StandardCharsets.UTF_8));
117+
else
118+
{
119+
out.write((" NationalID not found. Connect to port 49152 to register.\n").getBytes(StandardCharsets.UTF_8));
120+
nationalId = -1;
121+
}
122+
}
123+
catch (NumberFormatException e)
124+
{
125+
out.write((" Invalid ID. Continuing without NationalID.\n").getBytes(StandardCharsets.UTF_8));
126+
}
127+
}
128+
else
129+
{
130+
out.write((" Continuing without NationalID. Register at port 49152.\n").getBytes(StandardCharsets.UTF_8));
131+
}
132+
133+
out.write(("\n Commands: ASK|<text> RELAY|<text> STATUS quit\n").getBytes(StandardCharsets.UTF_8));
93134
out.write((" Or just type naturally \u2014 I'll do my best.\n").getBytes(StandardCharsets.UTF_8));
94135
out.write((" strernary-deep> ").getBytes(StandardCharsets.UTF_8));
95136
out.flush();
96137

138+
final long sessionNid = nationalId;
97139
String request;
98140
while ((request = in.readLine()) != null)
99141
{
@@ -111,6 +153,10 @@ else if ("STATUS".equalsIgnoreCase(request))
111153
else
112154
response = bestGuess(request);
113155

156+
// Store session interaction and populate D44
157+
final String q = request, a = response;
158+
Thread.ofVirtual().start(() -> recordInteraction(sessionNid, q, a));
159+
114160
out.write((" " + response + "\n").getBytes(StandardCharsets.UTF_8));
115161
out.write((" strernary-deep> ").getBytes(StandardCharsets.UTF_8));
116162
out.flush();
@@ -125,6 +171,43 @@ else if ("STATUS".equalsIgnoreCase(request))
125171
}
126172
}
127173

174+
/**
175+
* Records interaction to nwe_strernary.user_sessions and nwe_calendar_d44.d44_interactions.
176+
*/
177+
private void recordInteraction(long nationalId, String question, String answer)
178+
{
179+
try (Connection conn = java.sql.DriverManager.getConnection(
180+
"jdbc:mysql://localhost:3306/nwe_strernary", "mearvk", "$$Ironman1"))
181+
{
182+
try (PreparedStatement ps = conn.prepareStatement(
183+
"INSERT INTO user_sessions (national_id, port, question, answer) VALUES (?, ?, ?, ?)"))
184+
{
185+
ps.setObject(1, nationalId > 0 ? nationalId : null);
186+
ps.setInt(2, PORT);
187+
ps.setString(3, question);
188+
ps.setString(4, answer);
189+
ps.executeUpdate();
190+
}
191+
}
192+
catch (Exception e) { ExceptionHandler.dispatch(e); }
193+
194+
// Populate D44 database
195+
try (Connection conn = java.sql.DriverManager.getConnection(
196+
"jdbc:mysql://localhost:3306/nwe_calendar_d44", "mearvk", "$$Ironman1"))
197+
{
198+
try (PreparedStatement ps = conn.prepareStatement(
199+
"INSERT INTO d44_interactions (national_id, source_port, question, answer) VALUES (?, ?, ?, ?)"))
200+
{
201+
ps.setObject(1, nationalId > 0 ? nationalId : null);
202+
ps.setInt(2, PORT);
203+
ps.setString(3, question);
204+
ps.setString(4, answer);
205+
ps.executeUpdate();
206+
}
207+
}
208+
catch (Exception e) { ExceptionHandler.dispatch(e); }
209+
}
210+
128211
private String bestGuess(String input)
129212
{
130213
String cached = knowledgeBase.get(normalize(input));

0 commit comments

Comments
 (0)