@tickernelz/paperclip-pro-server 2026.1022.0 → 2026.1022.2

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.
Files changed (58) hide show
  1. package/dist/build-info.json +1 -1
  2. package/dist/routes/local-browser.d.ts.map +1 -1
  3. package/dist/routes/local-browser.js +46 -0
  4. package/dist/routes/local-browser.js.map +1 -1
  5. package/dist/routes/openapi.d.ts.map +1 -1
  6. package/dist/routes/openapi.js +3 -2
  7. package/dist/routes/openapi.js.map +1 -1
  8. package/dist/routes/paperclip-mcp.d.ts.map +1 -1
  9. package/dist/routes/paperclip-mcp.js +51 -4
  10. package/dist/routes/paperclip-mcp.js.map +1 -1
  11. package/dist/services/agent-permissions.d.ts +27 -0
  12. package/dist/services/agent-permissions.d.ts.map +1 -0
  13. package/dist/services/agent-permissions.js +49 -0
  14. package/dist/services/agent-permissions.js.map +1 -0
  15. package/dist/services/browser-use.d.ts +2 -2
  16. package/dist/services/built-in-agent-metadata.d.ts +9 -0
  17. package/dist/services/built-in-agent-metadata.d.ts.map +1 -0
  18. package/dist/services/built-in-agent-metadata.js +39 -0
  19. package/dist/services/built-in-agent-metadata.js.map +1 -0
  20. package/dist/services/chat-github-reviews.d.ts +16 -16
  21. package/dist/services/connection-intents.d.ts.map +1 -1
  22. package/dist/services/connection-intents.js +8 -0
  23. package/dist/services/connection-intents.js.map +1 -1
  24. package/dist/services/connectors/local-browser/tools.d.ts +3 -2
  25. package/dist/services/connectors/local-browser/tools.d.ts.map +1 -1
  26. package/dist/services/connectors/local-browser/tools.js +50 -4
  27. package/dist/services/connectors/local-browser/tools.js.map +1 -1
  28. package/dist/services/heartbeat/retries.d.ts +9 -9
  29. package/dist/services/heartbeat/retries.d.ts.map +1 -1
  30. package/dist/services/heartbeat.d.ts +3 -3
  31. package/dist/services/native-runtime/native-session-executor.d.ts +1 -1
  32. package/dist/services/native-runtime/native-session-executor.d.ts.map +1 -1
  33. package/dist/services/status-card-update-engine.d.ts +4 -4
  34. package/dist/services/status-card-update-engine.d.ts.map +1 -1
  35. package/dist/services/task-watchdogs.d.ts +1 -1
  36. package/dist/services/tool-access.d.ts.map +1 -1
  37. package/dist/services/tool-access.js +2 -1
  38. package/dist/services/tool-access.js.map +1 -1
  39. package/dist/services/tool-gateway.d.ts +1 -1
  40. package/dist/services/tool-gateway.d.ts.map +1 -1
  41. package/dist/services/voice/voice-inbound-service.d.ts +1 -1
  42. package/dist/services/voice/voice-session-service.d.ts +1 -1
  43. package/dist/vendor/paperclip-runner/bin/paperclip-runnerd +2 -2
  44. package/package.json +21 -21
  45. package/ui-dist/assets/{Agents.production-yfbZgr3T.js → Agents.production-Dyj26N-k.js} +2 -2
  46. package/ui-dist/assets/{CompanyActivity.production-DPCPhpw_.js → CompanyActivity.production-D1ZhWtz4.js} +1 -1
  47. package/ui-dist/assets/{CompanyExport-B0gY_cYc.js → CompanyExport-Dsk2q_N9.js} +1 -1
  48. package/ui-dist/assets/{CompanySkills.production-Bnf5pHzX.js → CompanySkills.production-C5OiqW2L.js} +1 -1
  49. package/ui-dist/assets/{OrgChart.production-CEYDaeJk.js → OrgChart.production-BSiEitUK.js} +1 -1
  50. package/ui-dist/assets/{RoutineDetail.production-B_47jYHb.js → RoutineDetail.production-BK6oJiPk.js} +1 -1
  51. package/ui-dist/assets/{Routines.production-C4xInWIv.js → Routines.production-BDhWu_ZP.js} +1 -1
  52. package/ui-dist/assets/{definition-Mrwmzirg.js → definition-BnWzE5bQ.js} +1 -1
  53. package/ui-dist/assets/{index-dGFc1UkP.js → index-Vqf4tsRy.js} +163 -163
  54. package/ui-dist/downloads/local-browser-chromium.zip +0 -0
  55. package/ui-dist/downloads/local-browser-firefox-unsigned.zip +0 -0
  56. package/ui-dist/downloads/local-browser-firefox.xpi +0 -0
  57. package/ui-dist/index.html +1 -1
  58. package/ui-dist/sw.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"paperclip-mcp.d.ts","sourceRoot":"","sources":["../../src/routes/paperclip-mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,EAAE,EAAE,MAAM,8BAA8B,CAAC;AA+B/D,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,EAAE,8CAmHxC"}
1
+ {"version":3,"file":"paperclip-mcp.d.ts","sourceRoot":"","sources":["../../src/routes/paperclip-mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,EAAE,EAAE,MAAM,8BAA8B,CAAC;AA2D9E,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,EAAE,8CAkJxC"}
@@ -1,15 +1,34 @@
1
1
  import { Router } from "express";
2
- import { agents } from "@tickernelz/paperclip-pro-db";
2
+ import { agents, heartbeatRuns } from "@tickernelz/paperclip-pro-db";
3
3
  import { and, eq } from "drizzle-orm";
4
4
  import { agentAuthorityCapabilities, isCompanyOwnerAgent } from "@tickernelz/paperclip-pro-shared";
5
5
  import { OpenwaMcpToolError, paperclipToolCatalog, parseToolsets, PaperclipApiClient, } from "@tickernelz/paperclip-pro-mcp-server/catalog";
6
+ import { createConnectorToolDefinitions } from "@tickernelz/paperclip-pro-mcp-server/connector-tools";
6
7
  import { sharedToolNotes } from "@tickernelz/paperclip-pro-mcp-server/generated-tools";
7
8
  import { accessService } from "../services/access.js";
8
9
  import { connectionIntentService } from "../services/connection-intents.js";
9
- import { executeConnectorTool } from "../services/connector-runtime.js";
10
+ import { executeConnectorTool, resolveConnectorAssignments } from "../services/connector-runtime.js";
10
11
  import { openwaToolBindingForRun, openwaToolErrorBody } from "../services/openwa/tools.js";
11
12
  import { forbidden, unauthorized } from "../errors.js";
12
13
  const PROTOCOL_VERSION = "2025-06-18";
14
+ const GATEWAY_TRANSPORT_CONNECTORS = new Set(["browser-use-cloud", "speko"]);
15
+ async function runIssueIdForCredential(db, input) {
16
+ const [run] = await db
17
+ .select({ contextSnapshot: heartbeatRuns.contextSnapshot })
18
+ .from(heartbeatRuns)
19
+ .where(and(eq(heartbeatRuns.id, input.runId), eq(heartbeatRuns.companyId, input.companyId), eq(heartbeatRuns.agentId, input.agentId)))
20
+ .limit(1);
21
+ const context = run?.contextSnapshot;
22
+ if (!context || typeof context !== "object" || Array.isArray(context))
23
+ return null;
24
+ const snapshot = context;
25
+ for (const key of ["issueId", "taskId"]) {
26
+ const value = snapshot[key];
27
+ if (typeof value === "string" && value)
28
+ return value;
29
+ }
30
+ return null;
31
+ }
13
32
  /** The server's own listen address, so a tool call re-enters the REST API over loopback. */
14
33
  function loopbackApiUrl(req) {
15
34
  const port = req.socket.localPort;
@@ -122,9 +141,37 @@ export function paperclipMcpRoutes(db) {
122
141
  }
123
142
  : {}),
124
143
  });
