@runtypelabs/sdk 4.15.0 → 4.17.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/dist/index.d.ts CHANGED
@@ -723,6 +723,10 @@ interface paths {
723
723
  };
724
724
  tools?: {
725
725
  approval?: {
726
+ choices?: {
727
+ alwaysAllow?: boolean;
728
+ alwaysDeny?: boolean;
729
+ };
726
730
  requestReason?: boolean;
727
731
  require: string[] | boolean;
728
732
  timeout?: number;
@@ -1092,6 +1096,10 @@ interface paths {
1092
1096
  };
1093
1097
  tools?: {
1094
1098
  approval?: {
1099
+ choices?: {
1100
+ alwaysAllow?: boolean;
1101
+ alwaysDeny?: boolean;
1102
+ };
1095
1103
  requestReason?: boolean;
1096
1104
  require: string[] | boolean;
1097
1105
  timeout?: number;
@@ -1733,6 +1741,10 @@ interface paths {
1733
1741
  };
1734
1742
  tools?: {
1735
1743
  approval?: {
1744
+ choices?: {
1745
+ alwaysAllow?: boolean;
1746
+ alwaysDeny?: boolean;
1747
+ };
1736
1748
  requestReason?: boolean;
1737
1749
  require: string[] | boolean;
1738
1750
  timeout?: number;
@@ -10654,6 +10666,13 @@ interface paths {
10654
10666
  };
10655
10667
  };
10656
10668
  };
10669
+ /** @description Canonical first page (no cursor/search, includeCount=true) is unchanged since the ETag echoed in If-None-Match. No body. */
10670
+ 304: {
10671
+ headers: {
10672
+ [name: string]: unknown;
10673
+ };
10674
+ content?: never;
10675
+ };
10657
10676
  /** @description Invalid parameters */
10658
10677
  400: {
10659
10678
  headers: {
@@ -21744,6 +21763,227 @@ interface paths {
21744
21763
  patch?: never;
21745
21764
  trace?: never;
21746
21765
  };
21766
+ "/v1/products/{id}/surfaces/ensure": {
21767
+ parameters: {
21768
+ query?: never;
21769
+ header?: never;
21770
+ path?: never;
21771
+ cookie?: never;
21772
+ };
21773
+ get?: never;
21774
+ put?: never;
21775
+ /**
21776
+ * Ensure surface (config-as-code converge)
21777
+ * @description Idempotently converge a repo-defined surface definition onto a product. Identity is name + product. Hash-only probes skip the payload in the steady state (a miss is a normal 200 `definitionRequired` response, not an error); full requests create the surface or update it when the canonical content hash differs. The response always carries the server-computed canonical hash. Set dryRun to plan without writing (CI drift gate), and onConflict: "overwrite" to converge over dashboard/API edits. Surfaces have no version snapshots, so there is no publish option.
21778
+ */
21779
+ post: {
21780
+ parameters: {
21781
+ query?: never;
21782
+ header?: never;
21783
+ path: {
21784
+ id: string;
21785
+ };
21786
+ cookie?: never;
21787
+ };
21788
+ requestBody?: {
21789
+ content: {
21790
+ "application/json": {
21791
+ contentHash?: string;
21792
+ definition?: {
21793
+ behavior?: {
21794
+ [key: string]: unknown;
21795
+ };
21796
+ /** @enum {string} */
21797
+ environment?: "production" | "development";
21798
+ inbound?: {
21799
+ [key: string]: unknown;
21800
+ };
21801
+ name: string;
21802
+ outbound?: {
21803
+ [key: string]: unknown;
21804
+ };
21805
+ /** @enum {string} */
21806
+ status?: "draft" | "active" | "paused";
21807
+ /** @enum {string} */
21808
+ type: "chat" | "mcp" | "mcp_code" | "api" | "webhook" | "schedule" | "a2a" | "email" | "slack" | "sms" | "imessage" | "discord" | "whatsapp" | "telegram" | "hosted-page" | "chrome_extension";
21809
+ };
21810
+ dryRun?: boolean;
21811
+ expectedRemoteHash?: string;
21812
+ name: string;
21813
+ /** @enum {string} */
21814
+ onConflict?: "error" | "overwrite";
21815
+ };
21816
+ };
21817
+ };
21818
+ responses: {
21819
+ /** @description Converge result: unchanged | created | updated | definitionRequired (hash miss — retry with the full definition) | plan (dryRun) */
21820
+ 200: {
21821
+ headers: {
21822
+ [name: string]: unknown;
21823
+ };
21824
+ content: {
21825
+ "application/json": components["schemas"]["SurfaceEnsureResponse"];
21826
+ };
21827
+ };
21828
+ /** @description Validation error */
21829
+ 400: {
21830
+ headers: {
21831
+ [name: string]: unknown;
21832
+ };
21833
+ content: {
21834
+ "application/json": components["schemas"]["Error"];
21835
+ };
21836
+ };
21837
+ /** @description Unauthorized */
21838
+ 401: {
21839
+ headers: {
21840
+ [name: string]: unknown;
21841
+ };
21842
+ content: {
21843
+ "application/json": components["schemas"]["Error"];
21844
+ };
21845
+ };
21846
+ /** @description Plan surface limit reached for the target environment (only a create counts against the quota) */
21847
+ 402: {
21848
+ headers: {
21849
+ [name: string]: unknown;
21850
+ };
21851
+ content: {
21852
+ "application/json": components["schemas"]["Error"];
21853
+ };
21854
+ };
21855
+ /** @description Insufficient permissions */
21856
+ 403: {
21857
+ headers: {
21858
+ [name: string]: unknown;
21859
+ };
21860
+ content: {
21861
+ "application/json": components["schemas"]["Error"];
21862
+ };
21863
+ };
21864
+ /** @description Product not found */
21865
+ 404: {
21866
+ headers: {
21867
+ [name: string]: unknown;
21868
+ };
21869
+ content: {
21870
+ "application/json": components["schemas"]["Error"];
21871
+ };
21872
+ };
21873
+ /** @description Conflict: external_modification (last write was not ensure; pass onConflict: "overwrite") or remote_changed (expectedRemoteHash guard) */
21874
+ 409: {
21875
+ headers: {
21876
+ [name: string]: unknown;
21877
+ };
21878
+ content: {
21879
+ "application/json": components["schemas"]["SurfaceEnsureConflict"];
21880
+ };
21881
+ };
21882
+ /** @description Submitted contentHash does not match the server-recomputed canonical hash */
21883
+ 422: {
21884
+ headers: {
21885
+ [name: string]: unknown;
21886
+ };
21887
+ content: {
21888
+ "application/json": components["schemas"]["SurfaceEnsureHashMismatch"];
21889
+ };
21890
+ };
21891
+ /** @description Internal server error */
21892
+ 500: {
21893
+ headers: {
21894
+ [name: string]: unknown;
21895
+ };
21896
+ content: {
21897
+ "application/json": components["schemas"]["Error"];
21898
+ };
21899
+ };
21900
+ };
21901
+ };
21902
+ delete?: never;
21903
+ options?: never;
21904
+ head?: never;
21905
+ patch?: never;
21906
+ trace?: never;
21907
+ };
21908
+ "/v1/products/{id}/surfaces/pull": {
21909
+ parameters: {
21910
+ query?: never;
21911
+ header?: never;
21912
+ path?: never;
21913
+ cookie?: never;
21914
+ };
21915
+ /**
21916
+ * Pull surface definition (config-as-code)
21917
+ * @description Return the canonical config-as-code definition and provenance for a surface by name within a product — the absorb-drift direction of the ensure protocol. The contentHash is recomputed from the live surface state, so it is accurate even immediately after a dashboard edit.
21918
+ */
21919
+ get: {
21920
+ parameters: {
21921
+ query: {
21922
+ name: string;
21923
+ };
21924
+ header?: never;
21925
+ path: {
21926
+ id: string;
21927
+ };
21928
+ cookie?: never;
21929
+ };
21930
+ requestBody?: never;
21931
+ responses: {
21932
+ /** @description Canonical definition + provenance */
21933
+ 200: {
21934
+ headers: {
21935
+ [name: string]: unknown;
21936
+ };
21937
+ content: {
21938
+ "application/json": components["schemas"]["SurfacePullResponse"];
21939
+ };
21940
+ };
21941
+ /** @description Unauthorized */
21942
+ 401: {
21943
+ headers: {
21944
+ [name: string]: unknown;
21945
+ };
21946
+ content: {
21947
+ "application/json": components["schemas"]["Error"];
21948
+ };
21949
+ };
21950
+ /** @description Insufficient permissions */
21951
+ 403: {
21952
+ headers: {
21953
+ [name: string]: unknown;
21954
+ };
21955
+ content: {
21956
+ "application/json": components["schemas"]["Error"];
21957
+ };
21958
+ };
21959
+ /** @description Product not found, or no surface with that name in the product */
21960
+ 404: {
21961
+ headers: {
21962
+ [name: string]: unknown;
21963
+ };
21964
+ content: {
21965
+ "application/json": components["schemas"]["Error"];
21966
+ };
21967
+ };
21968
+ /** @description Internal server error */
21969
+ 500: {
21970
+ headers: {
21971
+ [name: string]: unknown;
21972
+ };
21973
+ content: {
21974
+ "application/json": components["schemas"]["Error"];
21975
+ };
21976
+ };
21977
+ };
21978
+ };
21979
+ put?: never;
21980
+ post?: never;
21981
+ delete?: never;
21982
+ options?: never;
21983
+ head?: never;
21984
+ patch?: never;
21985
+ trace?: never;
21986
+ };
21747
21987
  "/v1/products/{id}/surfaces/{surfaceId}": {
21748
21988
  parameters: {
21749
21989
  query?: never;
@@ -31692,7 +31932,7 @@ interface paths {
31692
31932
  patch?: never;
31693
31933
  trace?: never;
31694
31934
  };
31695
- "/v1/skills/import": {
31935
+ "/v1/skills/ensure": {
31696
31936
  parameters: {
31697
31937
  query?: never;
31698
31938
  header?: never;
@@ -31702,8 +31942,8 @@ interface paths {
31702
31942
  get?: never;
31703
31943
  put?: never;
31704
31944
  /**
31705
- * Import a SKILL.md
31706
- * @description Import a single SKILL.md document. Lands with trustLevel=imported.
31945
+ * Ensure skill (config-as-code converge)
31946
+ * @description Idempotently converge a repo-defined skill (SKILL.md manifest) onto the platform. Identity is name + account scope. Hash-only probes skip the payload in the steady state (a miss is a normal 200 `definitionRequired` response, not an error); full requests create the skill or append a new version when the canonical content hash differs. The response always carries the server-computed canonical hash + the version id. Set dryRun to plan without writing (CI drift gate), onConflict: "overwrite" to converge over dashboard/API edits, and release: "publish" to publish the converged version. Admin/control plane only — no review queue.
31707
31947
  */
31708
31948
  post: {
31709
31949
  parameters: {
@@ -31715,23 +31955,35 @@ interface paths {
31715
31955
  requestBody?: {
31716
31956
  content: {
31717
31957
  "application/json": {
31718
- markdown: string;
31958
+ contentHash?: string;
31959
+ definition?: {
31960
+ body?: string;
31961
+ frontmatter?: {
31962
+ [key: string]: unknown;
31963
+ };
31964
+ markdown?: string;
31965
+ };
31966
+ dryRun?: boolean;
31967
+ expectedRemoteHash?: string;
31968
+ name: string;
31969
+ /** @enum {string} */
31970
+ onConflict?: "error" | "overwrite";
31971
+ /** @enum {string} */
31972
+ release?: "none" | "publish";
31719
31973
  };
31720
31974
  };
31721
31975
  };
31722
31976
  responses: {
31723
- /** @description Imported */
31724
- 201: {
31977
+ /** @description Converge result: unchanged | created | updated | definitionRequired (hash miss — retry with the full definition) | plan (dryRun) */
31978
+ 200: {
31725
31979
  headers: {
31726
31980
  [name: string]: unknown;
31727
31981
  };
31728
31982
  content: {
31729
- "application/json": {
31730
- [key: string]: unknown;
31731
- };
31983
+ "application/json": components["schemas"]["SkillEnsureResponse"];
31732
31984
  };
31733
31985
  };
31734
- /** @description Invalid manifest */
31986
+ /** @description Validation error / invalid manifest */
31735
31987
  400: {
31736
31988
  headers: {
31737
31989
  [name: string]: unknown;
@@ -31758,8 +32010,26 @@ interface paths {
31758
32010
  "application/json": components["schemas"]["Error"];
31759
32011
  };
31760
32012
  };
31761
- /** @description Unsupported capability */
32013
+ /** @description Conflict: external_modification (last write was not ensure; pass onConflict: "overwrite") or remote_changed (expectedRemoteHash guard) */
32014
+ 409: {
32015
+ headers: {
32016
+ [name: string]: unknown;
32017
+ };
32018
+ content: {
32019
+ "application/json": components["schemas"]["SkillEnsureConflict"];
32020
+ };
32021
+ };
32022
+ /** @description Submitted contentHash does not match the server-recomputed canonical hash (code: content_hash_mismatch), or the manifest carries an unsupported capability such as mcpServers (code: unsupported_capability) */
31762
32023
  422: {
32024
+ headers: {
32025
+ [name: string]: unknown;
32026
+ };
32027
+ content: {
32028
+ "application/json": components["schemas"]["SkillEnsureUnprocessable"];
32029
+ };
32030
+ };
32031
+ /** @description Internal server error */
32032
+ 500: {
31763
32033
  headers: {
31764
32034
  [name: string]: unknown;
31765
32035
  };
@@ -31775,7 +32045,7 @@ interface paths {
31775
32045
  patch?: never;
31776
32046
  trace?: never;
31777
32047
  };
31778
- "/v1/skills/propose": {
32048
+ "/v1/skills/import": {
31779
32049
  parameters: {
31780
32050
  query?: never;
31781
32051
  header?: never;
@@ -31785,8 +32055,8 @@ interface paths {
31785
32055
  get?: never;
31786
32056
  put?: never;
31787
32057
  /**
31788
- * Propose a skill (deployed-agent data plane)
31789
- * @description Agent self-authoring endpoint hit by the `propose_skill` runtime tool. Review-by-default; auto-publishes only under the owner-set opt-out. NOT the admin create path.
32058
+ * Import a SKILL.md
32059
+ * @description Import a single SKILL.md document. Lands with trustLevel=imported.
31790
32060
  */
31791
32061
  post: {
31792
32062
  parameters: {
@@ -31798,20 +32068,13 @@ interface paths {
31798
32068
  requestBody?: {
31799
32069
  content: {
31800
32070
  "application/json": {
31801
- body: string;
31802
- capabilities?: {
31803
- [key: string]: unknown;
31804
- };
31805
- description: string;
31806
- name: string;
31807
- proposingAgentExecutionId: string;
31808
- proposingAgentId: string;
32071
+ markdown: string;
31809
32072
  };
31810
32073
  };
31811
32074
  };
31812
32075
  responses: {
31813
- /** @description Proposal outcome */
31814
- 200: {
32076
+ /** @description Imported */
32077
+ 201: {
31815
32078
  headers: {
31816
32079
  [name: string]: unknown;
31817
32080
  };
@@ -31839,6 +32102,15 @@ interface paths {
31839
32102
  "application/json": components["schemas"]["Error"];
31840
32103
  };
31841
32104
  };
32105
+ /** @description Insufficient permissions */
32106
+ 403: {
32107
+ headers: {
32108
+ [name: string]: unknown;
32109
+ };
32110
+ content: {
32111
+ "application/json": components["schemas"]["Error"];
32112
+ };
32113
+ };
31842
32114
  /** @description Unsupported capability */
31843
32115
  422: {
31844
32116
  headers: {
@@ -31856,6 +32128,238 @@ interface paths {
31856
32128
  patch?: never;
31857
32129
  trace?: never;
31858
32130
  };
32131
+ "/v1/skills/propose": {
32132
+ parameters: {
32133
+ query?: never;
32134
+ header?: never;
32135
+ path?: never;
32136
+ cookie?: never;
32137
+ };
32138
+ get?: never;
32139
+ put?: never;
32140
+ /**
32141
+ * Propose a skill (deployed-agent data plane)
32142
+ * @description Agent self-authoring endpoint hit by the `propose_skill` runtime tool. Review-by-default; auto-publishes only under the owner-set opt-out. NOT the admin create path.
32143
+ */
32144
+ post: {
32145
+ parameters: {
32146
+ query?: never;
32147
+ header?: never;
32148
+ path?: never;
32149
+ cookie?: never;
32150
+ };
32151
+ requestBody?: {
32152
+ content: {
32153
+ "application/json": {
32154
+ body: string;
32155
+ capabilities?: {
32156
+ [key: string]: unknown;
32157
+ };
32158
+ description: string;
32159
+ name: string;
32160
+ proposingAgentExecutionId: string;
32161
+ proposingAgentId: string;
32162
+ };
32163
+ };
32164
+ };
32165
+ responses: {
32166
+ /** @description Proposal outcome */
32167
+ 200: {
32168
+ headers: {
32169
+ [name: string]: unknown;
32170
+ };
32171
+ content: {
32172
+ "application/json": {
32173
+ [key: string]: unknown;
32174
+ };
32175
+ };
32176
+ };
32177
+ /** @description Invalid manifest */
32178
+ 400: {
32179
+ headers: {
32180
+ [name: string]: unknown;
32181
+ };
32182
+ content: {
32183
+ "application/json": components["schemas"]["Error"];
32184
+ };
32185
+ };
32186
+ /** @description Unauthorized */
32187
+ 401: {
32188
+ headers: {
32189
+ [name: string]: unknown;
32190
+ };
32191
+ content: {
32192
+ "application/json": components["schemas"]["Error"];
32193
+ };
32194
+ };
32195
+ /** @description Unsupported capability */
32196
+ 422: {
32197
+ headers: {
32198
+ [name: string]: unknown;
32199
+ };
32200
+ content: {
32201
+ "application/json": components["schemas"]["Error"];
32202
+ };
32203
+ };
32204
+ };
32205
+ };
32206
+ delete?: never;
32207
+ options?: never;
32208
+ head?: never;
32209
+ patch?: never;
32210
+ trace?: never;
32211
+ };
32212
+ "/v1/skills/pull": {
32213
+ parameters: {
32214
+ query?: never;
32215
+ header?: never;
32216
+ path?: never;
32217
+ cookie?: never;
32218
+ };
32219
+ /**
32220
+ * Pull skill definition (config-as-code)
32221
+ * @description Return the canonical config-as-code definition and provenance for a skill by name — the absorb-drift direction of the ensure protocol. The contentHash is recomputed from the live skill state, so it is accurate even immediately after a dashboard edit.
32222
+ */
32223
+ get: {
32224
+ parameters: {
32225
+ query: {
32226
+ name: string;
32227
+ };
32228
+ header?: never;
32229
+ path?: never;
32230
+ cookie?: never;
32231
+ };
32232
+ requestBody?: never;
32233
+ responses: {
32234
+ /** @description Canonical definition + provenance */
32235
+ 200: {
32236
+ headers: {
32237
+ [name: string]: unknown;
32238
+ };
32239
+ content: {
32240
+ "application/json": components["schemas"]["SkillPullResponse"];
32241
+ };
32242
+ };
32243
+ /** @description Unauthorized */
32244
+ 401: {
32245
+ headers: {
32246
+ [name: string]: unknown;
32247
+ };
32248
+ content: {
32249
+ "application/json": components["schemas"]["Error"];
32250
+ };
32251
+ };
32252
+ /** @description Insufficient permissions */
32253
+ 403: {
32254
+ headers: {
32255
+ [name: string]: unknown;
32256
+ };
32257
+ content: {
32258
+ "application/json": components["schemas"]["Error"];
32259
+ };
32260
+ };
32261
+ /** @description No skill with that name in the account scope */
32262
+ 404: {
32263
+ headers: {
32264
+ [name: string]: unknown;
32265
+ };
32266
+ content: {
32267
+ "application/json": components["schemas"]["Error"];
32268
+ };
32269
+ };
32270
+ /** @description Internal server error */
32271
+ 500: {
32272
+ headers: {
32273
+ [name: string]: unknown;
32274
+ };
32275
+ content: {
32276
+ "application/json": components["schemas"]["Error"];
32277
+ };
32278
+ };
32279
+ };
32280
+ };
32281
+ put?: never;
32282
+ post?: never;
32283
+ delete?: never;
32284
+ options?: never;
32285
+ head?: never;
32286
+ patch?: never;
32287
+ trace?: never;
32288
+ };
32289
+ "/v1/skills/scan": {
32290
+ parameters: {
32291
+ query?: never;
32292
+ header?: never;
32293
+ path?: never;
32294
+ cookie?: never;
32295
+ };
32296
+ get?: never;
32297
+ put?: never;
32298
+ /**
32299
+ * Scan a skill for malicious patterns
32300
+ * @description Statically scan a SKILL.md string (`markdown`) or structured manifest (`frontmatter` + `body`) and return a two-tier verdict (warning when suspected malicious, error when high-confidence malicious). Does not persist or gate.
32301
+ */
32302
+ post: {
32303
+ parameters: {
32304
+ query?: never;
32305
+ header?: never;
32306
+ path?: never;
32307
+ cookie?: never;
32308
+ };
32309
+ requestBody?: {
32310
+ content: {
32311
+ "application/json": {
32312
+ [key: string]: unknown;
32313
+ };
32314
+ };
32315
+ };
32316
+ responses: {
32317
+ /** @description Scan verdict */
32318
+ 200: {
32319
+ headers: {
32320
+ [name: string]: unknown;
32321
+ };
32322
+ content: {
32323
+ "application/json": {
32324
+ [key: string]: unknown;
32325
+ };
32326
+ };
32327
+ };
32328
+ /** @description Invalid manifest */
32329
+ 400: {
32330
+ headers: {
32331
+ [name: string]: unknown;
32332
+ };
32333
+ content: {
32334
+ "application/json": components["schemas"]["Error"];
32335
+ };
32336
+ };
32337
+ /** @description Unauthorized */
32338
+ 401: {
32339
+ headers: {
32340
+ [name: string]: unknown;
32341
+ };
32342
+ content: {
32343
+ "application/json": components["schemas"]["Error"];
32344
+ };
32345
+ };
32346
+ /** @description Insufficient permissions */
32347
+ 403: {
32348
+ headers: {
32349
+ [name: string]: unknown;
32350
+ };
32351
+ content: {
32352
+ "application/json": components["schemas"]["Error"];
32353
+ };
32354
+ };
32355
+ };
32356
+ };
32357
+ delete?: never;
32358
+ options?: never;
32359
+ head?: never;
32360
+ patch?: never;
32361
+ trace?: never;
32362
+ };
31859
32363
  "/v1/skills/{id}": {
31860
32364
  parameters: {
31861
32365
  query?: never;
@@ -32322,6 +32826,119 @@ interface paths {
32322
32826
  patch?: never;
32323
32827
  trace?: never;
32324
32828
  };
32829
+ "/v1/tool-approval-grants": {
32830
+ parameters: {
32831
+ query?: never;
32832
+ header?: never;
32833
+ path?: never;
32834
+ cookie?: never;
32835
+ };
32836
+ /**
32837
+ * List remembered tool-approval grants
32838
+ * @description List the authenticated owner's active cross-session "Always allow" grants. Optionally filter to a single agent with ?agentId=. A null endUserRef is an account-level grant.
32839
+ */
32840
+ get: {
32841
+ parameters: {
32842
+ query?: {
32843
+ agentId?: string;
32844
+ };
32845
+ header?: never;
32846
+ path?: never;
32847
+ cookie?: never;
32848
+ };
32849
+ requestBody?: never;
32850
+ responses: {
32851
+ /** @description Active grants */
32852
+ 200: {
32853
+ headers: {
32854
+ [name: string]: unknown;
32855
+ };
32856
+ content: {
32857
+ "application/json": {
32858
+ data: components["schemas"]["ToolApprovalGrant"][];
32859
+ };
32860
+ };
32861
+ };
32862
+ /** @description Unauthorized */
32863
+ 401: {
32864
+ headers: {
32865
+ [name: string]: unknown;
32866
+ };
32867
+ content: {
32868
+ "application/json": components["schemas"]["Error"];
32869
+ };
32870
+ };
32871
+ };
32872
+ };
32873
+ put?: never;
32874
+ post?: never;
32875
+ delete?: never;
32876
+ options?: never;
32877
+ head?: never;
32878
+ patch?: never;
32879
+ trace?: never;
32880
+ };
32881
+ "/v1/tool-approval-grants/{id}": {
32882
+ parameters: {
32883
+ query?: never;
32884
+ header?: never;
32885
+ path?: never;
32886
+ cookie?: never;
32887
+ };
32888
+ get?: never;
32889
+ put?: never;
32890
+ post?: never;
32891
+ /**
32892
+ * Revoke a remembered tool-approval grant
32893
+ * @description Revoke (soft-delete) a grant so the tool prompts for approval again on future dispatches. Ownership-scoped.
32894
+ */
32895
+ delete: {
32896
+ parameters: {
32897
+ query?: never;
32898
+ header?: never;
32899
+ path: {
32900
+ id: string;
32901
+ };
32902
+ cookie?: never;
32903
+ };
32904
+ requestBody?: never;
32905
+ responses: {
32906
+ /** @description Revoked */
32907
+ 200: {
32908
+ headers: {
32909
+ [name: string]: unknown;
32910
+ };
32911
+ content: {
32912
+ "application/json": {
32913
+ revoked: boolean;
32914
+ };
32915
+ };
32916
+ };
32917
+ /** @description Unauthorized */
32918
+ 401: {
32919
+ headers: {
32920
+ [name: string]: unknown;
32921
+ };
32922
+ content: {
32923
+ "application/json": components["schemas"]["Error"];
32924
+ };
32925
+ };
32926
+ /** @description Grant not found */
32927
+ 404: {
32928
+ headers: {
32929
+ [name: string]: unknown;
32930
+ };
32931
+ content: {
32932
+ "application/json": components["schemas"]["Error"];
32933
+ };
32934
+ };
32935
+ };
32936
+ };
32937
+ options?: never;
32938
+ head?: never;
32939
+ patch?: never;
32940
+ trace?: never;
32941
+ };
32325
32942
  "/v1/tools": {
32326
32943
  parameters: {
32327
32944
  query?: never;
@@ -34283,6 +34900,7 @@ interface paths {
34283
34900
  enableChromeSurface: boolean;
34284
34901
  enableDashboardAssistant: boolean;
34285
34902
  enableRuntypeApps: boolean;
34903
+ enableSkillScanner: boolean;
34286
34904
  productGeneratorModel: string;
34287
34905
  };
34288
34906
  id: string;
@@ -34853,6 +35471,10 @@ interface components {
34853
35471
  };
34854
35472
  tools?: {
34855
35473
  approval?: {
35474
+ choices?: {
35475
+ alwaysAllow?: boolean;
35476
+ alwaysDeny?: boolean;
35477
+ };
34856
35478
  requestReason?: boolean;
34857
35479
  require: string[] | boolean;
34858
35480
  timeout?: number;
@@ -35619,6 +36241,7 @@ interface components {
35619
36241
  /** @enum {string} */
35620
36242
  type: "flow_start";
35621
36243
  } | {
36244
+ claudeManagedAgentId?: string;
35622
36245
  completedAt?: string;
35623
36246
  completedSteps?: number;
35624
36247
  duration?: number;
@@ -36103,6 +36726,7 @@ interface components {
36103
36726
  /** @enum {string} */
36104
36727
  type: "flow_start";
36105
36728
  } | {
36729
+ claudeManagedAgentId?: string;
36106
36730
  completedAt?: string;
36107
36731
  completedSteps?: number;
36108
36732
  duration?: number;
@@ -36552,6 +37176,47 @@ interface components {
36552
37176
  op: "eq" | "neq" | "gt" | "gte" | "lt" | "lte" | "between" | "contains" | "startsWith" | "endsWith" | "in" | "notIn" | "isSet" | "isNotSet" | "isTrue" | "isFalse" | "withinLastDays" | "olderThanDays";
36553
37177
  value?: unknown;
36554
37178
  };
37179
+ SkillEnsureConflict: {
37180
+ /** @enum {string} */
37181
+ code: "external_modification" | "remote_changed";
37182
+ currentHash?: string | null;
37183
+ error: string;
37184
+ lastModifiedSource?: string;
37185
+ modifiedAt?: string | null;
37186
+ };
37187
+ SkillEnsureHashMismatch: {
37188
+ /** @enum {string} */
37189
+ code: "content_hash_mismatch";
37190
+ /** @description The server-computed canonical hash of the submitted manifest. */
37191
+ contentHash: string;
37192
+ error: string;
37193
+ };
37194
+ SkillEnsureResponse: {
37195
+ /** @description Server-computed canonical content hash. Clients should echo this hash in probes. */
37196
+ contentHash: string;
37197
+ /** @enum {string} */
37198
+ result: "unchanged" | "created" | "updated";
37199
+ skillId: string;
37200
+ versionId: string | null;
37201
+ } | {
37202
+ /** @enum {string} */
37203
+ result: "definitionRequired";
37204
+ } | {
37205
+ changedKeys: string[];
37206
+ /** @enum {string} */
37207
+ changes: "none" | "create" | "update";
37208
+ contentHash: string;
37209
+ remoteHash?: string;
37210
+ /** @enum {string} */
37211
+ result: "plan";
37212
+ skillId?: string;
37213
+ };
37214
+ SkillEnsureUnprocessable: components["schemas"]["SkillEnsureHashMismatch"] | components["schemas"]["SkillEnsureUnsupportedCapability"];
37215
+ SkillEnsureUnsupportedCapability: {
37216
+ /** @enum {string} */
37217
+ code: "unsupported_capability";
37218
+ error: string;
37219
+ };
36555
37220
  SkillProposal: {
36556
37221
  createdAt: string;
36557
37222
  id: string;
@@ -36564,6 +37229,89 @@ interface components {
36564
37229
  skillVersionId: string;
36565
37230
  status: string;
36566
37231
  };
37232
+ SkillPullResponse: {
37233
+ contentHash: string;
37234
+ definition: {
37235
+ manifest: {
37236
+ [key: string]: unknown;
37237
+ };
37238
+ name: string;
37239
+ };
37240
+ lastModifiedSource: string | null;
37241
+ skillId: string;
37242
+ updatedAt: string | null;
37243
+ versionId: string | null;
37244
+ };
37245
+ SurfaceEnsureConflict: {
37246
+ /** @enum {string} */
37247
+ code: "external_modification" | "remote_changed";
37248
+ currentHash?: string | null;
37249
+ error: string;
37250
+ lastModifiedSource?: string;
37251
+ modifiedAt?: string | null;
37252
+ };
37253
+ SurfaceEnsureHashMismatch: {
37254
+ /** @enum {string} */
37255
+ code: "content_hash_mismatch";
37256
+ /** @description The server-computed canonical hash of the submitted definition. */
37257
+ contentHash: string;
37258
+ error: string;
37259
+ };
37260
+ SurfaceEnsureResponse: {
37261
+ /** @description Server-computed canonical content hash. Clients should echo this hash in probes. */
37262
+ contentHash: string;
37263
+ /** @enum {string} */
37264
+ result: "unchanged" | "created" | "updated";
37265
+ surfaceId: string;
37266
+ } | {
37267
+ /** @enum {string} */
37268
+ result: "definitionRequired";
37269
+ } | {
37270
+ changedKeys: string[];
37271
+ /** @enum {string} */
37272
+ changes: "none" | "create" | "update";
37273
+ contentHash: string;
37274
+ remoteHash?: string;
37275
+ /** @enum {string} */
37276
+ result: "plan";
37277
+ surfaceId?: string;
37278
+ };
37279
+ SurfacePullResponse: {
37280
+ contentHash: string;
37281
+ definition: {
37282
+ behavior?: {
37283
+ [key: string]: unknown;
37284
+ };
37285
+ /** @enum {string} */
37286
+ environment?: "production" | "development";
37287
+ inbound?: {
37288
+ [key: string]: unknown;
37289
+ };
37290
+ name: string;
37291
+ outbound?: {
37292
+ [key: string]: unknown;
37293
+ };
37294
+ /** @enum {string} */
37295
+ status?: "draft" | "active" | "paused";
37296
+ /** @enum {string} */
37297
+ type: "chat" | "mcp" | "mcp_code" | "api" | "webhook" | "schedule" | "a2a" | "email" | "slack" | "sms" | "imessage" | "discord" | "whatsapp" | "telegram" | "hosted-page" | "chrome_extension";
37298
+ };
37299
+ lastModifiedSource: string | null;
37300
+ surfaceId: string;
37301
+ updatedAt: string | null;
37302
+ };
37303
+ ToolApprovalGrant: {
37304
+ agentId: string;
37305
+ createdAt: string;
37306
+ decision: string;
37307
+ endUserRef: string | null;
37308
+ expiresAt: string | null;
37309
+ id: string;
37310
+ sourceApprovalId: string | null;
37311
+ sourceExecutionId: string | null;
37312
+ toolName: string;
37313
+ toolType: string;
37314
+ };
36567
37315
  ToolEnsureConflict: {
36568
37316
  /** @enum {string} */
36569
37317
  code: "external_modification" | "remote_changed";
@@ -36922,7 +37670,7 @@ interface FetchUrlStepConfig$1 {
36922
37670
  [key: string]: any;
36923
37671
  };
36924
37672
  /** Error handling configuration - supports simple mode or fallback chains */
36925
- errorHandling?: ErrorHandlingMode | ContextErrorHandling;
37673
+ errorHandling?: ContextErrorHandling;
36926
37674
  defaultValue?: unknown;
36927
37675
  streamOutput?: boolean;
36928
37676
  enabled?: boolean;
@@ -36951,7 +37699,7 @@ interface CrawlStepConfig$1 {
36951
37699
  jsonOptions?: Record<string, unknown>;
36952
37700
  outputVariable?: string;
36953
37701
  streamOutput?: boolean;
36954
- errorHandling?: ErrorHandlingMode | ContextErrorHandling;
37702
+ errorHandling?: ContextErrorHandling;
36955
37703
  pollIntervalMs?: number;
36956
37704
  completionTimeoutMs?: number;
36957
37705
  defaultValue?: unknown;
@@ -36974,7 +37722,7 @@ interface TransformDataStepConfig$1 {
36974
37722
  networkAccess?: 'off' | 'on' | {
36975
37723
  allowedHostnames: string[];
36976
37724
  };
36977
- errorHandling?: ErrorHandlingMode | ContextErrorHandling;
37725
+ errorHandling?: ContextErrorHandling;
36978
37726
  defaultValue?: unknown;
36979
37727
  tools?: {
36980
37728
  toolIds?: string[];
@@ -37026,7 +37774,7 @@ interface SearchStepConfig$1 {
37026
37774
  outputVariable?: string;
37027
37775
  returnCitations?: boolean;
37028
37776
  /** Error handling configuration - supports simple mode or fallback chains */
37029
- errorHandling?: ErrorHandlingMode | ContextErrorHandling;
37777
+ errorHandling?: ContextErrorHandling;
37030
37778
  streamOutput?: boolean;
37031
37779
  enabled?: boolean;
37032
37780
  /** JavaScript predicate evaluated at runtime. If falsy, the step is skipped. */
@@ -37049,7 +37797,7 @@ interface SendEmailStepConfig$1 {
37049
37797
  }>;
37050
37798
  outputVariable?: string;
37051
37799
  /** Error handling configuration - supports simple mode or fallback chains */
37052
- errorHandling?: ErrorHandlingMode | ContextErrorHandling;
37800
+ errorHandling?: ContextErrorHandling;
37053
37801
  defaultValue?: unknown;
37054
37802
  streamOutput?: boolean;
37055
37803
  enabled?: boolean;
@@ -37114,7 +37862,7 @@ interface UpsertRecordStepConfig$1 {
37114
37862
  mergeStrategy?: 'merge' | 'replace';
37115
37863
  outputVariable?: string;
37116
37864
  /** Error handling configuration - supports simple mode or fallback chains */
37117
- errorHandling?: ErrorHandlingMode | ContextErrorHandling;
37865
+ errorHandling?: ContextErrorHandling;
37118
37866
  streamOutput?: boolean;
37119
37867
  enabled?: boolean;
37120
37868
  /** JavaScript predicate evaluated at runtime. If falsy, the step is skipped. */
@@ -37176,7 +37924,7 @@ interface WaitUntilStepConfig$1 {
37176
37924
  };
37177
37925
  outputVariable?: string;
37178
37926
  /** Error handling configuration - supports simple mode or fallback chains */
37179
- errorHandling?: ErrorHandlingMode | ContextErrorHandling;
37927
+ errorHandling?: ContextErrorHandling;
37180
37928
  streamOutput?: boolean;
37181
37929
  enabled?: boolean;
37182
37930
  /** JavaScript predicate evaluated at runtime. If falsy, the step is skipped. */
@@ -37189,7 +37937,7 @@ interface SendEventStepConfig$1 {
37189
37937
  properties?: Record<string, any>;
37190
37938
  outputVariable?: string;
37191
37939
  /** Error handling configuration - supports simple mode or fallback chains */
37192
- errorHandling?: ErrorHandlingMode | ContextErrorHandling;
37940
+ errorHandling?: ContextErrorHandling;
37193
37941
  streamOutput?: boolean;
37194
37942
  enabled?: boolean;
37195
37943
  /** JavaScript predicate evaluated at runtime. If falsy, the step is skipped. */
@@ -37202,7 +37950,7 @@ interface SendTextStepConfig$1 {
37202
37950
  message: string;
37203
37951
  outputVariable?: string;
37204
37952
  /** Error handling configuration - supports simple mode or fallback chains */
37205
- errorHandling?: ErrorHandlingMode | ContextErrorHandling;
37953
+ errorHandling?: ContextErrorHandling;
37206
37954
  streamOutput?: boolean;
37207
37955
  enabled?: boolean;
37208
37956
  /** JavaScript predicate evaluated at runtime. If falsy, the step is skipped. */
@@ -40025,6 +40773,144 @@ declare class PromptsNamespace {
40025
40773
  delete(promptId: string): Promise<void>;
40026
40774
  }
40027
40775
 
40776
+ /**
40777
+ * Skill config-as-code: `defineSkill`, `skills.ensure`, `skills.pull`.
40778
+ *
40779
+ * The deploy-time convergence postcondition for Agent Skills: "make the
40780
+ * platform's definition of this skill match this manifest; no-op if it already
40781
+ * does." Identity is name + account scope (the API key's org, else personal);
40782
+ * environment is whichever API the client points at. `ensure` never deletes,
40783
+ * and renaming a manifest orphans the old skill and creates a new one.
40784
+ *
40785
+ * This is the admin/control-plane converge — API scopes only, no review queue.
40786
+ * It is NOT the deployed-agent `propose_skill` data plane.
40787
+ *
40788
+ * Wire protocol (POST /v1/skills/ensure — APQ-shaped, both APQ scars fixed):
40789
+ * 1. Hash-only probe `{ name, contentHash }`. A match is
40790
+ * `{ result: 'unchanged' }`; a miss is a NORMAL 200
40791
+ * `{ result: 'definitionRequired' }`, never an error.
40792
+ * 2. On a miss, retry with the full `definition`. The server recomputes the
40793
+ * canonical hash itself and returns it on every response — this SDK echoes
40794
+ * the server's hash (memoized per client instance) rather than trusting its
40795
+ * own serialization.
40796
+ *
40797
+ * Like agents/flows (and unlike tools), skills HAVE version snapshots: every
40798
+ * change appends an immutable version, the result carries a `versionId`, and
40799
+ * `release: 'publish'` re-aims the published-version pointer.
40800
+ *
40801
+ * The content hash is the canonical skill hash (`computeSkillContentHash` —
40802
+ * mirrored from `packages/shared/src/utils/skill-content-hash.ts`; this package
40803
+ * is dependency-free by convention) over the manifest `{ frontmatter (name
40804
+ * excluded), runtype, body }`. `name` is identity, not content.
40805
+ *
40806
+ * See docs/adr/0003-agent-config-as-code-ensure.md for the design rationale.
40807
+ */
40808
+
40809
+ interface SkillContentInput {
40810
+ /** Identity — excluded from the hash. */
40811
+ name: string;
40812
+ manifest: SkillManifest | Record<string, unknown>;
40813
+ }
40814
+ /** Canonical normalized form of a skill manifest (frontmatter name excluded). */
40815
+ declare function normalizeSkillDefinition(definition: SkillContentInput): {
40816
+ frontmatter: Record<string, unknown>;
40817
+ runtype: Record<string, unknown>;
40818
+ body: string;
40819
+ };
40820
+ /** SHA-256 (hex) over the canonical normalized skill manifest. */
40821
+ declare function computeSkillContentHash(definition: SkillContentInput): Promise<string>;
40822
+ /** `defineSkill` input: identity (name) + the convergeable manifest content. */
40823
+ interface DefineSkillInput {
40824
+ name: string;
40825
+ manifest: SkillManifest;
40826
+ }
40827
+ /** The canonical (wire) definition produced by `defineSkill`. */
40828
+ interface SkillDefinition {
40829
+ name: string;
40830
+ manifest: SkillManifest;
40831
+ }
40832
+ /**
40833
+ * Pure-local declarative constructor for a skill definition. No I/O. Validates
40834
+ * structure, rejects unknown fields, and asserts the manifest's frontmatter
40835
+ * name matches the identity name. Deep validation (capability gate, length
40836
+ * limits) happens server-side at ensure time, mirroring the create/update
40837
+ * routes.
40838
+ *
40839
+ * @example
40840
+ * ```typescript
40841
+ * const reviewer = defineSkill({
40842
+ * name: 'code_reviewer',
40843
+ * manifest: {
40844
+ * frontmatter: { name: 'code_reviewer', description: 'Reviews pull requests' },
40845
+ * runtype: { trustLevel: 'org' },
40846
+ * body: '# Code Reviewer\n\nReview the diff for bugs...',
40847
+ * },
40848
+ * })
40849
+ * ```
40850
+ */
40851
+ declare function defineSkill(input: DefineSkillInput): SkillDefinition;
40852
+ interface EnsureSkillOptions {
40853
+ /** Plan without writing (the CI drift gate). Sends the full definition. */
40854
+ dryRun?: boolean;
40855
+ /**
40856
+ * What to do when the skill's last write came from the dashboard/API rather
40857
+ * than ensure. Default 'error' (HTTP 409 → SkillEnsureConflictError).
40858
+ */
40859
+ onConflict?: 'error' | 'overwrite';
40860
+ /** 'publish' also re-aims the published-version pointer. Default 'none'. */
40861
+ release?: 'none' | 'publish';
40862
+ /**
40863
+ * TOCTOU guard binding a dry run to its apply: the write only proceeds if the
40864
+ * remote still hashes to this value (409 remote_changed otherwise).
40865
+ */
40866
+ expectedRemoteHash?: string;
40867
+ /** Implies dryRun; throws SkillDriftError unless the plan is 'none'. */
40868
+ expectNoChanges?: boolean;
40869
+ }
40870
+ interface EnsureSkillConverged {
40871
+ result: 'unchanged' | 'created' | 'updated';
40872
+ skillId: string;
40873
+ versionId: string | null;
40874
+ /** The server-computed canonical hash (echo this — never your own). */
40875
+ contentHash: string;
40876
+ }
40877
+ interface EnsureSkillPlan {
40878
+ result: 'plan';
40879
+ changes: 'none' | 'create' | 'update';
40880
+ changedKeys: string[];
40881
+ contentHash: string;
40882
+ remoteHash?: string;
40883
+ skillId?: string;
40884
+ }
40885
+ type EnsureSkillResult = EnsureSkillConverged | EnsureSkillPlan;
40886
+ interface SkillPullResult {
40887
+ skillId: string;
40888
+ definition: SkillDefinition;
40889
+ contentHash: string;
40890
+ lastModifiedSource: string | null;
40891
+ updatedAt: string | null;
40892
+ versionId: string | null;
40893
+ }
40894
+ /** A 409 from the ensure protocol (external_modification or remote_changed). */
40895
+ declare class SkillEnsureConflictError extends Error {
40896
+ readonly code: 'external_modification' | 'remote_changed';
40897
+ readonly lastModifiedSource?: string;
40898
+ readonly modifiedAt?: string | null;
40899
+ readonly currentHash?: string | null;
40900
+ constructor(body: {
40901
+ error?: string;
40902
+ code: 'external_modification' | 'remote_changed';
40903
+ lastModifiedSource?: string;
40904
+ modifiedAt?: string | null;
40905
+ currentHash?: string | null;
40906
+ });
40907
+ }
40908
+ /** Thrown by `ensure(def, { expectNoChanges: true })` when drift is detected. */
40909
+ declare class SkillDriftError extends Error {
40910
+ readonly plan: EnsureSkillPlan;
40911
+ constructor(plan: EnsureSkillPlan);
40912
+ }
40913
+
40028
40914
  /**
40029
40915
  * SkillsNamespace — admin/control-plane operations for Agent Skills.
40030
40916
  *
@@ -40221,6 +41107,43 @@ interface SkillManifestInput {
40221
41107
  }
40222
41108
  /** A skill create/update payload — either a SKILL.md string or a manifest. */
40223
41109
  type SkillWriteInput = SkillMarkdownInput | SkillManifestInput;
41110
+ /** Per-finding tier surfaced to the user. */
41111
+ interface SkillScanFinding {
41112
+ ruleId: string;
41113
+ category: string | null;
41114
+ severity: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
41115
+ confidence: number;
41116
+ tier: 'warning' | 'error';
41117
+ hardBlock: boolean;
41118
+ message: string;
41119
+ file: string;
41120
+ startLine: number;
41121
+ remediation: string | null;
41122
+ }
41123
+ /** Two-tier verdict over a skill scan. `tier` is authoritative. */
41124
+ interface SkillScanVerdict {
41125
+ tier: 'clean' | 'warning' | 'error';
41126
+ riskScore: number;
41127
+ riskSeverity: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
41128
+ recommendation: 'SAFE' | 'CAUTION' | 'DO_NOT_INSTALL';
41129
+ errors: SkillScanFinding[];
41130
+ warnings: SkillScanFinding[];
41131
+ summary: string;
41132
+ scannerVersion: string;
41133
+ verdictVersion: number;
41134
+ }
41135
+ /** The `POST /v1/skills/scan` response. */
41136
+ interface SkillScanResult {
41137
+ status: 'passed' | 'warning' | 'blocked' | 'scanner_error';
41138
+ verdict: SkillScanVerdict;
41139
+ reportBody: string;
41140
+ scannerVersion: string;
41141
+ completedAt: string;
41142
+ error?: {
41143
+ code: string;
41144
+ message: string;
41145
+ };
41146
+ }
40224
41147
  /** Options for binding a skill to an agent. */
40225
41148
  interface BindSkillInput {
40226
41149
  agentId: string;
@@ -40381,6 +41304,19 @@ declare class SkillsNamespace {
40381
41304
  * ```
40382
41305
  */
40383
41306
  publishVersion(skillId: string, versionId: string): Promise<void>;
41307
+ /**
41308
+ * Statically scan a SKILL.md document for malicious patterns and return a
41309
+ * two-tier verdict — `warning` when a skill appears suspicious (low–medium
41310
+ * confidence), `error` when high-confidence malicious. Does not persist or
41311
+ * gate; use it as a "scan before save" affordance.
41312
+ *
41313
+ * @example
41314
+ * ```typescript
41315
+ * const { verdict } = await Runtype.skills.scan(skillMarkdown)
41316
+ * if (verdict.tier === 'error') console.warn(verdict.summary)
41317
+ * ```
41318
+ */
41319
+ scan(markdown: string): Promise<SkillScanResult>;
40384
41320
  /**
40385
41321
  * Import a single SKILL.md document. The imported skill lands with
40386
41322
  * `trustLevel: 'imported'` and a draft version.
@@ -40409,6 +41345,36 @@ declare class SkillsNamespace {
40409
41345
  * ```
40410
41346
  */
40411
41347
  listBindings(agentId: string): Promise<AgentSkillBinding[]>;
41348
+ /**
41349
+ * Idempotently converge a `defineSkill` definition onto the platform.
41350
+ * Hash-first: the steady state is one tiny probe request. Creates or appends a
41351
+ * new version; never deletes. Identity is name + account scope. Pass
41352
+ * `release: 'publish'` to publish the converged version.
41353
+ *
41354
+ * @example
41355
+ * ```typescript
41356
+ * const reviewer = defineSkill({
41357
+ * name: 'code_reviewer',
41358
+ * manifest: {
41359
+ * frontmatter: { name: 'code_reviewer', description: 'Reviews pull requests' },
41360
+ * runtype: { trustLevel: 'org' },
41361
+ * body: '# Code Reviewer\n\nReview the diff...',
41362
+ * },
41363
+ * })
41364
+ *
41365
+ * // Converge + publish (CI/deploy).
41366
+ * const result = await Runtype.skills.ensure(reviewer, { release: 'publish' })
41367
+ *
41368
+ * // PR drift gate.
41369
+ * await Runtype.skills.ensure(reviewer, { expectNoChanges: true })
41370
+ * ```
41371
+ */
41372
+ ensure(definition: SkillDefinition, options?: EnsureSkillOptions): Promise<EnsureSkillResult>;
41373
+ /**
41374
+ * Pull the canonical definition + provenance for a skill by name — the
41375
+ * absorb-drift direction of the ensure protocol.
41376
+ */
41377
+ pull(name: string): Promise<SkillPullResult>;
40412
41378
  }
40413
41379
 
40414
41380
  /**
@@ -41025,6 +41991,201 @@ declare class ProductsNamespace {
41025
41991
  pull(name: string): Promise<ProductPullResult>;
41026
41992
  }
41027
41993
 
41994
+ /**
41995
+ * Surface config-as-code: `defineSurface`, `surfaces.ensure`, `surfaces.pull`.
41996
+ *
41997
+ * The deploy-time convergence postcondition for product surfaces: "make the
41998
+ * platform's definition of this surface match this object; no-op if it already
41999
+ * does." Surfaces are PRODUCT-scoped: identity is (productId, name) — NOT
42000
+ * account scope. `ensure` never deletes, and renaming a definition orphans the
42001
+ * old surface and creates a new one.
42002
+ *
42003
+ * Wire protocol (POST /v1/products/{id}/surfaces/ensure — APQ-shaped, both APQ
42004
+ * scars fixed):
42005
+ * 1. Hash-only probe `{ name, contentHash }`. A match is
42006
+ * `{ result: 'unchanged' }`; a miss is a NORMAL 200
42007
+ * `{ result: 'definitionRequired' }`, never an error.
42008
+ * 2. On a miss, retry with the full `definition`. The server recomputes the
42009
+ * canonical hash itself and returns it on every response — this SDK echoes
42010
+ * the server's hash (memoized per client instance) rather than trusting
42011
+ * its own serialization.
42012
+ *
42013
+ * Unlike agents/flows, surfaces have NO version snapshots: there is no
42014
+ * `release: 'publish'` option and no `versionId` on the result.
42015
+ *
42016
+ * The content hash is the canonical surface hash (`computeSurfaceContentHash` —
42017
+ * mirrored from `packages/shared/src/utils/surface-content-hash.ts`; this
42018
+ * package is dependency-free by convention) over `{ type, behavior, status,
42019
+ * environment }`. `name` is identity, not content, so it is excluded; `inbound` /
42020
+ * `outbound` are also EXCLUDED — they carry sealed secrets that hash
42021
+ * non-deterministically against the stored row (see `normalizeSurfaceDefinition`).
42022
+ *
42023
+ * See docs/adr/0003-agent-config-as-code-ensure.md for the design rationale.
42024
+ */
42025
+
42026
+ /**
42027
+ * Canonical normalized form of a surface definition (name excluded — identity).
42028
+ * `inbound` / `outbound` are EXCLUDED — they carry sealed secrets that hash
42029
+ * non-deterministically against the stored row. MUST stay in sync with the
42030
+ * canonical copy in @runtypelabs/shared (utils/surface-content-hash.ts).
42031
+ */
42032
+ declare function normalizeSurfaceDefinition(definition: SurfaceContentInput): {
42033
+ type: string;
42034
+ behavior: Record<string, unknown>;
42035
+ status: string;
42036
+ environment: string;
42037
+ };
42038
+ /** SHA-256 (hex) over the canonical normalized surface definition. */
42039
+ declare function computeSurfaceContentHash(definition: SurfaceContentInput): Promise<string>;
42040
+ interface SurfaceContentInput {
42041
+ type: string;
42042
+ behavior?: Record<string, unknown> | null;
42043
+ inbound?: Record<string, unknown> | null;
42044
+ outbound?: Record<string, unknown> | null;
42045
+ status?: string | null;
42046
+ environment?: string | null;
42047
+ }
42048
+ /** The surface types `ensure` accepts (mirrors the server's createSurfaceSchema). */
42049
+ type SurfaceDefinitionType = 'chat' | 'mcp' | 'mcp_code' | 'api' | 'webhook' | 'schedule' | 'a2a' | 'email' | 'slack' | 'sms' | 'imessage' | 'discord' | 'whatsapp' | 'telegram' | 'hosted-page' | 'chrome_extension';
42050
+ type SurfaceDefinitionStatus = 'draft' | 'active' | 'paused';
42051
+ type SurfaceDefinitionEnvironment = 'production' | 'development';
42052
+ /** `defineSurface` input: identity (name) + the convergeable content fields. */
42053
+ interface DefineSurfaceInput {
42054
+ name: string;
42055
+ type: SurfaceDefinitionType;
42056
+ behavior?: Record<string, unknown>;
42057
+ inbound?: Record<string, unknown>;
42058
+ outbound?: Record<string, unknown>;
42059
+ status?: SurfaceDefinitionStatus;
42060
+ environment?: SurfaceDefinitionEnvironment;
42061
+ }
42062
+ /** The canonical (wire) definition produced by `defineSurface`. */
42063
+ interface SurfaceDefinition {
42064
+ name: string;
42065
+ type: SurfaceDefinitionType;
42066
+ behavior?: Record<string, unknown>;
42067
+ inbound?: Record<string, unknown>;
42068
+ outbound?: Record<string, unknown>;
42069
+ status?: SurfaceDefinitionStatus;
42070
+ environment?: SurfaceDefinitionEnvironment;
42071
+ }
42072
+ /**
42073
+ * Pure-local declarative constructor for a surface definition. No I/O.
42074
+ * Validates structure and rejects unknown fields. Deep validation (credential
42075
+ * sealing, prerelease-type-in-production guard) happens server-side at ensure
42076
+ * time, mirroring the create/update routes.
42077
+ *
42078
+ * @example
42079
+ * ```typescript
42080
+ * const chat = defineSurface({
42081
+ * name: 'Support Chat',
42082
+ * type: 'chat',
42083
+ * behavior: { type: 'chat', greeting: 'Hi there!' },
42084
+ * status: 'active',
42085
+ * })
42086
+ * ```
42087
+ */
42088
+ declare function defineSurface(input: DefineSurfaceInput): SurfaceDefinition;
42089
+ interface EnsureSurfaceOptions {
42090
+ /** Plan without writing (the CI drift gate). Sends the full definition. */
42091
+ dryRun?: boolean;
42092
+ /**
42093
+ * What to do when the surface's last write came from the dashboard/API
42094
+ * rather than ensure. Default 'error' (HTTP 409 → SurfaceEnsureConflictError).
42095
+ */
42096
+ onConflict?: 'error' | 'overwrite';
42097
+ /**
42098
+ * TOCTOU guard binding a dry run to its apply: the write only proceeds if
42099
+ * the remote still hashes to this value (409 remote_changed otherwise).
42100
+ */
42101
+ expectedRemoteHash?: string;
42102
+ /** Implies dryRun; throws SurfaceDriftError unless the plan is 'none'. */
42103
+ expectNoChanges?: boolean;
42104
+ }
42105
+ interface EnsureSurfaceConverged {
42106
+ result: 'unchanged' | 'created' | 'updated';
42107
+ surfaceId: string;
42108
+ /** The server-computed canonical hash (echo this — never your own). */
42109
+ contentHash: string;
42110
+ }
42111
+ interface EnsureSurfacePlan {
42112
+ result: 'plan';
42113
+ changes: 'none' | 'create' | 'update';
42114
+ changedKeys: string[];
42115
+ contentHash: string;
42116
+ remoteHash?: string;
42117
+ surfaceId?: string;
42118
+ }
42119
+ type EnsureSurfaceResult = EnsureSurfaceConverged | EnsureSurfacePlan;
42120
+ interface SurfacePullResult {
42121
+ surfaceId: string;
42122
+ definition: SurfaceDefinition;
42123
+ contentHash: string;
42124
+ lastModifiedSource: string | null;
42125
+ updatedAt: string | null;
42126
+ }
42127
+ /** A 409 from the ensure protocol (external_modification or remote_changed). */
42128
+ declare class SurfaceEnsureConflictError extends Error {
42129
+ readonly code: 'external_modification' | 'remote_changed';
42130
+ readonly lastModifiedSource?: string;
42131
+ readonly modifiedAt?: string | null;
42132
+ readonly currentHash?: string | null;
42133
+ constructor(body: {
42134
+ error?: string;
42135
+ code: 'external_modification' | 'remote_changed';
42136
+ lastModifiedSource?: string;
42137
+ modifiedAt?: string | null;
42138
+ currentHash?: string | null;
42139
+ });
42140
+ }
42141
+ /** Thrown by `ensure(def, { expectNoChanges: true })` when drift is detected. */
42142
+ declare class SurfaceDriftError extends Error {
42143
+ readonly plan: EnsureSurfacePlan;
42144
+ constructor(plan: EnsureSurfacePlan);
42145
+ }
42146
+
42147
+ /**
42148
+ * SurfacesNamespace — config-as-code operations for product surfaces.
42149
+ *
42150
+ * `surfaces.ensure` is the deploy-time, non-executing converge (create-or-update
42151
+ * a surface by name within a product); `surfaces.pull` is the absorb-drift
42152
+ * direction. Both delegate to the implementation in `surfaces-ensure.ts`.
42153
+ *
42154
+ * Surfaces are PRODUCT-scoped: every operation takes the owning `productId`.
42155
+ */
42156
+
42157
+ declare class SurfacesNamespace {
42158
+ private getClient;
42159
+ constructor(getClient: () => RuntypeClient$1);
42160
+ /**
42161
+ * Idempotently converge a `defineSurface` definition onto a product.
42162
+ * Hash-first: the steady state is one tiny probe request. Creates or updates
42163
+ * the surface; never deletes. Identity is name + product.
42164
+ *
42165
+ * @example
42166
+ * ```typescript
42167
+ * const chat = defineSurface({
42168
+ * name: 'Support Chat',
42169
+ * type: 'chat',
42170
+ * behavior: { type: 'chat', greeting: 'Hi there!' },
42171
+ * status: 'active',
42172
+ * })
42173
+ *
42174
+ * // Converge (CI/deploy).
42175
+ * const result = await Runtype.surfaces.ensure('product_abc', chat)
42176
+ *
42177
+ * // PR drift gate.
42178
+ * await Runtype.surfaces.ensure('product_abc', chat, { expectNoChanges: true })
42179
+ * ```
42180
+ */
42181
+ ensure(productId: string, definition: SurfaceDefinition, options?: EnsureSurfaceOptions): Promise<EnsureSurfaceResult>;
42182
+ /**
42183
+ * Pull the canonical definition + provenance for a surface by name within a
42184
+ * product — the absorb-drift direction of the ensure protocol.
42185
+ */
42186
+ pull(productId: string, name: string): Promise<SurfacePullResult>;
42187
+ }
42188
+
41028
42189
  /**
41029
42190
  * Runtype - The unified SDK client for building and executing flows, batches, evals, and prompts
41030
42191
  *
@@ -41355,6 +42516,33 @@ declare class Runtype {
41355
42516
  * ```
41356
42517
  */
41357
42518
  static get products(): ProductsNamespace;
42519
+ /**
42520
+ * Config-as-code operations for product surfaces. `surfaces.ensure` is the
42521
+ * deploy-time, non-executing converge (create-or-update a surface by name
42522
+ * within a product); `surfaces.pull` is the absorb-drift direction.
42523
+ *
42524
+ * @example
42525
+ * ```typescript
42526
+ * import { Runtype, defineSurface } from '@runtypelabs/sdk'
42527
+ *
42528
+ * const chat = defineSurface({
42529
+ * name: 'Support Chat',
42530
+ * type: 'chat',
42531
+ * behavior: { type: 'chat', greeting: 'Hi there!' },
42532
+ * status: 'active',
42533
+ * })
42534
+ *
42535
+ * // Converge at deploy time (idempotent; one tiny probe in steady state)
42536
+ * await Runtype.surfaces.ensure('product_abc', chat)
42537
+ *
42538
+ * // CI drift gate
42539
+ * await Runtype.surfaces.ensure('product_abc', chat, { expectNoChanges: true })
42540
+ *
42541
+ * // Absorb a dashboard edit back into the repo
42542
+ * const { definition } = await Runtype.surfaces.pull('product_abc', 'Support Chat')
42543
+ * ```
42544
+ */
42545
+ static get surfaces(): SurfacesNamespace;
41358
42546
  }
41359
42547
 
41360
42548
  /**
@@ -44055,6 +45243,45 @@ interface UpdateAppRequest {
44055
45243
  visibility?: 'public' | 'unlisted';
44056
45244
  status?: 'active' | 'suspended';
44057
45245
  }
45246
+ /**
45247
+ * Tool approval grant (cross-session "Always allow") returned by the grants
45248
+ * API. A null `endUserRef` is an account-level grant.
45249
+ */
45250
+ interface ToolApprovalGrant {
45251
+ id: string;
45252
+ agentId: string;
45253
+ endUserRef: string | null;
45254
+ toolType: string;
45255
+ toolName: string;
45256
+ decision: string;
45257
+ sourceExecutionId: string | null;
45258
+ sourceApprovalId: string | null;
45259
+ createdAt: string;
45260
+ expiresAt: string | null;
45261
+ }
45262
+ /**
45263
+ * Tool Approval Grants API
45264
+ *
45265
+ * Manage cross-session "Always allow" tool-approval grants: list the
45266
+ * authenticated owner's remembered approvals and revoke them so the tool
45267
+ * prompts for approval again on future dispatches.
45268
+ */
45269
+ declare class ToolApprovalGrantsEndpoint {
45270
+ private client;
45271
+ constructor(client: ApiClient);
45272
+ /**
45273
+ * List active remembered tool-approval grants for the authenticated owner,
45274
+ * optionally filtered to a single agent.
45275
+ */
45276
+ list(agentId?: string): Promise<ToolApprovalGrant[]>;
45277
+ /**
45278
+ * Revoke (soft-delete) a remembered grant so the tool prompts for approval
45279
+ * again on future dispatches.
45280
+ */
45281
+ revoke(id: string): Promise<{
45282
+ revoked: boolean;
45283
+ }>;
45284
+ }
44058
45285
  /**
44059
45286
  * Apps endpoint handlers — Runtype Apps are hosted AI apps served at
44060
45287
  * {slug}-{shortId}.runtype.run. Deploy = upload a version (zip), then
@@ -44154,6 +45381,19 @@ interface RunWithLocalToolsOptions {
44154
45381
  * Automatically transforms field names between camelCase (client) and snake_case (API)
44155
45382
  * to provide an idiomatic JavaScript/TypeScript experience while maintaining API consistency.
44156
45383
  */
45384
+ /**
45385
+ * Result of a conditional GET ({@link RuntypeClient.getConditional}). `304`
45386
+ * surfaces as `notModified: true` (no body) rather than throwing; `200` returns
45387
+ * the parsed `data` plus the server's fresh `etag`.
45388
+ */
45389
+ type ConditionalGetResult<T> = {
45390
+ notModified: true;
45391
+ etag: string | null;
45392
+ } | {
45393
+ notModified: false;
45394
+ etag: string | null;
45395
+ data: T;
45396
+ };
44157
45397
  declare class RuntypeClient implements ApiClient {
44158
45398
  private baseUrl;
44159
45399
  private apiVersion;
@@ -44185,6 +45425,7 @@ declare class RuntypeClient implements ApiClient {
44185
45425
  flowVersions: FlowVersionsEndpoint;
44186
45426
  integrations: IntegrationsEndpoint;
44187
45427
  billing: BillingEndpoint;
45428
+ toolApprovalGrants: ToolApprovalGrantsEndpoint;
44188
45429
  constructor(config?: ClientConfig);
44189
45430
  /**
44190
45431
  * Set the API key for authentication
@@ -44226,6 +45467,16 @@ declare class RuntypeClient implements ApiClient {
44226
45467
  * Generic GET request
44227
45468
  */
44228
45469
  get<T>(path: string, params?: Record<string, unknown>): Promise<T>;
45470
+ /**
45471
+ * Conditional GET (`ETag` / `If-None-Match`).
45472
+ *
45473
+ * Unlike {@link get}, this does NOT throw on `304` — it surfaces the not-modified
45474
+ * outcome so callers can keep their cached copy. Used by the dashboard's primary
45475
+ * lists to revalidate the canonical first page in a single round trip on both
45476
+ * the changed and unchanged paths. The `304` path returns no body; the `200`
45477
+ * path returns the parsed body plus the server's fresh `ETag`.
45478
+ */
45479
+ getConditional<T>(path: string, params?: Record<string, unknown>, ifNoneMatch?: string | null): Promise<ConditionalGetResult<T>>;
44229
45480
  /**
44230
45481
  * Generic POST request
44231
45482
  */
@@ -44261,6 +45512,15 @@ declare class RuntypeClient implements ApiClient {
44261
45512
  /**
44262
45513
  * Make HTTP request with timeout and error handling
44263
45514
  */
45515
+ /**
45516
+ * Run a fetch under the client timeout and return the raw `Response`. Maps a
45517
+ * timeout-driven `AbortError` to a descriptive timeout `Error`; does NOT inspect
45518
+ * status, so callers decide how to treat non-2xx (throw, intercept `304`, etc.).
45519
+ *
45520
+ * `makeRawRequest` keeps its own variant: it additionally composes a
45521
+ * caller-supplied `signal` (user-initiated stream aborts) with the timeout.
45522
+ */
45523
+ private fetchWithTimeout;
44264
45524
  private makeRequest;
44265
45525
  /**
44266
45526
  * Make HTTP request that returns raw Response (for streaming)
@@ -45753,4 +47013,4 @@ declare function getLikelySupportingCandidatePaths(bestCandidatePath: string | u
45753
47013
  declare function getDefaultPlanPath(taskName: string): string;
45754
47014
  declare function sanitizeTaskSlug(taskName: string): string;
45755
47015
 
45756
- export { type Agent, type AgentApprovalCompleteEvent, type AgentApprovalStartEvent, type AgentCompleteEvent, type AgentDefinition, type AgentDefinitionConfig, AgentDriftError, AgentEnsureConflictError, type AgentErrorEvent, type AgentEvent, type AgentEventType, type AgentExecuteRequest, type AgentExecuteResponse, type AgentIterationCompleteEvent, type AgentIterationStartEvent, type AgentMediaEvent, type AgentMessage, type AgentPausedEvent, type AgentPingEvent, type AgentPullResult, type AgentReflectionEvent, type AgentRuntimeToolDefinition, type AgentStartEvent, type AgentStreamCallbacks, type AgentStreamEvent, type AgentSubagentConfig, type AgentToolCompleteEvent, type AgentToolDeltaEvent, type AgentToolInputCompleteEvent, type AgentToolInputDeltaEvent, type AgentToolStartEvent, type AgentTurnCompleteEvent, type AgentTurnDeltaEvent, type AgentTurnStartEvent, type AgentVersionDetail, type AgentVersionListItem, type AgentVersionPublishResponse, AgentVersionsEndpoint, type AgentVersionsListResponse, AgentsEndpoint, AgentsNamespace, AnalyticsEndpoint, type ApiClient, type ApiKey, ApiKeysEndpoint, type ApiResponse, type App, type AppManifest, type AppVersion, type ApplyGeneratedProposalOptions, type ApplyGeneratedProposalResult, AppsEndpoint, type AssetReferenceContentPart, type AttachRuntimeToolsOptions, type BaseAgentEvent, BatchBuilder, type BatchClient, type BatchListParams, type BatchOptions, type BatchRequest, type BatchResult, type BatchScheduleConfig, type BatchStatus, BatchesNamespace, BillingEndpoint, type BillingSpendAnalyticsParams, type BindSkillInput, type BuiltInTool, type BulkEditCondition, type BulkEditRequest, type BulkEditResponse, type BulkEditResult, ChatEndpoint, ClientBatchBuilder, type ClientConfig, type ClientConversation, ClientEvalBuilder, ClientFlowBuilder, type ClientToken, type ClientTokenConfig, type ClientTokenEnvironment, type ClientTokenVersionPin, ClientTokensEndpoint, type ClientToolDefinition, type ClientWidgetTheme, type ConditionalStepConfig$1 as ConditionalStepConfig, type ContextErrorHandling, type ContextFallback, ContextTemplatesEndpoint, type Conversation, type ConversationListItem, type ConversationListParams, type ConversationMessage, type ConversationSource, ConversationsEndpoint, type ConversationsListResponse, type CreateApiKeyRequest, type CreateAppRequest, type CreateClientTokenRequest, type CreateClientTokenResponse, type CreateConversationRequest, type CreateFlowRequest, type CreateModelConfigRequest, type CreatePromptData, type CreatePromptRequest, type CreateProviderKeyRequest, type CreateRecordRequest, type CreateScheduleRequest, type CreateSecretRequest, type CreateToolRequest, type CustomMCPServer, type CustomMCPServerAuth, type CustomToolConfig, DEFAULT_RECOVERY_AFTER_EMPTY_SESSIONS, DEFAULT_STALL_STOP_AFTER, type DefineAgentInput, type DefineFlowInput, type DefineProductInput, type DefineToolInput, type DeployCfSandboxRequest, type DeployCfSandboxResponse, type DeploySandboxRequest, type DeploySandboxResponse, type DiscoveredModel, type DispatchClient, DispatchEndpoint, type DispatchEnvironment, type DispatchEvent, type DispatchOptions$1 as DispatchOptions, type DispatchRequest, type EnsureAgentConverged, type EnsureAgentOptions, type EnsureAgentPlan, type EnsureAgentResult, type EnsureFlowConverged, type EnsureFlowOptions, type EnsureFlowPlan, type EnsureFlowResult, type EnsureProductConverged, type EnsureProductOptions, type EnsureProductPlan, type EnsureProductResult, type EnsureToolConverged, type EnsureToolOptions, type EnsureToolPlan, type EnsureToolResult, type ErrorHandlingMode, EvalBuilder, type EvalClient, EvalEndpoint, type EvalListParams, type EvalOptions, type EvalRecord, type EvalRequest, type EvalResult, type EvalRunConfig, EvalRunner, type EvalStatus, EvalsNamespace, type ExecuteToolRequest, type ExecuteToolResponse, type ExternalAgentContext, type ExternalToolConfig, type FallbackFailEvent, type FallbackStartEvent, type FallbackSuccessEvent, type FallbackTrigger, type FallbackTriggerType, type FallbacksExhaustedEvent, type FallbacksInitiatedEvent, type FetchGitHubStepConfig$1 as FetchGitHubStepConfig, type FetchUrlStepConfig$1 as FetchUrlStepConfig, type FieldFormat, type FileContentPart, type Flow, type FlowAttachment, FlowBuilder, type FlowCompleteEvent, type FlowConfig$1 as FlowConfig, type FlowDefinition, type FlowDefinitionStep, FlowDriftError, FlowEnsureConflictError, type FlowErrorEvent, type FlowFallback, type FlowListItem, type FlowPausedEvent, type FlowPullResult, FlowResult, type FlowStartEvent, type FlowStep, type FlowStepDefinition, type FlowStepType, FlowStepsEndpoint, type FlowStreamEvent, type FlowSummary, type FlowToolConfig, type FlowValidationClient, type FlowValidationIssue, type FlowValidationResult, type FlowVersionDetail, type FlowVersionListItem, type FlowVersionPublishResponse, FlowVersionsEndpoint, type FlowVersionsListResponse, FlowsEndpoint, FlowsNamespace, type GenerateEmbeddingStepConfig$1 as GenerateEmbeddingStepConfig, type GeneratedRuntimeToolGateDecision, type GeneratedRuntimeToolGateOptions, type ImageContentPart, type Integration, type IntegrationTool, IntegrationsEndpoint, type IntegrationsListResponse, type JSONSchema, type JsonArray, type JsonObject, type JsonPrimitive, type JsonValue, LEDGER_ARTIFACT_LINE_PREFIX, type ListConversationsResponse, type ListParams, type LocalToolConfig, type LocalToolDefinition, type LocalToolExecutionCompleteEvent, type LocalToolExecutionLoopSnapshotSlice, type LocalToolExecutionStartEvent, type LogEntry, type LogQueryParams, type LogQueryResponse, type LogQueryResult, type LogStatsParams, type LogStatsResponse, type LogStatsResult, LogsEndpoint, type Message$1 as Message, type MessageContent, type MessageFallback, type Metadata, type ModelConfig, ModelConfigsEndpoint, type ModelFallback, type ModelOverride, type ModelUsageDetail, type ModelUsageQueryParams, type ModelUsageResponse, type ModelUsageSummary, type ModelUsageTimeSeries, type PaginationResponse, type ProductDefinition, ProductDriftError, ProductEnsureConflictError, type ProductPullResult, ProductsNamespace, type Prompt$1 as Prompt, type PromptErrorHandling, type PromptFallback, type PromptListParams, type PromptRunOptions, PromptRunner, type PromptStepConfig$1 as PromptStepConfig, PromptsEndpoint, PromptsNamespace, type ProviderApiKey, type ProviderKeyModel, ProviderKeysEndpoint, type ReasoningConfig, type ReasoningContentPart, type ReasoningValue, type RecordConfig$1 as RecordConfig, type RecordCostAggregation, type RecordCostModelBreakdown, type RecordFilter, type RecordFilterCondition, type RecordFilterGroup, type RecordFilterOperator, type RecordListItem, type RecordListParams, type RecordStepResult, type RecordStepResultsParams, type RecordStepResultsResponse, type RecordWriteResponse, RecordsEndpoint, type RetrieveRecordStepConfig$1 as RetrieveRecordStepConfig, type RetryFallback, type RunTaskContextBudgetBreakdown, type RunTaskContextCompactionEvent, type RunTaskContextCompactionStrategy, type RunTaskContextNoticeEvent, type RunTaskContextSummaryEntry, type RunTaskContinuation, type RunTaskOffloadRecorder, type RunTaskOnContextCompaction, type RunTaskOnContextNotice, type RunTaskOnSession, type RunTaskOptions, type RunTaskResult, type RunTaskResumeState, type RunTaskSessionSummary, type RunTaskState, type RunTaskStateSlice, type RunTaskStatus, type RunTaskToolTraceSlice, type RuntimeCustomToolConfig, type RuntimeExternalToolConfig, type RuntimeFlowToolConfig, type RuntimeLocalToolConfig, type RuntimeSubagentToolConfig, type RuntimeTool, type RuntimeToolConfig, Runtype, type AgentSkillBinding as RuntypeAgentSkillBinding, RuntypeApiError, RuntypeClient, type ConditionalStepConfig as RuntypeConditionalStepConfig, type RuntypeConfig, type FetchGitHubStepConfig as RuntypeFetchGitHubStepConfig, type FetchUrlStepConfig as RuntypeFetchUrlStepConfig, RuntypeFlowBuilder, type FlowConfig as RuntypeFlowConfig, type GenerateEmbeddingStepConfig as RuntypeGenerateEmbeddingStepConfig, type Message as RuntypeMessage, type ModelOverride$1 as RuntypeModelOverride, type Prompt as RuntypePrompt, type PromptStepConfig as RuntypePromptStepConfig, type RuntypeRecord, type RecordConfig as RuntypeRecordConfig, type RetrieveRecordStepConfig as RuntypeRetrieveRecordStepConfig, type SearchStepConfig as RuntypeSearchStepConfig, type SendEmailStepConfig as RuntypeSendEmailStepConfig, type SendEventStepConfig as RuntypeSendEventStepConfig, type SendStreamStepConfig as RuntypeSendStreamStepConfig, type SendTextStepConfig as RuntypeSendTextStepConfig, type SetVariableStepConfig as RuntypeSetVariableStepConfig, type Skill as RuntypeSkill, type SkillCapabilities as RuntypeSkillCapabilities, type SkillFrontmatter as RuntypeSkillFrontmatter, type SkillManifest as RuntypeSkillManifest, type SkillProposal as RuntypeSkillProposal, type SkillRuntypeExtensions as RuntypeSkillRuntypeExtensions, type SkillVersion as RuntypeSkillVersion, type TransformDataStepConfig as RuntypeTransformDataStepConfig, type UpsertFlowConfig as RuntypeUpsertFlowConfig, type UpsertRecordStepConfig as RuntypeUpsertRecordStepConfig, type VectorSearchStepConfig as RuntypeVectorSearchStepConfig, type WaitUntilStepConfig as RuntypeWaitUntilStepConfig, STEP_FIELD_REGISTRY, STEP_TYPE_TO_METHOD, type Schedule, type ScheduleExecutionOptions, type ScheduleListParams, type ScheduleMessage, type ScheduleMessageSet, type ScheduleMessages, type ScheduleMutationResponse, type ScheduleRun, type ScheduleRunNowResponse, type ScheduleStatusResponse, type ScheduleTarget, type ScheduleTrigger, SchedulesEndpoint, type SearchStepConfig$1 as SearchStepConfig, type Secret, type SecretCheckResponse, type SecretDeleteResponse, type SecretSetupUrlRequest, type SecretSetupUrlResponse, SecretsEndpoint, type SendEmailStepConfig$1 as SendEmailStepConfig, type SendEventStepConfig$1 as SendEventStepConfig, type SendStreamStepConfig$1 as SendStreamStepConfig, type SendTextStepConfig$1 as SendTextStepConfig, type SetVariableStepConfig$1 as SetVariableStepConfig, type SkillListPage, type SkillListPagination, type SkillListParams, type SkillManifestInput, type SkillMarkdownInput, type SkillOrigin, type SkillProposalStatus, SkillProposalsNamespace, type SkillStatus, type SkillTrustLevel, type SkillVersionStatus, type SkillWithVersion, type SkillWriteInput, SkillsNamespace, type SlackInstallRequest, type StepCompleteEvent, type StepDeltaEvent, type StepFallback, type StepFieldMeta, type StepStartEvent, type StepWaitingLocalEvent, type StreamCallbacks, type StreamEvent, type StreamEventOf, type SubagentToolConfig, type Surface, type SurfaceListParams, SurfacesEndpoint, type TextContentPart, type Tool, type ToolConfig, type ToolDefinition, type ToolDefinitionType, ToolDriftError, ToolEnsureConflictError, type ToolPullResult, type ToolWithValidation, type ToolsConfig, ToolsEndpoint, ToolsNamespace, type TransformDataStepConfig$1 as TransformDataStepConfig, type UpdateAppRequest, type UpdateClientTokenRequest, type UpdateConversationRequest, type UpdatePromptData, type UpdateProviderKeyRequest, type UpdateScheduleRequest, type UpdateSecretRequest, type UpdateToolRequest, type UpdatedFlow, type UpsertFlowConfig$1 as UpsertFlowConfig, type UpsertOptions, type UpsertRecordStepConfig$1 as UpsertRecordStepConfig, type UserProfile, UsersEndpoint, type VectorSearchStepConfig$1 as VectorSearchStepConfig, type VersionType, type WaitUntilStepConfig$1 as WaitUntilStepConfig, type WorkflowCompileDeps, type WorkflowCompletionCriteriaConfig, type WorkflowConfig, type WorkflowConfigFactory, type WorkflowContext, type WorkflowDefinition, type WorkflowHookEntry, type WorkflowHookKind, type WorkflowHookRef, type WorkflowHookSignatures, type WorkflowMilestoneConfig, type WorkflowPhase, type WorkflowPolicyConfig, type WorkflowRecoveryConfig, type WorkflowSlot, type WorkflowStallPolicy, applyGeneratedRuntimeToolProposalToDispatchRequest, attachRuntimeToolsToDispatchRequest, buildEmptySessionNudge, buildGeneratedRuntimeToolGateOutput, buildLedgerOffloadReference, buildPolicyGuidance, buildSendViewOffloadMarker, compileWorkflowConfig, computeAgentContentHash, computeFlowContentHash, computeProductContentHash, computeToolContentHash, createClient, createExternalTool, defaultWorkflow, defaultWorkflowConfig, defineAgent, defineFlow, definePlaybook, defineProduct, defineTool, deployWorkflow, ensureDefaultWorkflowHooks, evaluateGeneratedRuntimeToolProposal, extractDeclaredToolResultChars, gameWorkflow, getDefaultPlanPath, getLikelySupportingCandidatePaths, interpolateWorkflowTemplate, isDiscoveryToolName, isMarathonArtifactPath, isPreservationSensitiveTask, isWorkflowHookRef, listWorkflowHooks, normalizeAgentDefinition, normalizeCandidatePath, normalizeProductDefinition, normalizeToolDefinition, parseFinalBuffer, parseLedgerArtifactRelativePath, parseOffloadedOutputId, parseSSEChunk, processStream, registerWorkflowHook, resolveStallStopAfter, resolveWorkflowHook, sanitizeTaskSlug, shouldInjectEmptySessionNudge, shouldRequestModelEscalation, streamEvents, unregisterWorkflowHook };
47016
+ export { type Agent, type AgentApprovalCompleteEvent, type AgentApprovalStartEvent, type AgentCompleteEvent, type AgentDefinition, type AgentDefinitionConfig, AgentDriftError, AgentEnsureConflictError, type AgentErrorEvent, type AgentEvent, type AgentEventType, type AgentExecuteRequest, type AgentExecuteResponse, type AgentIterationCompleteEvent, type AgentIterationStartEvent, type AgentMediaEvent, type AgentMessage, type AgentPausedEvent, type AgentPingEvent, type AgentPullResult, type AgentReflectionEvent, type AgentRuntimeToolDefinition, type AgentStartEvent, type AgentStreamCallbacks, type AgentStreamEvent, type AgentSubagentConfig, type AgentToolCompleteEvent, type AgentToolDeltaEvent, type AgentToolInputCompleteEvent, type AgentToolInputDeltaEvent, type AgentToolStartEvent, type AgentTurnCompleteEvent, type AgentTurnDeltaEvent, type AgentTurnStartEvent, type AgentVersionDetail, type AgentVersionListItem, type AgentVersionPublishResponse, AgentVersionsEndpoint, type AgentVersionsListResponse, AgentsEndpoint, AgentsNamespace, AnalyticsEndpoint, type ApiClient, type ApiKey, ApiKeysEndpoint, type ApiResponse, type App, type AppManifest, type AppVersion, type ApplyGeneratedProposalOptions, type ApplyGeneratedProposalResult, AppsEndpoint, type AssetReferenceContentPart, type AttachRuntimeToolsOptions, type BaseAgentEvent, BatchBuilder, type BatchClient, type BatchListParams, type BatchOptions, type BatchRequest, type BatchResult, type BatchScheduleConfig, type BatchStatus, BatchesNamespace, BillingEndpoint, type BillingSpendAnalyticsParams, type BindSkillInput, type BuiltInTool, type BulkEditCondition, type BulkEditRequest, type BulkEditResponse, type BulkEditResult, ChatEndpoint, ClientBatchBuilder, type ClientConfig, type ClientConversation, ClientEvalBuilder, ClientFlowBuilder, type ClientToken, type ClientTokenConfig, type ClientTokenEnvironment, type ClientTokenVersionPin, ClientTokensEndpoint, type ClientToolDefinition, type ClientWidgetTheme, type ConditionalGetResult, type ConditionalStepConfig$1 as ConditionalStepConfig, type ContextErrorHandling, type ContextFallback, ContextTemplatesEndpoint, type Conversation, type ConversationListItem, type ConversationListParams, type ConversationMessage, type ConversationSource, ConversationsEndpoint, type ConversationsListResponse, type CreateApiKeyRequest, type CreateAppRequest, type CreateClientTokenRequest, type CreateClientTokenResponse, type CreateConversationRequest, type CreateFlowRequest, type CreateModelConfigRequest, type CreatePromptData, type CreatePromptRequest, type CreateProviderKeyRequest, type CreateRecordRequest, type CreateScheduleRequest, type CreateSecretRequest, type CreateToolRequest, type CustomMCPServer, type CustomMCPServerAuth, type CustomToolConfig, DEFAULT_RECOVERY_AFTER_EMPTY_SESSIONS, DEFAULT_STALL_STOP_AFTER, type DefineAgentInput, type DefineFlowInput, type DefineProductInput, type DefineSkillInput, type DefineSurfaceInput, type DefineToolInput, type DeployCfSandboxRequest, type DeployCfSandboxResponse, type DeploySandboxRequest, type DeploySandboxResponse, type DiscoveredModel, type DispatchClient, DispatchEndpoint, type DispatchEnvironment, type DispatchEvent, type DispatchOptions$1 as DispatchOptions, type DispatchRequest, type EnsureAgentConverged, type EnsureAgentOptions, type EnsureAgentPlan, type EnsureAgentResult, type EnsureFlowConverged, type EnsureFlowOptions, type EnsureFlowPlan, type EnsureFlowResult, type EnsureProductConverged, type EnsureProductOptions, type EnsureProductPlan, type EnsureProductResult, type EnsureSkillConverged, type EnsureSkillOptions, type EnsureSkillPlan, type EnsureSkillResult, type EnsureSurfaceConverged, type EnsureSurfaceOptions, type EnsureSurfacePlan, type EnsureSurfaceResult, type EnsureToolConverged, type EnsureToolOptions, type EnsureToolPlan, type EnsureToolResult, type ErrorHandlingMode, EvalBuilder, type EvalClient, EvalEndpoint, type EvalListParams, type EvalOptions, type EvalRecord, type EvalRequest, type EvalResult, type EvalRunConfig, EvalRunner, type EvalStatus, EvalsNamespace, type ExecuteToolRequest, type ExecuteToolResponse, type ExternalAgentContext, type ExternalToolConfig, type FallbackFailEvent, type FallbackStartEvent, type FallbackSuccessEvent, type FallbackTrigger, type FallbackTriggerType, type FallbacksExhaustedEvent, type FallbacksInitiatedEvent, type FetchGitHubStepConfig$1 as FetchGitHubStepConfig, type FetchUrlStepConfig$1 as FetchUrlStepConfig, type FieldFormat, type FileContentPart, type Flow, type FlowAttachment, FlowBuilder, type FlowCompleteEvent, type FlowConfig$1 as FlowConfig, type FlowDefinition, type FlowDefinitionStep, FlowDriftError, FlowEnsureConflictError, type FlowErrorEvent, type FlowFallback, type FlowListItem, type FlowPausedEvent, type FlowPullResult, FlowResult, type FlowStartEvent, type FlowStep, type FlowStepDefinition, type FlowStepType, FlowStepsEndpoint, type FlowStreamEvent, type FlowSummary, type FlowToolConfig, type FlowValidationClient, type FlowValidationIssue, type FlowValidationResult, type FlowVersionDetail, type FlowVersionListItem, type FlowVersionPublishResponse, FlowVersionsEndpoint, type FlowVersionsListResponse, FlowsEndpoint, FlowsNamespace, type GenerateEmbeddingStepConfig$1 as GenerateEmbeddingStepConfig, type GeneratedRuntimeToolGateDecision, type GeneratedRuntimeToolGateOptions, type ImageContentPart, type Integration, type IntegrationTool, IntegrationsEndpoint, type IntegrationsListResponse, type JSONSchema, type JsonArray, type JsonObject, type JsonPrimitive, type JsonValue, LEDGER_ARTIFACT_LINE_PREFIX, type ListConversationsResponse, type ListParams, type LocalToolConfig, type LocalToolDefinition, type LocalToolExecutionCompleteEvent, type LocalToolExecutionLoopSnapshotSlice, type LocalToolExecutionStartEvent, type LogEntry, type LogQueryParams, type LogQueryResponse, type LogQueryResult, type LogStatsParams, type LogStatsResponse, type LogStatsResult, LogsEndpoint, type Message$1 as Message, type MessageContent, type MessageFallback, type Metadata, type ModelConfig, ModelConfigsEndpoint, type ModelFallback, type ModelOverride, type ModelUsageDetail, type ModelUsageQueryParams, type ModelUsageResponse, type ModelUsageSummary, type ModelUsageTimeSeries, type PaginationResponse, type ProductDefinition, ProductDriftError, ProductEnsureConflictError, type ProductPullResult, ProductsNamespace, type Prompt$1 as Prompt, type PromptErrorHandling, type PromptFallback, type PromptListParams, type PromptRunOptions, PromptRunner, type PromptStepConfig$1 as PromptStepConfig, PromptsEndpoint, PromptsNamespace, type ProviderApiKey, type ProviderKeyModel, ProviderKeysEndpoint, type ReasoningConfig, type ReasoningContentPart, type ReasoningValue, type RecordConfig$1 as RecordConfig, type RecordCostAggregation, type RecordCostModelBreakdown, type RecordFilter, type RecordFilterCondition, type RecordFilterGroup, type RecordFilterOperator, type RecordListItem, type RecordListParams, type RecordStepResult, type RecordStepResultsParams, type RecordStepResultsResponse, type RecordWriteResponse, RecordsEndpoint, type RetrieveRecordStepConfig$1 as RetrieveRecordStepConfig, type RetryFallback, type RunTaskContextBudgetBreakdown, type RunTaskContextCompactionEvent, type RunTaskContextCompactionStrategy, type RunTaskContextNoticeEvent, type RunTaskContextSummaryEntry, type RunTaskContinuation, type RunTaskOffloadRecorder, type RunTaskOnContextCompaction, type RunTaskOnContextNotice, type RunTaskOnSession, type RunTaskOptions, type RunTaskResult, type RunTaskResumeState, type RunTaskSessionSummary, type RunTaskState, type RunTaskStateSlice, type RunTaskStatus, type RunTaskToolTraceSlice, type RuntimeCustomToolConfig, type RuntimeExternalToolConfig, type RuntimeFlowToolConfig, type RuntimeLocalToolConfig, type RuntimeSubagentToolConfig, type RuntimeTool, type RuntimeToolConfig, Runtype, type AgentSkillBinding as RuntypeAgentSkillBinding, RuntypeApiError, RuntypeClient, type ConditionalStepConfig as RuntypeConditionalStepConfig, type RuntypeConfig, type FetchGitHubStepConfig as RuntypeFetchGitHubStepConfig, type FetchUrlStepConfig as RuntypeFetchUrlStepConfig, RuntypeFlowBuilder, type FlowConfig as RuntypeFlowConfig, type GenerateEmbeddingStepConfig as RuntypeGenerateEmbeddingStepConfig, type Message as RuntypeMessage, type ModelOverride$1 as RuntypeModelOverride, type Prompt as RuntypePrompt, type PromptStepConfig as RuntypePromptStepConfig, type RuntypeRecord, type RecordConfig as RuntypeRecordConfig, type RetrieveRecordStepConfig as RuntypeRetrieveRecordStepConfig, type SearchStepConfig as RuntypeSearchStepConfig, type SendEmailStepConfig as RuntypeSendEmailStepConfig, type SendEventStepConfig as RuntypeSendEventStepConfig, type SendStreamStepConfig as RuntypeSendStreamStepConfig, type SendTextStepConfig as RuntypeSendTextStepConfig, type SetVariableStepConfig as RuntypeSetVariableStepConfig, type Skill as RuntypeSkill, type SkillCapabilities as RuntypeSkillCapabilities, type SkillFrontmatter as RuntypeSkillFrontmatter, type SkillManifest as RuntypeSkillManifest, type SkillProposal as RuntypeSkillProposal, type SkillRuntypeExtensions as RuntypeSkillRuntypeExtensions, type SkillScanFinding as RuntypeSkillScanFinding, type SkillScanResult as RuntypeSkillScanResult, type SkillScanVerdict as RuntypeSkillScanVerdict, type SkillVersion as RuntypeSkillVersion, type TransformDataStepConfig as RuntypeTransformDataStepConfig, type UpsertFlowConfig as RuntypeUpsertFlowConfig, type UpsertRecordStepConfig as RuntypeUpsertRecordStepConfig, type VectorSearchStepConfig as RuntypeVectorSearchStepConfig, type WaitUntilStepConfig as RuntypeWaitUntilStepConfig, STEP_FIELD_REGISTRY, STEP_TYPE_TO_METHOD, type Schedule, type ScheduleExecutionOptions, type ScheduleListParams, type ScheduleMessage, type ScheduleMessageSet, type ScheduleMessages, type ScheduleMutationResponse, type ScheduleRun, type ScheduleRunNowResponse, type ScheduleStatusResponse, type ScheduleTarget, type ScheduleTrigger, SchedulesEndpoint, type SearchStepConfig$1 as SearchStepConfig, type Secret, type SecretCheckResponse, type SecretDeleteResponse, type SecretSetupUrlRequest, type SecretSetupUrlResponse, SecretsEndpoint, type SendEmailStepConfig$1 as SendEmailStepConfig, type SendEventStepConfig$1 as SendEventStepConfig, type SendStreamStepConfig$1 as SendStreamStepConfig, type SendTextStepConfig$1 as SendTextStepConfig, type SetVariableStepConfig$1 as SetVariableStepConfig, type SkillDefinition, SkillDriftError, SkillEnsureConflictError, type SkillListPage, type SkillListPagination, type SkillListParams, type SkillManifestInput, type SkillMarkdownInput, type SkillOrigin, type SkillProposalStatus, SkillProposalsNamespace, type SkillPullResult, type SkillStatus, type SkillTrustLevel, type SkillVersionStatus, type SkillWithVersion, type SkillWriteInput, SkillsNamespace, type SlackInstallRequest, type StepCompleteEvent, type StepDeltaEvent, type StepFallback, type StepFieldMeta, type StepStartEvent, type StepWaitingLocalEvent, type StreamCallbacks, type StreamEvent, type StreamEventOf, type SubagentToolConfig, type Surface, type SurfaceDefinition, type SurfaceDefinitionEnvironment, type SurfaceDefinitionStatus, type SurfaceDefinitionType, SurfaceDriftError, SurfaceEnsureConflictError, type SurfaceListParams, type SurfacePullResult, SurfacesEndpoint, SurfacesNamespace, type TextContentPart, type Tool, type ToolApprovalGrant, ToolApprovalGrantsEndpoint, type ToolConfig, type ToolDefinition, type ToolDefinitionType, ToolDriftError, ToolEnsureConflictError, type ToolPullResult, type ToolWithValidation, type ToolsConfig, ToolsEndpoint, ToolsNamespace, type TransformDataStepConfig$1 as TransformDataStepConfig, type UpdateAppRequest, type UpdateClientTokenRequest, type UpdateConversationRequest, type UpdatePromptData, type UpdateProviderKeyRequest, type UpdateScheduleRequest, type UpdateSecretRequest, type UpdateToolRequest, type UpdatedFlow, type UpsertFlowConfig$1 as UpsertFlowConfig, type UpsertOptions, type UpsertRecordStepConfig$1 as UpsertRecordStepConfig, type UserProfile, UsersEndpoint, type VectorSearchStepConfig$1 as VectorSearchStepConfig, type VersionType, type WaitUntilStepConfig$1 as WaitUntilStepConfig, type WorkflowCompileDeps, type WorkflowCompletionCriteriaConfig, type WorkflowConfig, type WorkflowConfigFactory, type WorkflowContext, type WorkflowDefinition, type WorkflowHookEntry, type WorkflowHookKind, type WorkflowHookRef, type WorkflowHookSignatures, type WorkflowMilestoneConfig, type WorkflowPhase, type WorkflowPolicyConfig, type WorkflowRecoveryConfig, type WorkflowSlot, type WorkflowStallPolicy, applyGeneratedRuntimeToolProposalToDispatchRequest, attachRuntimeToolsToDispatchRequest, buildEmptySessionNudge, buildGeneratedRuntimeToolGateOutput, buildLedgerOffloadReference, buildPolicyGuidance, buildSendViewOffloadMarker, compileWorkflowConfig, computeAgentContentHash, computeFlowContentHash, computeProductContentHash, computeSkillContentHash, computeSurfaceContentHash, computeToolContentHash, createClient, createExternalTool, defaultWorkflow, defaultWorkflowConfig, defineAgent, defineFlow, definePlaybook, defineProduct, defineSkill, defineSurface, defineTool, deployWorkflow, ensureDefaultWorkflowHooks, evaluateGeneratedRuntimeToolProposal, extractDeclaredToolResultChars, gameWorkflow, getDefaultPlanPath, getLikelySupportingCandidatePaths, interpolateWorkflowTemplate, isDiscoveryToolName, isMarathonArtifactPath, isPreservationSensitiveTask, isWorkflowHookRef, listWorkflowHooks, normalizeAgentDefinition, normalizeCandidatePath, normalizeProductDefinition, normalizeSkillDefinition, normalizeSurfaceDefinition, normalizeToolDefinition, parseFinalBuffer, parseLedgerArtifactRelativePath, parseOffloadedOutputId, parseSSEChunk, processStream, registerWorkflowHook, resolveStallStopAfter, resolveWorkflowHook, sanitizeTaskSlug, shouldInjectEmptySessionNudge, shouldRequestModelEscalation, streamEvents, unregisterWorkflowHook };