@parall/sdk 1.54.0 → 1.55.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/dist/client.d.ts +104 -74
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +173 -124
- package/dist/constants.d.ts +25 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +35 -5
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/project-task-client.d.ts +101 -0
- package/dist/project-task-client.d.ts.map +1 -0
- package/dist/project-task-client.js +173 -0
- package/dist/subject.d.ts +22 -0
- package/dist/subject.d.ts.map +1 -0
- package/dist/subject.js +45 -0
- package/dist/task-label-client.d.ts +13 -0
- package/dist/task-label-client.d.ts.map +1 -0
- package/dist/task-label-client.js +24 -0
- package/dist/task-label-types.d.ts +33 -0
- package/dist/task-label-types.d.ts.map +1 -0
- package/dist/task-label-types.js +1 -0
- package/dist/types.d.ts +388 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -3
- package/package.json +1 -1
- package/src/client.ts +471 -460
- package/src/constants.ts +48 -5
- package/src/index.ts +2 -0
- package/src/project-task-client.ts +342 -0
- package/src/subject.ts +57 -0
- package/src/task-label-client.ts +37 -0
- package/src/task-label-types.ts +51 -0
- package/src/types.ts +433 -26
package/dist/client.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { browserViewerRequestOptions } from './browser-viewer.js';
|
|
2
2
|
import { API_BASE, ENDPOINTS, WIKI_BASE } from './constants.js';
|
|
3
|
-
|
|
3
|
+
import { TaskLabelClient } from './task-label-client.js';
|
|
4
|
+
export class ParallClient extends TaskLabelClient {
|
|
4
5
|
baseUrl;
|
|
5
6
|
wikiBaseUrl;
|
|
6
7
|
token;
|
|
@@ -66,6 +67,7 @@ export class ParallClient {
|
|
|
66
67
|
return headers;
|
|
67
68
|
}
|
|
68
69
|
constructor(options = {}) {
|
|
70
|
+
super();
|
|
69
71
|
this.baseUrl = options.baseUrl ?? '';
|
|
70
72
|
// Defaults to baseUrl so existing single-origin consumers (web, desktop,
|
|
71
73
|
// hosted agents behind one gateway) are unchanged; only split api/wiki
|
|
@@ -383,6 +385,45 @@ export class ParallClient {
|
|
|
383
385
|
const res = await this.request('GET', ENDPOINTS.TEAMS(orgId));
|
|
384
386
|
return res.data;
|
|
385
387
|
}
|
|
388
|
+
async getTeam(orgId, teamId) {
|
|
389
|
+
return this.request('GET', ENDPOINTS.TEAM(orgId, teamId));
|
|
390
|
+
}
|
|
391
|
+
/** Creating, renaming and deleting a team are org-admin actions. */
|
|
392
|
+
async createTeam(orgId, req) {
|
|
393
|
+
return this.request('POST', ENDPOINTS.TEAMS(orgId), req);
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Renames a team. Renaming is an ordinary edit: ACL rows reference teams by
|
|
397
|
+
* ID. Names are org-unique (case-insensitive); a duplicate answers 409
|
|
398
|
+
* NAME_TAKEN.
|
|
399
|
+
*/
|
|
400
|
+
async updateTeam(orgId, teamId, req) {
|
|
401
|
+
return this.request('PATCH', ENDPOINTS.TEAM(orgId, teamId), req);
|
|
402
|
+
}
|
|
403
|
+
async deleteTeam(orgId, teamId) {
|
|
404
|
+
return this.request('DELETE', ENDPOINTS.TEAM(orgId, teamId));
|
|
405
|
+
}
|
|
406
|
+
/** Roster with display info; members who left the org are already excluded. */
|
|
407
|
+
async getTeamMembers(orgId, teamId) {
|
|
408
|
+
const res = await this.request('GET', ENDPOINTS.TEAM_MEMBERS(orgId, teamId));
|
|
409
|
+
return res.data;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Adds an org member (human or agent) to a team. Org admins and that team's
|
|
413
|
+
* managers may add ordinary members; adding straight to `manager` is an
|
|
414
|
+
* org-admin action.
|
|
415
|
+
*/
|
|
416
|
+
async addTeamMember(orgId, teamId, req) {
|
|
417
|
+
return this.request('POST', ENDPOINTS.TEAM_MEMBERS(orgId, teamId), req);
|
|
418
|
+
}
|
|
419
|
+
/** Appointing or demoting a manager is org-admin only. */
|
|
420
|
+
async updateTeamMember(orgId, teamId, userId, req) {
|
|
421
|
+
return this.request('PATCH', ENDPOINTS.TEAM_MEMBER(orgId, teamId, userId), req);
|
|
422
|
+
}
|
|
423
|
+
/** A team manager may remove ordinary members; removing a peer manager is org-admin only. */
|
|
424
|
+
async removeTeamMember(orgId, teamId, userId) {
|
|
425
|
+
return this.request('DELETE', ENDPOINTS.TEAM_MEMBER(orgId, teamId, userId));
|
|
426
|
+
}
|
|
386
427
|
async getOnlineMembers(orgId) {
|
|
387
428
|
const res = await this.request('GET', ENDPOINTS.ORG_MEMBERS_ONLINE(orgId));
|
|
388
429
|
return res.user_ids ?? [];
|
|
@@ -1191,117 +1232,6 @@ export class ParallClient {
|
|
|
1191
1232
|
}
|
|
1192
1233
|
return res.json();
|
|
1193
1234
|
}
|
|
1194
|
-
// ---- Tasks (org-scoped) ----
|
|
1195
|
-
async createTask(orgId, data) {
|
|
1196
|
-
return this.request('POST', ENDPOINTS.TASKS(orgId), data);
|
|
1197
|
-
}
|
|
1198
|
-
async getTasks(orgId, params) {
|
|
1199
|
-
return this.request('GET', ENDPOINTS.TASKS(orgId), undefined, params);
|
|
1200
|
-
}
|
|
1201
|
-
async getTask(orgId, taskId) {
|
|
1202
|
-
return this.request('GET', ENDPOINTS.TASK(orgId, taskId));
|
|
1203
|
-
}
|
|
1204
|
-
async updateTask(orgId, taskId, data) {
|
|
1205
|
-
return this.request('PATCH', ENDPOINTS.TASK(orgId, taskId), data);
|
|
1206
|
-
}
|
|
1207
|
-
async deleteTask(orgId, taskId, opts) {
|
|
1208
|
-
return this.request('DELETE', ENDPOINTS.TASK(orgId, taskId), undefined, opts?.force ? { force: 'true' } : undefined);
|
|
1209
|
-
}
|
|
1210
|
-
async archiveTask(orgId, taskId) {
|
|
1211
|
-
return this.request('POST', ENDPOINTS.TASK_ARCHIVE(orgId, taskId));
|
|
1212
|
-
}
|
|
1213
|
-
async restoreTask(orgId, taskId) {
|
|
1214
|
-
return this.request('POST', ENDPOINTS.TASK_RESTORE(orgId, taskId));
|
|
1215
|
-
}
|
|
1216
|
-
async watchTask(orgId, taskId) {
|
|
1217
|
-
return this.request('POST', ENDPOINTS.TASK_WATCH(orgId, taskId));
|
|
1218
|
-
}
|
|
1219
|
-
async unwatchTask(orgId, taskId) {
|
|
1220
|
-
return this.request('DELETE', ENDPOINTS.TASK_WATCH(orgId, taskId));
|
|
1221
|
-
}
|
|
1222
|
-
async getTaskWatchers(orgId, taskId) {
|
|
1223
|
-
const res = await this.request('GET', ENDPOINTS.TASK_WATCHERS(orgId, taskId));
|
|
1224
|
-
return res.data;
|
|
1225
|
-
}
|
|
1226
|
-
async subscribeTaskMember(orgId, taskId, userId) {
|
|
1227
|
-
return this.request('PUT', ENDPOINTS.TASK_SUBSCRIBER(orgId, taskId, userId));
|
|
1228
|
-
}
|
|
1229
|
-
async unsubscribeTaskMember(orgId, taskId, userId) {
|
|
1230
|
-
return this.request('DELETE', ENDPOINTS.TASK_SUBSCRIBER(orgId, taskId, userId));
|
|
1231
|
-
}
|
|
1232
|
-
async watchThread(threadRootId) {
|
|
1233
|
-
return this.request('POST', ENDPOINTS.MESSAGE_WATCH(threadRootId));
|
|
1234
|
-
}
|
|
1235
|
-
async unwatchThread(threadRootId) {
|
|
1236
|
-
return this.request('DELETE', ENDPOINTS.MESSAGE_WATCH(threadRootId));
|
|
1237
|
-
}
|
|
1238
|
-
async getThreadWatchers(threadRootId) {
|
|
1239
|
-
const res = await this.request('GET', ENDPOINTS.MESSAGE_WATCHERS(threadRootId));
|
|
1240
|
-
return res.data;
|
|
1241
|
-
}
|
|
1242
|
-
async isWatchingThread(threadRootId) {
|
|
1243
|
-
const res = await this.request('GET', ENDPOINTS.MESSAGE_WATCHING(threadRootId));
|
|
1244
|
-
return res.watching;
|
|
1245
|
-
}
|
|
1246
|
-
async getSubtasks(orgId, taskId) {
|
|
1247
|
-
const res = await this.request('GET', ENDPOINTS.TASK_SUBTASKS(orgId, taskId));
|
|
1248
|
-
return res.data;
|
|
1249
|
-
}
|
|
1250
|
-
async createTaskRelation(orgId, taskId, data) {
|
|
1251
|
-
return this.request('POST', ENDPOINTS.TASK_RELATIONS(orgId, taskId), data);
|
|
1252
|
-
}
|
|
1253
|
-
async getTaskRelations(orgId, taskId) {
|
|
1254
|
-
const res = await this.request('GET', ENDPOINTS.TASK_RELATIONS(orgId, taskId));
|
|
1255
|
-
return res.data;
|
|
1256
|
-
}
|
|
1257
|
-
async listTaskRelationsByTarget(orgId, params) {
|
|
1258
|
-
const query = new URLSearchParams({
|
|
1259
|
-
target_type: params.target_type,
|
|
1260
|
-
target_id: params.target_id,
|
|
1261
|
-
});
|
|
1262
|
-
const res = await this.request('GET', `${ENDPOINTS.TASK_RELATIONS_BY_TARGET(orgId)}?${query.toString()}`);
|
|
1263
|
-
return res.data;
|
|
1264
|
-
}
|
|
1265
|
-
async deleteTaskRelation(orgId, taskId, relationId) {
|
|
1266
|
-
return this.request('DELETE', ENDPOINTS.TASK_RELATION(orgId, taskId, relationId));
|
|
1267
|
-
}
|
|
1268
|
-
// ---- Task Comments ----
|
|
1269
|
-
async getTaskComments(orgId, taskId, params) {
|
|
1270
|
-
return this.request('GET', ENDPOINTS.TASK_COMMENTS(orgId, taskId), undefined, params);
|
|
1271
|
-
}
|
|
1272
|
-
async getTaskComment(orgId, taskId, commentId) {
|
|
1273
|
-
return this.request('GET', ENDPOINTS.TASK_COMMENT(orgId, taskId, commentId));
|
|
1274
|
-
}
|
|
1275
|
-
async createTaskComment(orgId, taskId, data) {
|
|
1276
|
-
return this.request('POST', ENDPOINTS.TASK_COMMENTS(orgId, taskId), data);
|
|
1277
|
-
}
|
|
1278
|
-
async updateTaskComment(orgId, taskId, commentId, data) {
|
|
1279
|
-
return this.request('PATCH', ENDPOINTS.TASK_COMMENT(orgId, taskId, commentId), data);
|
|
1280
|
-
}
|
|
1281
|
-
async deleteTaskComment(orgId, taskId, commentId) {
|
|
1282
|
-
return this.request('DELETE', ENDPOINTS.TASK_COMMENT(orgId, taskId, commentId));
|
|
1283
|
-
}
|
|
1284
|
-
// ---- Task Activities ----
|
|
1285
|
-
async getTaskActivities(orgId, taskId, params) {
|
|
1286
|
-
return this.request('GET', ENDPOINTS.TASK_ACTIVITIES(orgId, taskId), undefined, params);
|
|
1287
|
-
}
|
|
1288
|
-
// ---- Projects (org-scoped) ----
|
|
1289
|
-
async createProject(orgId, data) {
|
|
1290
|
-
return this.request('POST', ENDPOINTS.PROJECTS(orgId), data);
|
|
1291
|
-
}
|
|
1292
|
-
async getProjects(orgId) {
|
|
1293
|
-
const res = await this.request('GET', ENDPOINTS.PROJECTS(orgId));
|
|
1294
|
-
return res.data;
|
|
1295
|
-
}
|
|
1296
|
-
async getProject(orgId, projectId) {
|
|
1297
|
-
return this.request('GET', ENDPOINTS.PROJECT(orgId, projectId));
|
|
1298
|
-
}
|
|
1299
|
-
async updateProject(orgId, projectId, data) {
|
|
1300
|
-
return this.request('PATCH', ENDPOINTS.PROJECT(orgId, projectId), data);
|
|
1301
|
-
}
|
|
1302
|
-
async deleteProject(orgId, projectId) {
|
|
1303
|
-
return this.request('DELETE', ENDPOINTS.PROJECT(orgId, projectId));
|
|
1304
|
-
}
|
|
1305
1235
|
// ---- Schedules (org-scoped) ----
|
|
1306
1236
|
async createSchedule(orgId, input) {
|
|
1307
1237
|
return this.request('POST', ENDPOINTS.SCHEDULES(orgId), input);
|
|
@@ -1439,12 +1369,26 @@ export class ParallClient {
|
|
|
1439
1369
|
}
|
|
1440
1370
|
/**
|
|
1441
1371
|
* WeChat tier-B read verb (agent-only; internal research preview): the
|
|
1442
|
-
* account's address book —
|
|
1443
|
-
* official accounts. Same live gate as the send verb.
|
|
1372
|
+
* account's address book — friends/chatrooms enriched with display names,
|
|
1373
|
+
* followed official accounts. Same live gate as the send verb.
|
|
1444
1374
|
*/
|
|
1445
1375
|
async listWechatContacts(orgId) {
|
|
1446
1376
|
return this.request('GET', ENDPOINTS.WECHAT_CONTACTS(orgId));
|
|
1447
1377
|
}
|
|
1378
|
+
/**
|
|
1379
|
+
* WeChat tier-B read verb (agent-only): the connected account's identity
|
|
1380
|
+
* (wxid / alias / nickName / app id).
|
|
1381
|
+
*/
|
|
1382
|
+
async wechatProfile(orgId) {
|
|
1383
|
+
return this.request('GET', ENDPOINTS.WECHAT_PROFILE(orgId));
|
|
1384
|
+
}
|
|
1385
|
+
/**
|
|
1386
|
+
* WeChat tier-B read verb (agent-only): live online probe + identity +
|
|
1387
|
+
* the platform's offline record.
|
|
1388
|
+
*/
|
|
1389
|
+
async wechatStatus(orgId) {
|
|
1390
|
+
return this.request('GET', ENDPOINTS.WECHAT_STATUS(orgId));
|
|
1391
|
+
}
|
|
1448
1392
|
async listChannelConversations(orgId, connectionId) {
|
|
1449
1393
|
return this.request('GET', ENDPOINTS.CHANNEL_CONNECTION_CONVERSATIONS(orgId, connectionId));
|
|
1450
1394
|
}
|
|
@@ -1786,6 +1730,7 @@ export class ParallClient {
|
|
|
1786
1730
|
return this.request('PATCH', ENDPOINTS.NOTIFICATION_PREFERENCES, { prefs });
|
|
1787
1731
|
}
|
|
1788
1732
|
// ---- Feature Flags (org-scoped, server-evaluated) ----
|
|
1733
|
+
/** Omit orgId to resolve deployment capabilities before joining an org. */
|
|
1789
1734
|
async getFeatureFlags(orgId) {
|
|
1790
1735
|
return this.request('GET', ENDPOINTS.FEATURE_FLAGS(orgId));
|
|
1791
1736
|
}
|
|
@@ -1806,6 +1751,52 @@ export class ParallClient {
|
|
|
1806
1751
|
timeoutMs: 185_000,
|
|
1807
1752
|
});
|
|
1808
1753
|
}
|
|
1754
|
+
/** Queue a template deployment and poll its durable deployment row. Each
|
|
1755
|
+
* request is short-lived; closing the client does not cancel server work. */
|
|
1756
|
+
async deployTemplateAsync(orgId, request, idempotencyKey) {
|
|
1757
|
+
const queue = () => this.request('POST', ENDPOINTS.TEMPLATE_DEPLOYMENTS(orgId), {
|
|
1758
|
+
...request,
|
|
1759
|
+
async: true,
|
|
1760
|
+
idempotency_key: idempotencyKey,
|
|
1761
|
+
});
|
|
1762
|
+
let result;
|
|
1763
|
+
for (let attempt = 0; attempt < 2 && result === undefined; attempt += 1) {
|
|
1764
|
+
try {
|
|
1765
|
+
result = await queue();
|
|
1766
|
+
}
|
|
1767
|
+
catch (error) {
|
|
1768
|
+
// A lost response or transient server failure is safe to retry because
|
|
1769
|
+
// the key resolves to the same deployment row rather than starting a
|
|
1770
|
+
// second team. A second transient failure remains outcome-unknown.
|
|
1771
|
+
if (!(error instanceof ApiError) || (error.status !== 0 && error.status < 500))
|
|
1772
|
+
throw error;
|
|
1773
|
+
}
|
|
1774
|
+
}
|
|
1775
|
+
if (result === undefined) {
|
|
1776
|
+
throw new ApiError(0, 'Template deployment request outcome is unknown', 'NETWORK_ERROR');
|
|
1777
|
+
}
|
|
1778
|
+
const deadline = Date.now() + 30 * 60 * 1000;
|
|
1779
|
+
while (result.status === 'queued' || result.status === 'deploying') {
|
|
1780
|
+
if (Date.now() >= deadline) {
|
|
1781
|
+
throw new ApiError(0, 'Template deployment is still running', 'REQUEST_TIMEOUT');
|
|
1782
|
+
}
|
|
1783
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
1784
|
+
try {
|
|
1785
|
+
result = await this.request('GET', ENDPOINTS.TEMPLATE_DEPLOYMENT(orgId, result.deployment_id));
|
|
1786
|
+
}
|
|
1787
|
+
catch (error) {
|
|
1788
|
+
if (!(error instanceof ApiError) || (error.status !== 0 && error.status < 500))
|
|
1789
|
+
throw error;
|
|
1790
|
+
// A network failure or transient server error does not change the
|
|
1791
|
+
// durable deployment. Keep polling instead of presenting a definite
|
|
1792
|
+
// failure that could make a fresh-key retry create another team.
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1795
|
+
if (result.status !== 'deployed') {
|
|
1796
|
+
throw new ApiError(500, result.error?.message ?? 'Template deployment failed', result.error?.code);
|
|
1797
|
+
}
|
|
1798
|
+
return result;
|
|
1799
|
+
}
|
|
1809
1800
|
async getTemplateDeployment(orgId, deploymentId) {
|
|
1810
1801
|
return this.request('GET', ENDPOINTS.TEMPLATE_DEPLOYMENT(orgId, deploymentId));
|
|
1811
1802
|
}
|
|
@@ -2022,6 +2013,11 @@ export class ParallClient {
|
|
|
2022
2013
|
async uninstallRegistryClip(orgId, clipId) {
|
|
2023
2014
|
await this.request('DELETE', ENDPOINTS.ORG_CLIP_UNINSTALL(orgId, clipId));
|
|
2024
2015
|
}
|
|
2016
|
+
/** Best-effort provider revoke followed by atomic local removal of an
|
|
2017
|
+
* installed Official MCP Clip and all org-owned connection state. */
|
|
2018
|
+
async removeOfficialMCPClip(orgId, clipId) {
|
|
2019
|
+
return this.request('DELETE', ENDPOINTS.ORG_CLIP_MCP_REMOVE(orgId, clipId));
|
|
2020
|
+
}
|
|
2025
2021
|
/** List the org's installed registry clips (full entries). */
|
|
2026
2022
|
async listInstalledRegistryClips(orgId) {
|
|
2027
2023
|
const resp = await this.request('GET', ENDPOINTS.ORG_CLIPS_INSTALLED(orgId));
|
|
@@ -2056,15 +2052,18 @@ export class ParallClient {
|
|
|
2056
2052
|
/**
|
|
2057
2053
|
* Read a clip's per-org agent exec access. Org-member readable (agents
|
|
2058
2054
|
* included, so a denied agent can learn why exec answered
|
|
2059
|
-
* `CLIP_AGENT_NOT_ALLOWED`).
|
|
2055
|
+
* `CLIP_AGENT_NOT_ALLOWED` / `CLIP_AGENT_CONNECTION_NOT_ALLOWED`).
|
|
2060
2056
|
*/
|
|
2061
2057
|
async getClipAgentExecAccess(orgId, clipId) {
|
|
2062
2058
|
return this.request('GET', ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId));
|
|
2063
2059
|
}
|
|
2064
2060
|
/**
|
|
2065
2061
|
* Replace a clip's per-org agent exec access. Human-only (agent principals
|
|
2066
|
-
* get 403); under `all_agents`
|
|
2067
|
-
*
|
|
2062
|
+
* get 403); under `all_agents` both lists must be empty; pass either
|
|
2063
|
+
* `agent_ids` (legacy flat form → every agent gets `connection_scope: 'all'`)
|
|
2064
|
+
* or `grants` (connection-scoped), never both. Every granted id must be an
|
|
2065
|
+
* active agent of this org, and every `connection_ids` entry a connection of
|
|
2066
|
+
* THIS clip in this org (else `400 INVALID_INPUT`).
|
|
2068
2067
|
*/
|
|
2069
2068
|
async putClipAgentExecAccess(orgId, clipId, access) {
|
|
2070
2069
|
return this.request('PUT', ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId), access);
|
|
@@ -2150,6 +2149,41 @@ export class ParallClient {
|
|
|
2150
2149
|
headers: expectedVersion ? { 'If-Match': `"proxy-${expectedVersion}"` } : undefined,
|
|
2151
2150
|
});
|
|
2152
2151
|
}
|
|
2152
|
+
/**
|
|
2153
|
+
* Read a hosted Cloud Profile's one-shot cookie-seed status (manager-only:
|
|
2154
|
+
* hosted human maintainer or org admin). Sanitized — cookie VALUES never come
|
|
2155
|
+
* back, only `cookie_count` and the distinct target `domains`. `can_mutate` /
|
|
2156
|
+
* `lease_status` are the authoritative idle gate. Typed errors: `EDGE_NOT_HOSTED`
|
|
2157
|
+
* (BYOC device), `NOT_FOUND` (unknown profile).
|
|
2158
|
+
*/
|
|
2159
|
+
async getEdgeProfileCookieSeed(orgId, edgeId, profileName) {
|
|
2160
|
+
return this.request('GET', ENDPOINTS.ORG_EDGE_PROFILE_COOKIES(orgId, edgeId, profileName));
|
|
2161
|
+
}
|
|
2162
|
+
/**
|
|
2163
|
+
* Set/replace the profile's one-shot cookie seed (the full normalized cookie
|
|
2164
|
+
* array every time) — IDLE ONLY: while the profile's hosted browser is running
|
|
2165
|
+
* the server answers 409 `EDGE_PROFILE_IN_USE`; close the viewer, wait for idle
|
|
2166
|
+
* scale-to-zero, and retry. The next cold start injects the cookies into the
|
|
2167
|
+
* profile partition and consumes the seed. Other typed errors:
|
|
2168
|
+
* `EDGE_COOKIE_SEED_STALE` (409 — expectedVersion lost a tab race, sent as the
|
|
2169
|
+
* `cookieseed-<version>` If-Match), `EDGE_DELETING` (409), and
|
|
2170
|
+
* `SECRETBOX_UNCONFIGURED` (503 — server cannot store cookies safely).
|
|
2171
|
+
*/
|
|
2172
|
+
async setEdgeProfileCookieSeed(orgId, edgeId, profileName, req, expectedVersion) {
|
|
2173
|
+
return this.request('PUT', ENDPOINTS.ORG_EDGE_PROFILE_COOKIES(orgId, edgeId, profileName), req, undefined, false, {
|
|
2174
|
+
headers: expectedVersion ? { 'If-Match': `"cookieseed-${expectedVersion}"` } : undefined,
|
|
2175
|
+
});
|
|
2176
|
+
}
|
|
2177
|
+
/**
|
|
2178
|
+
* Clear the pending cookie seed (does NOT sign the profile out — cookies
|
|
2179
|
+
* already injected into the partition stay). Idle-only like set — 409
|
|
2180
|
+
* `EDGE_PROFILE_IN_USE` while the browser is live.
|
|
2181
|
+
*/
|
|
2182
|
+
async clearEdgeProfileCookieSeed(orgId, edgeId, profileName, expectedVersion) {
|
|
2183
|
+
return this.request('DELETE', ENDPOINTS.ORG_EDGE_PROFILE_COOKIES(orgId, edgeId, profileName), undefined, undefined, false, {
|
|
2184
|
+
headers: expectedVersion ? { 'If-Match': `"cookieseed-${expectedVersion}"` } : undefined,
|
|
2185
|
+
});
|
|
2186
|
+
}
|
|
2153
2187
|
/**
|
|
2154
2188
|
* Execute a registry clip command on an Edge device.
|
|
2155
2189
|
*
|
|
@@ -2225,12 +2259,14 @@ export class ParallClient {
|
|
|
2225
2259
|
async deleteClipConnection(orgId, connId) {
|
|
2226
2260
|
return this.request('DELETE', ENDPOINTS.CLIP_CONNECTION(orgId, connId));
|
|
2227
2261
|
}
|
|
2228
|
-
// ---- MCP clip server config (
|
|
2262
|
+
// ---- MCP clip server config (same-org or reviewed Official OAuth) ----
|
|
2229
2263
|
/**
|
|
2230
|
-
* Read the redacted MCP config. 404 NOT_FOUND when the clip has none yet
|
|
2231
|
-
*
|
|
2232
|
-
*
|
|
2233
|
-
*
|
|
2264
|
+
* Read the redacted MCP config. 404 NOT_FOUND when the clip has none yet —
|
|
2265
|
+
* and also when a cross-org clip is not public + approved + installed, which
|
|
2266
|
+
* reads as nonexistent rather than refused (same existence-hiding as exec).
|
|
2267
|
+
* A cross-org clip that IS installed and approved reads fine regardless of
|
|
2268
|
+
* auth shape; what may then be configured is decided per credential owner.
|
|
2269
|
+
* `version` is the CAS token the mutations echo via If-Match.
|
|
2234
2270
|
*/
|
|
2235
2271
|
async getClipMCPConfig(orgId, clipId) {
|
|
2236
2272
|
return this.request('GET', ENDPOINTS.ORG_CLIP_MCP_CONFIG(orgId, clipId));
|
|
@@ -2267,13 +2303,26 @@ export class ParallClient {
|
|
|
2267
2303
|
* List the org's MCP connections for a clip, default first — one row per
|
|
2268
2304
|
* connection (credential slot), WITHOUT the tools snapshot (`tool_count`
|
|
2269
2305
|
* summarizes it; the per-config GET carries the full snapshot). Same
|
|
2270
|
-
* family-wide fence as the singular GET:
|
|
2271
|
-
*
|
|
2306
|
+
* family-wide fence as the singular GET: same-org clips, or a cross-org clip
|
|
2307
|
+
* that is public + approved + installed; anything else reads as
|
|
2308
|
+
* `404 NOT_FOUND`. An installed cross-org clip with no connection yet lists
|
|
2309
|
+
* as an empty array — including one whose approved auth mode cannot be
|
|
2310
|
+
* configured at all (auth=none), which the write path is what refuses. With
|
|
2272
2311
|
* `cap:clip-mcp` off the route is not registered at all.
|
|
2273
2312
|
*/
|
|
2274
2313
|
async listClipMCPConnections(orgId, clipId) {
|
|
2275
2314
|
return this.request('GET', ENDPOINTS.ORG_CLIP_MCP_CONFIGS(orgId, clipId));
|
|
2276
2315
|
}
|
|
2316
|
+
/** Start a new Official OAuth MCP connection with the platform-owned app.
|
|
2317
|
+
* Omitting oauth_client is load-bearing: the server resolves the exact
|
|
2318
|
+
* reviewed-version binding and never falls back to DCR/CIMD cross-org. */
|
|
2319
|
+
async createClipMCPOAuthConnection(orgId, clipId, serverUrl, alias) {
|
|
2320
|
+
return this.request('POST', ENDPOINTS.ORG_CLIP_MCP_CONFIGS(orgId, clipId), {
|
|
2321
|
+
server_url: serverUrl,
|
|
2322
|
+
auth_type: 'oauth',
|
|
2323
|
+
...(alias ? { alias } : {}),
|
|
2324
|
+
});
|
|
2325
|
+
}
|
|
2277
2326
|
/**
|
|
2278
2327
|
* Re-run tools/list and replace the cached snapshot (org-admin only).
|
|
2279
2328
|
* Deliberately does NOT advance the CAS version, so an in-flight edit in
|
package/dist/constants.d.ts
CHANGED
|
@@ -359,6 +359,9 @@ export declare const ENDPOINTS: {
|
|
|
359
359
|
readonly ORG_MEMBERS: (orgId: string) => string;
|
|
360
360
|
readonly ORG_MEMBERS_FORMER: (orgId: string) => string;
|
|
361
361
|
readonly TEAMS: (orgId: string) => string;
|
|
362
|
+
readonly TEAM: (orgId: string, teamId: string) => string;
|
|
363
|
+
readonly TEAM_MEMBERS: (orgId: string, teamId: string) => string;
|
|
364
|
+
readonly TEAM_MEMBER: (orgId: string, teamId: string, userId: string) => string;
|
|
362
365
|
readonly ORG_MEMBERS_ONLINE: (orgId: string) => string;
|
|
363
366
|
readonly ORG_MEMBER: (orgId: string, userId: string) => string;
|
|
364
367
|
readonly ORG_MEMBER_CHATS: (orgId: string, memberId: string) => string;
|
|
@@ -456,6 +459,7 @@ export declare const ENDPOINTS: {
|
|
|
456
459
|
readonly MACHINES_ME_BROWSE_RESPONSE: (requestId: string) => string;
|
|
457
460
|
readonly MACHINES_ME_BROWSER_PROFILE_VIEWER_RESPONSE: (requestId: string) => string;
|
|
458
461
|
readonly TASKS: (orgId: string) => string;
|
|
462
|
+
readonly TASK_SUBTASK_SUMMARY: (orgId: string) => string;
|
|
459
463
|
readonly TASK: (orgId: string, taskId: string) => string;
|
|
460
464
|
readonly TASK_ARCHIVE: (orgId: string, taskId: string) => string;
|
|
461
465
|
readonly TASK_RESTORE: (orgId: string, taskId: string) => string;
|
|
@@ -469,8 +473,19 @@ export declare const ENDPOINTS: {
|
|
|
469
473
|
readonly TASK_COMMENTS: (orgId: string, taskId: string) => string;
|
|
470
474
|
readonly TASK_COMMENT: (orgId: string, taskId: string, commentId: string) => string;
|
|
471
475
|
readonly TASK_ACTIVITIES: (orgId: string, taskId: string) => string;
|
|
476
|
+
readonly TASK_LABELS: (orgId: string, taskId: string) => string;
|
|
477
|
+
readonly TASK_LABEL: (orgId: string, taskId: string, labelId: string) => string;
|
|
478
|
+
readonly LABELS: (orgId: string) => string;
|
|
479
|
+
readonly LABEL: (orgId: string, labelId: string) => string;
|
|
472
480
|
readonly PROJECTS: (orgId: string) => string;
|
|
481
|
+
readonly PROJECT_TASK_SUMMARY: (orgId: string) => string;
|
|
473
482
|
readonly PROJECT: (orgId: string, projectId: string) => string;
|
|
483
|
+
readonly PROJECT_MEMBERS: (orgId: string, projectId: string) => string;
|
|
484
|
+
readonly PROJECT_READERS: (orgId: string, projectId: string) => string;
|
|
485
|
+
readonly PROJECT_LIBRARY: (orgId: string) => string;
|
|
486
|
+
readonly PROJECT_JOIN: (orgId: string, projectId: string) => string;
|
|
487
|
+
readonly PROJECT_JOIN_REQUESTS: (orgId: string, projectId: string) => string;
|
|
488
|
+
readonly PROJECT_MEMBER: (orgId: string, projectId: string, subject: string) => string;
|
|
474
489
|
readonly SCHEDULES: (orgId: string) => string;
|
|
475
490
|
readonly SCHEDULE: (orgId: string, id: string) => string;
|
|
476
491
|
readonly SCHEDULE_PAUSE: (orgId: string, id: string) => string;
|
|
@@ -508,6 +523,8 @@ export declare const ENDPOINTS: {
|
|
|
508
523
|
readonly SLACK_MEMBERS: (orgId: string) => string;
|
|
509
524
|
readonly SLACK_STATUS: (orgId: string) => string;
|
|
510
525
|
readonly WECHAT_CONTACTS: (orgId: string) => string;
|
|
526
|
+
readonly WECHAT_PROFILE: (orgId: string) => string;
|
|
527
|
+
readonly WECHAT_STATUS: (orgId: string) => string;
|
|
511
528
|
readonly ORG_INVITATIONS: (orgId: string) => string;
|
|
512
529
|
readonly ORG_INVITATION: (orgId: string, invId: string) => string;
|
|
513
530
|
readonly ORG_INVITATION_RESEND: (orgId: string, invId: string) => string;
|
|
@@ -598,7 +615,7 @@ export declare const ENDPOINTS: {
|
|
|
598
615
|
readonly PUSH_VAPID_KEY: "/api/v1/push/vapid-key";
|
|
599
616
|
readonly NOTIFICATION_PREFERENCES: "/api/v1/notification-preferences";
|
|
600
617
|
readonly SEARCH: (orgId: string) => string;
|
|
601
|
-
readonly FEATURE_FLAGS: (orgId
|
|
618
|
+
readonly FEATURE_FLAGS: (orgId?: string) => string;
|
|
602
619
|
readonly TEMPLATES: (orgId: string) => string;
|
|
603
620
|
readonly TEMPLATE: (orgId: string, templateId: string) => string;
|
|
604
621
|
readonly TEMPLATE_DEPLOYMENTS: (orgId: string) => string;
|
|
@@ -637,6 +654,7 @@ export declare const ENDPOINTS: {
|
|
|
637
654
|
readonly ORG_EDGE_ONBOARDING: (orgId: string) => string;
|
|
638
655
|
readonly ORG_EDGE_PROFILES: (orgId: string, edgeId: string) => string;
|
|
639
656
|
readonly ORG_EDGE_PROFILE_PROXY: (orgId: string, edgeId: string, profileName: string) => string;
|
|
657
|
+
readonly ORG_EDGE_PROFILE_COOKIES: (orgId: string, edgeId: string, profileName: string) => string;
|
|
640
658
|
readonly ORG_EDGE_EXEC: (orgId: string) => string;
|
|
641
659
|
readonly ORG_EDGE_VIEWER_COMMAND: (orgId: string, edgeId: string) => string;
|
|
642
660
|
readonly CLIP_CONNECTIONS: (orgId: string, clipId: string) => string;
|
|
@@ -647,6 +665,7 @@ export declare const ENDPOINTS: {
|
|
|
647
665
|
readonly ORG_CLIP_INSTALL: (orgId: string) => string;
|
|
648
666
|
readonly ORG_CLIPS_INSTALLED: (orgId: string) => string;
|
|
649
667
|
readonly ORG_CLIP_UNINSTALL: (orgId: string, clipId: string) => string;
|
|
668
|
+
readonly ORG_CLIP_MCP_REMOVE: (orgId: string, clipId: string) => string;
|
|
650
669
|
readonly ORG_CLIP_EXEC_ACCESS: (orgId: string, clipId: string) => string;
|
|
651
670
|
readonly ORG_CLIP_MCP_CONFIG: (orgId: string, clipId: string) => string;
|
|
652
671
|
readonly ORG_CLIP_MCP_TOOLS_REFRESH: (orgId: string, clipId: string) => string;
|
|
@@ -690,6 +709,7 @@ export declare const WS_EVENTS: {
|
|
|
690
709
|
readonly PONG: "pong";
|
|
691
710
|
readonly WATCHING: "watching";
|
|
692
711
|
readonly MESSAGE_NEW: "message.new";
|
|
712
|
+
/** @deprecated `message.patch` is retired and never published; kept for compile compatibility. */
|
|
693
713
|
readonly MESSAGE_PATCH: "message.patch";
|
|
694
714
|
readonly MESSAGE_EDIT: "message.edit";
|
|
695
715
|
readonly MESSAGE_DELETE: "message.delete";
|
|
@@ -710,6 +730,9 @@ export declare const WS_EVENTS: {
|
|
|
710
730
|
readonly PROJECT_CREATED: "project.created";
|
|
711
731
|
readonly PROJECT_UPDATED: "project.updated";
|
|
712
732
|
readonly PROJECT_DELETED: "project.deleted";
|
|
733
|
+
readonly LABEL_CREATED: "label.created";
|
|
734
|
+
readonly LABEL_UPDATED: "label.updated";
|
|
735
|
+
readonly LABEL_DELETED: "label.deleted";
|
|
713
736
|
readonly AGENT_SESSION_NEW: "agent_session.new";
|
|
714
737
|
readonly AGENT_SESSION_UPDATE: "agent_session.update";
|
|
715
738
|
readonly AGENT_STEP_NEW: "agent_step.new";
|
|
@@ -720,6 +743,7 @@ export declare const WS_EVENTS: {
|
|
|
720
743
|
readonly ORG_JOIN_REQUEST_NEW: "org.join_request.new";
|
|
721
744
|
readonly ORG_INVITE_LINK_JOINED: "org.invite_link.joined";
|
|
722
745
|
readonly ORG_MEMBER_REMOVED: "org.member.removed";
|
|
746
|
+
readonly ORG_MEMBER_PROFILE_UPDATED: "org.member.profile.updated";
|
|
723
747
|
readonly AGENT_CONFIG_UPDATE: "agent_config.update";
|
|
724
748
|
readonly PRESENCE_UPDATE: "presence.update";
|
|
725
749
|
readonly WIKI_CHANGESET_CREATED: "wiki.changeset.created";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,YAAY,CAAC;AAGlC,eAAO,MAAM,SAAS,aAAa,CAAC;AAGpC,eAAO,MAAM,SAAS,aAAa,CAAC;AAMpC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmMlB,CAAC;AAIX;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuEzB,CAAC;AAKX;;;GAGG;AACH,eAAO,MAAM,iCAAiC;;;;CAIpC,CAAC;AAOX,wBAAgB,mCAAmC,CACjD,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EACnF,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACjC,OAAO,CAGT;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAiBhG;AAGD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;wBAiBT,MAAM;;;0BAQJ,MAAM;kCACE,MAAM;yCACC,MAAM;4BACnB,MAAM;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -358,6 +358,9 @@ export const ENDPOINTS = {
|
|
|
358
358
|
ORG_MEMBERS: (orgId) => `${API_BASE}/orgs/${orgId}/members`,
|
|
359
359
|
ORG_MEMBERS_FORMER: (orgId) => `${API_BASE}/orgs/${orgId}/members/former`,
|
|
360
360
|
TEAMS: (orgId) => `${API_BASE}/orgs/${orgId}/teams`,
|
|
361
|
+
TEAM: (orgId, teamId) => `${API_BASE}/orgs/${orgId}/teams/${teamId}`,
|
|
362
|
+
TEAM_MEMBERS: (orgId, teamId) => `${API_BASE}/orgs/${orgId}/teams/${teamId}/members`,
|
|
363
|
+
TEAM_MEMBER: (orgId, teamId, userId) => `${API_BASE}/orgs/${orgId}/teams/${teamId}/members/${userId}`,
|
|
361
364
|
ORG_MEMBERS_ONLINE: (orgId) => `${API_BASE}/orgs/${orgId}/members/online`,
|
|
362
365
|
ORG_MEMBER: (orgId, userId) => `${API_BASE}/orgs/${orgId}/members/${userId}`,
|
|
363
366
|
ORG_MEMBER_CHATS: (orgId, memberId) => `${API_BASE}/orgs/${orgId}/members/${memberId}/chats`,
|
|
@@ -480,6 +483,7 @@ export const ENDPOINTS = {
|
|
|
480
483
|
MACHINES_ME_BROWSER_PROFILE_VIEWER_RESPONSE: (requestId) => `${API_BASE}/machines/me/browser-profiles/viewer-response/${requestId}`,
|
|
481
484
|
// Tasks (org-scoped)
|
|
482
485
|
TASKS: (orgId) => `${API_BASE}/orgs/${orgId}/tasks`,
|
|
486
|
+
TASK_SUBTASK_SUMMARY: (orgId) => `${API_BASE}/orgs/${orgId}/tasks/subtask-summary`,
|
|
483
487
|
TASK: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}`,
|
|
484
488
|
TASK_ARCHIVE: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/archive`,
|
|
485
489
|
TASK_RESTORE: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/restore`,
|
|
@@ -493,9 +497,22 @@ export const ENDPOINTS = {
|
|
|
493
497
|
TASK_COMMENTS: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/comments`,
|
|
494
498
|
TASK_COMMENT: (orgId, taskId, commentId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/comments/${commentId}`,
|
|
495
499
|
TASK_ACTIVITIES: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/activities`,
|
|
500
|
+
TASK_LABELS: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/labels`,
|
|
501
|
+
TASK_LABEL: (orgId, taskId, labelId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/labels/${labelId}`,
|
|
502
|
+
// Labels (org-scoped vocabulary; writes are admin-gated)
|
|
503
|
+
LABELS: (orgId) => `${API_BASE}/orgs/${orgId}/labels`,
|
|
504
|
+
LABEL: (orgId, labelId) => `${API_BASE}/orgs/${orgId}/labels/${labelId}`,
|
|
496
505
|
// Projects (org-scoped)
|
|
497
506
|
PROJECTS: (orgId) => `${API_BASE}/orgs/${orgId}/projects`,
|
|
507
|
+
PROJECT_TASK_SUMMARY: (orgId) => `${API_BASE}/orgs/${orgId}/projects/task-summary`,
|
|
498
508
|
PROJECT: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}`,
|
|
509
|
+
PROJECT_MEMBERS: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/members`,
|
|
510
|
+
PROJECT_READERS: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/readers`,
|
|
511
|
+
PROJECT_LIBRARY: (orgId) => `${API_BASE}/orgs/${orgId}/projects/library`,
|
|
512
|
+
PROJECT_JOIN: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/join`,
|
|
513
|
+
PROJECT_JOIN_REQUESTS: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/join-requests`,
|
|
514
|
+
// subject is a bare user ID or a bare team ID; both are path-segment safe.
|
|
515
|
+
PROJECT_MEMBER: (orgId, projectId, subject) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/members/${subject}`,
|
|
499
516
|
// Schedules (org-scoped, platform time trigger primitive)
|
|
500
517
|
SCHEDULES: (orgId) => `${API_BASE}/orgs/${orgId}/schedules`,
|
|
501
518
|
SCHEDULE: (orgId, id) => `${API_BASE}/orgs/${orgId}/schedules/${id}`,
|
|
@@ -537,8 +554,10 @@ export const ENDPOINTS = {
|
|
|
537
554
|
SLACK_HISTORY: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/history`,
|
|
538
555
|
SLACK_MEMBERS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/members`,
|
|
539
556
|
SLACK_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/status`,
|
|
540
|
-
// WeChat tier-B read
|
|
557
|
+
// WeChat tier-B read verbs (agent-only; internal research preview).
|
|
541
558
|
WECHAT_CONTACTS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/contacts`,
|
|
559
|
+
WECHAT_PROFILE: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/profile`,
|
|
560
|
+
WECHAT_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/status`,
|
|
542
561
|
// Invitations (org-scoped, admin)
|
|
543
562
|
ORG_INVITATIONS: (orgId) => `${API_BASE}/orgs/${orgId}/invitations`,
|
|
544
563
|
ORG_INVITATION: (orgId, invId) => `${API_BASE}/orgs/${orgId}/invitations/${invId}`,
|
|
@@ -652,8 +671,10 @@ export const ENDPOINTS = {
|
|
|
652
671
|
NOTIFICATION_PREFERENCES: `${API_BASE}/notification-preferences`,
|
|
653
672
|
// Unified search (messages + tasks + wiki, org-scoped)
|
|
654
673
|
SEARCH: (orgId) => `${API_BASE}/orgs/${orgId}/search`,
|
|
655
|
-
// Feature flags (
|
|
656
|
-
|
|
674
|
+
// Feature flags (server-evaluated). Org-scoped by default; omit the org for
|
|
675
|
+
// the pre-org form, which resolves "cap:" capabilities only (PostHog flags
|
|
676
|
+
// are org-scoped and absent there) for callers that have no org yet.
|
|
677
|
+
FEATURE_FLAGS: (orgId) => orgId ? `${API_BASE}/orgs/${orgId}/feature-flags` : `${API_BASE}/feature-flags`,
|
|
657
678
|
// Team templates (org-scoped, owner/admin only)
|
|
658
679
|
TEMPLATES: (orgId) => `${API_BASE}/orgs/${orgId}/templates`,
|
|
659
680
|
TEMPLATE: (orgId, templateId) => `${API_BASE}/orgs/${orgId}/templates/${templateId}`,
|
|
@@ -711,6 +732,9 @@ export const ENDPOINTS = {
|
|
|
711
732
|
ORG_EDGE_PROFILES: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles`,
|
|
712
733
|
// Per-profile egress proxy (hosted Cloud Profiles; manager-only, human-only).
|
|
713
734
|
ORG_EDGE_PROFILE_PROXY: (orgId, edgeId, profileName) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles/${encodeURIComponent(profileName)}/proxy`,
|
|
735
|
+
// Per-profile one-shot cookie seed (hosted Cloud Profiles; manager-only,
|
|
736
|
+
// human-only, idle-only). Injected at the next cold start, then consumed.
|
|
737
|
+
ORG_EDGE_PROFILE_COOKIES: (orgId, edgeId, profileName) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles/${encodeURIComponent(profileName)}/cookies`,
|
|
714
738
|
ORG_EDGE_EXEC: (orgId) => `/api/v1/orgs/${orgId}/edge/exec`,
|
|
715
739
|
// Cloud Edge live viewer command (V1b) — api-server, gated on cap:edge-viewer.
|
|
716
740
|
// Same request/reply shape as the v2 browser-profile viewer, on the v3 edge
|
|
@@ -725,10 +749,11 @@ export const ENDPOINTS = {
|
|
|
725
749
|
ORG_CLIP_INSTALL: (orgId) => `/api/v1/orgs/${orgId}/clips/install`,
|
|
726
750
|
ORG_CLIPS_INSTALLED: (orgId) => `/api/v1/orgs/${orgId}/clips/installed`,
|
|
727
751
|
ORG_CLIP_UNINSTALL: (orgId, clipId) => `/api/v1/orgs/${orgId}/clips/${clipId}/uninstall`,
|
|
752
|
+
ORG_CLIP_MCP_REMOVE: (orgId, clipId) => `/api/v1/orgs/${orgId}/clips/${clipId}/mcp-remove`,
|
|
728
753
|
// Per-org agent exec access for one clip (default all agents; PUT human-only)
|
|
729
754
|
ORG_CLIP_EXEC_ACCESS: (orgId, clipId) => `/api/v1/orgs/${orgId}/clips/${clipId}/exec-access`,
|
|
730
|
-
// MCP clip server config (cap:clip-mcp;
|
|
731
|
-
//
|
|
755
|
+
// MCP clip server config (cap:clip-mcp; cross-org is limited to installed,
|
|
756
|
+
// reviewed Official OAuth Clips). The
|
|
732
757
|
// singular family addresses the org's DEFAULT connection (pre-165
|
|
733
758
|
// back-compat shim); the plural family is the multi-connection surface —
|
|
734
759
|
// one config row (credential slot) per connection, addressed by config id.
|
|
@@ -786,6 +811,7 @@ export const WS_EVENTS = {
|
|
|
786
811
|
PONG: 'pong',
|
|
787
812
|
WATCHING: 'watching',
|
|
788
813
|
MESSAGE_NEW: 'message.new',
|
|
814
|
+
/** @deprecated `message.patch` is retired and never published; kept for compile compatibility. */
|
|
789
815
|
MESSAGE_PATCH: 'message.patch',
|
|
790
816
|
MESSAGE_EDIT: 'message.edit',
|
|
791
817
|
MESSAGE_DELETE: 'message.delete',
|
|
@@ -806,6 +832,9 @@ export const WS_EVENTS = {
|
|
|
806
832
|
PROJECT_CREATED: 'project.created',
|
|
807
833
|
PROJECT_UPDATED: 'project.updated',
|
|
808
834
|
PROJECT_DELETED: 'project.deleted',
|
|
835
|
+
LABEL_CREATED: 'label.created',
|
|
836
|
+
LABEL_UPDATED: 'label.updated',
|
|
837
|
+
LABEL_DELETED: 'label.deleted',
|
|
809
838
|
AGENT_SESSION_NEW: 'agent_session.new',
|
|
810
839
|
AGENT_SESSION_UPDATE: 'agent_session.update',
|
|
811
840
|
AGENT_STEP_NEW: 'agent_step.new',
|
|
@@ -816,6 +845,7 @@ export const WS_EVENTS = {
|
|
|
816
845
|
ORG_JOIN_REQUEST_NEW: 'org.join_request.new',
|
|
817
846
|
ORG_INVITE_LINK_JOINED: 'org.invite_link.joined',
|
|
818
847
|
ORG_MEMBER_REMOVED: 'org.member.removed',
|
|
848
|
+
ORG_MEMBER_PROFILE_UPDATED: 'org.member.profile.updated',
|
|
819
849
|
AGENT_CONFIG_UPDATE: 'agent_config.update',
|
|
820
850
|
PRESENCE_UPDATE: 'presence.update',
|
|
821
851
|
WIKI_CHANGESET_CREATED: 'wiki.changeset.created',
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export * from './browser-viewer.js';
|
|
|
2
2
|
export type { ParallClientOptions } from './client.js';
|
|
3
3
|
export { ApiError, ParallClient } from './client.js';
|
|
4
4
|
export * from './constants.js';
|
|
5
|
+
export * from './subject.js';
|
|
6
|
+
export * from './task-label-types.js';
|
|
5
7
|
export * from './types.js';
|
|
6
8
|
export type { ParallWsOptions, WsClientEventMap, WsConnectionState, WsEventHandler, WsEventType, } from './ws.js';
|
|
7
9
|
export { ParallWs } from './ws.js';
|