Skip to content

Add extensible plugin architecture, custom boards support, and declarative map props - #394

Open
JamesDAdams wants to merge 4 commits into
AgentSystemLabs:mainfrom
JamesDAdams:main
Open

JamesDAdams wants to merge 4 commits into
AgentSystemLabs:mainfrom
JamesDAdams:main

Conversation

@JamesDAdams

Copy link
Copy Markdown

Summary

This PR introduces a modular plugin system along with generic plugin seams, support for custom issue/PR boards, and declarative prop placement for custom maps.

The core principle is to keep agent-office strictly agnostic: no plugin-specific code in the core — the core provides generic extension points (seams) and contracts, while plugins implement their respective logic.


Key Features & Changes

1. Extensible Plugin Architecture (PluginManager & seams)

  • Plugin Lifecycle & Registry: Dynamic loading, registration, and discovery of plugins (PluginManager, PluginRegistry).
  • Generic Seams:
    • Agent Providers: Plugins can register custom LLM/agent providers that appear in hire dialogs and task dispatchers.
    • Services & Session Windows: Generic tabs and iframes for external tools/services.
    • Floors & Projects: Allows external tools to dynamically synchronize floors and project checkouts.
    • Settings Pages: Plugins can ship their own static web settings pages served directly through /plugins/:id/settings.

2. Custom Boards & Issue/PR Integration

  • Generic Board Seam: Enables external project tracking adapters (GitHub, GitLab, custom task trackers, etc.) to feed the board state.
  • Custom Board UI: Interactive board components with configurable status columns, color tints, tags, and detail modals.
  • Diff Viewer: Adds unified diff inspection with hunk snippet extraction (pulldiff.ts) for pull requests.

3. Declarative Map Props & World Enhancements

  • Declarative Props: Extended map definitions supporting custom props, colliders, and furniture layouts (docs/maps/office.json).
  • Custom Indoor Shelters: Adds Sky.setIndoorAreas() so custom interior maps accurately clear weather fog and receive proper indoor ambient lighting.

Testing & Quality

  • Typecheck: Full verification with tsc on both client and server configurations.
  • Size guards: Maintained strict adherence to the < 600 lines file budget guard (tests/size.test.ts).
  • Automated Tests:
    • Added dedicated unit tests for plugin registration, settings routing, custom boards, and diff hunk parsing (tests/plugins.test.ts, tests/plugin-settings.test.ts, tests/pulldiff.test.ts, etc.).
    • Full test suite passes cleanly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant