@numa-tech/numa 1.23.1 → 1.25.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.
Files changed (51) hide show
  1. package/README.md +4 -0
  2. package/dist/authorization/application-client.d.ts +608 -6
  3. package/dist/authorization/application-client.js +1 -1
  4. package/dist/authorization/application-client.js.map +1 -1
  5. package/dist/authorization/application-schemas.d.ts +171 -0
  6. package/dist/authorization/application-schemas.js +14 -1
  7. package/dist/authorization/application-schemas.js.map +1 -1
  8. package/dist/authorization/commands.d.ts +2 -1
  9. package/dist/authorization/commands.js +2 -0
  10. package/dist/authorization/commands.js.map +1 -1
  11. package/dist/authorization/managed-keycloak-client.d.ts +863 -0
  12. package/dist/authorization/managed-keycloak-client.js +182 -0
  13. package/dist/authorization/managed-keycloak-client.js.map +1 -0
  14. package/dist/authorization/managed-keycloak-commands.d.ts +10 -0
  15. package/dist/authorization/managed-keycloak-commands.js +113 -0
  16. package/dist/authorization/managed-keycloak-commands.js.map +1 -0
  17. package/dist/authorization/managed-keycloak-schemas.d.ts +178 -0
  18. package/dist/authorization/managed-keycloak-schemas.js +55 -0
  19. package/dist/authorization/managed-keycloak-schemas.js.map +1 -0
  20. package/dist/business-issuer.js +3 -5
  21. package/dist/business-issuer.js.map +1 -1
  22. package/dist/command-catalog.js +2 -0
  23. package/dist/command-catalog.js.map +1 -1
  24. package/dist/kb/client.js +10 -5
  25. package/dist/kb/client.js.map +1 -1
  26. package/dist/kb/commands.js +2 -2
  27. package/dist/kb/commands.js.map +1 -1
  28. package/dist/kb/config.d.ts +3 -3
  29. package/dist/kb/config.js +25 -20
  30. package/dist/kb/config.js.map +1 -1
  31. package/dist/login-recovery.js +2 -2
  32. package/dist/login-recovery.js.map +1 -1
  33. package/dist/mcp-gateway/profile.d.ts +4 -0
  34. package/dist/mcp-gateway/profile.js +6 -3
  35. package/dist/mcp-gateway/profile.js.map +1 -1
  36. package/dist/mcp-gateway/runtime.js +14 -0
  37. package/dist/mcp-gateway/runtime.js.map +1 -1
  38. package/docs/design/kb-cli.md +4 -4
  39. package/docs/kb-access.md +14 -7
  40. package/docs/keycloak-managed-import.md +41 -0
  41. package/examples/jev/README.md +65 -0
  42. package/examples/jev/platform-client.test.ts +136 -0
  43. package/examples/jev/platform-client.ts +122 -0
  44. package/package.json +6 -5
  45. package/skills/numa-jev/LICENSE +21 -0
  46. package/skills/numa-jev/SKILL.md +54 -0
  47. package/skills/numa-jev/assets/decision.json +37 -0
  48. package/skills/numa-jev/numa-skill.json +8 -0
  49. package/skills/numa-jev/references/application-integration.md +36 -0
  50. package/skills/numa-jev/references/mcp-usage.md +53 -0
  51. package/skills/numa-jev/references/upstream.md +13 -0
package/README.md CHANGED
@@ -36,6 +36,10 @@ numa notion page create --grant 41 --file page.json --json
36
36
 
37
37
  写入使用 JSON 文件,归档必须提供 `--yes`。所有 Notion 命令输出 `{ok,data}`,`data` 保留 Notion 字段与用户属性名;写请求不会因 401、限流或网络中断自动重放。机器模式通过环境变量 `NUMA_KEYCLOAK_AUTH_MODE=client_credentials`、`NUMA_KEYCLOAK_CLIENT_ID` 与 `NUMA_KEYCLOAK_CLIENT_SECRET` 启用,短期 JWT 仅存进程内存,运行 `numa profile --json` 可查看身份,无需浏览器登录。
38
38
 
