@m1a0rz/agent-identity 0.4.0 → 0.4.2

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 (127) hide show
  1. package/README-cn.md +34 -0
  2. package/README.md +34 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +91 -6
  5. package/dist/scripts/demo-get-session.d.ts +15 -0
  6. package/dist/scripts/demo-get-session.d.ts.map +1 -0
  7. package/dist/scripts/demo-get-session.js +58 -0
  8. package/dist/src/actions/identity-actions.d.ts +74 -8
  9. package/dist/src/actions/identity-actions.d.ts.map +1 -1
  10. package/dist/src/actions/identity-actions.js +209 -83
  11. package/dist/src/commands/identity-commands.d.ts.map +1 -1
  12. package/dist/src/commands/identity-commands.js +139 -11
  13. package/dist/src/gateway/identity-session-methods.d.ts +67 -0
  14. package/dist/src/gateway/identity-session-methods.d.ts.map +1 -0
  15. package/dist/src/gateway/identity-session-methods.js +134 -0
  16. package/dist/src/hooks/after-tool-call.d.ts.map +1 -1
  17. package/dist/src/hooks/after-tool-call.js +12 -0
  18. package/dist/src/hooks/before-agent-start.d.ts +2 -0
  19. package/dist/src/hooks/before-agent-start.d.ts.map +1 -1
  20. package/dist/src/hooks/before-agent-start.js +33 -6
  21. package/dist/src/hooks/before-tool-call.d.ts +1 -0
  22. package/dist/src/hooks/before-tool-call.d.ts.map +1 -1
  23. package/dist/src/hooks/before-tool-call.js +29 -5
  24. package/dist/src/hooks/llm-input.d.ts.map +1 -1
  25. package/dist/src/hooks/llm-input.js +32 -4
  26. package/dist/src/hooks/sessions-send-propagation.d.ts.map +1 -1
  27. package/dist/src/hooks/sessions-send-propagation.js +1 -0
  28. package/dist/src/hooks/sessions-spawn-propagation.d.ts.map +1 -1
  29. package/dist/src/hooks/sessions-spawn-propagation.js +1 -0
  30. package/dist/src/hooks/tool-result-persist.d.ts +20 -0
  31. package/dist/src/hooks/tool-result-persist.d.ts.map +1 -0
  32. package/dist/src/hooks/tool-result-persist.js +50 -0
  33. package/dist/src/preflight/plugin-preflight.d.ts +55 -0
  34. package/dist/src/preflight/plugin-preflight.d.ts.map +1 -0
  35. package/dist/src/preflight/plugin-preflight.js +226 -0
  36. package/dist/src/preflight/plugin-state.d.ts +18 -0
  37. package/dist/src/preflight/plugin-state.d.ts.map +1 -0
  38. package/dist/src/preflight/plugin-state.js +19 -0
  39. package/dist/src/routes/oidc-login.js +2 -2
  40. package/dist/src/services/identity-client.d.ts +106 -1
  41. package/dist/src/services/identity-client.d.ts.map +1 -1
  42. package/dist/src/services/identity-client.js +123 -1
  43. package/dist/src/services/identity-credentials.d.ts +1 -1
  44. package/dist/src/services/identity-credentials.d.ts.map +1 -1
  45. package/dist/src/services/identity-credentials.js +32 -16
  46. package/dist/src/services/oidc-client.d.ts +12 -1
  47. package/dist/src/services/oidc-client.d.ts.map +1 -1
  48. package/dist/src/services/oidc-client.js +20 -3
  49. package/dist/src/services/session-refresh.d.ts +10 -0
  50. package/dist/src/services/session-refresh.d.ts.map +1 -1
  51. package/dist/src/services/session-refresh.js +29 -5
  52. package/dist/src/services/skill-contract-metadata.d.ts +35 -0
  53. package/dist/src/services/skill-contract-metadata.d.ts.map +1 -0
  54. package/dist/src/services/skill-contract-metadata.js +145 -0
  55. package/dist/src/services/skill-contract-renderer.d.ts +14 -0
  56. package/dist/src/services/skill-contract-renderer.d.ts.map +1 -0
  57. package/dist/src/services/skill-contract-renderer.js +120 -0
  58. package/dist/src/services/tip-propagation.d.ts +2 -0
  59. package/dist/src/services/tip-propagation.d.ts.map +1 -1
  60. package/dist/src/services/tip-propagation.js +4 -3
  61. package/dist/src/services/tip-with-refresh.d.ts +1 -1
  62. package/dist/src/services/tip-with-refresh.d.ts.map +1 -1
  63. package/dist/src/services/tip-with-refresh.js +24 -39
  64. package/dist/src/store/credential-store.d.ts +6 -1
  65. package/dist/src/store/credential-store.d.ts.map +1 -1
  66. package/dist/src/store/credential-store.js +3 -0
  67. package/dist/src/store/oidc-state-store.d.ts +3 -3
  68. package/dist/src/store/oidc-state-store.d.ts.map +1 -1
  69. package/dist/src/store/oidc-state-store.js +2 -2
  70. package/dist/src/store/sender-session-store.d.ts +8 -0
  71. package/dist/src/store/sender-session-store.d.ts.map +1 -1
  72. package/dist/src/store/sender-session-store.js +46 -11
  73. package/dist/src/store/skill-contract-store.d.ts +19 -0
  74. package/dist/src/store/skill-contract-store.d.ts.map +1 -0
  75. package/dist/src/store/skill-contract-store.js +65 -0
  76. package/dist/src/store/skill-path-store.d.ts +5 -0
  77. package/dist/src/store/skill-path-store.d.ts.map +1 -1
  78. package/dist/src/store/skill-path-store.js +13 -1
  79. package/dist/src/tools/identity-approve-tool.d.ts +2 -11
  80. package/dist/src/tools/identity-approve-tool.d.ts.map +1 -1
  81. package/dist/src/tools/identity-config-suggest.d.ts +2 -13
  82. package/dist/src/tools/identity-config-suggest.d.ts.map +1 -1
  83. package/dist/src/tools/identity-config.d.ts +2 -7
  84. package/dist/src/tools/identity-config.d.ts.map +1 -1
  85. package/dist/src/tools/identity-fetch.d.ts +2 -13
  86. package/dist/src/tools/identity-fetch.d.ts.map +1 -1
  87. package/dist/src/tools/identity-fetch.js +3 -3
  88. package/dist/src/tools/identity-get-role-credentials.d.ts +10 -0
  89. package/dist/src/tools/identity-get-role-credentials.d.ts.map +1 -0
  90. package/dist/src/tools/identity-get-role-credentials.js +56 -0
  91. package/dist/src/tools/identity-get-session-token.d.ts +8 -0
  92. package/dist/src/tools/identity-get-session-token.d.ts.map +1 -0
  93. package/dist/src/tools/identity-get-session-token.js +46 -0
  94. package/dist/src/tools/identity-get-tip-token.d.ts +8 -0
  95. package/dist/src/tools/identity-get-tip-token.d.ts.map +1 -0
  96. package/dist/src/tools/identity-get-tip-token.js +46 -0
  97. package/dist/src/tools/identity-list-credentials.d.ts +2 -11
  98. package/dist/src/tools/identity-list-credentials.d.ts.map +1 -1
  99. package/dist/src/tools/identity-list-credentials.js +4 -3
  100. package/dist/src/tools/identity-list-risk-patterns.d.ts +2 -7
  101. package/dist/src/tools/identity-list-risk-patterns.d.ts.map +1 -1
  102. package/dist/src/tools/identity-list-roles.d.ts +8 -0
  103. package/dist/src/tools/identity-list-roles.d.ts.map +1 -0
  104. package/dist/src/tools/identity-list-roles.js +43 -0
  105. package/dist/src/tools/identity-list-tips.d.ts +2 -7
  106. package/dist/src/tools/identity-list-tips.d.ts.map +1 -1
  107. package/dist/src/tools/identity-login.d.ts +2 -7
  108. package/dist/src/tools/identity-login.d.ts.map +1 -1
  109. package/dist/src/tools/identity-logout.d.ts +2 -7
  110. package/dist/src/tools/identity-logout.d.ts.map +1 -1
  111. package/dist/src/tools/identity-risk-check.d.ts +3 -17
  112. package/dist/src/tools/identity-risk-check.d.ts.map +1 -1
  113. package/dist/src/tools/identity-set-binding.d.ts +2 -10
  114. package/dist/src/tools/identity-set-binding.d.ts.map +1 -1
  115. package/dist/src/tools/identity-status.d.ts +2 -7
  116. package/dist/src/tools/identity-status.d.ts.map +1 -1
  117. package/dist/src/tools/identity-unset-binding.d.ts +2 -9
  118. package/dist/src/tools/identity-unset-binding.d.ts.map +1 -1
  119. package/dist/src/tools/identity-whoami.d.ts +2 -7
  120. package/dist/src/tools/identity-whoami.d.ts.map +1 -1
  121. package/dist/src/types.d.ts +21 -0
  122. package/dist/src/types.d.ts.map +1 -1
  123. package/dist/src/utils/derive-session-key.d.ts +11 -1
  124. package/dist/src/utils/derive-session-key.d.ts.map +1 -1
  125. package/dist/src/utils/derive-session-key.js +46 -6
  126. package/openclaw.plugin.json +18 -0
  127. package/package.json +33 -7
