@openora/core 0.4.1-canary.52 → 0.4.1-canary.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/admin-console/plugin.d.ts +1 -1
  3. package/dist/analytics/plugin.d.ts +1 -1
  4. package/dist/audit/plugin.d.ts +1 -1
  5. package/dist/casino/gaming/plugin.d.ts +1 -1
  6. package/dist/casino/lobby/plugin.d.ts +1 -1
  7. package/dist/cms/plugin.d.ts +1 -1
  8. package/dist/compliance/plugin.d.ts +1 -1
  9. package/dist/contracts/adapters/chat-system-writer.d.ts +1 -1
  10. package/dist/contracts/adapters/chat-system-writer.d.ts.map +1 -1
  11. package/dist/contracts/adapters/identity-reader.d.ts +1 -1
  12. package/dist/contracts/adapters/identity-reader.d.ts.map +1 -1
  13. package/dist/contracts/adapters/index.d.ts +1 -1
  14. package/dist/contracts/adapters/index.d.ts.map +1 -1
  15. package/dist/contracts/adapters/index.js.map +1 -1
  16. package/dist/contracts/adapters/token.d.ts +8 -5
  17. package/dist/contracts/adapters/token.d.ts.map +1 -1
  18. package/dist/contracts/adapters/token.js +4 -4
  19. package/dist/contracts/adapters/token.js.map +1 -1
  20. package/dist/contracts/adapters/wallet-reader.d.ts +1 -1
  21. package/dist/contracts/adapters/wallet-reader.d.ts.map +1 -1
  22. package/dist/contracts/schemas/platform-config.d.ts +1 -1
  23. package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
  24. package/dist/engagement/chat/plugin.d.ts +1 -1
  25. package/dist/engagement/chat-commands/plugin.d.ts +1 -1
  26. package/dist/engagement/notifications/plugin.d.ts +1 -1
  27. package/dist/iam/plugin.d.ts +1 -1
  28. package/dist/pam/identity/plugin.d.ts +1 -1
  29. package/dist/pam/player-management/plugin.d.ts +1 -1
  30. package/dist/pam/player-note/plugin.d.ts +1 -1
  31. package/dist/pam/profile/plugin.d.ts +1 -1
  32. package/dist/pam/tag/plugin.d.ts +1 -1
  33. package/dist/server/kernel/container.d.ts +4 -2
  34. package/dist/server/kernel/container.d.ts.map +1 -1
  35. package/dist/server/kernel/container.js.map +1 -1
  36. package/dist/server/plugin-host/__tests__/load-plugins.test.d.ts +2 -0
  37. package/dist/server/plugin-host/__tests__/load-plugins.test.d.ts.map +1 -0
  38. package/dist/server/plugin-host/__tests__/load-plugins.test.js +22 -0
  39. package/dist/server/plugin-host/__tests__/load-plugins.test.js.map +1 -0
  40. package/dist/server/plugin-host/__tests__/typed-plugin.test.d.ts +2 -0
  41. package/dist/server/plugin-host/__tests__/typed-plugin.test.d.ts.map +1 -0
  42. package/dist/server/plugin-host/__tests__/typed-plugin.test.js +43 -0
  43. package/dist/server/plugin-host/__tests__/typed-plugin.test.js.map +1 -0
  44. package/dist/server/plugin-host/define-plugin.d.ts +17 -16
  45. package/dist/server/plugin-host/define-plugin.d.ts.map +1 -1
  46. package/dist/server/plugin-host/define-plugin.js +5 -0
  47. package/dist/server/plugin-host/define-plugin.js.map +1 -1
  48. package/dist/server/plugin-host/index.d.ts +3 -3
  49. package/dist/server/plugin-host/index.d.ts.map +1 -1
  50. package/dist/server/plugin-host/index.js +2 -2
  51. package/dist/server/plugin-host/index.js.map +1 -1
  52. package/dist/server/plugin-host/load-plugins.d.ts +23 -4
  53. package/dist/server/plugin-host/load-plugins.d.ts.map +1 -1
  54. package/dist/server/plugin-host/load-plugins.js +4 -1
  55. package/dist/server/plugin-host/load-plugins.js.map +1 -1
  56. package/dist/server/plugin-host/module-registry.d.ts +3 -3
  57. package/dist/server/plugin-host/module-registry.d.ts.map +1 -1
  58. package/dist/server/plugin-host/module-registry.js.map +1 -1
  59. package/dist/wallet/plugin.d.ts +1 -1
  60. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "admin-console", readonly ["identity", "wallet", "audit", "gaming", "iam"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "analytics", readonly ["wallet", "identity", "profile", "gaming"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "audit", []>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "gaming", readonly ["wallet"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "lobby", []>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "cms", []>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "compliance", readonly ["player-management", "identity", "wallet", "gaming", "audit"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -8,5 +8,5 @@ export type ChatSystemWriter = {
8
8
  tx?: unknown;
9
9
  }): Promise<SystemChatMessage>;
10
10
  };
11
- export declare const CHAT_SYSTEM_WRITER: import("./token.js").Token<ChatSystemWriter>;
11
+ export declare const CHAT_SYSTEM_WRITER: import("./token.js").Token<ChatSystemWriter, string>;
12
12
  //# sourceMappingURL=chat-system-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-system-writer.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/chat-system-writer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAErF,YAAY,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iBAAiB,CAAC,IAAI,EAAE;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,eAAe,CAAC;QAC1B,EAAE,CAAC,EAAE,OAAO,CAAC;KACd,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,kBAAkB,8CAAoD,CAAC"}
1
+ {"version":3,"file":"chat-system-writer.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/chat-system-writer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAErF,YAAY,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iBAAiB,CAAC,IAAI,EAAE;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,eAAe,CAAC;QAC1B,EAAE,CAAC,EAAE,OAAO,CAAC;KACd,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,kBAAkB,sDAAoD,CAAC"}
@@ -12,5 +12,5 @@ export type IdentityReader = {
12
12
  /** Returns other player user ids that have authenticated from the same login IP. */
13
13
  getPlayerUserIdsSharingLoginIp(userId: User['id'], ipAddress: string): Promise<User['id'][]>;
14
14
  };
15
- export declare const IDENTITY_READER: import("./token.js").Token<IdentityReader>;
15
+ export declare const IDENTITY_READER: import("./token.js").Token<IdentityReader, string>;
16
16
  //# sourceMappingURL=identity-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-reader.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/identity-reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,yHAAyH;IACzH,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACzD,qHAAqH;IACrH,yBAAyB,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,mGAAmG;IACnG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACtE,6FAA6F;IAC7F,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC1E,oFAAoF;IACpF,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CAC9F,CAAC;AAEF,eAAO,MAAM,eAAe,4CAAiD,CAAC"}
1
+ {"version":3,"file":"identity-reader.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/identity-reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,yHAAyH;IACzH,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACzD,qHAAqH;IACrH,yBAAyB,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,mGAAmG;IACnG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACtE,6FAA6F;IAC7F,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC1E,oFAAoF;IACpF,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CAC9F,CAAC;AAEF,eAAO,MAAM,eAAe,oDAAiD,CAAC"}
@@ -1,4 +1,4 @@
1
- export type { AnyToken, Token, SealedToken, ClientPageToken } from './token.js';
1
+ export type { AnyToken, Token, SealedToken, ClientPageToken, TokenCatalog, TokenValue, } from './token.js';
2
2
  export { createToken, createSealedToken, createClientPageToken } from './token.js';
3
3
  export type { EventEnvelope, MessageBrokerAdapter, BrokerHandler, SubscribeOptions, } from './broker.js';
4
4
  export { MESSAGE_BROKER } from './broker.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contracts/adapters/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,gFAAgF;AAChF,gFAAgF;AAChF,sFAAsF;AAGtF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQnF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAcvD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AASlD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGlF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AASnC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,+BAA+B,GAChC,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAazC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAGlF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAMvC,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAS/C,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAS5F,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAS9F,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAS/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAOnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contracts/adapters/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,gFAAgF;AAChF,gFAAgF;AAChF,sFAAsF;AAUtF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQnF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAcvD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AASlD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGlF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AASnC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,+BAA+B,GAChC,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAazC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAGlF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAMvC,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAS/C,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAS5F,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAS9F,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAS/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAOnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,10 +1,13 @@
1
- export type AnyToken<T> = symbol & {
1
+ export type AnyToken<T, K extends string = string> = symbol & {
2
2
  readonly __token?: T;
3
+ readonly __key?: K;
3
4
  };
4
- export type Token<T> = AnyToken<T> & {
5
+ export type TokenCatalog = Record<string, AnyToken<unknown>>;
6
+ export type TokenValue<T> = T extends AnyToken<infer Value> ? Value : never;
7
+ export type Token<T, K extends string = string> = AnyToken<T, K> & {
5
8
  readonly __sealed?: never;
6
9
  };
7
- export declare function createToken<T>(description: string): Token<T>;
10
+ export declare function createToken<T, const K extends string = string>(key: K): Token<T, K>;
8
11
  /**
9
12
  * A sealed token represents a regulator-mandated service operators must NEVER
10
13
  * override (self-exclusion enforcement, AML/SAR audit log writes, ledger writes,
@@ -22,10 +25,10 @@ export declare function createToken<T>(description: string): Token<T>;
22
25
  * See `@openora/core/compliance` for the canonical list and the regulatory
23
26
  * citation per token.
24
27
  */
25
- export type SealedToken<T> = AnyToken<T> & {
28
+ export type SealedToken<T, K extends string = string> = AnyToken<T, K> & {
26
29
  readonly __sealed: true;
27
30
  };
28
- export declare function createSealedToken<T>(description: string): SealedToken<T>;
31
+ export declare function createSealedToken<T, const K extends string = string>(key: K): SealedToken<T, K>;
29
32
  /**
30
33
  * A page override token lets a plugin replace an entire client-side page
31
34
  * via `ctx.provide(ADMIN_USERS_PAGE, MyImpl)`. The phantom type tracks the
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/token.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAM5D,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEnE,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAE5D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IACzC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;CACzB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAExE;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAE1F"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/token.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7D,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AAM5E,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC3B,CAAC;AAEF,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAEnF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IACvE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;CACzB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAE/F;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAE1F"}
@@ -2,11 +2,11 @@
2
2
  // field only carries the resolved type so the composition container can infer
3
3
  // what `container.get(TOKEN)` returns. No decorators, no reflection - the type
4
4
  // travels with the symbol. See @openora/core/server `Container`.
5
- export function createToken(description) {
6
- return Symbol(description);
5
+ export function createToken(key) {
6
+ return Symbol(key);
7
7
  }
8
- export function createSealedToken(description) {
9
- return Symbol(`sealed:${description}`);
8
+ export function createSealedToken(key) {
9
+ return Symbol(`sealed:${key}`);
10
10
  }
11
11
  export function createClientPageToken(description) {
12
12
  return Symbol(`page:${description}`);
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/contracts/adapters/token.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,iEAAiE;AAajE,MAAM,UAAU,WAAW,CAAI,WAAmB;IAChD,OAAO,MAAM,CAAC,WAAW,CAAa,CAAC;AACzC,CAAC;AAuBD,MAAM,UAAU,iBAAiB,CAAI,WAAmB;IACtD,OAAO,MAAM,CAAC,UAAU,WAAW,EAAE,CAAmB,CAAC;AAC3D,CAAC;AAgBD,MAAM,UAAU,qBAAqB,CAAc,WAAmB;IACpE,OAAO,MAAM,CAAC,QAAQ,WAAW,EAAE,CAAuB,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/contracts/adapters/token.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,iEAAiE;AAsBjE,MAAM,UAAU,WAAW,CAAqC,GAAM;IACpE,OAAO,MAAM,CAAC,GAAG,CAAgB,CAAC;AACpC,CAAC;AAuBD,MAAM,UAAU,iBAAiB,CAAqC,GAAM;IAC1E,OAAO,MAAM,CAAC,UAAU,GAAG,EAAE,CAAsB,CAAC;AACtD,CAAC;AAgBD,MAAM,UAAU,qBAAqB,CAAc,WAAmB;IACpE,OAAO,MAAM,CAAC,QAAQ,WAAW,EAAE,CAAuB,CAAC;AAC7D,CAAC"}
@@ -12,5 +12,5 @@ export type WalletReader = {
12
12
  */
13
13
  getWithdrawalCountsInWindow?(userIds: string[], windowDays: number): Promise<Map<string, number>>;
14
14
  };
15
- export declare const WALLET_READER: import("./token.js").Token<WalletReader>;
15
+ export declare const WALLET_READER: import("./token.js").Token<WalletReader, string>;
16
16
  //# sourceMappingURL=wallet-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-reader.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/wallet-reader.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IACzB,4IAA4I;IAC5I,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,kHAAkH;IAClH,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChF;;;;;;OAMG;IACH,2BAA2B,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnG,CAAC;AAEF,eAAO,MAAM,aAAa,0CAA6C,CAAC"}
1
+ {"version":3,"file":"wallet-reader.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/wallet-reader.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IACzB,4IAA4I;IAC5I,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,kHAAkH;IAClH,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChF;;;;;;OAMG;IACH,2BAA2B,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnG,CAAC;AAEF,eAAO,MAAM,aAAa,kDAA6C,CAAC"}
@@ -141,5 +141,5 @@ export declare const PLATFORM_CONFIG: import("../adapters/token.js").Token<{
141
141
  dailyCapCount?: number | undefined;
142
142
  } | undefined;
143
143
  supportedLanguages?: string[] | undefined;
144
- }>;
144
+ }, string>;
145
145
  //# sourceMappingURL=platform-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-config.d.ts","sourceRoot":"","sources":["../../../src/contracts/schemas/platform-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,kBAAkB,wCAAoC,CAAC;AAEpE,eAAO,MAAM,WAAW;;;;;kBAUb,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;kBAcjB,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;kBAa5B,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA8C7B,CAAC;AAEL,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAShF;AAED,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,EAAE,cAAyC,CAAC;AAE9E,+EAA+E;AAC/E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAiD,CAAC"}
1
+ {"version":3,"file":"platform-config.d.ts","sourceRoot":"","sources":["../../../src/contracts/schemas/platform-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,kBAAkB,wCAAoC,CAAC;AAEpE,eAAO,MAAM,WAAW;;;;;kBAUb,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;kBAcjB,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;kBAa5B,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA8C7B,CAAC;AAEL,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAShF;AAED,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,EAAE,cAAyC,CAAC;AAE9E,+EAA+E;AAC/E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAAiD,CAAC"}
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "chat", readonly ["identity"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "chat-commands", readonly ["chat", "wallet", "iam", "audit", "gaming"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "notifications", readonly ["identity"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "iam", readonly ["identity"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "identity", []>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "player-management", readonly ["audit"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "player-note", []>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "profile", []>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,3 +1,3 @@
1
- declare const _default: import("@openora/core/server").Plugin;
1
+ declare const _default: import("@openora/core/server").Plugin<never, "tag", readonly ["wallet", "identity"]>;
2
2
  export default _default;
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { AnyToken } from '@openora/core/contracts';
1
+ import type { AnyToken, TokenCatalog, TokenValue } from '@openora/core/contracts';
2
2
  export type Factory<T> = (c: Container) => T;
3
3
  /**
4
4
  * Functional DI container - no decorators, no reflection. `get()` resolves
@@ -10,13 +10,15 @@ export type Factory<T> = (c: Container) => T;
10
10
  * `dispose()` runs every `onDispose` callback in REVERSE registration order -
11
11
  * register dependencies before their dependents so teardown happens safely.
12
12
  */
13
- export declare class Container {
13
+ export declare class Container<C extends TokenCatalog = never> {
14
14
  private readonly factories;
15
15
  private readonly instances;
16
16
  private readonly resolving;
17
17
  private readonly disposers;
18
18
  register<T>(token: AnyToken<T>, factory: Factory<T>): void;
19
+ has<K extends keyof C>(token: C[K]): boolean;
19
20
  has(token: AnyToken<unknown>): boolean;
21
+ get<K extends keyof C>(token: C[K]): TokenValue<C[K]>;
20
22
  get<T>(token: AnyToken<T>): T;
21
23
  onDispose(fn: () => void | Promise<void>): void;
22
24
  dispose(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAUxD,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,KAAK,CAAC,CAAC;AAE7C;;;;;;;;;GASG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAEnE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1D,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO;IAItC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IAsB7B,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAUlF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,KAAK,CAAC,CAAC;AAE7C;;;;;;;;;GASG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,YAAY,GAAG,KAAK;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAEnE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1D,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;IAC5C,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO;IAKtC,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IAuB7B,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/server/kernel/container.ts"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,MAAM,OAAO,SAAS;IACH,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IAChD,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IACvC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,SAAS,GAAsC,EAAE,CAAC;IAEnE,QAAQ,CAAI,KAAkB,EAAE,OAAmB;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAA2B,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,KAAwB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAI,KAAkB;QACvB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAM,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,wCAAwC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAC9E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAM,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,EAA8B;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/server/kernel/container.ts"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,MAAM,OAAO,SAAS;IACH,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IAChD,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IACvC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,SAAS,GAAsC,EAAE,CAAC;IAEnE,QAAQ,CAAI,KAAkB,EAAE,OAAmB;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAA2B,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAID,GAAG,CAAC,KAAwB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAID,GAAG,CAAI,KAAkB;QACvB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAM,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,wCAAwC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAC9E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAM,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,EAA8B;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=load-plugins.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-plugins.test.d.ts","sourceRoot":"","sources":["../../../../src/server/plugin-host/__tests__/load-plugins.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { topoSort } from '../load-plugins.js';
3
+ function plugin(id, dependsOn = []) {
4
+ return {
5
+ id,
6
+ dependsOn,
7
+ register() { },
8
+ };
9
+ }
10
+ describe('topoSort', () => {
11
+ it('places dependencies before dependents', () => {
12
+ const sorted = topoSort([plugin('feature', ['foundation']), plugin('foundation')]);
13
+ expect(sorted.map(({ id }) => id)).toEqual(['foundation', 'feature']);
14
+ });
15
+ it('rejects an unregistered dependency', () => {
16
+ expect(() => topoSort([plugin('feature', ['missing'])])).toThrow('Plugin "feature" depends on "missing" which is not registered');
17
+ });
18
+ it('rejects a dependency cycle', () => {
19
+ expect(() => topoSort([plugin('a', ['b']), plugin('b', ['c']), plugin('c', ['a'])])).toThrow('Circular plugin dependency: a -> b -> c -> a');
20
+ });
21
+ });
22
+ //# sourceMappingURL=load-plugins.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-plugins.test.js","sourceRoot":"","sources":["../../../../src/server/plugin-host/__tests__/load-plugins.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,SAAS,MAAM,CAAC,EAAU,EAAE,YAAsB,EAAE;IAClD,OAAO;QACL,EAAE;QACF,SAAS;QACT,QAAQ,KAAI,CAAC;KACd,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEnF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAC9D,+DAA+D,CAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAC1F,8CAA8C,CAC/C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=typed-plugin.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-plugin.test.d.ts","sourceRoot":"","sources":["../../../../src/server/plugin-host/__tests__/typed-plugin.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { createToken } from '@openora/core/contracts';
3
+ import { Container } from '../../kernel/index.js';
4
+ import { defineExtensions, definePluginWithCatalog, ModuleRegistryImpl } from '../index.js';
5
+ const COUNT = createToken('COUNT');
6
+ const SEED = createToken('SEED');
7
+ const OTHER = createToken('OTHER');
8
+ const catalog = { COUNT, SEED };
9
+ const typedPlugin = definePluginWithCatalog()({
10
+ id: 'typed-plugin',
11
+ dependsOn: ['foundation'],
12
+ register(ctx) {
13
+ ctx.provide(COUNT, (container) => container.get(SEED) + 1);
14
+ // @ts-expect-error A token outside the catalog is not a valid provider.
15
+ ctx.provide(OTHER, () => 'not-registered');
16
+ },
17
+ });
18
+ const typedPluginId = typedPlugin.id;
19
+ const typedDependency = typedPlugin.dependsOn ?? ['foundation'];
20
+ const validGraph = defineExtensions([
21
+ { id: 'foundation', path: './foundation.js' },
22
+ { id: 'feature', path: './feature.js', dependsOn: ['foundation'] },
23
+ ]);
24
+ // @ts-expect-error The registry must reject an unknown dependency.
25
+ defineExtensions([{ id: 'feature', path: './feature.js', dependsOn: ['missing'] }]);
26
+ // @ts-expect-error The registry must reject a dependency cycle.
27
+ defineExtensions([
28
+ { id: 'a', path: './a.js', dependsOn: ['b'] },
29
+ { id: 'b', path: './b.js', dependsOn: ['a'] },
30
+ ]);
31
+ describe('typed plugin surface', () => {
32
+ it('keeps literal plugin metadata and resolves catalog services', () => {
33
+ const container = new Container();
34
+ const registry = new ModuleRegistryImpl(container);
35
+ container.register(SEED, () => 41);
36
+ void typedPlugin.register(registry);
37
+ expect(typedPluginId).toBe('typed-plugin');
38
+ expect(typedDependency).toEqual(['foundation']);
39
+ expect(validGraph[1]?.dependsOn).toEqual(['foundation']);
40
+ expect(container.get(COUNT)).toBe(42);
41
+ });
42
+ });
43
+ //# sourceMappingURL=typed-plugin.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-plugin.test.js","sourceRoot":"","sources":["../../../../src/server/plugin-host/__tests__/typed-plugin.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAqB,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE5F,MAAM,KAAK,GAAG,WAAW,CAAS,OAAO,CAAC,CAAC;AAC3C,MAAM,IAAI,GAAG,WAAW,CAAS,MAAM,CAAC,CAAC;AACzC,MAAM,KAAK,GAAG,WAAW,CAAS,OAAO,CAAC,CAAC;AAE3C,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,IAAI,EAAyB,CAAC;AAEvD,MAAM,WAAW,GAAG,uBAAuB,EAAkB,CAAC;IAC5D,EAAE,EAAE,cAAc;IAClB,SAAS,EAAE,CAAC,YAAY,CAAC;IACzB,QAAQ,CAAC,GAAG;QACV,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3D,wEAAwE;QACxE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,aAAa,GAAmB,WAAW,CAAC,EAAE,CAAC;AACrD,MAAM,eAAe,GAA4B,WAAW,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,CAAC;AAEzF,MAAM,UAAU,GAAG,gBAAgB,CAAC;IAClC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAC7C,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE;CACnE,CAAC,CAAC;AAEH,mEAAmE;AACnE,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAEpF,gEAAgE;AAChE,gBAAgB,CAAC;IACf,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE;IAC7C,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE;CAC9C,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,SAAS,GAAG,IAAI,SAAS,EAAkB,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAiB,SAAS,CAAC,CAAC;QAEnE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACnC,KAAK,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEpC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { Container, Factory } from '../kernel/index.js';
2
- import type { EventEnvelope, SealedToken, Token, WorkerRegistration } from '@openora/core/contracts';
1
+ import type { Container } from '../kernel/index.js';
2
+ import type { EventEnvelope, SealedToken, Token, TokenCatalog, TokenValue, WorkerRegistration } from '@openora/core/contracts';
3
3
  export type McpToolDefinition = {
4
4
  name: string;
5
5
  description: string;
@@ -7,10 +7,15 @@ export type McpToolDefinition = {
7
7
  handler: (input: unknown) => unknown | Promise<unknown>;
8
8
  };
9
9
  export type RouterFactory = (c: Container) => unknown;
10
+ export type TypedContainer<C extends TokenCatalog> = {
11
+ get<K extends keyof C>(token: C[K]): TokenValue<C[K]>;
12
+ has<K extends keyof C>(token: C[K]): boolean;
13
+ onDispose(fn: () => void | Promise<void>): void;
14
+ };
10
15
  export type EventHandler = (payload: unknown, envelope?: EventEnvelope) => void | Promise<void>;
11
- export type ModuleRegistry = {
12
- provide<T>(token: Token<T>, factory: Factory<T>): void;
13
- provideSealed<T>(token: SealedToken<T>, factory: Factory<T>): void;
16
+ export type ModuleRegistry<C extends TokenCatalog = never> = {
17
+ provide<T>(token: [C] extends [never] ? Token<T> : C[keyof C] & Token<T>, factory: (container: [C] extends [never] ? Container : TypedContainer<C>) => T): void;
18
+ provideSealed<T>(token: [C] extends [never] ? SealedToken<T> : C[keyof C] & SealedToken<T>, factory: (container: [C] extends [never] ? Container : TypedContainer<C>) => T): void;
14
19
  routers: {
15
20
  add(namespace: string, factory: RouterFactory): void;
16
21
  getAll(): Map<string, RouterFactory>;
@@ -32,17 +37,13 @@ export type ModuleRegistry = {
32
37
  getAll(): McpToolDefinition[];
33
38
  };
34
39
  };
35
- export type Plugin = {
36
- id: string;
37
- dependsOn?: string[];
38
- requiresPorts?: Token<unknown>[];
39
- register: (ctx: ModuleRegistry) => void | Promise<void>;
40
- };
41
- export type PluginDefinition = {
42
- id: string;
43
- dependsOn?: string[];
40
+ export type PluginDefinition<C extends TokenCatalog = never, Id extends string = string, Dependencies extends readonly string[] = string[]> = {
41
+ id: Id;
42
+ dependsOn?: Dependencies;
44
43
  requiresPorts?: Token<unknown>[];
45
- register: (ctx: ModuleRegistry) => void | Promise<void>;
44
+ register: (ctx: ModuleRegistry<C>) => void | Promise<void>;
46
45
  };
47
- export declare function definePlugin(definition: PluginDefinition): Plugin;
46
+ export type Plugin<C extends TokenCatalog = never, Id extends string = string, Dependencies extends readonly string[] = string[]> = PluginDefinition<C, Id, Dependencies>;
47
+ export declare function definePlugin<C extends TokenCatalog = never, const Id extends string = string, const Dependencies extends readonly string[] = []>(definition: PluginDefinition<C, Id, Dependencies>): Plugin<C, Id, Dependencies>;
48
+ export declare function definePluginWithCatalog<C extends TokenCatalog>(): <const Id extends string, const Dependencies extends readonly string[] = []>(definition: PluginDefinition<C, Id, Dependencies>) => Plugin<C, Id, Dependencies>;
48
49
  //# sourceMappingURL=define-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-plugin.d.ts","sourceRoot":"","sources":["../../../src/server/plugin-host/define-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,KAAK,EACL,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzD,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhG,MAAM,MAAM,cAAc,GAAG;IAE3B,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAIvD,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnE,OAAO,EAAE;QACP,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;QACrD,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;KACtC,CAAC;IACF,KAAK,EAAE;QACL,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;QACjD,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,CAAC;IACF,MAAM,EAAE;QACN,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;KACvC,CAAC;IAEF,IAAI,EAAE;QACJ,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACrD,MAAM,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;KACzC,CAAC;IACF,GAAG,EAAE;QACH,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;QAC1C,MAAM,IAAI,iBAAiB,EAAE,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,aAAa,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,CAAC;AAEF,wBAAgB,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,CAEjE"}
1
+ {"version":3,"file":"define-plugin.d.ts","sourceRoot":"","sources":["../../../src/server/plugin-host/define-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  export function definePlugin(definition) {
2
2
  return definition;
3
3
  }
4
+ export function definePluginWithCatalog() {
5
+ return function defineCataloguedPlugin(definition) {
6
+ return definition;
7
+ };
8
+ }
4
9
  //# sourceMappingURL=define-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-plugin.js","sourceRoot":"","sources":["../../../src/server/plugin-host/define-plugin.ts"],"names":[],"mappings":"AAiEA,MAAM,UAAU,YAAY,CAAC,UAA4B;IACvD,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"define-plugin.js","sourceRoot":"","sources":["../../../src/server/plugin-host/define-plugin.ts"],"names":[],"mappings":"AAkFA,MAAM,UAAU,YAAY,CAI1B,UAAiD;IACjD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,SAAS,sBAAsB,CAGpC,UAAiD;QACjD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,7 +1,7 @@
1
- export { definePlugin } from './define-plugin.js';
2
- export type { Plugin, PluginDefinition, ModuleRegistry, McpToolDefinition, RouterFactory, EventHandler, } from './define-plugin.js';
1
+ export { definePlugin, definePluginWithCatalog } from './define-plugin.js';
2
+ export type { Plugin, PluginDefinition, ModuleRegistry, McpToolDefinition, RouterFactory, EventHandler, TypedContainer, } from './define-plugin.js';
3
3
  export { ModuleRegistryImpl } from './module-registry.js';
4
- export { loadPlugins } from './load-plugins.js';
4
+ export { defineExtensions, loadPlugins, topoSort } from './load-plugins.js';
5
5
  export type { PluginEntry } from './load-plugins.js';
6
6
  export { applyServiceManifest, parseServiceManifest } from './service-manifest.js';
7
7
  export { loadExtensions } from './load-extensions.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/plugin-host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/plugin-host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5E,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,6 +1,6 @@
1
- export { definePlugin } from './define-plugin.js';
1
+ export { definePlugin, definePluginWithCatalog } from './define-plugin.js';
2
2
  export { ModuleRegistryImpl } from './module-registry.js';
3
- export { loadPlugins } from './load-plugins.js';
3
+ export { defineExtensions, loadPlugins, topoSort } from './load-plugins.js';
4
4
  export { applyServiceManifest, parseServiceManifest } from './service-manifest.js';
5
5
  export { loadExtensions } from './load-extensions.js';
6
6
  export { corePlugins } from './core-plugins.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/plugin-host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/plugin-host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAU3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,12 +1,30 @@
1
1
  import type { Container } from '../kernel/index.js';
2
+ import type { TokenCatalog } from '@openora/core/contracts';
2
3
  import type { Plugin } from './define-plugin.js';
3
4
  import { ModuleRegistryImpl } from './module-registry.js';
4
- export type PluginEntry = {
5
- id: string;
5
+ export type PluginEntry<Id extends string = string, Dependencies extends readonly string[] = readonly string[]> = {
6
+ id: Id;
6
7
  path: string;
8
+ dependsOn?: Dependencies;
7
9
  kind?: 'module' | 'infra';
8
10
  };
9
- export declare function loadPlugins(entries: PluginEntry[], container: Container): Promise<ModuleRegistryImpl>;
11
+ type EntryIds<Entries extends readonly PluginEntry[]> = Entries[number]['id'];
12
+ type EntryDependencies<Entry extends PluginEntry> = Entry['dependsOn'] extends readonly string[] ? Entry['dependsOn'][number] : never;
13
+ type MissingDependencies<Entries extends readonly PluginEntry[]> = Entries[number] extends infer Entry ? Entry extends PluginEntry ? Exclude<EntryDependencies<Entry>, EntryIds<Entries>> : never : never;
14
+ type EntryById<Entries extends readonly PluginEntry[], Id extends string> = Entries[number] extends infer Entry ? (Entry extends PluginEntry<Id> ? Entry : never) : never;
15
+ type HasDependencyCycle<Entries extends readonly PluginEntry[], Id extends string, Trail extends readonly string[] = []> = Id extends Trail[number] ? true : EntryById<Entries, Id> extends infer Entry ? Entry extends PluginEntry ? HasDependencyCycleFor<Entries, EntryDependencies<Entry>, [...Trail, Id]> : false : false;
16
+ type HasDependencyCycleFor<Entries extends readonly PluginEntry[], Ids extends string, Trail extends readonly string[]> = true extends (Ids extends string ? HasDependencyCycle<Entries, Ids, Trail> : never) ? true : false;
17
+ type GraphHasCycle<Entries extends readonly PluginEntry[], Ids extends string = EntryIds<Entries>> = true extends (Ids extends string ? HasDependencyCycle<Entries, Ids> : never) ? true : false;
18
+ type PluginGraphError<Entries extends readonly PluginEntry[]> = [
19
+ MissingDependencies<Entries>
20
+ ] extends [never] ? GraphHasCycle<Entries> extends true ? {
21
+ readonly __pluginGraphError: 'circular dependency';
22
+ } : unknown : {
23
+ readonly __pluginGraphError: 'unknown dependency';
24
+ };
25
+ export declare function defineExtensions<const Entries extends readonly PluginEntry[]>(entries: Entries & PluginGraphError<Entries>): Entries;
26
+ export declare function topoSort<C extends TokenCatalog>(plugins: Plugin<C>[]): Plugin<C>[];
27
+ export declare function loadPlugins<C extends TokenCatalog = never>(entries: PluginEntry[], container: Container<C>): Promise<ModuleRegistryImpl<C>>;
10
28
  /**
11
29
  * Boot-time fail-fast for cross-domain ports (ADR-0024). A domain depends ONLY on
12
30
  * the foundation and reaches another domain through a port token the other domain
@@ -17,5 +35,6 @@ export declare function loadPlugins(entries: PluginEntry[], container: Container
17
35
  * registration and throw one actionable error naming the plugin, the port, and the
18
36
  * likely-missing package.
19
37
  */
20
- export declare function assertRequiredPorts(plugins: Plugin[], container: Container): void;
38
+ export declare function assertRequiredPorts<C extends TokenCatalog = never>(plugins: Plugin<C>[], container: Container): void;
39
+ export {};
21
40
  //# sourceMappingURL=load-plugins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-plugins.d.ts","sourceRoot":"","sources":["../../../src/server/plugin-host/load-plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IAKb,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC3B,CAAC;AA8DF,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EAAE,EACtB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAuB7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAgBjF"}
1
+ {"version":3,"file":"load-plugins.d.ts","sourceRoot":"","sources":["../../../src/server/plugin-host/load-plugins.ts"],"names":[],"mappings":"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"}