[8] 
[[JavaScript]] の[DFN[[RUBYB[[[エージェント]]][agent]]]]とは、
[[プログラム]]が実行される[[スレッド]]に相当するものを、
特定の実装方法に縛られないよう[[仕様書]]上抽象化したものです。
[SRC[>>7]]

[16] 
[[エージェント]]は[[エージェントクラスター]]に属します。

* 仕様書

[REFS[
- [7] [CITE@en-US-x-hixie[HTML Standard]], [TIME[2021-04-12T15:12:42.000Z]], [TIME[2021-04-13T07:49:44.062Z]] <https://html.spec.whatwg.org/#agents-and-agent-clusters>
]REFS]

* Web のエージェント

[10] 
[[Web]] では、同期的に互いにアクセスし得る[[大域オブジェクト]]/[[realm]]
をまとめた単位が1つの[[エージェント]]となります。

[FIG(short list)[ [2] [[Web]] の[[エージェント]]
- [[類似起源窓エージェント]]
- [[専用ワーカーエージェント]]
- [[共有ワーカーエージェント]]
- [[サービスワーカーエージェント]]
- [[ワークレットエージェント]]
]FIG]

* 作成

[11] 
[DFN[[RUBYB[エージェントを[RUBY[作成][さくせい]]][create an agent]]]]するには、
[[boolean]] [VAR[ブロック可能]]について、
次のようにします。
[SRC[>>7]]

[FIG(steps)[
= [12] 
[VAR[signifier]] 
を、
新しい[[固有]]内部値に設定します。
= [14] 
[VAR[エージェント]]を、
新しい[[エージェント]]に設定します。
[FIG(list members)[ [15] [[エージェント]]

: [F(ss)[CanBlock]] : [VAR[ブロック可能]]
: [F(ss)[Signifier]] : [VAR[signifier]]
: [F(ss)[CandidateExecution]] : 新しい[[候補実行]]
: [F(ss)[IsLockFree1]] : [[実装依存]]
: [F(ss)[IsLockFree2]] : [[実装依存]]
: [F(ss)[LittleEndian]] : [[実装依存]]
: [F[イベントループ]] : 新しい[[イベントループ]]

]FIG]
= [13] 
[VAR[エージェント]]を返します。
]FIG]



* 関連

[9] 
[[利用者エージェント]]の[[エージェント]]とは違う意味です。

* 歴史

[1] [CITE@en[Define agents and agent clusters]]
([[annevk]]著, [TIME[2017-04-26 18:46:01 +09:00]])
<https://github.com/whatwg/html/commit/4db86547f1184e7ceb4f1009cb3bef28101eda4f>

[3] [CITE@en[What is an Agent? · Issue #882 · tc39/ecma262]]
([TIME[2017-12-19 01:09:08 +09:00]])
<https://github.com/tc39/ecma262/issues/882>

[4] [CITE@en[Clarify and explain agents and agent clusters]]
([[domenic]]著, [TIME[2018-07-26 02:32:25 +09:00]])
<https://github.com/whatwg/html/commit/db6d0df0b681d0b83a35b60302ad5077e59bb8aa>

[5] [CITE@en[Add Origin-aware Transferrables · Issue #3766 · whatwg/html]]
([TIME[2018-07-26 23:16:45 +09:00]])
<https://github.com/whatwg/html/issues/3766>

[6] [CITE@en[Clarify and explain agents and agent clusters by domenic · Pull Request #3783 · whatwg/html]]
([TIME[2018-07-26 23:17:18 +09:00]])
<https://github.com/whatwg/html/pull/3783>