youmd 0.8.7 → 0.8.13
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.
- package/dist/commands/add.js +1 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/agent.d.ts +4 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +4 -0
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/build.js +2 -2
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/chat.js +1 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +11 -10
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/init.js +5 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/keys.js +8 -1
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/login.js +2 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/machine.d.ts.map +1 -1
- package/dist/commands/machine.js +331 -8
- package/dist/commands/machine.js.map +1 -1
- package/dist/commands/mcp.js +4 -4
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/private.js +2 -2
- package/dist/commands/private.js.map +1 -1
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +31 -0
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/publish.js +1 -1
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/pull.js +1 -1
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.js +1 -1
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/skill.d.ts +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +736 -39
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/stack.d.ts.map +1 -1
- package/dist/commands/stack.js +127 -26
- package/dist/commands/stack.js.map +1 -1
- package/dist/commands/status.js +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +84 -3
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/whoami.js +3 -3
- package/dist/commands/whoami.js.map +1 -1
- package/dist/create.js +0 -0
- package/dist/index.js +40 -30
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +190 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +44 -6
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/config.d.ts +20 -12
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +113 -42
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/daemon.d.ts +2 -0
- package/dist/lib/daemon.d.ts.map +1 -1
- package/dist/lib/daemon.js +28 -19
- package/dist/lib/daemon.js.map +1 -1
- package/dist/lib/machine-bootstrap-prompt.d.ts.map +1 -1
- package/dist/lib/machine-bootstrap-prompt.js +147 -118
- package/dist/lib/machine-bootstrap-prompt.js.map +1 -1
- package/dist/lib/machine-verify.d.ts +51 -0
- package/dist/lib/machine-verify.d.ts.map +1 -1
- package/dist/lib/machine-verify.js +123 -1
- package/dist/lib/machine-verify.js.map +1 -1
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +3 -8
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/portfolio-audit.d.ts.map +1 -1
- package/dist/lib/portfolio-audit.js +2 -1
- package/dist/lib/portfolio-audit.js.map +1 -1
- package/dist/lib/project.d.ts +3 -3
- package/dist/lib/project.d.ts.map +1 -1
- package/dist/lib/project.js +18 -11
- package/dist/lib/project.js.map +1 -1
- package/dist/lib/projectContext.d.ts +10 -9
- package/dist/lib/projectContext.d.ts.map +1 -1
- package/dist/lib/projectContext.js +29 -23
- package/dist/lib/projectContext.js.map +1 -1
- package/dist/lib/realtime-sync.d.ts +26 -0
- package/dist/lib/realtime-sync.d.ts.map +1 -1
- package/dist/lib/realtime-sync.js +51 -7
- package/dist/lib/realtime-sync.js.map +1 -1
- package/dist/lib/render.js +1 -1
- package/dist/lib/render.js.map +1 -1
- package/dist/lib/skill-catalog.d.ts +26 -0
- package/dist/lib/skill-catalog.d.ts.map +1 -1
- package/dist/lib/skill-catalog.js +100 -0
- package/dist/lib/skill-catalog.js.map +1 -1
- package/dist/lib/vault.d.ts +3 -3
- package/dist/lib/vault.d.ts.map +1 -1
- package/dist/lib/vault.js +10 -8
- package/dist/lib/vault.js.map +1 -1
- package/dist/lib/youstack.js +12 -12
- package/dist/lib/youstack.js.map +1 -1
- package/dist/mcp/registry.d.ts +2 -1
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +135 -12
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +135 -7
- package/dist/mcp/server.js.map +1 -1
- package/dist/postinstall.js +3 -2
- package/dist/postinstall.js.map +1 -1
- package/dist/you.js +0 -0
- package/package.json +1 -1
- package/scripts/local-agent-stack-inventory.mjs +1188 -0
- package/scripts/skillstack-sync/README.md +33 -25
- package/scripts/skillstack-sync/bootstrap-new-mac.sh +1 -1
- package/scripts/skillstack-sync/capture-agent-config.sh +8 -1
- package/scripts/skillstack-sync/{com.youmd.context-sync.plist → com.you.context-sync.plist} +3 -3
- package/scripts/skillstack-sync/{com.youmd.identity-sync.plist → com.you.identity-sync.plist} +3 -3
- package/scripts/skillstack-sync/{com.youmd.realtime-sync.plist → com.you.realtime-sync.plist} +3 -3
- package/scripts/skillstack-sync/{com.youmd.skillstack-sync.plist → com.you.skillstack-sync.plist} +3 -3
- package/scripts/skillstack-sync/context-sync.sh +1 -1
- package/scripts/skillstack-sync/install-daemons.sh +20 -6
- package/scripts/skillstack-sync/restore-agent-config.sh +1 -1
- package/scripts/skillstack-sync/sync.sh +1 -1
- package/skills/machine-bootstrap.md +57 -55
|
@@ -28,8 +28,8 @@ Cross-machine sync toolkit for Houston Golden's agent skill/stack setup.
|
|
|
28
28
|
|
|
29
29
|
### Complementary sync planes
|
|
30
30
|
|
|
31
|
-
- **Realtime identity/project plane:** `youmd sync --live --daemon` subscribes to Convex websocket updates, mints only a short-lived sync session token, materializes identity files and installed You.md skills locally, and triggers bounded shared stack/project-context syncs. It never prints or returns raw `.env.local` values.
|
|
32
|
-
- **Identity repair plane:** `youmd sync --daemon` (Convex ↔ local profile, memories, preferences). Automated via `com.
|
|
31
|
+
- **Realtime identity/project/Skill Mesh plane:** `youmd sync --live --daemon` subscribes to Convex websocket updates, mints only a short-lived sync session token, materializes identity files and installed You.md skills locally, and triggers bounded shared stack/project-context plus safe agent-stack inventory syncs. It never prints or returns raw `.env.local` values.
|
|
32
|
+
- **Identity repair plane:** `youmd sync --daemon` (Convex ↔ local profile, memories, preferences). Automated via `com.you.identity-sync` daemon as a timer-based fallback. Daemon mode refreshes local files/skills and skips unsafe lossy pushes instead of forcing over richer server data.
|
|
33
33
|
- **Project-context plane:** `youmd stack context-sync` safely commits and syncs only `AGENTS.md`, `CLAUDE.md`, `project-context/`, and `.claude/` in curated Houston-owned repos. It refuses to merge remote app-code changes.
|
|
34
34
|
- **Env-vault plane:** `cli/scripts/env-vault/restore.sh` for secrets (manual, invoked on new machine); also available as `youmd env restore <vault>`.
|
|
35
35
|
|
|
@@ -42,10 +42,10 @@ cli/scripts/skillstack-sync/
|
|
|
42
42
|
├── sync.sh Core syncer (bash 3.2 compatible)
|
|
43
43
|
├── install-daemons.sh Installs all resident LaunchAgents
|
|
44
44
|
├── bootstrap-new-mac.sh New machine setup script
|
|
45
|
-
├── com.
|
|
46
|
-
├── com.
|
|
47
|
-
├── com.
|
|
48
|
-
├── com.
|
|
45
|
+
├── com.you.realtime-sync.plist LaunchAgent: runs `youmd sync --live --daemon` as a resident websocket + Skill Mesh syncer
|
|
46
|
+
├── com.you.skillstack-sync.plist LaunchAgent: runs `youmd stack sync` every 5 min
|
|
47
|
+
├── com.you.identity-sync.plist LaunchAgent: runs `youmd sync --daemon` every 5 min
|
|
48
|
+
├── com.you.context-sync.plist LaunchAgent: runs `youmd stack context-sync` every 15 min
|
|
49
49
|
└── README.md This file
|
|
50
50
|
```
|
|
51
51
|
|
|
@@ -66,7 +66,7 @@ cli/scripts/skillstack-sync/
|
|
|
66
66
|
→ skips if no changes detected
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
All actions logged to `~/.
|
|
69
|
+
All actions logged to `~/.you/logs/skillstack-sync.log`, with legacy `~/.youmd` logs still readable during migration.
|
|
70
70
|
|
|
71
71
|
### Flags
|
|
72
72
|
|
|
@@ -106,27 +106,35 @@ bash cli/scripts/skillstack-sync/install-daemons.sh
|
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
Installs four LaunchAgents:
|
|
109
|
-
- `com.
|
|
110
|
-
- `com.
|
|
111
|
-
- `com.
|
|
112
|
-
- `com.
|
|
109
|
+
- `com.you.realtime-sync` → runs `youmd sync --live --daemon`, including a bounded `youmd skill inventory --sync` pass every 30 minutes by default
|
|
110
|
+
- `com.you.skillstack-sync` → runs `youmd stack sync`
|
|
111
|
+
- `com.you.identity-sync` → runs `youmd sync --daemon`
|
|
112
|
+
- `com.you.context-sync` → runs `youmd stack context-sync`
|
|
113
|
+
|
|
114
|
+
Skill Mesh inventory knobs:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
YOUMD_LIVE_SYNC_INVENTORY=0 # disable resident inventory sync
|
|
118
|
+
YOUMD_LIVE_SYNC_INVENTORY_INTERVAL_SECONDS=900 # tune cadence; default 1800
|
|
119
|
+
YOU_AGENT_STACK_INVENTORY_DIR=~/.you/agent-stack-inventory
|
|
120
|
+
```
|
|
113
121
|
|
|
114
122
|
Check status:
|
|
115
123
|
```bash
|
|
116
124
|
youmd stack daemon status
|
|
117
125
|
# or directly:
|
|
118
|
-
launchctl list com.
|
|
119
|
-
launchctl list com.
|
|
120
|
-
launchctl list com.
|
|
121
|
-
launchctl list com.
|
|
126
|
+
launchctl list com.you.skillstack-sync
|
|
127
|
+
launchctl list com.you.realtime-sync
|
|
128
|
+
launchctl list com.you.identity-sync
|
|
129
|
+
launchctl list com.you.context-sync
|
|
122
130
|
```
|
|
123
131
|
|
|
124
132
|
Check logs:
|
|
125
133
|
```bash
|
|
126
|
-
tail -f ~/.
|
|
127
|
-
tail -f ~/.
|
|
128
|
-
tail -f ~/.
|
|
129
|
-
tail -f ~/.
|
|
134
|
+
tail -f ~/.you/logs/skillstack-sync.log
|
|
135
|
+
tail -f ~/.you/logs/skillstack-sync.out.log
|
|
136
|
+
tail -f ~/.you/logs/identity-sync.out.log
|
|
137
|
+
tail -f ~/.you/logs/context-sync.log
|
|
130
138
|
```
|
|
131
139
|
|
|
132
140
|
### Uninstall daemons
|
|
@@ -137,12 +145,12 @@ youmd stack daemon uninstall
|
|
|
137
145
|
|
|
138
146
|
Or manually:
|
|
139
147
|
```bash
|
|
140
|
-
launchctl unload ~/Library/LaunchAgents/com.
|
|
141
|
-
launchctl unload ~/Library/LaunchAgents/com.
|
|
142
|
-
launchctl unload ~/Library/LaunchAgents/com.
|
|
143
|
-
rm ~/Library/LaunchAgents/com.
|
|
144
|
-
rm ~/Library/LaunchAgents/com.
|
|
145
|
-
rm ~/Library/LaunchAgents/com.
|
|
148
|
+
launchctl unload ~/Library/LaunchAgents/com.you.skillstack-sync.plist
|
|
149
|
+
launchctl unload ~/Library/LaunchAgents/com.you.identity-sync.plist
|
|
150
|
+
launchctl unload ~/Library/LaunchAgents/com.you.context-sync.plist
|
|
151
|
+
rm ~/Library/LaunchAgents/com.you.skillstack-sync.plist
|
|
152
|
+
rm ~/Library/LaunchAgents/com.you.identity-sync.plist
|
|
153
|
+
rm ~/Library/LaunchAgents/com.you.context-sync.plist
|
|
146
154
|
```
|
|
147
155
|
|
|
148
156
|
---
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# Usage: bash bootstrap-new-mac.sh
|
|
11
11
|
|
|
12
12
|
set -euo pipefail
|
|
13
|
-
export PATH="${HOME}/.youmd/bin:${HOME}/.youmd/npm-global/bin:/opt/homebrew/opt/node@22/bin:/usr/local/opt/node@22/bin:/opt/homebrew/bin:/usr/local/bin:${PATH}"
|
|
13
|
+
export PATH="${HOME}/.you/bin:${HOME}/.you/npm-global/bin:${HOME}/.youmd/bin:${HOME}/.youmd/npm-global/bin:/opt/homebrew/opt/node@22/bin:/usr/local/opt/node@22/bin:/opt/homebrew/bin:/usr/local/bin:${PATH}"
|
|
14
14
|
|
|
15
15
|
AGENT_SHARED="${HOME}/.agent-shared"
|
|
16
16
|
SCISTACK="${HOME}/.claude/scistack"
|
|
@@ -19,7 +19,7 @@ set -euo pipefail
|
|
|
19
19
|
|
|
20
20
|
AGENT_SHARED="${HOME}/.agent-shared"
|
|
21
21
|
DEST="${AGENT_SHARED}/agent-config"
|
|
22
|
-
LOG_DIR="${HOME}/.
|
|
22
|
+
LOG_DIR="${YOU_HOME:-${YOUMD_HOME:-${HOME}/.you}}/logs"
|
|
23
23
|
LOG_FILE="${LOG_DIR}/capture-agent-config.log"
|
|
24
24
|
|
|
25
25
|
DRY_RUN=0
|
|
@@ -83,9 +83,16 @@ capture_plist() {
|
|
|
83
83
|
sed "s|${HOME}|__HOME__|g" "${src}" > "${target}"
|
|
84
84
|
log "captured plist ${label} → agent-config/automations/launchd/${label}.plist"
|
|
85
85
|
}
|
|
86
|
+
capture_plist "com.you.skillstack-sync"
|
|
87
|
+
capture_plist "com.you.identity-sync"
|
|
88
|
+
capture_plist "com.you.context-sync"
|
|
89
|
+
capture_plist "com.you.realtime-sync"
|
|
90
|
+
# Legacy labels are captured only if present so restore audits can identify
|
|
91
|
+
# old hosts, but `youmd stack daemon install` replaces them with com.you.*.
|
|
86
92
|
capture_plist "com.youmd.skillstack-sync"
|
|
87
93
|
capture_plist "com.youmd.identity-sync"
|
|
88
94
|
capture_plist "com.youmd.context-sync"
|
|
95
|
+
capture_plist "com.youmd.realtime-sync"
|
|
89
96
|
capture_plist "com.houstongolden.agent-runtime-guard"
|
|
90
97
|
|
|
91
98
|
if ! is_dry; then
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<plist version="1.0">
|
|
4
4
|
<dict>
|
|
5
5
|
<key>Label</key>
|
|
6
|
-
<string>com.
|
|
6
|
+
<string>com.you.context-sync</string>
|
|
7
7
|
|
|
8
8
|
<key>ProgramArguments</key>
|
|
9
9
|
<array>
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
<false/>
|
|
23
23
|
|
|
24
24
|
<key>StandardOutPath</key>
|
|
25
|
-
<string>__HOME__/.
|
|
25
|
+
<string>__HOME__/.you/logs/context-sync.out.log</string>
|
|
26
26
|
|
|
27
27
|
<key>StandardErrorPath</key>
|
|
28
|
-
<string>__HOME__/.
|
|
28
|
+
<string>__HOME__/.you/logs/context-sync.err.log</string>
|
|
29
29
|
|
|
30
30
|
<key>EnvironmentVariables</key>
|
|
31
31
|
<dict>
|
package/scripts/skillstack-sync/{com.youmd.identity-sync.plist → com.you.identity-sync.plist}
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<plist version="1.0">
|
|
4
4
|
<dict>
|
|
5
5
|
<key>Label</key>
|
|
6
|
-
<string>com.
|
|
6
|
+
<string>com.you.identity-sync</string>
|
|
7
7
|
|
|
8
8
|
<key>ProgramArguments</key>
|
|
9
9
|
<array>
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
<false/>
|
|
23
23
|
|
|
24
24
|
<key>StandardOutPath</key>
|
|
25
|
-
<string>__HOME__/.
|
|
25
|
+
<string>__HOME__/.you/logs/identity-sync.out.log</string>
|
|
26
26
|
|
|
27
27
|
<key>StandardErrorPath</key>
|
|
28
|
-
<string>__HOME__/.
|
|
28
|
+
<string>__HOME__/.you/logs/identity-sync.err.log</string>
|
|
29
29
|
|
|
30
30
|
<key>EnvironmentVariables</key>
|
|
31
31
|
<dict>
|
package/scripts/skillstack-sync/{com.youmd.realtime-sync.plist → com.you.realtime-sync.plist}
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<plist version="1.0">
|
|
4
4
|
<dict>
|
|
5
5
|
<key>Label</key>
|
|
6
|
-
<string>com.
|
|
6
|
+
<string>com.you.realtime-sync</string>
|
|
7
7
|
|
|
8
8
|
<key>ProgramArguments</key>
|
|
9
9
|
<array>
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
<true/>
|
|
20
20
|
|
|
21
21
|
<key>StandardOutPath</key>
|
|
22
|
-
<string>__HOME__/.
|
|
22
|
+
<string>__HOME__/.you/logs/realtime-sync.out.log</string>
|
|
23
23
|
|
|
24
24
|
<key>StandardErrorPath</key>
|
|
25
|
-
<string>__HOME__/.
|
|
25
|
+
<string>__HOME__/.you/logs/realtime-sync.err.log</string>
|
|
26
26
|
|
|
27
27
|
<key>EnvironmentVariables</key>
|
|
28
28
|
<dict>
|
package/scripts/skillstack-sync/{com.youmd.skillstack-sync.plist → com.you.skillstack-sync.plist}
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<plist version="1.0">
|
|
4
4
|
<dict>
|
|
5
5
|
<key>Label</key>
|
|
6
|
-
<string>com.
|
|
6
|
+
<string>com.you.skillstack-sync</string>
|
|
7
7
|
|
|
8
8
|
<key>ProgramArguments</key>
|
|
9
9
|
<array>
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
<false/>
|
|
23
23
|
|
|
24
24
|
<key>StandardOutPath</key>
|
|
25
|
-
<string>__HOME__/.
|
|
25
|
+
<string>__HOME__/.you/logs/skillstack-sync.out.log</string>
|
|
26
26
|
|
|
27
27
|
<key>StandardErrorPath</key>
|
|
28
|
-
<string>__HOME__/.
|
|
28
|
+
<string>__HOME__/.you/logs/skillstack-sync.err.log</string>
|
|
29
29
|
|
|
30
30
|
<key>EnvironmentVariables</key>
|
|
31
31
|
<dict>
|
|
@@ -44,7 +44,7 @@ set -euo pipefail
|
|
|
44
44
|
# Config
|
|
45
45
|
# ---------------------------------------------------------------------------
|
|
46
46
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
47
|
-
LOG_DIR="${HOME}/.
|
|
47
|
+
LOG_DIR="${YOU_HOME:-${YOUMD_HOME:-${HOME}/.you}}/logs"
|
|
48
48
|
LOG_FILE="${LOG_DIR}/context-sync.log"
|
|
49
49
|
|
|
50
50
|
GIT_USER_NAME="${GIT_USER_NAME:-Houston Golden}"
|
|
@@ -10,9 +10,10 @@ set -euo pipefail
|
|
|
10
10
|
|
|
11
11
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
12
12
|
LAUNCH_AGENTS_DIR="${HOME}/Library/LaunchAgents"
|
|
13
|
-
LOG_DIR="${HOME}/.
|
|
13
|
+
LOG_DIR="${YOU_HOME:-${YOUMD_HOME:-${HOME}/.you}}/logs"
|
|
14
14
|
|
|
15
|
-
PLISTS="com.
|
|
15
|
+
PLISTS="com.you.realtime-sync com.you.skillstack-sync com.you.identity-sync com.you.context-sync"
|
|
16
|
+
LEGACY_PLISTS="com.youmd.realtime-sync com.youmd.skillstack-sync com.youmd.identity-sync com.youmd.context-sync"
|
|
16
17
|
|
|
17
18
|
echo "==> Creating log directory: ${LOG_DIR}"
|
|
18
19
|
mkdir -p "${LOG_DIR}"
|
|
@@ -20,6 +21,19 @@ mkdir -p "${LOG_DIR}"
|
|
|
20
21
|
echo "==> Creating LaunchAgents directory: ${LAUNCH_AGENTS_DIR}"
|
|
21
22
|
mkdir -p "${LAUNCH_AGENTS_DIR}"
|
|
22
23
|
|
|
24
|
+
echo "==> Removing legacy com.youmd LaunchAgents if present"
|
|
25
|
+
for label in ${LEGACY_PLISTS}; do
|
|
26
|
+
dst="${LAUNCH_AGENTS_DIR}/${label}.plist"
|
|
27
|
+
if launchctl list "${label}" >/dev/null 2>&1; then
|
|
28
|
+
echo " Unloading legacy ${label}..."
|
|
29
|
+
launchctl unload "${dst}" 2>/dev/null || true
|
|
30
|
+
fi
|
|
31
|
+
if [ -f "${dst}" ]; then
|
|
32
|
+
echo " Removing legacy ${dst}"
|
|
33
|
+
rm -f "${dst}"
|
|
34
|
+
fi
|
|
35
|
+
done
|
|
36
|
+
|
|
23
37
|
for label in ${PLISTS}; do
|
|
24
38
|
src="${SCRIPT_DIR}/${label}.plist"
|
|
25
39
|
dst="${LAUNCH_AGENTS_DIR}/${label}.plist"
|
|
@@ -70,10 +84,10 @@ echo " ${LOG_DIR}/context-sync.out.log (daemon stdout)"
|
|
|
70
84
|
echo " ${LOG_DIR}/context-sync.err.log (daemon stderr)"
|
|
71
85
|
echo ""
|
|
72
86
|
echo "Check daemon status:"
|
|
73
|
-
echo " launchctl list com.
|
|
74
|
-
echo " launchctl list com.
|
|
75
|
-
echo " launchctl list com.
|
|
76
|
-
echo " launchctl list com.
|
|
87
|
+
echo " launchctl list com.you.realtime-sync"
|
|
88
|
+
echo " launchctl list com.you.skillstack-sync"
|
|
89
|
+
echo " launchctl list com.you.identity-sync"
|
|
90
|
+
echo " launchctl list com.you.context-sync"
|
|
77
91
|
echo ""
|
|
78
92
|
echo "To uninstall:"
|
|
79
93
|
for label in ${PLISTS}; do
|
|
@@ -17,7 +17,7 @@ set -euo pipefail
|
|
|
17
17
|
# Config
|
|
18
18
|
# ---------------------------------------------------------------------------
|
|
19
19
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
20
|
-
LOG_DIR="${HOME}/.
|
|
20
|
+
LOG_DIR="${YOU_HOME:-${YOUMD_HOME:-${HOME}/.you}}/logs"
|
|
21
21
|
LOG_FILE="${LOG_DIR}/skillstack-sync.log"
|
|
22
22
|
|
|
23
23
|
GIT_USER_NAME="${GIT_USER_NAME:-Houston Golden}"
|
|
@@ -26,7 +26,7 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
26
26
|
## Default Flow
|
|
27
27
|
|
|
28
28
|
1. Confirm whether this looks like a fresh machine:
|
|
29
|
-
- `
|
|
29
|
+
- `you status`
|
|
30
30
|
- `test -d ~/Desktop/CODE_YOU && find ~/Desktop/CODE_YOU -maxdepth 1 -type d | wc -l`
|
|
31
31
|
- `git config user.name && git config user.email`
|
|
32
32
|
- `gh auth status`
|
|
@@ -34,16 +34,17 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
34
34
|
for Claude Code or Codex on the new machine, generate it first:
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
|
|
37
|
+
you machine prompt --root ~/Desktop/CODE_YOU --days 30 --limit 80 --require-env-vault
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
If the web dashboard minted a scoped bootstrap key, the generated prompt may
|
|
41
|
-
include `YOUMD_API_KEY
|
|
41
|
+
include `YOU_API_KEY` (legacy `YOUMD_API_KEY` still works). Treat that prompt as secret-bearing local setup
|
|
42
42
|
material and do not paste it into public chats, tickets, or docs.
|
|
43
43
|
Fresh-machine bootstrap keys must include the `vault` scope so the trusted
|
|
44
44
|
device can pull encrypted Secret Vault snapshots after login.
|
|
45
45
|
For bounded proof runs on a clean local root, add
|
|
46
|
-
`--max-clone-projects 2` or set `
|
|
46
|
+
`--max-clone-projects 2` or set `YOU_MAX_CLONE_PROJECTS=2`; legacy
|
|
47
|
+
`YOUMD_MAX_CLONE_PROJECTS=2` still works. Omit that cap
|
|
47
48
|
on the real new machine.
|
|
48
49
|
|
|
49
50
|
3. If You.md is not installed on the new machine, install it:
|
|
@@ -55,19 +56,19 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
55
56
|
4. Authenticate and hydrate the local brain:
|
|
56
57
|
|
|
57
58
|
```bash
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
you login --key "$YOU_API_KEY" # or: you login
|
|
60
|
+
you pull
|
|
61
|
+
you sync
|
|
61
62
|
```
|
|
62
63
|
|
|
63
64
|
5. Restore shared agent skills, stack config, and host adapters:
|
|
64
65
|
|
|
65
66
|
```bash
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
you machine setup
|
|
68
|
+
you skill install all
|
|
69
|
+
you skill sync
|
|
70
|
+
you skill link codex
|
|
71
|
+
you skill link claude
|
|
71
72
|
```
|
|
72
73
|
|
|
73
74
|
6. Hydrate the portfolio graph from You.md/GitHub records before cloning, then
|
|
@@ -75,18 +76,18 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
75
76
|
and syncing truly active 30-day projects first:
|
|
76
77
|
|
|
77
78
|
```bash
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
you project portfolio-hydrate --root ~/Desktop/CODE_YOU --days 30 --limit 80
|
|
80
|
+
you machine projects --root ~/Desktop/CODE_YOU --days 30 --recent-only --dry-run
|
|
81
|
+
you machine projects --root ~/Desktop/CODE_YOU --days 30 --recent-only
|
|
81
82
|
```
|
|
82
83
|
|
|
83
84
|
7. Ask whether Houston wants to expand the workspace to all active projects
|
|
84
85
|
from the last 90 days before calling the full project clone set complete:
|
|
85
86
|
|
|
86
87
|
```bash
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
you project portfolio-hydrate --root ~/Desktop/CODE_YOU --days 90 --limit 80
|
|
89
|
+
you machine projects --root ~/Desktop/CODE_YOU --days 90 --recent-only --dry-run
|
|
90
|
+
you machine projects --root ~/Desktop/CODE_YOU --days 90 --recent-only
|
|
90
91
|
```
|
|
91
92
|
|
|
92
93
|
8. If GitHub auth is missing, help the user log in and rerun only the project
|
|
@@ -94,7 +95,7 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
94
95
|
|
|
95
96
|
```bash
|
|
96
97
|
gh auth login
|
|
97
|
-
|
|
98
|
+
you machine projects --root ~/Desktop/CODE_YOU --days 30 --recent-only
|
|
98
99
|
```
|
|
99
100
|
|
|
100
101
|
9. After projects are cloned and any encrypted env vault is restored, hydrate the
|
|
@@ -102,19 +103,20 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
102
103
|
evidence becomes visible to future agents:
|
|
103
104
|
|
|
104
105
|
```bash
|
|
105
|
-
|
|
106
|
+
you project portfolio-hydrate --root ~/Desktop/CODE_YOU --days 30 --limit 80
|
|
106
107
|
```
|
|
107
108
|
|
|
108
109
|
10. Run the secret-safe readiness audit and sync the proof summary:
|
|
109
110
|
|
|
110
111
|
```bash
|
|
111
|
-
|
|
112
|
+
you machine verify --root ~/Desktop/CODE_YOU --max-projects 80 --write-report --sync-report
|
|
112
113
|
```
|
|
113
114
|
|
|
114
115
|
This checks cloned directories, git remotes, package managers, standard
|
|
115
116
|
scripts, `.env.local` presence, `.env.example` presence, root agent docs, and
|
|
116
117
|
`project-context/` presence. It writes a secret-safe JSON proof artifact to
|
|
117
|
-
`~/.
|
|
118
|
+
`~/.you/machine-reports/latest.json` with legacy `~/.youmd` fallback during
|
|
119
|
+
migration, and syncs only the compact proof
|
|
118
120
|
summary to the You.md machine dashboard. It does not read secret values,
|
|
119
121
|
upload raw logs, or launch every dev server.
|
|
120
122
|
|
|
@@ -122,7 +124,7 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
122
124
|
enough time/CPU, run bounded package checks and dev-server probes:
|
|
123
125
|
|
|
124
126
|
```bash
|
|
125
|
-
|
|
127
|
+
you machine verify --root ~/Desktop/CODE_YOU --max-projects 80 --install-deps --run-checks --probe-servers --write-report --sync-report
|
|
126
128
|
```
|
|
127
129
|
|
|
128
130
|
The default check scripts are `typecheck`, `lint`, `test`, and `build`.
|
|
@@ -134,11 +136,11 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
134
136
|
|
|
135
137
|
- Use the You.md CLI and You Agent yourself before asking Houston to do manual
|
|
136
138
|
work. Prefer deterministic commands for setup and proof:
|
|
137
|
-
`
|
|
138
|
-
`
|
|
139
|
-
`
|
|
140
|
-
`
|
|
141
|
-
`
|
|
139
|
+
`you status`, `you whoami`, `you pull`, `you sync`,
|
|
140
|
+
`you machine prompt`, `you machine setup`,
|
|
141
|
+
`you skill install all`, `you skill sync`,
|
|
142
|
+
`you env vault list`, `you env vault pull`,
|
|
143
|
+
`you project portfolio-hydrate`, `you machine verify`,
|
|
142
144
|
`youmd agent status`, and `youmd agent inbox`.
|
|
143
145
|
- Report setup milestones to Houston's other trusted Macs with the realtime
|
|
144
146
|
agent bus instead of relying on clipboard/manual status relays:
|
|
@@ -148,7 +150,7 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
148
150
|
```
|
|
149
151
|
|
|
150
152
|
This writes through Convex realtime and the receiving daemon materializes it
|
|
151
|
-
into `~/.
|
|
153
|
+
into `~/.you/agent-bus/inbox.json` without reading or exposing `.env.local`
|
|
152
154
|
values.
|
|
153
155
|
- Use `you` / `youmd chat` when you need the You Agent to synthesize context,
|
|
154
156
|
route a natural-language request, or produce the setup artifact, then turn the
|
|
@@ -157,8 +159,8 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
157
159
|
command, verify the result, and report concise proof.
|
|
158
160
|
- Interrupt Houston only for true human-gated steps: GitHub browser auth,
|
|
159
161
|
source-Mac Secret Vault share if no trusted-device envelope exists yet, local
|
|
160
|
-
vault passphrase/Keychain only when `
|
|
161
|
-
or `
|
|
162
|
+
vault passphrase/Keychain only when `YOU_ALLOW_LOCAL_ENV_VAULT_FALLBACK=1`
|
|
163
|
+
or `YOU_ENV_VAULT` is explicitly provided, npm OTP, OS permissions, or the
|
|
162
164
|
explicit 90-day project expansion choice.
|
|
163
165
|
- If the installed CLI is stale, run the curl installer/update path first, then
|
|
164
166
|
retry the You.md command. Tell Houston when npm publish is needed for
|
|
@@ -175,7 +177,7 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
175
177
|
- Use the You.md Portfolio Graph as the strategic source of truth, then merge
|
|
176
178
|
authenticated GitHub recent-repo data and local bundle project records so repo
|
|
177
179
|
names and URLs stay cloneable.
|
|
178
|
-
- `
|
|
180
|
+
- `you machine projects` should fetch the persisted owner graph through the
|
|
179
181
|
You.md API when authenticated. If that graph is unavailable, fall back to the
|
|
180
182
|
local bundle plus authenticated GitHub scan and say so.
|
|
181
183
|
- Clone with `gh repo clone owner/repo <target>` when `gh` is authenticated; otherwise fall back to `git clone`.
|
|
@@ -183,7 +185,7 @@ You.md is the brain. The new machine should become a runnable local agent workst
|
|
|
183
185
|
- Never print secrets. If `.env.local` files are needed, use You.md Secret Vault
|
|
184
186
|
or the shared encrypted env backup/restore path. Never paste raw env values
|
|
185
187
|
into chat.
|
|
186
|
-
- After cloning, initialize missing per-repo agent context with `
|
|
188
|
+
- After cloning, initialize missing per-repo agent context with `you skill init-project` from inside that repo.
|
|
187
189
|
|
|
188
190
|
## Secret-Safe Env Transfer
|
|
189
191
|
|
|
@@ -192,22 +194,22 @@ Audit local project env coverage before backup:
|
|
|
192
194
|
```bash
|
|
193
195
|
~/.agent-shared/bin/env-key-audit.py --root ~/Desktop/CODE_2025
|
|
194
196
|
~/.agent-shared/bin/env-secure-backup.sh --preflight
|
|
195
|
-
|
|
197
|
+
you env backup --root ~/Desktop/CODE_2025 --preflight
|
|
196
198
|
```
|
|
197
199
|
|
|
198
200
|
Primary path: from the old/source machine, create an encrypted archive and push
|
|
199
201
|
only the ciphertext plus safe manifest metadata to You.md Secret Vault:
|
|
200
202
|
|
|
201
203
|
```bash
|
|
202
|
-
|
|
203
|
-
|
|
204
|
+
you env vault push --root ~/Desktop/CODE_2025 --out ~/Desktop/youmd-env-vault
|
|
205
|
+
you env vault list
|
|
204
206
|
```
|
|
205
207
|
|
|
206
208
|
On the new machine, register its local Secret Vault device key. The private key
|
|
207
|
-
stays under `~/.
|
|
209
|
+
stays under `~/.you/secret-vault/devices/`; only the public key is synced:
|
|
208
210
|
|
|
209
211
|
```bash
|
|
210
|
-
|
|
212
|
+
you env vault device-register
|
|
211
213
|
```
|
|
212
214
|
|
|
213
215
|
Back on the old/source machine, share local decrypt access to trusted devices.
|
|
@@ -215,19 +217,19 @@ This stores per-device encrypted passphrase envelopes; it does not upload raw en
|
|
|
215
217
|
values:
|
|
216
218
|
|
|
217
219
|
```bash
|
|
218
|
-
|
|
220
|
+
you env vault share
|
|
219
221
|
```
|
|
220
222
|
|
|
221
223
|
On the new machine, pull the latest encrypted account snapshot and restore into
|
|
222
224
|
already-cloned project directories without clobbering local agent auth:
|
|
223
225
|
|
|
224
226
|
```bash
|
|
225
|
-
|
|
227
|
+
you env vault pull --restore --root ~/Desktop/CODE_YOU --map-existing --existing-only --skip-agent-auth
|
|
226
228
|
```
|
|
227
229
|
|
|
228
230
|
If `pull --restore` says no trusted-device envelope exists for this Mac, do not
|
|
229
231
|
ask Houston for raw secrets. Confirm `device-register` ran on the new Mac, run
|
|
230
|
-
`
|
|
232
|
+
`you env vault share` on the source Mac, then rerun `pull --restore`.
|
|
231
233
|
|
|
232
234
|
Fallback path: create an encrypted archive from the old machine in an
|
|
233
235
|
interactive macOS terminal and transfer the encrypted file by iCloud, AirDrop,
|
|
@@ -235,15 +237,15 @@ USB, or private password-manager attachment:
|
|
|
235
237
|
|
|
236
238
|
```bash
|
|
237
239
|
open ~/.agent-shared/bin/env-backup-interactive.command
|
|
238
|
-
|
|
240
|
+
you env backup --root ~/Desktop/CODE_2025 --out ~/Desktop/youmd-env-vault
|
|
239
241
|
```
|
|
240
242
|
|
|
241
243
|
On the new machine, list the encrypted archive by path only before restore:
|
|
242
244
|
|
|
243
245
|
```bash
|
|
244
246
|
~/.agent-shared/bin/env-secure-restore.sh --archive ~/Desktop/env-local-backup.tar.gz.gpg --list
|
|
245
|
-
|
|
246
|
-
|
|
247
|
+
you env restore ~/Desktop/env-local-backup.tar.gz.gpg --root ~/Desktop/CODE_YOU --list --map-existing --existing-only --skip-agent-auth
|
|
248
|
+
you env restore ~/Desktop/env-local-backup.tar.gz.gpg --root ~/Desktop/CODE_YOU --map-existing --existing-only --skip-agent-auth
|
|
247
249
|
```
|
|
248
250
|
|
|
249
251
|
If a headless agent still cannot decrypt after device sharing, then and only then
|
|
@@ -261,55 +263,55 @@ unset PW && echo "stored in Keychain"
|
|
|
261
263
|
Dry-run the project layout:
|
|
262
264
|
|
|
263
265
|
```bash
|
|
264
|
-
|
|
266
|
+
you machine projects --root ~/Desktop/CODE_YOU --days 30 --recent-only --dry-run
|
|
265
267
|
```
|
|
266
268
|
|
|
267
269
|
Create directories only, without cloning:
|
|
268
270
|
|
|
269
271
|
```bash
|
|
270
|
-
|
|
272
|
+
you machine projects --root ~/Desktop/CODE_YOU --no-clone
|
|
271
273
|
```
|
|
272
274
|
|
|
273
275
|
Audit cloned readiness:
|
|
274
276
|
|
|
275
277
|
```bash
|
|
276
|
-
|
|
278
|
+
you machine verify --root ~/Desktop/CODE_YOU --max-projects 80 --write-report --sync-report
|
|
277
279
|
```
|
|
278
280
|
|
|
279
281
|
Run bounded package checks:
|
|
280
282
|
|
|
281
283
|
```bash
|
|
282
|
-
|
|
284
|
+
you machine verify --root ~/Desktop/CODE_YOU --run-checks --max-check-projects 8 --check-timeout-ms 120000
|
|
283
285
|
```
|
|
284
286
|
|
|
285
287
|
Run clean-host dependency installs and localhost dev-server probes:
|
|
286
288
|
|
|
287
289
|
```bash
|
|
288
|
-
|
|
290
|
+
you machine verify --root ~/Desktop/CODE_YOU --install-deps --probe-servers --write-report --sync-report
|
|
289
291
|
```
|
|
290
292
|
|
|
291
293
|
Include older projects without prompts:
|
|
292
294
|
|
|
293
295
|
```bash
|
|
294
|
-
|
|
296
|
+
you machine projects --root ~/Desktop/CODE_YOU --yes
|
|
295
297
|
```
|
|
296
298
|
|
|
297
299
|
Generate the copy/paste prompt for a new Claude Code or Codex terminal:
|
|
298
300
|
|
|
299
301
|
```bash
|
|
300
|
-
|
|
302
|
+
you machine prompt --root ~/Desktop/CODE_YOU --days 30 --limit 80 --require-env-vault
|
|
301
303
|
```
|
|
302
304
|
|
|
303
305
|
Generate the same prompt but cap clones for a clean-host proof run:
|
|
304
306
|
|
|
305
307
|
```bash
|
|
306
|
-
|
|
308
|
+
you machine prompt --root /tmp/you-clean-host-CODE_YOU --days 30 --limit 80 --max-clone-projects 2 --require-env-vault
|
|
307
309
|
```
|
|
308
310
|
|
|
309
311
|
Fetch the secret-safe project graph directly:
|
|
310
312
|
|
|
311
313
|
```bash
|
|
312
|
-
curl -H "Authorization: Bearer $
|
|
314
|
+
curl -H "Authorization: Bearer $YOU_API_KEY" https://you.md/api/v1/me/portfolio/graph
|
|
313
315
|
```
|
|
314
316
|
|
|
315
317
|
## Done Means
|
|
@@ -321,9 +323,9 @@ curl -H "Authorization: Bearer $YOUMD_API_KEY" https://you.md/api/v1/me/portfoli
|
|
|
321
323
|
- Active GitHub-backed project repos are cloned into matching repo-name directories.
|
|
322
324
|
- The clone plan visibly used the persisted portfolio graph, authenticated
|
|
323
325
|
GitHub recent repos, and local bundle records with source counts.
|
|
324
|
-
- `
|
|
326
|
+
- `you machine verify` reports git/package/env/agent-doc/project-context
|
|
325
327
|
readiness for the cloned workspace without reading `.env.local` values and
|
|
326
|
-
writes `~/.
|
|
328
|
+
writes `~/.you/machine-reports/latest.json`.
|
|
327
329
|
- `--sync-report` creates or updates an owner-gated You.md machine proof row
|
|
328
330
|
that the dashboard can show across computers.
|
|
329
331
|
- If `--run-checks` was requested, bounded package checks ran with project and
|