epistery 1.0.3 → 1.0.5

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/CLI.md CHANGED
@@ -11,7 +11,7 @@ epistery initialize localhost
11
11
  # Set as default
12
12
  epistery set-default localhost
13
13
 
14
- # Make authenticated requests (automatic key exchange on first use)
14
+ # Make authenticated requests
15
15
  epistery curl https://wiki.rootz.global/wiki/Home
16
16
  ```
17
17
 
@@ -30,14 +30,13 @@ epistery initialize wiki.rootz.global
30
30
 
31
31
  ### `epistery curl [options] <url>`
32
32
 
33
- Make authenticated HTTP request. Automatically performs key exchange on first use.
33
+ Make authenticated HTTP requests using bot authentication (signs each request with wallet).
34
34
 
35
35
  **Options:**
36
- - `-w, --wallet <domain>` - Use specific domain (overrides default)
36
+ - `-w, --wallet <domain>` - Use specific domain wallet (overrides default)
37
37
  - `-X, --request <method>` - HTTP method (default: GET)
38
- - `-d, --data <data>` - Request body data
38
+ - `-d, --data <data>` - Request body data (must be quoted JSON string)
39
39
  - `-H, --header <header>` - Additional headers
40
- - `-b, --bot` - Use bot auth header (default: session cookie)
41
40
  - `-v, --verbose` - Show detailed output
42
41
 
43
42
  **Examples:**
@@ -45,16 +44,24 @@ Make authenticated HTTP request. Automatically performs key exchange on first us
45
44
  # GET request (uses default domain)
46
45
  epistery curl https://wiki.rootz.global/wiki/Home
47
46
 
48
- # Use specific domain
49
- epistery curl -w localhost https://localhost:4080/session/context
47
+ # Use specific domain wallet
48
+ epistery curl -w localhost https://localhost:4080/wiki/Home
49
+
50
+ # PUT request with JSON data (note single quotes around JSON)
51
+ epistery curl -X PUT -d '{"title":"Test","body":"# Test"}' https://wiki.rootz.global/wiki/Test
50
52
 
51
53
  # POST request
52
- epistery curl -X POST -d '{"title":"Test","body":"# Test"}' https://wiki.rootz.global/wiki/Test
54
+ epistery curl -X POST -d '{"name":"value"}' https://api.example.com/endpoint
53
55
 
54
- # Bot mode (no session, sign per request)
55
- epistery curl --bot https://wiki.rootz.global/session/context
56
+ # Verbose output for debugging
57
+ epistery curl -v https://wiki.rootz.global/wiki/Home
56
58
  ```
57
59
 
60
+ **Important Notes:**
61
+ - Always use **single quotes** around JSON data to prevent shell interpretation
62
+ - The CLI uses bot authentication mode (signs each request individually)
63
+ - No session management - each request is independently authenticated
64
+
58
65
  ### `epistery info [domain]`
59
66
 
60
67
  Show domain information (wallet address, provider, session status).
@@ -84,35 +91,26 @@ Epistery CLI uses the same domain configuration system as the server:
84
91
  │ └── [cli]
85
92
  │ └── default_domain=localhost
86
93
  ├── localhost/
87
- ├── config.ini # Domain config with wallet & provider
88
- │ └── session.json # Session cookie (auto-created)
94
+ └── config.ini # Domain config with wallet & provider
89
95
  └── wiki.rootz.global/
90
- ├── config.ini
91
- └── session.json
96
+ └── config.ini
92
97
  ```
93
98
 
94
- ### Authentication Modes
95
-
96
- **Session Cookie (Default):**
97
- - Performs key exchange once, saves session cookie
98
- - Subsequent requests use cookie
99
- - Best for multiple requests to same server
100
-
101
- **Bot Auth Header (`--bot`):**
102
- - Signs each request individually
103
- - No session management
104
- - Best for distributed systems or one-off requests
99
+ ### Authentication
105
100
 
106
- ### Automatic Key Exchange
101
+ The CLI uses **bot authentication mode**, which signs each request individually with the domain wallet's private key:
107
102
 
108
- The `curl` command automatically performs key exchange when needed:
103
+ 1. Load domain wallet from `~/.epistery/{domain}/config.ini`
104
+ 2. Create authentication message with current timestamp
105
+ 3. Sign message with wallet's private key
106
+ 4. Send signature in `Authorization: Bot <base64-encoded-json>` header
107
+ 5. Server verifies signature and authenticates request
109
108
 
110
- 1. Check for existing session in `~/.epistery/{domain}/session.json`
111
- 2. If no session, perform key exchange with server
112
- 3. Save session cookie for future requests
113
- 4. Make the actual HTTP request
114
-
115
- No manual "connect" step required!
109
+ **Benefits:**
110
+ - Stateless - no session management needed
111
+ - Secure - private keys never leave your machine
112
+ - Simple - works immediately after initialization
113
+ - Reliable - each request is independently authenticated
116
114
 
117
115
  ## Usage Patterns
118
116
 
@@ -202,32 +200,19 @@ name=polkadot-hub-testnet
202
200
  rpc=https://testnet-passet-hub-eth-rpc.polkadot.io
203
201
  ```