package/README-cn.md CHANGED
@@ -193,6 +193,9 @@ openclaw plugins install --link .
193
193
  | `credentialsFile` | string | 否 | 凭证 JSON 文件路径。默认 `VOLCENGINE_CREDENTIALS_FILE` 或 `/var/run/secrets/iam/credential` |
194
194
  | `credentialsMetadataUrl` | string | 否 | 远程凭据拉取的完整 URL。与 `roleTrn` 同时配置时拉取后做 AssumeRole。404 时回退到 `credentialsFile` |
195
195
  | `sessionToken` | string | 否 | STS 临时会话令牌(或 `VOLCENGINE_SESSION_TOKEN`) |
196
+ | `subagentTipPropagation` | boolean | 否 | 将 TIP 和 session 传播到子 agent。默认 false |
197
+ | `webchatSessionExchange` | boolean | 否 | 启用 `identity.session.put` / `identity.session.get` gateway WS 方法供 webchat 客户端使用。默认 false |
198
+ | `personalSessionMode` | boolean | 否 | 个人/单用户模式:TIP、OIDC session、凭据仅存储在 `agent:main:main`(不做按发送者或 per-channel-peer 隔离)。子 agent 会话不变。默认 false;多租户或群聊共享场景勿开启。 |
196
199
 