144
+ const runIssueId = signedRunId
145
+ ? await runIssueIdForCredential(db, { companyId, agentId, runId: signedRunId })
146
+ : null;
147
+ const connectorBinding = signedRunId && runIssueId ? { companyId, agentId, runId: signedRunId, issueId: runIssueId } : null;
148
+ const connectorTools = connectorBinding
149
+ ? (await resolveConnectorAssignments(db, connectorBinding))
150
+ .filter((assignment) => !GATEWAY_TRANSPORT_CONNECTORS.has(assignment.key) && assignment.key !== "openwa")
151
+ .flatMap((assignment) => assignment.tools)
152
+ : [];
153
+ const connectorDefinitions = connectorTools.length && connectorBinding
154
+ ? createConnectorToolDefinitions({
155
+ tools: connectorTools,
156
+ call: ({ tool, arguments: args }) => executeConnectorTool(db, connectorBinding, tool, args),
157
+ })
158
+ : [];
159
+ const allDefinitions = [...definitions, ...connectorDefinitions];
160
+ const allListing = connectorDefinitions.length
161
+ ? {
162
+ tools: [
163
+ ...listing.tools,
164
+ ...connectorDefinitions.map((entry) => ({
165
+ name: entry.name,
166
+ description: entry.description,
167
+ inputSchema: (entry.inputSchemaJson ?? {}),
168
+ })),
169
+ ],
170
+ }
171
+ : listing;
125
172
  if (method === "tools/list")
