@tier0/sdk-v2 0.10.0 → 0.11.0
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.
- package/CHANGELOG.md +24 -0
- package/README.md +13 -9
- package/dist/cjs/client.d.ts +4 -0
- package/dist/cjs/cloud-server.d.ts +6 -6
- package/dist/cjs/cloud-server.js +5 -6
- package/dist/cjs/cloud-server.js.map +1 -1
- package/dist/cjs/openapi/api.generated.d.ts +1 -0
- package/dist/cjs/openapi/codecs.generated.d.ts +1 -0
- package/dist/cjs/openapi/codecs.generated.js +1 -1
- package/dist/cjs/openapi/codecs.generated.js.map +1 -1
- package/dist/cjs/openapi/types.generated.d.ts +1 -0
- package/dist/cjs/openapi/types.generated.js.map +1 -1
- package/dist/cjs/uns-v2/generated.d.ts +17 -17
- package/dist/cjs/uns-v2/generated.js +17 -17
- package/dist/cjs/uns-v2/generated.js.map +1 -1
- package/dist/esm/client.d.ts +4 -0
- package/dist/esm/cloud-server.d.ts +6 -6
- package/dist/esm/cloud-server.js +5 -6
- package/dist/esm/cloud-server.js.map +1 -1
- package/dist/esm/openapi/api.generated.d.ts +1 -0
- package/dist/esm/openapi/codecs.generated.d.ts +1 -0
- package/dist/esm/openapi/codecs.generated.js +1 -1
- package/dist/esm/openapi/codecs.generated.js.map +1 -1
- package/dist/esm/openapi/types.generated.d.ts +1 -0
- package/dist/esm/openapi/types.generated.js.map +1 -1
- package/dist/esm/uns-v2/generated.d.ts +17 -17
- package/dist/esm/uns-v2/generated.js +17 -17
- package/dist/esm/uns-v2/generated.js.map +1 -1
- package/package.json +1 -1
- package/skills/tier0-sdk-v2/SKILL.md +1 -1
- package/skills/tier0-sdk-v2/references/integration.md +1 -1
- package/skills/tier0-sdk-v2/tier0-sdk-v2-data/SKILL.md +1 -1
- package/skills/tier0-sdk-v2/tier0-sdk-v2-streams/SKILL.md +2 -0
- package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/SKILL.md +2 -1
- package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/update.md +11 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.11.0 (2026-11-11)
|
|
4
|
+
|
|
5
|
+
- Breaking: `Visitor.subType` is only `employee`. `parseVisitorHeader()` refuses every other identity, including old machine headers with or without a grant. Employee grants remain mandatory (1–128 bytes); canonical encoding, field validation and App binding are unchanged. No machine alias or compatibility API is provided.
|
|
6
|
+
- Built on 0.10.1: keeps its committed Backend contract `07ef8cd30a5465a98c8e6ee0892d02360aee8761` and the unified Builder grant guidance, without editing generated contracts. App Key authentication (`TIER0_API_KEY` → one `X-API-Key`), employee roles, data cancellation, data and Stream APIs are unchanged.
|
|
7
|
+
- Existing deployed Apps retain their bundled parser. Retiring machine entry points and stripping untrusted identity headers at the platform front door invalidates old call tokens without republishing those Apps; updating this package alone does not secure an alternate ingress.
|
|
8
|
+
|
|
9
|
+
## 0.10.1-aenv.13 (local remove-apps-in-use integration)
|
|
10
|
+
|
|
11
|
+
- Rebase the employee-only visitor cutover onto 0.10.1, retaining its committed Backend contract `07ef8cd30a5465a98c8e6ee0892d02360aee8761` and unified Builder grant guidance without editing generated contracts.
|
|
12
|
+
- Repack for the scaffold as a distinct local artifact rather than replacing the historical 0.10.0-aenv.12 archive. No npm publication or existing App republication is performed.
|
|
13
|
+
- Machine visitor identities remain rejected; employee grants, platform App Keys, data and Stream APIs keep the latest base behavior.
|
|
14
|
+
|
|
15
|
+
## 0.10.1 (2026-11-10)
|
|
16
|
+
|
|
17
|
+
- Clarify Builder grant management for existing collections across Apps in the same workspace. Document incremental `appDataPolicyUpdate` changes, revision checks and receipt verification while preserving existing grants and disabled policy status; App runtime credentials cannot manage grants.
|
|
18
|
+
- Align README and bundled Skills with the Backend's unified authorization rules: management uses the current principal's effective workspace, App and resource permissions, without a separate Agent denial or platform-import exception.
|
|
19
|
+
- Synchronize generated contracts to committed Backend `07ef8cd30a5465a98c8e6ee0892d02360aee8761`, including the optional `permission` field in the platform identity response. No SDK operation is removed.
|
|
20
|
+
|
|
21
|
+
## 0.10.0-aenv.12 (local access-settings package)
|
|
22
|
+
|
|
23
|
+
- Breaking: `Visitor.subType` is only `employee`. `parseVisitorHeader()` refuses every other identity, including old machine headers with or without a grant. Employee grants remain mandatory; canonical encoding, field validation and App binding are unchanged. No machine alias or compatibility API is provided.
|
|
24
|
+
- App Key authentication (`TIER0_API_KEY` → one `X-API-Key`), employee roles, data cancellation and realtime APIs are unchanged. This local package keeps the existing 0.10.0 generated Backend contracts; no contract synchronization or Backend upgrade is part of this change.
|
|
25
|
+
- Existing deployed Apps retain their bundled parser. Retiring machine entry points and stripping untrusted identity headers at the platform front door invalidates old call tokens without republishing those Apps; updating this package alone does not secure an alternate ingress.
|
|
26
|
+
|
|
3
27
|
## 0.10.0 (2026-11-10)
|
|
4
28
|
|
|
5
29
|
First stable npm release of the new-architecture migration, including the changes recorded below for the local aenv-next prereleases and the 0.9.11 candidate.
|
package/README.md
CHANGED
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Tier0 云端统一 TypeScript / JavaScript SDK,数据管理与 App Stream 交互均使用 `@tier0/sdk-v2`。旧 SDK 不再作为依赖。
|
|
4
4
|
|
|
5
|
+
**`0.11.0` 是破坏性变更**:访问者只认员工,`Visitor.subType` 仅为 `employee`,`parseVisitorHeader()` 拒绝旧机器头(无论是否带 grant),不提供兼容别名。基于 `0.10.1`,沿用其 Backend 契约 `07ef8cd30a5465a98c8e6ee0892d02360aee8761` 与统一授权说明,不手改生成物;App Key、员工角色、数据与 Stream 接口不变。存量部署仍含旧解析器,靠前门关闭机器入口并剥离外来身份头使旧调用令牌失效,不强制重新发布 App。
|
|
6
|
+
|
|
7
|
+
`0.10.1` 补齐 Builder 为同一工作区内的 App 主动关联已有集合的指引,并同步接口类型与 Backend 契约 `07ef8cd30a5465a98c8e6ee0892d02360aee8761`。需搭配已部署统一集合授权规则的 Backend;本次 npm 包包含更新后的 Skills,平台托管 Skill 的版本由平台单独管理。
|
|
8
|
+
|
|
5
9
|
`0.10.0` 是新架构重构分支的正式版本,包含此前 aenv-next 预发布的全部变更、MQTT 修复、逐请求异步凭据和 Sample 精确删除接口。合同同步至 Backend `91b5f3dc4024f44df32ee7aafcd83a8d470b655d`;升级前需确认目标环境已部署相应合同及运行环境,详见下方「aenv-next 运行环境」和 CHANGELOG。
|
|
6
10
|
|
|
7
|
-
**`0.10.0` 包含破坏性变更**:App 的平台能力固定为 11 项(含 Stream 请求和消息),没有按 App 的平台策略了:`client.uns.appStreamPolicyGet` / `appStreamPolicyUpdate` 和 `CloudAppStreamPolicy*`、`CloudStreamMessageTopicPermission` 类型随 Backend 契约删除,没有替代。托管 App Key 的 MQTT 主题只能在 App 自己的命名空间 `apps/<TIER0_APP_ID>/<preview|deployed>/…` 里,新增 `appTopic()`(`@tier0/sdk-v2/mq`)拼主题,见「MQTT
|
|
11
|
+
**`0.10.0` 包含破坏性变更**:App 的平台能力固定为 11 项(含 Stream 请求和消息),没有按 App 的平台策略了:`client.uns.appStreamPolicyGet` / `appStreamPolicyUpdate` 和 `CloudAppStreamPolicy*`、`CloudStreamMessageTopicPermission` 类型随 Backend 契约删除,没有替代。托管 App Key 的 MQTT 主题只能在 App 自己的命名空间 `apps/<TIER0_APP_ID>/<preview|deployed>/…` 里,新增 `appTopic()`(`@tier0/sdk-v2/mq`)拼主题,见「MQTT」。发布时不再确认集合授权。
|
|
8
12
|
|
|
9
13
|
**`0.10.0-aenv.10` 是破坏性变更**:平台现在把 App 的 Key(`TIER0_API_KEY`)放在运行进程的环境里,SDK 直接用它(下文「aenv-next 运行环境」);早期预发布说明里的节点代理模式只在没有 Key 的运行时生效。App 调平台只有一种身份,App 自身(App Key);按用户角色收窄数据由 App 自己做,服务端用 `parseVisitorHeader()` 读前门注入的明文 `X-Tier0-Visitor` 拿到当前用户和角色。浏览器不再直连 MQTT,实时数据由 App 服务端订阅后转发(`createChangeRelay`);请求中止信号改由 `runWithAbortSignal` 传入。删除的接口见 CHANGELOG。用旧 SDK 打包的 App 在前门改为明文访问者头后无法识别访问者,必须升级重新发布。
|
|
10
14
|
|
|
@@ -43,10 +47,10 @@ Source / Stream 管理已统一为 Enterprise 参数:SourceDefinition 使用
|
|
|
43
47
|
安装正式版:
|
|
44
48
|
|
|
45
49
|
```sh
|
|
46
|
-
npm install @tier0/sdk-v2@0.
|
|
50
|
+
npm install @tier0/sdk-v2@0.11.0
|
|
47
51
|
```
|
|
48
52
|
|
|
49
|
-
维护者发布前在本仓库运行 `npm ci`、`npm run check`,并验证生成的 `tier0-sdk-v2-0.
|
|
53
|
+
维护者发布前在本仓库运行 `npm ci`、`npm run check`,并验证生成的 `tier0-sdk-v2-0.11.0.tgz`。
|
|
50
54
|
|
|
51
55
|
个人 Key 可直接读取已有集合,无需创建平台 App;网关配置、运行示例与排错见[本地连接指南](skills/tier0-sdk-v2/references/local-connection.md)。
|
|
52
56
|
|
|
@@ -100,13 +104,13 @@ Data 高层会跨请求复用 ensure 结果、重放带幂等键的 seed、恢
|
|
|
100
104
|
| `TIER0_APP_ID` | App ID(`getCurrentAppId()` 先读它,再读旧的 `APP_ID`) |
|
|
101
105
|
| `TIER0_RUNTIME` | `deployed` 或 `preview`;只由平台设置,本地开发不要设(它还决定 `members.listApp()` 的口径和平台代理模式) |
|
|
102
106
|
|
|
103
|
-
App 的 Key(平台注入的这把)只能调 `/openapi/v2/uns/**`、`assets/files/**`(`client.files`;同在 `assets/` 下的 `assets/upload` 不在内,回 403)、`notifications/send`、`platform/getMembers`(`members.listWorkspace()`)、`apps/access-members/list`(`members.listApp()`)、`stream-requests/discover` 和 `stream-requests/<code>/describe|invoke`(`client.streams.requests`)、`stream-messages/connect`(`client.streams.messages`)、`capabilities/discover`、`info`,Backend 在每个入口都这样限制,其他接口(`system.whoami()`、`notifications.get`、`mqttAuth`、`agent`)回 403 `hosted_app_key_route_forbidden`;在 App 设置里另签给外部系统用的 App Key 不受这张表限制。App 的平台能力固定 11 项,每个 App 都有,不在 App 设置里配置:`openapi.base`、`platform.users.read`、`notifications.send`、`asset.file.upload` / `download` / `delete`、`stream.requests.read` / `invoke` / `write`、`stream.messages.publish` / `subscribe`。实际生效的是它们和 Key 自身权限、Key 模式、工作区套餐的交集(`uns.dataAppContext({})` 返回的 `platformPermissions`),例如套餐不含 Stream 时 Stream 请求和消息仍被拒绝。数据只能访问 App
|
|
107
|
+
App 的 Key(平台注入的这把)只能调 `/openapi/v2/uns/**`、`assets/files/**`(`client.files`;同在 `assets/` 下的 `assets/upload` 不在内,回 403)、`notifications/send`、`platform/getMembers`(`members.listWorkspace()`)、`apps/access-members/list`(`members.listApp()`)、`stream-requests/discover` 和 `stream-requests/<code>/describe|invoke`(`client.streams.requests`)、`stream-messages/connect`(`client.streams.messages`)、`capabilities/discover`、`info`,Backend 在每个入口都这样限制,其他接口(`system.whoami()`、`notifications.get`、`mqttAuth`、`agent`)回 403 `hosted_app_key_route_forbidden`;在 App 设置里另签给外部系统用的 App Key 不受这张表限制。App 的平台能力固定 11 项,每个 App 都有,不在 App 设置里配置:`openapi.base`、`platform.users.read`、`notifications.send`、`asset.file.upload` / `download` / `delete`、`stream.requests.read` / `invoke` / `write`、`stream.messages.publish` / `subscribe`。实际生效的是它们和 Key 自身权限、Key 模式、工作区套餐的交集(`uns.dataAppContext({})` 返回的 `platformPermissions`),例如套餐不含 Stream 时 Stream 请求和消息仍被拒绝。数据只能访问 App 自己建的集合及已获授权的已有集合;内置 Builder 以自身系统身份主动关联已有集合,不查询对话用户的角色或要求其确认,App 运行时凭证不能自行扩大授权;授权删掉后下一个请求起生效,`records:subscribe` 在下一轮长轮询(最多约 15 秒)收到 `SCOPE_CHANGED`。MQTT 只能用 App 自己的命名空间,见 [MQTT](#mqtt)。
|
|
104
108
|
|
|
105
109
|
**平台代理模式**(保留给不带 Key 的运行时):`TIER0_RUNTIME` 为 `deployed` 或 `preview`、而进程里没有 `TIER0_API_KEY` 时,SDK 不读也不发任何凭据,每个请求带 `X-Tier0-SDK: 1`,只对节点代理自己产生的 `503`、`429`(带 `X-Tier0-Proxy: not-forwarded`,`code` 以 `sbx_proxy_` 开头)按 `retry_after_ms` 最多重试 3 次;MQTT 用 `TIER0_MQTT_URL`(`mqtt://`)且不发 password。传了有值的 `apiKey`,或给了 `getApiKey` / `apiKeyProvider` 的客户端始终按显式配置。没有 `TIER0_API_KEY` 而 `TIER0_RUNTIME` 是其他非空值时,SDK 抛出配置错误,不猜测模式。当前平台给绑定 App 的会话和已发布的 App 都注入 `TIER0_API_KEY`,不会进入这个模式;没绑 App 的会话没有 Key 也没有 `TIER0_API_HOST`,调平台会报 `DATA_NOT_CONFIGURED` 一类的配置错误。
|
|
106
110
|
|
|
107
111
|
本地开发照旧设 `TIER0_API_HOST`、`TIER0_API_KEY`,不要设 `TIER0_RUNTIME`(也不要写进 `.env` 或 `artifact.toml`)。
|
|
108
112
|
|
|
109
|
-
- `@tier0/sdk-v2/server`:`parseVisitorHeader(request.headers.get(VISITOR_HEADER))` 解析前门注入的 `X-Tier0-Visitor`,返回 `{ subType, subject, grant, workspaceID, appID, runtime, appRoles, activeRole? }`。头的值是 UTF-8 JSON 对象的无填充 base64url(编码前最多 8192 字节),不签名:前门转发前剥掉客户端带来的全部 `X-Tier0-*`,再注入这一个头。解析是严格的:只接受规范的无填充 base64url;BOM、重复键、孤立的 UTF-16 代理项(如 `"\ud800"`)、未知字段、缺必填字段、类型或长度不符、`ws` 不是正整数十进制串(不带符号和前导 0
|
|
113
|
+
- `@tier0/sdk-v2/server`:`parseVisitorHeader(request.headers.get(VISITOR_HEADER))` 解析前门注入的 `X-Tier0-Visitor`,返回 `{ subType, subject, grant, workspaceID, appID, runtime, appRoles, activeRole? }`。头的值是 UTF-8 JSON 对象的无填充 base64url(编码前最多 8192 字节),不签名:前门转发前剥掉客户端带来的全部 `X-Tier0-*`,再注入这一个头。解析是严格的:只接受规范的无填充 base64url;BOM、重复键、孤立的 UTF-16 代理项(如 `"\ud800"`)、未知字段、缺必填字段、类型或长度不符、`ws` 不是正整数十进制串(不带符号和前导 0)、非 employee 访问者、空 grant、`app` 不等于 `TIER0_APP_ID` 都抛 `VisitorError`(`VISITOR_HEADER_INVALID`);没有 `TIER0_APP_ID` 时是 `VISITOR_CONFIGURATION_INVALID`。App 用 `appRoles` 自己决定当前用户能看、能改哪些数据;平台对 App 的调用不带访问者身份,不会替 App 收窄。
|
|
110
114
|
|
|
111
115
|
```ts
|
|
112
116
|
import { parseVisitorHeader, VISITOR_HEADER, VisitorError } from '@tier0/sdk-v2/server';
|
|
@@ -126,9 +130,9 @@ App 的 Key(平台注入的这把)只能调 `/openapi/v2/uns/**`、`assets/f
|
|
|
126
130
|
| `workspaceID` | `ws` | 工作区 ID(十进制数字串) |
|
|
127
131
|
| `appID` | `app` | 等于 `TIER0_APP_ID` |
|
|
128
132
|
| `runtime` | `runtime` | `deployed` 或 `preview` |
|
|
129
|
-
| `subType` | `sub_type` | `employee`
|
|
130
|
-
| `subject` | `sub` | 员工用户 ID
|
|
131
|
-
| `grant` | `grant` | 员工访问的 grant ID(1–128
|
|
133
|
+
| `subType` | `sub_type` | 仅 `employee` |
|
|
134
|
+
| `subject` | `sub` | 员工用户 ID(1–128 字节) |
|
|
135
|
+
| `grant` | `grant` | 员工访问的 grant ID(1–128 字节,必填) |
|
|
132
136
|
| `appRoles` | `app_roles` | 访问者在 App 里的角色(不限项数,每项 1–128 字节,整个 JSON 不超过 8192 字节;重复的去掉);预览里是「以某角色查看」选中的角色 |
|
|
133
137
|
| `activeRole` | `active_role` | 可省略,只在预览的「以某角色查看」里出现 |
|
|
134
138
|
- `@tier0/sdk-v2/page-runtime`:页面运行时 v1 和平台错误(`x-sbx-error`)。
|
|
@@ -246,7 +250,7 @@ await tier0.uns.recordFind(
|
|
|
246
250
|
|
|
247
251
|
`client.capabilities` 只校验 Namespace/Source/Stream 管理合同,不要求全局交互标签;同包 `client.streams.capabilities` 独立校验 App 请求合同,不阻断 Namespace。各自消费的核心合同未知仍拒绝,不将方法存在当作授权或运行就绪。
|
|
248
252
|
|
|
249
|
-
实际集合 ID 和有效权限从平台配置/数据上下文取得。管理操作中,App 凭证只能调用本 App 集合的 `appCollectionsEnsure` / `appCollectionsSchemaReplace` / `appCollectionsArchive` / `appCollectionsRestore`;SDK 中存在 `metadataInsertOne` 等其他管理方法,不表示 App 凭证有对应权限。App 数据授权 `appDataPolicyGet` / `appDataPolicyUpdate`
|
|
253
|
+
实际集合 ID 和有效权限从平台配置/数据上下文取得。管理操作中,App 凭证只能调用本 App 集合的 `appCollectionsEnsure` / `appCollectionsSchemaReplace` / `appCollectionsArchive` / `appCollectionsRestore`;SDK 中存在 `metadataInsertOne` 等其他管理方法,不表示 App 凭证有对应权限。App 数据授权 `appDataPolicyGet` / `appDataPolicyUpdate` 使用当前管理主体的有效权限:持有 `uns.write` 的登录会话,持有 `uns.write` 且 full_access、不属于 App 运行时的 personal / agent / service-system Key,或治理会话。内置 Builder 用自身系统身份关联已有集合;新增、扩大、收窄和移除授权都复用工作区、目标 App、当前资源权限和提交前凭据校验,没有按 Agent 身份额外拒绝或平台导入特例。App 运行时凭证不能管理授权,撤销下一个请求起生效。已有集合关联流程见 [修改与授权](skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/update.md#已有集合授权给-app)。Core-only 后台接口不导出到公开 SDK。
|
|
250
254
|
|
|
251
255
|
UNS 保留 `{ code, msg, requestId, data }` 完整响应。平台 v2 包装接口返回已解包的 `data`,通知/能力发现返回直接对象。业务错误即使 HTTP 为 200 也会抛出 `ApiError`。
|
|
252
256
|
|
package/dist/cjs/client.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare function createClient(config?: Tier0ClientConfig): Readonly<{
|
|
|
28
28
|
email: string;
|
|
29
29
|
keyPrefix: string;
|
|
30
30
|
keyType: string;
|
|
31
|
+
permission?: string;
|
|
31
32
|
permissions: string[];
|
|
32
33
|
roles: string[];
|
|
33
34
|
userID: number | bigint;
|
|
@@ -299,6 +300,7 @@ export declare function createClient(config?: Tier0ClientConfig): Readonly<{
|
|
|
299
300
|
email: string;
|
|
300
301
|
keyPrefix: string;
|
|
301
302
|
keyType: string;
|
|
303
|
+
permission?: string;
|
|
302
304
|
permissions: string[];
|
|
303
305
|
roles: string[];
|
|
304
306
|
userID: number | bigint;
|
|
@@ -577,6 +579,7 @@ export declare const client: Readonly<{
|
|
|
577
579
|
email: string;
|
|
578
580
|
keyPrefix: string;
|
|
579
581
|
keyType: string;
|
|
582
|
+
permission?: string;
|
|
580
583
|
permissions: string[];
|
|
581
584
|
roles: string[];
|
|
582
585
|
userID: number | bigint;
|
|
@@ -848,6 +851,7 @@ export declare const client: Readonly<{
|
|
|
848
851
|
email: string;
|
|
849
852
|
keyPrefix: string;
|
|
850
853
|
keyType: string;
|
|
854
|
+
permission?: string;
|
|
851
855
|
permissions: string[];
|
|
852
856
|
roles: string[];
|
|
853
857
|
userID: number | bigint;
|
|
@@ -7,10 +7,10 @@ export declare class VisitorError extends Error {
|
|
|
7
7
|
}
|
|
8
8
|
/** The visitor of a request, from `X-Tier0-Visitor`. */
|
|
9
9
|
export interface Visitor {
|
|
10
|
-
readonly subType: 'employee'
|
|
11
|
-
/** Employee user ID
|
|
10
|
+
readonly subType: 'employee';
|
|
11
|
+
/** Employee user ID. */
|
|
12
12
|
readonly subject: string;
|
|
13
|
-
/** Grant of
|
|
13
|
+
/** Grant of the employee's access. */
|
|
14
14
|
readonly grant: string;
|
|
15
15
|
readonly workspaceID: string;
|
|
16
16
|
readonly appID: string;
|
|
@@ -30,9 +30,9 @@ export interface ParseVisitorOptions {
|
|
|
30
30
|
* is the only way into the App and replaces whatever the client sent. Parsing
|
|
31
31
|
* is strict: a byte order mark, a duplicate key, a lone UTF-16 surrogate
|
|
32
32
|
* (e.g. `"\ud800"`), an unknown or missing field, a wrong type or length, a `ws` that
|
|
33
|
-
* is not a positive decimal ID without sign or leading zero,
|
|
34
|
-
*
|
|
35
|
-
*
|
|
33
|
+
* is not a positive decimal ID without sign or leading zero, a non-employee
|
|
34
|
+
* visitor, an empty grant, or an `app` other than this App's throws
|
|
35
|
+
* `VISITOR_HEADER_INVALID`. Without an App ID
|
|
36
36
|
* (`TIER0_APP_ID` unset) it throws `VISITOR_CONFIGURATION_INVALID`.
|
|
37
37
|
*/
|
|
38
38
|
export declare function parseVisitorHeader(value: string | null | undefined, options?: ParseVisitorOptions): Visitor;
|
package/dist/cjs/cloud-server.js
CHANGED
|
@@ -63,9 +63,9 @@ const sized = (value, min, max) => typeof value === 'string' && !LONE_SURROGATE.
|
|
|
63
63
|
* is the only way into the App and replaces whatever the client sent. Parsing
|
|
64
64
|
* is strict: a byte order mark, a duplicate key, a lone UTF-16 surrogate
|
|
65
65
|
* (e.g. `"\ud800"`), an unknown or missing field, a wrong type or length, a `ws` that
|
|
66
|
-
* is not a positive decimal ID without sign or leading zero,
|
|
67
|
-
*
|
|
68
|
-
*
|
|
66
|
+
* is not a positive decimal ID without sign or leading zero, a non-employee
|
|
67
|
+
* visitor, an empty grant, or an `app` other than this App's throws
|
|
68
|
+
* `VISITOR_HEADER_INVALID`. Without an App ID
|
|
69
69
|
* (`TIER0_APP_ID` unset) it throws `VISITOR_CONFIGURATION_INVALID`.
|
|
70
70
|
*/
|
|
71
71
|
function parseVisitorHeader(value, options = {}) {
|
|
@@ -100,10 +100,9 @@ function parseVisitorHeader(value, options = {}) {
|
|
|
100
100
|
const { ws, app, runtime, sub_type: subType, sub, grant, app_roles: appRoles, active_role: activeRole } = claims;
|
|
101
101
|
if (!validID(ws) || app !== appID ||
|
|
102
102
|
(runtime !== 'deployed' && runtime !== 'preview') ||
|
|
103
|
-
|
|
103
|
+
subType !== 'employee' ||
|
|
104
104
|
!sized(sub, 1, VISITOR_MAX_STRING_BYTES) ||
|
|
105
|
-
|
|
106
|
-
typeof grant !== 'string' || (subType === 'employee' ? !sized(grant, 1, VISITOR_MAX_STRING_BYTES) : grant !== '') ||
|
|
105
|
+
!sized(grant, 1, VISITOR_MAX_STRING_BYTES) ||
|
|
107
106
|
!Array.isArray(appRoles) || appRoles.some((role) => !sized(role, 1, VISITOR_MAX_STRING_BYTES)) ||
|
|
108
107
|
(activeRole !== undefined && !sized(activeRole, 1, VISITOR_MAX_STRING_BYTES)))
|
|
109
108
|
throw fail();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-server.js","sourceRoot":"","sources":["../../src/cloud-server.ts"],"names":[],"mappings":"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","sourcesContent":["// Server-only entry point: the App's view of the request it is serving.\nimport { getEnvVar } from './runtime-env.js';\n\nconst maxID = BigInt('9223372036854775807');\n/** A positive decimal int64 without sign or leading zero. */\nconst validID = (value: unknown): value is string =>\n typeof value === 'string' && /^[1-9]\\d{0,18}$/.test(value) && BigInt(value) <= maxID;\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n !!value && typeof value === 'object' && !Array.isArray(value);\n\n/** Set by the front door on every request it forwards to the App, after stripping any `X-Tier0-*` the client sent. */\nexport const VISITOR_HEADER = 'X-Tier0-Visitor';\n\n/** Limit of the JSON before encoding. */\nconst VISITOR_MAX_JSON_BYTES = 8192;\n/** Unpadded base64url of `VISITOR_MAX_JSON_BYTES`. */\nconst VISITOR_MAX_HEADER_LENGTH = Math.ceil((VISITOR_MAX_JSON_BYTES * 4) / 3);\nconst VISITOR_MAX_STRING_BYTES = 128;\nconst VISITOR_FIELDS: ReadonlySet<string> = new Set(['ws', 'app', 'runtime', 'sub_type', 'sub', 'grant', 'app_roles', 'active_role']);\n\nexport type VisitorErrorCode = 'VISITOR_HEADER_INVALID' | 'VISITOR_CONFIGURATION_INVALID';\n\nexport class VisitorError extends Error {\n constructor(public readonly code: VisitorErrorCode) {\n super(code);\n this.name = 'VisitorError';\n }\n}\n\n/** The visitor of a request, from `X-Tier0-Visitor`. */\nexport interface Visitor {\n readonly subType: 'employee' | 'machine';\n /** Employee user ID, or the call token ID of a machine visitor. */\n readonly subject: string;\n /** Grant of an employee's access; empty for a machine visitor. */\n readonly grant: string;\n readonly workspaceID: string;\n readonly appID: string;\n readonly runtime: 'deployed' | 'preview';\n /** Roles of this visitor in the App; in Preview, the roles selected in \"view as\". */\n readonly appRoles: readonly string[];\n /** Only in Preview's \"view as\". */\n readonly activeRole?: string;\n}\n\nexport interface ParseVisitorOptions {\n /** The App the header must name. Defaults to `TIER0_APP_ID`. */\n appID?: string;\n}\n\n/** A UTF-16 surrogate without its pair, as JSON escapes like \"\\ud800\" can produce. */\nconst LONE_SURROGATE = /[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?<![\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]/;\n\n/**\n * Raw key tokens of the top-level object, for spotting duplicates\n * (`JSON.parse` keeps the last silently). Values of the visitor are strings\n * and arrays of strings, so only depth 1 holds keys.\n */\nfunction topLevelKeys(json: string): string[] {\n const keys: string[] = [];\n let depth = 0;\n for (let i = 0; i < json.length; i += 1) {\n const char = json[i];\n if (char === '{' || char === '[') depth += 1;\n else if (char === '}' || char === ']') depth -= 1;\n else if (char === '\"') {\n const start = i;\n for (i += 1; i < json.length && json[i] !== '\"'; i += 1) if (json[i] === '\\\\') i += 1;\n let next = i + 1;\n while (next < json.length && /\\s/.test(json[next])) next += 1;\n if (depth === 1 && json[next] === ':') keys.push(json.slice(start, i + 1));\n }\n }\n return keys;\n}\n\nconst bytes = (value: string) => Buffer.byteLength(value, 'utf8');\nconst sized = (value: unknown, min: number, max: number): value is string =>\n typeof value === 'string' && !LONE_SURROGATE.test(value) && bytes(value) >= min && bytes(value) <= max;\n\n/**\n * Parses `X-Tier0-Visitor`: the unpadded base64url (RFC 4648 §5) of a UTF-8\n * JSON object of at most 8192 bytes. The header is not signed; the front door\n * is the only way into the App and replaces whatever the client sent. Parsing\n * is strict: a byte order mark, a duplicate key, a lone UTF-16 surrogate\n * (e.g. `\"\\ud800\"`), an unknown or missing field, a wrong type or length, a `ws` that\n * is not a positive decimal ID without sign or leading zero, an employee\n * without a grant or a machine visitor with one, or an `app` other than this\n * App's throws `VISITOR_HEADER_INVALID`. Without an App ID\n * (`TIER0_APP_ID` unset) it throws `VISITOR_CONFIGURATION_INVALID`.\n */\nexport function parseVisitorHeader(value: string | null | undefined, options: ParseVisitorOptions = {}): Visitor {\n const appID = options.appID ?? getEnvVar('TIER0_APP_ID')?.trim();\n if (!appID) throw new VisitorError('VISITOR_CONFIGURATION_INVALID');\n const fail = () => new VisitorError('VISITOR_HEADER_INVALID');\n if (typeof value !== 'string' || value.length === 0 || value.length > VISITOR_MAX_HEADER_LENGTH || !/^[A-Za-z0-9_-]+$/.test(value)) throw fail();\n const raw = Buffer.from(value, 'base64url');\n // Only the canonical encoding: no padding, no stray trailing bits.\n if (raw.length > VISITOR_MAX_JSON_BYTES || raw.toString('base64url') !== value) throw fail();\n // A UTF-8 byte order mark is not part of the contract (TextDecoder would drop it silently).\n if (raw[0] === 0xef && raw[1] === 0xbb && raw[2] === 0xbf) throw fail();\n let claims: unknown;\n let json: string;\n try {\n json = new TextDecoder('utf-8', { fatal: true }).decode(raw);\n claims = JSON.parse(json);\n } catch {\n throw fail();\n }\n if (!isObject(claims) || Object.keys(claims).some((key) => !VISITOR_FIELDS.has(key))) throw fail();\n // Every key at most once, each spelling decoded (\"\\u0077s\" is \"ws\").\n const keys = topLevelKeys(json).map((token) => JSON.parse(token) as string);\n if (new Set(keys).size !== keys.length) throw fail();\n const { ws, app, runtime, sub_type: subType, sub, grant, app_roles: appRoles, active_role: activeRole } = claims;\n if (!validID(ws) || app !== appID ||\n (runtime !== 'deployed' && runtime !== 'preview') ||\n (subType !== 'employee' && subType !== 'machine') ||\n !sized(sub, 1, VISITOR_MAX_STRING_BYTES) ||\n // An employee's access always has a grant; a machine visitor has none.\n typeof grant !== 'string' || (subType === 'employee' ? !sized(grant, 1, VISITOR_MAX_STRING_BYTES) : grant !== '') ||\n !Array.isArray(appRoles) || appRoles.some((role) => !sized(role, 1, VISITOR_MAX_STRING_BYTES)) ||\n (activeRole !== undefined && !sized(activeRole, 1, VISITOR_MAX_STRING_BYTES))) throw fail();\n return Object.freeze({\n subType, subject: sub, grant, workspaceID: ws, appID, runtime,\n appRoles: Object.freeze([...new Set(appRoles as string[])]),\n ...(activeRole === undefined ? {} : { activeRole }),\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cloud-server.js","sourceRoot":"","sources":["../../src/cloud-server.ts"],"names":[],"mappings":"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","sourcesContent":["// Server-only entry point: the App's view of the request it is serving.\nimport { getEnvVar } from './runtime-env.js';\n\nconst maxID = BigInt('9223372036854775807');\n/** A positive decimal int64 without sign or leading zero. */\nconst validID = (value: unknown): value is string =>\n typeof value === 'string' && /^[1-9]\\d{0,18}$/.test(value) && BigInt(value) <= maxID;\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n !!value && typeof value === 'object' && !Array.isArray(value);\n\n/** Set by the front door on every request it forwards to the App, after stripping any `X-Tier0-*` the client sent. */\nexport const VISITOR_HEADER = 'X-Tier0-Visitor';\n\n/** Limit of the JSON before encoding. */\nconst VISITOR_MAX_JSON_BYTES = 8192;\n/** Unpadded base64url of `VISITOR_MAX_JSON_BYTES`. */\nconst VISITOR_MAX_HEADER_LENGTH = Math.ceil((VISITOR_MAX_JSON_BYTES * 4) / 3);\nconst VISITOR_MAX_STRING_BYTES = 128;\nconst VISITOR_FIELDS: ReadonlySet<string> = new Set(['ws', 'app', 'runtime', 'sub_type', 'sub', 'grant', 'app_roles', 'active_role']);\n\nexport type VisitorErrorCode = 'VISITOR_HEADER_INVALID' | 'VISITOR_CONFIGURATION_INVALID';\n\nexport class VisitorError extends Error {\n constructor(public readonly code: VisitorErrorCode) {\n super(code);\n this.name = 'VisitorError';\n }\n}\n\n/** The visitor of a request, from `X-Tier0-Visitor`. */\nexport interface Visitor {\n readonly subType: 'employee';\n /** Employee user ID. */\n readonly subject: string;\n /** Grant of the employee's access. */\n readonly grant: string;\n readonly workspaceID: string;\n readonly appID: string;\n readonly runtime: 'deployed' | 'preview';\n /** Roles of this visitor in the App; in Preview, the roles selected in \"view as\". */\n readonly appRoles: readonly string[];\n /** Only in Preview's \"view as\". */\n readonly activeRole?: string;\n}\n\nexport interface ParseVisitorOptions {\n /** The App the header must name. Defaults to `TIER0_APP_ID`. */\n appID?: string;\n}\n\n/** A UTF-16 surrogate without its pair, as JSON escapes like \"\\ud800\" can produce. */\nconst LONE_SURROGATE = /[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?<![\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]/;\n\n/**\n * Raw key tokens of the top-level object, for spotting duplicates\n * (`JSON.parse` keeps the last silently). Values of the visitor are strings\n * and arrays of strings, so only depth 1 holds keys.\n */\nfunction topLevelKeys(json: string): string[] {\n const keys: string[] = [];\n let depth = 0;\n for (let i = 0; i < json.length; i += 1) {\n const char = json[i];\n if (char === '{' || char === '[') depth += 1;\n else if (char === '}' || char === ']') depth -= 1;\n else if (char === '\"') {\n const start = i;\n for (i += 1; i < json.length && json[i] !== '\"'; i += 1) if (json[i] === '\\\\') i += 1;\n let next = i + 1;\n while (next < json.length && /\\s/.test(json[next])) next += 1;\n if (depth === 1 && json[next] === ':') keys.push(json.slice(start, i + 1));\n }\n }\n return keys;\n}\n\nconst bytes = (value: string) => Buffer.byteLength(value, 'utf8');\nconst sized = (value: unknown, min: number, max: number): value is string =>\n typeof value === 'string' && !LONE_SURROGATE.test(value) && bytes(value) >= min && bytes(value) <= max;\n\n/**\n * Parses `X-Tier0-Visitor`: the unpadded base64url (RFC 4648 §5) of a UTF-8\n * JSON object of at most 8192 bytes. The header is not signed; the front door\n * is the only way into the App and replaces whatever the client sent. Parsing\n * is strict: a byte order mark, a duplicate key, a lone UTF-16 surrogate\n * (e.g. `\"\\ud800\"`), an unknown or missing field, a wrong type or length, a `ws` that\n * is not a positive decimal ID without sign or leading zero, a non-employee\n * visitor, an empty grant, or an `app` other than this App's throws\n * `VISITOR_HEADER_INVALID`. Without an App ID\n * (`TIER0_APP_ID` unset) it throws `VISITOR_CONFIGURATION_INVALID`.\n */\nexport function parseVisitorHeader(value: string | null | undefined, options: ParseVisitorOptions = {}): Visitor {\n const appID = options.appID ?? getEnvVar('TIER0_APP_ID')?.trim();\n if (!appID) throw new VisitorError('VISITOR_CONFIGURATION_INVALID');\n const fail = () => new VisitorError('VISITOR_HEADER_INVALID');\n if (typeof value !== 'string' || value.length === 0 || value.length > VISITOR_MAX_HEADER_LENGTH || !/^[A-Za-z0-9_-]+$/.test(value)) throw fail();\n const raw = Buffer.from(value, 'base64url');\n // Only the canonical encoding: no padding, no stray trailing bits.\n if (raw.length > VISITOR_MAX_JSON_BYTES || raw.toString('base64url') !== value) throw fail();\n // A UTF-8 byte order mark is not part of the contract (TextDecoder would drop it silently).\n if (raw[0] === 0xef && raw[1] === 0xbb && raw[2] === 0xbf) throw fail();\n let claims: unknown;\n let json: string;\n try {\n json = new TextDecoder('utf-8', { fatal: true }).decode(raw);\n claims = JSON.parse(json);\n } catch {\n throw fail();\n }\n if (!isObject(claims) || Object.keys(claims).some((key) => !VISITOR_FIELDS.has(key))) throw fail();\n // Every key at most once, each spelling decoded (\"\\u0077s\" is \"ws\").\n const keys = topLevelKeys(json).map((token) => JSON.parse(token) as string);\n if (new Set(keys).size !== keys.length) throw fail();\n const { ws, app, runtime, sub_type: subType, sub, grant, app_roles: appRoles, active_role: activeRole } = claims;\n if (!validID(ws) || app !== appID ||\n (runtime !== 'deployed' && runtime !== 'preview') ||\n subType !== 'employee' ||\n !sized(sub, 1, VISITOR_MAX_STRING_BYTES) ||\n !sized(grant, 1, VISITOR_MAX_STRING_BYTES) ||\n !Array.isArray(appRoles) || appRoles.some((role) => !sized(role, 1, VISITOR_MAX_STRING_BYTES)) ||\n (activeRole !== undefined && !sized(activeRole, 1, VISITOR_MAX_STRING_BYTES))) throw fail();\n return Object.freeze({\n subType, subject: sub, grant, workspaceID: ws, appID, runtime,\n appRoles: Object.freeze([...new Set(appRoles as string[])]),\n ...(activeRole === undefined ? {} : { activeRole }),\n });\n}\n"]}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PLATFORM_CODEC_SCHEMAS = void 0;
|
|
4
4
|
// Generated. Do not edit.
|
|
5
|
-
exports.PLATFORM_CODEC_SCHEMAS = { "Platform_InfoResp": { "k": "o", "p": { "capabilities": { "k": "a", "i": {} }, "mqttBroker": {}, "name": {}, "version": {} } }, "Platform_AuthWhoamiResp": { "k": "o", "p": { "apiKeyName": {}, "email": {}, "keyPrefix": {}, "keyType": {}, "permissions": { "k": "a", "i": {} }, "roles": { "k": "a", "i": {} }, "userID": { "k": "i" }, "userName": {}, "workspaceID": { "k": "i" }, "workspaceName": {} } }, "Platform_AssetFileUploadReq": { "k": "o", "p": { "appInstanceId": {}, "business": {}, "contentType": {}, "fileName": {}, "sessionId": {}, "size": { "k": "i" }, "useBy": {}, "visibility": {} } }, "Platform_AssetFileUploadResp": { "k": "o", "p": { "expiresAt": { "k": "i" }, "fileId": { "k": "i" }, "filePath": {}, "fileUrl": {}, "postFields": { "k": "o", "p": {}, "x": {} }, "postUrl": {} } }, "Platform_AssetFileUrlResp": { "k": "o", "p": { "expiresAt": { "k": "i" }, "fileUrl": {} } }, "Platform_AssetFileDeleteReq": { "k": "o", "p": { "filePath": {} } }, "Platform_AssetFileDeleteResp": { "k": "o", "p": { "deleted": {} } }, "Platform_AssetFileMultipartInitReq": { "k": "o", "p": { "appInstanceId": {}, "bizId": {}, "business": {}, "contentType": {}, "fileName": {}, "partSize": { "k": "i" }, "sessionId": {}, "size": { "k": "i" }, "useBy": {}, "visibility": {} } }, "Platform_AssetFileMultipartInitResp": { "k": "o", "p": { "expiresAt": { "k": "i" }, "fileKey": {}, "filePath": {}, "partCount": { "k": "i" }, "partSize": { "k": "i" }, "uploadId": {} } }, "Platform_AssetFileMultipartPartUrlsReq": { "k": "o", "p": { "fileKey": {}, "partNumbers": { "k": "a", "i": { "k": "i" } }, "uploadId": {} } }, "Platform_AssetFileMultipartPartUrlsResp": { "k": "o", "p": { "partUrls": { "k": "a", "i": { "r": "Platform_AssetFileMultipartPartUrl" } } } }, "Platform_AssetFileMultipartPartUrl": { "k": "o", "p": { "expiresAt": { "k": "i" }, "partNumber": { "k": "i" }, "url": {} } }, "Platform_AssetFileMultipartCompleteReq": { "k": "o", "p": { "fileKey": {}, "parts": { "k": "a", "i": { "r": "Platform_AssetFileMultipartPart" } }, "uploadId": {} } }, "Platform_AssetFileMultipartPart": { "k": "o", "p": { "etag": {}, "partNumber": { "k": "i" } } }, "Platform_AssetFileMultipartCompleteResp": { "k": "o", "p": { "expiresAt": { "k": "i" }, "filePath": {}, "fileUrl": {}, "sizeBytes": { "k": "i" } } }, "Platform_AssetFileMultipartAbortReq": { "k": "o", "p": { "fileKey": {}, "uploadId": {} } }, "Platform_AssetFileMultipartAbortResp": { "k": "o", "p": { "aborted": { "k": "i" } } }, "Platform_AssetUploadReq": { "k": "o", "p": { "business": {}, "contentType": {}, "fileName": {}, "isPublic": {}, "sha256": {}, "size": { "k": "i" }, "sizeBytes": { "k": "i" }, "storageKey": {}, "useBy": {} } }, "Platform_AssetUploadResp": { "k": "o", "p": { "filePath": {}, "fileUrl": {}, "postFields": { "k": "o", "p": {}, "x": {} }, "postUrl": {} } }, "Platform_SendNotificationReq": { "k": "o", "p": { "channels": { "k": "a", "i": {} }, "content": {}, "idempotencyKey": {}, "link": {}, "mode": {}, "recipientUserId": {}, "sender": { "r": "Platform_NotificationSender" }, "source": {}, "title": {}, "type": {} } }, "Platform_NotificationSender": { "k": "o", "p": { "id": {}, "meta": { "k": "o", "p": {}, "x": {} }, "name": {}, "type": {} } }, "Platform_SendNotificationResp": { "k": "o", "p": { "createdAt": {}, "messageId": {}, "recipientName": {}, "recipientUserId": {}, "status": {} } }, "Platform_NotificationError": { "k": "o", "p": { "errorCode": {}, "message": {} } }, "Platform_GetNotificationReq": { "k": "o", "p": { "messageId": {} } }, "Platform_GetNotificationResp": { "k": "o", "p": { "channels": { "k": "a", "i": { "r": "Platform_NotificationChannelResult" } }, "completedAt": {}, "createdAt": {}, "errorCode": {}, "message": {}, "messageId": {}, "recipientName": {}, "recipientUserId": {}, "status": {}, "type": {} } }, "Platform_NotificationChannelResult": { "k": "o", "p": { "channel": {}, "errorCode": {}, "message": {}, "platform": {}, "status": {}, "successCount": { "k": "i" }, "targetCount": { "k": "i" } } }, "Platform_ListNotificationsReq": { "k": "o", "p": { "messageId": {}, "page": { "k": "i" }, "recipientUserId": {}, "size": { "k": "i" }, "status": {} } }, "Platform_ListNotificationsResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_NotificationListItem" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_NotificationListItem": { "k": "o", "p": { "channels": { "k": "a", "i": {} }, "completedAt": {}, "createdAt": {}, "errorCode": {}, "keyId": {}, "message": {}, "messageId": {}, "mode": {}, "recipientName": {}, "recipientUserId": {}, "senderId": {}, "senderName": {}, "senderType": {}, "status": {}, "title": {} } }, "Platform_PlatformGetMembersReq": { "k": "o", "p": { "keyword": {}, "page": { "k": "i" }, "roleKey": {}, "roles": { "k": "a", "i": {} }, "size": { "k": "i" }, "statuses": { "k": "a", "i": {} }, "updatedAtEnd": {}, "updatedAtStart": {} } }, "Platform_PlatformMembersResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_PlatformMemberResp" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_PlatformMemberResp": { "k": "o", "p": { "email": {}, "nickName": {}, "roles": { "k": "a", "i": { "r": "Platform_PlatformMemberRoleResp" } }, "status": {}, "updatedAt": {}, "userId": {}, "userName": {} } }, "Platform_PlatformMemberRoleResp": { "k": "o", "p": { "description": {}, "roleId": {}, "roleKey": {}, "roleName": {} } }, "Platform_AppAccessMembersListReq": { "k": "o", "p": { "appId": {}, "grantedAtEnd": { "k": "i" }, "grantedAtStart": { "k": "i" }, "page": { "k": "i" }, "roleKeys": { "k": "a", "i": {} }, "scope": {}, "size": { "k": "i" } } }, "Platform_AppAccessMembersListResp": { "k": "o", "p": { "allActiveMembers": { "k": "i" }, "appId": {}, "list": { "k": "a", "i": { "r": "Platform_AppAccessMemberResp" } }, "page": { "k": "i" }, "productionVersionId": {}, "published": { "k": "i" }, "roles": { "k": "a", "i": { "r": "Platform_AppAccessRoleResp" } }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AppAccessMemberResp": { "k": "o", "p": { "email": {}, "grantedAt": { "k": "i" }, "roles": { "k": "a", "i": { "r": "Platform_AppAccessMemberRoleResp" } }, "userId": {}, "userName": {} } }, "Platform_AppAccessMemberRoleResp": { "k": "o", "p": { "roleId": {}, "roleKey": {}, "roleName": {}, "sources": { "k": "a", "i": { "r": "Platform_AppAccessRoleSourceResp" } } } }, "Platform_AppAccessRoleSourceResp": { "k": "o", "p": { "groupId": {}, "groupName": {}, "type": {} } }, "Platform_AppAccessRoleResp": { "k": "o", "p": { "description": {}, "memberCount": { "k": "i" }, "roleId": {}, "roleKey": {}, "roleName": {}, "status": {} } }, "Platform_MqttAuthCreateReq": { "k": "o", "p": { "clientIDRandomSuffixEnabled": {}, "description": {}, "name": {} } }, "Platform_MqttAuthCreateResp": { "k": "o", "p": { "clientID": {}, "clientIDRandomSuffixEnabled": {}, "id": { "k": "i" }, "name": {}, "password": {}, "username": {} } }, "Platform_MqttAuthDeleteReq": { "k": "o", "p": { "id": { "k": "i" } } }, "Platform_MqttAuthDeleteResp": { "k": "o", "p": { "success": {} } }, "Platform_CapabilityDiscoverV2Resp": { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "capabilities": { "k": "a", "i": { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "operations": { "k": "a", "i": { "k": "o", "p": { "operation": {} } } } } }] }] } } } }] }] }] }, "Platform_CapabilityDiscoverycapability": { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "r": "Platform_CapabilityDiscoveryknownCapability" }] }] }] }, "Platform_CapabilityDiscoveryknownCapability": { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "state": {}, "checkedAt": {} } }] }] }, { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "operations": { "k": "a", "i": { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "state": {} } }] }] } } } }] }] }] }] }] }, { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "operations": { "k": "a", "i": { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "state": {} } }] }] } } } }] }] }] }] }] }, { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "contractVersions": { "k": "a", "i": {} } } }] }] }, { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "contractVersions": { "k": "a", "i": {} } } }] }] }] }, "Platform_CapabilityDiscoveryoperation": { "k": "o", "p": { "operation": {} } }, "Platform_CapabilityDiscoveryknownOperation": { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "state": {}, "checkedAt": {} } }] }] }] }, "Platform_CapabilityErrorResp": { "k": "o", "p": { "errorCode": {}, "message": {} } }, "Platform_AgentCardGetReq": { "k": "o", "p": { "canvasId": {}, "cardId": {} } }, "Platform_AgentCardGetResp": { "k": "o", "p": { "canvasId": {}, "cardId": {}, "cardKey": {}, "cardSpec": {}, "updatedAt": { "k": "i" } } }, "Platform_AgentResultCreateReq": { "k": "o", "p": { "cardSpec": {}, "charts": {}, "dataScope": {}, "findings": {}, "images": { "k": "a", "i": {} }, "metrics": {}, "missingData": {}, "operationId": {}, "resultSchemaVersion": { "k": "i" }, "severity": {}, "source": { "r": "Platform_AgentResultSource" }, "steps": { "k": "a", "i": {} }, "summary": {}, "tables": { "k": "a", "i": {} }, "title": {}, "warnings": { "k": "a", "i": {} } } }, "Platform_AgentResultSource": { "k": "o", "p": { "agentId": {}, "platformRunId": {}, "platformSessionId": {}, "platformUserId": {}, "skillVersion": {} } }, "Platform_AgentResultCreateResp": { "k": "o", "p": { "jobRunId": {}, "resultId": {} } }, "Platform_AgentResultGetReq": { "k": "o", "p": { "operationId": {}, "resultId": {} } }, "Platform_AgentResultGetResp": { "k": "o", "p": { "result": { "r": "Platform_AgentStoredResult" } } }, "Platform_AgentStoredResult": { "k": "o", "p": { "agentId": {}, "byteSize": { "k": "i" }, "cardSpec": {}, "createdAt": { "k": "i" }, "manifest": {}, "operationId": {}, "platformRunId": {}, "platformSessionId": {}, "resultId": {}, "skillVersion": {}, "sourceKind": {} } }, "Platform_AgentResultListReq": { "k": "o", "p": { "page": { "k": "i" }, "platformSessionId": {}, "size": { "k": "i" } } }, "Platform_AgentResultListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentStoredResult" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentCardUpdateReq": { "k": "o", "p": { "canvasId": {}, "cardId": {}, "cardSpec": {}, "expectedCardSpec": {}, "ord": { "k": "i" }, "position": {} } }, "Platform_AgentCardUpdateResp": { "k": "o", "p": { "cardId": {} } }, "Platform_AgentCardListReq": { "k": "o", "p": { "canvasId": {}, "page": { "k": "i" }, "size": { "k": "i" } } }, "Platform_AgentCardListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentCardGetResp" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentResultPinReq": { "k": "o", "p": { "canvasId": {}, "position": {}, "resultId": {} } }, "Platform_AgentResultPinResp": { "k": "o", "p": { "cardId": {} } }, "Platform_AgentJobCreateReq": { "k": "o", "p": { "cardId": {}, "cronExpr": {}, "expiresAt": { "k": "i" }, "intervalSeconds": { "k": "i" }, "name": {}, "notify": {}, "scheduleKind": {}, "sessionId": {}, "sourceBlockId": {}, "sourceId": {}, "sourceName": {}, "sourceType": {}, "task": {}, "type": {} } }, "Platform_AgentJobMutationResp": { "k": "o", "p": { "jobId": {} } }, "Platform_AgentJobUpdateReq": { "k": "o", "p": { "cardId": {}, "cronExpr": {}, "expiresAt": { "k": "i" }, "intervalSeconds": { "k": "i" }, "jobId": {}, "name": {}, "notify": {}, "notifyEnabled": { "k": "i" }, "scheduleKind": {}, "sessionId": {}, "sourceBlockId": {}, "sourceId": {}, "sourceName": {}, "sourceType": {}, "task": {}, "type": {} } }, "Platform_AgentJobIDReq": { "k": "o", "p": { "jobId": {} } }, "Platform_AgentJobGetResp": { "k": "o", "p": { "job": { "r": "Platform_AgentJobRecord" } } }, "Platform_AgentJobRecord": { "k": "o", "p": { "attentionReason": {}, "cardId": {}, "createdAt": { "k": "i" }, "cronExpr": {}, "expiresAt": { "k": "i" }, "intervalSeconds": { "k": "i" }, "jobId": {}, "lastFiredAt": { "k": "i" }, "name": {}, "nextRunAt": { "k": "i" }, "notify": {}, "orphanedAt": { "k": "i" }, "scheduleKind": {}, "sessionId": {}, "sourceBlockId": {}, "sourceId": {}, "sourceName": {}, "sourceType": {}, "status": {}, "task": {}, "type": {}, "updatedAt": { "k": "i" } } }, "Platform_AgentJobListReq": { "k": "o", "p": { "cardId": {}, "page": { "k": "i" }, "search": {}, "size": { "k": "i" }, "sourceId": {}, "sourceType": {}, "status": {}, "type": {} } }, "Platform_AgentJobListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentJobRecord" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentJobRunGetReq": { "k": "o", "p": { "jobId": {}, "jobRunId": {} } }, "Platform_AgentJobRunGetResp": { "k": "o", "p": { "run": { "r": "Platform_AgentJobRunRecord" } } }, "Platform_AgentJobRunRecord": { "k": "o", "p": { "dispatchState": {}, "errorCode": {}, "errorMessage": {}, "finishedAt": { "k": "i" }, "firedAt": { "k": "i" }, "jobId": {}, "jobRunId": {}, "resultId": {}, "resultSummary": {}, "severity": {}, "status": {}, "trigger": {} } }, "Platform_AgentJobRunListReq": { "k": "o", "p": { "jobId": {}, "page": { "k": "i" }, "size": { "k": "i" }, "status": {} } }, "Platform_AgentJobRunListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentJobRunRecord" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentJobTriggerResp": { "k": "o", "p": { "dispatchState": {}, "jobId": {}, "jobRunId": {} } }, "Platform_AgentCanvasListReq": { "k": "o", "p": { "page": { "k": "i" }, "sessionId": {}, "size": { "k": "i" } } }, "Platform_AgentCanvasListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentCanvasRecord" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentCanvasRecord": { "k": "o", "p": { "canvasId": {}, "createdAt": { "k": "i" }, "name": {}, "sessionId": {}, "updatedAt": { "k": "i" } } }, "Platform_AgentLibraryListReq": { "k": "o", "p": { "page": { "k": "i" }, "search": {}, "size": { "k": "i" }, "tags": { "k": "a", "i": {} } } }, "Platform_AgentLibraryListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentLibraryItem" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentLibraryItem": { "k": "o", "p": { "cardKey": {}, "cardSpec": {}, "createdAt": { "k": "i" }, "libraryItemId": {}, "sourceSessionId": {}, "tags": { "k": "a", "i": {} }, "updatedAt": { "k": "i" } } }, "Platform_AgentLibraryGetReq": { "k": "o", "p": { "libraryItemId": {} } }, "Platform_AgentLibraryGetResp": { "k": "o", "p": { "item": { "r": "Platform_AgentLibraryItem" } } }, "Platform_AgentLibraryCreateReq": { "k": "o", "p": { "cardKey": {}, "cardSpec": {}, "sourceSessionId": {}, "tags": { "k": "a", "i": {} } } }, "Platform_AgentLibraryMutationResp": { "k": "o", "p": { "libraryItemId": {} } }, "Platform_AgentLibraryUpdateReq": { "k": "o", "p": { "cardSpec": {}, "expectedItem": { "r": "Platform_AgentLibrarySnapshot" }, "libraryItemId": {}, "sourceSessionId": {}, "tags": { "k": "a", "i": {} } } }, "Platform_AgentLibrarySnapshot": { "k": "o", "p": { "cardKey": {}, "cardSpec": {}, "sourceSessionId": {}, "tags": { "k": "a", "i": {} } } }, "Platform_AgentCardDeleteReq": { "k": "o", "p": { "canvasId": {}, "cardId": {}, "expectedCardSpec": {} } }, "Platform_AgentCardDeleteResp": { "k": "o", "p": { "cardId": {} } }, "Platform_AgentAnalysisDispatchReq": { "k": "o", "p": { "canvasId": {}, "cardId": {}, "kind": {}, "operationId": {}, "resultId": {}, "task": {} } }, "Platform_AgentAnalysisDispatchResp": { "k": "o", "p": { "dispatchState": {}, "errorCode": {}, "errorMessage": {}, "runId": {} } }, "Platform_AgentAnalysisGetReq": { "k": "o", "p": { "runId": {} } }, "Platform_AgentAnalysisGetResp": { "k": "o", "p": { "run": { "r": "Platform_AgentJobRunRecord" } } }, "Platform_SdksystemInfoData": { "r": "Platform_InfoResp" }, "Platform_SdksystemInfoWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdksystemInfoData" } } }, "Platform_SdksystemWhoamiData": { "r": "Platform_AuthWhoamiResp" }, "Platform_SdksystemWhoamiWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdksystemWhoamiData" } } }, "Platform_SdkassetsFilesPrepareUploadRequest": { "r": "Platform_AssetFileUploadReq" }, "Platform_SdkassetsFilesPrepareUploadData": { "r": "Platform_AssetFileUploadResp" }, "Platform_SdkassetsFilesPrepareUploadWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesPrepareUploadData" } } }, "Platform_SdkassetsFilesDownloadQuery": { "k": "o", "p": { "filePath": {}, "responseContentDisposition": {} } }, "Platform_SdkassetsFilesDownloadData": {}, "Platform_SdkassetsFilesDownloadWire": { "r": "Platform_SdkassetsFilesDownloadData" }, "Platform_SdkassetsFilesUrlQuery": { "k": "o", "p": { "filePath": {}, "expiredSec": { "k": "i" } } }, "Platform_SdkassetsFilesUrlData": { "r": "Platform_AssetFileUrlResp" }, "Platform_SdkassetsFilesUrlWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesUrlData" } } }, "Platform_SdkassetsFilesDeleteRequest": { "r": "Platform_AssetFileDeleteReq" }, "Platform_SdkassetsFilesDeleteData": { "r": "Platform_AssetFileDeleteResp" }, "Platform_SdkassetsFilesDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesDeleteData" } } }, "Platform_SdkassetsFilesMultipartInitRequest": { "r": "Platform_AssetFileMultipartInitReq" }, "Platform_SdkassetsFilesMultipartInitData": { "r": "Platform_AssetFileMultipartInitResp" }, "Platform_SdkassetsFilesMultipartInitWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesMultipartInitData" } } }, "Platform_SdkassetsFilesMultipartPartUrlsRequest": { "r": "Platform_AssetFileMultipartPartUrlsReq" }, "Platform_SdkassetsFilesMultipartPartUrlsData": { "r": "Platform_AssetFileMultipartPartUrlsResp" }, "Platform_SdkassetsFilesMultipartPartUrlsWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesMultipartPartUrlsData" } } }, "Platform_SdkassetsFilesMultipartCompleteRequest": { "r": "Platform_AssetFileMultipartCompleteReq" }, "Platform_SdkassetsFilesMultipartCompleteData": { "r": "Platform_AssetFileMultipartCompleteResp" }, "Platform_SdkassetsFilesMultipartCompleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesMultipartCompleteData" } } }, "Platform_SdkassetsFilesMultipartAbortRequest": { "r": "Platform_AssetFileMultipartAbortReq" }, "Platform_SdkassetsFilesMultipartAbortData": { "r": "Platform_AssetFileMultipartAbortResp" }, "Platform_SdkassetsFilesMultipartAbortWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesMultipartAbortData" } } }, "Platform_SdkassetsUploadRequest": { "r": "Platform_AssetUploadReq" }, "Platform_SdkassetsUploadData": { "r": "Platform_AssetUploadResp" }, "Platform_SdkassetsUploadWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsUploadData" } } }, "Platform_SdknotificationsSendRequest": { "r": "Platform_SendNotificationReq" }, "Platform_SdknotificationsSendData": { "r": "Platform_SendNotificationResp" }, "Platform_SdknotificationsSendWire": { "r": "Platform_SdknotificationsSendData" }, "Platform_SdknotificationsGetRequest": { "r": "Platform_GetNotificationReq" }, "Platform_SdknotificationsGetData": { "r": "Platform_GetNotificationResp" }, "Platform_SdknotificationsGetWire": { "r": "Platform_SdknotificationsGetData" }, "Platform_SdknotificationsListRequest": { "r": "Platform_ListNotificationsReq" }, "Platform_SdknotificationsListData": { "r": "Platform_ListNotificationsResp" }, "Platform_SdknotificationsListWire": { "r": "Platform_SdknotificationsListData" }, "Platform_SdkmembersListWorkspaceRequest": { "r": "Platform_PlatformGetMembersReq" }, "Platform_SdkmembersListWorkspaceData": { "r": "Platform_PlatformMembersResp" }, "Platform_SdkmembersListWorkspaceWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkmembersListWorkspaceData" } } }, "Platform_SdkmembersListAppRequest": { "r": "Platform_AppAccessMembersListReq" }, "Platform_SdkmembersListAppData": { "r": "Platform_AppAccessMembersListResp" }, "Platform_SdkmembersListAppWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkmembersListAppData" } } }, "Platform_SdkmqttAuthCreateRequest": { "r": "Platform_MqttAuthCreateReq" }, "Platform_SdkmqttAuthCreateData": { "r": "Platform_MqttAuthCreateResp" }, "Platform_SdkmqttAuthCreateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkmqttAuthCreateData" } } }, "Platform_SdkmqttAuthDeleteRequest": { "r": "Platform_MqttAuthDeleteReq" }, "Platform_SdkmqttAuthDeleteData": { "r": "Platform_MqttAuthDeleteResp" }, "Platform_SdkmqttAuthDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkmqttAuthDeleteData" } } }, "Platform_SdkcapabilitiesDiscoverData": { "r": "Platform_CapabilityDiscoverV2Resp" }, "Platform_SdkcapabilitiesDiscoverWire": { "r": "Platform_SdkcapabilitiesDiscoverData" }, "Platform_SdkagentCardsGetRequest": { "r": "Platform_AgentCardGetReq" }, "Platform_SdkagentCardsGetData": { "r": "Platform_AgentCardGetResp" }, "Platform_SdkagentCardsGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCardsGetData" } } }, "Platform_SdkagentResultsCreateRequest": { "r": "Platform_AgentResultCreateReq" }, "Platform_SdkagentResultsCreateData": { "r": "Platform_AgentResultCreateResp" }, "Platform_SdkagentResultsCreateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentResultsCreateData" } } }, "Platform_SdkagentResultsGetRequest": { "r": "Platform_AgentResultGetReq" }, "Platform_SdkagentResultsGetData": { "r": "Platform_AgentResultGetResp" }, "Platform_SdkagentResultsGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentResultsGetData" } } }, "Platform_SdkagentResultsListRequest": { "r": "Platform_AgentResultListReq" }, "Platform_SdkagentResultsListData": { "r": "Platform_AgentResultListResp" }, "Platform_SdkagentResultsListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentResultsListData" } } }, "Platform_SdkagentCardsUpdateRequest": { "r": "Platform_AgentCardUpdateReq" }, "Platform_SdkagentCardsUpdateData": { "r": "Platform_AgentCardUpdateResp" }, "Platform_SdkagentCardsUpdateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCardsUpdateData" } } }, "Platform_SdkagentCardsListRequest": { "r": "Platform_AgentCardListReq" }, "Platform_SdkagentCardsListData": { "r": "Platform_AgentCardListResp" }, "Platform_SdkagentCardsListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCardsListData" } } }, "Platform_SdkagentResultsPinRequest": { "r": "Platform_AgentResultPinReq" }, "Platform_SdkagentResultsPinData": { "r": "Platform_AgentResultPinResp" }, "Platform_SdkagentResultsPinWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentResultsPinData" } } }, "Platform_SdkagentJobsCreateRequest": { "r": "Platform_AgentJobCreateReq" }, "Platform_SdkagentJobsCreateData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsCreateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsCreateData" } } }, "Platform_SdkagentJobsUpdateRequest": { "r": "Platform_AgentJobUpdateReq" }, "Platform_SdkagentJobsUpdateData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsUpdateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsUpdateData" } } }, "Platform_SdkagentJobsGetRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsGetData": { "r": "Platform_AgentJobGetResp" }, "Platform_SdkagentJobsGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsGetData" } } }, "Platform_SdkagentJobsListRequest": { "r": "Platform_AgentJobListReq" }, "Platform_SdkagentJobsListData": { "r": "Platform_AgentJobListResp" }, "Platform_SdkagentJobsListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsListData" } } }, "Platform_SdkagentJobsPauseRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsPauseData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsPauseWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsPauseData" } } }, "Platform_SdkagentJobsResumeRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsResumeData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsResumeWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsResumeData" } } }, "Platform_SdkagentJobsDeleteRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsDeleteData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsDeleteData" } } }, "Platform_SdkagentJobRunsGetRequest": { "r": "Platform_AgentJobRunGetReq" }, "Platform_SdkagentJobRunsGetData": { "r": "Platform_AgentJobRunGetResp" }, "Platform_SdkagentJobRunsGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobRunsGetData" } } }, "Platform_SdkagentJobRunsListRequest": { "r": "Platform_AgentJobRunListReq" }, "Platform_SdkagentJobRunsListData": { "r": "Platform_AgentJobRunListResp" }, "Platform_SdkagentJobRunsListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobRunsListData" } } }, "Platform_SdkagentJobsTriggerRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsTriggerData": { "r": "Platform_AgentJobTriggerResp" }, "Platform_SdkagentJobsTriggerWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsTriggerData" } } }, "Platform_SdkagentCanvasesListRequest": { "r": "Platform_AgentCanvasListReq" }, "Platform_SdkagentCanvasesListData": { "r": "Platform_AgentCanvasListResp" }, "Platform_SdkagentCanvasesListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCanvasesListData" } } }, "Platform_SdkagentLibraryListRequest": { "r": "Platform_AgentLibraryListReq" }, "Platform_SdkagentLibraryListData": { "r": "Platform_AgentLibraryListResp" }, "Platform_SdkagentLibraryListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryListData" } } }, "Platform_SdkagentLibraryGetRequest": { "r": "Platform_AgentLibraryGetReq" }, "Platform_SdkagentLibraryGetData": { "r": "Platform_AgentLibraryGetResp" }, "Platform_SdkagentLibraryGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryGetData" } } }, "Platform_SdkagentLibraryCreateRequest": { "r": "Platform_AgentLibraryCreateReq" }, "Platform_SdkagentLibraryCreateData": { "r": "Platform_AgentLibraryMutationResp" }, "Platform_SdkagentLibraryCreateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryCreateData" } } }, "Platform_SdkagentLibraryUpdateRequest": { "r": "Platform_AgentLibraryUpdateReq" }, "Platform_SdkagentLibraryUpdateData": { "r": "Platform_AgentLibraryMutationResp" }, "Platform_SdkagentLibraryUpdateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryUpdateData" } } }, "Platform_SdkagentLibraryDeleteRequest": { "r": "Platform_AgentLibraryGetReq" }, "Platform_SdkagentLibraryDeleteData": { "r": "Platform_AgentLibraryMutationResp" }, "Platform_SdkagentLibraryDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryDeleteData" } } }, "Platform_SdkagentCardsDeleteRequest": { "r": "Platform_AgentCardDeleteReq" }, "Platform_SdkagentCardsDeleteData": { "r": "Platform_AgentCardDeleteResp" }, "Platform_SdkagentCardsDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCardsDeleteData" } } }, "Platform_SdkagentAnalysesDispatchRequest": { "r": "Platform_AgentAnalysisDispatchReq" }, "Platform_SdkagentAnalysesDispatchData": { "r": "Platform_AgentAnalysisDispatchResp" }, "Platform_SdkagentAnalysesDispatchWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentAnalysesDispatchData" } } }, "Platform_SdkagentAnalysesGetRequest": { "r": "Platform_AgentAnalysisGetReq" }, "Platform_SdkagentAnalysesGetData": { "r": "Platform_AgentAnalysisGetResp" }, "Platform_SdkagentAnalysesGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentAnalysesGetData" } } } };
|
|
5
|
+
exports.PLATFORM_CODEC_SCHEMAS = { "Platform_InfoResp": { "k": "o", "p": { "capabilities": { "k": "a", "i": {} }, "mqttBroker": {}, "name": {}, "version": {} } }, "Platform_AuthWhoamiResp": { "k": "o", "p": { "apiKeyName": {}, "email": {}, "keyPrefix": {}, "keyType": {}, "permission": {}, "permissions": { "k": "a", "i": {} }, "roles": { "k": "a", "i": {} }, "userID": { "k": "i" }, "userName": {}, "workspaceID": { "k": "i" }, "workspaceName": {} } }, "Platform_AssetFileUploadReq": { "k": "o", "p": { "appInstanceId": {}, "business": {}, "contentType": {}, "fileName": {}, "sessionId": {}, "size": { "k": "i" }, "useBy": {}, "visibility": {} } }, "Platform_AssetFileUploadResp": { "k": "o", "p": { "expiresAt": { "k": "i" }, "fileId": { "k": "i" }, "filePath": {}, "fileUrl": {}, "postFields": { "k": "o", "p": {}, "x": {} }, "postUrl": {} } }, "Platform_AssetFileUrlResp": { "k": "o", "p": { "expiresAt": { "k": "i" }, "fileUrl": {} } }, "Platform_AssetFileDeleteReq": { "k": "o", "p": { "filePath": {} } }, "Platform_AssetFileDeleteResp": { "k": "o", "p": { "deleted": {} } }, "Platform_AssetFileMultipartInitReq": { "k": "o", "p": { "appInstanceId": {}, "bizId": {}, "business": {}, "contentType": {}, "fileName": {}, "partSize": { "k": "i" }, "sessionId": {}, "size": { "k": "i" }, "useBy": {}, "visibility": {} } }, "Platform_AssetFileMultipartInitResp": { "k": "o", "p": { "expiresAt": { "k": "i" }, "fileKey": {}, "filePath": {}, "partCount": { "k": "i" }, "partSize": { "k": "i" }, "uploadId": {} } }, "Platform_AssetFileMultipartPartUrlsReq": { "k": "o", "p": { "fileKey": {}, "partNumbers": { "k": "a", "i": { "k": "i" } }, "uploadId": {} } }, "Platform_AssetFileMultipartPartUrlsResp": { "k": "o", "p": { "partUrls": { "k": "a", "i": { "r": "Platform_AssetFileMultipartPartUrl" } } } }, "Platform_AssetFileMultipartPartUrl": { "k": "o", "p": { "expiresAt": { "k": "i" }, "partNumber": { "k": "i" }, "url": {} } }, "Platform_AssetFileMultipartCompleteReq": { "k": "o", "p": { "fileKey": {}, "parts": { "k": "a", "i": { "r": "Platform_AssetFileMultipartPart" } }, "uploadId": {} } }, "Platform_AssetFileMultipartPart": { "k": "o", "p": { "etag": {}, "partNumber": { "k": "i" } } }, "Platform_AssetFileMultipartCompleteResp": { "k": "o", "p": { "expiresAt": { "k": "i" }, "filePath": {}, "fileUrl": {}, "sizeBytes": { "k": "i" } } }, "Platform_AssetFileMultipartAbortReq": { "k": "o", "p": { "fileKey": {}, "uploadId": {} } }, "Platform_AssetFileMultipartAbortResp": { "k": "o", "p": { "aborted": { "k": "i" } } }, "Platform_AssetUploadReq": { "k": "o", "p": { "business": {}, "contentType": {}, "fileName": {}, "isPublic": {}, "sha256": {}, "size": { "k": "i" }, "sizeBytes": { "k": "i" }, "storageKey": {}, "useBy": {} } }, "Platform_AssetUploadResp": { "k": "o", "p": { "filePath": {}, "fileUrl": {}, "postFields": { "k": "o", "p": {}, "x": {} }, "postUrl": {} } }, "Platform_SendNotificationReq": { "k": "o", "p": { "channels": { "k": "a", "i": {} }, "content": {}, "idempotencyKey": {}, "link": {}, "mode": {}, "recipientUserId": {}, "sender": { "r": "Platform_NotificationSender" }, "source": {}, "title": {}, "type": {} } }, "Platform_NotificationSender": { "k": "o", "p": { "id": {}, "meta": { "k": "o", "p": {}, "x": {} }, "name": {}, "type": {} } }, "Platform_SendNotificationResp": { "k": "o", "p": { "createdAt": {}, "messageId": {}, "recipientName": {}, "recipientUserId": {}, "status": {} } }, "Platform_NotificationError": { "k": "o", "p": { "errorCode": {}, "message": {} } }, "Platform_GetNotificationReq": { "k": "o", "p": { "messageId": {} } }, "Platform_GetNotificationResp": { "k": "o", "p": { "channels": { "k": "a", "i": { "r": "Platform_NotificationChannelResult" } }, "completedAt": {}, "createdAt": {}, "errorCode": {}, "message": {}, "messageId": {}, "recipientName": {}, "recipientUserId": {}, "status": {}, "type": {} } }, "Platform_NotificationChannelResult": { "k": "o", "p": { "channel": {}, "errorCode": {}, "message": {}, "platform": {}, "status": {}, "successCount": { "k": "i" }, "targetCount": { "k": "i" } } }, "Platform_ListNotificationsReq": { "k": "o", "p": { "messageId": {}, "page": { "k": "i" }, "recipientUserId": {}, "size": { "k": "i" }, "status": {} } }, "Platform_ListNotificationsResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_NotificationListItem" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_NotificationListItem": { "k": "o", "p": { "channels": { "k": "a", "i": {} }, "completedAt": {}, "createdAt": {}, "errorCode": {}, "keyId": {}, "message": {}, "messageId": {}, "mode": {}, "recipientName": {}, "recipientUserId": {}, "senderId": {}, "senderName": {}, "senderType": {}, "status": {}, "title": {} } }, "Platform_PlatformGetMembersReq": { "k": "o", "p": { "keyword": {}, "page": { "k": "i" }, "roleKey": {}, "roles": { "k": "a", "i": {} }, "size": { "k": "i" }, "statuses": { "k": "a", "i": {} }, "updatedAtEnd": {}, "updatedAtStart": {} } }, "Platform_PlatformMembersResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_PlatformMemberResp" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_PlatformMemberResp": { "k": "o", "p": { "email": {}, "nickName": {}, "roles": { "k": "a", "i": { "r": "Platform_PlatformMemberRoleResp" } }, "status": {}, "updatedAt": {}, "userId": {}, "userName": {} } }, "Platform_PlatformMemberRoleResp": { "k": "o", "p": { "description": {}, "roleId": {}, "roleKey": {}, "roleName": {} } }, "Platform_AppAccessMembersListReq": { "k": "o", "p": { "appId": {}, "grantedAtEnd": { "k": "i" }, "grantedAtStart": { "k": "i" }, "page": { "k": "i" }, "roleKeys": { "k": "a", "i": {} }, "scope": {}, "size": { "k": "i" } } }, "Platform_AppAccessMembersListResp": { "k": "o", "p": { "allActiveMembers": { "k": "i" }, "appId": {}, "list": { "k": "a", "i": { "r": "Platform_AppAccessMemberResp" } }, "page": { "k": "i" }, "productionVersionId": {}, "published": { "k": "i" }, "roles": { "k": "a", "i": { "r": "Platform_AppAccessRoleResp" } }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AppAccessMemberResp": { "k": "o", "p": { "email": {}, "grantedAt": { "k": "i" }, "roles": { "k": "a", "i": { "r": "Platform_AppAccessMemberRoleResp" } }, "userId": {}, "userName": {} } }, "Platform_AppAccessMemberRoleResp": { "k": "o", "p": { "roleId": {}, "roleKey": {}, "roleName": {}, "sources": { "k": "a", "i": { "r": "Platform_AppAccessRoleSourceResp" } } } }, "Platform_AppAccessRoleSourceResp": { "k": "o", "p": { "groupId": {}, "groupName": {}, "type": {} } }, "Platform_AppAccessRoleResp": { "k": "o", "p": { "description": {}, "memberCount": { "k": "i" }, "roleId": {}, "roleKey": {}, "roleName": {}, "status": {} } }, "Platform_MqttAuthCreateReq": { "k": "o", "p": { "clientIDRandomSuffixEnabled": {}, "description": {}, "name": {} } }, "Platform_MqttAuthCreateResp": { "k": "o", "p": { "clientID": {}, "clientIDRandomSuffixEnabled": {}, "id": { "k": "i" }, "name": {}, "password": {}, "username": {} } }, "Platform_MqttAuthDeleteReq": { "k": "o", "p": { "id": { "k": "i" } } }, "Platform_MqttAuthDeleteResp": { "k": "o", "p": { "success": {} } }, "Platform_CapabilityDiscoverV2Resp": { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "capabilities": { "k": "a", "i": { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "operations": { "k": "a", "i": { "k": "o", "p": { "operation": {} } } } } }] }] } } } }] }] }] }, "Platform_CapabilityDiscoverycapability": { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "r": "Platform_CapabilityDiscoveryknownCapability" }] }] }] }, "Platform_CapabilityDiscoveryknownCapability": { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "state": {}, "checkedAt": {} } }] }] }, { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "operations": { "k": "a", "i": { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "state": {} } }] }] } } } }] }] }] }] }] }, { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "operations": { "k": "a", "i": { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "state": {} } }] }] } } } }] }] }] }] }] }, { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "contractVersions": { "k": "a", "i": {} } } }] }] }, { "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "contractVersions": { "k": "a", "i": {} } } }] }] }] }, "Platform_CapabilityDiscoveryoperation": { "k": "o", "p": { "operation": {} } }, "Platform_CapabilityDiscoveryknownOperation": { "k": "u", "a": [{ "k": "u", "a": [{ "k": "u", "a": [{}, { "k": "o", "p": { "state": {}, "checkedAt": {} } }] }] }] }, "Platform_CapabilityErrorResp": { "k": "o", "p": { "errorCode": {}, "message": {} } }, "Platform_AgentCardGetReq": { "k": "o", "p": { "canvasId": {}, "cardId": {} } }, "Platform_AgentCardGetResp": { "k": "o", "p": { "canvasId": {}, "cardId": {}, "cardKey": {}, "cardSpec": {}, "updatedAt": { "k": "i" } } }, "Platform_AgentResultCreateReq": { "k": "o", "p": { "cardSpec": {}, "charts": {}, "dataScope": {}, "findings": {}, "images": { "k": "a", "i": {} }, "metrics": {}, "missingData": {}, "operationId": {}, "resultSchemaVersion": { "k": "i" }, "severity": {}, "source": { "r": "Platform_AgentResultSource" }, "steps": { "k": "a", "i": {} }, "summary": {}, "tables": { "k": "a", "i": {} }, "title": {}, "warnings": { "k": "a", "i": {} } } }, "Platform_AgentResultSource": { "k": "o", "p": { "agentId": {}, "platformRunId": {}, "platformSessionId": {}, "platformUserId": {}, "skillVersion": {} } }, "Platform_AgentResultCreateResp": { "k": "o", "p": { "jobRunId": {}, "resultId": {} } }, "Platform_AgentResultGetReq": { "k": "o", "p": { "operationId": {}, "resultId": {} } }, "Platform_AgentResultGetResp": { "k": "o", "p": { "result": { "r": "Platform_AgentStoredResult" } } }, "Platform_AgentStoredResult": { "k": "o", "p": { "agentId": {}, "byteSize": { "k": "i" }, "cardSpec": {}, "createdAt": { "k": "i" }, "manifest": {}, "operationId": {}, "platformRunId": {}, "platformSessionId": {}, "resultId": {}, "skillVersion": {}, "sourceKind": {} } }, "Platform_AgentResultListReq": { "k": "o", "p": { "page": { "k": "i" }, "platformSessionId": {}, "size": { "k": "i" } } }, "Platform_AgentResultListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentStoredResult" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentCardUpdateReq": { "k": "o", "p": { "canvasId": {}, "cardId": {}, "cardSpec": {}, "expectedCardSpec": {}, "ord": { "k": "i" }, "position": {} } }, "Platform_AgentCardUpdateResp": { "k": "o", "p": { "cardId": {} } }, "Platform_AgentCardListReq": { "k": "o", "p": { "canvasId": {}, "page": { "k": "i" }, "size": { "k": "i" } } }, "Platform_AgentCardListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentCardGetResp" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentResultPinReq": { "k": "o", "p": { "canvasId": {}, "position": {}, "resultId": {} } }, "Platform_AgentResultPinResp": { "k": "o", "p": { "cardId": {} } }, "Platform_AgentJobCreateReq": { "k": "o", "p": { "cardId": {}, "cronExpr": {}, "expiresAt": { "k": "i" }, "intervalSeconds": { "k": "i" }, "name": {}, "notify": {}, "scheduleKind": {}, "sessionId": {}, "sourceBlockId": {}, "sourceId": {}, "sourceName": {}, "sourceType": {}, "task": {}, "type": {} } }, "Platform_AgentJobMutationResp": { "k": "o", "p": { "jobId": {} } }, "Platform_AgentJobUpdateReq": { "k": "o", "p": { "cardId": {}, "cronExpr": {}, "expiresAt": { "k": "i" }, "intervalSeconds": { "k": "i" }, "jobId": {}, "name": {}, "notify": {}, "notifyEnabled": { "k": "i" }, "scheduleKind": {}, "sessionId": {}, "sourceBlockId": {}, "sourceId": {}, "sourceName": {}, "sourceType": {}, "task": {}, "type": {} } }, "Platform_AgentJobIDReq": { "k": "o", "p": { "jobId": {} } }, "Platform_AgentJobGetResp": { "k": "o", "p": { "job": { "r": "Platform_AgentJobRecord" } } }, "Platform_AgentJobRecord": { "k": "o", "p": { "attentionReason": {}, "cardId": {}, "createdAt": { "k": "i" }, "cronExpr": {}, "expiresAt": { "k": "i" }, "intervalSeconds": { "k": "i" }, "jobId": {}, "lastFiredAt": { "k": "i" }, "name": {}, "nextRunAt": { "k": "i" }, "notify": {}, "orphanedAt": { "k": "i" }, "scheduleKind": {}, "sessionId": {}, "sourceBlockId": {}, "sourceId": {}, "sourceName": {}, "sourceType": {}, "status": {}, "task": {}, "type": {}, "updatedAt": { "k": "i" } } }, "Platform_AgentJobListReq": { "k": "o", "p": { "cardId": {}, "page": { "k": "i" }, "search": {}, "size": { "k": "i" }, "sourceId": {}, "sourceType": {}, "status": {}, "type": {} } }, "Platform_AgentJobListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentJobRecord" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentJobRunGetReq": { "k": "o", "p": { "jobId": {}, "jobRunId": {} } }, "Platform_AgentJobRunGetResp": { "k": "o", "p": { "run": { "r": "Platform_AgentJobRunRecord" } } }, "Platform_AgentJobRunRecord": { "k": "o", "p": { "dispatchState": {}, "errorCode": {}, "errorMessage": {}, "finishedAt": { "k": "i" }, "firedAt": { "k": "i" }, "jobId": {}, "jobRunId": {}, "resultId": {}, "resultSummary": {}, "severity": {}, "status": {}, "trigger": {} } }, "Platform_AgentJobRunListReq": { "k": "o", "p": { "jobId": {}, "page": { "k": "i" }, "size": { "k": "i" }, "status": {} } }, "Platform_AgentJobRunListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentJobRunRecord" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentJobTriggerResp": { "k": "o", "p": { "dispatchState": {}, "jobId": {}, "jobRunId": {} } }, "Platform_AgentCanvasListReq": { "k": "o", "p": { "page": { "k": "i" }, "sessionId": {}, "size": { "k": "i" } } }, "Platform_AgentCanvasListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentCanvasRecord" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentCanvasRecord": { "k": "o", "p": { "canvasId": {}, "createdAt": { "k": "i" }, "name": {}, "sessionId": {}, "updatedAt": { "k": "i" } } }, "Platform_AgentLibraryListReq": { "k": "o", "p": { "page": { "k": "i" }, "search": {}, "size": { "k": "i" }, "tags": { "k": "a", "i": {} } } }, "Platform_AgentLibraryListResp": { "k": "o", "p": { "list": { "k": "a", "i": { "r": "Platform_AgentLibraryItem" } }, "page": { "k": "i" }, "size": { "k": "i" }, "total": { "k": "i" } } }, "Platform_AgentLibraryItem": { "k": "o", "p": { "cardKey": {}, "cardSpec": {}, "createdAt": { "k": "i" }, "libraryItemId": {}, "sourceSessionId": {}, "tags": { "k": "a", "i": {} }, "updatedAt": { "k": "i" } } }, "Platform_AgentLibraryGetReq": { "k": "o", "p": { "libraryItemId": {} } }, "Platform_AgentLibraryGetResp": { "k": "o", "p": { "item": { "r": "Platform_AgentLibraryItem" } } }, "Platform_AgentLibraryCreateReq": { "k": "o", "p": { "cardKey": {}, "cardSpec": {}, "sourceSessionId": {}, "tags": { "k": "a", "i": {} } } }, "Platform_AgentLibraryMutationResp": { "k": "o", "p": { "libraryItemId": {} } }, "Platform_AgentLibraryUpdateReq": { "k": "o", "p": { "cardSpec": {}, "expectedItem": { "r": "Platform_AgentLibrarySnapshot" }, "libraryItemId": {}, "sourceSessionId": {}, "tags": { "k": "a", "i": {} } } }, "Platform_AgentLibrarySnapshot": { "k": "o", "p": { "cardKey": {}, "cardSpec": {}, "sourceSessionId": {}, "tags": { "k": "a", "i": {} } } }, "Platform_AgentCardDeleteReq": { "k": "o", "p": { "canvasId": {}, "cardId": {}, "expectedCardSpec": {} } }, "Platform_AgentCardDeleteResp": { "k": "o", "p": { "cardId": {} } }, "Platform_AgentAnalysisDispatchReq": { "k": "o", "p": { "canvasId": {}, "cardId": {}, "kind": {}, "operationId": {}, "resultId": {}, "task": {} } }, "Platform_AgentAnalysisDispatchResp": { "k": "o", "p": { "dispatchState": {}, "errorCode": {}, "errorMessage": {}, "runId": {} } }, "Platform_AgentAnalysisGetReq": { "k": "o", "p": { "runId": {} } }, "Platform_AgentAnalysisGetResp": { "k": "o", "p": { "run": { "r": "Platform_AgentJobRunRecord" } } }, "Platform_SdksystemInfoData": { "r": "Platform_InfoResp" }, "Platform_SdksystemInfoWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdksystemInfoData" } } }, "Platform_SdksystemWhoamiData": { "r": "Platform_AuthWhoamiResp" }, "Platform_SdksystemWhoamiWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdksystemWhoamiData" } } }, "Platform_SdkassetsFilesPrepareUploadRequest": { "r": "Platform_AssetFileUploadReq" }, "Platform_SdkassetsFilesPrepareUploadData": { "r": "Platform_AssetFileUploadResp" }, "Platform_SdkassetsFilesPrepareUploadWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesPrepareUploadData" } } }, "Platform_SdkassetsFilesDownloadQuery": { "k": "o", "p": { "filePath": {}, "responseContentDisposition": {} } }, "Platform_SdkassetsFilesDownloadData": {}, "Platform_SdkassetsFilesDownloadWire": { "r": "Platform_SdkassetsFilesDownloadData" }, "Platform_SdkassetsFilesUrlQuery": { "k": "o", "p": { "filePath": {}, "expiredSec": { "k": "i" } } }, "Platform_SdkassetsFilesUrlData": { "r": "Platform_AssetFileUrlResp" }, "Platform_SdkassetsFilesUrlWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesUrlData" } } }, "Platform_SdkassetsFilesDeleteRequest": { "r": "Platform_AssetFileDeleteReq" }, "Platform_SdkassetsFilesDeleteData": { "r": "Platform_AssetFileDeleteResp" }, "Platform_SdkassetsFilesDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesDeleteData" } } }, "Platform_SdkassetsFilesMultipartInitRequest": { "r": "Platform_AssetFileMultipartInitReq" }, "Platform_SdkassetsFilesMultipartInitData": { "r": "Platform_AssetFileMultipartInitResp" }, "Platform_SdkassetsFilesMultipartInitWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesMultipartInitData" } } }, "Platform_SdkassetsFilesMultipartPartUrlsRequest": { "r": "Platform_AssetFileMultipartPartUrlsReq" }, "Platform_SdkassetsFilesMultipartPartUrlsData": { "r": "Platform_AssetFileMultipartPartUrlsResp" }, "Platform_SdkassetsFilesMultipartPartUrlsWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesMultipartPartUrlsData" } } }, "Platform_SdkassetsFilesMultipartCompleteRequest": { "r": "Platform_AssetFileMultipartCompleteReq" }, "Platform_SdkassetsFilesMultipartCompleteData": { "r": "Platform_AssetFileMultipartCompleteResp" }, "Platform_SdkassetsFilesMultipartCompleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesMultipartCompleteData" } } }, "Platform_SdkassetsFilesMultipartAbortRequest": { "r": "Platform_AssetFileMultipartAbortReq" }, "Platform_SdkassetsFilesMultipartAbortData": { "r": "Platform_AssetFileMultipartAbortResp" }, "Platform_SdkassetsFilesMultipartAbortWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsFilesMultipartAbortData" } } }, "Platform_SdkassetsUploadRequest": { "r": "Platform_AssetUploadReq" }, "Platform_SdkassetsUploadData": { "r": "Platform_AssetUploadResp" }, "Platform_SdkassetsUploadWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkassetsUploadData" } } }, "Platform_SdknotificationsSendRequest": { "r": "Platform_SendNotificationReq" }, "Platform_SdknotificationsSendData": { "r": "Platform_SendNotificationResp" }, "Platform_SdknotificationsSendWire": { "r": "Platform_SdknotificationsSendData" }, "Platform_SdknotificationsGetRequest": { "r": "Platform_GetNotificationReq" }, "Platform_SdknotificationsGetData": { "r": "Platform_GetNotificationResp" }, "Platform_SdknotificationsGetWire": { "r": "Platform_SdknotificationsGetData" }, "Platform_SdknotificationsListRequest": { "r": "Platform_ListNotificationsReq" }, "Platform_SdknotificationsListData": { "r": "Platform_ListNotificationsResp" }, "Platform_SdknotificationsListWire": { "r": "Platform_SdknotificationsListData" }, "Platform_SdkmembersListWorkspaceRequest": { "r": "Platform_PlatformGetMembersReq" }, "Platform_SdkmembersListWorkspaceData": { "r": "Platform_PlatformMembersResp" }, "Platform_SdkmembersListWorkspaceWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkmembersListWorkspaceData" } } }, "Platform_SdkmembersListAppRequest": { "r": "Platform_AppAccessMembersListReq" }, "Platform_SdkmembersListAppData": { "r": "Platform_AppAccessMembersListResp" }, "Platform_SdkmembersListAppWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkmembersListAppData" } } }, "Platform_SdkmqttAuthCreateRequest": { "r": "Platform_MqttAuthCreateReq" }, "Platform_SdkmqttAuthCreateData": { "r": "Platform_MqttAuthCreateResp" }, "Platform_SdkmqttAuthCreateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkmqttAuthCreateData" } } }, "Platform_SdkmqttAuthDeleteRequest": { "r": "Platform_MqttAuthDeleteReq" }, "Platform_SdkmqttAuthDeleteData": { "r": "Platform_MqttAuthDeleteResp" }, "Platform_SdkmqttAuthDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkmqttAuthDeleteData" } } }, "Platform_SdkcapabilitiesDiscoverData": { "r": "Platform_CapabilityDiscoverV2Resp" }, "Platform_SdkcapabilitiesDiscoverWire": { "r": "Platform_SdkcapabilitiesDiscoverData" }, "Platform_SdkagentCardsGetRequest": { "r": "Platform_AgentCardGetReq" }, "Platform_SdkagentCardsGetData": { "r": "Platform_AgentCardGetResp" }, "Platform_SdkagentCardsGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCardsGetData" } } }, "Platform_SdkagentResultsCreateRequest": { "r": "Platform_AgentResultCreateReq" }, "Platform_SdkagentResultsCreateData": { "r": "Platform_AgentResultCreateResp" }, "Platform_SdkagentResultsCreateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentResultsCreateData" } } }, "Platform_SdkagentResultsGetRequest": { "r": "Platform_AgentResultGetReq" }, "Platform_SdkagentResultsGetData": { "r": "Platform_AgentResultGetResp" }, "Platform_SdkagentResultsGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentResultsGetData" } } }, "Platform_SdkagentResultsListRequest": { "r": "Platform_AgentResultListReq" }, "Platform_SdkagentResultsListData": { "r": "Platform_AgentResultListResp" }, "Platform_SdkagentResultsListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentResultsListData" } } }, "Platform_SdkagentCardsUpdateRequest": { "r": "Platform_AgentCardUpdateReq" }, "Platform_SdkagentCardsUpdateData": { "r": "Platform_AgentCardUpdateResp" }, "Platform_SdkagentCardsUpdateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCardsUpdateData" } } }, "Platform_SdkagentCardsListRequest": { "r": "Platform_AgentCardListReq" }, "Platform_SdkagentCardsListData": { "r": "Platform_AgentCardListResp" }, "Platform_SdkagentCardsListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCardsListData" } } }, "Platform_SdkagentResultsPinRequest": { "r": "Platform_AgentResultPinReq" }, "Platform_SdkagentResultsPinData": { "r": "Platform_AgentResultPinResp" }, "Platform_SdkagentResultsPinWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentResultsPinData" } } }, "Platform_SdkagentJobsCreateRequest": { "r": "Platform_AgentJobCreateReq" }, "Platform_SdkagentJobsCreateData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsCreateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsCreateData" } } }, "Platform_SdkagentJobsUpdateRequest": { "r": "Platform_AgentJobUpdateReq" }, "Platform_SdkagentJobsUpdateData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsUpdateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsUpdateData" } } }, "Platform_SdkagentJobsGetRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsGetData": { "r": "Platform_AgentJobGetResp" }, "Platform_SdkagentJobsGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsGetData" } } }, "Platform_SdkagentJobsListRequest": { "r": "Platform_AgentJobListReq" }, "Platform_SdkagentJobsListData": { "r": "Platform_AgentJobListResp" }, "Platform_SdkagentJobsListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsListData" } } }, "Platform_SdkagentJobsPauseRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsPauseData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsPauseWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsPauseData" } } }, "Platform_SdkagentJobsResumeRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsResumeData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsResumeWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsResumeData" } } }, "Platform_SdkagentJobsDeleteRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsDeleteData": { "r": "Platform_AgentJobMutationResp" }, "Platform_SdkagentJobsDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsDeleteData" } } }, "Platform_SdkagentJobRunsGetRequest": { "r": "Platform_AgentJobRunGetReq" }, "Platform_SdkagentJobRunsGetData": { "r": "Platform_AgentJobRunGetResp" }, "Platform_SdkagentJobRunsGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobRunsGetData" } } }, "Platform_SdkagentJobRunsListRequest": { "r": "Platform_AgentJobRunListReq" }, "Platform_SdkagentJobRunsListData": { "r": "Platform_AgentJobRunListResp" }, "Platform_SdkagentJobRunsListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobRunsListData" } } }, "Platform_SdkagentJobsTriggerRequest": { "r": "Platform_AgentJobIDReq" }, "Platform_SdkagentJobsTriggerData": { "r": "Platform_AgentJobTriggerResp" }, "Platform_SdkagentJobsTriggerWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentJobsTriggerData" } } }, "Platform_SdkagentCanvasesListRequest": { "r": "Platform_AgentCanvasListReq" }, "Platform_SdkagentCanvasesListData": { "r": "Platform_AgentCanvasListResp" }, "Platform_SdkagentCanvasesListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCanvasesListData" } } }, "Platform_SdkagentLibraryListRequest": { "r": "Platform_AgentLibraryListReq" }, "Platform_SdkagentLibraryListData": { "r": "Platform_AgentLibraryListResp" }, "Platform_SdkagentLibraryListWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryListData" } } }, "Platform_SdkagentLibraryGetRequest": { "r": "Platform_AgentLibraryGetReq" }, "Platform_SdkagentLibraryGetData": { "r": "Platform_AgentLibraryGetResp" }, "Platform_SdkagentLibraryGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryGetData" } } }, "Platform_SdkagentLibraryCreateRequest": { "r": "Platform_AgentLibraryCreateReq" }, "Platform_SdkagentLibraryCreateData": { "r": "Platform_AgentLibraryMutationResp" }, "Platform_SdkagentLibraryCreateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryCreateData" } } }, "Platform_SdkagentLibraryUpdateRequest": { "r": "Platform_AgentLibraryUpdateReq" }, "Platform_SdkagentLibraryUpdateData": { "r": "Platform_AgentLibraryMutationResp" }, "Platform_SdkagentLibraryUpdateWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryUpdateData" } } }, "Platform_SdkagentLibraryDeleteRequest": { "r": "Platform_AgentLibraryGetReq" }, "Platform_SdkagentLibraryDeleteData": { "r": "Platform_AgentLibraryMutationResp" }, "Platform_SdkagentLibraryDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentLibraryDeleteData" } } }, "Platform_SdkagentCardsDeleteRequest": { "r": "Platform_AgentCardDeleteReq" }, "Platform_SdkagentCardsDeleteData": { "r": "Platform_AgentCardDeleteResp" }, "Platform_SdkagentCardsDeleteWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentCardsDeleteData" } } }, "Platform_SdkagentAnalysesDispatchRequest": { "r": "Platform_AgentAnalysisDispatchReq" }, "Platform_SdkagentAnalysesDispatchData": { "r": "Platform_AgentAnalysisDispatchResp" }, "Platform_SdkagentAnalysesDispatchWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentAnalysesDispatchData" } } }, "Platform_SdkagentAnalysesGetRequest": { "r": "Platform_AgentAnalysisGetReq" }, "Platform_SdkagentAnalysesGetData": { "r": "Platform_AgentAnalysisGetResp" }, "Platform_SdkagentAnalysesGetWire": { "k": "o", "p": { "code": { "k": "i" }, "msg": {}, "data": { "r": "Platform_SdkagentAnalysesGetData" } } } };
|
|
6
6
|
//# sourceMappingURL=codecs.generated.js.map
|