obolos 0.0.0-stage → 1.2.0

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 ADDED
@@ -0,0 +1,382 @@
1
+ # Changelog
2
+
3
+ All notable changes to the `obolos` CLI are documented here.
4
+
5
+ ## [Unreleased]
6
+
7
+ ## [1.2.0] - 2026-11-01
8
+
9
+ ### Added
10
+
11
+ - `obolos login` connects the terminal as one of your agent wallets: it prints a link and a code to approve in the app.
12
+ `--company <company>` connects it at one company, `--key` signs in with your own key.
13
+ - `obolos agents` lists the agent wallets this terminal is connected as, `obolos agents use <name>` picks one, and
14
+ `obolos agents check <address>` asks whether a verified person stands behind an agent.
15
+ - `obolos company incorporate --form` asks obolos to form the legal entity; `--formation <id>` sets the company up once
16
+ it is formed. `obolos company formation` lists your requests, and `obolos company details` shows or sets the legal
17
+ details.
18
+ - `obolos email verify <address>` and `obolos email confirm <code>` verify the account's email.
19
+
20
+ ### Changed
21
+
22
+ - Published on npm as `obolos`; earlier releases were `@equitylayer/cli` on GitHub Packages.
23
+ - Uses @obolos/sdk 1.2.0, bundled into the package and minified. Installing the CLI no longer installs the SDK as a
24
+ separate package.
25
+ - Works on Arbitrum One when no `--chain`, `OBOLOS_CHAIN_ID` or RPC URL names a network, so `obolos login` needs no
26
+ flags.
27
+ - Requires Node 24.
28
+
29
+ ## [1.1.1] - 2026-10-22
30
+
31
+ ### Changed
32
+
33
+ - Uses @obolos/sdk 1.1.1
34
+
35
+ ### Added
36
+
37
+ - `fundraise create --price-salt <hex>` seals a priced round's price under a given salt, for an agreement rendered
38
+ beforehand with its price commitment.
39
+
40
+ ### Fixed
41
+
42
+ - Back-to-back sends from one wallet each read a fresh nonce: the RPC provider keeps no request cache.
43
+
44
+ ## [1.1.0] - 2026-10-21
45
+
46
+ ### Changed
47
+
48
+ - Uses @obolos/sdk 1.1.0
49
+
50
+ ## [1.0.0] - 2026-10-20
51
+
52
+ ### Changed
53
+
54
+ - Uses @obolos/sdk 1.0.0
55
+ - The CLI pins CoFHE SDK 1.0.1 for encrypted inputs and permit handling.
56
+ - `fundraise reservation countersign` asks each deal's funding check with the company's signature when the actor
57
+ manages the fundraise, and `fundraise record` then records a deal that holds a yes in one transaction. A check holds
58
+ the deal's room until its record or a cancel, so recording another deal in between no longer sends it back for a
59
+ fresh one. On a priced round the share count is sealed with the check and only goes public with the record.
60
+ ### Added
61
+
62
+ - `obolos treasury deposit --amount <amount>`: pay into the selected company's vault from your wallet.
63
+
64
+ ## [0.9.0] - 2026-10-17
65
+
66
+ ### Added
67
+
68
+ - `fundraise publish <round>`: make a finalized SAFE or note round's total public. The company's session decrypts
69
+ the sealed total under its own permit and the announcement carries the network's signed result, which the contract
70
+ relays as the announcement lands. Until then `fundraise show` and `fundraise list` state the figure as confidential
71
+ to anyone but a session that may read it.
72
+
73
+ - `fundraise reserve --source <fund-lead|platform>`: who brought the investor's capital, kept with the spot on chain;
74
+ the fund lead's when omitted. `fundraise reservations` lists each spot's source.
75
+ - `fundraise create --carry <pct> --platform-share <pct>`: a vehicle's carry and the platform's share of it, fixed
76
+ with the round. `spv waterfall --round <id>` and `distribution waterfall --round <id>` take both, and every
77
+ investor's capital and source, from the chain.
78
+ - `fundraise subscribe --source <fund-lead|platform>`: who brought you to the round, kept with your subscription on
79
+ chain; the fund lead's when omitted.
80
+
81
+ ### Changed
82
+
83
+ - **A priced round's price is sealed.** `fundraise create --type priced` seals the price; `fundraise show` and
84
+ `fundraise list` state it, every amount and an unpublished total as confidential to a session that cannot read
85
+ them. `fundraise subscribe` on a priced round unlocks the price first when you cannot read it yet, and refuses an
86
+ amount that buys no whole number of shares. `fundraise record` names the shares on a priced round. `fundraise
87
+ finalize` on a priced round asks whether the sealed total qualifies it before its last window. `fundraise publish`
88
+ takes a priced round too, and its total reveals the price. Adding an address to a priced round's whitelist shows
89
+ it the price. `conversion show`, `list`, `trigger` and `settle` print the price only to a session that reads it.
90
+ - **Nothing is paid on the contract.** `fundraise subscribe` makes an offer at the round's terms: it signs the
91
+ agreement and seals the amount, pays nothing, and one offer of yours stands open per round until the company
92
+ countersigns it or you withdraw it with `fundraise reservation cancel`. You pay by bank transfer or by sending the
93
+ payment token to the company's vault once the company has countersigned; the company then runs `fundraise record
94
+ <round> --reservation <id> --amount <usd>`, which on a SAFE or note round asks the network whether the sealed amount
95
+ fits and records with its answer, relayed by the record itself and only when it is yes and still current; a record
96
+ the round refuses publishes nothing. `fundraise reserve` seals a SAFE or
97
+ note spot's amount; `fundraise refund` reverses a cancelled round's payments on the ledger once the money went
98
+ back the way it came. Removed: `fundraise invest`, `fundraise exit`, `fundraise claim-refund`.
99
+ - The Agent Skill is now `obolos` (was `use-obolos`): invoke it as `/obolos` in Claude Code or `$obolos` in Codex,
100
+ and `/obolos:obolos` through the Claude Code plugin. `obolos skills install` writes `skills/obolos`; delete an
101
+ older `skills/use-obolos` copy so agents don't load both.
102
+
103
+ ### Security
104
+
105
+ - `docs read` without `--save` writes only a plain file name in the current folder: a document's name no longer picks
106
+ a path or a dot file.
107
+ - `--expect-hash <hash>` on `send`, `resume` and every command with `--send` refuses a plan or stage whose hash
108
+ differs from the one approved (`cli.hash_mismatch`, exit 2). The skill tells agents to pass it with `--yes`. A
109
+ stage built only as the run advances shows no hash until the stage before it lands.
110
+ - `fundraise reservation sign --accept-terms`, `conversion settle --prover-address` and `note repay --prover-address`.
111
+ - `companies` and `whoami` show only direct grants as held; `whoami` lists covered roles under `implied`.
112
+
113
+ ## [0.8.0] - 2026-10-12
114
+
115
+ ### Added
116
+
117
+ - `company modules`: the modules a company can add after creation, with their state and price.
118
+ `company module activate <fundraise|grants|voting|safe|note>` activates one at its credit price.
119
+ - `company incorporate --modules fundraise,grants,voting --preload <usd>`: activate modules and buy credits right after
120
+ the company is created.
121
+ - `compliance rule attach --kind max-holders-total [--max-holders <n>] [--unrecorded <n>]`: the company holder cap.
122
+ A later class joins the company's one instance.
123
+ - `compliance set unrecorded-holders --count <n>`: holders the company has outside obolos, up to 1,000,000.
124
+ - `compliance set max-holders` now sets whichever cap the entity takes.
125
+ - `sdk prepare compliance.setUnrecordedHolders`.
126
+ - `company incorporate --entity lp`: a Delaware limited partnership.
127
+ - `compliance presets --all`: every preset as defined, ignoring the selected company.
128
+ - `grant confirm-exercise <grantId> [--paid-on <date>] [--document <ref>]`: confirm a holder paid the strike of their
129
+ pending option or warrant exercise, which settles the shares to them; `--paid-on` is when the payment arrived (the
130
+ exercise date, defaulting to now) and `--document` names a payment receipt, if any. It confirms only the request it
131
+ showed, and only until the settlement window after the grant's expiry closes. `grant decline-exercise <grantId>`
132
+ declines an unpaid request while the grant is open; a paid one always settles. `sdk prepare grants.confirmExercise`
133
+ builds the confirmation directly, `sdk prepare grants.setSettlementWindow` sets the window (7 to 365 days, 14 until
134
+ set) and `sdk read grants.settlementWindow` reads it; `pool show` and `grant exercises` show it in days.
135
+ - `grant withdraw-exercise <grantId>`: the holder withdraws their own request before its payment is on record.
136
+ `grant settle-exercise <grantId>`: publish an exercise's vesting check and settle it, your own or, for the company,
137
+ one whose payment is on record; a denial of a paid exercise says to return the payment to the holder.
138
+ `grant exercises [--holder <addr>]`: the exercises in flight, each with the date to confirm it by, the payment
139
+ reference the holder quotes and, with `--reveal`, the amount due.
140
+ - A holder who can't hold the shares when their exercise settles, refused by the class's rules or frozen, has them
141
+ parked to claim later (`shares claim`); the exercise commands say so. `shares claim` says when your wallet is still
142
+ frozen on the class and the company has to lift the freeze first.
143
+ - `grant cleanup` waits out the company's settlement window after an option or warrant expires, and
144
+ `grant record-exercise` refuses a payment dated before the grant's last vesting change.
145
+ - `grant record-exercise <grantId> --shares <qty> --document <ref> [--paid-on <date>]`: for a holder who can't request
146
+ it, record an option or warrant exercise on their signed notice, then settle it to the holder. A notice and payment
147
+ that arrived before expiry stay recordable for the settlement window after it, and vesting counts as of
148
+ `--paid-on`. A data room notice is hashed onto the record; any other reference records no hash, with a warning that
149
+ the link is public.
150
+ - `grant exercise` opens a confidential session when your key is configured, refuses a strike request for more than has
151
+ vested, and quotes the amount due in its payment note; without the key it warns that such a request is refused
152
+ publicly. It refuses a `--net` exercise that nets less than one whole share at the current valuation, and phantom
153
+ units at or under water, when your key can read the strike and the valuation, and warns when it can't.
154
+ - `--paid-on <date>` on `grant confirm-exercise` and `grant record-exercise` counts to the end of that UTC day, or now
155
+ if sooner, and for a record to before expiry, so the vesting check counts the whole day; the date on record stays that
156
+ day.
157
+ - `grant count-exercise <grantId>`: the company counts the shares a holder's net exercise nets at the valuation it was
158
+ filed at, which the holder never sees, then publishes the count and settles them to the holder. `grant exercise
159
+ --net` now only files the request; `grant settle-exercise` refuses a net request until it is counted, and
160
+ `grant exercises` and `grant show` say whether one is counted. `sdk prepare grants.confirmNetExercise` takes a sealed
161
+ count, so it goes through the command. Grant, warrant, milestone and schedule amounts are sealed as whole shares: a
162
+ fraction is refused before anything is sent.
163
+
164
+ - `fundraise hardcap <round> --amount <usd>`: raise an open round's hard cap when an investor wants to put in more, or
165
+ lower it, never below the money in; zero lifts it.
166
+ - `sdk prepare grants.acceptGrant` and `sdk prepare grants.filePaperAcceptance`: a holder's signed acceptance of a
167
+ grant's document, and the company's filing of one given on paper. A grant without a document hash is accepted too,
168
+ and a paper filing takes any scan link, with a `scanHash` of zero unless the scan is a data room document.
169
+ - `docs list --history`: earlier versions too, each with the reference of the version that superseded it.
170
+ - `grant attach-document <grantId> --document <ref>`: attach a data room document, with its hash, to a grant that
171
+ records none. Only a data room document is taken, and only its latest version; it is shared with the holder when
172
+ you hold Records. The attach is permanent, and it replaces an outside link the grant was issued with. It clears
173
+ the holder's signed acceptance, which covered no document, so they accept the attached one; a paper acceptance
174
+ stands. `sdk prepare grants.attachDocument` builds the call directly.
175
+ - `grant show` and `grant list` show each grant's document hash and acceptance (`none`, `signed` or `paper`, and when).
176
+
177
+ ### Changed
178
+
179
+ - Reaches the 12 Oct 2026 Arbitrum Sepolia deployment, through SDK 0.35.0.
180
+ - Warrant commands (`grant issue --type warrant`, `pool increase|decrease --budget warrant`, and confirming, recording,
181
+ settling or attaching a document to a warrant) need the Shares role, like every other grant; Fundraise no longer
182
+ covers warrants.
183
+ - `grant issue --milestone` and `vesting create --milestone` take `date:shares` or `<document ref>:date:shares`; the
184
+ leading part was a free-text label and is now a document reference. Every `--document` and `--evidence` refuses text.
185
+ `vesting show` prints each milestone's document reference.
186
+ - `grant exercise` pays no strike on chain. On an option or warrant it files a request: the holder pays the company
187
+ the strike off-platform, and the shares arrive once the company confirms the payment (`grant confirm-exercise`). It
188
+ settles RSUs and phantom units itself, and nets options with `--net`. The prepare action `grants.exerciseGrant`
189
+ replaces `grants.exerciseOptions` and `grants.exercisePhantom`, and `grants.recordExercise` and
190
+ `grants.confirmExercise` are new.
191
+ - `safe issue` and `note issue` require `--document`, the signed agreement's reference, which may be any link. A data
192
+ room document (`obolos://rooms/<room>/folders/<folder>/doc/<index>`) is read with your key and hashed; one stored in
193
+ the clear is hashed with a warning that the investor's private terms are readable. `--document-hash <hex>` gives
194
+ the keccak256 of its bytes instead, and any other link records no hash. A data room document you can't open, such as
195
+ a removed one, is refused, as in the app.
196
+ - A command that records a `--document` hashes a data room document onto the record: its bytes come through
197
+ `OBOLOS_API_URL` or the API the project signed in to, and it opens with your key. Any other reference, an `ipfs://`
198
+ file included, records no hash.
199
+ - `docs replace` files the new version as a new document at a new reference, which the run file's outputs carry
200
+ (`documentRef`, and the old reference as `replaces`); the old reference keeps its bytes and readers. A reference
201
+ that already has a newer version is refused, naming the latest.
202
+ - `docs list` shows the latest version of each document. `docs show` and `docs read` name the newer version when one
203
+ exists, and `docs sign` warns before signing an earlier version.
204
+ - `docs show` lists every version of the document, oldest first. `docs list` and the folder question count each
205
+ folder's current documents: latest versions only, removed ones left out.
206
+ - `grant transfer` shares the grant's data room document with the new holder when you hold Records and your key is
207
+ configured, so they can accept it. Without the key it still prepares, and warns that the document needs sharing by
208
+ hand; nothing about sharing ever stops a transfer.
209
+ - `grant issue`, `safe issue` and `note issue` share a sealed data room document with the recipient in the issuing
210
+ transaction when you hold Records, and warn otherwise.
211
+ - `safe cancel` and `note cancel` hash a data room `--document` onto the record, like the other commands that record
212
+ one.
213
+ - `docs replace` keeps the document's kind tag, refuses a document whose latest version was removed (upload a new
214
+ one instead), and warns that whoever could read the old version keeps it.
215
+ - A command that hashes a `--document` onto its record warns when that reference has a newer version.
216
+ - `compliance presets` lists the selected company's presets (`--company`, `OBOLOS_COMPANY` or `obolos use`), or every
217
+ preset with the entity types it is offered to when none is selected. `compliance policy create --preset` refuses a
218
+ preset the company's entity type is not offered.
219
+ - `fundraise create` warns, instead of refusing, when a round open to anyone rests on a policy without KYC or
220
+ sanctions: attach the rules before investors pay.
221
+ - Workflow commands open a confidential session only when the path they take needs one: a decline or a withdrawal
222
+ prepares without one, and so does a strike exercise request unless your key is configured, when it checks the request
223
+ against what has vested first.
224
+
225
+ ### Removed
226
+
227
+ - `fundraise create --person-cap`: the maximum investment always counts per person for wallets bound at the company,
228
+ and per wallet otherwise.
229
+
230
+ ### Fixed
231
+
232
+ - `grant exercise` and `grant record-exercise` refuse a grant before its first whole vesting interval has passed, cliff
233
+ or none, as the chain does; `grant exercise` says when the first shares vest.
234
+ - `fundraise reserve --reservation <id>` now sends with a key: the old spot is cancelled, then the new one committed.
235
+ - `fundraise reservation countersign` names the Fundraise viewing permission a signer lacks, before signing.
236
+ - `fundraise subscribe` and `fundraise invest` refuse an address that is not an obolos company.
237
+ - `docs upload` completes its run once the document is filed; it looked for the filing under the room instead of the
238
+ folder.
239
+
240
+ ## [0.7.0] - 2026-09-28
241
+
242
+ ### Added
243
+
244
+ - `passport attest` and `passport activate` for platforms, over the obolos passport API with `OBOLOS_API_KEY`.
245
+ - `passport activate` and `passport attest` take the wallet's `--signature` and its `--issued-at`, and `attest`
246
+ takes the person's `--code`. `--code -` reads the code from stdin, so it stays out of argv. With `--email`, the
247
+ signed message names that email on its `Email:` line. The refusals `consent_required`, `signature_invalid`,
248
+ `locked` and `rate_limited` exit 4 like every other refusal.
249
+ - `fundraise subscribe <round> --amount <usd>` signs the round's published agreement and pays at its public terms in
250
+ one step; a first subscription at the company opens your private channel with it in the same batch. The company
251
+ accepts by signing within seven days, or refunds; left unaccepted, `fundraise exit` takes the money back after
252
+ seven days.
253
+
254
+ ### Changed
255
+
256
+ - **Breaking:** `fundraise create` takes `--agreement <ref>`, the round's agreement, and publishes it unsigned and
257
+ unencrypted in the round's Term Sheets with its hash pinned on the round (`--agreement-hash`, or fetched and hashed
258
+ through `--api-url`) before opening the round. A company without a data room, or an actor without Records
259
+ authority, is refused. `--person-cap` needs `--max` and the company's attestation hub.
260
+ - **Breaking** for rounds open to anyone on custom policies: `fundraise create` without `--whitelist-only` refuses a
261
+ policy that lacks a KYC rule at level 1 or above or a sanctions rule with its oracle set
262
+ (`workflow.fundraise.create.policy_unscreened`, exit 4). Attach them with `compliance rule attach --policy <ref> --kind kyc` or `--kind ofac`, use a policy made from
263
+ a preset, or pass `--whitelist-only`; the company then vets who subscribes.
264
+ - **Breaking:** `fundraise invest` requires `--reservation <id>` and pays a spot the company committed and signed,
265
+ signing its agreement in the same step when you have not, after checking the spot's sealed terms open its
266
+ commitment; `--draft-hash` names a bespoke draft. With a plain key, each step is its own transaction. Subscribing
267
+ at the round's terms is `fundraise subscribe`.
268
+ - **Breaking:** `fundraise reservation countersign --reservation <ids...>` signs deals for the company, several in
269
+ one batch: a spot committed unsigned, one the investor signed first, or a subscription, where signing is the
270
+ acceptance. A subscription older than seven days can no longer be accepted (`acceptance_closed`, exit 4).
271
+ `--draft-hash` names bespoke drafts, and `--paper` files the company's paper signatures instead.
272
+ - **Breaking:** `fundraise record` requires `--reservation <id>`, a spot the company signed. `--document` is the
273
+ investor's paper signature, filed in the same run unless one is on record. Past the round's deadline it is refused
274
+ (`deadline_passed`, exit 4), as the contract refuses the record.
275
+ - `fundraise reserve` commits a spot for a named investor at the round's terms or bespoke ones (`--cap`,
276
+ `--discount`, `--mfn`, `--pro-rata`), over the round's agreement or a bespoke draft (`--draft-hash`), signed for the
277
+ company when you sign documents (`--unsigned` leaves it for a signer). `--reservation <id>` replaces an unfunded
278
+ spot in one batch.
279
+ - `fundraise reservation sign` signs a spot as its investor without paying, for a wire or to pay later;
280
+ `reservation file` files an investor's paper signature; `reservation attach` attaches or replaces a spot's
281
+ document, and both signatures start over; `reservation cancel` withdraws an unfunded spot or refunds a funded
282
+ allocation.
283
+ - `obolos send` hands a run that pins documents storage through the API the project's session signed in to, with that
284
+ session, which goes to no other API; nothing of the session goes into the run file. A run recording another API
285
+ (`normalizedInput.apiUrl`) is refused (`cli.usage`), since its file carries no key and may be edited. A command
286
+ pinning through another API than the session's (`--api-url`, `OBOLOS_API_URL`) is not handed the session and asks
287
+ for a sign-in. A stage stopped for storage says how to resume.
288
+ - **Breaking:** the passport commands send `OBOLOS_API_KEY` only to `OBOLOS_API_URL` or the default API, never
289
+ to the `apiUrl` of a project's `.obolos/session.json`, which could send the key anywhere. `passport attest`
290
+ prints `status: "code_sent"` for an email's first call and `credentialId` in place of `passportId`.
291
+ - **Breaking:** `identity activate` is gone with holder-side activation; platforms use `passport activate`.
292
+ - **Breaking:** `identity secret store`, `identity secret clear` and `identity secret recover` are gone with the
293
+ hub's identity vault, and `identity status` no longer reports it.
294
+ - **Breaking:** `compliance rule attach` and `compliance set accreditation` drop `--qp`. The accredited rule no
295
+ longer carries a qualified-purchaser alternative; qualified-purchaser status is a `qpType` predicate.
296
+
297
+ ### Fixed
298
+
299
+ - The provider key (`OBOLOS_API_KEY`) is sent only to `OBOLOS_API_URL` or the default API, never to the API a project's
300
+ `.obolos/session.json` names, so a cloned repository cannot redirect it.
301
+ - The private-key error no longer echoes the rejected value: a malformed `OBOLOS_PRIVATE_KEY` or mnemonic
302
+ used to appear verbatim in `--json` output and on stderr.
303
+ - An acting address that is not an address is refused naming where it came from (`--from`, `OBOLOS_FROM`
304
+ or `.obolos/config.json`), never quoting it, so a private key set there no longer reaches the output.
305
+ - Invalid JSON input keeps the parser's account of the fault but drops its excerpt of the text, so a malformed
306
+ input file never prints what it holds.
307
+ - `send`, `resume` and `--send` validate `--confirmations` before broadcasting; `0`, a negative value or a
308
+ fraction used to send the stage anyway and then hang waiting to reach it.
309
+ - A plan send whose transaction is not included within 120s stops with exit 5 instead of waiting forever,
310
+ and says the transaction may still land, so it is checked by hash before the plan is sent again. Once it
311
+ is included, extra `--confirmations` are waited out untimed, so a mined transaction is never reported as
312
+ unmined and re-sent.
313
+ - `sdk read` and `sdk prepare` refuse internal client plumbing (`executor`, `workflows`, `actions`, ...), and
314
+ builders that take a sealed input or a CoFHE proof (`grants.exerciseNet`, `voting.castBallot`,
315
+ `voting.castBallotFor`) are classified confidential rather than read or plain prepare.
316
+ - `parsePlan` refuses calldata that is not a whole number of bytes.
317
+
318
+ ### Changed
319
+
320
+ - The CLI resolves `@obolos/sdk` from the workspace, so the next build also carries the SDK's narrower
321
+ jurisdiction gate (ADR 17: rounds, direct SAFE and note issuance, comp grants and warrants only) and its
322
+ stricter sharing- and prover-permit scoping, with no CLI code of its own to change.
323
+
324
+ ## [0.6.0] - 2026-09-16
325
+
326
+ ### Added
327
+
328
+ - `obolos distribution`: `dividend` and `waterfall` prepare a distribution (`--payment-date`,
329
+ `--claim-window-days`, `--exclude`, `--off-platform`, `--unvested pay|hold`), then `pay`, `record`,
330
+ `top-up`, `claim`, `claim-pending`, `close`, `cancel` and `show` carry it through settlement.
331
+
332
+ ### Changed
333
+
334
+ - Licensed under the obolos Source Available License 1.0 instead of BUSL-1.1.
335
+
336
+ ### Removed
337
+
338
+ - The dividend commands.
339
+
340
+ ## [0.5.0] - 2026-09-12
341
+
342
+ ### Fixed
343
+
344
+ - `compliance presets` works with an actor configured through `--from`, the environment, local config,
345
+ or a signer. Commands only inject an `actor` input when the workflow schema declares it.
346
+
347
+ ### Added
348
+
349
+ - `shares parked list --holder <address>` shows a wallet's unclaimed parked lots, and
350
+ `shares parked cancel --holder <address> --lot <id>` voids one that must never be claimed.
351
+
352
+ - `shares issue --issued <date>` records an existing holding's acquisition date without
353
+ requiring a round. `shares claim --lot <id>` selects a parked allocation; the CLI asks
354
+ when several exist. Claims preserve each allocation's date and require current eligibility.
355
+
356
+ - `fundraise create --policy` takes an address or a name and must point at a policy that already
357
+ carries its rules (`compliance policy create`, `compliance rule attach`); the `create` shortcut is
358
+ gone. Missing SAFE or note terms are asked for; `--cap none`, `--discount none`, `--no-mfn`,
359
+ `--no-pro-rata` and `--no-early-repayment` state a negative without a prompt.
360
+
361
+ ### Changed
362
+
363
+ - `conversion trigger` no longer prices anything. It reopens a qualifying round's lapsed series
364
+ (`--round <id>`, default the latest qualifying round) on that round's own class, price and
365
+ pre-money basis, over the instruments outstanding when the round qualified. `--class`,
366
+ `--price` and `--document` are gone; a priced round finalizing at the threshold opens the
367
+ series itself.
368
+
369
+ ### Added
370
+
371
+ - `obolos skills install|list`: the `use-obolos` Agent Skill now ships with this package. It is
372
+ installed to the cross-agent `~/.agents/skills` root plus every detected agent directory
373
+ (Claude Code, Cursor, OpenCode, GitHub Copilot, Factory Droid), is idempotent, refuses to
374
+ overwrite a locally edited copy without `--replace`, and backs one up when replacing. `--agent`
375
+ accepts `codex`, `gemini`, `amp`, `cline` and `warp` as names for that shared root. Moved
376
+ here from `@obolos/sdk`, whose `obolos-skill` binary is gone: the skill routes an agent to
377
+ these commands, so it belongs with the package that provides them and versions with it.
378
+ - Initial SDK-backed `obolos` CLI with dynamic reads and preparation, tamper-evident plans,
379
+ batching, simulation, company/jurisdiction inspection, structured error decoding, diagnostics,
380
+ and guarded user-owned-key sending.
381
+ - Versioned workflow discovery/preparation (`workflow list|describe|prepare`) and the user-intent
382
+ `shares issue` command, both backed by `@obolos/sdk/workflows` with no duplicated ABI or rules.
package/LICENSE ADDED
@@ -0,0 +1,134 @@
1
+ obolos Source Available License 1.0
2
+ ===================================
3
+
4
+ Licensor: Obolos Group Incorporated
5
+
6
+ Software: the software the Licensor distributes with this license, including
7
+ the obolos protocol contracts and circuits, the SDK, the CLI, the indexer and
8
+ the backend, each version separately
9
+
10
+ Other licenses: legal@obolos.io
11
+
12
+ 1. Acceptance. By using the Software you agree to these terms as conditions of
13
+ every license they grant. If you do not agree, you have no license.
14
+
15
+ 2. What you may do.
16
+
17
+ (a) Non-Production Use. You may copy, modify, create derivative works of, and
18
+ distribute the Software for Non-Production Use.
19
+
20
+ (b) Use with Authorised Deployments. You may use, modify and combine with
21
+ your own software the SDK, the CLI, the interface definitions and the
22
+ documentation in Production Use to interact with Authorised Deployments,
23
+ including to build and operate your own products that interact with
24
+ Authorised Deployments.
25
+
26
+ (c) Conditions. Every copy or derivative work you distribute must carry this
27
+ license, the Licensor's copyright notice and any Required Notice, and
28
+ must identify the changes you made. You may not remove or obscure a
29
+ notice or any licensee identification in the Software. A product built
30
+ under section 2(b) may include the SDK and the interface definitions in
31
+ compiled or bundled form without identifying changes, provided the
32
+ notices in the Software's own files are kept.
33
+
34
+ 3. What you may not do. Without a separate written license from the Licensor,
35
+ you may not:
36
+
37
+ (a) deploy the protocol contracts, or any derivative work or compiled form of
38
+ them, to any network, or operate such a deployment, other than as an
39
+ Authorised Deployment or as Non-Production Use;
40
+
41
+ (b) use the Software, its interface definitions, ABIs, schemas or
42
+ documentation to deploy, operate or interact with any implementation or
43
+ redeployment of the protocol that is not an Authorised Deployment, other
44
+ than as Non-Production Use;
45
+
46
+ (c) make Production Use of the Software or any derivative work except as
47
+ section 2(b) allows;
48
+
49
+ (d) use the Software or any derivative work to provide a Competing Product;
50
+
51
+ (e) sublicense or transfer your licenses.
52
+
53
+ 4. Patents. The Licensor grants you a license under the patent claims it can
54
+ license that your permitted use of the Software would otherwise infringe, for
55
+ that permitted use only. If you or your company make a written claim that the
56
+ Software, or a product or service of the Licensor that uses it, infringes a
57
+ patent, your patent license ends immediately.
58
+
59
+ 5. Contributions. If you submit changes or new works to the Licensor, you grant
60
+ the Licensor a perpetual, irrevocable, worldwide, royalty-free, sublicensable
61
+ license, including under any patent claims you can license, to use, modify,
62
+ distribute and relicense them under any terms, and you confirm that you have
63
+ the right to grant it.
64
+
65
+ 6. Third-party components. Third-party components included with the Software
66
+ remain under their own licenses, which are identified in the Software. These
67
+ terms do not apply to them and do not limit the rights those licenses give you.
68
+
69
+ 7. No trademark rights. These terms grant no right to use the name obolos or
70
+ any other name, mark or logo of the Licensor, except to describe the origin of
71
+ the Software accurately.
72
+
73
+ 8. Term and termination. Your licenses continue for as long as you comply with
74
+ these terms and do not expire or convert to any other license. They end
75
+ automatically if you violate these terms. The first time the Licensor notifies
76
+ you in writing of a violation, your licenses continue if you cure it within 30
77
+ days of the notice, except that a violation of section 3(a), 3(b) or 3(d) ends
78
+ your licenses for every current and later version of the Software immediately.
79
+ Termination of your licenses does not end the licenses of people who received
80
+ the Software from you in compliance with these terms.
81
+
82
+ 9. Versions and other rights. This license applies separately to each version
83
+ of the Software. The Licensor may offer later versions under different terms
84
+ and may grant anyone other licenses. All rights not expressly granted are
85
+ reserved. Nothing in these terms limits rights you have under applicable law
86
+ that cannot be limited by contract, including fair use, and where the law does
87
+ not allow these terms to restrict the use of interface information to achieve
88
+ the interoperability of an independently created program, they do not restrict
89
+ it. If any term is unenforceable, the rest remain in force. This is not an
90
+ open-source license.
91
+
92
+ 10. No warranty and no liability. The Software is provided as is, without
93
+ warranty of any kind, express or implied, including merchantability, fitness
94
+ for a particular purpose, title and non-infringement. To the extent the law
95
+ allows, the Licensor is not liable for any damages arising out of these terms
96
+ or your use of the Software, under any legal theory.
97
+
98
+ 11. Definitions.
99
+
100
+ (a) "Authorised Deployment" means an instance of the protocol contracts
101
+ deployed by the Licensor, or by another person with the Licensor's
102
+ written authorisation, at the addresses the Licensor publishes, including
103
+ in the SDK's address configuration, together with every contract created,
104
+ directly or indirectly, by such an instance.
105
+
106
+ (b) "Non-Production Use" means use for evaluation, development, testing,
107
+ security research, audit or education that, if it runs on a network, runs
108
+ only on a local, test or development network, does not create, record or
109
+ transfer rights, obligations or value for any person, and does not
110
+ provide the Software's functionality to third parties as a product or
111
+ service. Any other use is "Production Use".
112
+
113
+ (c) "Competing Product" means a product or service, whether or not offered
114
+ for a fee, that provides functionality substantially similar to the
115
+ Software or to a product or service that the Licensor or one of its
116
+ affiliates provides using the Software, regardless of interface,
117
+ platform, network or programming language. A product that provides its
118
+ functionality through Authorised Deployments is not a Competing Product.
119
+
120
+ (d) "You" means the person or entity agreeing to these terms, and "your
121
+ company" means every organisation you work for and every organisation
122
+ that controls, is controlled by, or is under common control with it.
123
+
124
+ (e) An "affiliate" of the Licensor is any organisation that controls, is
125
+ controlled by, or is under common control with it. Control means the
126
+ power to direct an organisation's management and policies, by ownership,
127
+ vote, contract or otherwise.
128
+
129
+ (f) "Distribute" includes making the Software, or any part of it, available
130
+ to third parties by any means.
131
+
132
+ Required Notice: Copyright (c) 2026 Obolos Group Incorporated. Licensed under
133
+ the obolos Source Available License 1.0, [https://obolos.io/license].
134
+ Commercial licenses: legal@obolos.io.