@memorax/memorax-code 0.1.7 → 0.1.8

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 (69) hide show
  1. package/README.md +36 -5
  2. package/bin/memorax-code-setup.mjs +0 -3
  3. package/docs/configuration.md +1 -3
  4. package/docs/troubleshooting.md +9 -8
  5. package/lib/memorax-code-backend/dist/app/backend-server.js +2 -29
  6. package/lib/memorax-code-backend/dist/app/memory-observability.js +1 -4
  7. package/lib/memorax-code-backend/dist/app/state.js +1 -12
  8. package/lib/memorax-code-backend/dist/clients/claude/transcript-turn.js +0 -182
  9. package/lib/memorax-code-backend/dist/clients/opencode/message-turn.js +68 -2
  10. package/lib/memorax-code-backend/dist/lifecycle/backend/service.js +0 -5
  11. package/lib/memorax-code-backend/dist/lifecycle/orchestrator.js +1 -14
  12. package/lib/memorax-code-backend/dist/memory/automatic-writeback.js +8 -5
  13. package/lib/memorax-code-backend/dist/memory/project.js +4 -26
  14. package/lib/memorax-code-backend/dist/memory/quota-notice.js +79 -19
  15. package/lib/memorax-code-backend/dist/provider/memorax/adapter.js +1 -4
  16. package/lib/memorax-code-backend/dist/provider/memorax/http.js +0 -28
  17. package/lib/memorax-code-backend/dist/transport/http/request.js +1 -39
  18. package/lib/memorax-code-backend/package.json +2 -3
  19. package/lib/memorax-code-claude-adapter/.claude-plugin/plugin.json +1 -1
  20. package/lib/memorax-code-claude-adapter/hooks/runtime-shell.json +1 -1
  21. package/lib/memorax-code-claude-adapter/package.json +1 -1
  22. package/lib/memorax-code-claude-adapter/skills/memorax-code/SKILL.md +0 -6
  23. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  24. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  25. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/.claude-plugin/plugin.json +1 -1
  26. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/runtime-shell.json +1 -1
  27. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/package.json +1 -1
  28. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/SKILL.md +0 -6
  29. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  30. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  31. package/lib/memorax-code-codex-adapter/.codex-plugin/plugin.json +1 -1
  32. package/lib/memorax-code-codex-adapter/hooks/runtime-shell.json +1 -1
  33. package/lib/memorax-code-codex-adapter/package.json +1 -1
  34. package/lib/memorax-code-codex-adapter/skills/memorax-code/SKILL.md +0 -6
  35. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  36. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  37. package/lib/memorax-code-dsh-adapter/package.json +1 -1
  38. package/lib/memorax-code-dsh-adapter/skills/memorax-code/SKILL.md +0 -6
  39. package/lib/memorax-code-dsh-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  40. package/lib/memorax-code-dsh-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  41. package/lib/memorax-code-opencode-adapter/package.json +1 -1
  42. package/lib/memorax-code-opencode-adapter/skills/memorax-code/SKILL.md +0 -6
  43. package/lib/memorax-code-opencode-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  44. package/lib/memorax-code-opencode-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  45. package/lib/memorax-code-opencode-adapter/src/plugin.mjs +121 -16
  46. package/lib/memorax-code-opencode-adapter/src/repo-memory-server-runner.mjs +2 -0
  47. package/package.json +1 -1
  48. package/lib/memorax-code-backend/dist/clients/codex/effective-prompt.js +0 -54
  49. package/lib/memorax-code-backend/dist/memory/writeback-reconciler.js +0 -244
  50. package/lib/memorax-code-backend/dist/memory/writeback-task-projection.js +0 -377
  51. package/lib/memorax-code-backend/dist/repository/readiness.js +0 -188
  52. package/lib/memorax-code-backend/dist/shared/incremental-jsonl-projection.js +0 -271
  53. package/lib/memorax-code-backend/dist/viewer/history/claude-transcript.js +0 -648
  54. package/lib/memorax-code-backend/dist/viewer/history/session-title.js +0 -93
  55. package/lib/memorax-code-backend/dist/viewer/http/public-routes.js +0 -146
  56. package/lib/memorax-code-backend/dist/viewer/model.js +0 -1
  57. package/lib/memorax-code-backend/dist/viewer/projection/activity.js +0 -113
  58. package/lib/memorax-code-backend/dist/viewer/projection/cache.js +0 -69
  59. package/lib/memorax-code-backend/dist/viewer/projection/event-identity.js +0 -3
  60. package/lib/memorax-code-backend/dist/viewer/projection/history.js +0 -79
  61. package/lib/memorax-code-backend/dist/viewer/projection/observability.js +0 -8
  62. package/lib/memorax-code-backend/dist/viewer/projection/redaction.js +0 -52
  63. package/lib/memorax-code-backend/dist/viewer/projection/turn-reference.js +0 -12
  64. package/lib/memorax-code-backend/dist/viewer/projection/user.js +0 -168
  65. package/lib/memorax-code-backend/dist/viewer/projection/writeback-status.js +0 -97
  66. package/lib/memorax-code-backend/dist/viewer/store.js +0 -991
  67. package/lib/memorax-code-backend/dist/viewer/ui/icon.js +0 -1
  68. package/lib/memorax-code-backend/dist/viewer/ui/logo.js +0 -1
  69. package/lib/memorax-code-backend/dist/viewer/ui/user-html.js +0 -117
