@getmodus/sdk 0.1.0 → 0.2.1

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
@@ -1,48 +1,42 @@
1
1
  # Changelog
2
2
 
3
- **Current npm release:** not yet published. Pre-release via `@beta` dist-tag when available.
3
+ **Current npm release:** [`0.2.1`](https://www.npmjs.com/package/@getmodus/sdk/v/0.2.1).
4
4
 
5
- ## [Unreleased]
5
+
6
+ ## [0.2.1] — 2026-07-20
6
7
 
7
8
  ### Changed
8
9
 
9
- - npm package scope is **`@getmodus/sdk`** (npm org `getmodus`; `@modus` scope was unavailable). Install with `npm install @getmodus/sdk`.
10
+ - Public README brought to parity with the Python SDK guide (product framing, auth, Modus vs scopes, chat/stream/context, management, pagination, errors).
11
+ - Added `assets/modus-logo.png` / `.svg` for GitHub mirror and package docs.
10
12
 
11
- ### Changed (BREAKING)
13
+ ## [0.2.0] — 2026-07-20
12
14
 
13
- - **MCP `get_context_data` batch + ACL (BREAKING)** — Renamed from `fetch_context_file`. Pass `{ items[], sessionId? }` instead of top-level `itemId`. Response `{ results[] }` with per-item `ok` / errors (max 20). ACL + scope surface authorization; optional `sessionId` for Mongo offload cache.
14
- - **`/scopes` + `/workflows` are now the only public surface.** `client.scopes` / `client.workflows` and `mgmt.scopes` / `mgmt.workflows` are canonical; they call the `/api/v1/scopes` and `/api/v1/workflows` routes and the `ScopesController_*` / `WorkflowsController_*` operationIds.
15
- - Run creation: `client.workflows.runs.createScope(scopeId, body)` replaces the old `createSkill(...)` (routes to `/agent/v1/scopes/:id/runs`).
16
- - Existing tokens that carry the legacy `skills:*` / `agents:*` scopes continue to authorize the renamed routes via server-side scope equivalence — no token re-issuance is required.
15
+ ### Added
17
16
 
18
- ### Removed (BREAKING)
17
+ - Canonical **`client.scopes` / `client.workflows`** and **`mgmt.scopes` / `mgmt.workflows`** against `/api/v1/scopes` and `/api/v1/workflows`.
18
+ - **`client.suggestions`** — `list()` / `recordEvent()`.
19
+ - **`client.workflows.runs.active()` / `activeBySession(...)`** — active conversation runs.
20
+ - **`mgmt.scopes.evaluations(scopeId)`** — evaluation config, trigger, run history.
21
+ - Bounded conversation windows via optional `{ messageLimit, beforeMessageIndex }` on `conversations(id).get()`.
22
+ - MCP **`get_context_data`** batch + ACL: `{ items[], sessionId? }` → `{ results[] }` (max 20).
23
+ - Shipped examples under `examples/scripts/`.
24
+ - Full public OpenAPI operation coverage (contract-tested). Dual ESM + CJS. Zero runtime dependencies.
19
25
 
20
- - **`client.skills` / `client.agents`** and **`mgmt.skills` / `mgmt.agents`** accessors — use `client.scopes` / `client.workflows` and `mgmt.scopes` / `mgmt.workflows`. The legacy `/api/v1/skills` and `/api/v1/agents` routes (and their `SkillsController_*` / `AgentsController_*` operationIds) no longer exist.
21
- - Placeholder `SECURITY.md` (no verified security contact yet).
26
+ ### Changed
22
27
 
23
- ### Added
28
+ - Package name is **`@getmodus/sdk`** (npm org `getmodus`). Install: `npm install @getmodus/sdk`.
29
+ - Run creation: `client.workflows.runs.createScope(scopeId, body)` (not `createSkill`).
30
+ - Public docs use **Scope** / **Workflow** vocabulary.
24
31
 
25
- - Shipped examples under `examples/scripts/` (`quickstart`, `modus_chat`, `chat`, `manage_skill`) with revenue / ARR analyst prompts.
26
- - `skills.conversations(id).get()` accepts an optional `{ messageLimit, beforeMessageIndex }` to request a bounded message window; the response gains an optional `messageWindow` field describing the returned slice. Omit both for the full conversation (unchanged default behavior).
27
- - **`client.suggestions`** — `list()` returns approved suggested questions (optional `skillId`/`skillIds` filter), `recordEvent()` records an impression/click/dismiss event against a suggestion.
28
- - **`client.workflows.runs.active(options)` / `activeBySession(sessionIds)`** — list active (queued/pending/running) conversation runs for the current user, or look up active runs for specific conversation thread ids.
29
- - **`claude-sonnet-4.6`** restored as an allowed run `model` value (scope/workflow run creation and chat).
30
- - **`mgmt.scopes.evaluations(scopeId)`** — `getConfig()` / `updateConfig()` manage a scope's evaluation schedule and judge settings; `triggerRun()` starts a manual evaluation run; `listRuns()` / `getRun(runId)` read run history and per-case results.
32
+ ### Removed
31
33
 
32
- ### Fixed
34
+ - Legacy **`client.skills` / `client.agents`** and **`mgmt.skills` / `mgmt.agents`** accessors — use `scopes` / `workflows`.
33
35
 
34
- - Typed run event streams now recover from interrupted model providers and emit `assistant_content_reset` when previously streamed assistant content is replaced.
36
+ ## [Unreleased]
35
37
 
36
- ## [0.1.0] — 2026-06-21
38
+ ## [0.1.0] — 2026-07-20
37
39
 
38
40
  ### Added
39
41
 
40
- - **`@getmodus/sdk`** — official TypeScript client for Modus (Node.js 18+).
41
- - **`Modus`** client — read / invoke: skills, agents, context, connections, Modus assistant chat, runs.
42
- - **`ModusManagement`** (`@getmodus/sdk/management`) — configure: CRUD, deploy, context creators, usage, org admin.
43
- - Cursor-based **`Page<T>`** pagination with `autoPagingIter()` (AIP-158 `pageSize` / `pageToken`).
44
- - Automatic retry on 429 and 5xx with exponential backoff and `Retry-After` support.
45
- - SSE streaming chat via `ChatStream` (`textStream()`, `eventStream()`).
46
- - **58/58** public API operations covered; contract tests enforce OpenAPI parity.
47
- - Dual **ESM + CommonJS** build (`import` and `require()`).
48
- - Zero runtime dependencies.
42
+ - First public npm release of **`@getmodus/sdk`** (Node.js 18+): `Modus` + `ModusManagement`, pagination, retries, SSE chat, OpenAPI contract coverage.
package/README.md CHANGED
@@ -1,79 +1,222 @@
1
- # @getmodus/sdk
1
+ <p align="center">
2
+ <img
3
+ src="https://raw.githubusercontent.com/modus-data/modus-sdk-typescript/main/assets/modus-logo.png"
4
+ alt="Modus"
5
+ width="280"
6
+ />
7
+ </p>
2
8
 
3
- Official TypeScript client for Modus (pre-release).
9
+ # Modus TypeScript SDK
10
+
11
+ [![npm](https://img.shields.io/npm/v/@getmodus/sdk)](https://www.npmjs.com/package/@getmodus/sdk)
12
+ [![Node.js](https://img.shields.io/node/v/@getmodus/sdk)](https://www.npmjs.com/package/@getmodus/sdk)
13
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
14
+
15
+ Official TypeScript / JavaScript client for Modus — your organization's context layer for AI.
4
16
 
5
17
  **Runtime:** Node.js 18+. Ships **ESM** and **CommonJS**. Not intended for browsers or edge runtimes (uses Node APIs such as `process.env`).
6
18
 
7
- ## Install (coming soon)
19
+ ## What is Modus?
20
+
21
+ Modus is your organization's context layer: it connects assistants to curated knowledge about your data, systems, and workflows so answers use org-specific context instead of generic guesses.
22
+
23
+ - **Modus** — your org-wide assistant (same capability as the Modus home page)
24
+ - **Scopes** — published assistants you chat with, each with its own context and tools
25
+ - **Workflows** — automations that run on a schedule or trigger
26
+ - **Context items** — curated knowledge Modus composes at runtime when answering
27
+
28
+ ## Two clients in one package
29
+
30
+ **`Modus`** is what most people need. Use it to chat with Modus, run scopes, browse context, and inspect workflow runs — the same things you do in the Modus app day to day.
31
+
32
+ **`ModusManagement`** (`@getmodus/sdk/management`) is for org setup: create, update, and deploy scopes, workflows, and context — the CRUD operations you would use in the Modus UI as an admin.
33
+
34
+ If you are getting started, use `Modus` only. Reach for `ModusManagement` when you are automating configuration.
35
+
36
+ ## Installation
8
37
 
9
38
  ```bash
10
- npm install @getmodus/sdk@beta
39
+ npm install @getmodus/sdk
11
40
  ```
12
41
 
13
- ## Usage
14
-
15
- ### ESM (`import`)
42
+ ## Getting started
16
43
 
17
44
  ```ts
18
45
  import { Modus } from '@getmodus/sdk'
19
- import { ModusManagement } from '@getmodus/sdk/management'
20
46
 
21
- const client = new Modus({ apiKey: process.env.MODUS_API_KEY })
22
- const mgmt = new ModusManagement({ apiKey: process.env.MODUS_API_KEY })
47
+ // Reads MODUS_API_KEY from the environment, or pass apiKey explicitly
48
+ const client = new Modus()
49
+
50
+ for await (const scope of (await client.scopes.list()).autoPagingIter()) {
51
+ console.log(scope.name, scope.status)
52
+ }
53
+
54
+ const scope = await client.scopes.get('revenue-analysis')
55
+ console.log(scope.name, scope.description)
23
56
 
24
- const scopes = await client.scopes.list()
25
- const draft = await mgmt.scopes.create({ name: 'Analyst', model: 'claude-sonnet-5' })
57
+ for await (const item of (await client.context.items.list()).autoPagingIter()) {
58
+ console.log(item.uid, item.contextType, item.description ?? item.uid)
59
+ }
26
60
  ```
27
61
 
28
62
  ### CommonJS (`require`)
29
63
 
30
64
  ```js
31
65
  const { Modus } = require('@getmodus/sdk')
32
- const { ModusManagement } = require('@getmodus/sdk/management')
33
-
34
66
  const client = new Modus({ apiKey: process.env.MODUS_API_KEY })
35
67
  ```
36
68
 
37
- ## Examples
69
+ ## Authentication
38
70
 
39
- Runnable scripts (mirrored to the public GitHub repo):
40
-
41
- - `examples/scripts/quickstart.ts` — list scopes and context (`Modus`)
42
- - `examples/scripts/modus_chat.ts` — buffered and streaming Modus chat, context compose, conversations
43
- - `examples/scripts/chat.ts` — buffered scope chat with thread follow-up
44
- - `examples/scripts/manage_skill.ts` — create and deploy a scope (`ModusManagement`, `--write` optional)
71
+ Create an API token in the Modus app (**Settings → API Tokens** on your Modus home page). Prefer an environment variable over hardcoding keys in source:
45
72
 
46
73
  ```bash
47
74
  export MODUS_API_KEY=modus_xxx
48
- npx tsx examples/scripts/quickstart.ts
49
75
  ```
50
76
 
51
- From the Modus monorepo (after build):
77
+ ```ts
78
+ const client = new Modus({ apiKey: 'modus_xxx' })
79
+ ```
52
80
 
53
- ```bash
54
- pnpm nx run modus-sdk-typescript:build
55
- MODUS_API_KEY=modus_xxx node --import tsx distribution/clients/typescript/modus-sdk/examples/scripts/quickstart.ts
81
+ ## Using Modus
82
+
83
+ ### Modus vs scopes
84
+
85
+ | Surface | SDK | Use when |
86
+ |---------|-----|----------|
87
+ | **Modus** (org-wide) | `client.modus.*` | Full-environment assistant — same as the Modus home page |
88
+ | **Scope** | `client.scopes.*` | A specific published scope and its configured context/tools |
89
+
90
+ Use `client.modus.chat()` for native Modus — not a scope-id shortcut.
91
+
92
+ ### Org-wide Modus assistant
93
+
94
+ ```ts
95
+ const MODEL = 'claude-sonnet-5'
96
+
97
+ const result = await client.modus.chat('What were our top revenue drivers last quarter?', {
98
+ model: MODEL,
99
+ })
100
+ console.log(result.content, result.threadId)
101
+
102
+ const followUp = await client.modus.chat('Break that down by region.', {
103
+ model: MODEL,
104
+ threadId: result.threadId,
105
+ })
106
+ console.log(followUp.content)
107
+
108
+ const stream = client.modus.chatStream('Summarize this week', { model: MODEL })
109
+ for await (const chunk of stream.textStream()) {
110
+ process.stdout.write(chunk)
111
+ }
112
+
113
+ const ctx = await client.modus.getContext('What tables describe customer churn?', { limit: 10 })
114
+ console.log(ctx.originalCount, ctx.sessionId)
115
+
116
+ for await (const row of (
117
+ await client.modus.conversations.list({ kind: 'modus', pageSize: 10 })
118
+ ).autoPagingIter()) {
119
+ console.log(row.threadId, row.firstMessage)
120
+ }
56
121
  ```
57
122
 
58
- ## Development
123
+ ### Scopes
59
124
 
60
- From the Modus monorepo root:
125
+ ```ts
126
+ const MODEL = 'claude-sonnet-5'
61
127
 
62
- ```bash
63
- pnpm nx run modus-sdk-typescript:generate
64
- pnpm nx run modus-sdk-typescript:build
65
- pnpm nx run modus-sdk-typescript:test
128
+ const result = await client.scopes.chat(scopeId, 'Hello', { model: MODEL })
129
+ console.log(result.content, result.threadId)
130
+
131
+ const stream = client.scopes.chatStream(scopeId, 'Hi', { model: MODEL })
132
+ for await (const chunk of stream.textStream()) {
133
+ process.stdout.write(chunk)
134
+ }
66
135
  ```
67
136
 
68
- See [`../dev-examples/`](../dev-examples/) for additional runnable scripts (monorepo only).
137
+ ### Context
69
138
 
70
- ```bash
71
- # Batch smoke (from repo root; uses .env for MODUS_API_KEY / MODUS_BASE_URL)
72
- bash distribution/clients/typescript/dev-examples/run_all.sh
73
- bash distribution/clients/typescript/dev-examples/run_all.sh --write
74
- bash distribution/clients/typescript/dev-examples/run_all.sh --chat # LLM credits; needs healthy agent backend
139
+ ```ts
140
+ for await (const item of (await client.context.items.list()).autoPagingIter()) {
141
+ console.log(item.uid, item.description ?? item.uid)
142
+ }
143
+ ```
144
+
145
+ ### Workflows
146
+
147
+ ```ts
148
+ const workflow = await client.workflows.get(workflowId)
149
+ for await (const run of (await client.workflows.runs.list(workflowId, { pageSize: 20 })).autoPagingIter()) {
150
+ console.log(run.id, run.status)
151
+ }
152
+ ```
153
+
154
+ Workflow chat is not on the public PAT surface. Use `client.modus.chat()` for org-wide conversation or `client.scopes.chat()` for a published scope.
155
+
156
+ ## Managing your org
157
+
158
+ ```ts
159
+ import { ModusManagement } from '@getmodus/sdk/management'
160
+
161
+ const mgmt = new ModusManagement() // reads MODUS_API_KEY
162
+ const scope = await mgmt.scopes.create({ name: 'Analyst', model: 'claude-sonnet-5' })
163
+ await mgmt.scopes.deploy(scope.id)
164
+ ```
165
+
166
+ Requires a token with write access to scopes and workflows (same as the Modus UI).
167
+
168
+ ## Pagination
169
+
170
+ List endpoints return a `Page<T>`. Iterate the current page, or use `.autoPagingIter()` for all pages:
171
+
172
+ ```ts
173
+ for await (const scope of (await client.scopes.list()).autoPagingIter()) {
174
+ console.log(scope.name)
175
+ }
75
176
  ```
76
177
 
77
- Shipped `chat.ts` accepts optional `MODUS_SCOPE_ID` to pick the scope. Chat may return `INTERNAL_ERROR` when the target environment's agent runtime is down — that is not an SDK bug.
178
+ `client.modus.conversations.list()` accepts `kind: 'modus' | 'skills' | 'all'` (default `'all'`).
179
+
180
+ ## Error handling
181
+
182
+ ```ts
183
+ import {
184
+ Modus,
185
+ NotFoundError,
186
+ AuthenticationError,
187
+ RateLimitError,
188
+ ModusError,
189
+ } from '@getmodus/sdk'
190
+
191
+ try {
192
+ await client.scopes.get(999)
193
+ } catch (e) {
194
+ if (e instanceof NotFoundError) {
195
+ console.log('Scope not found')
196
+ } else if (e instanceof AuthenticationError) {
197
+ console.log('Check your MODUS_API_KEY')
198
+ } else if (e instanceof RateLimitError) {
199
+ console.log(`Rate limited. Retry after ${e.retryAfter}s`)
200
+ } else if (e instanceof ModusError) {
201
+ console.log(`API error ${e.statusCode}: ${e.message}`)
202
+ } else {
203
+ throw e
204
+ }
205
+ }
206
+ ```
207
+
208
+ ## Examples
209
+
210
+ Runnable scripts ship in this repository:
211
+
212
+ - `examples/scripts/quickstart.ts` — list scopes and context (`Modus`)
213
+ - `examples/scripts/modus_chat.ts` — buffered and streaming Modus chat, context compose, conversations
214
+ - `examples/scripts/chat.ts` — buffered scope chat with thread follow-up
215
+ - `examples/scripts/manage_skill.ts` — create and deploy a scope (`ModusManagement`, `--write` optional)
216
+
217
+ ```bash
218
+ export MODUS_API_KEY=modus_xxx
219
+ npx tsx examples/scripts/quickstart.ts
220
+ ```
78
221
 
79
222
  See [CHANGELOG.md](./CHANGELOG.md) for release history.
Binary file
@@ -0,0 +1,13 @@
1
+ <svg width="285" height="61" viewBox="0 0 285 61" fill="none" color="#3262FF" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_286_163)">
3
+ <path d="M55.2983 42.8834C54.751 42.8368 54.2105 42.808 53.6606 42.7975C43.9042 42.4159 33.1793 49.1184 31.4067 59.7994C31.3068 60.3796 31.2328 60.9615 31.186 61.5553H24.4956C24.4488 60.9615 24.3748 60.3796 24.2749 59.7994C22.5023 49.1183 11.7775 42.4158 2.021 42.7975C1.4711 42.808 0.930604 42.8368 0.383301 42.8834V33.9069C1.12817 33.9537 1.85781 34.0252 2.59521 34.1207C15.2942 35.53 26.8692 45.713 27.8403 58.0631C28.8114 45.7131 40.3875 35.5301 53.0864 34.1207C53.8238 34.0252 54.5535 33.9537 55.2983 33.9069V42.8834Z" fill="currentColor"/>
4
+ <path d="M55.301 18.2284C54.7538 18.2751 54.2131 18.3038 53.6633 18.3143C43.9068 18.696 33.182 11.9935 31.4094 1.31238C31.3095 0.732203 31.2355 0.15036 31.1887 -0.443481H24.4983C24.4515 0.150316 24.3775 0.732243 24.2776 1.31238C22.505 11.9934 11.7802 18.6959 2.02368 18.3143C1.47379 18.3038 0.933275 18.2751 0.385986 18.2284V27.205C1.13082 27.1581 1.86052 27.0867 2.5979 26.9911C15.2955 25.5819 26.8698 15.4008 27.843 3.05261C28.8162 15.4009 40.3914 25.582 53.0891 26.9911C53.8264 27.0866 54.5562 27.1581 55.301 27.205V18.2284Z" fill="currentColor"/>
5
+ <path d="M27.8416 15.1049C27.8416 15.1049 29.1317 23.1704 32.1291 26.1678C35.1265 29.1651 43.192 30.4553 43.192 30.4553C43.192 30.4553 35.1265 31.7455 32.1291 34.7428C29.1317 37.7402 27.8416 45.8057 27.8416 45.8057C27.8416 45.8057 26.5514 37.7402 23.554 34.7428C20.5567 31.7455 12.4911 30.4553 12.4911 30.4553C12.4911 30.4553 20.5567 29.1651 23.554 26.1678C26.5514 23.1704 27.8416 15.1049 27.8416 15.1049Z" fill="currentColor"/>
6
+ <path d="M69.9199 53.5372V18.4094H76.2005V22.7183C78.2454 19.0667 81.4587 17.387 85.7675 17.387C90.5876 17.387 94.1661 19.724 95.8458 23.6677C98.1097 19.4319 101.761 17.387 106.362 17.387C114.469 17.387 118.924 22.2801 118.924 31.0438V53.5372H111.913V31.4089C111.913 26.5159 109.576 23.8137 105.121 23.8137C100.958 23.8137 97.9637 27.0271 97.9637 31.628V53.5372H90.8797V31.4089C90.8797 26.5159 88.5427 23.8137 84.2339 23.8137C79.9981 23.8137 77.0039 27.0271 77.0039 31.628V53.5372H69.9199ZM145.316 54.5597C134.653 54.5597 127.204 47.1105 127.204 35.9368C127.204 24.8361 134.653 17.387 145.316 17.387C156.051 17.387 163.427 24.8361 163.427 35.9368C163.427 47.1105 156.051 54.5597 145.316 54.5597ZM134.507 35.9368C134.507 43.2399 138.889 48.133 145.316 48.133C151.815 48.133 156.124 43.2399 156.124 35.9368C156.124 28.7068 151.815 23.8137 145.316 23.8137C138.889 23.8137 134.507 28.7068 134.507 35.9368ZM186.865 54.5597C176.86 54.5597 169.995 47.1105 169.995 35.9368C169.995 24.8361 176.86 17.387 186.865 17.387C191.978 17.387 196.14 19.2858 198.331 22.7183V2.41571H205.342V53.5372H199.062V48.6442C196.725 52.3687 192.343 54.5597 186.865 54.5597ZM177.298 35.9368C177.298 43.2399 181.607 48.133 187.961 48.133C194.315 48.133 198.477 43.2399 198.477 35.9368C198.477 28.7068 194.315 23.8137 187.961 23.8137C181.607 23.8137 177.298 28.7068 177.298 35.9368ZM229.692 54.5597C221.148 54.5597 215.89 49.3014 215.89 39.5884V18.4094H222.974V38.9311C222.974 45.2117 225.895 48.133 231.007 48.133C236.338 48.133 239.771 44.3354 239.771 38.712V18.4094H246.855V53.5372H240.574V49.5205C238.237 52.953 234.22 54.5597 229.692 54.5597ZM270.113 54.5597C260.619 54.5597 254.996 50.7621 254.631 43.532H261.934C262.299 47.0375 265.147 48.7902 270.259 48.7902C274.933 48.7902 277.781 46.8184 277.781 43.605C277.781 40.9759 275.81 39.4423 272.158 39.0771L266.535 38.4929C259.962 37.8356 255.799 34.1841 255.799 28.3416C255.799 21.6228 261.422 17.387 270.04 17.387C278.804 17.387 284.208 21.0385 284.646 28.1956H277.562C277.343 24.8361 274.568 23.1564 269.967 23.1564C265.585 23.1564 262.81 24.9822 262.81 27.9765C262.81 30.5325 264.709 31.9201 268.799 32.4313L274.495 33.0886C281.141 33.8189 284.938 37.5435 284.938 43.3129C284.938 50.1778 279.169 54.5597 270.113 54.5597Z" fill="currentColor"/>
7
+ </g>
8
+ <defs>
9
+ <clipPath id="clip0_286_163">
10
+ <rect width="285" height="61" fill="currentColor"/>
11
+ </clipPath>
12
+ </defs>
13
+ </svg>
@@ -1102,7 +1102,7 @@ function formatConfigForLog(config) {
1102
1102
  }
1103
1103
 
1104
1104
  // src/_http.ts
1105
- var USER_AGENT = `modus-typescript/${"0.1.0"} (node/${process.version}; ${process.platform})`;
1105
+ var USER_AGENT = `modus-typescript/${"0.2.1"} (node/${process.version}; ${process.platform})`;
1106
1106
  function buildUrl(baseUrl, path, params) {
1107
1107
  const url = new URL(path.startsWith("/") ? path : `/${path}`, baseUrl);
1108
1108
  if (params) {
@@ -1678,4 +1678,4 @@ export {
1678
1678
  CustomContextItemsResource,
1679
1679
  ScopeConversationsResource
1680
1680
  };
1681
- //# sourceMappingURL=chunk-VLHNZJBG.js.map
1681
+ //# sourceMappingURL=chunk-UOBVSNOW.js.map
@@ -4093,7 +4093,6 @@ interface components {
4093
4093
  */
4094
4094
  streamProtocolVersion?: 2;
4095
4095
  experimentalFeatures?: boolean;
4096
- modelOnly?: boolean;
4097
4096
  debug?: boolean;
4098
4097
  };
4099
4098
  AttachmentsDto: {
@@ -4172,7 +4171,6 @@ interface components {
4172
4171
  */
4173
4172
  streamProtocolVersion?: 2;
4174
4173
  experimentalFeatures?: boolean;
4175
- modelOnly?: boolean;
4176
4174
  debug?: boolean;
4177
4175
  /** @description Saved scope ids to scope the Modus run to. */
4178
4176
  subordinateSkillIds?: number[];
@@ -4205,7 +4203,6 @@ interface components {
4205
4203
  */
4206
4204
  streamProtocolVersion?: 2;
4207
4205
  experimentalFeatures?: boolean;
4208
- modelOnly?: boolean;
4209
4206
  debug?: boolean;
4210
4207
  /**
4211
4208
  * @description Decision that resumes the interrupted run.
@@ -4231,7 +4228,6 @@ interface components {
4231
4228
  toolset?: Record<string, never>;
4232
4229
  strategies?: string[];
4233
4230
  experimentalFeatures?: boolean;
4234
- modelOnly?: boolean;
4235
4231
  debug?: boolean;
4236
4232
  /** @description Set false to keep composer output inline. */
4237
4233
  composerFileOffload?: boolean;
@@ -4276,7 +4272,6 @@ interface components {
4276
4272
  */
4277
4273
  streamProtocolVersion?: 2;
4278
4274
  experimentalFeatures?: boolean;
4279
- modelOnly?: boolean;
4280
4275
  debug?: boolean;
4281
4276
  /** @description Subordinate scope ids for an unsaved supervisor-scope draft test. */
4282
4277
  subordinateSkillIds?: number[];
@@ -4093,7 +4093,6 @@ interface components {
4093
4093
  */
4094
4094
  streamProtocolVersion?: 2;
4095
4095
  experimentalFeatures?: boolean;
4096
- modelOnly?: boolean;
4097
4096
  debug?: boolean;
4098
4097
  };
4099
4098
  AttachmentsDto: {
@@ -4172,7 +4171,6 @@ interface components {
4172
4171
  */
4173
4172
  streamProtocolVersion?: 2;
4174
4173
  experimentalFeatures?: boolean;
4175
- modelOnly?: boolean;
4176
4174
  debug?: boolean;
4177
4175
  /** @description Saved scope ids to scope the Modus run to. */
4178
4176
  subordinateSkillIds?: number[];
@@ -4205,7 +4203,6 @@ interface components {
4205
4203
  */
4206
4204
  streamProtocolVersion?: 2;
4207
4205
  experimentalFeatures?: boolean;
4208
- modelOnly?: boolean;
4209
4206
  debug?: boolean;
4210
4207
  /**
4211
4208
  * @description Decision that resumes the interrupted run.
@@ -4231,7 +4228,6 @@ interface components {
4231
4228
  toolset?: Record<string, never>;
4232
4229
  strategies?: string[];
4233
4230
  experimentalFeatures?: boolean;
4234
- modelOnly?: boolean;
4235
4231
  debug?: boolean;
4236
4232
  /** @description Set false to keep composer output inline. */
4237
4233
  composerFileOffload?: boolean;
@@ -4276,7 +4272,6 @@ interface components {
4276
4272
  */
4277
4273
  streamProtocolVersion?: 2;
4278
4274
  experimentalFeatures?: boolean;
4279
- modelOnly?: boolean;
4280
4275
  debug?: boolean;
4281
4276
  /** @description Subordinate scope ids for an unsaved supervisor-scope draft test. */
4282
4277
  subordinateSkillIds?: number[];
package/dist/index.cjs CHANGED
@@ -1452,7 +1452,7 @@ function formatConfigForLog(config) {
1452
1452
  }
1453
1453
 
1454
1454
  // src/_http.ts
1455
- var USER_AGENT = `modus-typescript/${"0.1.0"} (node/${process.version}; ${process.platform})`;
1455
+ var USER_AGENT = `modus-typescript/${"0.2.1"} (node/${process.version}; ${process.platform})`;
1456
1456
  function buildUrl(baseUrl, path, params) {
1457
1457
  const url = new URL(path.startsWith("/") ? path : `/${path}`, baseUrl);
1458
1458
  if (params) {
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { c as components, H as HttpClient, M as ModusConfig, P as Page, A as AgentType, V as VariationView, a as Agent, C as ContextItem, b as ContextItemLookupRow, d as CustomContextItemsResource, e as ConversationKind, f as ConversationListItem, g as Conversation, S as ScopeConversationsResource, h as Skill, i as ModusClientBase, j as ModusOptions } from './conversations-nx1ujbiv.cjs';
2
- export { k as ContextType, l as Message, O as OPERATIONS, m as OperationId, n as OperationSpec, o as SkillStatus, p as SkillVariation, q as conversationSkillId, r as operations, s as paths } from './conversations-nx1ujbiv.cjs';
1
+ import { c as components, H as HttpClient, M as ModusConfig, P as Page, A as AgentType, V as VariationView, a as Agent, C as ContextItem, b as ContextItemLookupRow, d as CustomContextItemsResource, e as ConversationKind, f as ConversationListItem, g as Conversation, S as ScopeConversationsResource, h as Skill, i as ModusClientBase, j as ModusOptions } from './conversations-DoyTcWk6.cjs';
2
+ export { k as ContextType, l as Message, O as OPERATIONS, m as OperationId, n as OperationSpec, o as SkillStatus, p as SkillVariation, q as conversationSkillId, r as operations, s as paths } from './conversations-DoyTcWk6.cjs';
3
3
 
4
4
  declare class ModusError extends Error {
5
5
  readonly statusCode?: number;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { c as components, H as HttpClient, M as ModusConfig, P as Page, A as AgentType, V as VariationView, a as Agent, C as ContextItem, b as ContextItemLookupRow, d as CustomContextItemsResource, e as ConversationKind, f as ConversationListItem, g as Conversation, S as ScopeConversationsResource, h as Skill, i as ModusClientBase, j as ModusOptions } from './conversations-nx1ujbiv.js';
2
- export { k as ContextType, l as Message, O as OPERATIONS, m as OperationId, n as OperationSpec, o as SkillStatus, p as SkillVariation, q as conversationSkillId, r as operations, s as paths } from './conversations-nx1ujbiv.js';
1
+ import { c as components, H as HttpClient, M as ModusConfig, P as Page, A as AgentType, V as VariationView, a as Agent, C as ContextItem, b as ContextItemLookupRow, d as CustomContextItemsResource, e as ConversationKind, f as ConversationListItem, g as Conversation, S as ScopeConversationsResource, h as Skill, i as ModusClientBase, j as ModusOptions } from './conversations-DoyTcWk6.js';
2
+ export { k as ContextType, l as Message, O as OPERATIONS, m as OperationId, n as OperationSpec, o as SkillStatus, p as SkillVariation, q as conversationSkillId, r as operations, s as paths } from './conversations-DoyTcWk6.js';
3
3
 
4
4
  declare class ModusError extends Error {
5
5
  readonly statusCode?: number;
package/dist/index.js CHANGED
@@ -29,7 +29,7 @@ import {
29
29
  validateChatModel,
30
30
  validateId,
31
31
  validatePageSize
32
- } from "./chunk-VLHNZJBG.js";
32
+ } from "./chunk-UOBVSNOW.js";
33
33
 
34
34
  // src/_streaming.ts
35
35
  var SILENTLY_IGNORED = /* @__PURE__ */ new Set([
@@ -177,7 +177,7 @@ function formatConfigForLog(config) {
177
177
  }
178
178
 
179
179
  // src/_http.ts
180
- var USER_AGENT = `modus-typescript/${"0.1.0"} (node/${process.version}; ${process.platform})`;
180
+ var USER_AGENT = `modus-typescript/${"0.2.1"} (node/${process.version}; ${process.platform})`;
181
181
  function buildUrl(baseUrl, path, params) {
182
182
  const url = new URL(path.startsWith("/") ? path : `/${path}`, baseUrl);
183
183
  if (params) {
@@ -1,4 +1,4 @@
1
- import { H as HttpClient, M as ModusConfig, c as components, A as AgentType, m as OperationId, V as VariationView, P as Page, a as Agent, C as ContextItem, t as ContextItemDeletion, d as CustomContextItemsResource, u as CreatedContextItem, S as ScopeConversationsResource, h as Skill, i as ModusClientBase, j as ModusOptions } from '../conversations-nx1ujbiv.cjs';
1
+ import { H as HttpClient, M as ModusConfig, c as components, A as AgentType, m as OperationId, V as VariationView, P as Page, a as Agent, C as ContextItem, t as ContextItemDeletion, d as CustomContextItemsResource, u as CreatedContextItem, S as ScopeConversationsResource, h as Skill, i as ModusClientBase, j as ModusOptions } from '../conversations-DoyTcWk6.cjs';
2
2
 
3
3
  type AgentInterface = components['schemas']['AgentInterfaceDto'];
4
4
  type AddAgentInterface = components['schemas']['AddAgentInterfaceDto'];
@@ -1,4 +1,4 @@
1
- import { H as HttpClient, M as ModusConfig, c as components, A as AgentType, m as OperationId, V as VariationView, P as Page, a as Agent, C as ContextItem, t as ContextItemDeletion, d as CustomContextItemsResource, u as CreatedContextItem, S as ScopeConversationsResource, h as Skill, i as ModusClientBase, j as ModusOptions } from '../conversations-nx1ujbiv.js';
1
+ import { H as HttpClient, M as ModusConfig, c as components, A as AgentType, m as OperationId, V as VariationView, P as Page, a as Agent, C as ContextItem, t as ContextItemDeletion, d as CustomContextItemsResource, u as CreatedContextItem, S as ScopeConversationsResource, h as Skill, i as ModusClientBase, j as ModusOptions } from '../conversations-DoyTcWk6.js';
2
2
 
3
3
  type AgentInterface = components['schemas']['AgentInterfaceDto'];
4
4
  type AddAgentInterface = components['schemas']['AddAgentInterfaceDto'];
@@ -9,7 +9,7 @@ import {
9
9
  omitUndefined,
10
10
  validateId,
11
11
  validatePageSize
12
- } from "../chunk-VLHNZJBG.js";
12
+ } from "../chunk-UOBVSNOW.js";
13
13
 
14
14
  // src/_query.ts
15
15
  function updateMaskQuery(updateMask) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getmodus/sdk",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Official TypeScript client for Modus — your organization's context layer for AI",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -50,7 +50,8 @@
50
50
  "dist",
51
51
  "README.md",
52
52
  "LICENSE",
53
- "CHANGELOG.md"
53
+ "CHANGELOG.md",
54
+ "assets"
54
55
  ],
55
56
  "sideEffects": false,
56
57
  "publishConfig": {