windmill-client 1.849.0 → 1.851.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.
@@ -4323,7 +4323,7 @@ var SettingService = class {
4323
4323
  * Readable by any authenticated user; every page load reads it. Each value
4324
4324
  * is the raw stored setting, or null when unset.
4325
4325
  *
4326
- * @returns unknown the instance_banner, accent_color and api_base_url settings
4326
+ * @returns unknown the instance_banner, accent_color, api_base_url and api_base_url_applies_to settings
4327
4327
  * @throws ApiError
4328
4328
  */
4329
4329
  static getInstanceUi() {
@@ -12000,587 +12000,606 @@ var SlackAgentsService = class {
12000
12000
  });
12001
12001
  }
12002
12002
  };
12003
- var AiEvalsService = class {
12003
+ var AiService = class {
12004
12004
  /**
12005
- * list eval datasets
12005
+ * one text completion with the workspace's AI config
12006
+ * Sends a system and a user message to the configured provider and returns the text of the answer, with no tools and no streaming. For callers that do not speak a provider's own API through the proxy, such as the CLI and jobs.
12007
+ *
12006
12008
  * @param data The data for the request.
12007
12009
  * @param data.workspace
12008
- * @returns EvalDataset eval datasets list
12010
+ * @param data.requestBody
12011
+ * @returns unknown the answer, and the model that wrote it
12009
12012
  * @throws ApiError
12010
12013
  */
12011
- static listEvalDatasets(data) {
12014
+ static completeAi(data) {
12012
12015
  return request(OpenAPI, {
12013
- method: "GET",
12014
- url: "/w/{workspace}/ai_evals/datasets/list",
12015
- path: { workspace: data.workspace }
12016
+ method: "POST",
12017
+ url: "/w/{workspace}/ai/complete",
12018
+ path: { workspace: data.workspace },
12019
+ body: data.requestBody,
12020
+ mediaType: "application/json"
12016
12021
  });
12017
12022
  }
12018
12023
  /**
12019
- * create an eval dataset
12024
+ * record AI token usage for the calling user
12020
12025
  * @param data The data for the request.
12021
12026
  * @param data.workspace
12022
- * @param data.requestBody new eval dataset
12023
- * @returns string eval dataset created
12027
+ * @param data.requestBody
12028
+ * @returns void usage recorded
12024
12029
  * @throws ApiError
12025
12030
  */
12026
- static createEvalDataset(data) {
12031
+ static recordAiUsage(data) {
12027
12032
  return request(OpenAPI, {
12028
12033
  method: "POST",
12029
- url: "/w/{workspace}/ai_evals/datasets/create",
12034
+ url: "/w/{workspace}/ai/usage",
12030
12035
  path: { workspace: data.workspace },
12031
12036
  body: data.requestBody,
12032
12037
  mediaType: "application/json"
12033
12038
  });
12034
12039
  }
12035
12040
  /**
12036
- * get an eval dataset
12041
+ * list aggregated AI token usage
12037
12042
  * @param data The data for the request.
12038
12043
  * @param data.workspace
12039
- * @param data.path
12040
- * @returns EvalDataset eval dataset
12044
+ * @param data.days
12045
+ * @param data.groupBy
12046
+ * @param data.scope workspace-wide usage (admin only) or the calling user's own
12047
+ * @returns unknown usage buckets
12041
12048
  * @throws ApiError
12042
12049
  */
12043
- static getEvalDataset(data) {
12050
+ static listAiUsage(data) {
12044
12051
  return request(OpenAPI, {
12045
12052
  method: "GET",
12046
- url: "/w/{workspace}/ai_evals/datasets/get/{path}",
12047
- path: {
12048
- workspace: data.workspace,
12049
- path: data.path
12053
+ url: "/w/{workspace}/ai/usage",
12054
+ path: { workspace: data.workspace },
12055
+ query: {
12056
+ days: data.days,
12057
+ group_by: data.groupBy,
12058
+ scope: data.scope
12050
12059
  }
12051
12060
  });
12052
12061
  }
12053
12062
  /**
12054
- * update an eval dataset
12063
+ * list the calling user's AI session backups in the workspace object storage
12055
12064
  * @param data The data for the request.
12056
12065
  * @param data.workspace
12057
- * @param data.path
12058
- * @param data.requestBody updated eval dataset
12059
- * @returns string eval dataset updated
12066
+ * @returns unknown backups, newest first; `enabled` is false when the workspace has no storage for them
12060
12067
  * @throws ApiError
12061
12068
  */
12062
- static updateEvalDataset(data) {
12069
+ static listAiSessionBackups(data) {
12063
12070
  return request(OpenAPI, {
12064
- method: "POST",
12065
- url: "/w/{workspace}/ai_evals/datasets/update/{path}",
12066
- path: {
12067
- workspace: data.workspace,
12068
- path: data.path
12069
- },
12070
- body: data.requestBody,
12071
- mediaType: "application/json"
12071
+ method: "GET",
12072
+ url: "/w/{workspace}/ai/sessions/list",
12073
+ path: { workspace: data.workspace }
12072
12074
  });
12073
12075
  }
12074
12076
  /**
12075
- * delete an eval dataset and all its cases
12076
- * The cases, the runs and their recorded case sets go with it through the foreign keys; the jobs those runs produced are left alone.
12077
- *
12077
+ * fetch whole AI session backups
12078
12078
  * @param data The data for the request.
12079
12079
  * @param data.workspace
12080
- * @param data.path
12081
- * @returns string eval dataset deleted
12080
+ * @param data.requestBody
12081
+ * @returns unknown the backups found; `deferred` lists ids that did not fit the response budget
12082
12082
  * @throws ApiError
12083
12083
  */
12084
- static deleteEvalDataset(data) {
12084
+ static pullAiSessionBackups(data) {
12085
12085
  return request(OpenAPI, {
12086
12086
  method: "POST",
12087
- url: "/w/{workspace}/ai_evals/datasets/delete/{path}",
12088
- path: {
12089
- workspace: data.workspace,
12090
- path: data.path
12091
- }
12087
+ url: "/w/{workspace}/ai/sessions/pull",
12088
+ path: { workspace: data.workspace },
12089
+ body: data.requestBody,
12090
+ mediaType: "application/json"
12092
12091
  });
12093
12092
  }
12094
12093
  /**
12095
- * list the cases of an eval dataset
12094
+ * write changed pieces of AI sessions to their backups, and remove deleted ones
12096
12095
  * @param data The data for the request.
12097
12096
  * @param data.workspace
12098
- * @param data.path
12099
- * @param data.page which page to return (start at 1, default 1)
12100
- * @param data.perPage number of items to return for a given page (default 30, max 100)
12101
- * @returns unknown eval cases
12097
+ * @param data.requestBody
12098
+ * @returns unknown one result per session written or removed, in request order
12102
12099
  * @throws ApiError
12103
12100
  */
12104
- static listEvalCases(data) {
12101
+ static pushAiSessionBackups(data) {
12105
12102
  return request(OpenAPI, {
12106
- method: "GET",
12107
- url: "/w/{workspace}/ai_evals/cases/list/{path}",
12108
- path: {
12109
- workspace: data.workspace,
12110
- path: data.path
12111
- },
12112
- query: {
12113
- page: data.page,
12114
- per_page: data.perPage
12115
- }
12103
+ method: "POST",
12104
+ url: "/w/{workspace}/ai/sessions/push",
12105
+ path: { workspace: data.workspace },
12106
+ body: data.requestBody,
12107
+ mediaType: "application/json"
12116
12108
  });
12117
12109
  }
12118
12110
  /**
12119
- * what the agent under test is right now
12120
- * The version it is deployed at. Small on purpose: the results endpoint reports the same thing but harvests scores and reads every job to do it, so it is not something to ask for on its own.
12111
+ * share an AI session artifact with the workspace
12112
+ * Stores a read-only copy that any member of the workspace can open by id. Sharing the same artifact again updates that copy, keeps its id, and restarts its retention window.
12121
12113
  *
12122
12114
  * @param data The data for the request.
12123
12115
  * @param data.workspace
12124
- * @param data.path
12125
- * @returns unknown the subject as it is now
12116
+ * @param data.requestBody
12117
+ * @returns SharedAiArtifactInfo the shared copy
12126
12118
  * @throws ApiError
12127
12119
  */
12128
- static evalSubjectState(data) {
12120
+ static shareAiArtifact(data) {
12129
12121
  return request(OpenAPI, {
12130
- method: "GET",
12131
- url: "/w/{workspace}/ai_evals/subject_state",
12122
+ method: "POST",
12123
+ url: "/w/{workspace}/ai/shared_artifacts/share",
12132
12124
  path: { workspace: data.workspace },
12133
- query: { path: data.path }
12125
+ body: data.requestBody,
12126
+ mediaType: "application/json"
12134
12127
  });
12135
12128
  }
12136
12129
  /**
12137
- * the run one iteration of an eval run answered, as its scorers read it
12138
- * Called by the step a run's flow places between the agent and its scorers. Every tool call is enriched with the arguments, result, status and duration of the job that ran it, and with the schema of the script version it ran, none of which the flow itself can read.
12139
- *
12130
+ * get the calling user's share of one of their AI session artifacts
12140
12131
  * @param data The data for the request.
12141
12132
  * @param data.workspace
12142
- * @param data.jobId The flow job that answered the case.
12143
- * @returns unknown the run and its rendering
12133
+ * @param data.artifactId
12134
+ * @returns unknown the live share, if any, and how long shares last
12144
12135
  * @throws ApiError
12145
12136
  */
12146
- static evalRunPayload(data) {
12137
+ static getAiArtifactShareStatus(data) {
12147
12138
  return request(OpenAPI, {
12148
12139
  method: "GET",
12149
- url: "/w/{workspace}/ai_evals/run_payload",
12140
+ url: "/w/{workspace}/ai/shared_artifacts/status",
12150
12141
  path: { workspace: data.workspace },
12151
- query: { job_id: data.jobId }
12142
+ query: { artifact_id: data.artifactId }
12152
12143
  });
12153
12144
  }
12154
12145
  /**
12155
- * what a new judge agent and a new script scorer are created from
12146
+ * get a shared AI session artifact
12156
12147
  * @param data The data for the request.
12157
12148
  * @param data.workspace
12158
- * @returns unknown scorer defaults
12149
+ * @param data.id
12150
+ * @returns unknown the shared artifact
12159
12151
  * @throws ApiError
12160
12152
  */
12161
- static scorerDefaults(data) {
12153
+ static getSharedAiArtifact(data) {
12162
12154
  return request(OpenAPI, {
12163
12155
  method: "GET",
12164
- url: "/w/{workspace}/ai_evals/scorer_defaults",
12165
- path: { workspace: data.workspace }
12156
+ url: "/w/{workspace}/ai/shared_artifacts/get/{id}",
12157
+ path: {
12158
+ workspace: data.workspace,
12159
+ id: data.id
12160
+ }
12166
12161
  });
12167
12162
  }
12168
12163
  /**
12169
- * list the scorers already in use in this workspace, most recent first
12170
- * Filtered twice, both times by what the caller can read: the datasets they come from, and the runnables themselves. A scorer they could not run does not appear.
12171
- *
12164
+ * stop sharing an AI session artifact
12172
12165
  * @param data The data for the request.
12173
12166
  * @param data.workspace
12174
- * @param data.kind only scorers of this kind
12175
- * @returns unknown recently used scorers
12167
+ * @param data.id
12168
+ * @returns string share deleted
12176
12169
  * @throws ApiError
12177
12170
  */
12178
- static recentScorers(data) {
12171
+ static unshareAiArtifact(data) {
12179
12172
  return request(OpenAPI, {
12180
- method: "GET",
12181
- url: "/w/{workspace}/ai_evals/scorers/recent",
12182
- path: { workspace: data.workspace },
12183
- query: { kind: data.kind }
12173
+ method: "DELETE",
12174
+ url: "/w/{workspace}/ai/shared_artifacts/delete/{id}",
12175
+ path: {
12176
+ workspace: data.workspace,
12177
+ id: data.id
12178
+ }
12184
12179
  });
12185
12180
  }
12186
12181
  /**
12187
- * run every case of a dataset as one immutable experiment
12182
+ * share an AI session transcript by link
12183
+ * Stores a read-only snapshot of the session that members of the workspace can open by id, or anyone with the link once it is public. Sharing the same session again updates that snapshot and keeps its id.
12184
+ *
12188
12185
  * @param data The data for the request.
12189
12186
  * @param data.workspace
12190
- * @param data.requestBody what to run
12191
- * @returns string id of the created experiment
12187
+ * @param data.requestBody
12188
+ * @returns SharedAiSessionInfo the shared snapshot
12192
12189
  * @throws ApiError
12193
12190
  */
12194
- static runExperiment(data) {
12191
+ static shareAiSession(data) {
12195
12192
  return request(OpenAPI, {
12196
12193
  method: "POST",
12197
- url: "/w/{workspace}/ai_evals/experiments/run",
12194
+ url: "/w/{workspace}/ai/shared_sessions/share",
12198
12195
  path: { workspace: data.workspace },
12199
12196
  body: data.requestBody,
12200
12197
  mediaType: "application/json"
12201
12198
  });
12202
12199
  }
12203
12200
  /**
12204
- * record what a run produced, so it outlives the jobs that produced it
12205
- * Called by a run's own flow as its last step. The answers and scores a run produced live in its jobs, which have their own retention; this copies them onto the run's rows. Reading a run does the same, so this is what covers a run nobody opened.
12206
- *
12201
+ * get the calling user's share of one of their AI sessions
12207
12202
  * @param data The data for the request.
12208
12203
  * @param data.workspace
12209
- * @param data.id
12210
- * @returns number how many of the run's cases are recorded
12204
+ * @param data.sessionId
12205
+ * @returns unknown the share, if any
12211
12206
  * @throws ApiError
12212
12207
  */
12213
- static collectExperiment(data) {
12208
+ static getAiSessionShareStatus(data) {
12214
12209
  return request(OpenAPI, {
12215
- method: "POST",
12216
- url: "/w/{workspace}/ai_evals/experiments/collect",
12210
+ method: "GET",
12211
+ url: "/w/{workspace}/ai/shared_sessions/status",
12217
12212
  path: { workspace: data.workspace },
12218
- query: { id: data.id }
12213
+ query: { session_id: data.sessionId }
12219
12214
  });
12220
12215
  }
12221
12216
  /**
12222
- * list every experiment, across datasets
12217
+ * make a shared AI session public, or reserve it to workspace members
12223
12218
  * @param data The data for the request.
12224
12219
  * @param data.workspace
12225
- * @param data.subjectPath Restrict to one agent's runs, which is what makes the list a history rather than a log. Runs of what is deployed, of a past version, and of the edits waiting on top are all that agent's, so this does not discriminate by kind.
12226
- *
12227
- * @returns EvalExperiment The 100 newest experiments, each naming the dataset it is of. Restricted to datasets the caller can read.
12228
- *
12220
+ * @param data.id
12221
+ * @param data.requestBody
12222
+ * @returns SharedAiSessionInfo the updated share
12229
12223
  * @throws ApiError
12230
12224
  */
12231
- static listAllExperiments(data) {
12225
+ static setAiSessionSharePublic(data) {
12232
12226
  return request(OpenAPI, {
12233
- method: "GET",
12234
- url: "/w/{workspace}/ai_evals/experiments/list_all",
12235
- path: { workspace: data.workspace },
12236
- query: { subject_path: data.subjectPath }
12227
+ method: "POST",
12228
+ url: "/w/{workspace}/ai/shared_sessions/set_public/{id}",
12229
+ path: {
12230
+ workspace: data.workspace,
12231
+ id: data.id
12232
+ },
12233
+ body: data.requestBody,
12234
+ mediaType: "application/json"
12237
12235
  });
12238
12236
  }
12239
12237
  /**
12240
- * read an experiment's results, one row per case
12238
+ * get a shared AI session
12239
+ * A public share is served without authentication; any other one only to a member of the workspace.
12240
+ *
12241
12241
  * @param data The data for the request.
12242
12242
  * @param data.workspace
12243
- * @param data.path
12244
- * @param data.id the experiment to read
12245
- * @param data.baseline The experiment every column is compared against. A delta is only computed between two scores of the same scorer id, and a column the baseline was never scored with reports it rather than showing a difference.
12246
- *
12247
- * @returns unknown experiment results
12243
+ * @param data.id
12244
+ * @returns unknown the shared session
12248
12245
  * @throws ApiError
12249
12246
  */
12250
- static experimentResults(data) {
12247
+ static getSharedAiSession(data) {
12251
12248
  return request(OpenAPI, {
12252
12249
  method: "GET",
12253
- url: "/w/{workspace}/ai_evals/experiments/results/{path}",
12250
+ url: "/w/{workspace}/ai_u/shared_sessions/get/{id}",
12254
12251
  path: {
12255
12252
  workspace: data.workspace,
12256
- path: data.path
12257
- },
12258
- query: {
12259
- id: data.id,
12260
- baseline: data.baseline
12253
+ id: data.id
12261
12254
  }
12262
12255
  });
12263
12256
  }
12264
- };
12265
- var PathAutocompleteService = class {
12266
12257
  /**
12267
- * list all paths in a workspace for client-side autocomplete
12268
- * Returns the flat list of all item paths visible to the caller across
12269
- * scripts, flows, apps, raw apps, variables, and resources. Intended to
12270
- * feed an entirely client-side path autocomplete UI: the frontend fetches
12271
- * once (server caches per caller for 60s) and performs all prefix/segment
12272
- * computation locally. Capped at 20,000 paths (5,000 per table).
12273
- *
12258
+ * stop sharing an AI session
12274
12259
  * @param data The data for the request.
12275
12260
  * @param data.workspace
12276
- * @param data.force bypass the server-side cache and re-query the DB, refreshing the
12277
- * cache. Used right after a deploy so the new path appears immediately.
12278
- *
12279
- * @returns unknown deduplicated path list, sorted lexicographically
12261
+ * @param data.id
12262
+ * @returns string share deleted
12280
12263
  * @throws ApiError
12281
12264
  */
12282
- static listPathAutocompletePaths(data) {
12265
+ static unshareAiSession(data) {
12283
12266
  return request(OpenAPI, {
12284
- method: "GET",
12285
- url: "/w/{workspace}/path_autocomplete/list_paths",
12286
- path: { workspace: data.workspace },
12287
- query: { force: data.force }
12267
+ method: "DELETE",
12268
+ url: "/w/{workspace}/ai/shared_sessions/delete/{id}",
12269
+ path: {
12270
+ workspace: data.workspace,
12271
+ id: data.id
12272
+ }
12288
12273
  });
12289
12274
  }
12290
12275
  };
12291
- var RawAppService = class {
12276
+ var AiEvalsService = class {
12292
12277
  /**
12293
- * list all raw apps
12278
+ * list eval datasets
12294
12279
  * @param data The data for the request.
12295
12280
  * @param data.workspace
12296
- * @param data.page which page to return (start at 1, default 1)
12297
- * @param data.perPage number of items to return for a given page (default 30, max 100)
12298
- * @param data.orderDesc order by desc order (default true)
12299
- * @param data.createdBy filter by exact matching user creator. Supports comma-separated list (e.g. 'alice,bob') and negation by prefixing all values with '!' (e.g. '!alice,!bob')
12300
- * @param data.pathStart mask to filter matching starting path
12301
- * @param data.pathExact mask to filter exact matching path
12302
- * @param data.starredOnly (default false)
12303
- * show only the starred items
12304
- *
12305
- * @param data.label Filter by label
12306
- * @param data.includeDraftOnly When true, append per-user draft rows whose path has no
12307
- * deployed counterpart. Synthesized rows carry `draft_only: true`
12308
- * so the home page can render a "Draft" badge. Gated to
12309
- * non-operators + page 0 + no narrowing filters on the backend so
12310
- * picker callers stay deployed-only and pagination stays clean.
12311
- *
12312
- * @returns ListableRawApp All raw apps
12281
+ * @returns EvalDataset eval datasets list
12313
12282
  * @throws ApiError
12314
12283
  */
12315
- static listRawApps(data) {
12284
+ static listEvalDatasets(data) {
12316
12285
  return request(OpenAPI, {
12317
12286
  method: "GET",
12318
- url: "/w/{workspace}/raw_apps/list",
12319
- path: { workspace: data.workspace },
12320
- query: {
12321
- page: data.page,
12322
- per_page: data.perPage,
12323
- order_desc: data.orderDesc,
12324
- created_by: data.createdBy,
12325
- path_start: data.pathStart,
12326
- path_exact: data.pathExact,
12327
- starred_only: data.starredOnly,
12328
- label: data.label,
12329
- include_draft_only: data.includeDraftOnly
12330
- }
12287
+ url: "/w/{workspace}/ai_evals/datasets/list",
12288
+ path: { workspace: data.workspace }
12331
12289
  });
12332
12290
  }
12333
- };
12334
- var AiService = class {
12335
12291
  /**
12336
- * record AI token usage for the calling user
12292
+ * create an eval dataset
12337
12293
  * @param data The data for the request.
12338
12294
  * @param data.workspace
12339
- * @param data.requestBody
12340
- * @returns void usage recorded
12295
+ * @param data.requestBody new eval dataset
12296
+ * @returns string eval dataset created
12341
12297
  * @throws ApiError
12342
12298
  */
12343
- static recordAiUsage(data) {
12299
+ static createEvalDataset(data) {
12344
12300
  return request(OpenAPI, {
12345
12301
  method: "POST",
12346
- url: "/w/{workspace}/ai/usage",
12302
+ url: "/w/{workspace}/ai_evals/datasets/create",
12347
12303
  path: { workspace: data.workspace },
12348
12304
  body: data.requestBody,
12349
12305
  mediaType: "application/json"
12350
12306
  });
12351
12307
  }
12352
12308
  /**
12353
- * list aggregated AI token usage
12309
+ * get an eval dataset
12354
12310
  * @param data The data for the request.
12355
12311
  * @param data.workspace
12356
- * @param data.days
12357
- * @param data.groupBy
12358
- * @param data.scope workspace-wide usage (admin only) or the calling user's own
12359
- * @returns unknown usage buckets
12312
+ * @param data.path
12313
+ * @returns EvalDataset eval dataset
12360
12314
  * @throws ApiError
12361
12315
  */
12362
- static listAiUsage(data) {
12316
+ static getEvalDataset(data) {
12363
12317
  return request(OpenAPI, {
12364
12318
  method: "GET",
12365
- url: "/w/{workspace}/ai/usage",
12366
- path: { workspace: data.workspace },
12367
- query: {
12368
- days: data.days,
12369
- group_by: data.groupBy,
12370
- scope: data.scope
12319
+ url: "/w/{workspace}/ai_evals/datasets/get/{path}",
12320
+ path: {
12321
+ workspace: data.workspace,
12322
+ path: data.path
12371
12323
  }
12372
12324
  });
12373
12325
  }
12374
12326
  /**
12375
- * list the calling user's AI session backups in the workspace object storage
12327
+ * update an eval dataset
12328
+ * @param data The data for the request.
12329
+ * @param data.workspace
12330
+ * @param data.path
12331
+ * @param data.requestBody updated eval dataset
12332
+ * @returns string eval dataset updated
12333
+ * @throws ApiError
12334
+ */
12335
+ static updateEvalDataset(data) {
12336
+ return request(OpenAPI, {
12337
+ method: "POST",
12338
+ url: "/w/{workspace}/ai_evals/datasets/update/{path}",
12339
+ path: {
12340
+ workspace: data.workspace,
12341
+ path: data.path
12342
+ },
12343
+ body: data.requestBody,
12344
+ mediaType: "application/json"
12345
+ });
12346
+ }
12347
+ /**
12348
+ * delete an eval dataset and all its cases
12349
+ * The cases, the runs and their recorded case sets go with it through the foreign keys; the jobs those runs produced are left alone.
12350
+ *
12376
12351
  * @param data The data for the request.
12377
12352
  * @param data.workspace
12378
- * @returns unknown backups, newest first; `enabled` is false when the workspace has no storage for them
12353
+ * @param data.path
12354
+ * @returns string eval dataset deleted
12379
12355
  * @throws ApiError
12380
12356
  */
12381
- static listAiSessionBackups(data) {
12357
+ static deleteEvalDataset(data) {
12382
12358
  return request(OpenAPI, {
12383
- method: "GET",
12384
- url: "/w/{workspace}/ai/sessions/list",
12385
- path: { workspace: data.workspace }
12359
+ method: "POST",
12360
+ url: "/w/{workspace}/ai_evals/datasets/delete/{path}",
12361
+ path: {
12362
+ workspace: data.workspace,
12363
+ path: data.path
12364
+ }
12386
12365
  });
12387
12366
  }
12388
12367
  /**
12389
- * fetch whole AI session backups
12368
+ * list the cases of an eval dataset
12390
12369
  * @param data The data for the request.
12391
12370
  * @param data.workspace
12392
- * @param data.requestBody
12393
- * @returns unknown the backups found; `deferred` lists ids that did not fit the response budget
12371
+ * @param data.path
12372
+ * @param data.page which page to return (start at 1, default 1)
12373
+ * @param data.perPage number of items to return for a given page (default 30, max 100)
12374
+ * @returns unknown eval cases
12394
12375
  * @throws ApiError
12395
12376
  */
12396
- static pullAiSessionBackups(data) {
12377
+ static listEvalCases(data) {
12397
12378
  return request(OpenAPI, {
12398
- method: "POST",
12399
- url: "/w/{workspace}/ai/sessions/pull",
12400
- path: { workspace: data.workspace },
12401
- body: data.requestBody,
12402
- mediaType: "application/json"
12379
+ method: "GET",
12380
+ url: "/w/{workspace}/ai_evals/cases/list/{path}",
12381
+ path: {
12382
+ workspace: data.workspace,
12383
+ path: data.path
12384
+ },
12385
+ query: {
12386
+ page: data.page,
12387
+ per_page: data.perPage
12388
+ }
12403
12389
  });
12404
12390
  }
12405
12391
  /**
12406
- * write changed pieces of AI sessions to their backups, and remove deleted ones
12392
+ * what the agent under test is right now
12393
+ * The version it is deployed at. Small on purpose: the results endpoint reports the same thing but harvests scores and reads every job to do it, so it is not something to ask for on its own.
12394
+ *
12407
12395
  * @param data The data for the request.
12408
12396
  * @param data.workspace
12409
- * @param data.requestBody
12410
- * @returns unknown one result per session written or removed, in request order
12397
+ * @param data.path
12398
+ * @returns unknown the subject as it is now
12411
12399
  * @throws ApiError
12412
12400
  */
12413
- static pushAiSessionBackups(data) {
12401
+ static evalSubjectState(data) {
12414
12402
  return request(OpenAPI, {
12415
- method: "POST",
12416
- url: "/w/{workspace}/ai/sessions/push",
12403
+ method: "GET",
12404
+ url: "/w/{workspace}/ai_evals/subject_state",
12417
12405
  path: { workspace: data.workspace },
12418
- body: data.requestBody,
12419
- mediaType: "application/json"
12406
+ query: { path: data.path }
12420
12407
  });
12421
12408
  }
12422
12409
  /**
12423
- * share an AI session artifact with the workspace
12424
- * Stores a read-only copy that any member of the workspace can open by id. Sharing the same artifact again updates that copy, keeps its id, and restarts its retention window.
12410
+ * the run one iteration of an eval run answered, as its scorers read it
12411
+ * Called by the step a run's flow places between the agent and its scorers. Every tool call is enriched with the arguments, result, status and duration of the job that ran it, and with the schema of the script version it ran, none of which the flow itself can read.
12425
12412
  *
12426
12413
  * @param data The data for the request.
12427
12414
  * @param data.workspace
12428
- * @param data.requestBody
12429
- * @returns SharedAiArtifactInfo the shared copy
12415
+ * @param data.jobId The flow job that answered the case.
12416
+ * @returns unknown the run and its rendering
12430
12417
  * @throws ApiError
12431
12418
  */
12432
- static shareAiArtifact(data) {
12419
+ static evalRunPayload(data) {
12433
12420
  return request(OpenAPI, {
12434
- method: "POST",
12435
- url: "/w/{workspace}/ai/shared_artifacts/share",
12421
+ method: "GET",
12422
+ url: "/w/{workspace}/ai_evals/run_payload",
12436
12423
  path: { workspace: data.workspace },
12437
- body: data.requestBody,
12438
- mediaType: "application/json"
12424
+ query: { job_id: data.jobId }
12439
12425
  });
12440
12426
  }
12441
12427
  /**
12442
- * get the calling user's share of one of their AI session artifacts
12428
+ * what a new judge agent and a new script scorer are created from
12443
12429
  * @param data The data for the request.
12444
12430
  * @param data.workspace
12445
- * @param data.artifactId
12446
- * @returns unknown the live share, if any, and how long shares last
12431
+ * @returns unknown scorer defaults
12447
12432
  * @throws ApiError
12448
12433
  */
12449
- static getAiArtifactShareStatus(data) {
12434
+ static scorerDefaults(data) {
12450
12435
  return request(OpenAPI, {
12451
12436
  method: "GET",
12452
- url: "/w/{workspace}/ai/shared_artifacts/status",
12453
- path: { workspace: data.workspace },
12454
- query: { artifact_id: data.artifactId }
12437
+ url: "/w/{workspace}/ai_evals/scorer_defaults",
12438
+ path: { workspace: data.workspace }
12455
12439
  });
12456
12440
  }
12457
12441
  /**
12458
- * get a shared AI session artifact
12442
+ * list the scorers already in use in this workspace, most recent first
12443
+ * Filtered twice, both times by what the caller can read: the datasets they come from, and the runnables themselves. A scorer they could not run does not appear.
12444
+ *
12459
12445
  * @param data The data for the request.
12460
12446
  * @param data.workspace
12461
- * @param data.id
12462
- * @returns unknown the shared artifact
12447
+ * @param data.kind only scorers of this kind
12448
+ * @returns unknown recently used scorers
12463
12449
  * @throws ApiError
12464
12450
  */
12465
- static getSharedAiArtifact(data) {
12451
+ static recentScorers(data) {
12466
12452
  return request(OpenAPI, {
12467
12453
  method: "GET",
12468
- url: "/w/{workspace}/ai/shared_artifacts/get/{id}",
12469
- path: {
12470
- workspace: data.workspace,
12471
- id: data.id
12472
- }
12454
+ url: "/w/{workspace}/ai_evals/scorers/recent",
12455
+ path: { workspace: data.workspace },
12456
+ query: { kind: data.kind }
12473
12457
  });
12474
12458
  }
12475
12459
  /**
12476
- * stop sharing an AI session artifact
12460
+ * run every case of a dataset as one immutable experiment
12477
12461
  * @param data The data for the request.
12478
12462
  * @param data.workspace
12479
- * @param data.id
12480
- * @returns string share deleted
12463
+ * @param data.requestBody what to run
12464
+ * @returns string id of the created experiment
12481
12465
  * @throws ApiError
12482
12466
  */
12483
- static unshareAiArtifact(data) {
12467
+ static runExperiment(data) {
12484
12468
  return request(OpenAPI, {
12485
- method: "DELETE",
12486
- url: "/w/{workspace}/ai/shared_artifacts/delete/{id}",
12487
- path: {
12488
- workspace: data.workspace,
12489
- id: data.id
12490
- }
12469
+ method: "POST",
12470
+ url: "/w/{workspace}/ai_evals/experiments/run",
12471
+ path: { workspace: data.workspace },
12472
+ body: data.requestBody,
12473
+ mediaType: "application/json"
12491
12474
  });
12492
12475
  }
12493
12476
  /**
12494
- * share an AI session transcript by link
12495
- * Stores a read-only snapshot of the session that members of the workspace can open by id, or anyone with the link once it is public. Sharing the same session again updates that snapshot and keeps its id.
12477
+ * record what a run produced, so it outlives the jobs that produced it
12478
+ * Called by a run's own flow as its last step. The answers and scores a run produced live in its jobs, which have their own retention; this copies them onto the run's rows. Reading a run does the same, so this is what covers a run nobody opened.
12496
12479
  *
12497
12480
  * @param data The data for the request.
12498
12481
  * @param data.workspace
12499
- * @param data.requestBody
12500
- * @returns SharedAiSessionInfo the shared snapshot
12482
+ * @param data.id
12483
+ * @returns number how many of the run's cases are recorded
12501
12484
  * @throws ApiError
12502
12485
  */
12503
- static shareAiSession(data) {
12486
+ static collectExperiment(data) {
12504
12487
  return request(OpenAPI, {
12505
12488
  method: "POST",
12506
- url: "/w/{workspace}/ai/shared_sessions/share",
12489
+ url: "/w/{workspace}/ai_evals/experiments/collect",
12507
12490
  path: { workspace: data.workspace },
12508
- body: data.requestBody,
12509
- mediaType: "application/json"
12491
+ query: { id: data.id }
12510
12492
  });
12511
12493
  }
12512
12494
  /**
12513
- * get the calling user's share of one of their AI sessions
12495
+ * list every experiment, across datasets
12514
12496
  * @param data The data for the request.
12515
12497
  * @param data.workspace
12516
- * @param data.sessionId
12517
- * @returns unknown the share, if any
12498
+ * @param data.subjectPath Restrict to one agent's runs, which is what makes the list a history rather than a log. Runs of what is deployed, of a past version, and of the edits waiting on top are all that agent's, so this does not discriminate by kind.
12499
+ *
12500
+ * @returns EvalExperiment The 100 newest experiments, each naming the dataset it is of. Restricted to datasets the caller can read.
12501
+ *
12518
12502
  * @throws ApiError
12519
12503
  */
12520
- static getAiSessionShareStatus(data) {
12504
+ static listAllExperiments(data) {
12521
12505
  return request(OpenAPI, {
12522
12506
  method: "GET",
12523
- url: "/w/{workspace}/ai/shared_sessions/status",
12507
+ url: "/w/{workspace}/ai_evals/experiments/list_all",
12524
12508
  path: { workspace: data.workspace },
12525
- query: { session_id: data.sessionId }
12509
+ query: { subject_path: data.subjectPath }
12526
12510
  });
12527
12511
  }
12528
12512
  /**
12529
- * make a shared AI session public, or reserve it to workspace members
12513
+ * read an experiment's results, one row per case
12530
12514
  * @param data The data for the request.
12531
12515
  * @param data.workspace
12532
- * @param data.id
12533
- * @param data.requestBody
12534
- * @returns SharedAiSessionInfo the updated share
12516
+ * @param data.path
12517
+ * @param data.id the experiment to read
12518
+ * @param data.baseline The experiment every column is compared against. A delta is only computed between two scores of the same scorer id, and a column the baseline was never scored with reports it rather than showing a difference.
12519
+ *
12520
+ * @returns unknown experiment results
12535
12521
  * @throws ApiError
12536
12522
  */
12537
- static setAiSessionSharePublic(data) {
12523
+ static experimentResults(data) {
12538
12524
  return request(OpenAPI, {
12539
- method: "POST",
12540
- url: "/w/{workspace}/ai/shared_sessions/set_public/{id}",
12525
+ method: "GET",
12526
+ url: "/w/{workspace}/ai_evals/experiments/results/{path}",
12541
12527
  path: {
12542
12528
  workspace: data.workspace,
12543
- id: data.id
12529
+ path: data.path
12544
12530
  },
12545
- body: data.requestBody,
12546
- mediaType: "application/json"
12531
+ query: {
12532
+ id: data.id,
12533
+ baseline: data.baseline
12534
+ }
12547
12535
  });
12548
12536
  }
12537
+ };
12538
+ var PathAutocompleteService = class {
12549
12539
  /**
12550
- * get a shared AI session
12551
- * A public share is served without authentication; any other one only to a member of the workspace.
12540
+ * list all paths in a workspace for client-side autocomplete
12541
+ * Returns the flat list of all item paths visible to the caller across
12542
+ * scripts, flows, apps, raw apps, variables, and resources. Intended to
12543
+ * feed an entirely client-side path autocomplete UI: the frontend fetches
12544
+ * once (server caches per caller for 60s) and performs all prefix/segment
12545
+ * computation locally. Capped at 20,000 paths (5,000 per table).
12552
12546
  *
12553
12547
  * @param data The data for the request.
12554
12548
  * @param data.workspace
12555
- * @param data.id
12556
- * @returns unknown the shared session
12549
+ * @param data.force bypass the server-side cache and re-query the DB, refreshing the
12550
+ * cache. Used right after a deploy so the new path appears immediately.
12551
+ *
12552
+ * @returns unknown deduplicated path list, sorted lexicographically
12557
12553
  * @throws ApiError
12558
12554
  */
12559
- static getSharedAiSession(data) {
12555
+ static listPathAutocompletePaths(data) {
12560
12556
  return request(OpenAPI, {
12561
12557
  method: "GET",
12562
- url: "/w/{workspace}/ai_u/shared_sessions/get/{id}",
12563
- path: {
12564
- workspace: data.workspace,
12565
- id: data.id
12566
- }
12558
+ url: "/w/{workspace}/path_autocomplete/list_paths",
12559
+ path: { workspace: data.workspace },
12560
+ query: { force: data.force }
12567
12561
  });
12568
12562
  }
12563
+ };
12564
+ var RawAppService = class {
12569
12565
  /**
12570
- * stop sharing an AI session
12566
+ * list all raw apps
12571
12567
  * @param data The data for the request.
12572
12568
  * @param data.workspace
12573
- * @param data.id
12574
- * @returns string share deleted
12569
+ * @param data.page which page to return (start at 1, default 1)
12570
+ * @param data.perPage number of items to return for a given page (default 30, max 100)
12571
+ * @param data.orderDesc order by desc order (default true)
12572
+ * @param data.createdBy filter by exact matching user creator. Supports comma-separated list (e.g. 'alice,bob') and negation by prefixing all values with '!' (e.g. '!alice,!bob')
12573
+ * @param data.pathStart mask to filter matching starting path
12574
+ * @param data.pathExact mask to filter exact matching path
12575
+ * @param data.starredOnly (default false)
12576
+ * show only the starred items
12577
+ *
12578
+ * @param data.label Filter by label
12579
+ * @param data.includeDraftOnly When true, append per-user draft rows whose path has no
12580
+ * deployed counterpart. Synthesized rows carry `draft_only: true`
12581
+ * so the home page can render a "Draft" badge. Gated to
12582
+ * non-operators + page 0 + no narrowing filters on the backend so
12583
+ * picker callers stay deployed-only and pagination stays clean.
12584
+ *
12585
+ * @returns ListableRawApp All raw apps
12575
12586
  * @throws ApiError
12576
12587
  */
12577
- static unshareAiSession(data) {
12588
+ static listRawApps(data) {
12578
12589
  return request(OpenAPI, {
12579
- method: "DELETE",
12580
- url: "/w/{workspace}/ai/shared_sessions/delete/{id}",
12581
- path: {
12582
- workspace: data.workspace,
12583
- id: data.id
12590
+ method: "GET",
12591
+ url: "/w/{workspace}/raw_apps/list",
12592
+ path: { workspace: data.workspace },
12593
+ query: {
12594
+ page: data.page,
12595
+ per_page: data.perPage,
12596
+ order_desc: data.orderDesc,
12597
+ created_by: data.createdBy,
12598
+ path_start: data.pathStart,
12599
+ path_exact: data.pathExact,
12600
+ starred_only: data.starredOnly,
12601
+ label: data.label,
12602
+ include_draft_only: data.includeDraftOnly
12584
12603
  }
12585
12604
  });
12586
12605
  }
@@ -18586,6 +18605,7 @@ var HubPublishService = class {
18586
18605
  * @param data.workspace
18587
18606
  * @param data.slug hub project slug (3-50 chars, lowercase alphanumeric and hyphens, no leading/trailing hyphen)
18588
18607
  * @param data.folder folder scoping the Hub project source (`{workspace}:{folder}`)
18608
+ * @param data.version id of a reviewed project version to export instead of the current one (see the hub's `/projects/{slug}/versions`)
18589
18609
  * @returns string raw Hub response body (status code is passed through from the Hub)
18590
18610
  * @throws ApiError
18591
18611
  */
@@ -18597,7 +18617,10 @@ var HubPublishService = class {
18597
18617
  workspace: data.workspace,
18598
18618
  slug: data.slug
18599
18619
  },
18600
- query: { folder: data.folder }
18620
+ query: {
18621
+ folder: data.folder,
18622
+ version: data.version
18623
+ }
18601
18624
  });
18602
18625
  }
18603
18626
  /**