@@ -1,168 +0,0 @@
1
- import { isTraceClient } from "../../trace/context.js";
2
- /**
3
- * Projects raw Viewer events into the deliberately small user-facing summary contract.
4
- * Conversation, memory, session, turn, and diagnostic fields never cross this boundary.
5
- */
6
- export function projectMemoryViewerUserData(events) {
7
- const turnActivities = projectTurnActivities(events);
8
- const activities = [
9
- ...turnActivities,
10
- ...events.flatMap((event) => {
11
- if (event.type === "memory_retrieve" || event.type === "memory_cli_search") {
12
- const occurredAt = canonicalUserActivityTimestamp(event.timestamp);
13
- if (!occurredAt)
14
- return [];
15
- const nativeTranscriptActivity = isClaudeNativeTranscriptMemoryActivity(event);
16
- return [{
17
- kind: "search",
18
- occurredAt,
19
- source: event.type === "memory_cli_search" ? "assistant" : "automatic",
20
- status: event.ok ? "completed" : "failed",
21
- count: event.ok
22
- ? nativeTranscriptActivity
23
- ? safeNativeTranscriptSearchItemCount(event)
24
- : event.itemCount ?? event.results?.length ?? 0
25
- : 0,
26
- ...safeProjectFields(event),
27
- }];
28
- }
29
- if (event.type !== "memory_cli_add" && event.type !== "memory_writeback")
30
- return [];
31
- const occurredAt = canonicalUserActivityTimestamp(event.timestamp);
32
- if (!occurredAt)
33
- return [];
34
- const nativeTranscriptActivity = isClaudeNativeTranscriptMemoryActivity(event);
35
- return [{
36
- kind: "add",
37
- occurredAt,
38
- source: event.type === "memory_cli_add" ? "assistant" : "automatic",
39
- status: nativeTranscriptActivity && event.ok ? "unknown" : addStatus(event),
40
- count: nativeTranscriptActivity && event.ok ? null : addCount(event),
41
- ...safeProjectFields(event),
42
- }];
43
- }),
44
- ].sort(compareUserActivitiesNewestFirst);
45
- return {
46
- activities,
47
- summary: {
48
- turnCount: turnActivities.length,
49
- searchOperationCount: countActivities(activities, "search"),
50
- searchedMemoryCount: sumActivityCounts(activities, "search"),
51
- addOperationCount: countActivities(activities, "add"),
52
- addedMemoryCount: activities
53
- .filter((activity) => activity.kind === "add" && activity.status === "saved")
54
- .reduce((total, activity) => total + (activity.count ?? 0), 0),
55
- processingCount: activities.filter((activity) => activity.status === "processing").length,
56
- unknownCount: activities.filter((activity) => (activity.kind !== "turn"
57
- && activity.count === null
58
- && activity.status !== "processing"
59
- && activity.status !== "failed")).length,
60
- failedCount: activities.filter((activity) => activity.status === "failed").length,
61
- },
62
- };
63
- }
64
- function isClaudeNativeTranscriptMemoryActivity(event) {
65
- return event.client === "claude"
66
- && event.id.startsWith("claude-local:")
67
- && (event.type === "memory_cli_search" || event.type === "memory_cli_add");
68
- }
69
- function safeNativeTranscriptSearchItemCount(event) {
70
- return Number.isSafeInteger(event.itemCount)
71
- && (event.itemCount ?? -1) >= 0
72
- && (event.itemCount ?? 101) <= 100
73
- ? event.itemCount
74
- : null;
75
- }
76
- function projectTurnActivities(events) {
77
- const turns = new Map();
78
- for (const event of events) {
79
- if (!event.sessionId || !event.turnId || (event.type !== "turn_start" && event.type !== "turn_end"))
80
- continue;
81
- const key = `${traceClient(event)}\u0000${event.sessionId}\u0000${event.turnId}`;
82
- const turn = turns.get(key) ?? {};
83
- if (event.type === "turn_start")
84
- turn.start = event;
85
- else
86
- turn.end = event;
87
- turns.set(key, turn);
88
- }
89
- return [...turns.values()].flatMap((turn) => {
90
- const anchor = turn.start ?? turn.end;
91
- if (!anchor)
92
- return [];
93
- const occurredAt = canonicalUserActivityTimestamp(turn.start?.timestamp)
94
- ?? canonicalUserActivityTimestamp(turn.end?.timestamp)
95
- ?? canonicalUserActivityTimestamp(anchor.timestamp);
96
- if (!occurredAt)
97
- return [];
98
- return [{
99
- kind: "turn",
100
- occurredAt,
101
- source: "client",
102
- status: turn.end?.turnOutcome === "interrupted"
103
- || (!turn.end && turn.start?.turnOutcome === "interrupted")
104
- ? "interrupted"
105
- : turn.end
106
- ? "completed"
107
- : "processing",
108
- count: null,
109
- ...safeProjectFields(anchor),
110
- }];
111
- });
112
- }
113
- function canonicalUserActivityTimestamp(value) {
114
- if (typeof value !== "string" || value.length > 512)
115
- return undefined;
116
- const parsed = Date.parse(value.trim());
117
- if (!Number.isFinite(parsed))
118
- return undefined;
119
- return new Date(parsed).toISOString();
120
- }
121
- function traceClient(event) {
122
- return isTraceClient(event.client) ? event.client : "codex";
123
- }
124
- function safeProjectFields(event) {
125
- return {
126
- ...(event.projectId ? { projectId: event.projectId } : {}),
127
- ...(event.projectLabel ? { projectLabel: event.projectLabel } : {}),
128
- };
129
- }
130
- function addStatus(event) {
131
- if (!event.ok || event.writebackOutcome === "failed")
132
- return "failed";
133
- if (event.writebackOutcome === "pending")
134
- return "processing";
135
- if (event.writebackOutcome === "saved")
136
- return "saved";
137
- if (event.writebackOutcome === "skipped")
138
- return "skipped";
139
- if (event.writebackOutcome === "completed")
140
- return "completed";
141
- if (event.savedMemoryCount !== undefined)
142
- return event.savedMemoryCount > 0 ? "saved" : "skipped";
143
- return "unknown";
144
- }
145
- function addCount(event) {
146
- if (!event.ok || event.writebackOutcome === "failed")
147
- return 0;
148
- if (event.savedMemoryCount !== undefined)
149
- return event.savedMemoryCount;
150
- if (event.writebackOutcome === "skipped")
151
- return 0;
152
- return null;
153
- }
154
- function compareUserActivitiesNewestFirst(left, right) {
155
- return timestampOrder(right.occurredAt) - timestampOrder(left.occurredAt);
156
- }
157
- function timestampOrder(value) {
158
- const parsed = Date.parse(value);
159
- return Number.isFinite(parsed) ? parsed : 0;
160
- }
161
- function countActivities(activities, kind) {
162
- return activities.filter((activity) => activity.kind === kind).length;
163
- }
164
- function sumActivityCounts(activities, kind) {
165
- return activities
166
- .filter((activity) => activity.kind === kind)
167
- .reduce((total, activity) => total + (activity.count ?? 0), 0);
168
- }
@@ -1,97 +0,0 @@
1
- import { completeMemoryWritebackTask, memoryText, memoryWritebackTaskEventKey, memoryWritebackTaskOutcome, memoryWritebackTaskOutcomeForStatus, nonNegativeInteger, projectMemoryWritebackTasks, stringArray, } from "../../memory/writeback-task-projection.js";
2
- export { memoryText, nonNegativeInteger, stringArray, };
3
- export function pendingMemoryViewerWritebacks(eventsToCheck) {
4
- const tasks = new Map(projectMemoryWritebackTasks(eventsToCheck.flatMap(memoryViewerWritebackProjectionRecord)).map((task) => [memoryWritebackTaskEventKey(task), task]));
5
- return eventsToCheck.filter((event) => {
6
- const task = tasks.get(memoryViewerWritebackEventKey(event));
7
- return task?.accepted === true && task.completion.outcome === "pending";
8
- });
9
- }
10
- export function completeMemoryViewerWriteback(event, status) {
11
- return applyMemoryWritebackTaskCompletion(event, completeMemoryWritebackTask(status), false);
12
- }
13
- export function foldMemoryViewerWritebackStatuses(allEvents) {
14
- const tasks = new Map(projectMemoryWritebackTasks(allEvents.flatMap(memoryViewerWritebackProjectionRecord)).map((task) => [memoryWritebackTaskEventKey(task), task]));
15
- return allEvents
16
- .filter((event) => event.type !== "memory_writeback_status")
17
- .map((event) => {
18
- const task = tasks.get(memoryViewerWritebackEventKey(event));
19
- return task?.statusEventId
20
- ? applyMemoryWritebackTaskCompletion(event, task.completion, true)
21
- : event;
22
- });
23
- }
24
- export function memoryViewerWritebackOutcome(value) {
25
- return memoryWritebackTaskOutcome(value);
26
- }
27
- export function writebackOutcomeForStatus(status, result = {}) {
28
- return memoryWritebackTaskOutcomeForStatus(status, result);
29
- }
30
- function memoryViewerWritebackProjectionRecord(event) {
31
- if ((event.type === "memory_writeback" || event.type === "memory_cli_add")
32
- && event.taskId
33
- && event.writebackStatus) {
34
- return [{
35
- kind: "task",
36
- eventId: event.id,
37
- timestamp: event.timestamp,
38
- client: event.client,
39
- ...(event.sessionId ? { sessionId: event.sessionId } : {}),
40
- ...(event.turnId ? { turnId: event.turnId } : {}),
41
- ok: event.ok,
42
- taskId: event.taskId,
43
- status: event.writebackStatus,
44
- }];
45
- }
46
- if (event.type !== "memory_writeback_status" || !event.writebackStatus)
47
- return [];
48
- if (!event.originalEventId && (!event.sessionId || !event.taskId))
49
- return [];
50
- return [{
51
- kind: "status",
52
- eventId: event.id,
53
- timestamp: event.timestamp,
54
- client: event.client,
55
- ...(event.sessionId ? { sessionId: event.sessionId } : {}),
56
- ...(event.turnId ? { turnId: event.turnId } : {}),
57
- ...(event.taskId ? { taskId: event.taskId } : {}),
58
- ...(event.originalEventId ? { originalEventId: event.originalEventId } : {}),
59
- completion: completeMemoryWritebackTask({
60
- status: event.writebackStatus,
61
- outcome: event.writebackOutcome,
62
- savedMemoryCount: event.savedMemoryCount,
63
- savedMemoryIds: event.savedMemoryIds,
64
- savedMemories: event.savedMemories,
65
- error: event.error,
66
- }),
67
- }];
68
- }
69
- function memoryViewerWritebackEventKey(event) {
70
- return memoryWritebackTaskEventKey({
71
- eventId: event.id,
72
- client: event.client,
73
- ...(event.sessionId ? { sessionId: event.sessionId } : {}),
74
- });
75
- }
76
- function applyMemoryWritebackTaskCompletion(event, completion, replaceError) {
77
- const base = replaceError
78
- ? (({ error: _previousError, ...remaining }) => remaining)(event)
79
- : event;
80
- return {
81
- ...base,
82
- ok: completion.ok,
83
- writebackStatus: completion.status,
84
- writebackOutcome: completion.outcome,
85
- ...(completion.savedMemories?.length ? {
86
- content: completion.savedMemories.join("\n\n"),
87
- savedMemories: completion.savedMemories,
88
- } : {}),
89
- ...(completion.savedMemoryIds?.length ? {
90
- savedMemoryIds: completion.savedMemoryIds,
91
- } : {}),
92
- ...(completion.savedMemoryCount === undefined ? {} : {
93
- savedMemoryCount: completion.savedMemoryCount,
94
- }),
95
- ...(completion.error ? { error: completion.error } : {}),
96
- };
97
- }