@memorax/memorax-code 0.1.7 → 0.1.9

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 (70) 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/codex/rollout-turn.js +52 -2
  10. package/lib/memorax-code-backend/dist/clients/opencode/message-turn.js +68 -2
  11. package/lib/memorax-code-backend/dist/lifecycle/backend/service.js +0 -5
  12. package/lib/memorax-code-backend/dist/lifecycle/orchestrator.js +1 -14
  13. package/lib/memorax-code-backend/dist/memory/automatic-writeback.js +8 -5
  14. package/lib/memorax-code-backend/dist/memory/project.js +4 -26
  15. package/lib/memorax-code-backend/dist/memory/quota-notice.js +79 -19
  16. package/lib/memorax-code-backend/dist/provider/memorax/adapter.js +1 -4
  17. package/lib/memorax-code-backend/dist/provider/memorax/http.js +0 -28
  18. package/lib/memorax-code-backend/dist/transport/http/request.js +1 -39
  19. package/lib/memorax-code-backend/package.json +2 -3
  20. package/lib/memorax-code-claude-adapter/.claude-plugin/plugin.json +1 -1
  21. package/lib/memorax-code-claude-adapter/hooks/runtime-shell.json +1 -1
  22. package/lib/memorax-code-claude-adapter/package.json +1 -1
  23. package/lib/memorax-code-claude-adapter/skills/memorax-code/SKILL.md +0 -6
  24. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  25. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  26. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/.claude-plugin/plugin.json +1 -1
  27. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/runtime-shell.json +1 -1
  28. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/package.json +1 -1
  29. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/SKILL.md +0 -6
  30. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  31. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  32. package/lib/memorax-code-codex-adapter/.codex-plugin/plugin.json +1 -1
  33. package/lib/memorax-code-codex-adapter/hooks/runtime-shell.json +1 -1
  34. package/lib/memorax-code-codex-adapter/package.json +1 -1
  35. package/lib/memorax-code-codex-adapter/skills/memorax-code/SKILL.md +0 -6
  36. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  37. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  38. package/lib/memorax-code-dsh-adapter/package.json +1 -1
  39. package/lib/memorax-code-dsh-adapter/skills/memorax-code/SKILL.md +0 -6
  40. package/lib/memorax-code-dsh-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  41. package/lib/memorax-code-dsh-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  42. package/lib/memorax-code-opencode-adapter/package.json +1 -1
  43. package/lib/memorax-code-opencode-adapter/skills/memorax-code/SKILL.md +0 -6
  44. package/lib/memorax-code-opencode-adapter/skills/memorax-code/references/memorax-add.md +1 -1
  45. package/lib/memorax-code-opencode-adapter/skills/memorax-code/references/memorax-search.md +1 -1
  46. package/lib/memorax-code-opencode-adapter/src/plugin.mjs +121 -16
  47. package/lib/memorax-code-opencode-adapter/src/repo-memory-server-runner.mjs +2 -0
  48. package/package.json +1 -1
  49. package/lib/memorax-code-backend/dist/clients/codex/effective-prompt.js +0 -54
  50. package/lib/memorax-code-backend/dist/memory/writeback-reconciler.js +0 -244
  51. package/lib/memorax-code-backend/dist/memory/writeback-task-projection.js +0 -377
  52. package/lib/memorax-code-backend/dist/repository/readiness.js +0 -188
  53. package/lib/memorax-code-backend/dist/shared/incremental-jsonl-projection.js +0 -271
  54. package/lib/memorax-code-backend/dist/viewer/history/claude-transcript.js +0 -648
  55. package/lib/memorax-code-backend/dist/viewer/history/session-title.js +0 -93
  56. package/lib/memorax-code-backend/dist/viewer/http/public-routes.js +0 -146
  57. package/lib/memorax-code-backend/dist/viewer/model.js +0 -1
  58. package/lib/memorax-code-backend/dist/viewer/projection/activity.js +0 -113
  59. package/lib/memorax-code-backend/dist/viewer/projection/cache.js +0 -69
  60. package/lib/memorax-code-backend/dist/viewer/projection/event-identity.js +0 -3
  61. package/lib/memorax-code-backend/dist/viewer/projection/history.js +0 -79
  62. package/lib/memorax-code-backend/dist/viewer/projection/observability.js +0 -8
  63. package/lib/memorax-code-backend/dist/viewer/projection/redaction.js +0 -52
  64. package/lib/memorax-code-backend/dist/viewer/projection/turn-reference.js +0 -12
  65. package/lib/memorax-code-backend/dist/viewer/projection/user.js +0 -168
  66. package/lib/memorax-code-backend/dist/viewer/projection/writeback-status.js +0 -97
  67. package/lib/memorax-code-backend/dist/viewer/store.js +0 -991
  68. package/lib/memorax-code-backend/dist/viewer/ui/icon.js +0 -1
  69. package/lib/memorax-code-backend/dist/viewer/ui/logo.js +0 -1
  70. 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
- }