126
- return send(listing);
127
- const tool = definitions.find((entry) => entry.name === params?.name);
173
+ return send(allListing);
174
+ const tool = allDefinitions.find((entry) => entry.name === params?.name);
128
175
  if (!tool) {
129
176
  return send({
130
177
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"paperclip-mcp.js","sourceRoot":"","sources":["../../src/routes/paperclip-mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paperclip-mcp.js","sourceRoot":"","sources":["../../src/routes/paperclip-mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export type NormalizedAgentPermissions = Record<string, unknown> & {
2
+ canCreateAgents: boolean;
3
+ canCreateSkills: boolean;
4
+ };
5
+ /**
6
+ * Mirrors the agent-source low-trust markers consumed by
7
+ * resolveCoreTrustPreset: the low-trust review preset (top-level or inside
8
+ * authorizationPolicy) or a low-trust boundary. Defaults must never grant
9
+ * agent-creation authority to a low-trust agent.
10
+ */
11
+ export declare function permissionsImplyLowTrust(permissions: unknown): boolean;
12
+ /**
13
+ * "create" is the context for permissions arriving on a new-agent write: the
14
+ * hire/create default applies and the resolved value is persisted. "stored"
15
+ * is the context for rows read back from the database: a row without an
16
+ * explicit value stays fail-closed, so the default is never granted
17
+ * retroactively to legacy or malformed records at read or enforcement time.
18
+ */
19
+ export type AgentPermissionsContext = "create" | "stored";
20
+ export declare function defaultAgentPermissions(options?: {
21
+ lowTrust?: boolean;
22
+ context?: AgentPermissionsContext;
23
+ }): NormalizedAgentPermissions;
24
+ export declare function normalizeAgentPermissions(permissions: unknown, options?: {
25
+ context?: AgentPermissionsContext;
26
+ }): NormalizedAgentPermissions;
27
+ //# sourceMappingURL=agent-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-permissions.d.ts","sourceRoot":"","sources":["../../src/services/agent-permissions.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACjE,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAQF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAWtE;AAED;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1D,wBAAgB,uBAAuB,CACrC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,uBAAuB,CAAA;CAAE,GAClE,0BAA0B,CAK5B;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,uBAAuB,CAAA;CAAE,GAC9C,0BAA0B,CAqB5B"}
@@ -0,0 +1,49 @@
1
+ import { LOW_TRUST_REVIEW_PRESET } from "@tickernelz/paperclip-pro-shared";
2
+ function asRecord(value) {
3
+ return typeof value === "object" && value !== null && !Array.isArray(value)
4
+ ? value
5
+ : null;
6
+ }
7
+ /**
8
+ * Mirrors the agent-source low-trust markers consumed by
9
+ * resolveCoreTrustPreset: the low-trust review preset (top-level or inside
10
+ * authorizationPolicy) or a low-trust boundary. Defaults must never grant
11
+ * agent-creation authority to a low-trust agent.
12
+ */
13
+ export function permissionsImplyLowTrust(permissions) {
14
+ const record = asRecord(permissions);
15
+ if (!record)
16
+ return false;
17
+ const authorizationPolicy = asRecord(record.authorizationPolicy);
18
+ return (record.trustPreset === LOW_TRUST_REVIEW_PRESET ||
19
+ authorizationPolicy?.trustPreset === LOW_TRUST_REVIEW_PRESET ||
20
+ asRecord(record.reviewPreset)?.id === LOW_TRUST_REVIEW_PRESET ||
21
+ asRecord(authorizationPolicy?.reviewPreset)?.id === LOW_TRUST_REVIEW_PRESET ||
22
+ asRecord(authorizationPolicy?.trustBoundary) !== null);
23
+ }
24
+ export function defaultAgentPermissions(options) {
25
+ return {
26
+ canCreateAgents: options?.context === "create" && options?.lowTrust !== true,
27
+ canCreateSkills: true,
28
+ };
29
+ }
30
+ export function normalizeAgentPermissions(permissions, options) {
31
+ const defaults = defaultAgentPermissions({
32
+ lowTrust: permissionsImplyLowTrust(permissions),
33
+ context: options?.context ?? "stored",
34
+ });
35
+ const record = asRecord(permissions);
36
+ if (!record) {
37
+ return defaults;
38
+ }
39
+ return {
40
+ ...record,
41
+ canCreateAgents: typeof record.canCreateAgents === "boolean"
42
+ ? record.canCreateAgents
43
+ : defaults.canCreateAgents,
44
+ canCreateSkills: typeof record.canCreateSkills === "boolean"
45
+ ? record.canCreateSkills
46
+ : defaults.canCreateSkills,
47
+ };
48
+ }
49
+ //# sourceMappingURL=agent-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-permissions.js","sourceRoot":"","sources":["../../src/services/agent-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAO3E,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAoB;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACjE,OAAO,CACL,MAAM,CAAC,WAAW,KAAK,uBAAuB;QAC9C,mBAAmB,EAAE,WAAW,KAAK,uBAAuB;QAC5D,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,uBAAuB;QAC7D,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,uBAAuB;QAC3E,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAC,KAAK,IAAI,CACtD,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,uBAAuB,CACrC,OAAmE;IAEnE,OAAO;QACL,eAAe,EAAE,OAAO,EAAE,OAAO,KAAK,QAAQ,IAAI,OAAO,EAAE,QAAQ,KAAK,IAAI;QAC5E,eAAe,EAAE,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,WAAoB,EACpB,OAA+C;IAE/C,MAAM,QAAQ,GAAG,uBAAuB,CAAC;QACvC,QAAQ,EAAE,wBAAwB,CAAC,WAAW,CAAC;QAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,QAAQ;KACtC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,eAAe,EACb,OAAO,MAAM,CAAC,eAAe,KAAK,SAAS;YACzC,CAAC,CAAC,MAAM,CAAC,eAAe;YACxB,CAAC,CAAC,QAAQ,CAAC,eAAe;QAC9B,eAAe,EACb,OAAO,MAAM,CAAC,eAAe,KAAK,SAAS;YACzC,CAAC,CAAC,MAAM,CAAC,eAAe;YACxB,CAAC,CAAC,QAAQ,CAAC,eAAe;KAC/B,CAAC;AACJ,CAAC"}
@@ -25,13 +25,12 @@ export declare function browserUseService(db: Db, request?: BrowserUseRequest, b
25
25
  }[];
26
26
  error: string | null;
27
27
  } | {
28
- instruction?: undefined;
29
28
  profiles: unknown;
30
29
  sessions?: undefined;
31
30
  sessionId?: undefined;
32
31
  status?: undefined;
33
- } | {
34
32
  instruction?: undefined;
33
+ } | {
35
34
  profiles?: undefined;
36
35
  sessions: {
37
36
  sessionId: string;
@@ -48,6 +47,7 @@ export declare function browserUseService(db: Db, request?: BrowserUseRequest, b
48
47
  }[];
49
48
  sessionId?: undefined;
50
49
  status?: undefined;
50
+ instruction?: undefined;
51
51
  } | {
52
52
  profiles?: undefined;
53
53
  sessions?: undefined;
@@ -0,0 +1,9 @@
1
+ export declare const BUILT_IN_AGENT_METADATA_KEY = "paperclipBuiltInAgent";
2
+ export interface BuiltInAgentMarker {
3
+ key: string;
4
+ featureKeys: string[];
5
+ }
6
+ export declare function readBuiltInAgentMarker(metadata: unknown): BuiltInAgentMarker | null;
7
+ export declare function withBuiltInAgentMarker(metadata: Record<string, unknown> | null | undefined, marker: BuiltInAgentMarker): Record<string, unknown>;
8
+ export declare function builtInAgentMarkersEqual(left: BuiltInAgentMarker | null, right: BuiltInAgentMarker | null): boolean;
9
+ //# sourceMappingURL=built-in-agent-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in-agent-metadata.d.ts","sourceRoot":"","sources":["../../src/services/built-in-agent-metadata.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,0BAA0B,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAYD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAQnF;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpD,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,WAIzG"}
@@ -0,0 +1,39 @@
1
+ export const BUILT_IN_AGENT_METADATA_KEY = "paperclipBuiltInAgent";
2
+ function isPlainRecord(value) {
3
+ return typeof value === "object" && value !== null && !Array.isArray(value);
4
+ }
5
+ function normalizeFeatureKeys(value) {
6
+ if (!Array.isArray(value))
7
+ return null;
8
+ const featureKeys = value.filter((entry) => typeof entry === "string" && entry.trim().length > 0);
9
+ return featureKeys.length === value.length ? featureKeys : null;
10
+ }
11
+ export function readBuiltInAgentMarker(metadata) {
12
+ if (!isPlainRecord(metadata))
13
+ return null;
14
+ const marker = metadata[BUILT_IN_AGENT_METADATA_KEY];
15
+ if (!isPlainRecord(marker))
16
+ return null;
17
+ const key = marker.key;
18
+ const featureKeys = normalizeFeatureKeys(marker.featureKeys);
19
+ if (typeof key !== "string" || key.trim().length === 0 || !featureKeys)
20
+ return null;
21
+ return { key, featureKeys };
22
+ }
23
+ export function withBuiltInAgentMarker(metadata, marker) {
24
+ return {
25
+ ...(metadata ?? {}),
26
+ [BUILT_IN_AGENT_METADATA_KEY]: {
27
+ key: marker.key,
28
+ featureKeys: [...marker.featureKeys],
29
+ },
30
+ };
31
+ }
32
+ export function builtInAgentMarkersEqual(left, right) {
33
+ if (!left && !right)
34
+ return true;
35
+ if (!left || !right)
36
+ return false;
37
+ return left.key === right.key && JSON.stringify(left.featureKeys) === JSON.stringify(right.featureKeys);
38
+ }
39
+ //# sourceMappingURL=built-in-agent-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in-agent-metadata.js","sourceRoot":"","sources":["../../src/services/built-in-agent-metadata.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC;AAOnE,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnH,OAAO,WAAW,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAiB;IACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IACrD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IACpF,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAoD,EACpD,MAA0B;IAE1B,OAAO;QACL,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;QACnB,CAAC,2BAA2B,CAAC,EAAE;YAC7B,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;SACrC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAA+B,EAAE,KAAgC;IACxG,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC1G,CAAC"}
@@ -42,9 +42,6 @@ export declare function githubChatReviewService(db: Db, fetchImpl?: typeof fetch
42
42
  status: string;
43
43
  receipt: Record<string, unknown> | null;
44
44
  } | {
45
- hasMore?: undefined;
46
- items?: undefined;
47
- content?: undefined;
48
45
  untrusted: boolean;
49
46
  pull: Pull;
50
47
  reviewPolicy: GitHubReviewPolicy;
@@ -60,17 +57,18 @@ export declare function githubChatReviewService(db: Db, fetchImpl?: typeof fetch
60
57
  totalCommits?: undefined;
61
58
  potentiallyTruncated?: undefined;
62
59
  guidance?: undefined;
60
+ items?: undefined;
61
+ hasMore?: undefined;
63
62
  page?: undefined;
64
63
  path?: undefined;
65
64
  encoding?: undefined;
65
+ content?: undefined;
66
66
  sha?: undefined;
67
67
  size?: undefined;
68
68
  reviewId?: undefined;
69
69
  reviewedCommit?: undefined;
70
70
  state?: undefined;
71
71
  } | {
72
- hasMore?: undefined;
73
- content?: undefined;
74
72
  pull?: undefined;
75
73
  reviewPolicy?: undefined;
76
74
  configurationRevision?: undefined;
@@ -83,16 +81,16 @@ export declare function githubChatReviewService(db: Db, fetchImpl?: typeof fetch
83
81
  status?: undefined;
84
82
  totalCommits?: undefined;
85
83
  potentiallyTruncated?: undefined;
84
+ hasMore?: undefined;
86
85
  page?: undefined;
87
86
  path?: undefined;
88
87
  encoding?: undefined;
88
+ content?: undefined;
89
89
  sha?: undefined;
90
90
  size?: undefined;
91
91
  reviewId?: undefined;
92
92
  state?: undefined;
93
93
  } | {
94
- hasMore?: undefined;
95
- content?: undefined;
96
94
  pull?: undefined;
97
95
  reviewPolicy?: undefined;
98
96
  configurationRevision?: undefined;
@@ -105,15 +103,16 @@ export declare function githubChatReviewService(db: Db, fetchImpl?: typeof fetch
105
103
  items: File[];
106
104
  potentiallyTruncated: boolean;
107
105
  guidance: string;
106
+ hasMore?: undefined;
108
107
  page?: undefined;
109
108
  path?: undefined;
110
109
  encoding?: undefined;
110
+ content?: undefined;
111
111
  sha?: undefined;
112
112
  size?: undefined;
113
113
  reviewId?: undefined;
114
114
  state?: undefined;
115
115
  } | {
116
- content?: undefined;
117
116
  pull?: undefined;
118
117
  reviewPolicy?: undefined;
119
118
  configurationRevision?: undefined;
@@ -130,13 +129,12 @@ export declare function githubChatReviewService(db: Db, fetchImpl?: typeof fetch
130
129
  reviewedCommit: string;
131
130
  path?: undefined;
132
131
  encoding?: undefined;
132
+ content?: undefined;
133
133
  sha?: undefined;
134
134
  size?: undefined;
135
135
  reviewId?: undefined;
136
136
  state?: undefined;
137
137
  } | {
138
- hasMore?: undefined;
139
- items?: undefined;
140
138
  pull?: undefined;
141
139
  reviewPolicy?: undefined;
142
140
  configurationRevision?: undefined;
@@ -146,6 +144,8 @@ export declare function githubChatReviewService(db: Db, fetchImpl?: typeof fetch
146
144
  totalCommits?: undefined;
147
145
  potentiallyTruncated?: undefined;
148
146
  guidance?: undefined;
147
+ items?: undefined;
148
+ hasMore?: undefined;
149
149
  page?: undefined;
150
150
  untrusted: boolean;
151
151
  path: string;
@@ -157,9 +157,6 @@ export declare function githubChatReviewService(db: Db, fetchImpl?: typeof fetch
157
157
  reviewedCommit?: undefined;
158
158
  state?: undefined;
159
159
  } | {
160
- hasMore?: undefined;
161
- items?: undefined;
162
- content?: undefined;
163
160
  pull?: undefined;
164
161
  reviewPolicy?: undefined;
165
162
  configurationRevision?: undefined;
@@ -169,19 +166,19 @@ export declare function githubChatReviewService(db: Db, fetchImpl?: typeof fetch
169
166
  totalCommits?: undefined;
170
167
  potentiallyTruncated?: undefined;
171
168
  guidance?: undefined;
169
+ items?: undefined;
170
+ hasMore?: undefined;
172
171
  page?: undefined;
173
172
  untrusted?: undefined;
174
173
  path?: undefined;
175
174
  encoding?: undefined;
175
+ content?: undefined;
176
176
  sha?: undefined;
177
177
  size?: undefined;
178
178
  reviewId: string;
179
179
  reviewedCommit: string;
180
180
  state: "completed" | "error" | "incomplete" | "manual_required" | "queued" | "running" | "superseded";
181
181
  } | {
182
- hasMore?: undefined;
183
- items?: undefined;
184
- content?: undefined;
185
182
  actionId: string;
186
183
  status: string;
187
184
  receipt: Record<string, unknown> | null;
@@ -193,10 +190,13 @@ export declare function githubChatReviewService(db: Db, fetchImpl?: typeof fetch
193
190
  totalCommits?: undefined;
194
191
  potentiallyTruncated?: undefined;
195
192
  guidance?: undefined;
193
+ items?: undefined;
194
+ hasMore?: undefined;
196
195
  page?: undefined;
197
196
  untrusted?: undefined;
198
197
  path?: undefined;
199
198
  encoding?: undefined;
199
+ content?: undefined;
200
200
  sha?: undefined;
201
201
  size?: undefined;
202
202
  reviewedCommit?: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"connection-intents.d.ts","sourceRoot":"","sources":["../../src/services/connection-intents.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,8BAA8B,CAAC;AAiBvD,OAAO,EAYL,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EACzB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAQzE,KAAK,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,KAAK,GAAG,YAAY,GAAG,QAAQ,GAAG,qBAAqB,CAAC,CAAC;AAqClH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,EAAE;uBA8DN,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;sCAwGV;QAC7C,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,aAzCc,MAAM;;;;WAyCQ,CAAC,CAAC;KAC7D;qBAmI6B,mBAAmB,SAAS,MAAM,YAAW;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAQ,OAAO,CAAC,uBAAuB,CAAC;sBAoR1I,mBAAmB,eACd,MAAM,YACV;QAAE,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;QAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KAC5I,OAAO,CAAC,uBAAuB,CAAC;sCA6fO,MAAM;gCA/VP,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAYJ,MAAM,YAAW;QAAE,0BAA0B,CAAC,EAAE,OAAO,CAAA;KAAE,KAAQ,OAAO,CAAC,4BAA4B,CAAC;8BA0GhI,MAAM,gBACP,MAAM,UACZ,MAAM,YACL;QACP,0BAA0B,CAAC,EAAE,OAAO,CAAC;QACrC,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,iBAAiB,CAAC,EAAE;YAAE,cAAc,EAAE,IAAI,CAAC;YAAC,OAAO,EAAE,mBAAmB,CAAA;SAAE,CAAC;KAC5E;6BAwMc,MAAM,UACb,MAAM,WACL,MAAM,YACN;QAAE,4BAA4B,CAAC,EAAE,OAAO,CAAA;KAAE;iCAsDlC,MAAM,SACd,WAAW,GAAG,aAAa,GAAG,aAAa,UAC1C,MAAM,YACL;QAAE,4BAA4B,CAAC,EAAE,OAAO,CAAA;KAAE;EAYxD"}
1
+ {"version":3,"file":"connection-intents.d.ts","sourceRoot":"","sources":["../../src/services/connection-intents.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,8BAA8B,CAAC;AAiBvD,OAAO,EAYL,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EACzB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAQzE,KAAK,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,KAAK,GAAG,YAAY,GAAG,QAAQ,GAAG,qBAAqB,CAAC,CAAC;AAqClH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,EAAE;uBA8DN,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;sCAwGV;QAC7C,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,aAzCc,MAAM;;;;WAyCQ,CAAC,CAAC;KAC7D;qBA+I6B,mBAAmB,SAAS,MAAM,YAAW;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAQ,OAAO,CAAC,uBAAuB,CAAC;sBAoR1I,mBAAmB,eACd,MAAM,YACV;QAAE,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;QAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KAC5I,OAAO,CAAC,uBAAuB,CAAC;sCA6fO,MAAM;gCA/VP,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAYJ,MAAM,YAAW;QAAE,0BAA0B,CAAC,EAAE,OAAO,CAAA;KAAE,KAAQ,OAAO,CAAC,4BAA4B,CAAC;8BA0GhI,MAAM,gBACP,MAAM,UACZ,MAAM,YACL;QACP,0BAA0B,CAAC,EAAE,OAAO,CAAC;QACrC,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,iBAAiB,CAAC,EAAE;YAAE,cAAc,EAAE,IAAI,CAAC;YAAC,OAAO,EAAE,mBAAmB,CAAA;SAAE,CAAC;KAC5E;6BAwMc,MAAM,UACb,MAAM,WACL,MAAM,YACN;QAAE,4BAA4B,CAAC,EAAE,OAAO,CAAA;KAAE;iCAsDlC,MAAM,SACd,WAAW,GAAG,aAAa,GAAG,aAAa,UAC1C,MAAM,YACL;QAAE,4BAA4B,CAAC,EAAE,OAAO,CAAA;KAAE;EAYxD"}
@@ -2,6 +2,7 @@ import { updateAgentConfigurationInTransaction } from "./agent-configuration-tra
2
2
  import { emailChannelService } from "./email-channels.js";
3
3
  import { emailConnectionService } from "./email-connections.js";
4
4
  import { grantConnectionAgentTools } from "./connection-agent-access.js";
5
+ import { isLocalBrowserConnection } from "./connectors/local-browser/connection.js";
5
6
  import { createHash } from "node:crypto";
6
7
  import { logActivity } from "./activity-log.js";
7
8
  import { aiConnectionService } from "./ai-connections.js";
@@ -213,6 +214,13 @@ export function connectionIntentService(db) {
213
214
  && connection.status === "active" && connection.enabled
214
215
  && ["mcp_remote", "local_stdio"].includes(connection.transport)
215
216
  && !isToolConnectionAttentionHealth(connection.healthStatus) ? connection : null;
217
+ if (input.serviceSlug === "local-browser") {
218
+ return (matching.find((connection) => installedIds.has(connection.id) &&
219
+ isLocalBrowserConnection(connection) &&
220
+ connection.status === "active" &&
221
+ connection.enabled &&
222
+ !isToolConnectionAttentionHealth(connection.healthStatus)) ?? null);
223
+ }
216
224
  if (input.serviceSlug === "github") {
217
225
  const selection = await resolveManagedGitHubIdentitySelection(db, input.companyId, {
218
226
  agentId: input.agentId, responsibleUserId: input.responsibleUserId,