@wipcomputer/wip-ldm-os 0.4.85-alpha.28 → 0.4.85-alpha.29
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
CHANGED
|
@@ -28,14 +28,13 @@ Do not run GitHub commands during this install flow. Do not run or request appro
|
|
|
28
28
|
|
|
29
29
|
Check if LDM OS is installed (`which ldm && ldm --version`). Branch.
|
|
30
30
|
|
|
31
|
-
If installed: run `ldm status
|
|
31
|
+
If installed: run `ldm status`, check available npm tracks from the install document, and show me the version table, what's new for each component, and which stable/current, beta, and alpha versions are available. Then ask:
|
|
32
32
|
- Do you have questions?
|
|
33
33
|
- Want to see a dry run?
|
|
34
34
|
|
|
35
|
-
If yes to dry run,
|
|
35
|
+
If yes to dry run, use the selected track's dry-run path from the install document.
|
|
36
36
|
|
|
37
|
-
If I say install, run
|
|
38
|
-
`npm install -g @wipcomputer/wip-ldm-os@latest && ldm install && ldm doctor`
|
|
37
|
+
If I say install, use the selected track's install path from the install document, then run `ldm doctor`.
|
|
39
38
|
|
|
40
39
|
If not, walk me through setup and explain:
|
|
41
40
|
|
|
@@ -48,8 +47,7 @@ Then ask:
|
|
|
48
47
|
- Do you have questions?
|
|
49
48
|
- Want to see a dry run?
|
|
50
49
|
|
|
51
|
-
If yes to dry run, install the CLI first
|
|
52
|
-
`npm install -g @wipcomputer/wip-ldm-os`
|
|
50
|
+
If yes to dry run, install the CLI first using the selected track's bootstrap command from the install document.
|
|
53
51
|
|
|
54
52
|
Then run:
|
|
55
53
|
`ldm init --dry-run`
|
package/SKILL.md
CHANGED
|
@@ -35,6 +35,92 @@ Use this install document and live local checks as the source of truth. Do not s
|
|
|
35
35
|
|
|
36
36
|
Do not run GitHub commands during the install-state flow. Do not run or request approval for `gh release list`, `gh release view`, `gh api repos/*`, `gh search`, or any other GitHub query unless the user explicitly asks for release notes. Install-state answers should come from local commands, `ldm status`, and npm package metadata.
|
|
37
37
|
|
|
38
|
+
## Tracks
|
|
39
|
+
|
|
40
|
+
LDM OS ships on three npm dist-tags. Each tag is just a name pointing at a specific version. Show the user the installed version and the available tracks in plain English. Do not paste raw JSON.
|
|
41
|
+
|
|
42
|
+
- **stable** (`ldm install`) ... npm `@latest`. Use this only when `@latest` resolves to a non-prerelease version. Default for production releases.
|
|
43
|
+
- **beta** (`ldm install --beta`) ... npm `@beta`. Prerelease track. Stabilization candidates.
|
|
44
|
+
- **alpha** (`ldm install --alpha`) ... npm `@alpha`. Canary track. Earliest access; expect breakage.
|
|
45
|
+
|
|
46
|
+
### Pick the right track
|
|
47
|
+
|
|
48
|
+
Run this to get the dist-tags. Read the output and translate it into track names and versions.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm view @wipcomputer/wip-ldm-os dist-tags --json
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The npm `latest` tag is the stable/current track for user language. It is not guaranteed to be the newest prerelease. If `latest` points at a prerelease, explain that a stable release is not available yet.
|
|
55
|
+
|
|
56
|
+
User language maps to tracks like this:
|
|
57
|
+
|
|
58
|
+
- `stable`, `current`, or `latest` means `ldm install`
|
|
59
|
+
- `beta` or `latest beta` means `ldm install --beta`
|
|
60
|
+
- `alpha` or `latest alpha` means `ldm install --alpha`
|
|
61
|
+
|
|
62
|
+
Dry-run commands use the same selected track:
|
|
63
|
+
|
|
64
|
+
- stable/current/latest: `ldm install --dry-run`
|
|
65
|
+
- beta/latest beta: `ldm install --beta --dry-run`
|
|
66
|
+
- alpha/latest alpha: `ldm install --alpha --dry-run`
|
|
67
|
+
|
|
68
|
+
Install commands use the same selected track:
|
|
69
|
+
|
|
70
|
+
- stable/current/latest: `ldm install`
|
|
71
|
+
- beta/latest beta: `ldm install --beta`
|
|
72
|
+
- alpha/latest alpha: `ldm install --alpha`
|
|
73
|
+
|
|
74
|
+
First-time CLI bootstrap commands use the same selected track:
|
|
75
|
+
|
|
76
|
+
- stable/current/latest: `npm install -g @wipcomputer/wip-ldm-os`
|
|
77
|
+
- beta/latest beta: `npm install -g @wipcomputer/wip-ldm-os@beta`
|
|
78
|
+
- alpha/latest alpha: `npm install -g @wipcomputer/wip-ldm-os@alpha`
|
|
79
|
+
|
|
80
|
+
If the user already named a track, do not force a generic chooser. Show the exact package, available version, track, and command you will run. Then wait for dry-run or install consent as appropriate.
|
|
81
|
+
|
|
82
|
+
If the user has not named a track, show what is installed and what is available, then ask which track they want to dry run or install.
|
|
83
|
+
|
|
84
|
+
Never pin a specific prerelease version in an install command, such as `@wipcomputer/wip-ldm-os@0.4.85-alpha.29`. Use the moving track flags.
|
|
85
|
+
|
|
86
|
+
### How to phrase the track to the user
|
|
87
|
+
|
|
88
|
+
The README prompt should stay short. This install document owns the detailed track rules.
|
|
89
|
+
|
|
90
|
+
When the user asks for install state, say this first:
|
|
91
|
+
|
|
92
|
+
> You have `<LOCAL>` installed. Available: stable/current `<NPM_LATEST_OR_NONE>`, beta `<NPM_BETA_OR_NONE>`, alpha `<NPM_ALPHA_OR_NONE>`.
|
|
93
|
+
|
|
94
|
+
If no local install exists, say:
|
|
95
|
+
|
|
96
|
+
> LDM OS is not installed. Available: stable/current `<NPM_LATEST_OR_NONE>`, beta `<NPM_BETA_OR_NONE>`, alpha `<NPM_ALPHA_OR_NONE>`.
|
|
97
|
+
|
|
98
|
+
Then continue with the setup explanation and ask whether the user has questions or wants a dry run.
|
|
99
|
+
|
|
100
|
+
If the user named a track, answer directly:
|
|
101
|
+
|
|
102
|
+
> You asked for `<TRACK>`. The available `<TRACK>` version is `<VERSION>`. The dry-run command is `<COMMAND>`.
|
|
103
|
+
|
|
104
|
+
If the user says `stable`, `current`, or `latest` and npm `@latest` is a prerelease, say:
|
|
105
|
+
|
|
106
|
+
> Stable is not available yet. The stable/current track currently points at prerelease `<NPM_LATEST>`. Available prerelease tracks are beta `<NPM_BETA_OR_NONE>` and alpha `<NPM_ALPHA_OR_NONE>`. Which track do you want?
|
|
107
|
+
|
|
108
|
+
Do not treat public install docs as beta-only or alpha-only. Alpha, beta, and stable are all public npm tracks. Disclose risk and let the user choose.
|
|
109
|
+
|
|
110
|
+
Track risk language:
|
|
111
|
+
|
|
112
|
+
- stable/current/latest: normal public path, once it is a real non-prerelease release.
|
|
113
|
+
- beta: public prerelease path.
|
|
114
|
+
- alpha: canary path, likely rougher, but installable if the user asks for it.
|
|
115
|
+
|
|
116
|
+
#### Anti-patterns ... do NOT print any of these.
|
|
117
|
+
|
|
118
|
+
- Do not print raw `npm view ... dist-tags` JSON.
|
|
119
|
+
- Do not use `latest` as a synonym for newest prerelease.
|
|
120
|
+
- Do not give a hardcoded single-track recommendation when the user asked what is available.
|
|
121
|
+
- Do not force a generic chooser after the user already said `latest alpha`, `alpha`, `latest beta`, `beta`, `stable`, `current`, or `latest`.
|
|
122
|
+
- Do not run `gh release list` during install-state detection.
|
|
123
|
+
|
|
38
124
|
## Step 1: Check if installed
|
|
39
125
|
|
|
40
126
|
```bash
|
|
@@ -95,15 +181,23 @@ Show 2-3 bullets per component. Then:
|
|
|
95
181
|
|
|
96
182
|
Do you have questions? Want to see a dry run?
|
|
97
183
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
184
|
+
Use the selected track from **Pick the right track**:
|
|
185
|
+
|
|
186
|
+
- stable/current/latest: `ldm install --dry-run`
|
|
187
|
+
- beta/latest beta: `ldm install --beta --dry-run`
|
|
188
|
+
- alpha/latest alpha: `ldm install --alpha --dry-run`
|
|
101
189
|
|
|
102
190
|
Don't install until the user says "install".
|
|
103
191
|
|
|
192
|
+
Use the selected track from **Pick the right track**:
|
|
193
|
+
|
|
194
|
+
- stable/current/latest: `ldm install`
|
|
195
|
+
- beta/latest beta: `ldm install --beta`
|
|
196
|
+
- alpha/latest alpha: `ldm install --alpha`
|
|
197
|
+
|
|
198
|
+
Then verify with:
|
|
199
|
+
|
|
104
200
|
```bash
|
|
105
|
-
npm install -g @wipcomputer/wip-ldm-os@latest
|
|
106
|
-
ldm install
|
|
107
201
|
ldm doctor
|
|
108
202
|
```
|
|
109
203
|
|
|
@@ -129,10 +223,11 @@ Read [references/SKILLS-CATALOG.md](references/SKILLS-CATALOG.md). Present the i
|
|
|
129
223
|
|
|
130
224
|
Do you have questions? Want to see a dry run?
|
|
131
225
|
|
|
132
|
-
Install the CLI first
|
|
133
|
-
|
|
134
|
-
npm install -g @wipcomputer/wip-ldm-os
|
|
135
|
-
|
|
226
|
+
Install the CLI first using the selected track from **Pick the right track**:
|
|
227
|
+
|
|
228
|
+
- stable/current/latest: `npm install -g @wipcomputer/wip-ldm-os`
|
|
229
|
+
- beta/latest beta: `npm install -g @wipcomputer/wip-ldm-os@beta`
|
|
230
|
+
- alpha/latest alpha: `npm install -g @wipcomputer/wip-ldm-os@alpha`
|
|
136
231
|
|
|
137
232
|
If npm/node is not installed: Node.js 18+ from https://nodejs.org first.
|
|
138
233
|
|
|
@@ -173,6 +268,14 @@ ldm doctor --fix
|
|
|
173
268
|
- **Dry-run first.** Always. Only install when the user says "install".
|
|
174
269
|
- **Never touch sacred data.** crystal.db, agent data, secrets, state files are never overwritten.
|
|
175
270
|
|
|
271
|
+
## Track caveats
|
|
272
|
+
|
|
273
|
+
Tell the user, scaled to the track they're on:
|
|
274
|
+
|
|
275
|
+
- **alpha**: canary path, earliest access, breakage possible. Use only when the user explicitly opts in.
|
|
276
|
+
- **beta**: stabilization candidate. Same shape as alpha but feature-frozen for the cut.
|
|
277
|
+
- **stable**: production. The user should be on this unless they've asked otherwise.
|
|
278
|
+
|
|
176
279
|
## Reference files
|
|
177
280
|
|
|
178
281
|
For detailed information, read these on demand (not on every activation):
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wipcomputer/wip-ldm-os",
|
|
3
|
-
"version": "0.4.85-alpha.
|
|
3
|
+
"version": "0.4.85-alpha.29",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "LDM OS: identity, memory, and sovereignty infrastructure for AI agents",
|
|
6
6
|
"engines": {
|
|
@@ -18,10 +18,11 @@
|
|
|
18
18
|
"scripts": {
|
|
19
19
|
"build:bridge": "cd src/bridge && npm install && npx tsup core.ts mcp-server.ts cli.ts openclaw.ts --format esm --dts --clean --outDir ../../dist/bridge",
|
|
20
20
|
"build": "npm run build:bridge",
|
|
21
|
-
"prepublishOnly": "npm run build:bridge && npm run validate:bin-manifest && npm run test:install-prompt-policy && npm run test:ldm-status-timeout && npm run test:ldm-status-concurrency && npm run test:legacy-npm-sources-migration",
|
|
21
|
+
"prepublishOnly": "npm run build:bridge && npm run validate:bin-manifest && npm run test:install-prompt-policy && npm run test:readme-install-prompt && npm run test:ldm-status-timeout && npm run test:ldm-status-concurrency && npm run test:legacy-npm-sources-migration",
|
|
22
22
|
"validate:bin-manifest": "node scripts/validate-bin-manifest.mjs",
|
|
23
23
|
"test:skill-frontmatter": "node scripts/test-skill-frontmatter.mjs",
|
|
24
24
|
"test:install-prompt-policy": "node scripts/test-install-prompt-policy.mjs",
|
|
25
|
+
"test:readme-install-prompt": "node scripts/test-readme-install-prompt.mjs",
|
|
25
26
|
"test:ldm-status-timeout": "node scripts/test-ldm-status-timeout.mjs",
|
|
26
27
|
"test:ldm-status-concurrency": "node scripts/test-ldm-status-concurrency.mjs",
|
|
27
28
|
"test:legacy-npm-sources-migration": "node scripts/test-legacy-npm-sources-migration.mjs",
|
|
@@ -24,8 +24,10 @@ for (const file of ["README.md", "shared/templates/install-prompt.md"]) {
|
|
|
24
24
|
"Do not run GitHub commands during this install flow. Do not run or request approval for `gh release`, `gh api`, or `gh search`.",
|
|
25
25
|
"If release notes are not available from local or npm metadata, say that and do not fetch them from GitHub.",
|
|
26
26
|
"If installed: run `ldm status`",
|
|
27
|
-
"
|
|
28
|
-
"
|
|
27
|
+
"check available npm tracks from the install document",
|
|
28
|
+
"If yes to dry run, use the selected track's dry-run path from the install document.",
|
|
29
|
+
"If I say install, use the selected track's install path from the install document, then run `ldm doctor`.",
|
|
30
|
+
"install the CLI first using the selected track's bootstrap command from the install document",
|
|
29
31
|
"Then run:\n`ldm init --dry-run`",
|
|
30
32
|
"If I say install, run:\n`ldm init`",
|
|
31
33
|
]) {
|
|
@@ -45,6 +47,13 @@ for (const phrase of [
|
|
|
45
47
|
"Read that document and run those commands. Do not pre-load other context.",
|
|
46
48
|
"Do not run GitHub commands during the install-state flow.",
|
|
47
49
|
"Do not run or request approval for `gh release list`, `gh release view`, `gh api repos/*`, `gh search`, or any other GitHub query unless the user explicitly asks for release notes.",
|
|
50
|
+
"npm view @wipcomputer/wip-ldm-os dist-tags --json",
|
|
51
|
+
"The README prompt should stay short. This install document owns the detailed track rules.",
|
|
52
|
+
"stable/current/latest: `ldm install --dry-run`",
|
|
53
|
+
"beta/latest beta: `ldm install --beta --dry-run`",
|
|
54
|
+
"alpha/latest alpha: `ldm install --alpha --dry-run`",
|
|
55
|
+
"beta/latest beta: `npm install -g @wipcomputer/wip-ldm-os@beta`",
|
|
56
|
+
"alpha/latest alpha: `npm install -g @wipcomputer/wip-ldm-os@alpha`",
|
|
48
57
|
"Use the output of `ldm status`, installed package metadata, and npm metadata.",
|
|
49
58
|
"Do not use GitHub commands here.",
|
|
50
59
|
"If npm metadata for a package does not include release notes:",
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
|
|
4
|
+
const readme = readFileSync(new URL("../README.md", import.meta.url), "utf8");
|
|
5
|
+
const promptTemplate = readFileSync(
|
|
6
|
+
new URL("../shared/templates/install-prompt.md", import.meta.url),
|
|
7
|
+
"utf8",
|
|
8
|
+
);
|
|
9
|
+
const skill = readFileSync(new URL("../SKILL.md", import.meta.url), "utf8");
|
|
10
|
+
|
|
11
|
+
const promptStart = readme.indexOf("Read https://wip.computer/install/wip-ldm-os.txt");
|
|
12
|
+
const promptEnd = readme.indexOf("```", promptStart);
|
|
13
|
+
|
|
14
|
+
assert(promptStart >= 0, "README install prompt must point at the public install document");
|
|
15
|
+
assert(promptEnd > promptStart, "README install prompt must be fenced");
|
|
16
|
+
|
|
17
|
+
const readmePrompt = readme.slice(promptStart, promptEnd);
|
|
18
|
+
|
|
19
|
+
for (const [label, prompt] of [
|
|
20
|
+
["README install prompt", readmePrompt],
|
|
21
|
+
["shared install prompt template", promptTemplate],
|
|
22
|
+
]) {
|
|
23
|
+
assert(
|
|
24
|
+
prompt.includes("Read https://wip.computer/install/wip-ldm-os.txt"),
|
|
25
|
+
`${label} must delegate to the public install document`,
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
assert(
|
|
29
|
+
prompt.includes("Use the install document and live local checks as the source of truth."),
|
|
30
|
+
`${label} must name the install document as source of truth`,
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
assert(
|
|
34
|
+
prompt.includes("use the selected track's dry-run path from the install document"),
|
|
35
|
+
`${label} must delegate dry-run command mapping to SKILL.md`,
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
assert(
|
|
39
|
+
prompt.includes("use the selected track's install path from the install document"),
|
|
40
|
+
`${label} must delegate install command mapping to SKILL.md`,
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
for (const forbidden of [
|
|
44
|
+
"Track choices:",
|
|
45
|
+
"ldm install --alpha",
|
|
46
|
+
"ldm install --beta",
|
|
47
|
+
"ldm install --dry-run",
|
|
48
|
+
]) {
|
|
49
|
+
assert(!prompt.includes(forbidden), `${label} must not include ${forbidden}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
for (const required of [
|
|
54
|
+
"## Tracks",
|
|
55
|
+
"npm view @wipcomputer/wip-ldm-os dist-tags --json",
|
|
56
|
+
"stable/current/latest: `ldm install --dry-run`",
|
|
57
|
+
"beta/latest beta: `ldm install --beta --dry-run`",
|
|
58
|
+
"alpha/latest alpha: `ldm install --alpha --dry-run`",
|
|
59
|
+
"beta/latest beta: `npm install -g @wipcomputer/wip-ldm-os@beta`",
|
|
60
|
+
"alpha/latest alpha: `npm install -g @wipcomputer/wip-ldm-os@alpha`",
|
|
61
|
+
"The README prompt should stay short. This install document owns the detailed track rules.",
|
|
62
|
+
]) {
|
|
63
|
+
assert(skill.includes(required), `SKILL.md must own track-selection logic: ${required}`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
console.log("readme-install-prompt: prompt stays short and delegates track rules to SKILL.md");
|
|
@@ -12,14 +12,13 @@ Do not run GitHub commands during this install flow. Do not run or request appro
|
|
|
12
12
|
|
|
13
13
|
Check if LDM OS is installed (`which ldm && ldm --version`). Branch.
|
|
14
14
|
|
|
15
|
-
If installed: run `ldm status
|
|
15
|
+
If installed: run `ldm status`, check available npm tracks from the install document, and show me the version table, what's new for each component, and which stable/current, beta, and alpha versions are available. Then ask:
|
|
16
16
|
- Do you have questions?
|
|
17
17
|
- Want to see a dry run?
|
|
18
18
|
|
|
19
|
-
If yes to dry run,
|
|
19
|
+
If yes to dry run, use the selected track's dry-run path from the install document.
|
|
20
20
|
|
|
21
|
-
If I say install, run
|
|
22
|
-
`npm install -g @wipcomputer/wip-ldm-os@latest && ldm install && ldm doctor`
|
|
21
|
+
If I say install, use the selected track's install path from the install document, then run `ldm doctor`.
|
|
23
22
|
|
|
24
23
|
If not, walk me through setup and explain:
|
|
25
24
|
|
|
@@ -32,8 +31,7 @@ Then ask:
|
|
|
32
31
|
- Do you have questions?
|
|
33
32
|
- Want to see a dry run?
|
|
34
33
|
|
|
35
|
-
If yes to dry run, install the CLI first
|
|
36
|
-
`npm install -g @wipcomputer/wip-ldm-os`
|
|
34
|
+
If yes to dry run, install the CLI first using the selected track's bootstrap command from the install document.
|
|
37
35
|
|
|
38
36
|
Then run:
|
|
39
37
|
`ldm init --dry-run`
|