197
200
  \* AK/SK 至少通过 `accessKeyId`+`secretAccessKey`、环境变量、`credentialsMetadataUrl`+`roleTrn` 或 `credentialsFile` 之一提供。
198
201
 
@@ -235,6 +238,37 @@ TIP token 通过 `GetWorkloadAccessTokenForJWT` 获取。工作负载行为:
235
238
 
236
239
  **审批消息**(当高风险工具被拦截时):若要向飞书(或 Telegram、Slack 等)推送审批请求,请在 openclaw.json 中将 `session.dmScope` 设置为 `per-channel-peer` 或 `per-account-channel-peer`。默认 `session.dmScope: "main"` 时,sessionKey 不包含 channel/peer 信息,插件无法推导推送目标,审批消息不会推送。用户仍可在 agent 的错误回复中看到 block/approval_id;使用 `/identity approve <id>` 审批。
237
240
 
241
+ ### WebChat Session Exchange(Gateway WS 方法)
242
+
243
+ 当 `identity.webchatSessionExchange` 为 `true` 时,插件注册两个 gateway WebSocket 方法,允许 webchat 客户端直接注入和获取 session token,无需走 OIDC 重定向流程:
244
+
245
+ | 方法 | 参数 | 响应 | 描述 |
246
+ | --- | --- | --- | --- |
247
+ | `identity.session.put` | `{ sessionKey, idToken, refreshToken?, senderId?, channel? }` | `{ sub, expiresAt, effectiveSessionKey, hasTip }` | 将 OIDC id_token 注入到插件 session;可选传入 `refreshToken`(加密存储),用于静默续期。通过 `buildEffectiveSessionKey` 解析实际存储 key(与 hooks/commands 相同的隔离逻辑)。 |
248
+ | `identity.session.get` | `{ sessionKey, senderId?, channel? }` | `{ userToken, sub, expiresAt, effectiveSessionKey, hasRefreshToken }` | 获取指定 session 已存储的 user token。`hasRefreshToken` 表示是否存有 refresh token;响应中不会返回 refresh token 明文。 |
249
+
250
+ - `senderId` 默认值为 `"openclaw-control-ui"`。对于 main session,实际存储 key 为 `agent:main:main:user:<senderId>`。
251
+ - `channel` 可选;当 session 来源于可发送消息的渠道(feishu、telegram 等)时传入,可启用 per-channel-peer key 提升。
252
+
253
+ 两个方法均**限制为 webchat WS 连接**(`isWebchatConnect` 检查),非 webchat 客户端会收到 `FORBIDDEN` 错误。
254
+
255
+ **配置:**
256
+
257
+ ```json
258
+ {
259
+ "identity": {
260
+ "webchatSessionExchange": true
261
+ }
262
+ }
263
+ ```
264
+
265
+ **典型流程(BFF → webchat → plugin):**
266
+
267
+ 1. BFF 完成 3LO 登录并获取用户的 OIDC `id_token`
268
+ 2. Webchat 客户端调用 `identity.session.put`,传入 session key 和 `id_token`(若需静默续期,可一并传入 token 响应中的 `refresh_token` 作为 `refreshToken`)
269
+ 3. 插件校验 token,存储 session,并获取 TIP
270
+ 4. 后续该 session 中的 agent 运行拥有有效身份——无需手动登录
271
+
238
272
  ### WebChat / TUI
239
273
 
240
274
  用户从 WebChat 或 TUI 运行 `/identity` 时,跟进消息不会投递;插件无 API 推送至这些渠道。请使用 `/identity status` 确认结果。
package/README.md CHANGED
@@ -193,6 +193,9 @@ Add to `openclaw.json` under `plugins.entries.agent-identity.config`:
193
193
  | `credentialsFile` | string | No | Path to credential JSON. Default: `VOLCENGINE_CREDENTIALS_FILE` or `/var/run/secrets/iam/credential` |
194
194
  | `credentialsMetadataUrl` | string | No | Full URL for remote credential fetch. When set with `roleTrn`, fetches then AssumeRole. 404 falls through to `credentialsFile` |
195
195
  | `sessionToken` | string | No | STS session token (or `VOLCENGINE_SESSION_TOKEN`) |
196
+ | `subagentTipPropagation` | boolean | No | Propagate TIP and session to subagents. Default false |
197
+ | `webchatSessionExchange` | boolean | No | Enable `identity.session.put` / `identity.session.get` gateway WS methods for webchat clients. Default false |
198
+ | `personalSessionMode` | boolean | No | Single-user mode: TIP, OIDC session, and credentials are stored only under `agent:main:main` (no per-sender or per-channel-peer keys). Subagent sessions unchanged. Default false — do not enable for multi-tenant or shared groups. |
196
199
 
197
200
  \* AK/SK must be provided via `accessKeyId`+`secretAccessKey`, environment variables, `credentialsMetadataUrl`+`roleTrn`, or `credentialsFile`.
