@@ -108,26 +108,30 @@ export class ObjectQL implements IObjectQL {
108108
109109 on ( event : HookName , objectName : string , handler : HookHandler , packageName ?: string ) {
110110 // Delegate to kernel hook manager
111- // Note: Type casting needed due to type incompatibility between ObjectQL HookName (includes beforeCount)
112- // and runtime HookName. This is safe as the kernel will accept all hook types.
113- this . kernel . hooks . register ( event as any , objectName , handler as any , packageName ) ;
111+ // We wrap the handler to bridge ObjectQL's rich context types with runtime's base types
112+ // The runtime HookContext supports all fields via index signature, so this is safe
113+ const wrappedHandler = handler as unknown as import ( '@objectstack/runtime' ) . HookHandler ;
114+ this . kernel . hooks . register ( event , objectName , wrappedHandler , packageName ) ;
114115 }
115116
116117 async triggerHook ( event : HookName , objectName : string , ctx : HookContext ) {
117118 // Delegate to kernel hook manager
118- await this . kernel . hooks . trigger ( event as any , objectName , ctx as any ) ;
119+ // Runtime HookContext supports ObjectQL-specific fields via index signature
120+ await this . kernel . hooks . trigger ( event , objectName , ctx ) ;
119121 }
120122
121123 registerAction ( objectName : string , actionName : string , handler : ActionHandler , packageName ?: string ) {
122124 // Delegate to kernel action manager
123- // Note: Type casting needed due to type incompatibility between ObjectQL ActionHandler
124- // (includes input/api fields) and runtime ActionHandler. This is safe as runtime is more permissive.
125- this . kernel . actions . register ( objectName , actionName , handler as any , packageName ) ;
125+ // We wrap the handler to bridge ObjectQL's rich context types with runtime's base types
126+ // The runtime ActionContext supports all fields via index signature, so this is safe
127+ const wrappedHandler = handler as unknown as import ( '@objectstack/runtime' ) . ActionHandler ;
128+ this . kernel . actions . register ( objectName , actionName , wrappedHandler , packageName ) ;
126129 }
127130
128131 async executeAction ( objectName : string , actionName : string , ctx : ActionContext ) {
129132 // Delegate to kernel action manager
130- return await this . kernel . actions . execute ( objectName , actionName , ctx as any ) ;
133+ // Runtime ActionContext supports ObjectQL-specific fields via index signature
134+ return await this . kernel . actions . execute ( objectName , actionName , ctx ) ;
131135 }
132136
133137 createContext ( options : ObjectQLContextOptions ) : ObjectQLContext {
@@ -211,16 +215,14 @@ export class ObjectQL implements IObjectQL {
211215 }
212216
213217 getObject ( name : string ) : ObjectConfig | undefined {
214- const item = this . kernel . metadata . get < MetadataItem > ( 'object' , name ) ;
215- return item ?. content as ObjectConfig | undefined ;
218+ return this . kernel . metadata . get < ObjectConfig > ( 'object' , name ) ;
216219 }
217220
218221 getConfigs ( ) : Record < string , ObjectConfig > {
219222 const result : Record < string , ObjectConfig > = { } ;
220- const items = this . kernel . metadata . list < MetadataItem > ( 'object' ) ;
223+ const items = this . kernel . metadata . list < ObjectConfig > ( 'object' ) ;
221224 for ( const item of items ) {
222- const obj = item . content as ObjectConfig ;
223- result [ obj . name ] = obj ;
225+ result [ item . name ] = item ;
224226 }
225227 return result ;
226228 }
0 commit comments