@rubytech/create-maxy 1.0.495 → 1.0.496

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy",
3
- "version": "1.0.495",
3
+ "version": "1.0.496",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy": "./dist/index.js"
@@ -26,7 +26,7 @@
26
26
  "logoContainsName": false,
27
27
 
28
28
  "assets": {
29
- "logo": "maxy-monochrome.png",
29
+ "logo": "maxy-square.png",
30
30
  "icon": "maxy-monochrome.png",
31
31
  "favicon": "favicon.ico"
32
32
  },
@@ -33,13 +33,15 @@ Analyse Claude agent stream logs — the `claude-agent-stream-*.log` files gener
33
33
  On the Pi, use the `logs-read` MCP tool to retrieve logs. From the dev machine (SSH), use the shell counterpart:
34
34
 
35
35
  ```bash
36
- # Retrieve session timeline (all log types)
36
+ # Retrieve session timeline (all log types) — sessionKey is the handle
37
37
  sshpass -p 'password' ssh admin@maxy.local "~/maxy/platform/scripts/logs-read.sh <sessionKey>"
38
38
 
39
39
  # Tail the most recent stream log
40
40
  sshpass -p 'password' ssh admin@maxy.local "~/maxy/platform/scripts/logs-read.sh --tail system 200"
41
41
  ```
42
42
 
43
+ To go from a `conversationId` (visible in the admin UI) to a `sessionKey` (the log filter handle), see the **Conversation Identification** section in `references/analysis-patterns.md`.
44
+
43
45
  ## Boundaries
44
46
 
45
47
  - This skill analyses logs. It does not fix the bugs it finds — that's a separate task.
@@ -50,6 +50,34 @@ Each session begins with a `[managed-spawn]` line and ends with either:
50
50
 
51
51
  Extract `sessionKey` from `managed-spawn` and `session_id` from the `result` JSON.
52
52
 
53
+ ## Conversation Identification
54
+
55
+ Three independent identifiers trace a conversation through the system:
56
+
57
+ | Identifier | Scope | Where it lives | Survives restart |
58
+ |------------|-------|-----------------|-----------------|
59
+ | `sessionKey` | Single agent process lifetime | Server memory, stream logs (`sessionKey=XXXXXXXX…`) | No |
60
+ | `conversationId` | Entire conversation (may span multiple sessionKeys) | Neo4j `Conversation` node, stream logs on resume/attribution | Yes |
61
+ | `visitorId` (public) / `userId` (admin) | Visitor or admin identity across conversations | `maxy_visitor` cookie (public), users.json (admin) | Yes |
62
+
63
+ ### Finding the right session in logs
64
+
65
+ **From the admin UI**: The sessions modal and Claude info panel both display the first 8 characters of `conversationId`. Use `logs-read` with the corresponding `sessionKey` to pull the full timeline.
66
+
67
+ **From a conversationId**: The stream log lines that link `conversationId` to `sessionKey` are:
68
+ - `[session] conversation attributed: conversationId=XXXX… userId=… admin/…` (new sessions)
69
+ - `[session-resume] updated conversationId to XXXX… for session YYYY…` (resumed sessions)
70
+ - `[session] cold-resume visitor=XXXX… conversation=YYYY…` (public cold resume)
71
+
72
+ **From a visitorId**: Query Neo4j to find all conversations for a visitor, then trace the `sessionKey` into logs:
73
+ ```cypher
74
+ MATCH (c:Conversation {visitorId: $visitorId, accountId: $accountId})
75
+ RETURN c.conversationId, c.sessionKey, c.createdAt
76
+ ORDER BY c.createdAt DESC
77
+ ```
78
+
79
+ **Public agent sessions** use `[public-managed-spawn]` and `[public-managed-append]` tags instead of `[managed-spawn]` / `[managed-append]`. The `sessionKey` field is present in both.
80
+
53
81
  ## Error Classification
54
82
 
55
83
  ### Severity: ERROR
@@ -3,6 +3,6 @@
3
3
  "tagline": "AI for Productive People",
4
4
  "domain": "getmaxy.com",
5
5
  "hostname": "maxy",
6
- "logo": "/brand/maxy-monochrome.png",
6
+ "logo": "/brand/maxy-square.png",
7
7
  "favicon": "/brand/favicon.ico"
8
8
  }