@wipcomputer/wip-ldm-os 0.2.1 → 0.2.2

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.
Files changed (3) hide show
  1. package/SKILL.md +17 -2
  2. package/bin/ldm.mjs +57 -0
  3. package/package.json +1 -1
package/SKILL.md CHANGED
@@ -5,7 +5,7 @@ license: MIT
5
5
  interface: [cli, skill]
6
6
  metadata:
7
7
  display-name: "LDM OS"
8
- version: "0.2.1"
8
+ version: "0.2.2"
9
9
  homepage: "https://github.com/wipcomputer/wip-ldm-os"
10
10
  author: "Parker Todd Brooks"
11
11
  category: infrastructure
@@ -89,7 +89,13 @@ LDM OS ships with a skill catalog. Show the user what's available:
89
89
  |-------|-----------|--------|
90
90
  | **Memory Crystal** (recommended) | Persistent memory. Search, capture, consolidation. | Stable |
91
91
  | **AI DevOps Toolbox** | Release, deploy, license, repo management. | Stable |
92
- | **Agent Pay** | Micropayments for AI agents. Apple Pay. | Coming Soon |
92
+ | **1Password** | 1Password secrets for AI agents. | Stable |
93
+ | **Markdown Viewer** | Live markdown viewer for AI pair-editing. | Stable |
94
+ | **xAI Grok** | xAI Grok API. Search the web, search X, generate images. | Stable |
95
+ | **X Platform** | X Platform API. Read posts, search tweets, post, upload media. | Stable |
96
+ | **OpenClaw** | AI agent platform. Run AI agents 24/7 with identity, memory, and tool access. | Stable |
97
+ | **Dream Weaver Protocol** | Memory consolidation protocol for AI agents. | Stable |
98
+ | **Bridge** | Cross-platform agent bridge. Claude Code to OpenClaw communication. | Stable |
93
99
 
94
100
  To install a skill:
95
101
  ```bash
@@ -103,6 +109,8 @@ ldm install wipcomputer/memory-crystal
103
109
 
104
110
  The installer detects what a repo supports (CLI, MCP Server, OpenClaw Plugin, Skill, CC Hook, Module) and deploys each interface to the right location automatically.
105
111
 
112
+ **Note:** Skills installed before LDM OS (via `crystal init`, `wip-install`, or manual setup) may not appear in the registry. Run `ldm install <org/repo>` to re-register them.
113
+
106
114
  ### Step 3: Verify
107
115
 
108
116
  ```bash
@@ -158,5 +166,12 @@ LDM OS is the runtime. Skills plug into it:
158
166
 
159
167
  - **Memory Crystal** ... `wipcomputer/memory-crystal`
160
168
  - **AI DevOps Toolbox** ... `wipcomputer/wip-ai-devops-toolbox`
169
+ - **1Password** ... `wipcomputer/wip-1password`
170
+ - **Markdown Viewer** ... `wipcomputer/wip-markdown-viewer`
171
+ - **xAI Grok** ... `wipcomputer/wip-xai-grok`
172
+ - **X Platform** ... `wipcomputer/wip-xai-x`
173
+ - **OpenClaw** ... `openclaw/openclaw`
174
+ - **Dream Weaver Protocol** ... `wipcomputer/dream-weaver-protocol`
175
+ - **Bridge** ... `wipcomputer/wip-bridge`
161
176
 
162
177
  Run `ldm install` anytime to add more skills.
package/bin/ldm.mjs CHANGED
@@ -349,9 +349,60 @@ async function cmdInstall() {
349
349
  await installFromPath(repoPath);
350
350
  }
351
351
 
352
+ // ── Auto-detect unregistered extensions ──
353
+
354
+ function autoDetectExtensions() {
355
+ if (!existsSync(LDM_EXTENSIONS)) return;
356
+ const registry = readJSON(REGISTRY_PATH);
357
+ if (!registry) return;
358
+
359
+ const registered = Object.keys(registry.extensions || {});
360
+ let found = 0;
361
+
362
+ try {
363
+ const dirs = readdirSync(LDM_EXTENSIONS, { withFileTypes: true });
364
+ for (const dir of dirs) {
365
+ if (!dir.isDirectory()) continue;
366
+ if (dir.name === '_trash' || dir.name.startsWith('.')) continue;
367
+
368
+ const extPath = join(LDM_EXTENSIONS, dir.name);
369
+ const pkgPath = join(extPath, 'package.json');
370
+ if (!existsSync(pkgPath)) continue;
371
+
372
+ // Check if already registered (by directory name or by ldmPath)
373
+ const alreadyRegistered = registered.some(name => {
374
+ const info = registry.extensions[name];
375
+ return name === dir.name || info?.ldmPath === extPath;
376
+ });
377
+ if (alreadyRegistered) continue;
378
+
379
+ // Auto-register
380
+ const pkg = readJSON(pkgPath);
381
+ if (!pkg) continue;
382
+
383
+ registry.extensions[dir.name] = {
384
+ name: dir.name,
385
+ version: pkg.version || '?',
386
+ source: null,
387
+ interfaces: [],
388
+ ldmPath: extPath,
389
+ updatedAt: new Date().toISOString(),
390
+ autoDetected: true,
391
+ };
392
+ found++;
393
+ }
394
+ } catch {}
395
+
396
+ if (found > 0) {
397
+ writeJSON(REGISTRY_PATH, registry);
398
+ }
399
+ return found;
400
+ }
401
+
352
402
  // ── ldm install (bare): show catalog + update registered ──
353
403
 
354
404
  async function cmdInstallCatalog() {
405
+ autoDetectExtensions();
355
406
  const registry = readJSON(REGISTRY_PATH);
356
407
  const installed = Object.keys(registry?.extensions || {});
357
408
  const components = loadCatalog();
@@ -463,6 +514,12 @@ function cmdDoctor() {
463
514
  console.log(' ldm doctor');
464
515
  console.log(' ────────────────────────────────────');
465
516
 
517
+ // Auto-detect unregistered extensions before checking
518
+ const detected = autoDetectExtensions();
519
+ if (detected > 0) {
520
+ console.log(` + Auto-detected ${detected} unregistered extension(s)`);
521
+ }
522
+
466
523
  let issues = 0;
467
524
 
468
525
  // 1. Check LDM root
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-ldm-os",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "description": "LDM OS: identity, memory, and sovereignty infrastructure for AI agents",
6
6
  "main": "src/boot/boot-hook.mjs",