diff --git a/.windsurf/workflows/refresh-chat-history.md b/.windsurf/workflows/refresh-chat-history.md
new file mode 100644
index 00000000..b266b3f6
--- /dev/null
+++ b/.windsurf/workflows/refresh-chat-history.md
@@ -0,0 +1,53 @@
+---
+description: Refresh the Windsurf chat history archive (re-scan all repos, update symlinks, copy docs/workflows)
+---
+
+# Refresh Windsurf Chat History Archive
+
+Refreshes the centralized Windsurf chat history archive at `__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/`.
+Auto-discovers new repos, updates symlinks, and re-copies docs + workflows.
+
+## Steps
+
+// turbo
+
+1. Run the refresh script:
+
+```bash
+/Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
+```
+
+2. Check the refresh log:
+
+```bash
+cat /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log
+```
+
+3. Verify symlinks are valid:
+
+```bash
+ls -la /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/ | grep "^l"
+```
+
+## Notes
+
+- The script is **idempotent** — safe to run any number of times.
+- It auto-discovers repos under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`.
+- A **launchd job** runs this daily at 11 PM: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`.
+- Logs: `.last-refresh.log` (stats), `.launchd-stdout.log` / `.launchd-stderr.log` (scheduled run output).
+
+## Manage the scheduled job
+
+```bash
+# Check if running
+launchctl list | grep windsurf-archive
+
+# Stop
+launchctl unload ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
+
+# Start
+launchctl load ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
+
+# Force run now
+launchctl start com.sd9235.windsurf-archive-refresh
+```
diff --git a/__LOCAL_LLMs/.gitignore b/__LOCAL_LLMs/.gitignore
index dbb4f1c2..bb6cc47e 100644
--- a/__LOCAL_LLMs/.gitignore
+++ b/__LOCAL_LLMs/.gitignore
@@ -1 +1,14 @@
APPS/
+.venv/
+
+# Local logs
+oss_llm/testNanoGPT/last_run.log
+
+# nanoGPT is cloned by scripts; don't vendor it here
+oss_llm/nanoGPT/
+
+# Training artifacts (avoid accidentally committing weights/data bins)
+oss_llm/**/out-*/
+oss_llm/**/data/**/train.bin
+oss_llm/**/data/**/val.bin
+oss_llm/**/data/**/meta.pkl
diff --git a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log
new file mode 100644
index 00000000..b70c62a5
--- /dev/null
+++ b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log
@@ -0,0 +1,9 @@
+Last refresh: 2026-02-28T07:00:06Z (2026-02-27 23:00:06 PST)
+Cascade conversations: 50 (530M)
+Memories: 43
+Implicit context: 20
+Code tracker dirs: 163
+File edit history: 1789 entries
+Workspace storage: 28 workspaces
+Repo docs: 13 files across 3 repos
+Repo workflows: 23 files across 4 repos
diff --git a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/README.md b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/README.md
index dd43d37b..2b2cc0db 100644
--- a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/README.md
+++ b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/README.md
@@ -200,9 +200,62 @@ Copies of `.windsurf/workflows/` (Cascade slash-command definitions) from each r
---
+## Auto-Refresh
+
+This archive stays up to date automatically via three mechanisms:
+
+### 1. Scheduled (launchd — daily at 11 PM)
+
+A macOS LaunchAgent runs `refresh.sh --quiet` every night at 11 PM.
+
+```bash
+# Check status
+launchctl list | grep windsurf-archive
+
+# Force run now
+launchctl start com.sd9235.windsurf-archive-refresh
+
+# Stop / Start
+launchctl unload ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
+launchctl load ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
+```
+
+Plist: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`
+Source: `./com.sd9235.windsurf-archive-refresh.plist` (copy kept here)
+
+### 2. Manual (CLI)
+
+```bash
+./refresh.sh # normal (verbose)
+./refresh.sh --quiet # suppress output
+./refresh.sh --dry-run # preview without changes
+```
+
+### 3. Windsurf workflow (`/refresh-chat-history`)
+
+Run `/refresh-chat-history` in any Windsurf Cascade conversation.
+
+### What refresh does
+
+- Re-creates all symlinks (idempotent)
+- **Auto-discovers new repos** under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`
+- Re-copies all repo docs and workflows
+- Cleans up stale entries for removed repos
+- Writes stats to `.last-refresh.log`
+
+### Logs
+
+| File | Contents |
+| --------------------- | ---------------------------------------------- |
+| `.last-refresh.log` | Stats from last run (counts, sizes, timestamp) |
+| `.launchd-stdout.log` | stdout from scheduled runs |
+| `.launchd-stderr.log` | stderr from scheduled runs |
+
+---
+
## Notes
- **Protobuf files** (`.pb`) are binary — not human-readable. They require protobuf deserialization tooling to inspect.
- **Symlinks** point to live data. Changes in the source are immediately visible here.
-- **Repo docs/workflows** are copies (not symlinks) — they won't auto-update when the originals change. Re-run the copy commands to refresh.
+- **Repo docs/workflows** are copies (not symlinks) — run `./refresh.sh` to update them after changes.
- Created: 2026-02-27
diff --git a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/com.sd9235.windsurf-archive-refresh.plist b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/com.sd9235.windsurf-archive-refresh.plist
new file mode 100644
index 00000000..f1de9da4
--- /dev/null
+++ b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/com.sd9235.windsurf-archive-refresh.plist
@@ -0,0 +1,34 @@
+
+
+
+
+ Label
+ com.sd9235.windsurf-archive-refresh
+
+ ProgramArguments
+
+ /bin/zsh
+ /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
+ --quiet
+
+
+
+ StartCalendarInterval
+
+ Hour
+ 23
+ Minute
+ 0
+
+
+
+ RunAtLoad
+
+
+ StandardOutPath
+ /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.launchd-stdout.log
+
+ StandardErrorPath
+ /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.launchd-stderr.log
+
+
diff --git a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
new file mode 100755
index 00000000..b925e5bc
--- /dev/null
+++ b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
@@ -0,0 +1,186 @@
+#!/bin/zsh
+# refresh.sh — Auto-discover and refresh Windsurf chat history archive
+# Safe to run repeatedly (idempotent). Discovers new repos automatically.
+#
+# Usage:
+# ./refresh.sh # normal run
+# ./refresh.sh --quiet # suppress output (for scheduled runs)
+# ./refresh.sh --dry-run # show what would happen without doing it
+#
+# Scheduled via: ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
+# Manual via: Windsurf workflow /refresh-chat-history
+
+set -eo pipefail
+
+# ── Config ──────────────────────────────────────────────────────────────────
+ARCHIVE_DIR="$(cd "$(dirname "$0")" && pwd)"
+REPOS_ROOT="/Users/sd9235/code/mygh"
+CODEIUM_DIR="$HOME/.codeium/windsurf"
+APP_SUPPORT_DIR="$HOME/Library/Application Support/Windsurf"
+LOG_FILE="$ARCHIVE_DIR/.last-refresh.log"
+
+QUIET=false
+DRY_RUN=false
+for arg in "$@"; do
+ case "$arg" in
+ --quiet) QUIET=true ;;
+ --dry-run) DRY_RUN=true ;;
+ esac
+done
+
+log() {
+ if [ "$QUIET" = false ]; then
+ echo "$1"
+ fi
+}
+
+run() {
+ if [ "$DRY_RUN" = true ]; then
+ log "[dry-run] $*"
+ else
+ "$@"
+ fi
+}
+
+STATS_CASCADE=0
+STATS_MEMORIES=0
+STATS_IMPLICIT=0
+STATS_REPOS_DOCS=0
+STATS_REPOS_WORKFLOWS=0
+STATS_NEW_REPOS=0
+
+# ── 1. Codeium data symlinks ───────────────────────────────────────────────
+log "=== Refreshing Codeium data symlinks ==="
+
+link_if_exists() {
+ local name="$1" target="$2"
+ if [ -d "$target" ] || [ -f "$target" ]; then
+ run ln -sfn "$target" "$ARCHIVE_DIR/$name"
+ log " ✓ $name → $target"
+ else
+ log " ⚠ $name: target not found ($target)"
+ fi
+}
+
+link_if_exists "cascade_conversations" "$CODEIUM_DIR/cascade"
+link_if_exists "memories" "$CODEIUM_DIR/memories"
+link_if_exists "implicit_context" "$CODEIUM_DIR/implicit"
+link_if_exists "code_tracker" "$CODEIUM_DIR/code_tracker"
+link_if_exists "codemaps" "$CODEIUM_DIR/codemaps"
+link_if_exists "database" "$CODEIUM_DIR/database"
+
+# Single files
+for file in user_settings.pb installation_id; do
+ if [ -e "$CODEIUM_DIR/$file" ]; then
+ run ln -sfn "$CODEIUM_DIR/$file" "$ARCHIVE_DIR/$file"
+ log " ✓ $file"
+ fi
+done
+
+# ── 2. App Support symlinks ────────────────────────────────────────────────
+log "=== Refreshing App Support symlinks ==="
+
+run ln -sfn "$APP_SUPPORT_DIR" "$ARCHIVE_DIR/app_data"
+log " ✓ app_data"
+
+if [ -d "$APP_SUPPORT_DIR/User/History" ]; then
+ run ln -sfn "$APP_SUPPORT_DIR/User/History" "$ARCHIVE_DIR/file_edit_history"
+ log " ✓ file_edit_history"
+fi
+if [ -d "$APP_SUPPORT_DIR/User/workspaceStorage" ]; then
+ run ln -sfn "$APP_SUPPORT_DIR/User/workspaceStorage" "$ARCHIVE_DIR/workspace_storage"
+ log " ✓ workspace_storage"
+fi
+if [ -d "$APP_SUPPORT_DIR/User/globalStorage" ]; then
+ run ln -sfn "$APP_SUPPORT_DIR/User/globalStorage" "$ARCHIVE_DIR/global_storage"
+ log " ✓ global_storage"
+fi
+
+# ── 3. Auto-discover repos and copy docs/workflows ────────────────────────
+log "=== Scanning repos for docs/WINDSURF and .windsurf/workflows ==="
+
+run mkdir -p "$ARCHIVE_DIR/repo_docs"
+run mkdir -p "$ARCHIVE_DIR/repo_workflows"
+
+for repo_path in "$REPOS_ROOT"/*/; do
+ repo_name="$(basename "$repo_path")"
+
+ # Copy docs/WINDSURF/ if it exists
+ if [ -d "$repo_path/docs/WINDSURF" ] && [ "$(ls -A "$repo_path/docs/WINDSURF" 2>/dev/null)" ]; then
+ run mkdir -p "$ARCHIVE_DIR/repo_docs/$repo_name"
+ run cp -a "$repo_path/docs/WINDSURF/"* "$ARCHIVE_DIR/repo_docs/$repo_name/"
+ count=$(ls -1 "$repo_path/docs/WINDSURF/" 2>/dev/null | wc -l | tr -d ' ')
+ log " ✓ repo_docs/$repo_name ($count files)"
+ STATS_REPOS_DOCS=$((STATS_REPOS_DOCS + count))
+ fi
+
+ # Copy .windsurf/workflows/ if it exists
+ if [ -d "$repo_path/.windsurf/workflows" ] && [ "$(ls -A "$repo_path/.windsurf/workflows" 2>/dev/null)" ]; then
+ run mkdir -p "$ARCHIVE_DIR/repo_workflows/$repo_name"
+ run cp -a "$repo_path/.windsurf/workflows/"* "$ARCHIVE_DIR/repo_workflows/$repo_name/"
+ count=$(ls -1 "$repo_path/.windsurf/workflows/" 2>/dev/null | wc -l | tr -d ' ')
+ log " ✓ repo_workflows/$repo_name ($count workflows)"
+ STATS_REPOS_WORKFLOWS=$((STATS_REPOS_WORKFLOWS + count))
+ fi
+done
+
+# Clean up repo_docs/repo_workflows dirs for repos that no longer have content
+for dir in "$ARCHIVE_DIR/repo_docs"/*/; do
+ [ -d "$dir" ] || continue
+ repo_name="$(basename "$dir")"
+ if [ ! -d "$REPOS_ROOT/$repo_name/docs/WINDSURF" ]; then
+ log " 🗑 Removing stale repo_docs/$repo_name"
+ [ "$DRY_RUN" = false ] && rm -rf "$dir"
+ fi
+done
+for dir in "$ARCHIVE_DIR/repo_workflows"/*/; do
+ [ -d "$dir" ] || continue
+ repo_name="$(basename "$dir")"
+ if [ ! -d "$REPOS_ROOT/$repo_name/.windsurf/workflows" ]; then
+ log " 🗑 Removing stale repo_workflows/$repo_name"
+ [ "$DRY_RUN" = false ] && rm -rf "$dir"
+ fi
+done
+
+# ── 4. Gather stats ───────────────────────────────────────────────────────
+if [ "$DRY_RUN" = false ]; then
+ STATS_CASCADE=$(ls -1 "$CODEIUM_DIR/cascade/"*.pb 2>/dev/null | wc -l | tr -d ' ')
+ STATS_MEMORIES=$(ls -1 "$CODEIUM_DIR/memories/"*.pb 2>/dev/null | wc -l | tr -d ' ')
+ STATS_IMPLICIT=$(ls -1 "$CODEIUM_DIR/implicit/"*.pb 2>/dev/null | wc -l | tr -d ' ')
+ CASCADE_SIZE=$(du -sh "$CODEIUM_DIR/cascade/" 2>/dev/null | cut -f1 | tr -d ' ')
+ TRACKER_DIRS=$(ls -1 "$CODEIUM_DIR/code_tracker/active/" 2>/dev/null | wc -l | tr -d ' ')
+ HISTORY_DIRS=$(ls -1 "$APP_SUPPORT_DIR/User/History/" 2>/dev/null | wc -l | tr -d ' ')
+ WORKSPACE_DIRS=$(ls -1 "$APP_SUPPORT_DIR/User/workspaceStorage/" 2>/dev/null | wc -l | tr -d ' ')
+ REPO_DOC_REPOS=$(ls -1 "$ARCHIVE_DIR/repo_docs/" 2>/dev/null | wc -l | tr -d ' ')
+ REPO_WF_REPOS=$(ls -1 "$ARCHIVE_DIR/repo_workflows/" 2>/dev/null | wc -l | tr -d ' ')
+fi
+
+# ── 5. Write refresh log ──────────────────────────────────────────────────
+if [ "$DRY_RUN" = false ]; then
+ cat > "$LOG_FILE" <&1)
done
@@ -36,6 +36,7 @@ echo "✨ All repos pushed!"
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
+- learning_ai_clock
## When to use:
diff --git a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_backup-main-branch.md b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_backup-main-branch.md
index e0a51552..85c80e91 100644
--- a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_backup-main-branch.md
+++ b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_backup-main-branch.md
@@ -22,6 +22,7 @@ Run `bash scripts/backup-main.sh` from any repository root
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
+- learning_ai_clock
## Features:
diff --git a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_commit-workspace.md b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_commit-workspace.md
index 27494097..a717422d 100644
--- a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_commit-workspace.md
+++ b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_commit-workspace.md
@@ -12,10 +12,11 @@ Scans all repositories for pending changes and commits them in logical order wit
## What it does:
-1. **Scans** all 3 repos for changes:
+1. **Scans** all 4 repos for changes:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
+ - learning_ai_clock
2. **Analyzes** changed files to determine:
- Commit scope (auth, ci, docs, feat, chore, etc.)
diff --git a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_push-repos.md b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_push-repos.md
index c349e065..97f18e05 100644
--- a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_push-repos.md
+++ b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_push-repos.md
@@ -1,5 +1,5 @@
---
-description: Push local main branch to origin for all 3 workspace repos
+description: Push local main branch to origin for all 4 workspace repos
---
# Push Repos
@@ -9,7 +9,7 @@ Pushes local `main` to `origin/main` for all workspace repositories.
// turbo
```bash
-for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents; do
+for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git push origin main)
done
@@ -17,7 +17,7 @@ done
## What it does:
-1. Iterates over all 3 workspace repos
+1. Iterates over all 4 workspace repos
2. Runs `git push origin main` in each
3. Fails fast if a repo has diverged from remote (resolve with rebase manually)
@@ -26,6 +26,7 @@ done
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
+- learning_ai_clock
## When to use:
diff --git a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_sync-repos.md b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_sync-repos.md
index 619f1200..dd3fca34 100644
--- a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_sync-repos.md
+++ b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_ai_common_plat/repo_sync-repos.md
@@ -1,5 +1,5 @@
---
-description: Pull latest from origin main across all workspace repos
+description: Pull latest from origin main across all 4 workspace repos
---
# Sync Repos
@@ -9,7 +9,7 @@ Pulls the latest changes from `origin/main` for all workspace repositories.
// turbo
```bash
-for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents; do
+for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git pull --ff-only origin main)
done
@@ -17,7 +17,7 @@ done
## What it does:
-1. Iterates over all 3 workspace repos
+1. Iterates over all 4 workspace repos
2. Runs `git pull --ff-only origin main` in each
3. Fails fast if there are local divergent commits (use `git pull --rebase` manually in that case)
@@ -26,6 +26,7 @@ done
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
+- learning_ai_clock
## When to use:
diff --git a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_voice_ai_agent/repo_push-repos.md b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_voice_ai_agent/repo_push-repos.md
index c349e065..97f18e05 100644
--- a/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_voice_ai_agent/repo_push-repos.md
+++ b/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/learning_voice_ai_agent/repo_push-repos.md
@@ -1,5 +1,5 @@
---
-description: Push local main branch to origin for all 3 workspace repos
+description: Push local main branch to origin for all 4 workspace repos
---
# Push Repos
@@ -9,7 +9,7 @@ Pushes local `main` to `origin/main` for all workspace repositories.
// turbo
```bash
-for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents; do
+for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git push origin main)
done
@@ -17,7 +17,7 @@ done
## What it does:
-1. Iterates over all 3 workspace repos
+1. Iterates over all 4 workspace repos
2. Runs `git push origin main` in each
3. Fails fast if a repo has diverged from remote (resolve with rebase manually)
@@ -26,6 +26,7 @@ done
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
+- learning_ai_clock
## When to use: