@proteos/sdk 0.38.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +51 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +195 -18
- package/dist/index.d.ts +195 -18
- package/dist/index.js +51 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/agent/index.ts +13 -0
- package/src/agent/session-types.ts +9 -2
- package/src/agent/toolsets.ts +80 -0
- package/src/agent/types.ts +89 -2
- package/src/auth/platform-entities.ts +1 -0
- package/src/conversation/index.ts +24 -3
- package/src/conversation/types.ts +70 -9
- package/src/index.ts +10 -0
package/package.json
CHANGED
package/src/agent/index.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { type PromptService, PromptServiceImpl } from './prompts.js'
|
|
|
5
5
|
import { type SessionService, SessionServiceImpl } from './sessions.js'
|
|
6
6
|
import { type SkillService, SkillServiceImpl } from './skills.js'
|
|
7
7
|
import { type ToolService, ToolServiceImpl } from './tools.js'
|
|
8
|
+
import { type ToolsetService, ToolsetServiceImpl } from './toolsets.js'
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Client for the Proteos Agent Service API.
|
|
@@ -33,6 +34,8 @@ export class AgentClient {
|
|
|
33
34
|
readonly skills: SkillService
|
|
34
35
|
/** Service for managing tools. */
|
|
35
36
|
readonly tools: ToolService
|
|
37
|
+
/** Service for managing toolsets (platform + custom tool groups). */
|
|
38
|
+
readonly toolsets: ToolsetService
|
|
36
39
|
/** Service for managing MCP server registrations. */
|
|
37
40
|
readonly mcpServers: McpServerService
|
|
38
41
|
/** Service for managing chat sessions (conversations + event log + stream). */
|
|
@@ -48,6 +51,7 @@ export class AgentClient {
|
|
|
48
51
|
this.prompts = new PromptServiceImpl(client)
|
|
49
52
|
this.skills = new SkillServiceImpl(client)
|
|
50
53
|
this.tools = new ToolServiceImpl(client)
|
|
54
|
+
this.toolsets = new ToolsetServiceImpl(client)
|
|
51
55
|
this.mcpServers = new McpServerServiceImpl(client)
|
|
52
56
|
this.sessions = new SessionServiceImpl(client)
|
|
53
57
|
}
|
|
@@ -96,6 +100,7 @@ export type {
|
|
|
96
100
|
export type { SessionService } from './sessions.js'
|
|
97
101
|
export type { SkillService } from './skills.js'
|
|
98
102
|
export type { ToolService } from './tools.js'
|
|
103
|
+
export type { ToolsetService } from './toolsets.js'
|
|
99
104
|
// Re-export types
|
|
100
105
|
export type {
|
|
101
106
|
ActionBinding,
|
|
@@ -126,9 +131,17 @@ export type {
|
|
|
126
131
|
SkillBundle,
|
|
127
132
|
SkillVersion,
|
|
128
133
|
StartMcpOAuthResponse,
|
|
134
|
+
PlatformBinding,
|
|
135
|
+
QueryBinding,
|
|
129
136
|
Tool,
|
|
130
137
|
ToolBinding,
|
|
131
138
|
ToolKind,
|
|
139
|
+
Toolset,
|
|
140
|
+
ToolsetKind,
|
|
141
|
+
ToolsetToolSummary,
|
|
142
|
+
CreateToolsetRequest,
|
|
143
|
+
UpdateToolsetRequest,
|
|
144
|
+
ListToolsetsOptions,
|
|
132
145
|
UpdateAgentRequest,
|
|
133
146
|
UpdateMcpServerRequest,
|
|
134
147
|
UpdatePromptRequest,
|
|
@@ -224,8 +224,15 @@ export interface StopReason {
|
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
/**
|
|
227
|
-
*
|
|
228
|
-
*
|
|
227
|
+
* Ends a turn — published once per turn by the server, not an echo of the upstream
|
|
228
|
+
* provider's session status (which flips idle/running once per server-side tool
|
|
229
|
+
* round, mid-turn).
|
|
230
|
+
*
|
|
231
|
+
* `event_ids` is set only with `stop_reason.type: 'user_action_required'`, and lists
|
|
232
|
+
* the tool_use events still OUTSTANDING — the ones a client must answer. Tools the
|
|
233
|
+
* server executes itself are resolved before this event exists, so seeing this event
|
|
234
|
+
* at all means the turn cannot continue without you: answer each id with a
|
|
235
|
+
* `user.tool_result`.
|
|
229
236
|
*/
|
|
230
237
|
export interface SessionIdlePayload {
|
|
231
238
|
stop_reason: StopReason
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ProteosClient } from '../client.js'
|
|
2
|
+
import { PageIterator } from '../iterator.js'
|
|
3
|
+
import type { ListResult } from '../types/common.js'
|
|
4
|
+
import type {
|
|
5
|
+
CreateToolsetRequest,
|
|
6
|
+
ListToolsetsOptions,
|
|
7
|
+
Toolset,
|
|
8
|
+
ToolsetToolSummary,
|
|
9
|
+
UpdateToolsetRequest,
|
|
10
|
+
} from './types.js'
|
|
11
|
+
|
|
12
|
+
const TOOLSETS_BASE_PATH = '/agents/v1/toolsets'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Service for managing Toolsets — the hardcoded platform toolsets (read-only)
|
|
16
|
+
* merged with the org's custom groups of its own tools. Writes apply to custom
|
|
17
|
+
* toolsets only; a platform key is rejected with `toolset_read_only`.
|
|
18
|
+
*/
|
|
19
|
+
export interface ToolsetService {
|
|
20
|
+
/** Lists toolsets (platform + custom merged), auto-paginating. Filterable by `kind`. */
|
|
21
|
+
list(options?: ListToolsetsOptions): PageIterator<Toolset, ListToolsetsOptions>
|
|
22
|
+
/** Fetches a single page of toolsets with pagination metadata. */
|
|
23
|
+
listPage(options?: ListToolsetsOptions): Promise<ListResult<Toolset>>
|
|
24
|
+
/** Gets a single toolset by key (platform or custom). @throws {ProteosError} 404. */
|
|
25
|
+
get(key: string): Promise<Toolset>
|
|
26
|
+
/**
|
|
27
|
+
* Lists the tools inside a toolset — platform members proxied from the
|
|
28
|
+
* platform MCP server, custom members summarized from the org's Tool rows.
|
|
29
|
+
* @throws {ProteosError} 404.
|
|
30
|
+
*/
|
|
31
|
+
listTools(key: string): Promise<ToolsetToolSummary[]>
|
|
32
|
+
/** Creates a custom toolset. @throws {ProteosError} 400/409. */
|
|
33
|
+
create(request: CreateToolsetRequest): Promise<Toolset>
|
|
34
|
+
/** Fully replaces a custom toolset's definition. @throws {ProteosError} 404/400. */
|
|
35
|
+
update(key: string, request: UpdateToolsetRequest): Promise<Toolset>
|
|
36
|
+
/** Creates or fully replaces a custom toolset (idempotent deploy entry point). */
|
|
37
|
+
upsert(key: string, request: CreateToolsetRequest): Promise<Toolset>
|
|
38
|
+
/** Deletes a custom toolset. @throws {ProteosError} 404/400. */
|
|
39
|
+
delete(key: string): Promise<void>
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export class ToolsetServiceImpl implements ToolsetService {
|
|
43
|
+
constructor(private readonly client: ProteosClient) {}
|
|
44
|
+
|
|
45
|
+
list(options: ListToolsetsOptions = {}): PageIterator<Toolset, ListToolsetsOptions> {
|
|
46
|
+
return new PageIterator((opts) => this.listPage(opts), options)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async listPage(options: ListToolsetsOptions = {}): Promise<ListResult<Toolset>> {
|
|
50
|
+
return this.client.requestWithQuery<ListResult<Toolset>>('GET', TOOLSETS_BASE_PATH, options)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async get(key: string): Promise<Toolset> {
|
|
54
|
+
return this.client.request<Toolset>('GET', `${TOOLSETS_BASE_PATH}/${key}`)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async listTools(key: string): Promise<ToolsetToolSummary[]> {
|
|
58
|
+
const response = await this.client.request<{ data: ToolsetToolSummary[] }>(
|
|
59
|
+
'GET',
|
|
60
|
+
`${TOOLSETS_BASE_PATH}/${key}/tools`,
|
|
61
|
+
)
|
|
62
|
+
return response.data
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async create(request: CreateToolsetRequest): Promise<Toolset> {
|
|
66
|
+
return this.client.request<Toolset>('POST', TOOLSETS_BASE_PATH, request)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
async update(key: string, request: UpdateToolsetRequest): Promise<Toolset> {
|
|
70
|
+
return this.client.request<Toolset>('PATCH', `${TOOLSETS_BASE_PATH}/${key}`, request)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async upsert(key: string, request: CreateToolsetRequest): Promise<Toolset> {
|
|
74
|
+
return this.client.request<Toolset>('PUT', `${TOOLSETS_BASE_PATH}/${key}`, request)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async delete(key: string): Promise<void> {
|
|
78
|
+
await this.client.request<void>('DELETE', `${TOOLSETS_BASE_PATH}/${key}`)
|
|
79
|
+
}
|
|
80
|
+
}
|
package/src/agent/types.ts
CHANGED
|
@@ -64,6 +64,8 @@ export interface Agent extends AuditFields {
|
|
|
64
64
|
tools: string[]
|
|
65
65
|
subagents: string[]
|
|
66
66
|
mcp_servers: string[]
|
|
67
|
+
/** Toolset keys (platform or custom) attached as whole tool groups. */
|
|
68
|
+
toolsets: string[]
|
|
67
69
|
/** Marks the single agent surfaced by default for the org (at most one). */
|
|
68
70
|
is_org_default: boolean
|
|
69
71
|
version: number
|
|
@@ -80,6 +82,7 @@ export interface CreateAgentRequest {
|
|
|
80
82
|
tools?: string[]
|
|
81
83
|
subagents?: string[]
|
|
82
84
|
mcp_servers?: string[]
|
|
85
|
+
toolsets?: string[]
|
|
83
86
|
is_org_default?: boolean
|
|
84
87
|
}
|
|
85
88
|
|
|
@@ -93,6 +96,7 @@ export interface UpdateAgentRequest {
|
|
|
93
96
|
tools?: string[]
|
|
94
97
|
subagents?: string[]
|
|
95
98
|
mcp_servers?: string[]
|
|
99
|
+
toolsets?: string[]
|
|
96
100
|
is_org_default?: boolean
|
|
97
101
|
}
|
|
98
102
|
|
|
@@ -211,8 +215,12 @@ export type ListSkillsOptions = AgentResourceListOptions
|
|
|
211
215
|
* - `action` binds to a function-service Action.
|
|
212
216
|
* - `mcp` binds to one tool on a registered {@link McpServer}.
|
|
213
217
|
* - `client` is a host-provided builtin and carries no binding.
|
|
218
|
+
* - `platform` binds to one tool of the platform MCP server (mcp-service),
|
|
219
|
+
* executed server-side as the acting user.
|
|
220
|
+
* - `query` stores a SQL query with declared params, executed server-side
|
|
221
|
+
* against data-service as the acting user.
|
|
214
222
|
*/
|
|
215
|
-
export type ToolKind = 'action' | 'mcp' | 'client'
|
|
223
|
+
export type ToolKind = 'action' | 'mcp' | 'client' | 'platform' | 'query'
|
|
216
224
|
|
|
217
225
|
/** Binds to a function-service Action by its key (kind=action). */
|
|
218
226
|
export interface ActionBinding {
|
|
@@ -225,8 +233,28 @@ export interface McpBinding {
|
|
|
225
233
|
tool_name: string
|
|
226
234
|
}
|
|
227
235
|
|
|
236
|
+
/**
|
|
237
|
+
* Binds to one tool of the platform MCP server (kind=platform). `toolset` pins
|
|
238
|
+
* the server mount the tool lives in.
|
|
239
|
+
*/
|
|
240
|
+
export interface PlatformBinding {
|
|
241
|
+
toolset: string
|
|
242
|
+
tool_name: string
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Stores a SELECT-only SQL query (data-service dialect) whose `{{param}}`
|
|
247
|
+
* placeholders are filled from the declared `params` at execution time
|
|
248
|
+
* (kind=query). Params are scalar attribute definitions (string, number,
|
|
249
|
+
* integer, boolean, datetime, enum); they generate the tool's input schema.
|
|
250
|
+
*/
|
|
251
|
+
export interface QueryBinding {
|
|
252
|
+
sql: string
|
|
253
|
+
params?: Attribute[]
|
|
254
|
+
}
|
|
255
|
+
|
|
228
256
|
/** Kind-discriminated binding payload. `kind=client` carries no binding. */
|
|
229
|
-
export type ToolBinding = ActionBinding | McpBinding
|
|
257
|
+
export type ToolBinding = ActionBinding | McpBinding | PlatformBinding | QueryBinding
|
|
230
258
|
|
|
231
259
|
/**
|
|
232
260
|
* A thin registry entry over one of three binding sources. `key` is the wire
|
|
@@ -272,6 +300,65 @@ export interface ListToolsOptions extends AgentResourceListOptions {
|
|
|
272
300
|
kind?: ToolKind
|
|
273
301
|
}
|
|
274
302
|
|
|
303
|
+
// ---------------------------------------------------------------------------
|
|
304
|
+
// Toolsets
|
|
305
|
+
// ---------------------------------------------------------------------------
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Toolset origin: `platform` toolsets are the hardcoded groups of the platform
|
|
309
|
+
* MCP server (read-only, one per server mount); `custom` toolsets are
|
|
310
|
+
* org-authored groups of the org's own {@link Tool} rows.
|
|
311
|
+
*/
|
|
312
|
+
export type ToolsetKind = 'platform' | 'custom'
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* A named group of tools an agent attaches as one unit (`Agent.toolsets`).
|
|
316
|
+
* Platform and custom toolsets share one key namespace (platform keys are
|
|
317
|
+
* reserved). For platform toolsets `tools` is empty — the members live in
|
|
318
|
+
* mcp-service and are listed via `toolsets.listTools`; for custom toolsets it
|
|
319
|
+
* carries the member Tool keys. Keyed by (org_id, key).
|
|
320
|
+
*/
|
|
321
|
+
export interface Toolset extends AuditFields {
|
|
322
|
+
org_id: string
|
|
323
|
+
key: string
|
|
324
|
+
name: string
|
|
325
|
+
module_slug: string
|
|
326
|
+
description: string
|
|
327
|
+
kind: ToolsetKind
|
|
328
|
+
tools: string[]
|
|
329
|
+
version: number
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/** Creates a CUSTOM toolset — platform toolsets are hardcoded and read-only. */
|
|
333
|
+
export interface CreateToolsetRequest {
|
|
334
|
+
key: string
|
|
335
|
+
name: string
|
|
336
|
+
module_slug?: string
|
|
337
|
+
description?: string
|
|
338
|
+
/** Member Tool keys; existence is validated on write. */
|
|
339
|
+
tools?: string[]
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/** Fully replaces the custom toolset's definition (membership is a set). */
|
|
343
|
+
export interface UpdateToolsetRequest {
|
|
344
|
+
name: string
|
|
345
|
+
module_slug?: string
|
|
346
|
+
description?: string
|
|
347
|
+
tools?: string[]
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
export interface ListToolsetsOptions extends AgentResourceListOptions {
|
|
351
|
+
/** Filter the merged listing by origin. */
|
|
352
|
+
kind?: ToolsetKind
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/** One tool inside a toolset, for pickers: the wire name + display metadata. */
|
|
356
|
+
export interface ToolsetToolSummary {
|
|
357
|
+
name: string
|
|
358
|
+
title?: string
|
|
359
|
+
description?: string
|
|
360
|
+
}
|
|
361
|
+
|
|
275
362
|
// ---------------------------------------------------------------------------
|
|
276
363
|
// MCP Servers
|
|
277
364
|
// ---------------------------------------------------------------------------
|
|
@@ -52,6 +52,7 @@ export const PLATFORM_ENTITIES: readonly PlatformEntity[] = [
|
|
|
52
52
|
{ slug: 'prompts', name: 'Prompts' },
|
|
53
53
|
{ slug: 'skills', name: 'Skills' },
|
|
54
54
|
{ slug: 'tools', name: 'Tools' },
|
|
55
|
+
{ slug: 'toolsets', name: 'Toolsets' },
|
|
55
56
|
{ slug: 'mcp-servers', name: 'MCP Servers' },
|
|
56
57
|
{ slug: 'agent-sessions', name: 'Agent Sessions' },
|
|
57
58
|
// Messaging bus (event-service)
|
|
@@ -19,6 +19,7 @@ import type {
|
|
|
19
19
|
CreateConversationTypeRequest,
|
|
20
20
|
CreateGlossaryTermRequest,
|
|
21
21
|
CreateTranscriptionRequest,
|
|
22
|
+
DeleteConnectionQuery,
|
|
22
23
|
DispatchMeetingBotRequest,
|
|
23
24
|
GlossaryTerm,
|
|
24
25
|
InstallConnectionResponse,
|
|
@@ -164,7 +165,14 @@ export interface ConnectionService {
|
|
|
164
165
|
get(id: string): Promise<Connection>
|
|
165
166
|
create(request: CreateConnectionRequest): Promise<Connection>
|
|
166
167
|
update(id: string, request: UpdateConnectionRequest): Promise<Connection>
|
|
167
|
-
|
|
168
|
+
/**
|
|
169
|
+
* Delete a connection. The connector first releases its provider-side
|
|
170
|
+
* registration (a Recall calendar and the OAuth grant behind it); when that
|
|
171
|
+
* fails the delete is refused with a `connector_uninstall_failed` 502 rather
|
|
172
|
+
* than orphaning it. Pass `{ is_forced: true }` to drop the row anyway and
|
|
173
|
+
* clean up at the provider by hand.
|
|
174
|
+
*/
|
|
175
|
+
delete(id: string, query?: DeleteConnectionQuery): Promise<void>
|
|
168
176
|
/** Begin the connector's install flow; open the returned URL in a popup. */
|
|
169
177
|
install(id: string): Promise<InstallConnectionResponse>
|
|
170
178
|
/**
|
|
@@ -211,10 +219,11 @@ class ConnectionServiceImpl implements ConnectionService {
|
|
|
211
219
|
)
|
|
212
220
|
}
|
|
213
221
|
|
|
214
|
-
async delete(id: string): Promise<void> {
|
|
215
|
-
await this.client.
|
|
222
|
+
async delete(id: string, query: DeleteConnectionQuery = {}): Promise<void> {
|
|
223
|
+
await this.client.requestWithQuery(
|
|
216
224
|
'DELETE',
|
|
217
225
|
`${CONVERSATION_BASE_PATH}/connections/${encodeURIComponent(id)}`,
|
|
226
|
+
query,
|
|
218
227
|
)
|
|
219
228
|
}
|
|
220
229
|
|
|
@@ -392,6 +401,11 @@ export interface ConversationService {
|
|
|
392
401
|
/** Patch the user-editable surface (subject, summary, status, metadata). */
|
|
393
402
|
update(id: string, request: UpdateConversationRequest): Promise<Conversation>
|
|
394
403
|
end(id: string): Promise<Conversation>
|
|
404
|
+
/**
|
|
405
|
+
* Hard-delete the conversation, its thread children, and every dependent
|
|
406
|
+
* row (messages, attachments, read markers, transcriptions). Irreversible.
|
|
407
|
+
*/
|
|
408
|
+
delete(id: string): Promise<void>
|
|
395
409
|
/** Upsert the requesting user's read marker to now (open a conversation). */
|
|
396
410
|
markRead(id: string): Promise<void>
|
|
397
411
|
/** Remove the marker — the conversation reads as unread again. */
|
|
@@ -429,6 +443,13 @@ class ConversationServiceImpl implements ConversationService {
|
|
|
429
443
|
)
|
|
430
444
|
}
|
|
431
445
|
|
|
446
|
+
delete(id: string): Promise<void> {
|
|
447
|
+
return this.client.request(
|
|
448
|
+
'DELETE',
|
|
449
|
+
`${CONVERSATION_BASE_PATH}/conversations/${encodeURIComponent(id)}`,
|
|
450
|
+
)
|
|
451
|
+
}
|
|
452
|
+
|
|
432
453
|
markRead(id: string): Promise<void> {
|
|
433
454
|
return this.client.request(
|
|
434
455
|
'POST',
|
|
@@ -415,6 +415,14 @@ export interface AgentListenerAcknowledgementConfig {
|
|
|
415
415
|
text?: string
|
|
416
416
|
}
|
|
417
417
|
|
|
418
|
+
/**
|
|
419
|
+
* Where the dispatcher takes its acting user from: 'defined' (the listener's
|
|
420
|
+
* stored acting_user — the default) or 'inferred' (the triggering message
|
|
421
|
+
* sender's resolved platform user, with acting_user as OPTIONAL fallback — no
|
|
422
|
+
* platform user and no fallback means the dispatch is skipped).
|
|
423
|
+
*/
|
|
424
|
+
export type AgentListenerActingUserMode = 'defined' | 'inferred'
|
|
425
|
+
|
|
418
426
|
export interface AgentListener {
|
|
419
427
|
id: string
|
|
420
428
|
org_id: string
|
|
@@ -444,7 +452,12 @@ export interface AgentListener {
|
|
|
444
452
|
*/
|
|
445
453
|
acknowledgement_type: AgentListenerAcknowledgementType
|
|
446
454
|
acknowledgement_config?: AgentListenerAcknowledgementConfig
|
|
447
|
-
|
|
455
|
+
acting_user_mode: AgentListenerActingUserMode
|
|
456
|
+
/**
|
|
457
|
+
* The user the dispatcher acts as (mode 'defined'), or the optional fallback
|
|
458
|
+
* when the sender has no platform user (mode 'inferred'; an empty ref means
|
|
459
|
+
* no fallback).
|
|
460
|
+
*/
|
|
448
461
|
acting_user: UserRef
|
|
449
462
|
is_enabled: boolean
|
|
450
463
|
/**
|
|
@@ -561,8 +574,14 @@ export interface CreateAgentListenerRequest {
|
|
|
561
574
|
*/
|
|
562
575
|
acknowledgement_type?: AgentListenerAcknowledgementType
|
|
563
576
|
acknowledgement_config?: AgentListenerAcknowledgementConfig
|
|
564
|
-
/**
|
|
565
|
-
|
|
577
|
+
/** Omit to default to 'defined'. */
|
|
578
|
+
acting_user_mode?: AgentListenerActingUserMode
|
|
579
|
+
/**
|
|
580
|
+
* A bare user id; the service wraps it into a person UserRef. Required in
|
|
581
|
+
* 'defined' mode (the default); optional in 'inferred' mode, where it is the
|
|
582
|
+
* fallback when the sender has no platform user.
|
|
583
|
+
*/
|
|
584
|
+
acting_user_id?: string
|
|
566
585
|
/** Omit to default to enabled. */
|
|
567
586
|
is_enabled?: boolean
|
|
568
587
|
/**
|
|
@@ -593,6 +612,9 @@ export interface UpdateAgentListenerRequest {
|
|
|
593
612
|
*/
|
|
594
613
|
acknowledgement_type?: AgentListenerAcknowledgementType
|
|
595
614
|
acknowledgement_config?: AgentListenerAcknowledgementConfig
|
|
615
|
+
/** Switching to 'defined' requires an effective acting user (stored or in this request). */
|
|
616
|
+
acting_user_mode?: AgentListenerActingUserMode
|
|
617
|
+
/** Pass "" to clear the user — only valid when the effective mode is 'inferred'. */
|
|
596
618
|
acting_user_id?: string
|
|
597
619
|
is_enabled?: boolean
|
|
598
620
|
/** Toggle whether the platform auto-forwards the agent's text reply. */
|
|
@@ -708,6 +730,17 @@ export interface ListConnectionsQuery extends PaginationQuery {
|
|
|
708
730
|
status?: string
|
|
709
731
|
}
|
|
710
732
|
|
|
733
|
+
/**
|
|
734
|
+
* The delete's escape hatch. A connection delete makes the connector release
|
|
735
|
+
* its provider-side registration first and refuses with a 502
|
|
736
|
+
* `connector_uninstall_failed` when that fails — the row is the only handle on
|
|
737
|
+
* that state. `is_forced` drops the row anyway, leaving the provider-side
|
|
738
|
+
* leftovers as a manual cleanup.
|
|
739
|
+
*/
|
|
740
|
+
export interface DeleteConnectionQuery {
|
|
741
|
+
is_forced?: boolean
|
|
742
|
+
}
|
|
743
|
+
|
|
711
744
|
export interface ListConversationsQuery extends PaginationQuery {
|
|
712
745
|
channel?: string
|
|
713
746
|
status?: string
|
|
@@ -761,18 +794,33 @@ export interface ListAgentListenersQuery extends PaginationQuery {
|
|
|
761
794
|
}
|
|
762
795
|
|
|
763
796
|
/**
|
|
764
|
-
* Conversation filters:
|
|
765
|
-
*
|
|
766
|
-
*
|
|
767
|
-
*
|
|
768
|
-
*
|
|
769
|
-
*
|
|
797
|
+
* Conversation filters: rules that drop matching inbound messages BEFORE
|
|
798
|
+
* persistence (no message, no contact — only a content-free audit event) and,
|
|
799
|
+
* on meeting calendar connections, gate whether the meeting bot is scheduled
|
|
800
|
+
* at all (pre-join enforcement of the same rules — earliest possible point).
|
|
801
|
+
* Scope-first evaluation: connection-scoped rules are final when one matches;
|
|
802
|
+
* global rules apply otherwise. Specificity within a scope:
|
|
803
|
+
* address > domain > title_keyword > role_based > automated >
|
|
804
|
+
* self_originated > internal_participant > internal_conversations > all,
|
|
805
|
+
* allow beats block within a class; an allow match is a final keep, which is
|
|
806
|
+
* the auto-join composition mechanism (e.g. "organized by me" = a
|
|
807
|
+
* connection-scoped all-block plus a self_originated allow).
|
|
808
|
+
*
|
|
809
|
+
* Channel matrix: address/self_originated/all act on every channel;
|
|
810
|
+
* domain/title_keyword/internal_participant/internal_conversations act on
|
|
811
|
+
* email + meeting connections; role_based/automated are email-only. A
|
|
812
|
+
* connection-scoped rule of a type inert on that connection's channel is
|
|
813
|
+
* rejected (invalid_filter_config); global rules are unrestricted and stay
|
|
814
|
+
* inert where their facts are missing.
|
|
770
815
|
*/
|
|
771
816
|
export type ConversationFilterType =
|
|
772
817
|
| 'address'
|
|
773
818
|
| 'domain'
|
|
819
|
+
| 'title_keyword'
|
|
774
820
|
| 'role_based'
|
|
775
821
|
| 'automated'
|
|
822
|
+
| 'self_originated'
|
|
823
|
+
| 'internal_participant'
|
|
776
824
|
| 'internal_conversations'
|
|
777
825
|
| 'all'
|
|
778
826
|
export type ConversationFilterAction = 'block' | 'allow'
|
|
@@ -805,6 +853,16 @@ export interface RoleBasedFilterConfig {
|
|
|
805
853
|
export interface AutomatedFilterConfig {
|
|
806
854
|
signals?: AutomatedSignal[]
|
|
807
855
|
}
|
|
856
|
+
/** Title/subject contains any keyword (case-insensitive substring; stored lowercased). */
|
|
857
|
+
export interface TitleKeywordFilterConfig {
|
|
858
|
+
keywords: string[]
|
|
859
|
+
}
|
|
860
|
+
/** Conversation originates from the connection owner (meeting organizer / self sender). Empty config. */
|
|
861
|
+
export type SelfOriginatedFilterConfig = Record<string, never>
|
|
862
|
+
/** ≥1 participant OTHER than the connection self is on one of these domains (any-internal). */
|
|
863
|
+
export interface InternalParticipantFilterConfig {
|
|
864
|
+
domains: string[]
|
|
865
|
+
}
|
|
808
866
|
/** Drops only when sender AND every recipient are on these domains. Always block. */
|
|
809
867
|
export interface InternalConversationsFilterConfig {
|
|
810
868
|
domains: string[]
|
|
@@ -815,8 +873,11 @@ export type AllFilterConfig = Record<string, never>
|
|
|
815
873
|
export type ConversationFilterConfig =
|
|
816
874
|
| AddressFilterConfig
|
|
817
875
|
| DomainFilterConfig
|
|
876
|
+
| TitleKeywordFilterConfig
|
|
818
877
|
| RoleBasedFilterConfig
|
|
819
878
|
| AutomatedFilterConfig
|
|
879
|
+
| SelfOriginatedFilterConfig
|
|
880
|
+
| InternalParticipantFilterConfig
|
|
820
881
|
| InternalConversationsFilterConfig
|
|
821
882
|
| AllFilterConfig
|
|
822
883
|
|
package/src/index.ts
CHANGED
|
@@ -52,6 +52,7 @@ export type {
|
|
|
52
52
|
CreatePromptRequest,
|
|
53
53
|
CreateSessionRequest,
|
|
54
54
|
CreateToolRequest,
|
|
55
|
+
CreateToolsetRequest,
|
|
55
56
|
DependentAgent,
|
|
56
57
|
DependentSyncResult,
|
|
57
58
|
EmptyPayload,
|
|
@@ -64,6 +65,7 @@ export type {
|
|
|
64
65
|
ListSessionsOptions,
|
|
65
66
|
ListSkillsOptions,
|
|
66
67
|
ListToolsOptions,
|
|
68
|
+
ListToolsetsOptions,
|
|
67
69
|
McpBinding,
|
|
68
70
|
McpConnectionState,
|
|
69
71
|
McpConnectionStatus,
|
|
@@ -97,11 +99,17 @@ export type {
|
|
|
97
99
|
StartMcpOAuthResponse,
|
|
98
100
|
StopReason,
|
|
99
101
|
TextBlock,
|
|
102
|
+
PlatformBinding,
|
|
103
|
+
QueryBinding,
|
|
100
104
|
Tool,
|
|
101
105
|
ToolBinding,
|
|
102
106
|
ToolConfirmationPayload,
|
|
103
107
|
ToolKind,
|
|
104
108
|
ToolResultPayload,
|
|
109
|
+
Toolset,
|
|
110
|
+
ToolsetKind,
|
|
111
|
+
ToolsetService,
|
|
112
|
+
ToolsetToolSummary,
|
|
105
113
|
ToolService,
|
|
106
114
|
ToolUsePayload,
|
|
107
115
|
Turn,
|
|
@@ -109,6 +117,7 @@ export type {
|
|
|
109
117
|
UpdateMcpServerRequest,
|
|
110
118
|
UpdatePromptRequest,
|
|
111
119
|
UpdateToolRequest,
|
|
120
|
+
UpdateToolsetRequest,
|
|
112
121
|
UserMessagePayload,
|
|
113
122
|
} from './agent/index.js'
|
|
114
123
|
export { AgentClient } from './agent/index.js'
|
|
@@ -187,6 +196,7 @@ export type {
|
|
|
187
196
|
AgentListener,
|
|
188
197
|
AgentListenerAcknowledgementConfig,
|
|
189
198
|
AgentListenerAcknowledgementType,
|
|
199
|
+
AgentListenerActingUserMode,
|
|
190
200
|
AgentListenerService,
|
|
191
201
|
AgentListenerTriggerType,
|
|
192
202
|
AllFilterConfig,
|