204
202
 
205
- ### Session File (`~/.epistery/{domain}/session.json`)
206
-
207
- Auto-created by `epistery curl`:
208
-
209
- ```json
210
- {
211
- "domain": "https://wiki.rootz.global",
212
- "cookie": "session_token_here",
213
- "authenticated": true,
214
- "timestamp": "2025-01-10T12:00:00.000Z"
215
- }
216
- ```
217
-
218
203
  ## Security
219
204
 
220
205
  - Domain configs stored with 0600 permissions (user only)
221
206
  - Private keys never transmitted (only signatures)
222
207
  - Each domain has its own isolated wallet
223
- - Session cookies saved securely per domain
208
+ - Each request is signed with fresh timestamp to prevent replay attacks
224
209
 
225
210
  ## Design Philosophy
226
211
 
227
212
  The Epistery CLI uses a unified command structure with subcommands:
228
213
  - ✅ Uses existing Epistery domain config system
229
214
  - ✅ Consistent with server-side architecture
230
- - ✅ Automatic key exchange (no manual connect step)
215
+ - ✅ Bot authentication (stateless, no session management)
231
216
  - ✅ Default domain support (less typing)
232
217
  - ✅ Simpler mental model (domain = wallet)
233
218
 
@@ -259,28 +244,19 @@ epistery curl -w staging.example.com https://staging.example.com/api/status
259
244
  epistery curl -w prod.example.com https://prod.example.com/api/status
260
245
  ```
261
246
 
262
- ### Bot Mode
263
-
264
- ```bash
265
- # Bot mode doesn't need session, signs each request
266
- epistery curl --bot https://wiki.rootz.global/session/context
267
- epistery curl --bot -X POST -d '{"title":"Log","body":"# Entry"}' https://wiki.rootz.global/wiki/Log
268
- ```
269
-
270
247
  ## Troubleshooting
271
248
 
272
249
  **"Domain not found or has no wallet"**
273
250
  - Run `epistery initialize <domain>` first
274
251
 
275
- **"Key exchange failed"**
276
- - Check server is running and accessible
277
- - Verify URL is correct
278
- - Use `-v` flag for detailed output
252
+ **401 Unauthorized errors**
253
+ - Server may not recognize your wallet address
254
+ - Check that your address is authorized on the server
255
+ - Use `-v` flag for detailed debugging output
279
256
 
280
- **"Failed to obtain session cookie"**
281
- - Server may not be setting cookies
282
- - Try `--bot` mode instead
283
- - Check server configuration
257
+ **JSON parsing errors**
258
+ - Ensure JSON data is wrapped in **single quotes**: `'{"key":"value"}'`
259
+ - Check that JSON is valid (use a JSON validator if needed)
284
260
 
285
261
  ## Integration
286
262
 
package/README.md CHANGED
@@ -6,13 +6,17 @@ _Epistemology is the study of knowledge. An Epistery, it follows, is a place to
6
6
 
7
7
  ## What Does Epistery Do?
8
8
 
9
- Epistery adds blockchain-backed identity and data wallet capabilities to any Express.js application through a simple plugin architecture. It provides:
9
+ Epistery establishes a transactional wallet for both browser and server along with the session handshake. This provides:
10
10
 
11
- - **Decentralized Authentication**: Wallet-based user authentication with automatic key exchange
12
- - **Data Wallets**: Blockchain-anchored data ownership and provenance tracking
11
+ - **Decentralized Authentication**: Wallet-based user authentication using cryptographic signatures
12
+ - **Data Wallets**: Blockchain smart contracts for data ownership, encryption, sharing, and transfer
13
13
  - **Whitelist Management**: On-chain access control for domains and users
14
- - **CLI Tools**: Command-line interface for authenticated API requests
14
+ - **CLI Tools**: Command-line interface for authenticated API requests using bot mode
15
15
  - **Client Libraries**: Browser-based wallet and authentication tools
16
+ - **Configuration Management**: Path-based filesystem-like API for secure configuration storage
17
+
18
+ >*NOTE:* The client wallet (signing key) is held in localStorage under strict domain rules unless the user presents
19
+ > a selected wallet from a web3 plugin
16
20
 
17
21
  ## Quick Start
18
22
 
@@ -100,7 +104,7 @@ app.get('/profile', (req, res) => {
100
104
 
101
105
  ### 2. Data Wallets
102
106
 
103
- Data wallets attach blockchain-based ownership and provenance to any data:
107
+ Data wallets are blockchain smart contracts that provide ownership, encryption, sharing, and transfer capabilities for any data. They combine on-chain ownership records with off-chain storage:
104
108
 
105
109
  ```javascript