39
+ ## Jev 企业决策(开发中)
40
+
41
+ Jev 企业接入已开始实施:定制 Skill 指导 Agent 调用平台原生 MCP,平台统一授权并经指定代理访问 OpenRouter。终端 Agent、ChatGPT 和 K8s Agent 的接口、身份及验收边界见 [Jev 详细设计](docs/design/jev-integration.md),源码包见 [numa-jev Skill](skills/numa-jev/SKILL.md) 和 [应用示例](examples/jev/README.md)。当前是未发布源码;ChatGPT 远程 OAuth 仍按设计待实施,Skill 安装不等于 MCP 已连接。
42
+
39
43
  ## 应用默认组
40
44
 
41
45
  支持该 API 的 DevOps 后端部署后,普通用户 CLI 登录成功会显式初始化本人应用成员资格和默认组;不是给全部 realm 用户授权。`auth status` 和以下 status 命令均只读,机器及已暂停/撤销成员不自动入组:
@@ -487,6 +487,92 @@ export declare class ApplicationClient {
487
487
  subjectAccess(subject: string, environmentId: string, ownerClientId?: string): Promise<Record<string, unknown>>;
488
488
  private validatePublicationProtocol;
489
489
  plan(input: unknown): Promise<{
490
+ [x: string]: unknown;
491
+ id: string;
492
+ applicationId: number;
493
+ status: string;
494
+ version: number;
495
+ planDigest: string;
496
+ predecessorId: string | null;
497
+ createdAt: string;
498
+ updatedAt: string;
499
+ steps: {
500
+ [x: string]: unknown;
501
+ ordinal: number;
502
+ kind: string;
503
+ targetId: string;
504
+ status: string;
505
+ version: number;
506
+ stepDigest: string;
507
+ childEvidence?: Record<string, unknown> | null | undefined;
508
+ }[];
509
+ execution?: {
510
+ [x: string]: unknown;
511
+ status: "QUEUED" | "RETRY_WAIT" | "RUNNING" | "SUCCEEDED" | "TERMINATED" | "WAITING_MANUAL";
512
+ currentStep?: number | null | undefined;
513
+ attempts?: number | undefined;
514
+ errorCode?: string | null | undefined;
515
+ errorDetails?: Record<string, unknown> | null | undefined;
516
+ javascriptPolicyDeletionConfirmed?: boolean | undefined;
517
+ verifiedAt?: string | null | undefined;
518
+ observedBundleDigest?: string | null | undefined;
519
+ } | undefined;
520
+ collaboration: {
521
+ [x: string]: unknown;
522
+ state: string;
523
+ allowedActions: string[];
524
+ };
525
+ operation: "MANAGED_KEYCLOAK_IMPORT";
526
+ plan: {
527
+ [x: string]: unknown;
528
+ applicationId: number;
529
+ configurationBundle: {
530
+ [x: string]: unknown;
531
+ status: "BLOCKED" | "READY";
532
+ bundleDigest: string;
533
+ javascriptPolicyDeletionRequired?: boolean | undefined;
534
+ objects: {
535
+ [x: string]: unknown;
536
+ key: string;
537
+ kind: string;
538
+ logicalId: string;
539
+ action: string;
540
+ dependencies: string[];
541
+ desired?: unknown;
542
+ observed?: unknown;
543
+ baseline?: unknown;
544
+ }[];
545
+ differences: {
546
+ [x: string]: unknown;
547
+ objectKey: string;
548
+ field: string;
549
+ action: string;
550
+ current?: unknown;
551
+ desired?: unknown;
552
+ baseline?: unknown;
553
+ }[];
554
+ blockers: {
555
+ [x: string]: unknown;
556
+ code: string;
557
+ objectKey?: string | undefined;
558
+ message?: string | undefined;
559
+ }[];
560
+ };
561
+ managedConfiguration: {
562
+ [x: string]: unknown;
563
+ configuration: {
564
+ [x: string]: unknown;
565
+ schemaVersion: "1";
566
+ kind: "KEYCLOAK_API_KEY_CONFIGURATION";
567
+ target: {
568
+ issuerId: string;
569
+ applicationId: number;
570
+ platformEnvironmentId: number;
571
+ };
572
+ };
573
+ };
574
+ };
575
+ } | {
490
576
  [x: string]: unknown;
491
577
  id: string;
492
578
  applicationId: number;
@@ -769,6 +855,92 @@ export declare class ApplicationClient {
769
855
  credentialOperation: Record<string, unknown>;
770
856
  }>;
771
857
  preview(input: unknown): Promise<{
858
+ [x: string]: unknown;
859
+ id: string;
860
+ applicationId: number;
861
+ status: string;
862
+ version: number;
863
+ planDigest: string;
864
+ predecessorId: string | null;
865
+ createdAt: string;
866
+ updatedAt: string;
867
+ steps: {
868
+ [x: string]: unknown;
869
+ ordinal: number;
870
+ kind: string;
871
+ targetId: string;
872
+ status: string;
873
+ version: number;
874
+ stepDigest: string;
875
+ childEvidence?: Record<string, unknown> | null | undefined;
876
+ }[];
877
+ execution?: {
878
+ [x: string]: unknown;
879
+ status: "QUEUED" | "RETRY_WAIT" | "RUNNING" | "SUCCEEDED" | "TERMINATED" | "WAITING_MANUAL";
880
+ currentStep?: number | null | undefined;
881
+ attempts?: number | undefined;
882
+ errorCode?: string | null | undefined;
883
+ errorDetails?: Record<string, unknown> | null | undefined;
884
+ javascriptPolicyDeletionConfirmed?: boolean | undefined;
885
+ verifiedAt?: string | null | undefined;
886
+ observedBundleDigest?: string | null | undefined;
887
+ } | undefined;
888
+ collaboration: {
889
+ [x: string]: unknown;
890
+ state: string;
891
+ allowedActions: string[];
892
+ };
893
+ operation: "MANAGED_KEYCLOAK_IMPORT";
894
+ plan: {
895
+ [x: string]: unknown;
896
+ applicationId: number;
897
+ configurationBundle: {
898
+ [x: string]: unknown;
899
+ status: "BLOCKED" | "READY";
900
+ bundleDigest: string;
901
+ javascriptPolicyDeletionRequired?: boolean | undefined;
902
+ objects: {
903
+ [x: string]: unknown;
904
+ key: string;
905
+ kind: string;
906
+ logicalId: string;
907
+ action: string;
908
+ dependencies: string[];
909
+ desired?: unknown;
910
+ observed?: unknown;
911
+ baseline?: unknown;
912
+ }[];
913
+ differences: {
914
+ [x: string]: unknown;
915
+ objectKey: string;
916
+ field: string;
917
+ action: string;
918
+ current?: unknown;
919
+ desired?: unknown;
920
+ baseline?: unknown;
921
+ }[];
922
+ blockers: {
923
+ [x: string]: unknown;
924
+ code: string;
925
+ objectKey?: string | undefined;
926
+ message?: string | undefined;
927
+ }[];
928
+ };
929
+ managedConfiguration: {
930
+ [x: string]: unknown;
931
+ configuration: {
932
+ [x: string]: unknown;
933
+ schemaVersion: "1";
934
+ kind: "KEYCLOAK_API_KEY_CONFIGURATION";
935
+ target: {
936
+ issuerId: string;
937
+ applicationId: number;
938
+ platformEnvironmentId: number;
939
+ };
940
+ };
941
+ };
942
+ };
943
+ } | {
772
944
  [x: string]: unknown;
773
945
  id: string;
774
946
  applicationId: number;
@@ -1056,6 +1228,92 @@ export declare class ApplicationClient {
1056
1228
  page: number;
1057
1229
  size: number;
1058
1230
  items: ({
1231
+ [x: string]: unknown;
1232
+ id: string;
1233
+ applicationId: number;
1234
+ status: string;
1235
+ version: number;
1236
+ planDigest: string;
1237
+ predecessorId: string | null;
1238
+ createdAt: string;
1239
+ updatedAt: string;
1240
+ steps: {
1241
+ [x: string]: unknown;
1242
+ ordinal: number;
1243
+ kind: string;
1244
+ targetId: string;
1245
+ status: string;
1246
+ version: number;
1247
+ stepDigest: string;
1248
+ childEvidence?: Record<string, unknown> | null | undefined;
1249
+ }[];
1250
+ execution?: {
1251
+ [x: string]: unknown;
1252
+ status: "QUEUED" | "RETRY_WAIT" | "RUNNING" | "SUCCEEDED" | "TERMINATED" | "WAITING_MANUAL";
1253
+ currentStep?: number | null | undefined;
1254
+ attempts?: number | undefined;
1255
+ errorCode?: string | null | undefined;
1256
+ errorDetails?: Record<string, unknown> | null | undefined;
1257
+ javascriptPolicyDeletionConfirmed?: boolean | undefined;
1258
+ verifiedAt?: string | null | undefined;
1259
+ observedBundleDigest?: string | null | undefined;
1260
+ } | undefined;
1261
+ collaboration: {
1262
+ [x: string]: unknown;
1263
+ state: string;
1264
+ allowedActions: string[];
1265
+ };
1266
+ operation: "MANAGED_KEYCLOAK_IMPORT";
1267
+ plan: {
1268
+ [x: string]: unknown;
1269
+ applicationId: number;
1270
+ configurationBundle: {
1271
+ [x: string]: unknown;
1272
+ status: "BLOCKED" | "READY";
1273
+ bundleDigest: string;
1274
+ javascriptPolicyDeletionRequired?: boolean | undefined;
1275
+ objects: {
1276
+ [x: string]: unknown;
1277
+ key: string;
1278
+ kind: string;
1279
+ logicalId: string;
1280
+ action: string;
1281
+ dependencies: string[];
1282
+ desired?: unknown;
1283
+ observed?: unknown;
1284
+ baseline?: unknown;
1285
+ }[];
1286
+ differences: {
1287
+ [x: string]: unknown;
1288
+ objectKey: string;
1289
+ field: string;
1290
+ action: string;
1291
+ current?: unknown;
1292
+ desired?: unknown;
1293
+ baseline?: unknown;
1294
+ }[];
1295
+ blockers: {
1296
+ [x: string]: unknown;
1297
+ code: string;
1298
+ objectKey?: string | undefined;
1299
+ message?: string | undefined;
1300
+ }[];
1301
+ };
1302
+ managedConfiguration: {
1303
+ [x: string]: unknown;
1304
+ configuration: {
1305
+ [x: string]: unknown;
1306
+ schemaVersion: "1";
1307
+ kind: "KEYCLOAK_API_KEY_CONFIGURATION";
1308
+ target: {
1309
+ issuerId: string;
1310
+ applicationId: number;
1311
+ platformEnvironmentId: number;
1312
+ };
1313
+ };
1314
+ };
1315
+ };
1316
+ } | {
1059
1317
  [x: string]: unknown;
1060
1318
  id: string;
1061
1319
  applicationId: number;
@@ -1331,14 +1589,100 @@ export declare class ApplicationClient {
1331
1589
  };
1332
1590
  steps: {
1333
1591
  [x: string]: unknown;
1334
- kind: "CREDENTIAL_ROTATE";
1335
- targetId: string;
1592
+ kind: "CREDENTIAL_ROTATE";
1593
+ targetId: string;
1594
+ }[];
1595
+ };
1596
+ credentialOperation: Record<string, unknown>;
1597
+ })[];
1598
+ }>;
1599
+ job(jobId: string): Promise<{
1600
+ [x: string]: unknown;
1601
+ id: string;
1602
+ applicationId: number;
1603
+ status: string;
1604
+ version: number;
1605
+ planDigest: string;
1606
+ predecessorId: string | null;
1607
+ createdAt: string;
1608
+ updatedAt: string;
1609
+ steps: {
1610
+ [x: string]: unknown;
1611
+ ordinal: number;
1612
+ kind: string;
1613
+ targetId: string;
1614
+ status: string;
1615
+ version: number;
1616
+ stepDigest: string;
1617
+ childEvidence?: Record<string, unknown> | null | undefined;
1618
+ }[];
1619
+ execution?: {
1620
+ [x: string]: unknown;
1621
+ status: "QUEUED" | "RETRY_WAIT" | "RUNNING" | "SUCCEEDED" | "TERMINATED" | "WAITING_MANUAL";
1622
+ currentStep?: number | null | undefined;
1623
+ attempts?: number | undefined;
1624
+ errorCode?: string | null | undefined;
1625
+ errorDetails?: Record<string, unknown> | null | undefined;
1626
+ javascriptPolicyDeletionConfirmed?: boolean | undefined;
1627
+ verifiedAt?: string | null | undefined;
1628
+ observedBundleDigest?: string | null | undefined;
1629
+ } | undefined;
1630
+ collaboration: {
1631
+ [x: string]: unknown;
1632
+ state: string;
1633
+ allowedActions: string[];
1634
+ };
1635
+ operation: "MANAGED_KEYCLOAK_IMPORT";
1636
+ plan: {
1637
+ [x: string]: unknown;
1638
+ applicationId: number;
1639
+ configurationBundle: {
1640
+ [x: string]: unknown;
1641
+ status: "BLOCKED" | "READY";
1642
+ bundleDigest: string;
1643
+ javascriptPolicyDeletionRequired?: boolean | undefined;
1644
+ objects: {
1645
+ [x: string]: unknown;
1646
+ key: string;
1647
+ kind: string;
1648
+ logicalId: string;
1649
+ action: string;
1650
+ dependencies: string[];
1651
+ desired?: unknown;
1652
+ observed?: unknown;
1653
+ baseline?: unknown;
1654
+ }[];
1655
+ differences: {
1656
+ [x: string]: unknown;
1657
+ objectKey: string;
1658
+ field: string;
1659
+ action: string;
1660
+ current?: unknown;
1661
+ desired?: unknown;
1662
+ baseline?: unknown;
1663
+ }[];
1664
+ blockers: {
1665
+ [x: string]: unknown;
1666
+ code: string;
1667
+ objectKey?: string | undefined;
1668
+ message?: string | undefined;
1336
1669
  }[];
1337
1670
  };
1338
- credentialOperation: Record<string, unknown>;
1339
- })[];
1340
- }>;
1341
- job(jobId: string): Promise<{
1671
+ managedConfiguration: {
1672
+ [x: string]: unknown;
1673
+ configuration: {
1674
+ [x: string]: unknown;
1675
+ schemaVersion: "1";
1676
+ kind: "KEYCLOAK_API_KEY_CONFIGURATION";
1677
+ target: {
1678
+ issuerId: string;
1679
+ applicationId: number;
1680
+ platformEnvironmentId: number;
1681
+ };
1682
+ };
1683
+ };
1684
+ };
1685
+ } | {
1342
1686
  [x: string]: unknown;
1343
1687
  id: string;
1344
1688
  applicationId: number;
@@ -1621,6 +1965,92 @@ export declare class ApplicationClient {
1621
1965
  credentialOperation: Record<string, unknown>;
1622
1966
  }>;
1623
1967
  jobAction(jobId: string, action: "validate" | "cancel" | "prepare" | "review" | "apply" | "recheck" | "terminate" | "repreview" | "execute" | "resume" | "abandon", input: unknown): Promise<{
1968
+ [x: string]: unknown;
1969
+ id: string;
1970
+ applicationId: number;
1971
+ status: string;
1972
+ version: number;
1973
+ planDigest: string;
1974
+ predecessorId: string | null;
1975
+ createdAt: string;
1976
+ updatedAt: string;
1977
+ steps: {
1978
+ [x: string]: unknown;
1979
+ ordinal: number;
1980
+ kind: string;
1981
+ targetId: string;
1982
+ status: string;
1983
+ version: number;
1984
+ stepDigest: string;
1985
+ childEvidence?: Record<string, unknown> | null | undefined;
1986
+ }[];
1987
+ execution?: {
1988
+ [x: string]: unknown;
1989
+ status: "QUEUED" | "RETRY_WAIT" | "RUNNING" | "SUCCEEDED" | "TERMINATED" | "WAITING_MANUAL";
1990
+ currentStep?: number | null | undefined;
1991
+ attempts?: number | undefined;
1992
+ errorCode?: string | null | undefined;
1993
+ errorDetails?: Record<string, unknown> | null | undefined;
1994
+ javascriptPolicyDeletionConfirmed?: boolean | undefined;
1995
+ verifiedAt?: string | null | undefined;
1996
+ observedBundleDigest?: string | null | undefined;
1997
+ } | undefined;
1998
+ collaboration: {
1999
+ [x: string]: unknown;
2000
+ state: string;
2001
+ allowedActions: string[];
2002
+ };
2003
+ operation: "MANAGED_KEYCLOAK_IMPORT";
2004
+ plan: {
2005
+ [x: string]: unknown;
2006
+ applicationId: number;
2007
+ configurationBundle: {
2008
+ [x: string]: unknown;
2009
+ status: "BLOCKED" | "READY";
2010
+ bundleDigest: string;
2011
+ javascriptPolicyDeletionRequired?: boolean | undefined;
2012
+ objects: {
2013
+ [x: string]: unknown;
2014
+ key: string;
2015
+ kind: string;
2016
+ logicalId: string;
2017
+ action: string;
2018
+ dependencies: string[];
2019
+ desired?: unknown;
2020
+ observed?: unknown;
2021
+ baseline?: unknown;
2022
+ }[];
2023
+ differences: {
2024
+ [x: string]: unknown;
2025
+ objectKey: string;
2026
+ field: string;
2027
+ action: string;
2028
+ current?: unknown;
2029
+ desired?: unknown;
2030
+ baseline?: unknown;
2031
+ }[];
2032
+ blockers: {
2033
+ [x: string]: unknown;
2034
+ code: string;
2035
+ objectKey?: string | undefined;
2036
+ message?: string | undefined;
2037
+ }[];
2038
+ };
2039
+ managedConfiguration: {
2040
+ [x: string]: unknown;
2041
+ configuration: {
2042
+ [x: string]: unknown;
2043
+ schemaVersion: "1";
2044
+ kind: "KEYCLOAK_API_KEY_CONFIGURATION";
2045
+ target: {
2046
+ issuerId: string;
2047
+ applicationId: number;
2048
+ platformEnvironmentId: number;
2049
+ };
2050
+ };
2051
+ };
2052
+ };
2053
+ } | {
1624
2054
  [x: string]: unknown;
1625
2055
  id: string;
1626
2056
  applicationId: number;
@@ -2002,6 +2432,92 @@ export declare class ApplicationClient {
2002
2432
  createdAt: string;
2003
2433
  updatedAt: string;
2004
2434
  publicationJob: {
2435
+ [x: string]: unknown;
2436
+ id: string;
2437
+ applicationId: number;
2438
+ status: string;
2439
+ version: number;
2440
+ planDigest: string;
2441
+ predecessorId: string | null;
2442
+ createdAt: string;
2443
+ updatedAt: string;
2444
+ steps: {
2445
+ [x: string]: unknown;
2446
+ ordinal: number;
2447
+ kind: string;
2448
+ targetId: string;
2449
+ status: string;
2450
+ version: number;
2451
+ stepDigest: string;
2452
+ childEvidence?: Record<string, unknown> | null | undefined;
2453
+ }[];
2454
+ execution?: {
2455
+ [x: string]: unknown;
2456
+ status: "QUEUED" | "RETRY_WAIT" | "RUNNING" | "SUCCEEDED" | "TERMINATED" | "WAITING_MANUAL";
2457
+ currentStep?: number | null | undefined;
2458
+ attempts?: number | undefined;
2459
+ errorCode?: string | null | undefined;
2460
+ errorDetails?: Record<string, unknown> | null | undefined;
2461
+ javascriptPolicyDeletionConfirmed?: boolean | undefined;
2462
+ verifiedAt?: string | null | undefined;
2463
+ observedBundleDigest?: string | null | undefined;
2464
+ } | undefined;
2465
+ collaboration: {
2466
+ [x: string]: unknown;
2467
+ state: string;
2468
+ allowedActions: string[];
2469
+ };
2470
+ operation: "MANAGED_KEYCLOAK_IMPORT";
2471
+ plan: {
2472
+ [x: string]: unknown;
2473
+ applicationId: number;
2474
+ configurationBundle: {
2475
+ [x: string]: unknown;
2476
+ status: "BLOCKED" | "READY";
2477
+ bundleDigest: string;
2478
+ javascriptPolicyDeletionRequired?: boolean | undefined;
2479
+ objects: {
2480
+ [x: string]: unknown;
2481
+ key: string;
2482
+ kind: string;
2483
+ logicalId: string;
2484
+ action: string;
2485
+ dependencies: string[];
2486
+ desired?: unknown;
2487
+ observed?: unknown;
2488
+ baseline?: unknown;
2489
+ }[];
2490
+ differences: {
2491
+ [x: string]: unknown;
2492
+ objectKey: string;
2493
+ field: string;
2494
+ action: string;
2495
+ current?: unknown;
2496
+ desired?: unknown;
2497
+ baseline?: unknown;
2498
+ }[];
2499
+ blockers: {
2500
+ [x: string]: unknown;
2501
+ code: string;
2502
+ objectKey?: string | undefined;
2503
+ message?: string | undefined;
2504
+ }[];
2505
+ };
2506
+ managedConfiguration: {
2507
+ [x: string]: unknown;
2508
+ configuration: {
2509
+ [x: string]: unknown;
2510
+ schemaVersion: "1";
2511
+ kind: "KEYCLOAK_API_KEY_CONFIGURATION";
2512
+ target: {
2513
+ issuerId: string;
2514
+ applicationId: number;
2515
+ platformEnvironmentId: number;
2516
+ };
2517
+ };
2518
+ };
2519
+ };
2520
+ } | {
2005
2521
  [x: string]: unknown;
2006
2522
  id: string;
2007
2523
  applicationId: number;
@@ -2335,6 +2851,92 @@ export declare class ApplicationClient {
2335
2851
  createdAt: string;
2336
2852
  updatedAt: string;
2337
2853
  publicationJob: {
2854
+ [x: string]: unknown;
2855
+ id: string;
2856
+ applicationId: number;
2857
+ status: string;
2858
+ version: number;
2859
+ planDigest: string;
2860
+ predecessorId: string | null;
2861
+ createdAt: string;
2862
+ updatedAt: string;
2863
+ steps: {
2864
+ [x: string]: unknown;
2865
+ ordinal: number;
2866
+ kind: string;
2867
+ targetId: string;
2868
+ status: string;
2869
+ version: number;
2870
+ stepDigest: string;
2871
+ childEvidence?: Record<string, unknown> | null | undefined;
2872
+ }[];
2873
+ execution?: {
2874
+ [x: string]: unknown;
2875
+ status: "QUEUED" | "RETRY_WAIT" | "RUNNING" | "SUCCEEDED" | "TERMINATED" | "WAITING_MANUAL";
2876
+ currentStep?: number | null | undefined;
2877
+ attempts?: number | undefined;
2878
+ errorCode?: string | null | undefined;
2879
+ errorDetails?: Record<string, unknown> | null | undefined;
2880
+ javascriptPolicyDeletionConfirmed?: boolean | undefined;
2881
+ verifiedAt?: string | null | undefined;
2882
+ observedBundleDigest?: string | null | undefined;
2883
+ } | undefined;
2884
+ collaboration: {
2885
+ [x: string]: unknown;
2886
+ state: string;
2887
+ allowedActions: string[];
2888
+ };
2889
+ operation: "MANAGED_KEYCLOAK_IMPORT";
2890
+ plan: {
2891
+ [x: string]: unknown;
2892
+ applicationId: number;
2893
+ configurationBundle: {
2894
+ [x: string]: unknown;
2895
+ status: "BLOCKED" | "READY";
2896
+ bundleDigest: string;
2897
+ javascriptPolicyDeletionRequired?: boolean | undefined;
2898
+ objects: {
2899
+ [x: string]: unknown;
2900
+ key: string;
2901
+ kind: string;
2902
+ logicalId: string;
2903
+ action: string;
2904
+ dependencies: string[];
2905
+ desired?: unknown;
2906
+ observed?: unknown;
2907
+ baseline?: unknown;
2908
+ }[];
2909
+ differences: {
2910
+ [x: string]: unknown;
2911
+ objectKey: string;
2912
+ field: string;
2913
+ action: string;
2914
+ current?: unknown;
2915
+ desired?: unknown;
2916
+ baseline?: unknown;
2917
+ }[];
2918
+ blockers: {
2919
+ [x: string]: unknown;
2920
+ code: string;
2921
+ objectKey?: string | undefined;
2922
+ message?: string | undefined;
2923
+ }[];
2924
+ };
2925
+ managedConfiguration: {
2926
+ [x: string]: unknown;
2927
+ configuration: {
2928
+ [x: string]: unknown;
2929
+ schemaVersion: "1";
2930
+ kind: "KEYCLOAK_API_KEY_CONFIGURATION";
2931
+ target: {
2932
+ issuerId: string;
2933
+ applicationId: number;
2934
+ platformEnvironmentId: number;
2935
+ };
2936
+ };
2937
+ };
2938
+ };
2939
+ } | {
2338
2940
  [x: string]: unknown;
2339
2941
  id: string;
2340
2942
  applicationId: number;
@@ -344,7 +344,7 @@ export class ApplicationClient {
344
344
  if (action === "repreview")
345
345
  this.validatePublicationProtocol(result, body);
346
346
  if ((action === "execute" || action === "resume") &&
347
- (result.operation !== "IDENTITY_PUBLICATION" || !result.plan.configurationBundle || !result.execution ||
347
+ ((result.operation !== "IDENTITY_PUBLICATION" && result.operation !== "MANAGED_KEYCLOAK_IMPORT") || !result.plan.configurationBundle || !result.execution ||
348
348
  result.planDigest !== body.expectedDigest ||
349
349
  result.plan.configurationBundle.bundleDigest !== body.expectedBundleDigest))
350
350
  invalid("Configuration execution response lacks bundle or readback evidence.");