86 lines
5.1 KiB
Markdown
86 lines
5.1 KiB
Markdown
## Roadmap
|
|
|
|
### Configuration file for persistent profiles
|
|
Save user profiles (tokens, user UUIDs, server URLs) to a local configuration file
|
|
(e.g., `~/.kvs/config.json`) that persists across shell sessions. This eliminates
|
|
the need to re-enter authentication details every time the shell starts. The file
|
|
should be stored with restricted permissions (0600) to protect sensitive token data.
|
|
Include commands like `profile save` and `profile load` to manage the persistence
|
|
layer.
|
|
|
|
### Management of local KVS instance configuration file
|
|
Provide commands to read, edit, and validate the KVS server's `config.yaml` file
|
|
directly from the shell. This would allow administrators to modify server settings
|
|
(ports, data directories, cluster secrets, feature flags) without manually editing
|
|
YAML files. Include syntax validation, preview changes before applying, and the
|
|
ability to restart the local KVS instance after configuration changes. This is particularly
|
|
useful for development and testing workflows.
|
|
|
|
### Batch operations from file
|
|
Execute multiple KVS commands from a script file, similar to SQL's source command
|
|
or MongoDB's load(). Support both sequential execution and parallel batch operations
|
|
for improved performance when uploading large datasets. Include error handling options
|
|
(continue on error vs. abort on first error) and progress reporting. This enables
|
|
data migration, testing scenarios, and automated setup workflows.
|
|
|
|
### Export/import functionality
|
|
Export entire key ranges or specific key patterns to JSON, CSV, or custom backup
|
|
formats that preserve UUIDs and timestamps. Import these files back into the same
|
|
or different KVS instances while handling conflicts appropriately. Support filtering
|
|
during export (by key prefix, timestamp range, or pattern matching) and transformation
|
|
during import (key remapping, data modification). This is critical for backup/restore
|
|
operations and cross-environment data synchronization.
|
|
|
|
### Group management commands
|
|
Implement full CRUD operations for groups through the shell: create groups, add/remove
|
|
members, list all groups, and view group details. Include commands like `group create
|
|
<name>`, `group add-member <group-uuid> <user-uuid>`, and `group members <group-uuid>`.
|
|
This complements the existing user management commands and enables complete administration
|
|
of the authorization system. Support bulk operations for adding multiple members
|
|
at once.
|
|
|
|
### Metadata management
|
|
Expose the resource metadata API (owner UUID, group UUID, permissions, TTL) through
|
|
intuitive shell commands. Allow viewing and modifying POSIX-inspired permission
|
|
bits for any key, changing ownership, and setting TTLs. Include commands like `metadata
|
|
get <key>`, `metadata set-owner <key> <user-uuid>`, and `metadata chmod <key> <permissions>`.
|
|
Display permissions in both numeric (e.g., 3840) and symbolic formats (e.g., `rwxr--r--`)
|
|
for usability.
|
|
|
|
### Query filtering and pagination
|
|
Add support for filtering keys by prefix, timestamp range, or pattern matching when
|
|
listing or searching. Implement pagination for large result sets with commands like
|
|
`list --prefix users/ --limit 50 --offset 100`. Include sorting options (by key name,
|
|
timestamp, or data fields) and output formatting (table, JSON, compact). This makes
|
|
it practical to explore and manage large datasets without overwhelming the terminal
|
|
with output.
|
|
|
|
### TLS/SSL support
|
|
Enable secure HTTPS connections to KVS servers with proper certificate validation.
|
|
Support custom CA certificates for self-signed deployments and client certificate
|
|
authentication for mutual TLS. Include commands to configure TLS settings: `tls
|
|
enable`, `tls cert <path>`, and `tls verify on/off`. Display connection security
|
|
status in the prompt (e.g., `kvs(secure)>`) to provide visual confirmation of encrypted
|
|
connections.
|
|
|
|
### Shell scripts execution
|
|
Create a scripting language or format for automating complex workflows that combine
|
|
multiple KVS operations with conditional logic and variables. Scripts could include
|
|
loops, conditionals, error handling, and variable substitution (e.g., `$UUID`, `$TIMESTAMP`).
|
|
Support both embedded scripts (via heredoc syntax) and external script files. Include a
|
|
library of common scripts for tasks like data migration, testing, and bulk updates.
|
|
|
|
### Tab completion for keys
|
|
Implement intelligent tab completion that fetches existing keys from the server
|
|
and suggests completions as you type. Cache key prefixes locally to minimize server
|
|
requests while typing. Support completion for key paths (e.g., typing `users/a<tab>`
|
|
would suggest `users/alice`, `users/admin`). Include fuzzy matching and recent key
|
|
history to speed up navigation of frequently accessed keys.
|
|
|
|
### Transaction support
|
|
Provide multi-key atomic operations through a transaction API, allowing users to
|
|
group multiple get/put/delete operations that either all succeed or all fail together.
|
|
Use syntax like `begin`, `commit`, and `rollback` commands to demarcate transaction
|
|
boundaries. Support read-your-writes consistency within a transaction and optimistic
|
|
concurrency control with conflict detection. This would require backend support
|
|
for transactions, which may need to be implemented in the KVS server first. |