@ellipsis-dev/sdk 0.17.0 → 0.19.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.js CHANGED
@@ -241,192 +241,6 @@ var Transport = class {
241
241
 
242
242
  // src/core/client.ts
243
243
  var enc = encodeURIComponent;
244
- var EllipsisAgentsConfigs = class {
245
- constructor(transport) {
246
- this.transport = transport;
247
- }
248
- transport;
249
- /**
250
- * Create Agent Config
251
- *
252
- * Create an agent config, managed through the API: no file, live
253
- * immediately. To put its definition in a repository instead, create
254
- * it here and then POST /v1/agents/configs/{config_id}/link.
255
- *
256
- * 409 when another live agent already holds the name.
257
- */
258
- async create(options) {
259
- const path = "/v1/agents/configs";
260
- const body = buildBody({ config: options.config });
261
- return await this.transport.request("POST", path, { body });
262
- }
263
- /**
264
- * Delete Agent Config
265
- *
266
- * Delete an agent, by id or by the agent's name.
267
- *
268
- * The agent stops running and its name is freed immediately; its
269
- * past sessions remain readable. Only for agents managed through
270
- * this API — delete the file to remove one defined by a
271
- * repository.
272
- */
273
- async delete(config_id) {
274
- const path = `/v1/agents/configs/${enc(config_id)}`;
275
- await this.transport.request("DELETE", path);
276
- }
277
- /**
278
- * Get Agent Config
279
- *
280
- * Return one saved agent config, by id or by the agent's name.
281
- */
282
- async get(config_id) {
283
- const path = `/v1/agents/configs/${enc(config_id)}`;
284
- return await this.transport.request("GET", path);
285
- }
286
- /**
287
- * Link Agent Config
288
- *
289
- * Move an agent into a repository, by id or by the agent's name.
290
- *
291
- * Opens a pull request adding the agent's config file. The agent
292
- * keeps running unchanged meanwhile; merging hands it over to the
293
- * file, after which the file is what changes it. Nothing happens
294
- * if the pull request is never merged.
295
- */
296
- async link(config_id, options) {
297
- const path = `/v1/agents/configs/${enc(config_id)}/link`;
298
- const body = buildBody({ path: options.path, repository: options.repository });
299
- return await this.transport.request("POST", path, { body });
300
- }
301
- /**
302
- * List Agent Configs
303
- *
304
- * List saved agent configs.
305
- */
306
- async list() {
307
- const path = "/v1/agents/configs";
308
- return await this.transport.request("GET", path);
309
- }
310
- /**
311
- * Unlink Agent Config
312
- *
313
- * Take over an agent from its file, by id or by the agent's name.
314
- *
315
- * The file stops governing the agent immediately and further
316
- * changes go through this API. The file is left in place, inert —
317
- * delete it whenever you like.
318
- */
319
- async unlink(config_id) {
320
- const path = `/v1/agents/configs/${enc(config_id)}/unlink`;
321
- return await this.transport.request("POST", path);
322
- }
323
- /**
324
- * Update Agent Config
325
- *
326
- * Replace an agent's definition, by id or by the agent's name.
327
- *
328
- * The whole definition is replaced, and the change is live at
329
- * once. Only for agents managed through this API: one defined by a
330
- * repository file is a 409, since the next push to that file would
331
- * revert the change — unlink it first to take ownership.
332
- */
333
- async update(config_id, options) {
334
- const path = `/v1/agents/configs/${enc(config_id)}`;
335
- const body = buildBody({ config: options.config });
336
- return await this.transport.request("PUT", path, { body });
337
- }
338
- };
339
- var EllipsisAgentsDefaults = class {
340
- constructor(transport) {
341
- this.transport = transport;
342
- }
343
- transport;
344
- /**
345
- * Delete Agent Default
346
- *
347
- * Clear a default agent config.
348
- *
349
- * Addressed by rung: the account rung (repository omitted) or a
350
- * repository rung.
351
- *
352
- * Refused for sandbox tokens.
353
- */
354
- async delete(options = {}) {
355
- const path = "/v1/agents/defaults";
356
- const query = buildQuery({ repository: options.repository });
357
- await this.transport.request("DELETE", path, { query });
358
- }
359
- /**
360
- * List Agent Defaults
361
- *
362
- * Get the default agent configs.
363
- *
364
- * The account-wide default and the per-repository defaults, as config
365
- * ids. Repo rungs are keyed "owner/name"; a repository this
366
- * installation can no longer see is omitted.
367
- */
368
- async list() {
369
- const path = "/v1/agents/defaults";
370
- return await this.transport.request("GET", path);
371
- }
372
- /**
373
- * Put Agent Default
374
- *
375
- * Set a default agent config.
376
- *
377
- * Addressed by rung: the account rung (repository omitted) or a
378
- * repository rung ("owner/name"); the config by id or by the
379
- * agent's name. Returns the full resulting ladder.
380
- *
381
- * Refused for sandbox tokens (potentially prompt-injected code
382
- * must not repoint the account's ambient default); an unknown or
383
- * foreign repository is a 404.
384
- */
385
- async set(options) {
386
- const path = "/v1/agents/defaults";
387
- const body = buildBody({ config_id: options.config_id, repository: options.repository });
388
- return await this.transport.request("PUT", path, { body });
389
- }
390
- };
391
- var EllipsisAgentsTemplates = class {
392
- constructor(transport) {
393
- this.transport = transport;
394
- }
395
- transport;
396
- /**
397
- * Get Agent Template
398
- *
399
- * Return one built-in agent template by slug.
400
- */
401
- async get(template_id) {
402
- const path = `/v1/agents/templates/${enc(template_id)}`;
403
- return await this.transport.request("GET", path);
404
- }
405
- /**
406
- * List Agent Templates
407
- *
408
- * List the built-in starter agent templates.
409
- *
410
- * Behind auth but not account-scoped — the data is static
411
- * product content shared by the dashboard, landing site, and CLI.
412
- */
413
- async list() {
414
- const path = "/v1/agents/templates";
415
- return await this.transport.request("GET", path);
416
- }
417
- };
418
- var EllipsisAgents = class {
419
- constructor(transport) {
420
- this.transport = transport;
421
- this.configs = new EllipsisAgentsConfigs(transport);
422
- this.defaults = new EllipsisAgentsDefaults(transport);
423
- this.templates = new EllipsisAgentsTemplates(transport);
424
- }
425
- transport;
426
- configs;
427
- defaults;
428
- templates;
429
- };
430
244
  var EllipsisAlerts = class {
431
245
  constructor(transport) {
432
246
  this.transport = transport;
@@ -504,11 +318,11 @@ var EllipsisAnalytics = class {
504
318
  * Return pull-request analytics.
505
319
  *
506
320
  * Windowing: pass explicit start/end, or days (default: the last
507
- * 30 days).
321
+ * 30 days). account_type in all|user|bot scopes the authors.
508
322
  */
509
323
  async pullRequests(options = {}) {
510
324
  const path = "/v1/analytics/pull-requests";
511
- const query = buildQuery({ days: options.days, start: options.start, end: options.end, account_type: options.account_type, repository_id: options.repository_id, author_id: options.author_id, status: options.status });
325
+ const query = buildQuery({ days: options.days, start: options.start, end: options.end, repo: options.repo, author: options.author, account_type: options.account_type, status: options.status });
512
326
  return await this.transport.request("GET", path, { query });
513
327
  }
514
328
  /**
@@ -566,58 +380,122 @@ var EllipsisAuth = class {
566
380
  transport;
567
381
  cli;
568
382
  };
569
- var EllipsisEnvironmentsDefaults = class {
383
+ var EllipsisAutomations = class {
570
384
  constructor(transport) {
571
385
  this.transport = transport;
572
386
  }
573
387
  transport;
574
388
  /**
575
- * Delete Environment Default
389
+ * Create Automation
576
390
  *
577
- * Clear a default environment.
391
+ * Create an automation, managed through the API: no file, live
392
+ * immediately. To put its definition in a repository instead, create
393
+ * it here and then POST /v1/automations/{automation_id}/link.
578
394
  *
579
- * Addressed by rung: the account rung (repository omitted) or a
580
- * repository rung. Refused for sandbox tokens.
395
+ * 409 when another live automation already holds the name.
581
396
  */
582
- async delete(options = {}) {
583
- const path = "/v1/environments/defaults";
584
- const query = buildQuery({ repository: options.repository });
585
- await this.transport.request("DELETE", path, { query });
397
+ async create(options) {
398
+ const path = "/v1/automations";
399
+ const body = buildBody({ automation: options.automation });
400
+ return await this.transport.request("POST", path, { body });
586
401
  }
587
402
  /**
588
- * List Environment Defaults
403
+ * Delete Automation
589
404
  *
590
- * Get the default environments.
405
+ * Delete an automation, by id or by name.
591
406
  *
592
- * The account-wide default and the per-repository defaults, as
593
- * environment ids. Repo rungs are keyed "owner/name".
407
+ * It stops running and its name is freed immediately; its past
408
+ * sessions remain readable. Only for automations managed through
409
+ * this API — delete the file to remove one defined by a repository.
410
+ */
411
+ async delete(automation_id) {
412
+ const path = `/v1/automations/${enc(automation_id)}`;
413
+ await this.transport.request("DELETE", path);
414
+ }
415
+ /**
416
+ * Get Automation
417
+ *
418
+ * Return one automation, by id or by name.
419
+ */
420
+ async get(automation_id) {
421
+ const path = `/v1/automations/${enc(automation_id)}`;
422
+ return await this.transport.request("GET", path);
423
+ }
424
+ /**
425
+ * Link Automation
426
+ *
427
+ * Move an automation into a repository, by id or by name.
428
+ *
429
+ * Opens a pull request adding its definition file. The automation
430
+ * keeps running unchanged meanwhile; merging hands it over to the
431
+ * file, after which the file is what changes it. Nothing happens
432
+ * if the pull request is never merged.
433
+ */
434
+ async link(automation_id, options) {
435
+ const path = `/v1/automations/${enc(automation_id)}/link`;
436
+ const body = buildBody({ path: options.path, repository: options.repository });
437
+ return await this.transport.request("POST", path, { body });
438
+ }
439
+ /**
440
+ * List Automations
441
+ *
442
+ * List automations.
594
443
  */
595
444
  async list() {
596
- const path = "/v1/environments/defaults";
445
+ const path = "/v1/automations";
597
446
  return await this.transport.request("GET", path);
598
447
  }
599
448
  /**
600
- * Put Environment Default
449
+ * Start Automation Session
601
450
  *
602
- * Set a default environment.
451
+ * Invoke an automation.
603
452
  *
604
- * Addressed by rung: the account rung (repository omitted) or a
605
- * repository rung ("owner/name"); the environment by id or name.
606
- * Returns the full resulting ladder. Refused for sandbox tokens.
453
+ * Runs the automation exactly as defined — its persona, model,
454
+ * environment, permissions, skills, and budget bind — and returns
455
+ * the session it started. The body carries only what a caller may
456
+ * supply: the typed `input` its schema demands, an optional tighter
457
+ * `budget`, and `metadata`. For a different persona or environment,
458
+ * start a raw session with POST /v1/sessions instead.
607
459
  */
608
- async set(options) {
609
- const path = "/v1/environments/defaults";
610
- const body = buildBody({ environment: options.environment, repository: options.repository });
460
+ async run(automation_id, options = {}) {
461
+ const path = `/v1/automations/${enc(automation_id)}/sessions`;
462
+ const body = buildBody({ budget: options.budget, input: options.input, metadata: options.metadata });
463
+ return await this.transport.request("POST", path, { body });
464
+ }
465
+ /**
466
+ * Unlink Automation
467
+ *
468
+ * Take over an automation from its file, by id or by name.
469
+ *
470
+ * The file stops governing it immediately and further changes go
471
+ * through this API. The file is left in place, inert — delete it
472
+ * whenever you like.
473
+ */
474
+ async unlink(automation_id) {
475
+ const path = `/v1/automations/${enc(automation_id)}/unlink`;
476
+ return await this.transport.request("POST", path);
477
+ }
478
+ /**
479
+ * Update Automation
480
+ *
481
+ * Replace an automation's definition, by id or by name.
482
+ *
483
+ * The whole definition is replaced, and the change is live at
484
+ * once. Only for automations managed through this API: one defined
485
+ * by a repository file is a 409, since the next push to that file
486
+ * would revert the change — unlink it first to take ownership.
487
+ */
488
+ async update(automation_id, options) {
489
+ const path = `/v1/automations/${enc(automation_id)}`;
490
+ const body = buildBody({ automation: options.automation });
611
491
  return await this.transport.request("PUT", path, { body });
612
492
  }
613
493
  };
614
494
  var EllipsisEnvironments = class {
615
495
  constructor(transport) {
616
496
  this.transport = transport;
617
- this.defaults = new EllipsisEnvironmentsDefaults(transport);
618
497
  }
619
498
  transport;
620
- defaults;
621
499
  /**
622
500
  * Create Environment
623
501
  *
@@ -853,13 +731,13 @@ var EllipsisIntegrations = class {
853
731
  sentry;
854
732
  slack;
855
733
  /**
856
- * Get Integrations
734
+ * List Integrations
857
735
  *
858
736
  * List connected integrations.
859
737
  *
860
738
  * A read-only view, so an agent authoring another agent's
861
739
  * config can learn which repositories, channels, teams, and
862
- * organizations it may name before POST /agents/configs.
740
+ * organizations it may name before POST /automations.
863
741
  *
864
742
  * Available to all credential types including sandbox tokens: the
865
743
  * responses never include OAuth tokens or any other secret.
@@ -1064,7 +942,7 @@ var EllipsisSecrets = class {
1064
942
  return await this.transport.request("GET", path);
1065
943
  }
1066
944
  /**
1067
- * Put Secrets
945
+ * Set Secrets
1068
946
  *
1069
947
  * Upsert secrets.
1070
948
  *
@@ -1094,8 +972,7 @@ var EllipsisSessions = class {
1094
972
  * instructions + the config's own instructions).
1095
973
  *
1096
974
  * Per execution because each cold wake persists its own launch
1097
- * config (a config edit or replay override between wakes changes
1098
- * it).
975
+ * config (a config edit between wakes changes it).
1099
976
  */
1100
977
  async executions(session_id) {
1101
978
  const path = `/v1/sessions/${enc(session_id)}/executions`;
@@ -1155,13 +1032,13 @@ var EllipsisSessions = class {
1155
1032
  *
1156
1033
  * List cloud agent sessions, newest first.
1157
1034
  *
1158
- * Optionally filtered by config (id or `ellipsis.name`), source, time
1035
+ * Optionally filtered by automation (id or name), source, time
1159
1036
  * window, attributed author, repository, and whether the session is
1160
1037
  * still going.
1161
1038
  */
1162
1039
  async list(options = {}) {
1163
1040
  const path = "/v1/sessions";
1164
- const query = buildQuery({ config_id: options.config_id, source: options.source, days: options.days, start: options.start, end: options.end, limit: options.limit, cursor: options.cursor, author_id: options.author_id, repo: options.repo, unfinished: options.unfinished });
1041
+ const query = buildQuery({ automation: options.automation, source: options.source, days: options.days, start: options.start, end: options.end, limit: options.limit, cursor: options.cursor, author_id: options.author_id, repo: options.repo, unfinished: options.unfinished });
1165
1042
  const response = await this.transport.request("GET", path, { query });
1166
1043
  return new Page(
1167
1044
  response,
@@ -1206,22 +1083,7 @@ var EllipsisSessions = class {
1206
1083
  );
1207
1084
  }
1208
1085
  /**
1209
- * Replay Agent Session
1210
- *
1211
- * Replay a session as a new session.
1212
- *
1213
- * Reuses the original config snapshot unless config_id is given,
1214
- * and accepts the same config_override as session start — e.g.
1215
- * {"claude": {"model": ...}} to replay the same input on a
1216
- * different model.
1217
- */
1218
- async replay(session_id, options = {}) {
1219
- const path = `/v1/sessions/${enc(session_id)}/replay`;
1220
- const body = buildBody({ config_id: options.config_id, override: options.override, prompt: options.prompt });
1221
- return await this.transport.request("POST", path, { body });
1222
- }
1223
- /**
1224
- * Search Sessions
1086
+ * Search Agent Sessions
1225
1087
  *
1226
1088
  * Search sessions over steps, recaps, and pull requests.
1227
1089
  *
@@ -1258,17 +1120,19 @@ var EllipsisSessions = class {
1258
1120
  *
1259
1121
  * Start a cloud agent session.
1260
1122
  *
1261
- * Provide at most one of config_id (an id or an agent name) or
1262
- * config; with neither, the account's default-config ladder
1263
- * resolves the config. `prompt` is the first message; omit it and
1264
- * the session starts idle, waiting for one. 400 when
1265
- * interactive=false and there is no prompt or input. 422 when the
1266
- * agent declares an input schema and the request's input is absent
1267
- * or invalid.
1123
+ * The daily driver: a prompt, optionally where to run it
1124
+ * (`environment`) and the run's own settings, in the AgentConfig
1125
+ * vocabulary. Anything omitted comes from the organization's
1126
+ * settings — default model, default environment, budget — so
1127
+ * `{"prompt": "..."}` alone is a complete request. `prompt` is the
1128
+ * first message; omit it and the session starts idle, waiting for
1129
+ * one. 400 when `interactive` is false and there is no prompt, or
1130
+ * when `budget` exceeds the organization's per-session ceiling. To
1131
+ * run a saved automation, use POST /v1/automations/{automation_id}/sessions.
1268
1132
  */
1269
1133
  async start(options = {}) {
1270
1134
  const path = "/v1/sessions";
1271
- const body = buildBody({ config: options.config, config_id: options.config_id, environment: options.environment, force_rebuild: options.force_rebuild, input: options.input, interactive: options.interactive, metadata: options.metadata, override: options.override, prompt: options.prompt, repository: options.repository });
1135
+ const body = buildBody({ budget: options.budget, claude: options.claude, codex: options.codex, environment: options.environment, force_rebuild: options.force_rebuild, interactive: options.interactive, metadata: options.metadata, output: options.output, permissions: options.permissions, prompt: options.prompt, skills: options.skills });
1272
1136
  return await this.transport.request("POST", path, { body });
1273
1137
  }
1274
1138
  /**
@@ -1295,12 +1159,83 @@ var EllipsisSessions = class {
1295
1159
  return new SessionHandle(this, response.session);
1296
1160
  }
1297
1161
  };
1162
+ var EllipsisSettingsOrganization = class {
1163
+ constructor(transport) {
1164
+ this.transport = transport;
1165
+ }
1166
+ transport;
1167
+ /**
1168
+ * Get Organization Settings
1169
+ *
1170
+ * Get the organization settings.
1171
+ *
1172
+ * The default model and default environment every session falls
1173
+ * back to when neither its request nor its automation names one,
1174
+ * and the per-session budget ceiling no session may exceed.
1175
+ */
1176
+ async get() {
1177
+ const path = "/v1/settings/organization";
1178
+ return await this.transport.request("GET", path);
1179
+ }
1180
+ /**
1181
+ * Set Organization Settings
1182
+ *
1183
+ * Set the organization settings.
1184
+ *
1185
+ * Replaces all three: `default_model` accepts an alias or canonical
1186
+ * id and is stored canonical; `default_environment` accepts a name
1187
+ * or `env_` id and is stored as the id; `budget_ceiling.session` is
1188
+ * in US dollars, at most the platform ceiling. Null clears each.
1189
+ * Refused for sandbox tokens (potentially prompt-injected code must
1190
+ * not repoint the organization's defaults).
1191
+ */
1192
+ async set(options = {}) {
1193
+ const path = "/v1/settings/organization";
1194
+ const body = buildBody({ budget_ceiling: options.budget_ceiling, default_environment: options.default_environment, default_model: options.default_model });
1195
+ return await this.transport.request("PUT", path, { body });
1196
+ }
1197
+ };
1198
+ var EllipsisSettings = class {
1199
+ constructor(transport) {
1200
+ this.transport = transport;
1201
+ this.organization = new EllipsisSettingsOrganization(transport);
1202
+ }
1203
+ transport;
1204
+ organization;
1205
+ };
1206
+ var EllipsisTemplates = class {
1207
+ constructor(transport) {
1208
+ this.transport = transport;
1209
+ }
1210
+ transport;
1211
+ /**
1212
+ * Get Agent Template
1213
+ *
1214
+ * Return one built-in agent template by slug.
1215
+ */
1216
+ async get(template_id) {
1217
+ const path = `/v1/templates/${enc(template_id)}`;
1218
+ return await this.transport.request("GET", path);
1219
+ }
1220
+ /**
1221
+ * List Agent Templates
1222
+ *
1223
+ * List the built-in starter agent templates.
1224
+ *
1225
+ * Behind auth but not account-scoped — the data is static
1226
+ * product content shared by the dashboard, landing site, and CLI.
1227
+ */
1228
+ async list() {
1229
+ const path = "/v1/templates";
1230
+ return await this.transport.request("GET", path);
1231
+ }
1232
+ };
1298
1233
  var Ellipsis = class {
1299
1234
  transport;
1300
- agents;
1301
1235
  alerts;
1302
1236
  analytics;
1303
1237
  auth;
1238
+ automations;
1304
1239
  environments;
1305
1240
  files;
1306
1241
  integrations;
@@ -1309,12 +1244,14 @@ var Ellipsis = class {
1309
1244
  reviews;
1310
1245
  secrets;
1311
1246
  sessions;
1247
+ settings;
1248
+ templates;
1312
1249
  constructor(options) {
1313
1250
  this.transport = new Transport(options);
1314
- this.agents = new EllipsisAgents(this.transport);
1315
1251
  this.alerts = new EllipsisAlerts(this.transport);
1316
1252
  this.analytics = new EllipsisAnalytics(this.transport);
1317
1253
  this.auth = new EllipsisAuth(this.transport);
1254
+ this.automations = new EllipsisAutomations(this.transport);
1318
1255
  this.environments = new EllipsisEnvironments(this.transport);
1319
1256
  this.files = new EllipsisFiles(this.transport);
1320
1257
  this.integrations = new EllipsisIntegrations(this.transport);
@@ -1323,6 +1260,8 @@ var Ellipsis = class {
1323
1260
  this.reviews = new EllipsisReviews(this.transport);
1324
1261
  this.secrets = new EllipsisSecrets(this.transport);
1325
1262
  this.sessions = new EllipsisSessions(this.transport);
1263
+ this.settings = new EllipsisSettings(this.transport);
1264
+ this.templates = new EllipsisTemplates(this.transport);
1326
1265
  }
1327
1266
  /**
1328
1267
  * Get Budget
@@ -1334,7 +1273,7 @@ var Ellipsis = class {
1334
1273
  return await this.transport.request("GET", path);
1335
1274
  }
1336
1275
  /**
1337
- * Whoami
1276
+ * Current Identity
1338
1277
  *
1339
1278
  * Return the identity behind the caller's credential.
1340
1279
  */
@@ -1343,7 +1282,7 @@ var Ellipsis = class {
1343
1282
  return await this.transport.request("GET", path);
1344
1283
  }
1345
1284
  /**
1346
- * Get Usage Endpoint
1285
+ * Get Usage
1347
1286
  *
1348
1287
  * Return the caller's usage dashboard data.
1349
1288
  */
@@ -1,4 +1,4 @@
1
- import { Z as SessionRecord, aa as CodexFileChangeItem, b as CodexEvent, ab as CodexMcpToolCallItem, x as SdkRecord, K as Session, V as SessionMessage, a7 as StreamFrame } from '../types--VF0yCc1.js';
1
+ import { Z as SessionRecord, aa as CodexFileChangeItem, b as CodexEvent, ab as CodexMcpToolCallItem, x as SdkRecord, K as Session, V as SessionMessage, a7 as StreamFrame } from '../types-D2YZTvgg.js';
2
2
 
3
3
  interface ChatToolNode {
4
4
  key: string;
@@ -1,4 +1,4 @@
1
- import { a7 as StreamFrame, K as Session } from '../types--VF0yCc1.js';
1
+ import { a7 as StreamFrame, K as Session } from '../types-D2YZTvgg.js';
2
2
 
3
3
  declare const SESSION_STREAM_PROTOCOL_VERSION = 3;
4
4
  declare const WS_CLOSE_NORMAL = 1000;