198
201
 
@@ -235,6 +238,37 @@ Login success and credential fetch follow-up messages (e.g. "✓ Credential for
235
238
 
236
239
  **Approval messages** (when a high-risk tool is blocked): For approval requests to be delivered to Feishu (or Telegram, Slack, etc.), set `session.dmScope` to `per-channel-peer` or `per-account-channel-peer` in openclaw.json. With default `session.dmScope: "main"`, the sessionKey does not include channel/peer info, so the plugin cannot derive a delivery target and approval messages are not pushed. The user will still see the block/approval_id in the agent's error reply; use `/identity approve <id>` to approve.
237
240
 
241
+ ### WebChat Session Exchange (Gateway WS Methods)
242
+
243
+ When `identity.webchatSessionExchange` is `true`, the plugin registers two gateway WebSocket methods for webchat clients to inject and retrieve session tokens without going through the OIDC redirect flow:
244
+
245
+ | Method | Params | Response | Description |
246
+ | --- | --- | --- | --- |
247
+ | `identity.session.put` | `{ sessionKey, idToken, refreshToken?, senderId?, channel? }` | `{ sub, expiresAt, effectiveSessionKey, hasTip }` | Inject an OIDC id_token into a plugin session; optional `refreshToken` is stored encrypted for silent token renewal. Resolves effective storage key via `buildEffectiveSessionKey` (same sender isolation as hooks/commands). |
248
+ | `identity.session.get` | `{ sessionKey, senderId?, channel? }` | `{ userToken, sub, expiresAt, effectiveSessionKey, hasRefreshToken }` | Retrieve the stored user token for a session. `hasRefreshToken` indicates whether a refresh token is stored; the refresh token value is never returned. |
249
+
250
+ - `senderId` defaults to `"openclaw-control-ui"`. The effective storage key is `agent:main:main:user:<senderId>` for main sessions.
251
+ - `channel` is optional; when the session originates from a sendable channel (feishu, telegram, etc.), pass it to enable per-channel-peer key promotion.
252
+
253
+ Both methods are **restricted to webchat WS connections only** (`isWebchatConnect` check). Non-webchat clients receive a `FORBIDDEN` error.
254
+
255
+ **Config:**
256
+
257
+ ```json
258
+ {
259
+ "identity": {
260
+ "webchatSessionExchange": true
261
+ }
262
+ }
263
+ ```
264
+
265
+ **Typical flow (BFF → webchat → plugin):**
266
+
267
+ 1. BFF completes 3LO login and obtains an OIDC `id_token` for the user
268
+ 2. Webchat client calls `identity.session.put` with the session key and `id_token` (optionally `refreshToken` from the token response if silent renewal is desired)
269
+ 3. Plugin verifies the token, stores the session, and acquires TIP
270
+ 4. Subsequent agent runs in that session have a valid identity — no manual login needed
271
+
238
272
  ### WebChat / TUI
239
273
 
240
274
  Follow-up messages (login success, credential fetch done) are not delivered when the user runs `/identity` from WebChat or TUI; the plugin has no API to push to those channels. Use `/identity status` to confirm results.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAsE7D,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,QA2ZtD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAkF7D,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,QA8etD"}
package/dist/index.js CHANGED
@@ -13,15 +13,18 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import { runPluginPreflight } from "./src/preflight/plugin-preflight.js";
17
+ import { pluginState } from "./src/preflight/plugin-state.js";
16
18
  import { createIdentityCommand, createIdCommand } from "./src/commands/identity-commands.js";
17
19
  import { createBeforeAgentStartHandler } from "./src/hooks/before-agent-start.js";
18
20
  import { createLlmInputHandler } from "./src/hooks/llm-input.js";
19
21
  import { createSessionsSendPropagationHandler } from "./src/hooks/sessions-send-propagation.js";
20
22
  import { createSessionsSpawnPropagationHandler } from "./src/hooks/sessions-spawn-propagation.js";
21
23
  import { createSubagentEndedCleanupHandler } from "./src/hooks/subagent-ended-cleanup.js";
22
- import { setSender, clearSender } from "./src/store/sender-session-store.js";
24
+ import { setSender, clearSender, setPersonalSessionMode } from "./src/store/sender-session-store.js";
23
25
  import { deriveSessionKey, needsSenderIsolation, } from "./src/utils/derive-session-key.js";
24
26
  import { createBeforeToolCallHandler } from "./src/hooks/before-tool-call.js";
27
+ import { createToolResultPersistHandler } from "./src/hooks/tool-result-persist.js";
25
28
  import { createAfterToolCallHandler } from "./src/hooks/after-tool-call.js";
26
29
  import * as skillPathStore from "./src/store/skill-path-store.js";
27
30
  import { createOIDCCallbackHandler, createOIDCCallbackHandlerLazy, } from "./src/routes/oidc-login.js";
@@ -34,7 +37,11 @@ import { createIdentityConfigSuggestTool } from "./src/tools/identity-config-sug
34
37
  import { createIdentityListRiskPatternsTool } from "./src/tools/identity-list-risk-patterns.js";
35
38
  import { createIdentityRiskCheckTool } from "./src/tools/identity-risk-check.js";
36
39
  import { createIdentityFetchTool } from "./src/tools/identity-fetch.js";
40
+ import { createIdentityGetRoleCredentialsTool } from "./src/tools/identity-get-role-credentials.js";
41
+ import { createIdentityGetTipTokenTool } from "./src/tools/identity-get-tip-token.js";
42
+ import { createIdentityGetSessionTokenTool } from "./src/tools/identity-get-session-token.js";
37
43
  import { createIdentityListCredentialsTool } from "./src/tools/identity-list-credentials.js";
44
+ import { createIdentityListRolesTool } from "./src/tools/identity-list-roles.js";
38
45
  import { createIdentityListTipsTool } from "./src/tools/identity-list-tips.js";
39
46
  import { createIdentityLoginTool } from "./src/tools/identity-login.js";
40
47
  import { createIdentityLogoutTool } from "./src/tools/identity-logout.js";
@@ -43,6 +50,7 @@ import { createIdentityStatusTool } from "./src/tools/identity-status.js";
43
50
  import { createIdentityUnsetBindingTool } from "./src/tools/identity-unset-binding.js";
44
51
  import { createIdentityWhoamiTool } from "./src/tools/identity-whoami.js";
45
52
  import { parseSessionKeyToDeliveryTarget, } from "./src/utils/derive-session-key.js";
53
+ import { createSessionPutHandler, createSessionGetHandler, } from "./src/gateway/identity-session-methods.js";
46
54
  import { logDebug, logInfo, logWarn } from "./src/utils/logger.js";
47
55
  import { initEncryptionKey } from "./src/store/encryption.js";
48
56
  const PLUGIN_STORE_DIR = "~/.openclaw/plugins/identity";
@@ -69,6 +77,10 @@ export default function register(api) {
69
77
  const storeDir = api.resolvePath(PLUGIN_STORE_DIR);
70
78
  initEncryptionKey(storeDir);
71
79
  const identityCfg = pluginConfig.identity;
80
+ setPersonalSessionMode(identityCfg?.personalSessionMode === true);
81
+ if (identityCfg?.personalSessionMode) {
82
+ logInfo(api.logger, "identity.personalSessionMode: non-subagent TIP/session/credentials use agent:main:main only");
83
+ }
72
84
  const hasIdentity = hasAnyIdentityConfig(identityCfg);
73
85
  const userpool = pluginConfig.userpool;
74
86
  const identityClient = hasIdentity
@@ -95,6 +107,9 @@ export default function register(api) {
95
107
  getResourceApiKey: async () => {
96
108
  throw new Error("Identity not configured.");
97
109
  },
110
+ getUserCredential: async () => {
111
+ throw new Error("Identity not configured.");
112
+ },
98
113
  checkPermission: async () => {
99
114
  throw new Error("Identity not configured.");
100
115
  },
@@ -105,9 +120,24 @@ export default function register(api) {
105
120
  PageNumber: 1,
106
121
  PageSize: 20,
107
122
  }),
123
+ listRoleCredentialProviders: async () => ({
124
+ RoleCredentialProviders: [],
125
+ TotalCount: 0,
126
+ PageNumber: 1,
127
+ PageSize: 20,
128
+ }),
129
+ getRoleCredentials: async () => {
130
+ throw new Error("Identity not configured.");
131
+ },
108
132
  getUserPool: async () => {
109
133
  throw new Error("Identity not configured.");
110
134
  },
135
+ listIdentityProviders: async () => ({
136
+ pageNumber: 1,
137
+ pageSize: 10,
138
+ totalCount: 0,
139
+ data: [],
140
+ }),
111
141
  listUserPools: async () => ({
112
142
  pageNumber: 1,
113
143
  pageSize: 10,
@@ -277,23 +307,29 @@ export default function register(api) {
277
307
  getOidcConfigForRefresh: getOidcConfigForRefresh ?? undefined,
278
308
  configWorkloadName: identityCfg?.workloadName,
279
309
  identityClient: hasIdentity ? identityClient : undefined,
310
+ workloadPoolName: identityCfg?.workloadPoolName ?? "default",
311
+ userPoolName: userpool?.userPoolName,
280
312
  logger: api.logger,
281
313
  pluginConfig,
282
314
  sendCredentialMessage: sendToSession,
283
315
  };
284
316
  api.registerCommand(createIdentityCommand(identityCommandsDeps));
285
317
  api.registerCommand(createIdCommand(identityCommandsDeps));
286
- logInfo(api.logger, "commands /identity, /id (login, status, logout, list-tips, list-credentials, fetch, set, unset); HTTP callback /identity/oauth/callback (credential OAuth uses Identity callback)");
318
+ logInfo(api.logger, "commands /identity, /id (login, status, logout, list, list-roles, list-tips, fetch, set, unset); HTTP callback /identity/oauth/callback (credential OAuth uses Identity callback)");
287
319
  // Tools (share deps with commands). Optional = only included when agent allowlist explicitly adds them.
288
320
  api.registerTool(createIdentityWhoamiTool(identityCommandsDeps), { optional: false });
289
321
  api.registerTool(createIdentityLogoutTool(identityCommandsDeps), { optional: false });
290
322
  api.registerTool(createIdentityStatusTool(identityCommandsDeps), { optional: false });
291
323
  api.registerTool(createIdentityLoginTool(identityCommandsDeps), { optional: false });
292
324
  api.registerTool(createIdentityListCredentialsTool(identityCommandsDeps), { optional: false });
325
+ api.registerTool(createIdentityListRolesTool(identityCommandsDeps), { optional: false });
293
326
  api.registerTool(createIdentityListTipsTool(identityCommandsDeps), { optional: false });
294
327
  api.registerTool(createIdentityConfigTool(identityCommandsDeps), { optional: false });
295
328
  api.registerTool(createIdentityConfigSuggestTool(), { optional: false });
296
329
  api.registerTool(createIdentityFetchTool(identityCommandsDeps), { optional: false });
330
+ api.registerTool(createIdentityGetRoleCredentialsTool(identityCommandsDeps), { optional: false });
331
+ api.registerTool(createIdentityGetTipTokenTool(identityCommandsDeps), { optional: false });
332
+ api.registerTool(createIdentityGetSessionTokenTool(identityCommandsDeps), { optional: false });
297
333
  api.registerTool(createIdentitySetBindingTool(identityCommandsDeps), { optional: true });
298
334
  api.registerTool(createIdentityUnsetBindingTool(identityCommandsDeps), { optional: true });
299
335
  api.registerTool(createIdentityRiskCheckTool({ pluginConfig, logger: api.logger }), { optional: true });
@@ -390,12 +426,12 @@ export default function register(api) {
390
426
  logger: api.logger,
391
427
  }));
392
428
  if (skillReadCheck) {
393
- api.on("session_end", (_event, ctx) => {
394
- if (ctx.sessionId)
395
- skillPathStore.clearSessionById(ctx.sessionId);
429
+ api.on("session_end", (event) => {
430
+ if (event.sessionId)
431
+ skillPathStore.clearSessionById(event.sessionId);
396
432
  });
397
433
  }
398
- // before_tool_call: authz, credential injection, group sender context
434
+ // before_tool_call: authz, credential injection, group sender context, contract injection
399
435
  api.on("before_tool_call", createBeforeToolCallHandler({
400
436
  storeDir,
401
437
  identityClient: hasIdentity ? identityClient : undefined,
@@ -407,7 +443,56 @@ export default function register(api) {
407
443
  identityService: hasIdentity ? identityService : undefined,
408
444
  getOidcConfigForRefresh: getOidcConfigForRefresh ?? undefined,
409
445
  configWorkloadName: identityCfg?.workloadName,
446
+ workspaceDir: api.resolvePath?.(".") ?? undefined,
410
447
  }));
411
448
  // Companion after_tool_call: restore env snapshot set by credential injection
412
449
  api.on("after_tool_call", createAfterToolCallHandler({ logger: api.logger }));
450
+ api.on("tool_result_persist", createToolResultPersistHandler({ logger: api.logger }));
451
+ // Gateway WS methods: webchat session exchange (inject / retrieve user token)
452
+ if (identityCfg?.webchatSessionExchange && hasIdentity) {
453
+ const sessionMethodDeps = {
454
+ storeDir,
455
+ identityService,
456
+ getOidcConfigForRefresh: getOidcConfigForRefresh ?? undefined,
457
+ configWorkloadName: identityCfg?.workloadName,
458
+ logger: api.logger,
459
+ };
460
+ api.registerGatewayMethod("identity.session.put", createSessionPutHandler(sessionMethodDeps));
461
+ api.registerGatewayMethod("identity.session.get", createSessionGetHandler(sessionMethodDeps));
462
+ logInfo(api.logger, "gateway methods: identity.session.put, identity.session.get (webchat session exchange)");
463
+ }
464
+ // Preflight: run async after register() returns so startup is never blocked.
465
+ // On any failure, set pluginState.degraded so hooks skip all interception.
466
+ const authzEnabled = !!(authz?.agentCheck || authz?.toolCheck || authz?.requireRiskApproval);
467
+ runPluginPreflight({
468
+ identityClient,
469
+ identityService,
470
+ hasIdentity,
471
+ credentialConfig: identityCfg
472
+ ? {
473
+ accessKeyId: identityCfg.accessKeyId,
474
+ secretAccessKey: identityCfg.secretAccessKey,
475
+ sessionToken: identityCfg.sessionToken,
476
+ credentialsFile: identityCfg.credentialsFile,
477
+ credentialsMetadataUrl: identityCfg.credentialsMetadataUrl,
478
+ roleTrn: identityCfg.roleTrn,
479
+ }
480
+ : undefined,
481
+ userpool: dynamicOidcEnabled
482
+ ? { mode: "dynamic", userPoolName: userpool?.userPoolName }
483
+ : explicitOidcEnabled
484
+ ? { mode: "explicit", discoveryUrl: userpool?.discoveryUrl }
485
+ : undefined,
486
+ workloadPoolName: identityCfg?.workloadPoolName,
487
+ authzEnabled,
488
+ namespaceName: authz?.namespaceName ?? "default",
489
+ logger: api.logger,
490
+ }).then((result) => {
491
+ if (!result.ok) {
492
+ pluginState.degraded = true;
493
+ pluginState.failures = result.failures;
494
+ }
495
+ }).catch((err) => {
496
+ logWarn(api.logger, `[identity] preflight threw unexpectedly: ${String(err)}`);
497
+ });
413
498
  }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Demo: read local sessions.json (with field-level decryption), resolve one sessionKey, print userToken.
3
+ *
4
+ * Same path as the plugin: initEncryptionKey(storeDir) then getSession(storeDir, sessionKey).
5
+ *
6
+ * Usage (after `pnpm build`):
7
+ * node dist/scripts/demo-get-session.js <sessionKey>
8
+ * node dist/scripts/demo-get-session.js <storeDir> <sessionKey>
9
+ * pnpm demo:get-session -- <sessionKey>
10
+ *
11
+ * Flags:
12
+ * --print-token Print full userToken (default: only prefix + length)
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=demo-get-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-get-session.d.ts","sourceRoot":"","sources":["../../scripts/demo-get-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Demo: read local sessions.json (with field-level decryption), resolve one sessionKey, print userToken.
3
+ *
4
+ * Same path as the plugin: initEncryptionKey(storeDir) then getSession(storeDir, sessionKey).
5
+ *
6
+ * Usage (after `pnpm build`):
7
+ * node dist/scripts/demo-get-session.js <sessionKey>
8
+ * node dist/scripts/demo-get-session.js <storeDir> <sessionKey>
9
+ * pnpm demo:get-session -- <sessionKey>
10
+ *
11
+ * Flags:
12
+ * --print-token Print full userToken (default: only prefix + length)
13
+ */
14
+ import path from "node:path";
15
+ import os from "node:os";
16
+ import { initEncryptionKey } from "../src/store/encryption.js";
17
+ import { getSession } from "../src/store/session-store.js";
18
+ function usage() {
19
+ console.error(`Usage: demo-get-session [--print-token] <sessionKey>
20
+ demo-get-session [--print-token] <storeDir> <sessionKey>
21
+
22
+ storeDir defaults to ~/.openclaw/plugins/identity`);
23
+ process.exit(1);
24
+ }
25
+ async function main() {
26
+ const printToken = process.argv.includes("--print-token");
27
+ const args = process.argv.slice(2).filter((a) => a !== "--print-token");
28
+ if (args.length < 1 || args.length > 2)
29
+ usage();
30
+ const storeDir = args.length === 2
31
+ ? path.resolve(args[0])
32
+ : path.join(os.homedir(), ".openclaw", "plugins", "identity");
33
+ const sessionKey = args.length === 2 ? args[1] : args[0];
34
+ initEncryptionKey(storeDir);
35
+ const session = await getSession(storeDir, sessionKey);
36
+ if (!session) {
37
+ console.log(JSON.stringify({ ok: false, reason: "no session or expired", storeDir, sessionKey }, null, 2));
38
+ process.exit(2);
39
+ }
40
+ const tokenPreview = printToken
41
+ ? session.userToken
42
+ : `${session.userToken.slice(0, 12)}… (${session.userToken.length} chars)`;
43
+ console.log(JSON.stringify({
44
+ ok: true,
45
+ storeDir,
46
+ sessionKey,
47
+ sub: session.sub,
48
+ loginAt: session.loginAt,
49
+ expiresAt: session.expiresAt ?? null,
50
+ hasRefreshToken: Boolean(session.refreshToken),
51
+ claims: session.claims ?? null,
52
+ userToken: tokenPreview,
53
+ }, null, 2));
54
+ }
55
+ main().catch((err) => {
56
+ console.error(err);
57
+ process.exit(1);
58
+ });
@@ -15,6 +15,10 @@ export type OIDCConfigForCommand = {
15
15
  clientSecret?: string;
16
16
  scope?: string;
17
17
  callbackUrl: string;
18
+ /** UserPool UID (available when resolved dynamically via resolveOIDCConfig). */
19
+ poolUid?: string;
20
+ /** First identity provider cached at config resolve time. */
21
+ identityProvider?: string;
18
22
  };
19
23
  export type IdentityActionsLogger = {
20
24
  info?: (msg: string) => void;
@@ -28,11 +32,13 @@ export type IdentityActionsDeps = {
28
32
  getOidcConfigForRefresh?: () => Promise<OIDCConfigForRefresh>;
29
33
  configWorkloadName?: string;
30
34
  identityClient?: IdentityClientInterface;
35
+ workloadPoolName?: string;
36
+ userPoolName?: string;
31
37
  logger?: IdentityActionsLogger;
32
38
  pluginConfig?: PluginConfig;
33
39
  sendCredentialMessage?: (targetOrSessionKey: SessionKeyDeliveryTarget | string, text: string) => Promise<void>;
34
40
  };
35
- export type FetchFlow = "oauth2-user" | "oauth2-m2m" | "apikey";
41
+ export type FetchFlow = "oauth2-user" | "oauth2-m2m" | "apikey" | "user";
36
42
  export type StatusResult = {
37
43
  loggedIn: boolean;
38
44
  sub: string | null;
@@ -69,14 +75,15 @@ export type LogoutResult = {
69
75
  ok: boolean;
70
76
  };
71
77
  export declare function runLogout(deps: IdentityActionsDeps, sessionKey: string): Promise<LogoutResult>;
78
+ export type ProviderRow = {
79
+ name: string;
80
+ type: string;
81
+ flow?: string;
82
+ status: string;
83
+ binding?: string;
84
+ };
72
85
  export type ListCredentialsResult = {
73
- providers: Array<{
74
- name: string;
75
- type: string;
76
- flow?: string;
77
- status: string;
78
- binding?: string;
79
- }>;
86
+ providers: ProviderRow[];
80
87
  storedOnly: Array<{
81
88
  name: string;
82
89
  status: string;
@@ -89,8 +96,21 @@ export type ListCredentialsResult = {
89
96
  export type ListCredentialsFilter = {
90
97
  name?: string;
91
98
  flow?: string;
99
+ type?: string;
92
100
  };
93
101
  export declare function runListCredentials(deps: IdentityActionsDeps, sessionKey: string, page?: number, filter?: ListCredentialsFilter): Promise<ListCredentialsResult>;
102
+ export type RoleProviderRow = {
103
+ name: string;
104
+ identitySource?: string;
105
+ };
106
+ export type ListRoleCredentialsResult = {
107
+ providers: RoleProviderRow[];
108
+ page: number;
109
+ hasMore: boolean;
110
+ };
111
+ export declare function runListRoleCredentials(deps: IdentityActionsDeps, sessionKey: string, filter?: {
112
+ name?: string;
113
+ }): Promise<ListRoleCredentialsResult>;
94
114
  export type ListTipsResult = {
95
115
  tips: Array<{
96
116
  sessionKey: string;
@@ -148,4 +168,50 @@ export type UnsetBindingResult = {
148
168
  export declare function runUnsetBinding(deps: IdentityActionsDeps, sessionKey: string, params: {
149
169
  provider: string;
150
170
  }): Promise<UnsetBindingResult>;
171
+ export type GetRoleCredentialsActionResult = {
172
+ kind: "success";
173
+ credentials: {
174
+ AccessKeyId: string;
175
+ SecretAccessKey: string;
176
+ SessionToken: string;
177
+ Expiration?: string;
178
+ };
179
+ } | {
180
+ kind: "error";
181
+ message: string;
182
+ };
183
+ export declare function runGetRoleCredentials(deps: IdentityActionsDeps, sessionKey: string, params: {
184
+ providerName: string;
185
+ useTip?: boolean;
186
+ config?: import("openclaw/plugin-sdk").OpenClawConfig;
187
+ }): Promise<GetRoleCredentialsActionResult>;
188
+ export type GetTipTokenResult = {
189
+ kind: "success";
190
+ tipToken: string;
191
+ sub: string;
192
+ issuedAt: number;
193
+ expiresAt: number;
194
+ } | {
195
+ kind: "error";
196
+ message: string;
197
+ };
198
+ /**
199
+ * Return the current TIP JWT for the session (refresh/obtain via user token if needed).
200
+ */
201
+ export declare function runGetTipToken(deps: IdentityActionsDeps, sessionKey: string, config?: OpenClawConfig): Promise<GetTipTokenResult>;
202
+ export type GetSessionTokenResult = {
203
+ kind: "success";
204
+ /** OIDC id_token stored for the session. */
205
+ sessionIdToken: string;
206
+ sub: string;
207
+ loginAt: number;
208
+ expiresAt?: number;
209
+ } | {
210
+ kind: "error";
211
+ message: string;
212
+ };
213
+ /**
214
+ * Return the OIDC id_token (user / session identity token) for the session.
215
+ */
216
+ export declare function runGetSessionToken(deps: IdentityActionsDeps, sessionKey: string): Promise<GetSessionTokenResult>;
151
217
  //# sourceMappingURL=identity-actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-actions.d.ts","sourceRoot":"","sources":["../../../src/actions/identity-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-actions.d.ts","sourceRoot":"","sources":["../../../src/actions/identity-actions.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAEV,uBAAuB,EAExB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAgB/E,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAWtC,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnD,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CACtB,kBAAkB,EAAE,wBAAwB,GAAG,MAAM,EACrD,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAgHzE,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,wBAAsB,SAAS,CAC7B,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,YAAY,CAAC,CA4BvB;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,cAAc,CAAC;IAAC,cAAc,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAA;CAAE,GACtF,OAAO,CAAC,WAAW,CAAC,CAyDtB;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3C,wBAAsB,SAAS,CAC7B,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,CASvB;AAID,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,MAAU,EAChB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CA6DhC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,yBAAyB,CAAC,CA2CpC;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,KAAK,CAAC;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,oDAAoD;IACpD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D,CAAC;AAEF,wBAAsB,WAAW,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsBpF;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF,wBAAsB,SAAS,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA4ChF;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACjD,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,GACA,OAAO,CAAC,WAAW,CAAC,CAgKtB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,wBAAsB,aAAa,CACjC,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,gBAAgB,CAAC,CAkC3B;AAED,MAAM,MAAM,kBAAkB,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAW7B;AAED,MAAM,MAAM,8BAA8B,GACtC;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,qBAAqB,EAAE,cAAc,CAAC;CACvD,GACA,OAAO,CAAC,8BAA8B,CAAC,CAsDzC;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;AAED,MAAM,MAAM,qBAAqB,GAC7B;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAoBhC"}