@getmodus/sdk 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,8 @@
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.2.3] — 2026-07-20
9
+
8
10
  ## [0.2.2] — 2026-07-20
9
11
 
10
12
  ## [0.2.1] — 2026-07-20
@@ -1128,7 +1128,7 @@ function formatConfigForLog(config) {
1128
1128
  }
1129
1129
 
1130
1130
  // src/_http.ts
1131
- var USER_AGENT = `modus-typescript/${"0.2.2"} (node/${process.version}; ${process.platform})`;
1131
+ var USER_AGENT = `modus-typescript/${"0.2.3"} (node/${process.version}; ${process.platform})`;
1132
1132
  function buildUrl(baseUrl, path, params) {
1133
1133
  const url = new URL(path.startsWith("/") ? path : `/${path}`, baseUrl);
1134
1134
  if (params) {
@@ -1223,6 +1223,26 @@ function wrapNetworkError(error, baseUrl) {
1223
1223
  async function readBody(response) {
1224
1224
  return response.text();
1225
1225
  }
1226
+ async function readBodyPreview(response, maxChars = 200) {
1227
+ if (!response.body) return "";
1228
+ const reader = response.body.getReader();
1229
+ const decoder = new TextDecoder();
1230
+ let out = "";
1231
+ try {
1232
+ while (out.length < maxChars) {
1233
+ const { done, value } = await reader.read();
1234
+ if (done) break;
1235
+ out += decoder.decode(value, { stream: true });
1236
+ if (out.length >= maxChars) {
1237
+ out = out.slice(0, maxChars);
1238
+ break;
1239
+ }
1240
+ }
1241
+ } finally {
1242
+ await reader.cancel().catch(() => void 0);
1243
+ }
1244
+ return out;
1245
+ }
1226
1246
  var HttpClient = class {
1227
1247
  constructor(config) {
1228
1248
  this.config = config;
@@ -1278,7 +1298,13 @@ var HttpClient = class {
1278
1298
  try {
1279
1299
  const response = await this.config.fetch(url, {
1280
1300
  method,
1281
- headers: { ...this.defaultHeaders(), ...options.headers },
1301
+ // Agent-service negotiates SSE vs JSON polling on Accept; JSON-only
1302
+ // Accept returns {"runId","status":"pending"} instead of token SSE.
1303
+ headers: {
1304
+ ...this.defaultHeaders(),
1305
+ ...options.headers,
1306
+ Accept: "text/event-stream"
1307
+ },
1282
1308
  body: options.json !== void 0 ? JSON.stringify(options.json) : void 0,
1283
1309
  signal: AbortSignal.timeout(this.config.timeoutMs)
1284
1310
  });
@@ -1287,6 +1313,14 @@ var HttpClient = class {
1287
1313
  raiseForStatus(response, body);
1288
1314
  return;
1289
1315
  }
1316
+ const contentType = response.headers.get("content-type") ?? "";
1317
+ if (!contentType.toLowerCase().includes("text/event-stream")) {
1318
+ const preview = await readBodyPreview(response);
1319
+ throw new ModusError(
1320
+ `Unexpected stream response: expected Content-Type text/event-stream, got ${JSON.stringify(contentType) || "(missing)"}. Body preview: ${preview}`,
1321
+ { statusCode: response.status, body: preview }
1322
+ );
1323
+ }
1290
1324
  if (!response.body) return;
1291
1325
  const reader = response.body.getReader();
1292
1326
  const decoder = new TextDecoder();
@@ -1709,4 +1743,4 @@ export {
1709
1743
  CustomContextItemsResource,
1710
1744
  ScopeConversationsResource
1711
1745
  };
1712
- //# sourceMappingURL=chunk-OUFN2O5C.js.map
1746
+ //# sourceMappingURL=chunk-ZFZQ2UMA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/_generated/operations.ts","../src/_exceptions.ts","../src/_pagination.ts","../src/_auth.ts","../src/_config.ts","../src/_http.ts","../src/_client-base.ts","../src/_generated/write-body-keys.ts","../src/_validation.ts","../src/_openapi-invoke.ts","../src/_retry.ts","../src/_request.ts","../src/resources/context/custom-items.ts","../src/resources/skills/conversations.ts"],"sourcesContent":["// Auto-generated operation registry. Do not edit by hand.\n\nexport type OperationMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nexport interface OperationSpec {\n method: OperationMethod\n path: string\n service: string\n serverUrl: string | null\n pathParams: readonly string[]\n queryParams: readonly string[]\n requestSchema: string | null\n responseSchema: string | null\n}\n\nexport const OPERATIONS = {\n \"ConnectionsController_list\": {\n method: \"GET\",\n path: \"/api/v1/connections\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageToken\",\"pageSize\",\"type\"],\n requestSchema: null,\n responseSchema: \"ListConnectionsResponseDto\",\n },\n \"ContextCreatorsController_createLink\": {\n method: \"POST\",\n path: \"/api/v1/context/links\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"CreateLinkDto\",\n responseSchema: \"CreatedContextItemResponseDto\",\n },\n \"ContextCreatorsController_createNote\": {\n method: \"POST\",\n path: \"/api/v1/context/notes\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"CreateNoteDto\",\n responseSchema: \"CreatedContextItemResponseDto\",\n },\n \"ContextCreatorsController_createSavedQuery\": {\n method: \"POST\",\n path: \"/api/v1/context/saved-queries\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"CreateSavedQueryDto\",\n responseSchema: \"CreatedContextItemResponseDto\",\n },\n \"ContextItemsController_delete\": {\n method: \"DELETE\",\n path: \"/api/v1/context/items/{uid}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"uid\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"DeleteContextItemResponseDto\",\n },\n \"ContextItemsController_get\": {\n method: \"GET\",\n path: \"/api/v1/context/items/{uid}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"uid\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"ContextItemDto\",\n },\n \"ContextItemsController_list\": {\n method: \"GET\",\n path: \"/api/v1/context/items\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageToken\",\"pageSize\",\"contextTypes\",\"verificationStatuses\",\"searchQuery\",\"topics\"],\n requestSchema: null,\n responseSchema: \"ListContextItemsResponseDto\",\n },\n \"ContextItemsController_listValues\": {\n method: \"GET\",\n path: \"/api/v1/context/items/{uid}/values\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"uid\"],\n queryParams: [\"contextType\",\"contentKeyPath\",\"pageSize\",\"offset\",\"pageToken\",\"searchQuery\",\"dataPathPrefix\"],\n requestSchema: null,\n responseSchema: \"ListContextItemValuesResponseDto\",\n },\n \"ContextItemsController_lookup\": {\n method: \"POST\",\n path: \"/api/v1/context/items/lookup\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"LookupContextItemDto\",\n responseSchema: \"LookupContextItemResponseDto\",\n },\n \"ContextItemsController_update\": {\n method: \"PATCH\",\n path: \"/api/v1/context/items/{uid}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"uid\"],\n queryParams: [\"updateMask\"],\n requestSchema: \"UpdateContextItemDto\",\n responseSchema: null,\n },\n \"CustomContextItemsController_batchCreate\": {\n method: \"POST\",\n path: \"/api/v1/context/custom-items/batch\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"BatchCreateCustomContextItemsDto\",\n responseSchema: \"BatchCreateCustomContextItemsResponseDto\",\n },\n \"CustomContextItemsController_create\": {\n method: \"POST\",\n path: \"/api/v1/context/custom-items\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"CreateCustomContextItemDto\",\n responseSchema: \"CreatedCustomContextItemResponseDto\",\n },\n \"CustomContextItemsController_delete\": {\n method: \"DELETE\",\n path: \"/api/v1/context/custom-items/{uid}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"uid\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"DeleteContextItemResponseDto\",\n },\n \"CustomContextItemsController_get\": {\n method: \"GET\",\n path: \"/api/v1/context/custom-items/{uid}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"uid\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"ContextItemDto\",\n },\n \"CustomContextItemsController_list\": {\n method: \"GET\",\n path: \"/api/v1/context/custom-items\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageToken\",\"pageSize\",\"contextTypes\",\"verificationStatuses\",\"searchQuery\",\"topics\"],\n requestSchema: null,\n responseSchema: \"ListCustomContextItemsResponseDto\",\n },\n \"CustomContextItemsController_update\": {\n method: \"PATCH\",\n path: \"/api/v1/context/custom-items/{uid}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"uid\"],\n queryParams: [],\n requestSchema: \"UpdateCustomContextItemDto\",\n responseSchema: null,\n },\n \"EvaluationsController_getConfig\": {\n method: \"GET\",\n path: \"/api/v1/scopes/{id}/evaluations/config\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"EvaluationConfigDto\",\n },\n \"EvaluationsController_getRun\": {\n method: \"GET\",\n path: \"/api/v1/scopes/{id}/evaluations/runs/{runId}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\",\"runId\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"EvaluationRunWithResultsDto\",\n },\n \"EvaluationsController_listRuns\": {\n method: \"GET\",\n path: \"/api/v1/scopes/{id}/evaluations/runs\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"pageSize\",\"pageToken\"],\n requestSchema: null,\n responseSchema: \"ListEvaluationRunsResponseDto\",\n },\n \"EvaluationsController_triggerRun\": {\n method: \"POST\",\n path: \"/api/v1/scopes/{id}/evaluations/runs\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"TriggerEvaluationRunResponseDto\",\n },\n \"EvaluationsController_updateConfig\": {\n method: \"PUT\",\n path: \"/api/v1/scopes/{id}/evaluations/config\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"UpdateEvaluationConfigDto\",\n responseSchema: \"EvaluationConfigDto\",\n },\n \"MemberGroupsController_list\": {\n method: \"GET\",\n path: \"/api/v1/users/member-groups\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageSize\",\"pageToken\"],\n requestSchema: null,\n responseSchema: \"ListMemberGroupsResponseDto\",\n },\n \"ModusChatController_chat\": {\n method: \"POST\",\n path: \"/api/v1/modus/chat\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"ModusChatRequestDto\",\n responseSchema: \"ModusChatResponseDto\",\n },\n \"ModusChatController_chatContinue\": {\n method: \"POST\",\n path: \"/api/v1/modus/conversations/{threadId}/chat\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"threadId\"],\n queryParams: [],\n requestSchema: \"ModusChatRequestDto\",\n responseSchema: \"ModusChatResponseDto\",\n },\n \"ModusContextController_compose\": {\n method: \"POST\",\n path: \"/api/v1/modus/context\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"ModusContextRequestDto\",\n responseSchema: \"ModusContextResponseDto\",\n },\n \"ModusConversationsController_get\": {\n method: \"GET\",\n path: \"/api/v1/modus/conversations/{threadId}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"threadId\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"ConversationDto\",\n },\n \"ModusConversationsController_list\": {\n method: \"GET\",\n path: \"/api/v1/modus/conversations\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageToken\",\"page\",\"pageSize\",\"userId\",\"toolName\",\"timeframe\",\"includeTools\",\"kind\"],\n requestSchema: null,\n responseSchema: \"ListConversationsResponseDto\",\n },\n \"ModusRunsController_create\": {\n method: \"POST\",\n path: \"/agent/v1/modus/runs\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"ModusRunDto\",\n responseSchema: null,\n },\n \"OrgMembersController_list\": {\n method: \"GET\",\n path: \"/api/v1/users/org-members\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageSize\",\"pageToken\"],\n requestSchema: null,\n responseSchema: \"ListOrgMembersResponseDto\",\n },\n \"OrganizationController_deleteOrganization\": {\n method: \"DELETE\",\n path: \"/api/v1/users/organization\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: null,\n responseSchema: null,\n },\n \"ResumeRunsController_create\": {\n method: \"POST\",\n path: \"/agent/v1/runs/{runId}/resume\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [\"runId\"],\n queryParams: [],\n requestSchema: \"ResumeRunDto\",\n responseSchema: null,\n },\n \"RunLifecycleController_active\": {\n method: \"GET\",\n path: \"/agent/v1/runs/active\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageToken\",\"pageSize\"],\n requestSchema: null,\n responseSchema: \"ActiveRunsResponseDto\",\n },\n \"RunLifecycleController_activeBySession\": {\n method: \"POST\",\n path: \"/agent/v1/runs/active-by-session\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"ActiveRunsBySessionDto\",\n responseSchema: \"ActiveRunsBySessionResponseDto\",\n },\n \"RunLifecycleController_cancel\": {\n method: \"POST\",\n path: \"/agent/v1/runs/{runId}/cancel\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [\"runId\"],\n queryParams: [],\n requestSchema: \"CancelRunDto\",\n responseSchema: null,\n },\n \"RunLifecycleController_editQueued\": {\n method: \"POST\",\n path: \"/agent/v1/runs/{runId}/queue-edit\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [\"runId\"],\n queryParams: [],\n requestSchema: \"EditQueuedRunDto\",\n responseSchema: null,\n },\n \"RunLifecycleController_events\": {\n method: \"GET\",\n path: \"/agent/v1/runs/{runId}/events\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [\"runId\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: null,\n },\n \"RunLifecycleController_interrupt\": {\n method: \"POST\",\n path: \"/agent/v1/runs/{runId}/interrupt\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [\"runId\"],\n queryParams: [],\n requestSchema: \"InterruptRunDto\",\n responseSchema: null,\n },\n \"RunLifecycleController_stream\": {\n method: \"GET\",\n path: \"/agent/v1/runs/{runId}/stream\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [\"runId\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: null,\n },\n \"ScopeChatController_chat\": {\n method: \"POST\",\n path: \"/api/v1/scopes/{id}/chat\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"SkillChatRequestDto\",\n responseSchema: \"SkillChatResponseDto\",\n },\n \"ScopeChatController_chatContinue\": {\n method: \"POST\",\n path: \"/api/v1/scopes/{id}/conversations/{threadId}/chat\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\",\"threadId\"],\n queryParams: [],\n requestSchema: \"SkillChatRequestDto\",\n responseSchema: \"SkillChatResponseDto\",\n },\n \"ScopeContextController_compose\": {\n method: \"POST\",\n path: \"/api/v1/scopes/{id}/context\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"ComposeSkillContextRequestDto\",\n responseSchema: \"ComposeSkillContextResponseDto\",\n },\n \"ScopeConversationsController_get\": {\n method: \"GET\",\n path: \"/api/v1/scopes/{id}/conversations/{threadId}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\",\"threadId\"],\n queryParams: [\"messageLimit\",\"beforeMessageIndex\"],\n requestSchema: null,\n responseSchema: \"ConversationDto\",\n },\n \"ScopeConversationsController_list\": {\n method: \"GET\",\n path: \"/api/v1/scopes/{id}/conversations\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"pageToken\",\"page\",\"pageSize\",\"userId\",\"toolName\",\"timeframe\",\"includeTools\"],\n requestSchema: null,\n responseSchema: \"ListConversationsResponseDto\",\n },\n \"ScopeMemoriesController_delete\": {\n method: \"DELETE\",\n path: \"/api/v1/scopes/{id}/memories/{memoryId}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\",\"memoryId\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: null,\n },\n \"ScopeMemoriesController_list\": {\n method: \"GET\",\n path: \"/api/v1/scopes/{id}/memories\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"pageToken\",\"pageSize\",\"userId\",\"limit\"],\n requestSchema: null,\n responseSchema: \"ListMemoriesResponseDto\",\n },\n \"ScopeMemoriesController_search\": {\n method: \"POST\",\n path: \"/api/v1/scopes/{id}/memories/search\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"SearchMemoriesRequestDto\",\n responseSchema: \"ListMemoriesResponseDto\",\n },\n \"ScopeMemoriesController_update\": {\n method: \"PATCH\",\n path: \"/api/v1/scopes/{id}/memories/{memoryId}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\",\"memoryId\"],\n queryParams: [\"updateMask\"],\n requestSchema: \"UpdateMemoryRequestDto\",\n responseSchema: null,\n },\n \"ScopeRunsController_create\": {\n method: \"POST\",\n path: \"/agent/v1/scopes/{id}/runs\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"SkillRunDto\",\n responseSchema: null,\n },\n \"ScopeSupervisionController_get\": {\n method: \"GET\",\n path: \"/api/v1/scopes/{id}/supervision\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"view\"],\n requestSchema: null,\n responseSchema: \"SupervisionDto\",\n },\n \"ScopeSupervisionController_set\": {\n method: \"PUT\",\n path: \"/api/v1/scopes/{id}/supervision\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"SetSupervisionRequestDto\",\n responseSchema: \"SupervisionDto\",\n },\n \"ScopeSupervisionController_setActive\": {\n method: \"PUT\",\n path: \"/api/v1/scopes/{id}/supervision/active\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"SetSupervisionRequestDto\",\n responseSchema: \"SupervisionDto\",\n },\n \"ScopesController_acceptOwnershipTransfer\": {\n method: \"POST\",\n path: \"/api/v1/scopes/{id}/transfer-ownership/accept\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"SkillDto\",\n },\n \"ScopesController_cancelOwnershipTransfer\": {\n method: \"DELETE\",\n path: \"/api/v1/scopes/{id}/transfer-ownership\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"SkillDto\",\n },\n \"ScopesController_create\": {\n method: \"POST\",\n path: \"/api/v1/scopes\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"CreateSkillDto\",\n responseSchema: \"SkillDto\",\n },\n \"ScopesController_delete\": {\n method: \"DELETE\",\n path: \"/api/v1/scopes/{id}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: null,\n },\n \"ScopesController_deploy\": {\n method: \"POST\",\n path: \"/api/v1/scopes/{id}/deploy\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"DeploySkillDto\",\n responseSchema: \"DeployResponseDto\",\n },\n \"ScopesController_get\": {\n method: \"GET\",\n path: \"/api/v1/scopes/{id}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"view\"],\n requestSchema: null,\n responseSchema: \"SkillDto\",\n },\n \"ScopesController_getVariation\": {\n method: \"GET\",\n path: \"/api/v1/scopes/{id}/variations/{variationUid}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\",\"variationUid\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"SkillDto\",\n },\n \"ScopesController_list\": {\n method: \"GET\",\n path: \"/api/v1/scopes\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageToken\",\"pageSize\",\"view\",\"search\",\"managerId\",\"includeVariation\"],\n requestSchema: null,\n responseSchema: \"ListSkillsResponseDto\",\n },\n \"ScopesController_patchMcpConfig\": {\n method: \"PATCH\",\n path: \"/api/v1/scopes/{id}/mcp-config\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"PatchSkillMcpConfigDto\",\n responseSchema: \"PatchSkillMcpConfigResponseDto\",\n },\n \"ScopesController_requestOwnershipTransfer\": {\n method: \"POST\",\n path: \"/api/v1/scopes/{id}/transfer-ownership\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"TransferOwnershipDto\",\n responseSchema: \"SkillDto\",\n },\n \"ScopesController_restore\": {\n method: \"POST\",\n path: \"/api/v1/scopes/{id}/restore\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"SkillDto\",\n },\n \"ScopesController_update\": {\n method: \"PATCH\",\n path: \"/api/v1/scopes/{id}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"updateMask\"],\n requestSchema: \"UpdateSkillDto\",\n responseSchema: \"SkillDto\",\n },\n \"SuggestionsController_listApproved\": {\n method: \"GET\",\n path: \"/api/v1/suggestions/questions\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageToken\",\"pageSize\",\"skill_id\",\"skill_ids\"],\n requestSchema: null,\n responseSchema: \"ListSuggestionQuestionsResponseDto\",\n },\n \"SuggestionsController_recordEvent\": {\n method: \"POST\",\n path: \"/api/v1/suggestions/questions/{id}/events\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"RecordSuggestionEventDto\",\n responseSchema: null,\n },\n \"UsageController_list\": {\n method: \"GET\",\n path: \"/api/v1/usage\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"since\",\"until\",\"rollup\",\"model\",\"group_by\",\"skill_id\",\"agent_id\",\"user_id\",\"interface\"],\n requestSchema: null,\n responseSchema: \"ListUsageResponseDto\",\n },\n \"WorkflowActionsController_cancel\": {\n method: \"POST\",\n path: \"/agent/v1/workflow-actions/{runId}/cancel\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [\"runId\"],\n queryParams: [],\n requestSchema: \"CancelRunDto\",\n responseSchema: null,\n },\n \"WorkflowActionsController_execute\": {\n method: \"POST\",\n path: \"/agent/v1/workflow-actions\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"WorkflowActionDto\",\n responseSchema: null,\n },\n \"WorkflowInterfacesController_add\": {\n method: \"POST\",\n path: \"/api/v1/workflows/{id}/interfaces\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"AddAgentInterfaceDto\",\n responseSchema: \"AgentInterfaceDto\",\n },\n \"WorkflowInterfacesController_delete\": {\n method: \"DELETE\",\n path: \"/api/v1/workflows/{id}/interfaces/{interfaceId}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\",\"interfaceId\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: null,\n },\n \"WorkflowInterfacesController_deleteAll\": {\n method: \"DELETE\",\n path: \"/api/v1/workflows/{id}/interfaces\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: null,\n },\n \"WorkflowInterfacesController_list\": {\n method: \"GET\",\n path: \"/api/v1/workflows/{id}/interfaces\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"pageSize\",\"pageToken\"],\n requestSchema: null,\n responseSchema: \"ListAgentInterfacesResponseDto\",\n },\n \"WorkflowInterfacesController_update\": {\n method: \"PATCH\",\n path: \"/api/v1/workflows/{id}/interfaces/{interfaceId}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\",\"interfaceId\"],\n queryParams: [\"updateMask\"],\n requestSchema: \"UpdateAgentInterfaceDto\",\n responseSchema: \"AgentInterfaceDto\",\n },\n \"WorkflowRunsController_create\": {\n method: \"POST\",\n path: \"/agent/v1/workflows/{id}/runs\",\n service: \"agent-service\",\n serverUrl: \"https://agent.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"AgentRunDto\",\n responseSchema: null,\n },\n \"WorkflowRunsController_get\": {\n method: \"GET\",\n path: \"/api/v1/workflows/{id}/runs/{runId}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\",\"runId\"],\n queryParams: [\"temporalRunId\"],\n requestSchema: null,\n responseSchema: \"GetAutomationRunResponseDto\",\n },\n \"WorkflowRunsController_list\": {\n method: \"GET\",\n path: \"/api/v1/workflows/{id}/runs\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"status\",\"timeframe\",\"approvalScope\",\"search\",\"pageSize\",\"pageToken\"],\n requestSchema: null,\n responseSchema: \"ListAutomationRunsResponseDto\",\n },\n \"WorkflowsController_acceptOwnershipTransfer\": {\n method: \"POST\",\n path: \"/api/v1/workflows/{id}/transfer-ownership/accept\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"AgentDto\",\n },\n \"WorkflowsController_cancelOwnershipTransfer\": {\n method: \"DELETE\",\n path: \"/api/v1/workflows/{id}/transfer-ownership\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"AgentDto\",\n },\n \"WorkflowsController_create\": {\n method: \"POST\",\n path: \"/api/v1/workflows\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [],\n requestSchema: \"CreateAgentDto\",\n responseSchema: \"AgentDto\",\n },\n \"WorkflowsController_delete\": {\n method: \"DELETE\",\n path: \"/api/v1/workflows/{id}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: null,\n },\n \"WorkflowsController_deploy\": {\n method: \"POST\",\n path: \"/api/v1/workflows/{id}/deploy\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"DeployAgentDto\",\n responseSchema: \"AgentDeployResponseDto\",\n },\n \"WorkflowsController_get\": {\n method: \"GET\",\n path: \"/api/v1/workflows/{id}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"view\"],\n requestSchema: null,\n responseSchema: \"AgentDto\",\n },\n \"WorkflowsController_list\": {\n method: \"GET\",\n path: \"/api/v1/workflows\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [],\n queryParams: [\"pageToken\",\"pageSize\",\"view\",\"type\",\"search\",\"includeVariation\"],\n requestSchema: null,\n responseSchema: \"ListAgentsResponseDto\",\n },\n \"WorkflowsController_requestOwnershipTransfer\": {\n method: \"POST\",\n path: \"/api/v1/workflows/{id}/transfer-ownership\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"TransferOwnershipDto\",\n responseSchema: \"AgentDto\",\n },\n \"WorkflowsController_restore\": {\n method: \"POST\",\n path: \"/api/v1/workflows/{id}/restore\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: null,\n responseSchema: \"AgentDto\",\n },\n \"WorkflowsController_toggle\": {\n method: \"POST\",\n path: \"/api/v1/workflows/{id}/toggle\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [],\n requestSchema: \"ToggleAgentDto\",\n responseSchema: \"AgentDto\",\n },\n \"WorkflowsController_update\": {\n method: \"PATCH\",\n path: \"/api/v1/workflows/{id}\",\n service: \"modus-api\",\n serverUrl: \"https://api.getmodus.com\",\n pathParams: [\"id\"],\n queryParams: [\"updateMask\"],\n requestSchema: \"UpdateAgentDto\",\n responseSchema: \"AgentDto\",\n },\n} as const satisfies Record<string, OperationSpec>\n\nexport type OperationId = keyof typeof OPERATIONS\n","export class ModusError extends Error {\n readonly statusCode?: number\n readonly requestId?: string\n readonly responseHeaders?: Record<string, string>\n readonly body?: string\n readonly code?: string\n\n constructor(\n message: string,\n options: {\n statusCode?: number\n requestId?: string\n responseHeaders?: Record<string, string>\n body?: string\n code?: string\n } = {},\n ) {\n super(message)\n this.name = 'ModusError'\n this.message = message\n this.statusCode = options.statusCode\n this.requestId = options.requestId\n this.responseHeaders = options.responseHeaders\n this.body = options.body\n this.code = options.code\n }\n}\n\nexport class APIConnectionError extends ModusError {\n constructor(message: string) {\n super(message)\n this.name = 'APIConnectionError'\n }\n}\n\nexport class AuthenticationError extends ModusError {\n constructor(message: string, options: ConstructorParameters<typeof ModusError>[1] = {}) {\n super(message, { ...options, statusCode: 401 })\n this.name = 'AuthenticationError'\n }\n}\n\nexport class PermissionDeniedError extends ModusError {\n constructor(message: string, options: ConstructorParameters<typeof ModusError>[1] = {}) {\n super(message, { ...options, statusCode: 403 })\n this.name = 'PermissionDeniedError'\n }\n}\n\nexport class NotFoundError extends ModusError {\n constructor(message: string, options: ConstructorParameters<typeof ModusError>[1] = {}) {\n super(message, { ...options, statusCode: 404 })\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends ModusError {\n constructor(message: string, options: ConstructorParameters<typeof ModusError>[1] = {}) {\n super(message, { ...options, statusCode: 409 })\n this.name = 'ConflictError'\n }\n}\n\nexport class UnprocessableError extends ModusError {\n readonly errors?: unknown\n\n constructor(\n message: string,\n options: ConstructorParameters<typeof ModusError>[1] & { errors?: unknown } = {},\n ) {\n super(message, { ...options, statusCode: 422 })\n this.name = 'UnprocessableError'\n this.errors = options.errors\n }\n}\n\nexport class RateLimitError extends ModusError {\n readonly retryAfter?: number\n\n constructor(\n message: string,\n options: ConstructorParameters<typeof ModusError>[1] & { retryAfter?: number } = {},\n ) {\n super(message, { ...options, statusCode: 429 })\n this.name = 'RateLimitError'\n this.retryAfter = options.retryAfter\n }\n}\n\nexport class InternalServerError extends ModusError {\n constructor(message: string, statusCode: number, options: ConstructorParameters<typeof ModusError>[1] = {}) {\n super(message, { ...options, statusCode })\n this.name = 'InternalServerError'\n }\n}\n\nexport class RunCancelledError extends ModusError {\n constructor(message = 'Run was cancelled.') {\n super(message)\n this.name = 'RunCancelledError'\n }\n}\n\nexport class StreamTimeoutError extends ModusError {\n constructor(message = 'Stream timed out.') {\n super(message)\n this.name = 'StreamTimeoutError'\n }\n}\n\nexport class ValidationError extends ModusError {\n constructor(message: string) {\n super(message)\n this.name = 'ValidationError'\n }\n}\n","import { ModusError } from './_exceptions.js'\n\nexport class Page<T> {\n readonly items: T[]\n readonly nextPageToken?: string\n private readonly fetchPage: (token: string) => Page<T> | Promise<Page<T>>\n\n constructor(\n items: T[],\n nextPageToken: string | undefined,\n fetchPage: (token: string) => Page<T> | Promise<Page<T>>,\n ) {\n this.items = items\n this.nextPageToken = normalizePageToken(nextPageToken)\n this.fetchPage = fetchPage\n }\n\n hasNextPage(): boolean {\n return this.nextPageToken !== undefined\n }\n\n async getNextPage(): Promise<Page<T>> {\n if (this.nextPageToken === undefined) {\n throw new Error(\n 'No next page available. Check hasNextPage() before calling getNextPage().',\n )\n }\n return this.fetchPage(this.nextPageToken)\n }\n\n async *autoPagingIter(): AsyncGenerator<T> {\n for (const item of this.items) yield item\n let nextPageToken = this.nextPageToken\n while (nextPageToken !== undefined) {\n const page = await this.fetchPage(nextPageToken)\n for (const item of page.items) yield item\n nextPageToken = page.nextPageToken\n }\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.items[Symbol.iterator]()\n }\n}\n\nexport function normalizePageToken(token?: string | null): string | undefined {\n if (token === undefined || token === null || !String(token).trim()) return undefined\n return token\n}\n\nexport function aipListParams(\n pageSize: number,\n pageToken?: string,\n extra: Record<string, unknown> = {},\n): Record<string, unknown> {\n const params: Record<string, unknown> = { pageSize, ...extra }\n const token = normalizePageToken(pageToken)\n if (token !== undefined) params.pageToken = token\n return params\n}\n\nexport function nextPageTokenFromResponse(data: Record<string, unknown>): string | undefined {\n return normalizePageToken(\n typeof data.nextPageToken === 'string' ? data.nextPageToken : undefined,\n )\n}\n\nexport function requireItemsList(data: Record<string, unknown>, itemsKey: string): unknown[] {\n const value = data[itemsKey]\n if (!Array.isArray(value)) {\n throw new ModusError(\n `Unexpected list response shape: ${itemsKey} must be a list, got ${typeof value}. This is likely a backend error.`,\n )\n }\n return value\n}\n\nexport function buildAipPage<T>(\n data: Record<string, unknown>,\n itemsKey: string,\n mapItem: (raw: unknown) => T,\n fetchPage: (token: string) => Page<T> | Promise<Page<T>>,\n): Page<T> {\n if (typeof data !== 'object' || data === null || !(itemsKey in data)) {\n throw new ModusError(\n `Unexpected list response shape: missing ${itemsKey}. Got: ${typeof data}. This is likely a backend error.`,\n )\n }\n const items = requireItemsList(data, itemsKey).map(mapItem)\n return new Page(items, nextPageTokenFromResponse(data), fetchPage)\n}\n","import { AuthenticationError } from './_exceptions.js'\n\nconst ENV_API_KEY = 'MODUS_API_KEY'\nconst ENV_BASE_URL = 'MODUS_BASE_URL'\nconst ENV_AGENT_HOST = 'MODUS_AGENT_HOST'\nconst ENV_ORGANIZATION_ID = 'MODUS_ORGANIZATION_ID'\nconst ENV_TIMEOUT = 'MODUS_TIMEOUT'\nconst ENV_MAX_RETRIES = 'MODUS_MAX_RETRIES'\nconst KEY_PREFIX = 'modus_'\n\nexport function resolveApiKey(apiKey?: string): string {\n const key = apiKey ?? process.env[ENV_API_KEY]\n if (!key) {\n throw new AuthenticationError(\n `No API key provided. Pass apiKey or set the ${ENV_API_KEY} environment variable. ` +\n 'Create a token at app.getmodus.com → Settings → API Tokens.',\n )\n }\n if (!key.startsWith(KEY_PREFIX)) {\n throw new AuthenticationError(\n `Invalid API key format. Modus API keys start with '${KEY_PREFIX}'. ` +\n 'Create a token at app.getmodus.com → Settings → API Tokens.',\n )\n }\n return key\n}\n\nexport function resolveBaseUrl(baseUrl?: string): string | undefined {\n return baseUrl ?? process.env[ENV_BASE_URL] ?? undefined\n}\n\nexport function resolveAgentHost(agentHost?: string): string | undefined {\n return agentHost ?? process.env[ENV_AGENT_HOST] ?? undefined\n}\n\nexport function resolveOrganizationId(organizationId?: string): string | undefined {\n const raw = organizationId ?? process.env[ENV_ORGANIZATION_ID]\n if (raw === undefined) return undefined\n const stripped = raw.trim()\n return stripped || undefined\n}\n\nexport function resolveTimeoutMs(explicitMs?: number): number | undefined {\n if (explicitMs !== undefined) return explicitMs\n const raw = process.env[ENV_TIMEOUT]\n if (raw === undefined) return undefined\n const seconds = Number(raw)\n return Number.isFinite(seconds) ? seconds * 1000 : undefined\n}\n\nexport function resolveMaxRetries(explicit?: number): number | undefined {\n if (explicit !== undefined) {\n if (explicit < 0) throw new Error(`max_retries must be >= 0, got ${explicit}`)\n return explicit\n }\n const raw = process.env[ENV_MAX_RETRIES]\n if (raw === undefined) return undefined\n const value = Number.parseInt(raw, 10)\n return Number.isFinite(value) && value >= 0 ? value : undefined\n}\n\nexport function authHeaders(apiKey: string): Record<string, string> {\n return { Authorization: `Bearer ${apiKey}` }\n}\n","import {\n resolveAgentHost,\n resolveApiKey,\n resolveBaseUrl,\n resolveMaxRetries,\n resolveOrganizationId,\n resolveTimeoutMs,\n} from './_auth.js'\n\nexport const DEFAULT_BASE_URL = 'https://api.getmodus.com'\nexport const DEFAULT_AGENT_HOST = 'https://agent.getmodus.com'\nexport const DEFAULT_TIMEOUT_MS = 300_000\nexport const DEFAULT_MAX_RETRIES = 2\n\nexport interface ModusOptions {\n apiKey?: string\n baseUrl?: string\n /** Agent host origin for streaming runs (default https://agent.getmodus.com). */\n agentHost?: string\n /**\n * Optional Clerk organization id for agent-host run bodies. Usually omit —\n * agent-service uses the PAT principal's org.\n */\n organizationId?: string\n /**\n * Override service-specific API origins, for example:\n * `{ 'agent-service': 'http://localhost:3130' }`.\n */\n baseUrls?: Record<string, string>\n /** Request timeout in milliseconds. */\n timeoutMs?: number\n maxRetries?: number\n /** Test injection only. */\n fetch?: typeof fetch\n}\n\nexport interface ModusConfig {\n readonly apiKey: string\n readonly baseUrl: string\n readonly agentHost: string\n readonly organizationId?: string\n readonly baseUrls: Readonly<Record<string, string>>\n readonly timeoutMs: number\n readonly maxRetries: number\n readonly fetch: typeof fetch\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n return baseUrl.replace(/\\/$/, '')\n}\n\nfunction normalizeBaseUrls(baseUrls: Record<string, string> | undefined): Record<string, string> {\n return Object.fromEntries(\n Object.entries(baseUrls ?? {}).map(([service, baseUrl]) => [\n service,\n normalizeBaseUrl(baseUrl),\n ]),\n )\n}\n\nexport function createModusConfig(options: ModusOptions = {}): ModusConfig {\n const maxRetries = resolveMaxRetries(options.maxRetries) ?? DEFAULT_MAX_RETRIES\n if (!Number.isInteger(maxRetries) || maxRetries < 0) {\n throw new Error(`max_retries must be a non-negative int, got ${maxRetries}`)\n }\n const baseUrl = normalizeBaseUrl(resolveBaseUrl(options.baseUrl) ?? DEFAULT_BASE_URL)\n const baseUrlOverrides = normalizeBaseUrls(options.baseUrls)\n // baseUrls['agent-service'] must drive streaming too (same origin as invoke).\n const agentHost = normalizeBaseUrl(\n baseUrlOverrides['agent-service'] ??\n resolveAgentHost(options.agentHost) ??\n DEFAULT_AGENT_HOST,\n )\n const organizationId = resolveOrganizationId(options.organizationId)\n return Object.freeze({\n apiKey: resolveApiKey(options.apiKey),\n baseUrl,\n agentHost,\n ...(organizationId !== undefined ? { organizationId } : {}),\n baseUrls: Object.freeze({\n 'modus-api': baseUrl,\n 'agent-service': agentHost,\n ...baseUrlOverrides,\n }),\n timeoutMs: resolveTimeoutMs(options.timeoutMs) ?? DEFAULT_TIMEOUT_MS,\n maxRetries,\n fetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n })\n}\n\nexport function resolveServiceBaseUrl(\n config: ModusConfig,\n service: string,\n generatedBaseUrl?: string | null,\n): string {\n // Prefer explicit agentHost / baseUrls over OpenAPI-codegen serverUrl so\n // MODUS_AGENT_HOST and agentHost= always win over stale generated defaults.\n if (service === 'agent-service') {\n return config.baseUrls['agent-service'] ?? config.agentHost ?? generatedBaseUrl ?? config.baseUrl\n }\n return config.baseUrls[service] ?? generatedBaseUrl ?? config.baseUrl\n}\n\nexport function formatConfigForLog(config: ModusConfig): string {\n const masked = config.apiKey.length > 10 ? `${config.apiKey.slice(0, 10)}***` : '***'\n return `ModusConfig(apiKey=${JSON.stringify(masked)}, baseUrl=${JSON.stringify(config.baseUrl)}, timeoutMs=${config.timeoutMs}, maxRetries=${config.maxRetries})`\n}\n","import { authHeaders } from './_auth.js'\nimport type { ModusConfig } from './_config.js'\nimport {\n APIConnectionError,\n AuthenticationError,\n ConflictError,\n InternalServerError,\n ModusError,\n NotFoundError,\n PermissionDeniedError,\n RateLimitError,\n UnprocessableError,\n} from './_exceptions.js'\n\nconst USER_AGENT = `modus-typescript/${__SDK_VERSION__} (node/${process.version}; ${process.platform})`\n\ntype QueryValue = string | number | boolean | null | undefined | readonly (string | number)[]\ntype QueryParams = Record<string, QueryValue>\ntype RequestOptions = {\n baseUrl?: string\n headers?: Record<string, string>\n}\n\nfunction buildUrl(baseUrl: string, path: string, params?: QueryParams): string {\n const url = new URL(path.startsWith('/') ? path : `/${path}`, baseUrl)\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null) continue\n if (Array.isArray(value)) {\n for (const item of value) url.searchParams.append(key, String(item))\n } else {\n url.searchParams.set(key, String(value))\n }\n }\n }\n return url.toString()\n}\n\nfunction headersToRecord(headers: Headers): Record<string, string> {\n const out: Record<string, string> = {}\n headers.forEach((value, key) => {\n out[key] = value\n })\n return out\n}\n\nfunction messageFromBody(raw: string, statusCode: number): string {\n if (!raw) return `HTTP ${statusCode}`\n try {\n const body = JSON.parse(raw) as unknown\n if (body && typeof body === 'object') {\n const record = body as Record<string, unknown>\n const envelope = record.error\n if (envelope && typeof envelope === 'object') {\n const msg = (envelope as Record<string, unknown>).message\n if (typeof msg === 'string' && msg) return msg\n }\n const msg = record.message ?? record.error\n if (Array.isArray(msg)) return msg.map(String).join('; ')\n if (typeof msg === 'string' && msg) return msg\n }\n } catch {\n // non-JSON body\n }\n return raw\n}\n\nfunction errorCodeFromBody(raw: string): string | undefined {\n try {\n const body = JSON.parse(raw) as { error?: { code?: string } }\n return typeof body.error?.code === 'string' ? body.error.code : undefined\n } catch {\n return undefined\n }\n}\n\nexport function raiseForStatus(response: Response, body: string): void {\n if (response.ok) return\n const message = messageFromBody(body, response.status)\n const requestId =\n response.headers.get('x-request-id') ?? response.headers.get('X-Request-ID') ?? undefined\n const headers = headersToRecord(response.headers)\n const code = errorCodeFromBody(body)\n const base = { requestId, responseHeaders: headers, body, code }\n\n switch (response.status) {\n case 401:\n throw new AuthenticationError(message, base)\n case 403:\n throw new PermissionDeniedError(message, base)\n case 404:\n throw new NotFoundError(message, base)\n case 409:\n throw new ConflictError(message, base)\n case 422: {\n let errors: unknown\n try {\n errors = JSON.parse(body)\n } catch {\n errors = undefined\n }\n throw new UnprocessableError(message, { ...base, errors })\n }\n case 429: {\n const retryHeader = response.headers.get('retry-after') ?? ''\n const retryAfter = /^\\d+$/.test(retryHeader) ? Number.parseInt(retryHeader, 10) : undefined\n throw new RateLimitError(message, { ...base, retryAfter })\n }\n default:\n if (response.status >= 500) {\n throw new InternalServerError(message, response.status, base)\n }\n throw new ModusError(message, { ...base, statusCode: response.status })\n }\n}\n\nfunction wrapNetworkError(error: unknown, baseUrl: string): APIConnectionError {\n const detail = error instanceof Error ? error.message : String(error)\n return new APIConnectionError(\n `Network error communicating with Modus API at ${JSON.stringify(baseUrl)}: ${detail}. ` +\n 'Check connectivity and that baseUrl is correct.',\n )\n}\n\nasync function readBody(response: Response): Promise<string> {\n return response.text()\n}\n\n/** Read at most `maxChars` from the body, then cancel the remainder. */\nasync function readBodyPreview(response: Response, maxChars = 200): Promise<string> {\n if (!response.body) return ''\n const reader = response.body.getReader()\n const decoder = new TextDecoder()\n let out = ''\n try {\n while (out.length < maxChars) {\n const { done, value } = await reader.read()\n if (done) break\n out += decoder.decode(value, { stream: true })\n if (out.length >= maxChars) {\n out = out.slice(0, maxChars)\n break\n }\n }\n } finally {\n await reader.cancel().catch(() => undefined)\n }\n return out\n}\n\nexport class HttpClient {\n readonly config: ModusConfig\n\n constructor(config: ModusConfig) {\n this.config = config\n }\n\n private defaultHeaders(): Record<string, string> {\n return {\n ...authHeaders(this.config.apiKey),\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'User-Agent': USER_AGENT,\n }\n }\n\n private async request(\n method: string,\n path: string,\n options: { params?: QueryParams; json?: unknown } & RequestOptions = {},\n ): Promise<unknown> {\n const baseUrl = options.baseUrl ?? this.config.baseUrl\n const url = buildUrl(baseUrl, path, options.params)\n try {\n const response = await this.config.fetch(url, {\n method,\n headers: { ...this.defaultHeaders(), ...options.headers },\n body: options.json !== undefined ? JSON.stringify(options.json) : undefined,\n signal: AbortSignal.timeout(this.config.timeoutMs),\n })\n const body = await readBody(response)\n raiseForStatus(response, body)\n if (response.status === 204 || !body) return null\n return JSON.parse(body) as unknown\n } catch (error) {\n if (error instanceof ModusError) throw error\n if (error instanceof DOMException && error.name === 'AbortError') {\n throw wrapNetworkError(new Error('Request timed out'), baseUrl)\n }\n throw wrapNetworkError(error, baseUrl)\n }\n }\n\n get(path: string, params?: QueryParams, options: RequestOptions = {}): Promise<unknown> {\n return this.request('GET', path, { params, ...options })\n }\n\n post(path: string, json?: unknown, options: RequestOptions = {}): Promise<unknown> {\n return this.request('POST', path, { json, ...options })\n }\n\n put(path: string, json?: unknown, options: RequestOptions = {}): Promise<unknown> {\n return this.request('PUT', path, { json, ...options })\n }\n\n patch(\n path: string,\n json?: unknown,\n params?: QueryParams,\n options: RequestOptions = {},\n ): Promise<unknown> {\n return this.request('PATCH', path, { json, params, ...options })\n }\n\n delete(path: string, options: RequestOptions = {}): Promise<unknown> {\n return this.request('DELETE', path, options)\n }\n\n private async *stream(\n method: 'GET' | 'POST',\n path: string,\n options: { json?: unknown; params?: QueryParams } & RequestOptions = {},\n ): AsyncGenerator<string> {\n const baseUrl = options.baseUrl ?? this.config.baseUrl\n const url = buildUrl(baseUrl, path, options.params)\n try {\n const response = await this.config.fetch(url, {\n method,\n // Agent-service negotiates SSE vs JSON polling on Accept; JSON-only\n // Accept returns {\"runId\",\"status\":\"pending\"} instead of token SSE.\n headers: {\n ...this.defaultHeaders(),\n ...options.headers,\n Accept: 'text/event-stream',\n },\n body: options.json !== undefined ? JSON.stringify(options.json) : undefined,\n signal: AbortSignal.timeout(this.config.timeoutMs),\n })\n if (!response.ok) {\n const body = await readBody(response)\n raiseForStatus(response, body)\n return\n }\n const contentType = response.headers.get('content-type') ?? ''\n if (!contentType.toLowerCase().includes('text/event-stream')) {\n const preview = await readBodyPreview(response)\n throw new ModusError(\n `Unexpected stream response: expected Content-Type text/event-stream, ` +\n `got ${JSON.stringify(contentType) || '(missing)'}. ` +\n `Body preview: ${preview}`,\n { statusCode: response.status, body: preview },\n )\n }\n if (!response.body) return\n const reader = response.body.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n buffer += decoder.decode(value, { stream: true })\n const lines = buffer.split('\\n')\n buffer = lines.pop() ?? ''\n for (const line of lines) {\n if (line.trim()) yield line\n }\n }\n if (buffer.trim()) yield buffer\n } catch (error) {\n if (error instanceof ModusError) throw error\n if (error instanceof DOMException && error.name === 'AbortError') {\n throw wrapNetworkError(new Error('Request timed out'), baseUrl)\n }\n throw wrapNetworkError(error, baseUrl)\n }\n }\n\n streamGet(path: string, params?: QueryParams, options: RequestOptions = {}): AsyncGenerator<string> {\n return this.stream('GET', path, { params, ...options })\n }\n\n streamPost(path: string, json?: unknown, options: RequestOptions = {}): AsyncGenerator<string> {\n return this.stream('POST', path, { json, ...options })\n }\n}\n","import { createModusConfig, formatConfigForLog, type ModusOptions } from './_config.js'\nimport type { HttpClient } from './_http.js'\nimport { HttpClient as HttpClientImpl } from './_http.js'\n\n/**\n * Shared client wiring for Modus and ModusManagement.\n * Resources attach in Phase 5.\n */\nexport abstract class ModusClientBase {\n protected readonly _config: ReturnType<typeof createModusConfig>\n protected readonly _http: HttpClient\n\n constructor(options: ModusOptions = {}) {\n this._config = createModusConfig(options)\n this._http = new HttpClientImpl(this._config)\n }\n\n get config(): Readonly<typeof this._config> {\n return this._config\n }\n\n /** @internal */\n get http(): HttpClient {\n return this._http\n }\n\n toString(): string {\n return formatConfigForLog(this._config)\n }\n}\n","/** Generated by emit-openapi-write-body-keys.mjs — do not edit. */\nimport type { OperationId } from './operations.js'\n\nexport const WRITE_BODY_ALLOWED_KEYS: Partial<Record<OperationId, readonly string[]>> = {\n ContextCreatorsController_createLink: [\"url\", \"title\", \"isCrawl\", \"pageLimit\"],\n ContextCreatorsController_createNote: [\"title\", \"content\"],\n ContextCreatorsController_createSavedQuery: [\"name\", \"connectionId\", \"query\", \"description\", \"path\"],\n ContextItemsController_lookup: [\"contextType\", \"dataPath\", \"contentProjection\"],\n ContextItemsController_update: [\"contextType\", \"content\", \"description\", \"userFeedback\", \"topics\"],\n CustomContextItemsController_batchCreate: [\"items\"],\n CustomContextItemsController_create: [\"kind\", \"sourceId\", \"sourceName\", \"collectionId\", \"collectionName\", \"externalId\", \"fieldName\", \"name\", \"entityType\", \"description\", \"content\", \"url\", \"attributes\", \"dataType\", \"value\", \"samples\", \"raw\", \"topics\", \"idempotencyKey\", \"access\"],\n CustomContextItemsController_update: [\"name\", \"entityType\", \"description\", \"content\", \"url\", \"attributes\", \"dataType\", \"value\", \"samples\", \"raw\", \"topics\"],\n EvaluationsController_updateConfig: [\"enabled\", \"cadence\", \"judgeModel\", \"judgeGuidance\", \"notifications\"],\n ModusChatController_chat: [\"message\", \"model\"],\n ModusContextController_compose: [\"message\", \"limit\"],\n ModusRunsController_create: [\"message\", \"sessionId\", \"organizationId\", \"version\", \"fileThreadId\", \"config\", \"attachments\", \"userContext\", \"source\", \"runId\", \"subordinateSkillIds\"],\n ResumeRunsController_create: [\"message\", \"sessionId\", \"organizationId\", \"version\", \"fileThreadId\", \"config\", \"attachments\", \"userContext\", \"source\", \"runId\", \"decision\"],\n RunLifecycleController_activeBySession: [\"sessionIds\"],\n RunLifecycleController_cancel: [],\n RunLifecycleController_editQueued: [],\n RunLifecycleController_interrupt: [],\n ScopeChatController_chat: [\"message\", \"model\"],\n ScopeContextController_compose: [\"message\", \"limit\"],\n ScopeMemoriesController_search: [\"query\", \"userId\", \"limit\"],\n ScopeMemoriesController_update: [\"memory\", \"metadata\"],\n ScopeRunsController_create: [\"message\", \"sessionId\", \"organizationId\", \"version\", \"fileThreadId\", \"config\", \"attachments\", \"userContext\", \"source\", \"runId\", \"subordinateSkillIds\"],\n ScopesController_acceptOwnershipTransfer: [],\n ScopesController_create: [\"name\", \"description\", \"expectedOutput\", \"instructions\", \"toolset\", \"model\", \"connectionSet\", \"contextSelections\", \"interfaces\", \"accessConfig\"],\n ScopesController_deploy: [],\n ScopesController_patchMcpConfig: [\"config\"],\n ScopesController_requestOwnershipTransfer: [\"newOwnerUserId\"],\n ScopesController_restore: [],\n ScopesController_update: [\"name\", \"description\", \"expectedOutput\", \"instructions\", \"toolset\", \"model\", \"connectionSet\", \"contextSelections\", \"interfaces\", \"accessConfig\", \"managerId\", \"evaluations\", \"supervisionSubordinateDescriptions\"],\n ScopeSupervisionController_set: [\"subordinateAgentIds\"],\n ScopeSupervisionController_setActive: [\"subordinateAgentIds\"],\n SuggestionsController_recordEvent: [\"event_type\", \"source\", \"skill_id\", \"thread_id\", \"metadata\"],\n WorkflowActionsController_cancel: [],\n WorkflowActionsController_execute: [\"organizationId\", \"sessionId\", \"fileThreadId\", \"workflowAction\", \"previousOutputs\", \"userTimezone\", \"runId\", \"automationId\", \"source\"],\n WorkflowInterfacesController_add: [\"type\", \"name\", \"config\"],\n WorkflowInterfacesController_update: [\"name\", \"config\"],\n WorkflowRunsController_create: [\"message\", \"sessionId\", \"organizationId\", \"version\", \"fileThreadId\", \"config\", \"attachments\", \"userContext\", \"source\", \"runId\"],\n WorkflowsController_acceptOwnershipTransfer: [],\n WorkflowsController_create: [\"name\", \"type\", \"description\", \"trigger\", \"agentSelection\", \"workflowStructure\", \"accessConfig\"],\n WorkflowsController_deploy: [],\n WorkflowsController_requestOwnershipTransfer: [\"newOwnerUserId\"],\n WorkflowsController_restore: [],\n WorkflowsController_toggle: [\"active\"],\n WorkflowsController_update: [\"name\", \"type\", \"description\", \"trigger\", \"agentSelection\", \"workflowStructure\", \"accessConfig\"],\n}\n","import type { OperationId } from './_generated/operations.js'\nimport { WRITE_BODY_ALLOWED_KEYS } from './_generated/write-body-keys.js'\nimport { ValidationError } from './_exceptions.js'\n\nexport const DEFAULT_MAX_PAGE_SIZE = 200\n\nexport function validatePageSize(pageSize: number, maxPageSize?: number): void {\n if (!Number.isInteger(pageSize) || pageSize < 1) {\n throw new Error(`page_size must be a positive int, got ${pageSize}`)\n }\n if (maxPageSize !== undefined && pageSize > maxPageSize) {\n throw new Error(`page_size must be <= ${maxPageSize}, got ${pageSize}`)\n }\n}\n\nexport function validateId(resourceId: number | string, name = 'id'): void {\n if (typeof resourceId === 'string' && !resourceId.trim()) {\n throw new Error(`${name} must be a non-empty string or int`)\n }\n}\n\n// Keep in sync with SkillChatRequestDto.model in the public API contract.\nconst ALLOWED_CHAT_MODELS = new Set([\n 'claude-sonnet-5',\n 'claude-sonnet-4.6',\n 'claude-opus-4.8',\n 'gpt-5.2',\n 'gpt-5.5',\n 'gpt-5-mini',\n 'gpt-oss-120b',\n 'gpt-oss-20b',\n 'qwen3-235b-a22b-2507',\n 'qwen3-coder',\n 'qwen3-32b',\n 'deepseek-chat-v3.1',\n 'minimax-m2.7',\n 'llama-4-maverick',\n 'llama-4-scout',\n 'llama-3.3-70b-instruct',\n 'gemini-3.1-pro-preview',\n 'gemini-3-flash-preview',\n 'grok-4.3-fast',\n 'grok-4.3',\n])\n\nexport function validateChatModel(model: string): void {\n if (!ALLOWED_CHAT_MODELS.has(model)) {\n const supported = [...ALLOWED_CHAT_MODELS].sort().join(', ')\n throw new Error(`Unsupported model ${JSON.stringify(model)}. Choose one of: ${supported}.`)\n }\n}\n\nexport function assertWriteBodyKeys(operationId: OperationId, body: unknown): void {\n const allowed = WRITE_BODY_ALLOWED_KEYS[operationId]\n if (allowed === undefined) return\n if (body === undefined || body === null) return\n if (typeof body !== 'object' || Array.isArray(body)) {\n throw new ValidationError(`Request body must be a plain object for ${operationId}`)\n }\n const allowedSet = new Set(allowed)\n const extra = Object.keys(body as Record<string, unknown>).filter((k) => !allowedSet.has(k))\n if (extra.length > 0) {\n throw new ValidationError(\n `${operationId}: disallowed request body field(s): ${extra.sort().join(', ')}`,\n )\n }\n}\n","import { resolveServiceBaseUrl } from './_config.js'\nimport { OPERATIONS, type OperationId, type OperationSpec } from './_generated/operations.js'\nimport type { HttpClient } from './_http.js'\n\nexport function getOperation(operationId: string): OperationSpec {\n if (!(operationId in OPERATIONS)) {\n throw new Error(\n `Unknown API operation ${JSON.stringify(operationId)}. Upgrade @getmodus/sdk or report a version mismatch.`,\n )\n }\n return OPERATIONS[operationId as OperationId]\n}\n\nfunction formatPath(template: string, pathParams: Record<string, unknown>): string {\n return template\n .split('/')\n .map((segment) => {\n if (!segment.startsWith('{') || !segment.endsWith('}')) return segment\n const key = segment.slice(1, -1)\n if (!(key in pathParams)) {\n throw new Error(`Missing path parameter ${JSON.stringify(key)} for ${JSON.stringify(template)}`)\n }\n return encodeURIComponent(String(pathParams[key]))\n })\n .join('/')\n}\n\nexport function operationBaseUrl(http: HttpClient, operation: OperationSpec): string {\n return resolveServiceBaseUrl(http.config, operation.service, operation.serverUrl)\n}\n\nexport function formatOperationPath(\n operationId: OperationId,\n pathParams: Record<string, unknown> = {},\n): string {\n return formatPath(getOperation(operationId).path, pathParams)\n}\n\ntype QueryValue =\n | string\n | number\n | boolean\n | null\n | undefined\n | readonly (string | number)[]\n\nexport async function invokeOperation(\n http: HttpClient,\n operationId: OperationId,\n options: {\n pathParams?: Record<string, unknown>\n query?: Record<string, QueryValue>\n jsonBody?: unknown\n headers?: Record<string, string>\n } = {},\n): Promise<unknown> {\n const op = getOperation(operationId)\n const path = formatPath(op.path, options.pathParams ?? {})\n const params = options.query\n const requestOptions = {\n baseUrl: operationBaseUrl(http, op),\n headers: options.headers,\n }\n\n switch (op.method) {\n case 'GET':\n return http.get(path, params, requestOptions)\n case 'POST':\n return http.post(path, options.jsonBody, requestOptions)\n case 'PUT':\n return http.put(path, options.jsonBody, requestOptions)\n case 'PATCH':\n return http.patch(path, options.jsonBody, params, requestOptions)\n case 'DELETE':\n return http.delete(path, requestOptions)\n default:\n throw new Error(`Unsupported HTTP method ${JSON.stringify(op.method)}`)\n }\n}\n","import {\n APIConnectionError,\n InternalServerError,\n NotFoundError,\n RateLimitError,\n} from './_exceptions.js'\n\nconst DEPLOY_NOT_FOUND_BACKOFF_MS = 500\nconst MAX_DEPLOY_NOT_FOUND_RETRIES = 1\n\nexport interface WithRetryOptions {\n /** Read-after-write on deploy; one short retry on 404. */\n retryNotFoundOnDeploy?: boolean\n}\n\nconst RETRYABLE = [RateLimitError, InternalServerError, APIConnectionError] as const\n\nfunction isRetryable(error: unknown): error is InstanceType<(typeof RETRYABLE)[number]> {\n return RETRYABLE.some((Cls) => error instanceof Cls)\n}\n\nfunction backoffSeconds(attempt: number, error: unknown): number {\n if (error instanceof RateLimitError && error.retryAfter !== undefined) {\n return Math.max(0, error.retryAfter)\n }\n if (attempt === 0) return 0\n return Math.max(0.5, 2 ** (attempt - 1) + (Math.random() * 0.6 - 0.3))\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n maxRetries: number,\n options: WithRetryOptions = {},\n): Promise<T> {\n let deployNotFoundRetries = 0\n let attempt = 0\n while (true) {\n try {\n return await fn()\n } catch (error) {\n if (\n options.retryNotFoundOnDeploy &&\n error instanceof NotFoundError &&\n deployNotFoundRetries < MAX_DEPLOY_NOT_FOUND_RETRIES\n ) {\n deployNotFoundRetries++\n await sleep(DEPLOY_NOT_FOUND_BACKOFF_MS)\n continue\n }\n if (!isRetryable(error) || attempt >= maxRetries) throw error\n await sleep(backoffSeconds(attempt, error) * 1000)\n attempt++\n }\n }\n}\n","import type { ModusConfig } from './_config.js'\nimport type { OperationId } from './_generated/operations.js'\nimport type { HttpClient } from './_http.js'\nimport { invokeOperation } from './_openapi-invoke.js'\nimport { withRetry } from './_retry.js'\nimport { assertWriteBodyKeys } from './_validation.js'\n\nexport async function invokeWithRetry(\n config: ModusConfig,\n http: HttpClient,\n operationId: OperationId,\n options: {\n pathParams?: Record<string, unknown>\n query?: Record<string, string | number | boolean | readonly (string | number)[] | undefined | null>\n jsonBody?: unknown\n headers?: Record<string, string>\n } = {},\n): Promise<unknown> {\n if (options.jsonBody !== undefined) {\n assertWriteBodyKeys(operationId, options.jsonBody)\n }\n return withRetry(() => invokeOperation(http, operationId, options), config.maxRetries, {\n retryNotFoundOnDeploy: operationId.endsWith('_deploy'),\n })\n}\n\nexport function omitUndefined<T extends Record<string, unknown>>(obj: T): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(obj).filter((entry): entry is [string, unknown] => entry[1] !== undefined),\n )\n}\n\nexport function asRecord(data: unknown): Record<string, unknown> {\n if (typeof data === 'object' && data !== null && !Array.isArray(data)) {\n return data as Record<string, unknown>\n }\n throw new Error(`Expected object response, got ${typeof data}`)\n}\n","import type { ModusConfig } from '../../_config.js'\nimport type { HttpClient } from '../../_http.js'\nimport { aipListParams, buildAipPage, type Page } from '../../_pagination.js'\nimport { asRecord, invokeWithRetry, omitUndefined } from '../../_request.js'\nimport { validatePageSize } from '../../_validation.js'\nimport type { ContextItem } from '../../types/context.js'\n\nexport type CustomContextItemKind =\n | 'source'\n | 'collection'\n | 'entity'\n | 'field'\n | 'entity_samples'\n\nexport interface CustomAttributeInput {\n name: string\n dataType?: string\n value?: unknown\n}\n\nexport interface CreateCustomContextItemInput {\n kind: CustomContextItemKind\n sourceId: string\n sourceName?: string\n collectionId?: string\n collectionName?: string\n externalId?: string\n fieldName?: string\n name?: string\n entityType?: string\n description?: string\n content?: unknown\n url?: string\n attributes?: CustomAttributeInput[]\n dataType?: string\n value?: unknown\n samples?: unknown[]\n raw?: Record<string, unknown>\n topics?: string[]\n idempotencyKey?: string\n}\n\nexport type UpdateCustomContextItemInput = Omit<\n Partial<CreateCustomContextItemInput>,\n 'kind' | 'sourceId' | 'sourceName' | 'collectionId' | 'collectionName' | 'externalId' | 'fieldName' | 'idempotencyKey'\n>\n\nexport interface CreatedCustomContextItem {\n contextItemId: string\n contextType: string\n dataPath: string[]\n title: string | null\n}\n\nexport interface CustomContextItemDeletion {\n uid: string\n contextType: string\n}\n\nfunction parseContextItem(raw: unknown): ContextItem {\n return raw as ContextItem\n}\n\nfunction parseCreatedCustomContextItem(raw: unknown): CreatedCustomContextItem {\n return raw as CreatedCustomContextItem\n}\n\nfunction parseDeletion(raw: unknown): CustomContextItemDeletion {\n return raw as CustomContextItemDeletion\n}\n\nexport class CustomContextItemsResource {\n constructor(\n private readonly http: HttpClient,\n private readonly config: ModusConfig,\n ) {}\n\n list(options: {\n pageSize?: number\n pageToken?: string\n searchQuery?: string\n topics?: string[]\n } = {}): Promise<Page<ContextItem>> {\n const pageSize = options.pageSize ?? 25\n validatePageSize(pageSize)\n return this.listPage(pageSize, options.pageToken, options)\n }\n\n private async listPage(\n pageSize: number,\n pageToken: string | undefined,\n options: { searchQuery?: string; topics?: string[] },\n ): Promise<Page<ContextItem>> {\n const data = asRecord(\n await invokeWithRetry(this.config, this.http, 'CustomContextItemsController_list', {\n query: aipListParams(pageSize, pageToken, {\n searchQuery: options.searchQuery,\n topics: options.topics,\n }) as Record<string, string | number | boolean | readonly string[] | undefined | null>,\n }),\n )\n return buildAipPage(data, 'contextItems', parseContextItem, (token) =>\n this.listPage(pageSize, token, options),\n )\n }\n\n async get(uid: string): Promise<ContextItem> {\n return parseContextItem(\n await invokeWithRetry(this.config, this.http, 'CustomContextItemsController_get', {\n pathParams: { uid },\n }),\n )\n }\n\n async create(input: CreateCustomContextItemInput): Promise<CreatedCustomContextItem> {\n return parseCreatedCustomContextItem(\n await invokeWithRetry(this.config, this.http, 'CustomContextItemsController_create', {\n jsonBody: omitUndefined(input as unknown as Record<string, unknown>),\n }),\n )\n }\n\n async batchCreate(inputs: CreateCustomContextItemInput[]): Promise<CreatedCustomContextItem[]> {\n const data = asRecord(\n await invokeWithRetry(this.config, this.http, 'CustomContextItemsController_batchCreate', {\n jsonBody: {\n items: inputs.map((input) => omitUndefined(input as unknown as Record<string, unknown>)),\n },\n }),\n )\n const items = data.contextItems\n return Array.isArray(items) ? items.map(parseCreatedCustomContextItem) : []\n }\n\n async update(uid: string, input: UpdateCustomContextItemInput): Promise<{ uid: string }> {\n return asRecord(\n await invokeWithRetry(this.config, this.http, 'CustomContextItemsController_update', {\n pathParams: { uid },\n jsonBody: omitUndefined(input as unknown as Record<string, unknown>),\n }),\n ) as { uid: string }\n }\n\n async delete(uid: string): Promise<CustomContextItemDeletion> {\n return parseDeletion(\n await invokeWithRetry(this.config, this.http, 'CustomContextItemsController_delete', {\n pathParams: { uid },\n }),\n )\n }\n}\n","import type { ModusConfig } from '../../_config.js'\nimport type { HttpClient } from '../../_http.js'\nimport { aipListParams, buildAipPage, type Page } from '../../_pagination.js'\nimport { asRecord, invokeWithRetry } from '../../_request.js'\nimport { validateId, validatePageSize } from '../../_validation.js'\nimport type { Conversation, ConversationListItem } from '../../types/conversations.js'\n\nfunction parseListItem(raw: unknown): ConversationListItem {\n return raw as ConversationListItem\n}\n\nfunction parseConversation(raw: unknown): Conversation {\n return raw as Conversation\n}\n\n/** Read access to a scope's conversation threads (`/api/v1/scopes/:id/conversations`). */\nexport class ScopeConversationsResource {\n constructor(\n private readonly http: HttpClient,\n private readonly config: ModusConfig,\n private readonly scopeId: number | string,\n ) {}\n\n list(options: { pageSize?: number; pageToken?: string } = {}): Promise<Page<ConversationListItem>> {\n const pageSize = options.pageSize ?? 25\n validatePageSize(pageSize)\n return this.listPage(pageSize, options.pageToken)\n }\n\n private async listPage(\n pageSize: number,\n pageToken: string | undefined,\n ): Promise<Page<ConversationListItem>> {\n validateId(this.scopeId, 'scope_id')\n const data = asRecord(\n await invokeWithRetry(this.config, this.http, 'ScopeConversationsController_list', {\n pathParams: { id: this.scopeId },\n query: aipListParams(pageSize, pageToken) as Record<\n string,\n string | number | boolean | undefined | null\n >,\n }),\n )\n return buildAipPage(data, 'conversations', parseListItem, (token) =>\n this.listPage(pageSize, token),\n )\n }\n\n async get(\n threadId: string,\n options: { messageLimit?: number; beforeMessageIndex?: number } = {},\n ): Promise<Conversation> {\n validateId(this.scopeId, 'scope_id')\n validateId(threadId, 'thread_id')\n if (options.beforeMessageIndex !== undefined && options.messageLimit === undefined) {\n throw new Error('beforeMessageIndex requires messageLimit')\n }\n const data = await invokeWithRetry(this.config, this.http, 'ScopeConversationsController_get', {\n pathParams: { id: this.scopeId, threadId },\n query: {\n messageLimit: options.messageLimit,\n beforeMessageIndex: options.beforeMessageIndex,\n },\n })\n return parseConversation(data)\n }\n}\n"],"mappings":"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","names":["msg"]}
package/dist/index.cjs CHANGED
@@ -997,8 +997,12 @@ var ValidationError = class extends ModusError {
997
997
  }
998
998
  };
999
999
 
1000
- // src/_chat.ts
1000
+ // src/_agent_run_request.ts
1001
1001
  var import_node_crypto = require("crypto");
1002
+ function resolveAgentRunSessionId(sessionId) {
1003
+ if (typeof sessionId === "string" && sessionId.trim()) return sessionId.trim();
1004
+ return (0, import_node_crypto.randomUUID)();
1005
+ }
1002
1006
 
1003
1007
  // src/_streaming.ts
1004
1008
  var SILENTLY_IGNORED = /* @__PURE__ */ new Set([
@@ -1198,7 +1202,7 @@ function effectiveThreadId(threadId) {
1198
1202
  return threadId;
1199
1203
  }
1200
1204
  function resolveSessionId(threadId) {
1201
- return effectiveThreadId(threadId) ?? (0, import_node_crypto.randomUUID)();
1205
+ return resolveAgentRunSessionId(effectiveThreadId(threadId));
1202
1206
  }
1203
1207
  function chatPath(resource, resourceId, options) {
1204
1208
  const safeId = encodeURIComponent(String(resourceId));
@@ -1523,7 +1527,7 @@ function formatConfigForLog(config) {
1523
1527
  }
1524
1528
 
1525
1529
  // src/_http.ts
1526
- var USER_AGENT = `modus-typescript/${"0.2.2"} (node/${process.version}; ${process.platform})`;
1530
+ var USER_AGENT = `modus-typescript/${"0.2.3"} (node/${process.version}; ${process.platform})`;
1527
1531
  function buildUrl(baseUrl, path, params) {
1528
1532
  const url = new URL(path.startsWith("/") ? path : `/${path}`, baseUrl);
1529
1533
  if (params) {
@@ -1618,6 +1622,26 @@ function wrapNetworkError(error, baseUrl) {
1618
1622
  async function readBody(response) {
1619
1623
  return response.text();
1620
1624
  }
1625
+ async function readBodyPreview(response, maxChars = 200) {
1626
+ if (!response.body) return "";
1627
+ const reader = response.body.getReader();
1628
+ const decoder = new TextDecoder();
1629
+ let out = "";
1630
+ try {
1631
+ while (out.length < maxChars) {
1632
+ const { done, value } = await reader.read();
1633
+ if (done) break;
1634
+ out += decoder.decode(value, { stream: true });
1635
+ if (out.length >= maxChars) {
1636
+ out = out.slice(0, maxChars);
1637
+ break;
1638
+ }
1639
+ }
1640
+ } finally {
1641
+ await reader.cancel().catch(() => void 0);
1642
+ }
1643
+ return out;
1644
+ }
1621
1645
  var HttpClient = class {
1622
1646
  constructor(config) {
1623
1647
  this.config = config;
@@ -1673,7 +1697,13 @@ var HttpClient = class {
1673
1697
  try {
1674
1698
  const response = await this.config.fetch(url, {
1675
1699
  method,
1676
- headers: { ...this.defaultHeaders(), ...options.headers },
1700
+ // Agent-service negotiates SSE vs JSON polling on Accept; JSON-only
1701
+ // Accept returns {"runId","status":"pending"} instead of token SSE.
1702
+ headers: {
1703
+ ...this.defaultHeaders(),
1704
+ ...options.headers,
1705
+ Accept: "text/event-stream"
1706
+ },
1677
1707
  body: options.json !== void 0 ? JSON.stringify(options.json) : void 0,
1678
1708
  signal: AbortSignal.timeout(this.config.timeoutMs)
1679
1709
  });
@@ -1682,6 +1712,14 @@ var HttpClient = class {
1682
1712
  raiseForStatus(response, body);
1683
1713
  return;
1684
1714
  }
1715
+ const contentType = response.headers.get("content-type") ?? "";
1716
+ if (!contentType.toLowerCase().includes("text/event-stream")) {
1717
+ const preview = await readBodyPreview(response);
1718
+ throw new ModusError(
1719
+ `Unexpected stream response: expected Content-Type text/event-stream, got ${JSON.stringify(contentType) || "(missing)"}. Body preview: ${preview}`,
1720
+ { statusCode: response.status, body: preview }
1721
+ );
1722
+ }
1685
1723
  if (!response.body) return;
1686
1724
  const reader = response.body.getReader();
1687
1725
  const decoder = new TextDecoder();
@@ -1888,6 +1926,9 @@ function parseActiveRunsPage(raw, fetchPage) {
1888
1926
  function randomRunId() {
1889
1927
  return (0, import_node_crypto2.randomUUID)();
1890
1928
  }
1929
+ function sessionIdFromBody(body) {
1930
+ return resolveAgentRunSessionId(body.sessionId);
1931
+ }
1891
1932
  function makeAgentRunStream(runId, events) {
1892
1933
  return {
1893
1934
  runId,
@@ -2024,10 +2065,12 @@ var WorkflowRunsResource = class {
2024
2065
  }
2025
2066
  createRun(operationId, body, pathParams, options) {
2026
2067
  const runId = options.idempotencyKey?.trim() || body.runId?.trim() || randomRunId();
2068
+ const sessionId = sessionIdFromBody(body);
2027
2069
  const op = getOperation(operationId);
2028
2070
  const path = formatOperationPath(operationId, pathParams);
2029
2071
  const lines = this.http.streamPost(path, {
2030
2072
  ...body,
2073
+ sessionId,
2031
2074
  streamProtocolVersion: 2
2032
2075
  }, {
2033
2076
  baseUrl: operationBaseUrl(this.http, op),