obolos 1.5.0 → 1.6.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/CHANGELOG.md +31 -0
- package/dist/cli.js +68 -64
- package/package.json +1 -1
- package/skills/obolos/SKILL.md +18 -5
- package/skills/obolos/references/tooling.md +1 -1
- package/skills/obolos/references/workflows.md +9 -3
package/package.json
CHANGED
package/skills/obolos/SKILL.md
CHANGED
|
@@ -113,15 +113,26 @@ stand, so nothing is signed again. `obolos login --key` signs in with the user's
|
|
|
113
113
|
An agent wallet does only what the user gave it on the Passport page, per wallet and company: Read
|
|
114
114
|
opens the company, that wallet's holdings and the documents it can open; Vote casts votes and gives
|
|
115
115
|
proxies; Manage equity runs share classes, shares, grants, vesting, notes, SAFEs and the data room,
|
|
116
|
-
within the roles the wallet holds; Raise creates and runs rounds
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
within the roles the wallet holds; Raise creates and runs rounds, and sets up the investor policy a
|
|
117
|
+
round opens on: `obolos compliance policy create --preset <id> --class <class>` (`obolos compliance
|
|
118
|
+
presets` lists them) and `obolos compliance rule attach`. It adds rules, never removes or loosens
|
|
119
|
+
them; that is the user's, in the app. Role grants, upgrades and treasury
|
|
120
|
+
withdrawals are the user's to do in the app: `cli.missing_power` with `power: null` says so; pass that
|
|
121
|
+
on, and never ask the user for a key. Its sends are sponsored and count against the user's daily limit.
|
|
119
122
|
|
|
120
123
|
An agent buys no credits. `obolos credits topup [--amount <usd>]` opens the company's billing page in
|
|
121
124
|
the user's browser and waits up to 15 minutes for the credits. Off a terminal, add `--no-wait`: it
|
|
122
125
|
exits 6 with `cli.awaiting_credits` and `details.link`. Give the user the link, wait for them to say
|
|
123
126
|
they loaded the credits, then check with `obolos credits show`.
|
|
124
127
|
|
|
128
|
+
An agent activates no module either: activation is permanent and spends credits. `obolos company
|
|
129
|
+
module activate <name>` checks the module can be activated, opens it on the company's Modules page in
|
|
130
|
+
the user's browser and waits up to 15 minutes for it to be active. Off a terminal, add `--no-wait`: it
|
|
131
|
+
exits 6 with `cli.awaiting_module` and `details.link`. Give the user the link, wait for them to say
|
|
132
|
+
they activated it, then check with `obolos company modules`, whose `cost` is in credits. A company
|
|
133
|
+
short of credits gets the same link (`creditsShort: true`): the activation there offers Add credits, so
|
|
134
|
+
tell the user they add credits first, and don't send them to `credits topup`.
|
|
135
|
+
|
|
125
136
|
- **Exit 3, `cli.session_ended`**: the session ended (disconnected, or past its 3 days). On a terminal
|
|
126
137
|
the CLI offers to connect again; otherwise ask the user, then run `obolos login`.
|
|
127
138
|
- **Exit 3, `cli.missing_power`**: `details` names the `power`, the `wallet` and the `company`. Tell
|
|
@@ -144,8 +155,10 @@ never says who.
|
|
|
144
155
|
|
|
145
156
|
### Making a company with the user
|
|
146
157
|
|
|
147
|
-
An agent doesn't create companies; the user does, in one obolos window the agent opens.
|
|
148
|
-
|
|
158
|
+
An agent doesn't create companies; the user does, in one obolos window the agent opens. Never run
|
|
159
|
+
`obolos login` first, even when the user asks to connect: `login` only connects an agent wallet that
|
|
160
|
+
already exists, while incorporating connects this terminal to the new company's agent. For testnet
|
|
161
|
+
(try.obolos.io), add `--try` to `obolos company incorporate`. When the user wants a company:
|
|
149
162
|
|
|
150
163
|
1. Ask for its name with the legal ending (Acme Inc.), a ticker, the jurisdiction (an ISO code such as
|
|
151
164
|
US, GB, CH) and the entity type (c-corp, llc, ...). An unknown one fails with `invalid_jurisdiction`
|
|
@@ -61,7 +61,7 @@ is the key's address, or after `obolos login` the user's wallet the agent wallet
|
|
|
61
61
|
needs only that wallet, and sealing confidential inputs binds them to it. With a key, decrypting,
|
|
62
62
|
publishing verdicts and sending need the key. As an agent wallet, decrypting needs Read on that wallet
|
|
63
63
|
at the company, sending needs the power that makes each call, and a command that signs as the wallet
|
|
64
|
-
itself, such as publishing a verdict,
|
|
64
|
+
itself, such as publishing a verdict, is the user's to do in the app. Never ask the user for a key.
|
|
65
65
|
|
|
66
66
|
A terminal can hold several agent wallets; each `obolos login` adds one and puts it in use. At a
|
|
67
67
|
company the CLI acts as the agent in use when it holds powers there, otherwise as a connected agent
|
|
@@ -170,7 +170,7 @@ A denied verdict is a valid outcome, not a reason to vary the quantity until one
|
|
|
170
170
|
## Fundraising round
|
|
171
171
|
|
|
172
172
|
```bash
|
|
173
|
-
obolos fundraise create --type safe --name Seed --target 1,000,000 --hard-cap 2,000,000 --cap 10,000,000 --discount 20% --agreement
|
|
173
|
+
obolos fundraise create --type safe --name Seed --target 1,000,000 --hard-cap 2,000,000 --cap 10,000,000 --discount 20% --agreement ./term-sheet.pdf
|
|
174
174
|
obolos fundraise reserve <round> --investor <wallet> --amount 250,000 # a spot, its amount sealed, signed for the company by a document signer
|
|
175
175
|
obolos fundraise reservation sign <round> --reservation <id> # investor, with their key: signs the spot (--accept-terms only once they agree to terms that differ from the round's)
|
|
176
176
|
obolos fundraise subscribe <round> --amount 50,000 # investor, with their key
|
|
@@ -181,12 +181,18 @@ obolos fundraise close <round> && obolos fundraise finalize <round>
|
|
|
181
181
|
obolos fundraise publish <round>
|
|
182
182
|
```
|
|
183
183
|
|
|
184
|
-
Confirm the
|
|
184
|
+
Confirm the round is one `obolos company show` lists under `jurisdiction.instruments`. One with
|
|
185
|
+
`active: false` needs each module in its `activate` list activated first (`obolos company module
|
|
186
|
+
activate <module>`); every round runs on `fundraise`. A round opens on an investor policy with rules; a
|
|
187
|
+
company with none needs one first (`obolos compliance policy create --preset <id> --class <class>`).
|
|
185
188
|
Prepare round creation, document references, whitelist changes and reservations in their natural
|
|
186
189
|
stages; counterparty-signed reservations and encrypted investor inputs are not manager batches.
|
|
187
190
|
|
|
188
191
|
- **Create** makes the round's data room, publishes the round's agreement unsigned in its Term Sheets,
|
|
189
|
-
then opens the round (its document reference is the room), so the run is staged.
|
|
192
|
+
then opens the round (its document reference is the room), so the run is staged. Give the agreement
|
|
193
|
+
as a document on this machine (.pdf, .md, .txt or .docx). The run pins its hash and stores it
|
|
194
|
+
unsealed once the user sends the run's first step, the data room, which says so. Don't upload it to a
|
|
195
|
+
data room first; the round refuses an `obolos://` reference.
|
|
190
196
|
- **Sealed figures.** Money never moves through the contract, and every amount is sealed. A priced
|
|
191
197
|
round's price per share is sealed too, with a public commitment the round's agreement names. The
|
|
192
198
|
company reads it; adding an address to the whitelist shows it the price for good; `subscribe` first
|