@wipcomputer/wip-ldm-os 0.4.58 → 0.4.60
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/SKILL.md +1 -1
- package/bin/ldm.js +29 -5
- package/catalog.json +1 -1
- package/package.json +1 -1
- package/shared/launchagents/ai.openclaw.ldm-backup.plist +31 -0
package/SKILL.md
CHANGED
|
@@ -9,7 +9,7 @@ license: MIT
|
|
|
9
9
|
compatibility: Requires git, npm, node. Node.js 18+.
|
|
10
10
|
metadata:
|
|
11
11
|
display-name: "LDM OS"
|
|
12
|
-
version: "0.4.
|
|
12
|
+
version: "0.4.60"
|
|
13
13
|
homepage: "https://github.com/wipcomputer/wip-ldm-os"
|
|
14
14
|
author: "Parker Todd Brooks"
|
|
15
15
|
category: infrastructure
|
package/bin/ldm.js
CHANGED
|
@@ -594,6 +594,30 @@ async function cmdInit() {
|
|
|
594
594
|
} catch {}
|
|
595
595
|
}
|
|
596
596
|
|
|
597
|
+
// Deploy LaunchAgents to ~/Library/LaunchAgents/
|
|
598
|
+
const launchSrc = join(__dirname, '..', 'shared', 'launchagents');
|
|
599
|
+
const launchDest = join(HOME, 'Library', 'LaunchAgents');
|
|
600
|
+
if (existsSync(launchSrc) && existsSync(launchDest)) {
|
|
601
|
+
let launchCount = 0;
|
|
602
|
+
for (const file of readdirSync(launchSrc)) {
|
|
603
|
+
if (!file.endsWith('.plist')) continue;
|
|
604
|
+
const src = join(launchSrc, file);
|
|
605
|
+
const dest = join(launchDest, file);
|
|
606
|
+
const srcContent = readFileSync(src, 'utf8');
|
|
607
|
+
const destContent = existsSync(dest) ? readFileSync(dest, 'utf8') : '';
|
|
608
|
+
if (srcContent !== destContent) {
|
|
609
|
+
// Unload old, write new, load new
|
|
610
|
+
try { execSync(`launchctl unload "${dest}" 2>/dev/null`, { stdio: 'pipe' }); } catch {}
|
|
611
|
+
cpSync(src, dest);
|
|
612
|
+
try { execSync(`launchctl load "${dest}" 2>/dev/null`, { stdio: 'pipe' }); } catch {}
|
|
613
|
+
launchCount++;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
if (launchCount > 0) {
|
|
617
|
+
console.log(` + ${launchCount} LaunchAgent(s) deployed to ~/Library/LaunchAgents/`);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
|
|
597
621
|
console.log('');
|
|
598
622
|
console.log(` LDM OS v${PKG_VERSION} initialized at ${LDM_ROOT}`);
|
|
599
623
|
console.log('');
|
|
@@ -2703,7 +2727,7 @@ async function main() {
|
|
|
2703
2727
|
|
|
2704
2728
|
if (sub === '--help' || sub === '-h') {
|
|
2705
2729
|
console.log(`
|
|
2706
|
-
ldm worktree add <branch> Create worktree in
|
|
2730
|
+
ldm worktree add <branch> Create worktree in .worktrees/ (auto-detects repo)
|
|
2707
2731
|
ldm worktree list List all worktrees across repos
|
|
2708
2732
|
ldm worktree clean Prune worktrees for merged branches
|
|
2709
2733
|
ldm worktree remove <path> Remove a specific worktree
|
|
@@ -2732,7 +2756,7 @@ async function main() {
|
|
|
2732
2756
|
|
|
2733
2757
|
const repoName = basename(repoRoot);
|
|
2734
2758
|
const branchSuffix = branchName.replace(/\//g, '--');
|
|
2735
|
-
const worktreesDir = join(dirname(repoRoot), '
|
|
2759
|
+
const worktreesDir = join(dirname(repoRoot), '.worktrees');
|
|
2736
2760
|
const worktreePath = join(worktreesDir, `${repoName}--${branchSuffix}`);
|
|
2737
2761
|
|
|
2738
2762
|
mkdirSync(worktreesDir, { recursive: true });
|
|
@@ -2777,14 +2801,14 @@ async function main() {
|
|
|
2777
2801
|
}
|
|
2778
2802
|
} catch {}
|
|
2779
2803
|
|
|
2780
|
-
// Also check
|
|
2781
|
-
const worktreesDir = join(dirname(process.cwd()), '
|
|
2804
|
+
// Also check .worktrees/ dir
|
|
2805
|
+
const worktreesDir = join(dirname(process.cwd()), '.worktrees');
|
|
2782
2806
|
if (existsSync(worktreesDir)) {
|
|
2783
2807
|
try {
|
|
2784
2808
|
const entries = readdirSync(worktreesDir, { withFileTypes: true })
|
|
2785
2809
|
.filter(d => d.isDirectory());
|
|
2786
2810
|
if (entries.length > 0) {
|
|
2787
|
-
console.log(`
|
|
2811
|
+
console.log(` .worktrees/:`);
|
|
2788
2812
|
for (const d of entries) {
|
|
2789
2813
|
console.log(` ${d.name}`);
|
|
2790
2814
|
}
|
package/catalog.json
CHANGED
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
"id": "tavily",
|
|
287
287
|
"name": "Tavily",
|
|
288
288
|
"description": "Web search and content extraction via Tavily API.",
|
|
289
|
-
"npm": "tavily",
|
|
289
|
+
"npm": "@wipcomputer/openclaw-tavily",
|
|
290
290
|
"repo": "wipcomputer/openclaw-tavily",
|
|
291
291
|
"registryMatches": [
|
|
292
292
|
"tavily"
|
package/package.json
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>Label</key>
|
|
6
|
+
<string>ai.openclaw.ldm-backup</string>
|
|
7
|
+
<key>ProgramArguments</key>
|
|
8
|
+
<array>
|
|
9
|
+
<string>bash</string>
|
|
10
|
+
<string>/Users/lesa/.ldm/bin/ldm-backup.sh</string>
|
|
11
|
+
</array>
|
|
12
|
+
<key>StartCalendarInterval</key>
|
|
13
|
+
<dict>
|
|
14
|
+
<key>Hour</key>
|
|
15
|
+
<integer>3</integer>
|
|
16
|
+
<key>Minute</key>
|
|
17
|
+
<integer>0</integer>
|
|
18
|
+
</dict>
|
|
19
|
+
<key>StandardOutPath</key>
|
|
20
|
+
<string>/Users/lesa/.ldm/logs/backup.log</string>
|
|
21
|
+
<key>StandardErrorPath</key>
|
|
22
|
+
<string>/Users/lesa/.ldm/logs/backup.log</string>
|
|
23
|
+
<key>EnvironmentVariables</key>
|
|
24
|
+
<dict>
|
|
25
|
+
<key>HOME</key>
|
|
26
|
+
<string>/Users/lesa</string>
|
|
27
|
+
<key>PATH</key>
|
|
28
|
+
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
|
|
29
|
+
</dict>
|
|
30
|
+
</dict>
|
|
31
|
+
</plist>
|