@tickernelz/paperclip-pro-server 2026.1022.1 → 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.
- package/dist/build-info.json +1 -1
- package/dist/routes/local-browser.d.ts.map +1 -1
- package/dist/routes/local-browser.js +46 -0
- package/dist/routes/local-browser.js.map +1 -1
- package/dist/routes/openapi.d.ts.map +1 -1
- package/dist/routes/openapi.js +3 -2
- package/dist/routes/openapi.js.map +1 -1
- package/dist/routes/paperclip-mcp.d.ts.map +1 -1
- package/dist/routes/paperclip-mcp.js +51 -4
- package/dist/routes/paperclip-mcp.js.map +1 -1
- package/dist/services/agent-permissions.d.ts +27 -0
- package/dist/services/agent-permissions.d.ts.map +1 -0
- package/dist/services/agent-permissions.js +49 -0
- package/dist/services/agent-permissions.js.map +1 -0
- package/dist/services/browser-use.d.ts +2 -2
- package/dist/services/built-in-agent-metadata.d.ts +9 -0
- package/dist/services/built-in-agent-metadata.d.ts.map +1 -0
- package/dist/services/built-in-agent-metadata.js +39 -0
- package/dist/services/built-in-agent-metadata.js.map +1 -0
- package/dist/services/chat-github-reviews.d.ts +16 -16
- package/dist/services/connection-intents.d.ts.map +1 -1
- package/dist/services/connection-intents.js +8 -0
- package/dist/services/connection-intents.js.map +1 -1
- package/dist/services/connectors/local-browser/tools.d.ts +3 -2
- package/dist/services/connectors/local-browser/tools.d.ts.map +1 -1
- package/dist/services/connectors/local-browser/tools.js +50 -4
- package/dist/services/connectors/local-browser/tools.js.map +1 -1
- package/dist/services/heartbeat/retries.d.ts +9 -9
- package/dist/services/heartbeat/retries.d.ts.map +1 -1
- package/dist/services/heartbeat.d.ts +3 -3
- package/dist/services/native-runtime/native-session-executor.d.ts +1 -1
- package/dist/services/native-runtime/native-session-executor.d.ts.map +1 -1
- package/dist/services/status-card-update-engine.d.ts +4 -4
- package/dist/services/status-card-update-engine.d.ts.map +1 -1
- package/dist/services/task-watchdogs.d.ts +1 -1
- package/dist/services/tool-access.d.ts.map +1 -1
- package/dist/services/tool-access.js +2 -1
- package/dist/services/tool-access.js.map +1 -1
- package/dist/services/tool-gateway.d.ts +1 -1
- package/dist/services/tool-gateway.d.ts.map +1 -1
- package/dist/services/voice/voice-inbound-service.d.ts +1 -1
- package/dist/services/voice/voice-session-service.d.ts +1 -1
- package/dist/vendor/paperclip-runner/bin/paperclip-runnerd +2 -2
- package/package.json +21 -21
- package/ui-dist/assets/{Agents.production-Bz3iZjS7.js → Agents.production-Dyj26N-k.js} +2 -2
- package/ui-dist/assets/{CompanyActivity.production-BzyNSqYv.js → CompanyActivity.production-D1ZhWtz4.js} +1 -1
- package/ui-dist/assets/{CompanyExport-CPdAlbJ0.js → CompanyExport-Dsk2q_N9.js} +1 -1
- package/ui-dist/assets/{CompanySkills.production-Bexr9y5t.js → CompanySkills.production-C5OiqW2L.js} +1 -1
- package/ui-dist/assets/{OrgChart.production-BQ3Wa_ex.js → OrgChart.production-BSiEitUK.js} +1 -1
- package/ui-dist/assets/{RoutineDetail.production-B1D3jusQ.js → RoutineDetail.production-BK6oJiPk.js} +1 -1
- package/ui-dist/assets/{Routines.production-CC9TcBJV.js → Routines.production-BDhWu_ZP.js} +1 -1
- package/ui-dist/assets/{definition-1XFnWpjf.js → definition-BnWzE5bQ.js} +1 -1
- package/ui-dist/assets/{index-BzmlbVYg.js → index-Vqf4tsRy.js} +5 -5
- package/ui-dist/downloads/local-browser-chromium.zip +0 -0
- package/ui-dist/downloads/local-browser-firefox-unsigned.zip +0 -0
- package/ui-dist/index.html +1 -1
- 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,
|
|
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(
|
|
127
|
-
const tool =
|
|
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":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAW,MAAM,8BAA8B,CAAC;
|
|
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":"
|
|
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,
|