@zerwiz/ymir 0.1.28 → 0.1.30
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 +92 -178
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# YMIR — The Single-Tenant Agent Operating System
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
---
|
|
5
4
|
|
|
6
5
|
<p align="center">
|
|
@@ -29,6 +28,98 @@ no second master but the Allfather's own hand.
|
|
|
29
28
|
|
|
30
29
|
---
|
|
31
30
|
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
**One command. It installs into a prefix you own, writes the PATH into your shell,
|
|
34
|
+
runs the first setup, and then proves it.**
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
curl -fsSL https://raw.githubusercontent.com/zerwiz/ymir/main/install.sh | bash
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**No PATH, no prefix, nothing to configure — run it without installing:**
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx @zerwiz/ymir
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Already manage Node and npm yourself:**
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install -g @zerwiz/ymir # then: ymir
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### If `ymir` is "command not found"
|
|
53
|
+
|
|
54
|
+
The command **is** installed — npm put it in its global bin directory, and your shell
|
|
55
|
+
does not look there. That is npm's behaviour, not Ymir's, and it is the most common
|
|
56
|
+
*"it does not work"* in the whole Node ecosystem.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm prefix -g # where npm puts global commands
|
|
60
|
+
ls "$(npm prefix -g)/bin/ymir" # the command is there
|
|
61
|
+
export PATH="$(npm prefix -g)/bin:$PATH" # this shell
|
|
62
|
+
echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.bashrc # every shell after
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Or skip the question entirely: `npx @zerwiz/ymir` works with no PATH at all.
|
|
66
|
+
|
|
67
|
+
### If the version never changes
|
|
68
|
+
|
|
69
|
+
An install can *succeed* and change nothing — npm may resolve a cached `latest` and
|
|
70
|
+
report success while the old build stays. Clear it once:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm cache clean --force && npm i -g @zerwiz/ymir@latest --prefer-online
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The CLI itself now says when it is out of date, once a day.
|
|
77
|
+
|
|
78
|
+
### The packages — what is on npm
|
|
79
|
+
|
|
80
|
+
The distro **depends on the four surfaces**, so one command brings the whole
|
|
81
|
+
platform — and each can be installed alone if you want only that hall.
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
packages[5]{package,what}:
|
|
85
|
+
"@zerwiz/ymir","the distro — the runtime, the doors, the installer, the plan"
|
|
86
|
+
"@zerwiz/hlidskjalf","the high seat — the control plane, the gate and the landing"
|
|
87
|
+
"@zerwiz/odrerir","the live hall — the board on :4322"
|
|
88
|
+
"@zerwiz/smidja-factory","the smithy — the agent factory, its skills and the visualizer on :8437"
|
|
89
|
+
"@zerwiz/sessrumnir","the seat-hall — the desktop where you speak with Brokk"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Why the smithy is not `@zerwiz/smidja`:** that name was accepted twice by the
|
|
93
|
+
registry and served never; it ships as `@zerwiz/smidja-factory`, which resolves.
|
|
94
|
+
|
|
95
|
+
### A clone and a package are one tree
|
|
96
|
+
|
|
97
|
+
Ymir runs the same either way; the only difference is where the apps live — a
|
|
98
|
+
clone's `apps/<surface>`, or the package's `node_modules/@zerwiz/<surface>`. One
|
|
99
|
+
resolver (`bin/app-lib.sh`) answers for both, so no script has to care which shape
|
|
100
|
+
it woke in. Colour is for the eye, never for the pipe: `bin/ymir-style.sh` renders
|
|
101
|
+
in the halls' own cloth, and what a pipeline reads on stdout stays plain TOON.
|
|
102
|
+
|
|
103
|
+
### After it installs — the doors
|
|
104
|
+
|
|
105
|
+
`npm install -g @zerwiz/ymir` puts **two** commands on your PATH: `ymir` and
|
|
106
|
+
`ymir-install`. Everything else is a door on `ymir`, named for the figure whose
|
|
107
|
+
work it does.
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
ymir first setup: the plan, then your word
|
|
111
|
+
ymir raise | lower lift the hall, or lay it down
|
|
112
|
+
ymir hlidskjalf the high seat's window
|
|
113
|
+
ymir smidja the smithy's board (:8437)
|
|
114
|
+
ymir sessrumnir the seat-hall's window
|
|
115
|
+
ymir heimdall · invite the way in, and letting someone else in
|
|
116
|
+
ymir eir · groa what stands and mending · take the latest and mend forward
|
|
117
|
+
ymir mimir · sense · plan
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
A name the law has not given a home still answers, once, and tells you the name that
|
|
121
|
+
has it: `ymir doctor` replies *the door is named `ymir eir` now*.
|
|
122
|
+
|
|
32
123
|
## The Lore (short version)
|
|
33
124
|
|
|
34
125
|
Ymir is not a theme — the myths are **load-bearing allegory**. Every subsystem is
|
|
@@ -637,180 +728,3 @@ resolved from `$YMIR_HOME/secrets/platform.env` at runtime.
|
|
|
637
728
|
|
|
638
729
|
---
|
|
639
730
|
|
|
640
|
-
## Install
|
|
641
|
-
|
|
642
|
-
**One command. It installs into a prefix you own, writes the PATH into your shell,
|
|
643
|
-
runs the first setup, and then proves it.**
|
|
644
|
-
|
|
645
|
-
```bash
|
|
646
|
-
curl -fsSL https://raw.githubusercontent.com/zerwiz/ymir/main/install.sh | bash
|
|
647
|
-
```
|
|
648
|
-
|
|
649
|
-
**No PATH, no prefix, nothing to configure — run it without installing:**
|
|
650
|
-
|
|
651
|
-
```bash
|
|
652
|
-
npx @zerwiz/ymir
|
|
653
|
-
```
|
|
654
|
-
|
|
655
|
-
**Already manage Node and npm yourself:**
|
|
656
|
-
|
|
657
|
-
```bash
|
|
658
|
-
npm install -g @zerwiz/ymir # then: ymir
|
|
659
|
-
```
|
|
660
|
-
|
|
661
|
-
### If `ymir` is "command not found"
|
|
662
|
-
|
|
663
|
-
The command **is** installed — npm put it in its global bin directory, and your
|
|
664
|
-
shell does not look there. This is npm's behaviour, not Ymir's, and it is the most
|
|
665
|
-
common *"it does not work"* in the whole Node ecosystem.
|
|
666
|
-
|
|
667
|
-
```bash
|
|
668
|
-
npm prefix -g # where npm puts global commands
|
|
669
|
-
ls "$(npm prefix -g)/bin/ymir" # the command is there
|
|
670
|
-
export PATH="$(npm prefix -g)/bin:$PATH" # this shell
|
|
671
|
-
echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.bashrc # every shell after
|
|
672
|
-
```
|
|
673
|
-
|
|
674
|
-
**Or skip the question entirely** — `npx @zerwiz/ymir` works with no PATH at all,
|
|
675
|
-
and the one-liner above sets it once.
|
|
676
|
-
|
|
677
|
-
### If the version never changes
|
|
678
|
-
|
|
679
|
-
An install can *succeed* and change nothing: npm may resolve a cached `latest` and
|
|
680
|
-
report success while the old build stays. Clear it once:
|
|
681
|
-
|
|
682
|
-
```bash
|
|
683
|
-
npm cache clean --force && npm i -g @zerwiz/ymir@latest --prefer-online
|
|
684
|
-
```
|
|
685
|
-
|
|
686
|
-
The CLI itself now says when it is out of date, once a day.
|
|
687
|
-
|
|
688
|
-
**Who can install this today.** The Ymir distro is private while it is young —
|
|
689
|
-
so `curl`, `npx` and `git clone` work for the author and invited users, not for
|
|
690
|
-
the public (an unknown clone returns 404). If you would like access, ask:
|
|
691
|
-
**zerwiz.org**. When the distro opens, this note goes away and the four commands
|
|
692
|
-
above become open to everyone.
|
|
693
|
-
|
|
694
|
-
**Early adopters and contributors can install now — but it is rough.** Expect
|
|
695
|
-
sharp edges: the installer is honest about what it cannot do, and says so rather
|
|
696
|
-
than pretending. Bring a Linux host (or let the Windows/macOS bootstraps give
|
|
697
|
-
you one — see *Bringing your own machine* above), and read what the installer
|
|
698
|
-
prints before you trust it.
|
|
699
|
-
|
|
700
|
-
The npm package carries the runtime's `bin/` scripts and the installer; every
|
|
701
|
-
`npm update -g @zerwiz/ymir` re-runs the same self-healing setup that provisions
|
|
702
|
-
prerequisites, engines, and the Hlidskjalf seat. `@zerwiz/*` are the app
|
|
703
|
-
packages (Hlidskjalf, Óðrerir, Sessrúmnir, Smíðja) — one per app.
|
|
704
|
-
|
|
705
|
-
Private data never touches npm — all user data lives at `$YMIR_HOME` (the hoard
|
|
706
|
-
at `hodd/` and the realms at `svartalfaheim/`) and syncs via the user's
|
|
707
|
-
**private** GitHub repo, never a public one.
|
|
708
|
-
|
|
709
|
-
### After it installs — the doors
|
|
710
|
-
|
|
711
|
-
`npm install -g @zerwiz/ymir` puts **two** commands on your PATH: `ymir` and
|
|
712
|
-
`ymir-install`. Everything else is a door on `ymir`, named for the figure whose
|
|
713
|
-
work it does — because a great many doors either open or they do not, and a name
|
|
714
|
-
that says whose hand is on it is the difference between guessing and knowing.
|
|
715
|
-
|
|
716
|
-
```
|
|
717
|
-
ymir first setup: the plan, then your word
|
|
718
|
-
ymir raise | lower lift the hall, or lay it down
|
|
719
|
-
ymir hlidskjalf the high seat's window
|
|
720
|
-
ymir smidja the smithy's board (:8437) — build · start · stop · status
|
|
721
|
-
ymir sessrumnir the seat-hall's window
|
|
722
|
-
ymir heimdall the way in — your credential (status · set · github)
|
|
723
|
-
ymir invite let someone else in — mint · list · revoke
|
|
724
|
-
ymir eir what stands, and mend what does not
|
|
725
|
-
ymir groa [migrate] take the latest, and mend this home forward
|
|
726
|
-
ymir mimir · sense · plan
|
|
727
|
-
```
|
|
728
|
-
|
|
729
|
-
A name the law has not given a home still answers, once, and tells you the name
|
|
730
|
-
that has it: `ymir doctor` replies *the door is named `ymir eir` now*.
|
|
731
|
-
|
|
732
|
-
**A long hour says so, in its own voice.** The installer opens with the plan and,
|
|
733
|
-
when the work will take a while, tells you plainly:
|
|
734
|
-
|
|
735
|
-
```
|
|
736
|
-
◆ much moves the halls are being stood up for the first time
|
|
737
|
-
this hour is long, and nothing of yours is lost in it —
|
|
738
|
-
roots come home, shapes are re-cut, names are set true again.
|
|
739
|
-
Your patience is noted, and it is earned.
|
|
740
|
-
```
|
|
741
|
-
|
|
742
|
-
### "`ymir`: command not found" — it is almost always PATH
|
|
743
|
-
|
|
744
|
-
The command is installed; npm puts it in a directory your shell may not look in.
|
|
745
|
-
The package declares it (`bin: {ymir, ymir-install}`), so this is not a missing
|
|
746
|
-
file — it is a missing path.
|
|
747
|
-
|
|
748
|
-
```bash
|
|
749
|
-
npm prefix -g # where npm puts global packages (e.g. ~/.npm-global)
|
|
750
|
-
ls "$(npm prefix -g)/bin/ymir" # the command is there
|
|
751
|
-
export PATH="$(npm prefix -g)/bin:$PATH" # this session
|
|
752
|
-
echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.bashrc # every session after
|
|
753
|
-
```
|
|
754
|
-
|
|
755
|
-
On macOS with Homebrew, npm's prefix is usually `/opt/homebrew` and already on
|
|
756
|
-
the path; on Linux a global install as an ordinary user lands under `~/.npm-global`
|
|
757
|
-
(or whatever `npm config get prefix` says), which is exactly the directory that is
|
|
758
|
-
easy to miss. Windows uses `%APPDATA%\npm`.
|
|
759
|
-
|
|
760
|
-
**And if the install itself is refused** — a `EACCES` on `/usr/lib/node_modules` —
|
|
761
|
-
do not reach for `sudo`: point npm at a prefix you own once, and every Ymir
|
|
762
|
-
install afterwards is painless.
|
|
763
|
-
|
|
764
|
-
```bash
|
|
765
|
-
npm config set prefix "$HOME/.npm-global"
|
|
766
|
-
export PATH="$HOME/.npm-global/bin:$PATH"
|
|
767
|
-
npm install -g @zerwiz/ymir
|
|
768
|
-
```
|
|
769
|
-
|
|
770
|
-
### The packages — what is on npm
|
|
771
|
-
|
|
772
|
-
Six names were published; five serve. The distro **depends on the four
|
|
773
|
-
surfaces**, so one command brings the whole platform — and each can be installed
|
|
774
|
-
alone if you want only that hall.
|
|
775
|
-
|
|
776
|
-
```
|
|
777
|
-
packages[5]{package,what,live}:
|
|
778
|
-
"@zerwiz/ymir","the distro — the runtime, the doors, the installer, the plan","0.1.28"
|
|
779
|
-
"@zerwiz/hlidskjalf","the high seat — the control plane, the gate and the landing","0.1.1"
|
|
780
|
-
"@zerwiz/odrerir","the live hall — the board on :4322","0.1.1"
|
|
781
|
-
"@zerwiz/smidja-factory","the smithy — the agent factory, its skills and the visualizer on :8437","0.1.1"
|
|
782
|
-
"@zerwiz/sessrumnir","the seat-hall — the desktop where you speak with Brokk","0.1.10"
|
|
783
|
-
```
|
|
784
|
-
|
|
785
|
-
```bash
|
|
786
|
-
npm install -g @zerwiz/ymir # the distro AND the four surfaces (dependencies)
|
|
787
|
-
npm install -g @zerwiz/hlidskjalf # or one hall on its own
|
|
788
|
-
```
|
|
789
|
-
|
|
790
|
-
**Why the smithy's name is not `@zerwiz/smidja`.** It was published under that
|
|
791
|
-
name and the registry accepted it twice — `0.1.0`, then `0.1.1` — while serving
|
|
792
|
-
neither: the package document answered 404, the website 403, and a republish was
|
|
793
|
-
refused as *already published*. The name was retired and the smithy ships as
|
|
794
|
-
**`@zerwiz/smidja-factory`**, which resolves. A second look before publishing
|
|
795
|
-
costs less than explaining a name that never worked.
|
|
796
|
-
|
|
797
|
-
### Both shapes — a clone and a package are one tree
|
|
798
|
-
|
|
799
|
-
Ymir runs the same whether you **cloned** it or **installed** it from npm. The
|
|
800
|
-
apps are the difference, and only in where they live:
|
|
801
|
-
|
|
802
|
-
| | a clone | an npm install |
|
|
803
|
-
|---|---|---|
|
|
804
|
-
| the surfaces | `apps/hlidskjalf` · `odrerir` · `sessrumnir` · `smidja-factory` | `node_modules/@zerwiz/hlidskjalf` · `odrerir` · `sessrumnir` · `smidja-factory` |
|
|
805
|
-
| how they got there | the registry's `repo: apps/<path>` block clones each | declared as dependencies of the distro |
|
|
806
|
-
|
|
807
|
-
One resolver (`bin/app-lib.sh`) answers for both, so a script never has to care
|
|
808
|
-
which shape it woke in — and the same is true of the smithy (`bin/smidja-lib.sh`)
|
|
809
|
-
and of a desktop shell's runtime (`bin/electron-lib.sh`). The plan tells you which
|
|
810
|
-
surfaces are present, which are declared but not yet fetched, and which have no
|
|
811
|
-
package at all.
|
|
812
|
-
|
|
813
|
-
**Colour is for the eye, never for the pipe.** `bin/ymir-style.sh` renders in the
|
|
814
|
-
halls' own cloth — bone for words, bronze for what acts, steel for what stands,
|
|
815
|
-
blood for what is wrong — and only when a human is watching (a terminal, no
|
|
816
|
-
`NO_COLOR`). What a pipeline reads on stdout stays plain TOON.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zerwiz/ymir",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Ymir
|
|
3
|
+
"version": "0.1.30",
|
|
4
|
+
"description": "Ymir — the single-tenant agent operating system. One command: curl -fsSL https://raw.githubusercontent.com/zerwiz/ymir/main/install.sh | bash · or: npx @zerwiz/ymir · or: npm i -g @zerwiz/ymir (if `ymir` is not found, the README has the three-line PATH cure)",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/zerwiz/ymir",
|
|
7
7
|
"repository": {
|