Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
4eea5f5
fix: make agent source scans persistent and streaming
hijzy Sep 2, 2026
73b3b22
fix: include scan core in Linux CLI archive
hijzy Sep 2, 2026
17f929b
fix(memory): merge duplicate legacy raw turns
hijzy Sep 2, 2026
988605e
Merge release/v1.1.2 into main
hijzy Sep 2, 2026
87d2ded
fix: normalize staged agent source ids
hijzy Sep 2, 2026
f083f4d
Merge pull request #342 from hijzy/main
hijzy Sep 2, 2026
a4531a0
fix(onboarding): preserve completion across BYOK switch
Sep 2, 2026
7453b84
fix(dsh): support old and new conversation APIs
hijzy Sep 2, 2026
31b167b
Merge pull request #344 from hijzy/main
hijzy Sep 2, 2026
e679cf9
Merge pull request #343 from syzsunshine219/codex/fix-onboarding-repl…
hijzy Sep 2, 2026
7580586
fix(onboarding): preserve completion across BYOK switch
Sep 2, 2026
9709ce4
Merge pull request #345 from syzsunshine219/codex/backport-onboarding…
syzsunshine219 Sep 2, 2026
4ca431f
fix(mac): exit fullscreen before tray hide (MEMMY-362)
Sep 2, 2026
2615866
fix(desktop): refine update status controls
Sep 3, 2026
b482ca0
Merge pull request #347 from dolnna/codex/refine-update-status-contro…
syzsunshine219 Sep 3, 2026
55ea7ac
Merge pull request #346 from MemTensor/codex/memmy-362-v1.1.2-pr
syzsunshine219 Sep 3, 2026
f9b1b95
Merge pull request #341 from Memtensor-AI/release/v1.1.2
syzsunshine219 Sep 3, 2026
eee9460
Merge upstream/main into release/v1.1.2
Sep 3, 2026
c7feae0
fix(memory): keep full scan message counts stable
Sep 3, 2026
db7cb65
fix(windows): package standalone memory runtime offline
Sep 3, 2026
f7685b3
Merge pull request #350 from EF1874/fix/windows-memory-runtime-packag…
syzsunshine219 Sep 3, 2026
ff0a09d
fix(memory): support opaque embedding aliases
hijzy Sep 3, 2026
efc9dda
Merge pull request #351 from hijzy/main
hijzy Sep 3, 2026
5aceaa8
fix(memory): guard summary model context
hijzy Sep 3, 2026
7e3eacc
Merge pull request #352 from hijzy/main
hijzy Sep 3, 2026
ee6ead6
test(windows): track packaged runtime manifest helper
Sep 3, 2026
d709688
Merge pull request #353 from Memtensor-AI/codex/fix-packaged-runtime-…
syzsunshine219 Sep 4, 2026
20f69e1
fix(memory): allow migration-aware runtime health startup
Sep 3, 2026
02c6684
fix(memory): cap health retry backoff at deadline
Sep 4, 2026
080c4ce
fix(desktop): manage bundled Memory without OS service registration
Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions AgentSourceCore/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "@memmy/agent-source-core",
"version": "0.0.0",
"private": true,
"type": "module",
"main": "./dist/src/index.js",
"types": "./dist/src/index.d.ts",
"scripts": {
"build": "tsc -p tsconfig.json",
"typecheck": "tsc -p tsconfig.json --noEmit",
"test": "vitest run"
}
}
32 changes: 32 additions & 0 deletions AgentSourceCore/src/index.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { describe, expect, it } from "vitest";
import { conversationContentHash, orderedTurns, splitTurn, type ConversationMessage } from "./index.js";

const message = (id: string, role: ConversationMessage["role"], content: string, createdAt: string): ConversationMessage => ({
messageId: id, sourceId: "fixture", conversationId: "conversation", role, content, createdAt,
workspacePath: null, gitRoot: null, rawMeta: {}
});

describe("agent source core", () => {
it("emits stable turns across page boundaries", async () => {
const pages = (async function*() {
yield message("u1", "user", "hello", "2026-01-01T00:00:00Z");
yield message("t1", "tool", "tool", "2026-01-01T00:00:01Z");
yield message("a1", "assistant", "world", "2026-01-01T00:00:02Z");
yield message("u2", "user", "next", "2026-01-01T00:00:03Z");
yield message("a2", "assistant", "done", "2026-01-01T00:00:04Z");
})();
const turns = [];
for await (const turn of orderedTurns(pages)) turns.push(turn);
expect(turns).toHaveLength(2);
expect(turns.map((turn) => turn.messages[0]?.messageId)).toEqual(["u1", "u2"]);
});

it("splits oversized content with unique part hashes", () => {
const turn = { sourceId: "fixture", conversationId: "conversation", turnIndex: 0, messages: [message("u", "user", "x".repeat(30_000), "2026-01-01T00:00:00Z"), message("a", "assistant", "ok", "2026-01-01T00:00:01Z")] };
const parts = splitTurn(turn, 4000, 1_000_000);
expect(parts.length).toBeGreaterThan(1);
expect(new Set(parts.map((part) => part.contentHash)).size).toBe(parts.length);
expect(parts.every((part) => Buffer.byteLength(part.content) <= 1_000_000)).toBe(true);
expect(conversationContentHash(turn.messages)).toHaveLength(64);
});
});
Loading
Loading