106
110
  // Client creates data wallet
@@ -113,11 +117,17 @@ const dataWallet = await client.write({
113
117
  // Read data wallet
114
118
  const data = await client.read();
115
119
 
116
- // Transfer ownership
120
+ // Transfer ownership to another address
117
121
  await client.transferOwnership(newOwnerAddress);
118
122
  ```
119
123
 
120
- Data wallets use IPFS for storage by default, with only hashes and ownership records stored on-chain.
124
+ **Data Wallet Features:**
125
+ - **Blockchain Contracts**: Each data wallet is a smart contract on-chain
126
+ - **Encryption**: Data can be encrypted before storage
127
+ - **Sharing**: Grant read/write access to specific addresses
128
+ - **Transferable**: Ownership can be transferred to other wallets
129
+ - **IPFS Storage**: Content stored on IPFS by default, with hashes on-chain
130
+ - **Provenance Tracking**: Full ownership and modification history on-chain
121
131
 
122
132
  ### 3. Whitelist Management
123
133
 
@@ -135,7 +145,7 @@ Whitelist data is stored on the blockchain and managed through your domain's wal
135
145
 
136
146
  ### 4. CLI Tools
137
147
 
138
- The Epistery CLI enables authenticated API requests from the command line or automation scripts:
148
+ The Epistery CLI enables authenticated API requests from the command line using bot authentication (stateless, signs each request):
139
149
 
140
150
  ```bash
141
151
  # Initialize a CLI wallet
@@ -145,11 +155,14 @@ epistery set-default localhost
145
155
  # Make authenticated GET request
146
156
  epistery curl https://api.example.com/data
147
157
 
148
- # POST request with data
149
- epistery curl -X POST -d '{"title":"Test"}' https://api.example.com/wiki/Test
158
+ # PUT request with JSON data (note single quotes)
159
+ epistery curl -X PUT -d '{"title":"Test","body":"Content"}' https://api.example.com/wiki/Test
150
160
 
151
161
  # Use specific wallet
152
162
  epistery curl -w production.example.com https://api.example.com/data
163
+
164
+ # Verbose output for debugging
165
+ epistery curl -v https://api.example.com/data
153
166
  ```
154
167
 
155
168
  Perfect for:
@@ -158,20 +171,21 @@ Perfect for:
158
171
  - Creating bots and agents
159
172
  - CI/CD integration
160
173
 
174
+ **CLI uses bot authentication** - each request is independently signed with the wallet's private key, no session management required.
175
+
161
176
  See [CLI.md](CLI.md) for complete CLI documentation.
162
177
 
163
178
  ## Configuration
164
179
 
165
- Epistery uses a filesystem-based configuration system stored in `~/.epistery/`:
180
+ Epistery uses a path-based configuration system stored in `~/.epistery/` with a filesystem-like API:
166
181
 
167
182
  ```
168
183
  ~/.epistery/
169
- ├── config.ini # Global settings
184
+ ├── config.ini # Root config (profile, IPFS, defaults)
170
185
  ├── mydomain.com/
171
- ├── config.ini # Domain wallet & provider
172
- │ └── sessions/ # Session data
186
+ └── config.ini # Domain config (wallet, provider)
173
187
  └── .ssl/
174
- └── mydomain.com/ # SSL certificates
188
+ └── mydomain.com/ # SSL certificates (optional)
175
189
  ```
176
190
 
177
191
  ### Root Config (`~/.epistery/config.ini`)
@@ -188,6 +202,9 @@ url=https://rootz.digital/api/v0
188
202
  chainId=420420422
189
203
  name=polkadot-hub-testnet
190
204
  rpc=https://testnet-passet-hub-eth-rpc.polkadot.io
205
+
206
+ [cli]
207
+ default_domain=localhost
191
208
  ```
192
209
 
193
210
  ### Domain Config (`~/.epistery/mydomain.com/config.ini`)
@@ -208,6 +225,8 @@ name=polkadot-hub-testnet
208
225
  rpc=https://testnet-passet-hub-eth-rpc.polkadot.io
209
226
  ```
210
227
 
228
+ The Config class provides a path-based API that works like navigating a filesystem - set a path, load data, modify it, and save. This makes configuration management simple and predictable across all Epistery applications.
229
+
211
230
  ## Advanced Usage
212
231
 
213
232
  ### Custom Authentication
@@ -294,11 +313,12 @@ See [Architecture.md](Architecture.md) for detailed architecture documentation.
294
313
 
295
314
  ## Security
296
315
 
297
- - Domain configs stored with 0600 permissions (user-only access)
298
- - Private keys never transmitted (only signatures)
299
- - Each domain has isolated wallet
300
- - Session cookies saved securely per domain
301
- - Key exchange uses ECDH for secure shared secrets
316
+ - **Private Key Protection**: Domain configs stored with 0600 permissions (user-only access)
317
+ - **Signature-Only Transmission**: Private keys never transmitted, only cryptographic signatures
318
+ - **Wallet Isolation**: Each domain has its own isolated wallet
319
+ - **Bot Authentication**: Stateless authentication with per-request signing and timestamp-based replay protection
320
+ - **Encrypted Key Exchange**: Browser clients use ECDH for secure shared secret establishment
321
+ - **On-Chain Verification**: Whitelist and ownership data stored immutably on blockchain
302
322
 
303
323
  ## License
304
324
 
package/dist/epistery.js CHANGED
@@ -33,7 +33,7 @@ class Epistery {
33
33
  nativeCurrency = {
34
34
  symbol: server.provider.nativeCurrencySymbol,
35
35
  name: server.provider.nativeCurrencyName || server.provider.nativeCurrencySymbol,
36
- decimals: server.provider.nativeCurrencyDecimals || 18
36
+ decimals: Number(server.provider.nativeCurrencyDecimals) || 18
37
37
  };
38
38
  }
39
39
  const status = {
@@ -1 +1 @@
1
- {"version":3,"file":"epistery.js","sourceRoot":"","sources":["../src/epistery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epistery.js","sourceRoot":"","sources":["../src/epistery.ts"],"names":[],"mappings":"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"}
@@ -184,7 +184,7 @@ admin_address=0x00bf1d35fa5b3cca18e3900b9e0d46f35d2d5a5d
184
184
  [provider]
185
185
  name=Ethereum Mainnet
186
186
  chainId=1
187
- rpcUrl=https://eth.llamarpc.com
187
+ rpc=https://eth.llamarpc.com
188
188
 
189
189
  [wallet]
190
190
  address=0x...
package/index.mjs CHANGED
@@ -203,7 +203,7 @@ class EpisteryAttach {
203
203
  return res.status(401).json({ error: 'Key exchange failed - invalid client credentials' });
204
204
  }
205
205
  const clientInfo = {
206
- address: req.body.clientAddress.toLowerCase(), // Normalize to lowercase for consistent handling
206
+ address: req.body.clientAddress,
207
207
  publicKey:req.body.clientPublicKey
208
208
  }
209
209
  if (this.options.authentication) {
@@ -312,8 +312,8 @@ class EpisteryAttach {
312
312
  console.log(`[debug] Provider payload:`, JSON.stringify(provider, null, 2));
313
313
  console.log(`[debug] Full request body:`, JSON.stringify(req.body, null, 2));
314
314
 
315
- if (!provider || !provider.name || !provider.chainId || !provider.rpcUrl) {
316
- console.log(`[debug] Validation failed: provider=${!!provider}, name=${!!provider?.name}, chainId=${!!provider?.chainId}, rpcUrl=${!!provider?.rpcUrl}`);
315
+ if (!provider || !provider.name || !provider.chainId || !provider.rpc) {
316
+ console.log(`[debug] Validation failed: provider=${!!provider}, name=${!!provider?.name}, chainId=${!!provider?.chainId}, rpc=${!!provider?.rpc}`);
317
317
  return res.status(400).json({ error: 'Invalid provider configuration' });
318
318
  }
319
319
 
@@ -327,7 +327,7 @@ class EpisteryAttach {
327
327
  if (!domainConfig.provider) domainConfig.provider = {
328
328
  chainId: provider.chainId,
329
329
  name: provider.name,
330
- rpc: provider.rpcUrl
330
+ rpc: provider.rpc
331
331
  }
332
332
 
333
333
  // Save domain config with custom provider (marked as pending)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "epistery",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Epistery brings blockchain capabilities to mundane web tasks like engagement metrics, authentication and commerce of all sorts.",
5
5
  "author": "Rootz Corp.",
6
6
  "license": "MIT",
package/src/epistery.ts CHANGED
@@ -43,7 +43,7 @@ export class Epistery {
43
43
  nativeCurrency = {
44
44
  symbol: server.provider.nativeCurrencySymbol,
45
45
  name: server.provider.nativeCurrencyName || server.provider.nativeCurrencySymbol,
46
- decimals: server.provider.nativeCurrencyDecimals || 18
46
+ decimals: Number(server.provider.nativeCurrencyDecimals) || 18
47
47
  };
48
48
  }
49
49