Commit Graph

20 Commits

Author SHA1 Message Date
Manoj Bajaj a033bfe93f chore: satisfy pylint ruff checks 2026-06-04 22:22:50 +05:30
Manoj Bajaj bfd84b5010 refactor: metadata doesnt need separate file 2026-06-04 19:34:26 +05:30
Manoj Bajaj b96d593883 fix: resolve pre-commit failures 2026-06-04 11:50:56 +05:30
Manoj Bajaj 635285a565 feat: add provider dashboard metadata 2026-06-03 15:17:43 +05:30
beubax c42da7293a refactor: replace audit log file with SQLite-backed audit storage and rename hosted session components to browser sessions 2026-05-29 15:28:47 +05:30
Manoj Bajaj 39c1370ec8 refactor: rename actors package to identity with semantic sub-modules
Replace authsome.actors with authsome.identity, splitting into four
focused sub-modules:
  identity/local.py     — IdentityMetadata, keys, DID helpers, create_identity
  identity/proof.py     — PoP JWT creation and validation
  identity/registry.py  — daemon IdentityRegistry (Handle → DID)
  identity/principal.py — ClaimStatus, PrincipalRegistry, VaultRegistry,
                          IdentityClaimRegistry, PrincipalVaultBindingRegistry

Update all imports across src/ and tests/. Move tests/actors/test_registry.py
to tests/identity/test_registry.py. Delete the actors/ package.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Entire-Checkpoint: 88222782ec3b
2026-05-20 19:27:13 +05:30
beubax 81cd6751df refactor: introduce IdentityStatus enum for identity lifecycle state 2026-05-20 15:33:38 +05:30
beubax 923cc93aca feat: scope connections to vault, add claim flow and principal concept, confine UI session to principal view, and make vault/identity/principal orthogonal 2026-05-19 14:25:57 +05:30
Ankit Ranjan da185352b2 refactor: rename provider host_url configuration field to api_url throughout codebase and documentation 2026-05-15 19:01:55 +05:30
beubax 5c98ea5412 refactor: transition to persistent storage backend for sessions, identities, and audit events with async support 2026-05-14 18:04:16 +05:30
beubax be78393d23 feat: make provider client credentials a global property of hosted deployment 2026-05-13 23:22:31 +05:30
beubax 46a981a448 feat: implement local client profile management and update error handling for session authentication 2026-05-13 15:45:04 +05:30
beubax ccc481058e Merge branch 'feature/did-identity-pop-auth' of https://github.com/agentrhq/authsome into feature/did-identity-pop-auth 2026-05-13 14:48:04 +05:30
beubax 79f0a96806 refactor: rename profile to identity 2026-05-13 14:45:51 +05:30
Manoj Bajaj d6958c8434 refactor!: unify Identity and Profile; remove profile management layer
Profile is now a pure credential namespace scoped by the Identity handle,
not an independently managed entity. The two were always 1:1 but modelled
as separate concepts; this commit makes that explicit.

Key changes:
- Add `active_identity` to GlobalConfig; `ensure_local_identity` reads it
  and errors hard if the configured handle is missing on disk (no silent
  re-creation)
- `authsome init` writes `active_identity` to config after registration
- Collapse `registered: bool` + `registration_status: str` on
  IdentityMetadata into a single `registered: bool`; add `mark_registered()`
- Remove vestigial `Identity` dataclass, `DEFAULT_IDENTITY`, `current()`
- Remove `name`, `description`, `owner_email` from IdentityMetadata (deferred
  to hosted version)
- Remove `ProfileMetadata`, `ProfileNotFoundError`, `create_profile`,
  `list_profiles`, `get_profile`, `set_default_profile`, `default_profile`
  shim in save_config — profile is a side-effect of identity registration
- Add hard-error test for missing configured identity
- Update UBIQUITOUS_LANGUAGE.md, AGENTS.md architecture section, and
  ADR 0002 to reflect current code (fix stale AuthsomeContext, AuthClient,
  config.json path, ProfileMetadata references)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Entire-Checkpoint: 614885258a45
2026-05-13 14:29:18 +05:30
Manoj Bajaj 019bdd11e8 feat!: require server-registered identities
Make the daemon identity registry authoritative for protected PoP requests and remove implicit default-profile identity behavior.

Store daemon-owned state under server/ while keeping CLI signing identity files under identities/.

BREAKING CHANGE: Existing implicit default-profile installs must run authsome init again; profile:default credentials are not migrated.

Entire-Checkpoint: 557455816515
2026-05-12 19:58:43 +05:30
Manoj Bajaj 7ad14f60a3 feat: add did pop daemon authorization
Entire-Checkpoint: a6b771e5077a
2026-05-12 19:18:25 +05:30
beubax e831c53287 refactor: simplify CLI usage by removing complex setup instructions and mentions of init; update export to set environment variables directly 2026-04-29 13:50:19 +05:30
Rishabh f11227528a feat: added support for docs in providers (#85)
* feat : added support for docs in providers

* Change GitHub auth flow from device_code to pkce

* fix: docs support fixed
2026-04-27 18:32:15 +05:30
Manoj Bajaj bfd75eeae0 feat!: v0.2.0 — Vault + AuthLayer architecture, InputProvider, FlowResult
BREAKING CHANGE: Complete internal restructuring. All public Python API
has moved; CLI commands and flags are unchanged.

Architecture changes:
- Introduce Vault layer (vault/) — generic encrypted KV store; replaces
  store/ + crypto/ monolith. Compact AES-256-GCM format, LocalFile and
  Keyring backends.
- Introduce AuthLayer (auth/) — owns flows, token refresh, login/logout/
  revoke. Receives Vault + ProviderRegistry as deps; no direct crypto.
- Introduce AuthsomeContext (context.py) — thin wiring container
  replacing AuthClient as the CLI entry point.
- Move flows/ → auth/flows/, models/ → auth/models/,
  providers/ → auth/providers/. Delete store/, crypto/, client.py.

New features:
- InputProvider protocol: BridgeInputProvider, InteractiveInputProvider,
  MockInputProvider — replaces ad-hoc secure_input_bridge calls and
  simplifies test setup.
- FlowResult dataclass: flows now return FlowResult(connection,
  client_record) instead of a bare ConnectionRecord. DCR flow populates
  client_record only when it actually registered a new client.
- RequestRouter class removed; routing inlined as _route() module-level
  function in proxy/server.py. AuthProxyAddon takes only auth: AuthLayer.
- ConnectionRecord v2: tokens are plaintext str (Vault handles
  encryption at rest). Sensitive annotation marks fields for redaction.

Docs:
- docs/UBIQUITOUS_LANGUAGE.md: added Architecture Layers section (Vault,
  AuthLayer, AuthsomeContext, Sensitive); deprecated CredentialStore,
  CryptoBackend, EncryptedField.
- docs/manual-testing.md: end-to-end manual testing guide.

Tests reorganized under tests/auth/, tests/vault/, tests/proxy/,
tests/common/. 262 tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 13:15:05 +05:30