@wipcomputer/wip-ldm-os 0.2.1
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/README.md +128 -0
- package/SKILL.md +162 -0
- package/bin/ldm.mjs +671 -0
- package/bin/scaffold.sh +97 -0
- package/catalog.json +95 -0
- package/lib/deploy.mjs +697 -0
- package/lib/detect.mjs +130 -0
- package/package.json +35 -0
- package/src/boot/README.md +61 -0
- package/src/boot/boot-config.json +65 -0
- package/src/boot/boot-hook.mjs +242 -0
- package/src/boot/install-cli.mjs +27 -0
- package/src/boot/installer.mjs +279 -0
- package/templates/cc/CONTEXT.md +18 -0
- package/templates/cc/REFERENCE.md +22 -0
- package/templates/cc/config.json +14 -0
- package/templates/config.json +5 -0
package/bin/scaffold.sh
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# wip-ldm-os/bin/scaffold.sh
|
|
3
|
+
# Scaffolds ~/.ldm/agents/cc/ for Claude Code.
|
|
4
|
+
# Idempotent: skips existing files, never overwrites.
|
|
5
|
+
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
LDM_HOME="${HOME}/.ldm"
|
|
9
|
+
CC_HOME="${LDM_HOME}/agents/cc"
|
|
10
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
11
|
+
TEMPLATES="${SCRIPT_DIR}/templates/cc"
|
|
12
|
+
|
|
13
|
+
# Existing soul files
|
|
14
|
+
CC_DOCS="${HOME}/Documents/wipcomputer--mac-mini-01/staff/Parker/Claude Code - Mini/documents"
|
|
15
|
+
CC_SOUL="${CC_DOCS}/cc-soul"
|
|
16
|
+
|
|
17
|
+
echo "=== LDM OS Scaffold ==="
|
|
18
|
+
echo "Target: ${LDM_HOME}"
|
|
19
|
+
echo ""
|
|
20
|
+
|
|
21
|
+
# Create directory tree
|
|
22
|
+
dirs=(
|
|
23
|
+
"${CC_HOME}/memory/daily"
|
|
24
|
+
"${CC_HOME}/memory/journals"
|
|
25
|
+
"${LDM_HOME}/shared/dream-weaver"
|
|
26
|
+
"${LDM_HOME}/shared/boot"
|
|
27
|
+
"${LDM_HOME}/bin"
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
for dir in "${dirs[@]}"; do
|
|
31
|
+
if [ ! -d "$dir" ]; then
|
|
32
|
+
mkdir -p "$dir"
|
|
33
|
+
echo " created: ${dir#$HOME/}"
|
|
34
|
+
fi
|
|
35
|
+
done
|
|
36
|
+
|
|
37
|
+
# Copy file only if target doesn't exist
|
|
38
|
+
safe_copy() {
|
|
39
|
+
local src="$1"
|
|
40
|
+
local dst="$2"
|
|
41
|
+
local label="$3"
|
|
42
|
+
if [ ! -f "$dst" ]; then
|
|
43
|
+
if [ -f "$src" ]; then
|
|
44
|
+
cp "$src" "$dst"
|
|
45
|
+
echo " copied: ${label}"
|
|
46
|
+
else
|
|
47
|
+
echo " MISSING: ${src} (skipping ${label})"
|
|
48
|
+
fi
|
|
49
|
+
else
|
|
50
|
+
echo " exists: ${label} (skipped)"
|
|
51
|
+
fi
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
# Write file only if target doesn't exist
|
|
55
|
+
safe_write() {
|
|
56
|
+
local dst="$1"
|
|
57
|
+
local src="$2"
|
|
58
|
+
local label="$3"
|
|
59
|
+
if [ ! -f "$dst" ]; then
|
|
60
|
+
cp "$src" "$dst"
|
|
61
|
+
echo " seeded: ${label}"
|
|
62
|
+
else
|
|
63
|
+
echo " exists: ${label} (skipped)"
|
|
64
|
+
fi
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
echo ""
|
|
68
|
+
echo "--- Agent: cc ---"
|
|
69
|
+
|
|
70
|
+
# Soul files from existing cc-soul directory
|
|
71
|
+
safe_copy "${CC_SOUL}/IDENTITY.md" "${CC_HOME}/IDENTITY.md" "IDENTITY.md"
|
|
72
|
+
safe_copy "${CC_SOUL}/SOUL.md" "${CC_HOME}/SOUL.md" "SOUL.md"
|
|
73
|
+
|
|
74
|
+
# Template files
|
|
75
|
+
safe_write "${CC_HOME}/CONTEXT.md" "${TEMPLATES}/CONTEXT.md" "CONTEXT.md"
|
|
76
|
+
safe_write "${CC_HOME}/REFERENCE.md" "${TEMPLATES}/REFERENCE.md" "REFERENCE.md"
|
|
77
|
+
safe_write "${CC_HOME}/config.json" "${TEMPLATES}/config.json" "config.json"
|
|
78
|
+
|
|
79
|
+
# Global config
|
|
80
|
+
safe_write "${LDM_HOME}/config.json" "${SCRIPT_DIR}/templates/config.json" "global config.json"
|
|
81
|
+
|
|
82
|
+
# Copy existing journals
|
|
83
|
+
if [ -d "${CC_DOCS}/journals" ]; then
|
|
84
|
+
echo ""
|
|
85
|
+
echo "--- Copying existing journals ---"
|
|
86
|
+
for journal in "${CC_DOCS}/journals/"*.md; do
|
|
87
|
+
[ -f "$journal" ] || continue
|
|
88
|
+
name="$(basename "$journal")"
|
|
89
|
+
safe_copy "$journal" "${CC_HOME}/memory/journals/${name}" "journals/${name}"
|
|
90
|
+
done
|
|
91
|
+
fi
|
|
92
|
+
|
|
93
|
+
echo ""
|
|
94
|
+
echo "=== Scaffold complete ==="
|
|
95
|
+
echo "Home: ${CC_HOME}"
|
|
96
|
+
echo ""
|
|
97
|
+
echo "Next: populate CONTEXT.md with current state"
|
package/catalog.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"components": [
|
|
4
|
+
{
|
|
5
|
+
"id": "memory-crystal",
|
|
6
|
+
"name": "Memory Crystal",
|
|
7
|
+
"description": "Persistent memory for your AI. Search, capture, consolidation.",
|
|
8
|
+
"npm": "memory-crystal",
|
|
9
|
+
"repo": "wipcomputer/memory-crystal",
|
|
10
|
+
"recommended": true,
|
|
11
|
+
"status": "stable",
|
|
12
|
+
"postInstall": "crystal doctor"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "wip-ai-devops-toolbox",
|
|
16
|
+
"name": "AI DevOps Toolbox",
|
|
17
|
+
"description": "Release pipeline, license compliance, repo management, identity file protection.",
|
|
18
|
+
"npm": "@wipcomputer/universal-installer",
|
|
19
|
+
"repo": "wipcomputer/wip-ai-devops-toolbox",
|
|
20
|
+
"recommended": false,
|
|
21
|
+
"status": "stable",
|
|
22
|
+
"postInstall": null
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "wip-1password",
|
|
26
|
+
"name": "1Password",
|
|
27
|
+
"description": "1Password secrets for AI agents.",
|
|
28
|
+
"npm": null,
|
|
29
|
+
"repo": "wipcomputer/wip-1password",
|
|
30
|
+
"recommended": false,
|
|
31
|
+
"status": "stable",
|
|
32
|
+
"postInstall": null
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "wip-markdown-viewer",
|
|
36
|
+
"name": "Markdown Viewer",
|
|
37
|
+
"description": "Live markdown viewer for AI pair-editing. Updates render instantly in any browser.",
|
|
38
|
+
"npm": "@wipcomputer/markdown-viewer",
|
|
39
|
+
"repo": "wipcomputer/wip-markdown-viewer",
|
|
40
|
+
"recommended": false,
|
|
41
|
+
"status": "stable",
|
|
42
|
+
"postInstall": null
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "wip-xai-grok",
|
|
46
|
+
"name": "xAI Grok",
|
|
47
|
+
"description": "xAI Grok API. Search the web, search X, generate images, generate video.",
|
|
48
|
+
"npm": null,
|
|
49
|
+
"repo": "wipcomputer/wip-xai-grok",
|
|
50
|
+
"recommended": false,
|
|
51
|
+
"status": "stable",
|
|
52
|
+
"postInstall": null
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "wip-xai-x",
|
|
56
|
+
"name": "X Platform",
|
|
57
|
+
"description": "X Platform API. Read posts, search tweets, post, upload media.",
|
|
58
|
+
"npm": null,
|
|
59
|
+
"repo": "wipcomputer/wip-xai-x",
|
|
60
|
+
"recommended": false,
|
|
61
|
+
"status": "stable",
|
|
62
|
+
"postInstall": null
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "openclaw",
|
|
66
|
+
"name": "OpenClaw",
|
|
67
|
+
"description": "AI agent platform. Run AI agents 24/7 with identity, memory, and tool access.",
|
|
68
|
+
"npm": null,
|
|
69
|
+
"repo": "openclaw/openclaw",
|
|
70
|
+
"recommended": false,
|
|
71
|
+
"status": "stable",
|
|
72
|
+
"postInstall": null
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "dream-weaver-protocol",
|
|
76
|
+
"name": "Dream Weaver Protocol",
|
|
77
|
+
"description": "Memory consolidation protocol for AI agents with bounded context windows. A practical guide for remembering memories.",
|
|
78
|
+
"npm": null,
|
|
79
|
+
"repo": "wipcomputer/dream-weaver-protocol",
|
|
80
|
+
"recommended": false,
|
|
81
|
+
"status": "stable",
|
|
82
|
+
"postInstall": null
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "wip-bridge",
|
|
86
|
+
"name": "Bridge",
|
|
87
|
+
"description": "Cross-platform agent bridge. Enables Claude Code CLI to talk to OpenClaw CLI without a human in the middle.",
|
|
88
|
+
"npm": null,
|
|
89
|
+
"repo": "wipcomputer/wip-bridge",
|
|
90
|
+
"recommended": false,
|
|
91
|
+
"status": "stable",
|
|
92
|
+
"postInstall": null
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|