Was IBM's dynamic model somewhat similar to what you had in mind?
-40hz
From all I know of it (which is just what you have written above) it is very similar, because my idea seems to imply an "every app is a server app" model. It goes like this:
The current list of available actions can be likened to a directory listing. It can be changed by program action, by navigating up or down the heirarchy, or by selecting a different object. A separate zoom control selects actions suitable for the appropriate level of nested objects, and changes the selection cursor to suit. So, at the top level you would find actions for logging on and off, creating new tasks, and choosing which screen to focus. Below that, actions relating to individual windows (move, resize, etc), and below that, actions peculiar to the particular program.
On Object Selection (MouseDown)
Controller sends the mouse position. Server returns the object path (The list of all nested objects at that point).
If the actions currently displayed are still in the object path, they remain unchanged and the nested object at that level is selected. So if, for example, you have been resizing windows, a new window can be moved by selecting any point on it. No trying to click on lines, corners and fiddly little handles. Otherwise, show the actions suitable for the new object at the current level.
Optionally, change the action selection.
On MouseUp, the controller sends the current object path and the token for the current action.
The main difference is that I am thinking of the controller as a personal device, perhaps a netbook or a mobile phone, so standard controls are not the issue - no more QWERTY!