@parall/parall 1.46.0 → 1.47.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.
@@ -51482,10 +51482,17 @@ var ENDPOINTS = {
51482
51482
  CHANNEL_CONVERSATION_SESSION: (orgId, conversationId) => `${API_BASE}/orgs/${orgId}/channel-conversations/${conversationId}/session`,
51483
51483
  CHANNEL_MESSAGE: (orgId, messageId) => `${API_BASE}/orgs/${orgId}/channel-messages/${messageId}`,
51484
51484
  CHANNEL_PROVISIONING: (orgId) => `${API_BASE}/orgs/${orgId}/channel-provisioning`,
51485
+ CHANNEL_SLACK_MANIFEST_LINK: (orgId) => `${API_BASE}/orgs/${orgId}/channel-provisioning/slack/manifest-link`,
51485
51486
  CHANNEL_PROVISIONING_SESSION: (orgId, sessionId) => `${API_BASE}/orgs/${orgId}/channel-provisioning/${sessionId}`,
51486
51487
  CHANNEL_PROVISIONING_CANCEL: (orgId, sessionId) => `${API_BASE}/orgs/${orgId}/channel-provisioning/${sessionId}/cancel`,
51487
51488
  // Tier-B platform verb (agent-only): send one message as the bound bot.
51488
51489
  CHANNEL_SEND: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/channel-send`,
51490
+ // Tier-B read verbs (agent-only): workspace visibility as the bot sees it.
51491
+ SLACK_CHANNELS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/channels`,
51492
+ SLACK_USERS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/users`,
51493
+ SLACK_HISTORY: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/history`,
51494
+ SLACK_MEMBERS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/members`,
51495
+ SLACK_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/status`,
51489
51496
  // Invitations (org-scoped, admin)
51490
51497
  ORG_INVITATIONS: (orgId) => `${API_BASE}/orgs/${orgId}/invitations`,
51491
51498
  ORG_INVITATION: (orgId, invId) => `${API_BASE}/orgs/${orgId}/invitations/${invId}`,
@@ -51580,6 +51587,7 @@ var ENDPOINTS = {
51580
51587
  ORG_UNREAD: (orgId) => `${API_BASE}/orgs/${orgId}/unread`,
51581
51588
  CHAT_READ: (orgId, chatId) => `${API_BASE}/orgs/${orgId}/chats/${chatId}/read`,
51582
51589
  THREAD_UNREAD: (orgId, chatId, threadRootId) => `${API_BASE}/orgs/${orgId}/chats/${chatId}/threads/${threadRootId}/unread`,
51590
+ THREAD_READ: (orgId, chatId, threadRootId) => `${API_BASE}/orgs/${orgId}/chats/${chatId}/threads/${threadRootId}/read`,
51583
51591
  // References (org-scoped)
51584
51592
  REFS_RESOLVE: (orgId) => `${API_BASE}/orgs/${orgId}/refs/resolve`,
51585
51593
  REFS_BACKLINKS: (orgId) => `${API_BASE}/orgs/${orgId}/refs/backlinks`,
@@ -52670,10 +52678,16 @@ var ParallClient = class _ParallClient {
52670
52678
  async resizeMachine(orgId, machineId, spec) {
52671
52679
  return this.request("PATCH", ENDPOINTS.MACHINE_SPEC(orgId, machineId), spec);
52672
52680
  }
52673
- /** Signal a local daemon-mode Machine to check for and apply an update. */
52681
+ /** @deprecated Retired server-side (daemon-control-authorization §4.2):
52682
+ * daemons update autonomously (CDN poll + platform release signal). The
52683
+ * endpoint now answers 409 LOCAL_UPDATE_NOT_SUPPORTED unconditionally. */
52674
52684
  async requestMachineUpdate(orgId, machineId, mandatory = false) {
52675
52685
  await this.request("POST", ENDPOINTS.MACHINE_REQUEST_UPDATE(orgId, machineId), { mandatory });
52676
52686
  }
52687
+ /** @deprecated Retired server-side (daemon-control-authorization §4.2):
52688
+ * remote filesystem browse of a member's machine was remote device access.
52689
+ * The endpoint now answers 409 LOCAL_BROWSE_NOT_SUPPORTED unconditionally;
52690
+ * workspace paths are typed in (or picked on the machine's own Desktop). */
52677
52691
  async browseMachineFilesystem(orgId, machineId, path9) {
52678
52692
  return this.request("POST", ENDPOINTS.MACHINE_BROWSE(orgId, machineId), { path: path9 }, void 0, false, { timeoutMs: 15e3 });
52679
52693
  }
@@ -52698,6 +52712,14 @@ var ParallClient = class _ParallClient {
52698
52712
  async getThreadUnread(orgId, chatId, threadRootId) {
52699
52713
  return this.request("GET", ENDPOINTS.THREAD_UNREAD(orgId, chatId, threadRootId));
52700
52714
  }
52715
+ /** Advance the per-thread read cursor (forward-only). The server auto-clears
52716
+ * thread-scoped inbox items (thread_reply + in-thread mentions) the cursor
52717
+ * now covers. */
52718
+ async markThreadRead(orgId, chatId, threadRootId, messageId) {
52719
+ return this.request("POST", ENDPOINTS.THREAD_READ(orgId, chatId, threadRootId), {
52720
+ message_id: messageId
52721
+ });
52722
+ }
52701
52723
  // ---- Inbox ----
52702
52724
  async getInbox(orgId, params) {
52703
52725
  return this.request("GET", ENDPOINTS.INBOX(orgId), void 0, params);
@@ -52721,9 +52743,12 @@ var ParallClient = class _ParallClient {
52721
52743
  async archiveAllInbox(orgId) {
52722
52744
  return this.request("POST", ENDPOINTS.INBOX_ARCHIVE_ALL(orgId));
52723
52745
  }
52724
- /** Mark an inbox item as read by its source (source_type + source_id) rather than inbox item ID. */
52725
- async ackInbox(orgId, source) {
52726
- return this.request("POST", ENDPOINTS.INBOX_ACK(orgId), source);
52746
+ /** Mark inbox items as read by their source (source_type + source_id) or by
52747
+ * group_key, rather than by inbox item ID. The group_key form clears a whole
52748
+ * group at once (e.g. `task:{taskId}` — task_assign/task_update/task_comment
52749
+ * share it), used by the task detail view's auto-ack on open. */
52750
+ async ackInbox(orgId, target) {
52751
+ return this.request("POST", ENDPOINTS.INBOX_ACK(orgId), target);
52727
52752
  }
52728
52753
  async deleteInboxItem(orgId, id) {
52729
52754
  return this.request("DELETE", ENDPOINTS.INBOX_ITEM(orgId, id));
@@ -53005,6 +53030,15 @@ var ParallClient = class _ParallClient {
53005
53030
  async initiateChannelProvisioning(orgId, input) {
53006
53031
  return this.request("POST", ENDPOINTS.CHANNEL_PROVISIONING(orgId), input);
53007
53032
  }
53033
+ /**
53034
+ * Mint a pending slack connection + api.slack.com manifest-prefill link
53035
+ * (guided manual path). Activate the returned connection_id with
53036
+ * deliverChannelCredentials once the user brings back the bot token +
53037
+ * signing secret.
53038
+ */
53039
+ async createSlackManifestLink(orgId, input) {
53040
+ return this.request("POST", ENDPOINTS.CHANNEL_SLACK_MANIFEST_LINK(orgId), input);
53041
+ }
53008
53042
  /**
53009
53043
  * Lazy status poll — server-side this may forward one provider poll, so
53010
53044
  * call it at the session's `poll_interval_seconds` cadence, not faster.
@@ -53023,6 +53057,38 @@ var ParallClient = class _ParallClient {
53023
53057
  async sendChannelMessage(orgId, input) {
53024
53058
  return this.request("POST", ENDPOINTS.CHANNEL_SEND(orgId), input);
53025
53059
  }
53060
+ slackReadQuery(base, query, extra) {
53061
+ const params = new URLSearchParams();
53062
+ if (query?.cursor)
53063
+ params.set("cursor", query.cursor);
53064
+ if (query?.limit)
53065
+ params.set("limit", String(query.limit));
53066
+ for (const [k, v] of Object.entries(extra ?? {}))
53067
+ params.set(k, v);
53068
+ const qs = params.toString();
53069
+ return qs ? `${base}?${qs}` : base;
53070
+ }
53071
+ /**
53072
+ * Tier-B read verbs (agent-only): workspace visibility as the bot sees
53073
+ * it. Same live gate as the send verb; authorization beyond it is the
53074
+ * bot's own Slack permissions.
53075
+ */
53076
+ async listSlackChannels(orgId, query) {
53077
+ return this.request("GET", this.slackReadQuery(ENDPOINTS.SLACK_CHANNELS(orgId), query));
53078
+ }
53079
+ async listSlackUsers(orgId, query) {
53080
+ return this.request("GET", this.slackReadQuery(ENDPOINTS.SLACK_USERS(orgId), query));
53081
+ }
53082
+ async slackHistory(orgId, conversationId, query) {
53083
+ return this.request("GET", this.slackReadQuery(ENDPOINTS.SLACK_HISTORY(orgId), query, { conversation: conversationId }));
53084
+ }
53085
+ async slackMembers(orgId, conversationId, query) {
53086
+ return this.request("GET", this.slackReadQuery(ENDPOINTS.SLACK_MEMBERS(orgId), query, { conversation: conversationId }));
53087
+ }
53088
+ /** Set/clear the Agents-pane "typing…" indicator (best-effort cosmetic). */
53089
+ async setSlackStatus(orgId, input) {
53090
+ await this.request("POST", ENDPOINTS.SLACK_STATUS(orgId), input);
53091
+ }
53026
53092
  async listChannelConversations(orgId, connectionId) {
53027
53093
  return this.request("GET", ENDPOINTS.CHANNEL_CONNECTION_CONVERSATIONS(orgId, connectionId));
53028
53094
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parall/parall",
3
- "version": "1.46.0",
3
+ "version": "1.47.0",
4
4
  "description": "OpenClaw channel plugin for Parall IM",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -16,8 +16,8 @@
16
16
  "openclaw.plugin.json"
17
17
  ],
18
18
  "dependencies": {
19
- "@parall/sdk": "1.46.0",
20
- "@parall/agent-core": "1.46.0"
19
+ "@parall/agent-core": "1.47.0",
20
+ "@parall/sdk": "1.47.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/node": "^22.0.0",