sensorium-mcp 3.0.2 → 3.0.3
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.
- package/dist/dashboard/routes/data.d.ts +1 -0
- package/dist/dashboard/routes/data.d.ts.map +1 -1
- package/dist/dashboard/routes/data.js +11 -1
- package/dist/dashboard/routes/data.js.map +1 -1
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +3 -1
- package/dist/dashboard/routes.js.map +1 -1
- package/package.json +1 -1
- package/supervisor/health.go +20 -0
- package/supervisor/main.go +13 -4
- package/supervisor/process.go +29 -0
- package/supervisor/updater.go +6 -0
|
@@ -12,4 +12,5 @@ export declare const handleGetSearch: RouteHandler;
|
|
|
12
12
|
export declare const handleGetTopicRegistry: RouteHandler;
|
|
13
13
|
export declare const handlePostTopicRegistry: RouteHandler;
|
|
14
14
|
export declare const handleDeleteTopicRegistry: RouteHandler;
|
|
15
|
+
export declare const handlePrepareShutdown: RouteHandler;
|
|
15
16
|
//# sourceMappingURL=data.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/dashboard/routes/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/dashboard/routes/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAyBxE,eAAO,MAAM,eAAe,EAAE,YAuB7B,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,YAG/B,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,YAY5B,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,YAe/B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,YAG7B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,YAK7B,CAAC;AAIF,eAAO,MAAM,sBAAsB,EAAE,YAIpC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,YAwBrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,YAoBvC,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,YAOnC,CAAC"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* Covers: status, sessions, notes, episodes, topics, search, topic-registry.
|
|
4
4
|
*/
|
|
5
5
|
import { getRecentEpisodes, getTopicIndex, getTopSemanticNotes, searchSemanticNotesRanked, } from "../../memory.js";
|
|
6
|
-
import { getAllRegisteredTopics, registerTopic, unregisterTopic } from "../../sessions.js";
|
|
6
|
+
import { getAllRegisteredTopics, getActiveThreadIds, registerTopic, unregisterTopic } from "../../sessions.js";
|
|
7
|
+
import { writeReconnectSnapshot } from "../../services/reconnect-snapshot.service.js";
|
|
7
8
|
import { readBody, safeParseJSON } from "./types.js";
|
|
8
9
|
import { errorMessage } from "../../utils.js";
|
|
9
10
|
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
@@ -153,4 +154,13 @@ export const handleDeleteTopicRegistry = ({ req, json }) => {
|
|
|
153
154
|
})();
|
|
154
155
|
return true;
|
|
155
156
|
};
|
|
157
|
+
// ─── Prepare-shutdown ────────────────────────────────────────────────────────
|
|
158
|
+
export const handlePrepareShutdown = ({ json }) => {
|
|
159
|
+
const threadIds = getActiveThreadIds();
|
|
160
|
+
if (threadIds.length > 0) {
|
|
161
|
+
writeReconnectSnapshot(threadIds);
|
|
162
|
+
}
|
|
163
|
+
json({ ok: true, snapshotThreads: threadIds.length });
|
|
164
|
+
return true;
|
|
165
|
+
};
|
|
156
166
|
//# sourceMappingURL=data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/dashboard/routes/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,yBAAyB,GAE5B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/dashboard/routes/data.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAQjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAQjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAmI1D;;GAEG;AACH,wBAAsB,sBAAsB,CACxC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,gBAAgB,EACrB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAmClB"}
|
package/dist/dashboard/routes.js
CHANGED
|
@@ -22,7 +22,7 @@ import { handleGetDmnActivationHours, handleGetClaudeMcpConfig, handlePostClaude
|
|
|
22
22
|
// Domain handlers — templates
|
|
23
23
|
import { handleGetTemplates, handleGetDriveTemplate, handleGetDrivePresets, handleTemplateCrud, } from "./routes/templates.js";
|
|
24
24
|
// Domain handlers — data
|
|
25
|
-
import { handleGetStatus, handleGetSessions, handleGetNotes, handleGetEpisodes, handleGetTopics, handleGetSearch, handleGetTopicRegistry, handlePostTopicRegistry, handleDeleteTopicRegistry, } from "./routes/data.js";
|
|
25
|
+
import { handleGetStatus, handleGetSessions, handleGetNotes, handleGetEpisodes, handleGetTopics, handleGetSearch, handleGetTopicRegistry, handlePostTopicRegistry, handleDeleteTopicRegistry, handlePrepareShutdown, } from "./routes/data.js";
|
|
26
26
|
// Domain handlers — skills
|
|
27
27
|
import { handleGetSkills, handleSkillDelete, handleSkillPut, } from "./routes/skills.js";
|
|
28
28
|
// Domain handlers — threads
|
|
@@ -67,6 +67,8 @@ const routeTable = {
|
|
|
67
67
|
"GET /api/topic-registry": handleGetTopicRegistry,
|
|
68
68
|
"POST /api/topic-registry": handlePostTopicRegistry,
|
|
69
69
|
"DELETE /api/topic-registry": handleDeleteTopicRegistry,
|
|
70
|
+
// Lifecycle
|
|
71
|
+
"POST /api/prepare-shutdown": handlePrepareShutdown,
|
|
70
72
|
// Skills
|
|
71
73
|
"GET /api/skills": handleGetSkills,
|
|
72
74
|
// Threads
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAS9C,6BAA6B;AAC7B,OAAO,EACH,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,EAC/B,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,GAC/B,MAAM,sBAAsB,CAAC;AAE9B,8BAA8B;AAC9B,OAAO,EACH,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,yBAAyB;AACzB,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/supervisor/health.go
CHANGED
|
@@ -99,6 +99,26 @@ func (m *MCPClient) WaitForReady(ctx context.Context, pollInterval, timeout time
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
// PrepareShutdown asks the MCP server to write a reconnect snapshot before being killed.
|
|
103
|
+
// Best-effort: returns false on any error so the caller can proceed with the kill.
|
|
104
|
+
func (m *MCPClient) PrepareShutdown(ctx context.Context) bool {
|
|
105
|
+
ctx2, cancel := context.WithTimeout(ctx, 3*time.Second)
|
|
106
|
+
defer cancel()
|
|
107
|
+
resp, err := m.doReq(ctx2, "POST", "/api/prepare-shutdown", nil)
|
|
108
|
+
if err != nil {
|
|
109
|
+
if m.Log != nil {
|
|
110
|
+
m.Log.Debug("PrepareShutdown: POST /api/prepare-shutdown failed: %v", err)
|
|
111
|
+
}
|
|
112
|
+
return false
|
|
113
|
+
}
|
|
114
|
+
defer resp.Body.Close()
|
|
115
|
+
ok := resp.StatusCode == 200
|
|
116
|
+
if m.Log != nil {
|
|
117
|
+
m.Log.Info("PrepareShutdown: POST /api/prepare-shutdown => %d", resp.StatusCode)
|
|
118
|
+
}
|
|
119
|
+
return ok
|
|
120
|
+
}
|
|
121
|
+
|
|
102
122
|
// GetRootThreads fetches the list of root threads from the server.
|
|
103
123
|
func (m *MCPClient) GetRootThreads(ctx context.Context) ([]map[string]any, error) {
|
|
104
124
|
return m.fetchThreadList(ctx, "/api/threads/roots")
|
package/supervisor/main.go
CHANGED
|
@@ -166,10 +166,16 @@ func runSupervisor(runningAsService bool) error {
|
|
|
166
166
|
mcp := NewMCPClient(cfg.MCPHttpPort, cfg.MCPHttpSecret)
|
|
167
167
|
mcp.Log = log
|
|
168
168
|
|
|
169
|
-
//
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
// Kill orphan
|
|
169
|
+
// Kill orphan thread processes from previous runs, then clean PID files
|
|
170
|
+
KillOrphanThreads(cfg.Paths.PIDsDir, log)
|
|
171
|
+
|
|
172
|
+
// Kill orphan MCP server from previous run
|
|
173
|
+
if oldPid, err := ReadPIDFile(cfg.Paths.ServerPID); err == nil && oldPid > 0 && IsProcessAlive(oldPid) {
|
|
174
|
+
log.Info("Killing orphan MCP server (PID %d) from previous run", oldPid)
|
|
175
|
+
_ = KillProcess(oldPid, log)
|
|
176
|
+
time.Sleep(1 * time.Second) // allow port to release
|
|
177
|
+
}
|
|
178
|
+
_ = os.Remove(cfg.Paths.ServerPID)
|
|
173
179
|
KillByPort(cfg.MCPHttpPort, log)
|
|
174
180
|
|
|
175
181
|
// Spawn MCP server
|
|
@@ -369,6 +375,9 @@ func runSupervisor(runningAsService bool) error {
|
|
|
369
375
|
<-keeperPollerDone
|
|
370
376
|
<-healthDone
|
|
371
377
|
|
|
378
|
+
// Ask MCP to write reconnect snapshot before killing it
|
|
379
|
+
mcp.PrepareShutdown(context.Background())
|
|
380
|
+
|
|
372
381
|
// Kill server process
|
|
373
382
|
pid, err := ReadPIDFile(cfg.Paths.ServerPID)
|
|
374
383
|
if err == nil && pid > 0 {
|
package/supervisor/process.go
CHANGED
|
@@ -242,6 +242,35 @@ func ListThreadPIDs(pidsDir string) map[string]int {
|
|
|
242
242
|
return result
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
+
// KillOrphanThreads kills any alive processes listed in PID files (leftovers from
|
|
246
|
+
// a previous supervisor run) and then removes the PID files. Called on startup
|
|
247
|
+
// before the MCP server is launched, so all thread PIDs are guaranteed to be stale.
|
|
248
|
+
func KillOrphanThreads(pidsDir string, log *Logger) {
|
|
249
|
+
pids := ListThreadPIDs(pidsDir)
|
|
250
|
+
if len(pids) == 0 {
|
|
251
|
+
log.Debug("KillOrphanThreads: no PID files found")
|
|
252
|
+
return
|
|
253
|
+
}
|
|
254
|
+
log.Info("KillOrphanThreads: checking %d PID files for orphan processes", len(pids))
|
|
255
|
+
killed := 0
|
|
256
|
+
for threadID, pid := range pids {
|
|
257
|
+
path := filepath.Join(pidsDir, threadID+".pid")
|
|
258
|
+
if IsProcessAlive(pid) {
|
|
259
|
+
log.Info("Killing orphan thread %s (PID %d)", threadID, pid)
|
|
260
|
+
if err := KillProcess(pid, log); err != nil {
|
|
261
|
+
log.Warn("Failed to kill orphan PID %d: %v", pid, err)
|
|
262
|
+
}
|
|
263
|
+
killed++
|
|
264
|
+
}
|
|
265
|
+
_ = os.Remove(path)
|
|
266
|
+
}
|
|
267
|
+
if killed > 0 {
|
|
268
|
+
log.Info("KillOrphanThreads: killed %d orphan processes, cleaned %d PID files", killed, len(pids))
|
|
269
|
+
} else {
|
|
270
|
+
log.Info("KillOrphanThreads: no orphans found, cleaned %d stale PID files", len(pids))
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
245
274
|
// CleanStalePIDs removes PID files for processes that are no longer running.
|
|
246
275
|
func CleanStalePIDs(pidsDir string, log *Logger) {
|
|
247
276
|
pids := ListThreadPIDs(pidsDir)
|
package/supervisor/updater.go
CHANGED
|
@@ -552,6 +552,12 @@ func requestSupervisorRestart(log *Logger) error {
|
|
|
552
552
|
|
|
553
553
|
func (u *Updater) killServer() {
|
|
554
554
|
u.log.Info("Updater: stopping current MCP server for update")
|
|
555
|
+
|
|
556
|
+
// Ask the MCP server to write a reconnect snapshot before we kill it.
|
|
557
|
+
// On Windows, taskkill /F doesn't allow graceful shutdown, so this is
|
|
558
|
+
// the only way the snapshot gets written.
|
|
559
|
+
u.mcp.PrepareShutdown(context.Background())
|
|
560
|
+
|
|
555
561
|
pid, err := ReadPIDFile(u.cfg.Paths.ServerPID)
|
|
556
562
|
if err != nil {
|
|
557
563
|
u.log.Warn("Could not read server PID file: %v", err)
|