From ac2f3692bfc1f9dcf5da0c58aeb94b186b54a41c Mon Sep 17 00:00:00 2001 From: Nicholai Date: Mon, 23 Feb 2026 07:15:33 -0700 Subject: [PATCH] 2026-02-23T14-15-33_auto_memory/memories.db-wal, memory/memories.db-wal, me --- .daemon/logs/signet-2026-02-23.log | 10 ++++++++++ memory/memories.db-wal | Bin 4482592 -> 4482592 bytes 2 files changed, 10 insertions(+) diff --git a/.daemon/logs/signet-2026-02-23.log b/.daemon/logs/signet-2026-02-23.log index e753dc67f..13026407b 100644 --- a/.daemon/logs/signet-2026-02-23.log +++ b/.daemon/logs/signet-2026-02-23.log @@ -6923,3 +6923,13 @@ {"timestamp":"2026-02-23T14:15:13.994Z","level":"info","category":"hooks","message":"Session start hook","data":{"harness":"claude-code","project":"/home/nicholai/signet/signetai"}} {"timestamp":"2026-02-23T14:15:13.996Z","level":"info","category":"hooks","message":"Session start completed","data":{"harness":"claude-code","project":"/home/nicholai/signet/signetai","memoryCount":13,"injectChars":6294,"injectPreview":"[memory active | /remember | /recall]\n\n## Agent Instructions\n\nYou are Mr Claude, a helpful and thoughtful AI assistant.\n\nBehavioral Guidelines\n---\n\n- Be concise and direct\n- Ask clarifying questions when needed\n- Remember user preferences across sessions\n- Avoid sycophancy - be honest even when it's uncomfortable\n- Express nuanced judgment rather than hedging\n\n\nSignet Agent System\n===\n\nYour identity and memory are managed by Signet, a portable agent identity\nsystem. This lets you maintain consistent behavior across different AI\nplatforms (Claude Code, OpenCode, Cursor, etc.).\n\nKey files in `~/.agents/`:\n- `agent.yaml` - Configuration\n- `AGENTS.md` - Instructions (this file)\n- `SOUL.md` - Personality and tone\n- `IDENTITY.md` - Agent identity\n- `USER.md` - User profile\n- `MEMORY.md` - Working memory summary\n\nDashboard: http://localhost:3850\n\nMemory\n---\n\nYou have access to persistent memory via Signet:\n\n```bash\nsignet remember \"User prefers dark mode and vim keybindings\"\nsignet recall \"user preferences\"\n```\n\nMemory is automatically loaded at session start. Important context is\nsummarized in `~/.agents/MEMORY.md`.\n\nSecrets\n---\n\nAPI keys and tokens are stored securely in Signet:\n\n```bash\nsignet secret get OPENAI_API_KEY\nsignet secret list\n```\n\n\nAbout Your User\n---\n\nAdd information about yourself here so your agent knows who you are.\n\n- Name: \n- Timezone:\n- Preferences:\n\nProjects\n---\n\nList your active projects here.\n\n-\n\n## Working Memory\n\n\n\nCurrent Context\n\nFull integration of OpenCode plugin system and optimization of embeddings view performance in the Signet dashboard.\n\nActive Projects\n\nOpenCode Plugin Full Integration — `packages/opencode-plugin/`, `packages/connector-opencode/`\n- Status: Implementation complete, awaiting build verification\n- What was done: Removed string-template hack, created standalone plugin package with 8 tool definitions, refactored connector to embed compiled plugin, enforced strict TypeScript discipline\n- Next: Verify build passes, test plugin auto-discovery in OpenCode\n\nEmbeddings View Performance Optimization — `packages/cli/dashboard/src/lib/components/tabs/EmbeddingsTab.svelte`, `EmbeddingCanvas2D.svelte`\n- Status: Complete (7 fixes applied)\n- What was done: Implemented rAF idle loop, converted reactive hover state to derived, added requestRedraw helper for interactions, fixed edge batching\n- Next: Monitor CPU usage and interaction responsiveness\n\nRecent Wo\n...[truncated 3794 chars]","durationMs":2}} {"timestamp":"2026-02-23T14:15:13.997Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-23T14:15:19.058Z","level":"info","category":"git","message":"Auto-committed","data":{"message":"2026-02-23T14-15-18_auto_memory/memories.db-wal","filesChanged":1}} +{"timestamp":"2026-02-23T14:15:22.802Z","level":"info","category":"summary-worker","message":"Enqueued session summary job","data":{"jobId":"ac4f4263-d249-4848-b857-2c719758d74b","harness":"claude-code","sessionKey":"6845492c-0895-4763-a675-eaa4e158e4f5","project":"/home/nicholai/signet/signetai","transcriptChars":12012,"transcriptPreview":"{\"parentUuid\":null,\"isSidechain\":false,\"userType\":\"external\",\"cwd\":\"/home/nicholai/signet/signetai\",\"sessionId\":\"6845492c-0895-4763-a675-eaa4e158e4f5\",\"version\":\"2.1.50\",\"gitBranch\":\"main\",\"type\":\"progress\",\"data\":{\"type\":\"hook_progress\",\"hookEvent\":\"SessionStart\",\"hookName\":\"SessionStart:startup\",\"command\":\"signet hook session-start -H claude-code --project \\\"$(pwd)\\\"\"},\"parentToolUseID\":\"7c618ff3-bcd9-4bf7-be36-0257dca67134\",\"toolUseID\":\"7c618ff3-bcd9-4bf7-be36-0257dca67134\",\"timestamp\":\"2026-02-23T13:12:25.741Z\",\"uuid\":\"a8d7c4ce-ff50-4883-9dd0-9cdb259a2efd\"}\n{\"type\":\"file-history-snapshot\",\"messageId\":\"e4d75cdb-8afc-4490-8374-ed76154ee09b\",\"snapshot\":{\"messageId\":\"e4d75cdb-8afc-4490-8374-ed76154ee09b\",\"trackedFileBackups\":{},\"timestamp\":\"2026-02-23T13:12:28.056Z\"},\"isSnapshotUpdate\":false}\n{\"parentUuid\":\"a8d7c4ce-ff50-4883-9dd0-9cdb259a2efd\",\"isSidechain\":false,\"userType\":\"external\",\"cwd\":\"/home/nicholai/signet/signetai\",\"sessionId\":\"6845492c-0895-4763-a675-eaa4e158e4f5\",\"version\":\"2.1.50\",\"gitBranch\":\"main\",\"slug\":\"sequential-stargazing-liskov\",\"type\":\"user\",\"message\":{\"role\":\"user\",\"content\":\"the signet daemon should expose itself as an MCP server to all available harnesses so\n...[truncated 10812 chars]"}} +{"timestamp":"2026-02-23T14:15:22.802Z","level":"info","category":"hooks","message":"Session end queued for summary","data":{"jobId":"ac4f4263-d249-4848-b857-2c719758d74b"}} +{"timestamp":"2026-02-23T14:15:22.802Z","level":"info","category":"hooks","message":"Session end transcript queued","data":{"harness":"claude-code","project":"/home/nicholai/signet/signetai","sessionKey":"6845492c-0895-4763-a675-eaa4e158e4f5","transcriptPath":"/home/nicholai/.claude/projects/-home-nicholai-signet-signetai/6845492c-0895-4763-a675-eaa4e158e4f5.jsonl","transcriptChars":4065907,"queuedChars":12012,"transcriptPreview":"{\"parentUuid\":null,\"isSidechain\":false,\"userType\":\"external\",\"cwd\":\"/home/nicholai/signet/signetai\",\"sessionId\":\"6845492c-0895-4763-a675-eaa4e158e4f5\",\"version\":\"2.1.50\",\"gitBranch\":\"main\",\"type\":\"progress\",\"data\":{\"type\":\"hook_progress\",\"hookEvent\":\"SessionStart\",\"hookName\":\"SessionStart:startup\",\"command\":\"signet hook session-start -H claude-code --project \\\"$(pwd)\\\"\"},\"parentToolUseID\":\"7c618ff3-bcd9-4bf7-be36-0257dca67134\",\"toolUseID\":\"7c618ff3-bcd9-4bf7-be36-0257dca67134\",\"timestamp\":\"2026-02-23T13:12:25.741Z\",\"uuid\":\"a8d7c4ce-ff50-4883-9dd0-9cdb259a2efd\"}\n{\"type\":\"file-history-snapshot\",\"messageId\":\"e4d75cdb-8afc-4490-8374-ed76154ee09b\",\"snapshot\":{\"messageId\":\"e4d75cdb-8afc-4490-8374-ed76154ee09b\",\"trackedFileBackups\":{},\"timestamp\":\"2026-02-23T13:12:28.056Z\"},\"isSnapshotUpdate\":false}\n{\"parentUuid\":\"a8d7c4ce-ff50-4883-9dd0-9cdb259a2efd\",\"isSidechain\":false,\"userType\":\"external\",\"cwd\":\"/home/nicholai/signet/signetai\",\"sessionId\":\"6845492c-0895-4763-a675-eaa4e158e4f5\",\"version\":\"2.1.50\",\"gitBranch\":\"main\",\"slug\":\"sequential-stargazing-liskov\",\"type\":\"user\",\"message\":{\"role\":\"user\",\"content\":\"the signet daemon should expose itself as an MCP server to all available harnesses so they can access it's endpoints natively as a tool instead of just invoking the skills. Openclaw handles this a little differently, but for Claude Code and Opencode this is a nobrainer, research all three and ofc look into the http server in the daemon and plan the approach, make it extensible and s\n...[truncated 10512 chars]"}} +{"timestamp":"2026-02-23T14:15:22.803Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-23T14:15:24.157Z","level":"info","category":"summary-worker","message":"Processing session summary","data":{"jobId":"ac4f4263-d249-4848-b857-2c719758d74b","harness":"claude-code","attempt":1,"sessionKey":"6845492c-0895-4763-a675-eaa4e158e4f5","project":"/home/nicholai/signet/signetai"}} +{"timestamp":"2026-02-23T14:15:24.159Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-23T14:15:28.357Z","level":"info","category":"hooks","message":"Session start hook","data":{"harness":"claude-code","project":"/home/nicholai/signet/signetai"}} +{"timestamp":"2026-02-23T14:15:28.359Z","level":"info","category":"hooks","message":"Session start completed","data":{"harness":"claude-code","project":"/home/nicholai/signet/signetai","memoryCount":13,"injectChars":6294,"injectPreview":"[memory active | /remember | /recall]\n\n## Agent Instructions\n\nYou are Mr Claude, a helpful and thoughtful AI assistant.\n\nBehavioral Guidelines\n---\n\n- Be concise and direct\n- Ask clarifying questions when needed\n- Remember user preferences across sessions\n- Avoid sycophancy - be honest even when it's uncomfortable\n- Express nuanced judgment rather than hedging\n\n\nSignet Agent System\n===\n\nYour identity and memory are managed by Signet, a portable agent identity\nsystem. This lets you maintain consistent behavior across different AI\nplatforms (Claude Code, OpenCode, Cursor, etc.).\n\nKey files in `~/.agents/`:\n- `agent.yaml` - Configuration\n- `AGENTS.md` - Instructions (this file)\n- `SOUL.md` - Personality and tone\n- `IDENTITY.md` - Agent identity\n- `USER.md` - User profile\n- `MEMORY.md` - Working memory summary\n\nDashboard: http://localhost:3850\n\nMemory\n---\n\nYou have access to persistent memory via Signet:\n\n```bash\nsignet remember \"User prefers dark mode and vim keybindings\"\nsignet recall \"user preferences\"\n```\n\nMemory is automatically loaded at session start. Important context is\nsummarized in `~/.agents/MEMORY.md`.\n\nSecrets\n---\n\nAPI keys and tokens are stored securely in Signet:\n\n```bash\nsignet secret get OPENAI_API_KEY\nsignet secret list\n```\n\n\nAbout Your User\n---\n\nAdd information about yourself here so your agent knows who you are.\n\n- Name: \n- Timezone:\n- Preferences:\n\nProjects\n---\n\nList your active projects here.\n\n-\n\n## Working Memory\n\n\n\nCurrent Context\n\nFull integration of OpenCode plugin system and optimization of embeddings view performance in the Signet dashboard.\n\nActive Projects\n\nOpenCode Plugin Full Integration — `packages/opencode-plugin/`, `packages/connector-opencode/`\n- Status: Implementation complete, awaiting build verification\n- What was done: Removed string-template hack, created standalone plugin package with 8 tool definitions, refactored connector to embed compiled plugin, enforced strict TypeScript discipline\n- Next: Verify build passes, test plugin auto-discovery in OpenCode\n\nEmbeddings View Performance Optimization — `packages/cli/dashboard/src/lib/components/tabs/EmbeddingsTab.svelte`, `EmbeddingCanvas2D.svelte`\n- Status: Complete (7 fixes applied)\n- What was done: Implemented rAF idle loop, converted reactive hover state to derived, added requestRedraw helper for interactions, fixed edge batching\n- Next: Monitor CPU usage and interaction responsiveness\n\nRecent Wo\n...[truncated 3794 chars]","durationMs":2}} +{"timestamp":"2026-02-23T14:15:28.359Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} diff --git a/memory/memories.db-wal b/memory/memories.db-wal index a1b6cb24b66c5abdfc57a4c3a5163ac18d75c17d..af56ab00611cdaf21ce0071858a7892718fad7bd 100644 GIT binary patch delta 19867 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 Dj^GS` delta 22662 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 YQ2dO;&v^Vyz|TbdOzIS4hka!IAJ?$!X#fBK