Skip to content

Scaffold moox/msgraph with connection registry and Graph client factory #3

Description

@jbagsik

Parent

#1

What to build

The moox/msgraph package itself, up to and including an authenticated Graph client — but no driver yet.

Scaffold the package following Moox package conventions (service provider extending the Moox base provider, package metadata, config publishing). Add the connection registry: named entries, each holding tenant, client id and secret, resolved by name. Move the Graph client factory across from moox/mail-inbox, including the Guzzle middleware that requests immutable identifiers on every call.

Namespace the package by area from the start, with mail under its own sub-namespace, so calendar or file capabilities could be added later without renaming anything.

The package must ship no model, no migration and no Filament surface. If you find yourself adding a table, stop — that is a sign the work belongs in a domain package.

Acceptance criteria

  • A client can be built for a named connection, and two connections yield two independently authenticated clients
  • Every outgoing request carries the immutable-identifier preference header — asserted in a test against a mocked HTTP handler, not assumed
  • Graph error responses map onto the package's own exception types; authentication, rate limiting, not-found and connection failures are distinguishable
  • The package declares no models, no migrations and no Filament resources
  • Class names live under an area sub-namespace, not flat at the package root
  • Tests run green with no network access and no tenant
  • README documents configuration and the required Graph application permissions; CHANGELOG records the initial surface

Blocked by

None — can start immediately. Runs in parallel with #2.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentSpec is ready for an agent to implement

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions