@agent-native/dispatch 0.40.31 → 0.40.33
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/CHANGELOG.md +19 -12
- package/dist/actions/connect-external-agent.d.ts.map +1 -1
- package/dist/actions/connect-external-agent.js +2 -9
- package/dist/actions/connect-external-agent.js.map +1 -1
- package/dist/actions/list-dispatch-usage-metrics.js +1 -1
- package/dist/actions/list-dispatch-usage-metrics.js.map +1 -1
- package/dist/actions/provider-api-register.d.ts +8 -8
- package/dist/actions/provider-api-register.js +2 -14
- package/dist/actions/provider-api-register.js.map +1 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +4 -9
- package/dist/db/index.js.map +1 -1
- package/dist/server/lib/admin-config.d.ts.map +1 -1
- package/dist/server/lib/admin-config.js +3 -1
- package/dist/server/lib/admin-config.js.map +1 -1
- package/dist/server/lib/app-creation-store.d.ts.map +1 -1
- package/dist/server/lib/app-creation-store.js +2 -11
- package/dist/server/lib/app-creation-store.js.map +1 -1
- package/dist/server/lib/community-apps.js +1 -1
- package/dist/server/lib/community-apps.js.map +1 -1
- package/dist/server/lib/mcp-access-store.d.ts.map +1 -1
- package/dist/server/lib/mcp-access-store.js +2 -10
- package/dist/server/lib/mcp-access-store.js.map +1 -1
- package/dist/server/lib/thread-debug-store.d.ts.map +1 -1
- package/dist/server/lib/thread-debug-store.js +2 -6
- package/dist/server/lib/thread-debug-store.js.map +1 -1
- package/dist/server/lib/usage-metrics-store.d.ts.map +1 -1
- package/dist/server/lib/usage-metrics-store.js +2 -11
- package/dist/server/lib/usage-metrics-store.js.map +1 -1
- package/dist/server/lib/vault-store.d.ts.map +1 -1
- package/dist/server/lib/vault-store.js +2 -9
- package/dist/server/lib/vault-store.js.map +1 -1
- package/dist/server/lib/workspace-app-action-auth.d.ts.map +1 -1
- package/dist/server/lib/workspace-app-action-auth.js +7 -2
- package/dist/server/lib/workspace-app-action-auth.js.map +1 -1
- package/dist/server/plugins/agent-chat.js +1 -1
- package/dist/server/plugins/agent-chat.js.map +1 -1
- package/package.json +3 -3
- package/src/actions/connect-external-agent.spec.ts +25 -11
- package/src/actions/connect-external-agent.ts +2 -9
- package/src/actions/index.spec.ts +3 -0
- package/src/actions/list-dispatch-usage-metrics.ts +1 -1
- package/src/actions/provider-api-register.spec.ts +15 -9
- package/src/actions/provider-api-register.ts +5 -13
- package/src/db/index.spec.ts +74 -0
- package/src/db/index.ts +4 -9
- package/src/server/lib/admin-config.spec.ts +51 -0
- package/src/server/lib/admin-config.ts +2 -1
- package/src/server/lib/app-creation-store.spec.ts +27 -5
- package/src/server/lib/app-creation-store.ts +2 -10
- package/src/server/lib/community-apps.ts +1 -1
- package/src/server/lib/mcp-access-store.spec.ts +39 -12
- package/src/server/lib/mcp-access-store.ts +3 -10
- package/src/server/lib/thread-debug-store.spec.ts +64 -0
- package/src/server/lib/thread-debug-store.ts +2 -9
- package/src/server/lib/usage-metrics-store.spec.ts +64 -0
- package/src/server/lib/usage-metrics-store.ts +2 -17
- package/src/server/lib/vault-store.spec.ts +26 -9
- package/src/server/lib/vault-store.ts +3 -10
- package/src/server/lib/workspace-app-action-auth.spec.ts +37 -6
- package/src/server/lib/workspace-app-action-auth.ts +12 -2
- package/src/server/plugins/agent-chat.spec.ts +14 -0
- package/src/server/plugins/agent-chat.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @agent-native/dispatch
|
|
2
2
|
|
|
3
|
+
## 0.40.33
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- e9efe95: Keep the curated QR catalog pinned to the current template files.
|
|
8
|
+
- Release all public npm packages with a patch version bump.
|
|
9
|
+
- Updated dependencies
|
|
10
|
+
- @agent-native/toolkit@0.213.1
|
|
11
|
+
|
|
12
|
+
## 0.40.32
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Release all public npm packages with a patch version bump.
|
|
17
|
+
- b58658d: Allow organization owners to opt in to current-member A2A delegation with capped member permissions and durable audit provenance. Improve app discovery and Dispatch routing for connected analytics and customer credit questions.
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
- Updated dependencies [b58658d]
|
|
20
|
+
- @agent-native/toolkit@0.213.0
|
|
21
|
+
|
|
3
22
|
## 0.40.31
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
|
@@ -1291,16 +1310,4 @@
|
|
|
1291
1310
|
|
|
1292
1311
|
- 8cab236: Speed up workspace app opens in Dispatch by reusing the app catalog cache and deferring granted-app discovery until needed.
|
|
1293
1312
|
|
|
1294
|
-
## 0.29.2
|
|
1295
|
-
|
|
1296
|
-
### Patch Changes
|
|
1297
|
-
|
|
1298
|
-
- 66b2a1c: Navigate workspace apps in the top window when Dispatch runs in Builder or an iframe.
|
|
1299
|
-
|
|
1300
|
-
## 0.29.1
|
|
1301
|
-
|
|
1302
|
-
### Patch Changes
|
|
1303
|
-
|
|
1304
|
-
- 96ecc13: Use compact app search and pin labels that stay on one line.
|
|
1305
|
-
|
|
1306
1313
|
For the full list of releases, see the [changelog archive](./changelog/archive/CHANGELOG.md).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-external-agent.d.ts","sourceRoot":"","sources":["../../src/actions/connect-external-agent.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"connect-external-agent.d.ts","sourceRoot":"","sources":["../../src/actions/connect-external-agent.ts"],"names":[],"mappings":";;;;;;YAqFqB,SAAS"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineAction, fail } from "@agent-native/core/action";
|
|
2
|
-
import { getDbExec } from "@agent-native/core/db";
|
|
3
2
|
import { resourcePutIfAbsent, sharedResourceOwner, } from "@agent-native/core/resources/store";
|
|
3
|
+
import { readOrgMemberRole } from "@agent-native/core/server";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { normalizeConnectUrl } from "../lib/connect-apps.js";
|
|
6
6
|
import { currentOrgId, currentOwnerEmail, } from "../server/lib/dispatch-store.js";
|
|
@@ -19,14 +19,7 @@ async function assertCanManageSharedAgent() {
|
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
const actor = currentOwnerEmail().trim().toLowerCase();
|
|
22
|
-
const
|
|
23
|
-
sql: `SELECT role FROM org_members
|
|
24
|
-
WHERE org_id = ? AND LOWER(email) = ?
|
|
25
|
-
AND federation_removal_pending_at IS NULL
|
|
26
|
-
LIMIT 1`,
|
|
27
|
-
args: [orgId, actor],
|
|
28
|
-
});
|
|
29
|
-
const role = result.rows[0]?.role;
|
|
22
|
+
const role = await readOrgMemberRole(orgId, actor);
|
|
30
23
|
if (role !== "owner" && role !== "admin") {
|
|
31
24
|
fail("Only organization owners and admins can connect agents.", {
|
|
32
25
|
statusCode: 403,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-external-agent.js","sourceRoot":"","sources":["../../src/actions/connect-external-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"connect-external-agent.js","sourceRoot":"","sources":["../../src/actions/connect-external-agent.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineAction, fail } from \"@agent-native/core/action\";\nimport {\n resourcePutIfAbsent,\n sharedResourceOwner,\n} from \"@agent-native/core/resources/store\";\nimport { readOrgMemberRole } from \"@agent-native/core/server\";\nimport { z } from \"zod\";\n\nimport { normalizeConnectUrl } from \"../lib/connect-apps.js\";\nimport {\n currentOrgId,\n currentOwnerEmail,\n} from \"../server/lib/dispatch-store.js\";\n\nfunction slugify(value: string): string {\n return (\n value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\") || \"agent\"\n );\n}\n\nasync function assertCanManageSharedAgent() {\n const orgId = currentOrgId();\n if (!orgId) {\n fail(\"An active organization is required to connect an agent.\", {\n statusCode: 403,\n });\n }\n const actor = currentOwnerEmail().trim().toLowerCase();\n const role = await readOrgMemberRole(orgId, actor);\n if (role !== \"owner\" && role !== \"admin\") {\n fail(\"Only organization owners and admins can connect agents.\", {\n statusCode: 403,\n });\n }\n}\n\nexport default defineAction({\n description:\n \"Connect an existing HTTPS/A2A agent to Dispatch. This stores only its public endpoint and metadata; authentication remains in the normal A2A/MCP connection flow.\",\n schema: z.object({\n url: z.string().min(1).describe(\"HTTPS agent endpoint\"),\n name: z.string().max(160).optional().describe(\"Agent name\"),\n description: z.string().max(500).optional().describe(\"Short description\"),\n scope: z\n .enum([\"shared\", \"personal\"])\n .default(\"shared\")\n .describe(\"Share with the workspace or keep the connection personal\"),\n }),\n run: async ({ url, name, description, scope }) => {\n const parsed = normalizeConnectUrl(url);\n if (!parsed)\n fail(\"Use an HTTPS URL without credentials or private addresses.\");\n\n if (scope === \"shared\") await assertCanManageSharedAgent();\n const agentName = name?.trim() || parsed.hostname.replace(/^www\\./, \"\");\n const id = slugify(agentName);\n const path = `remote-agents/${id}.json`;\n const owner =\n scope === \"shared\"\n ? sharedResourceOwner(currentOrgId())\n : currentOwnerEmail();\n\n const manifest = {\n id,\n name: agentName,\n ...(description?.trim() ? { description: description.trim() } : {}),\n url: parsed.toString(),\n };\n const resource = await resourcePutIfAbsent(\n owner,\n path,\n JSON.stringify(manifest, null, 2),\n \"application/json\",\n );\n if (!resource) {\n fail(\n `An external agent already exists at ${path}. Rename it before connecting again.`,\n { statusCode: 409 },\n );\n }\n\n return { status: \"created\" as const, resource, agent: manifest, scope };\n },\n});\n"]}
|
|
@@ -2,7 +2,7 @@ import { defineAction } from "@agent-native/core/action";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { listDispatchUsageMetrics } from "../server/lib/usage-metrics-store.js";
|
|
4
4
|
export default defineAction({
|
|
5
|
-
description: "Get personal
|
|
5
|
+
description: "Get personal or workspace-member agent usage and spend, or aggregate app adoption metrics for Dispatch. Workspace results do not include customer/account/company usage or product data; use the relevant workspace app for those. Results may include active users, tracked app actions, app attribution, prompt previews, and recent activity. billing.unit is unknown when historical usage lacks engine metadata or mixes billing sources; monthlyByUser credits are null in that case. Workspace results also include monthlyByUser credit rows and workspaceAppCreationsByUserMonth rows from the shared token_usage and Dispatch audit tables. App scope is aggregate-only and returns daily/weekly active users plus tracked action counts for the selected app.",
|
|
6
6
|
schema: z.object({
|
|
7
7
|
sinceDays: z.coerce
|
|
8
8
|
.number()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-dispatch-usage-metrics.js","sourceRoot":"","sources":["../../src/actions/list-dispatch-usage-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"list-dispatch-usage-metrics.js","sourceRoot":"","sources":["../../src/actions/list-dispatch-usage-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,0uBAA0uB;IAC5uB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,MAAM;aAChB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,0CAA0C,CAAC;QACvD,KAAK,EAAE,CAAC;aACL,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;aAChC,OAAO,CAAC,WAAW,CAAC;aACpB,QAAQ,CACP,wFAAwF,CACzF;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,yDAAyD,CAAC;QACtE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CACP,+GAA+G,CAChH;KACJ,CAAC;IACF,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;IACvB,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE;QACX,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACvB;IACD,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC;CACpD,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core/action\";\nimport { z } from \"zod\";\n\nimport { listDispatchUsageMetrics } from \"../server/lib/usage-metrics-store.js\";\n\nexport default defineAction({\n description:\n \"Get personal or workspace-member agent usage and spend, or aggregate app adoption metrics for Dispatch. Workspace results do not include customer/account/company usage or product data; use the relevant workspace app for those. Results may include active users, tracked app actions, app attribution, prompt previews, and recent activity. billing.unit is unknown when historical usage lacks engine metadata or mixes billing sources; monthlyByUser credits are null in that case. Workspace results also include monthlyByUser credit rows and workspaceAppCreationsByUserMonth rows from the shared token_usage and Dispatch audit tables. App scope is aggregate-only and returns daily/weekly active users plus tracked action counts for the selected app.\",\n schema: z.object({\n sinceDays: z.coerce\n .number()\n .int()\n .min(1)\n .max(365)\n .default(30)\n .describe(\"Lookback window in days. Defaults to 30.\"),\n scope: z\n .enum([\"me\", \"workspace\", \"app\"])\n .default(\"workspace\")\n .describe(\n \"Whether to inspect your account, the whole workspace, or one app's aggregate adoption.\",\n ),\n userEmail: z\n .string()\n .trim()\n .min(1)\n .optional()\n .describe(\"Optional workspace member email to filter all usage to.\"),\n appId: z\n .string()\n .trim()\n .min(1)\n .optional()\n .describe(\n \"Workspace app id for scope=app. The app owner or an organization owner/admin can view its aggregate adoption.\",\n ),\n }),\n http: { method: \"GET\" },\n readOnly: true,\n parallelSafe: true,\n publicAgent: {\n expose: true,\n readOnly: true,\n requiresAuth: true,\n isConsequential: false,\n },\n run: async (args) => listDispatchUsageMetrics(args),\n});\n"]}
|
|
@@ -47,7 +47,7 @@ declare const _default: import("node_modules/@agent-native/core/dist").ActionDef
|
|
|
47
47
|
notes?: string | undefined;
|
|
48
48
|
scope?: "org" | "user" | undefined;
|
|
49
49
|
}, {
|
|
50
|
-
|
|
50
|
+
message?: undefined;
|
|
51
51
|
providers: {
|
|
52
52
|
id: string;
|
|
53
53
|
label: string;
|
|
@@ -58,13 +58,14 @@ declare const _default: import("node_modules/@agent-native/core/dist").ActionDef
|
|
|
58
58
|
updatedAt: number;
|
|
59
59
|
}[];
|
|
60
60
|
count: number;
|
|
61
|
+
provider?: undefined;
|
|
61
62
|
found?: undefined;
|
|
62
63
|
deleted?: undefined;
|
|
63
64
|
registered?: undefined;
|
|
64
65
|
id?: undefined;
|
|
65
66
|
label?: undefined;
|
|
66
|
-
message?: undefined;
|
|
67
67
|
} | {
|
|
68
|
+
message?: undefined;
|
|
68
69
|
providers?: undefined;
|
|
69
70
|
count?: undefined;
|
|
70
71
|
found: boolean;
|
|
@@ -73,31 +74,30 @@ declare const _default: import("node_modules/@agent-native/core/dist").ActionDef
|
|
|
73
74
|
registered?: undefined;
|
|
74
75
|
id?: undefined;
|
|
75
76
|
label?: undefined;
|
|
76
|
-
message?: undefined;
|
|
77
77
|
} | {
|
|
78
|
-
|
|
78
|
+
message?: undefined;
|
|
79
79
|
providers?: undefined;
|
|
80
80
|
count?: undefined;
|
|
81
|
+
provider?: undefined;
|
|
81
82
|
found: boolean;
|
|
82
83
|
id: string;
|
|
83
84
|
deleted?: undefined;
|
|
84
85
|
registered?: undefined;
|
|
85
86
|
label?: undefined;
|
|
86
|
-
message?: undefined;
|
|
87
87
|
} | {
|
|
88
|
-
|
|
88
|
+
message?: undefined;
|
|
89
89
|
providers?: undefined;
|
|
90
90
|
count?: undefined;
|
|
91
|
+
provider?: undefined;
|
|
91
92
|
found?: undefined;
|
|
92
93
|
deleted: boolean;
|
|
93
94
|
id: string;
|
|
94
95
|
registered?: undefined;
|
|
95
96
|
label?: undefined;
|
|
96
|
-
message?: undefined;
|
|
97
97
|
} | {
|
|
98
|
-
provider?: undefined;
|
|
99
98
|
providers?: undefined;
|
|
100
99
|
count?: undefined;
|
|
100
|
+
provider?: undefined;
|
|
101
101
|
found?: undefined;
|
|
102
102
|
deleted?: undefined;
|
|
103
103
|
registered: boolean;
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
import { getDbExec } from "@agent-native/core/db";
|
|
2
1
|
import { createCustomProviderRegistrationAction } from "@agent-native/core/provider-api/actions/custom-provider-registration";
|
|
3
|
-
import { getCredentialContext } from "@agent-native/core/server";
|
|
2
|
+
import { getCredentialContext, readOrgMemberRole, } from "@agent-native/core/server";
|
|
4
3
|
async function resolveCallerOrgRole(orgId, email) {
|
|
5
4
|
try {
|
|
6
|
-
|
|
7
|
-
const { rows } = await client.execute({
|
|
8
|
-
sql: `SELECT role FROM org_members
|
|
9
|
-
WHERE org_id = ? AND LOWER(email) = ?
|
|
10
|
-
AND federation_removal_pending_at IS NULL
|
|
11
|
-
LIMIT 1`,
|
|
12
|
-
args: [orgId, email.toLowerCase()],
|
|
13
|
-
});
|
|
14
|
-
if (rows.length === 0)
|
|
15
|
-
return null;
|
|
16
|
-
const role = rows[0].role;
|
|
17
|
-
return typeof role === "string" && role ? role : null;
|
|
5
|
+
return await readOrgMemberRole(orgId, email);
|
|
18
6
|
}
|
|
19
7
|
catch {
|
|
20
8
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-api-register.js","sourceRoot":"","sources":["../../src/actions/provider-api-register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"provider-api-register.js","sourceRoot":"","sources":["../../src/actions/provider-api-register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,sEAAsE,CAAC;AAC9H,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC,KAAK,UAAU,oBAAoB,CACjC,KAAa,EACb,KAAa;IAEb,IAAI,CAAC;QACH,OAAO,MAAM,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,eAAe,sCAAsC,CAAC;IACpD,WAAW,EAAE;;;;;;;;2GAQ4F;IACzG,UAAU,EAAE,oBAAoB;IAChC,cAAc,EAAE,oBAAoB;CACrC,CAAC,CAAC","sourcesContent":["import { createCustomProviderRegistrationAction } from \"@agent-native/core/provider-api/actions/custom-provider-registration\";\nimport {\n getCredentialContext,\n readOrgMemberRole,\n} from \"@agent-native/core/server\";\n\nasync function resolveCallerOrgRole(\n orgId: string,\n email: string,\n): Promise<string | null> {\n try {\n return await readOrgMemberRole(orgId, email);\n } catch {\n return null;\n }\n}\n\nexport default createCustomProviderRegistrationAction({\n description: `Register or update a custom API provider so the agent can call it via provider-api-request and look up its docs via provider-api-docs.\n\nIMPORTANT — credentials:\n- This action stores only credential KEY NAMES, never secret values.\n- If the required API key is not yet saved, instruct the user to add it via app Settings → Keys, or use the create-vault-secret action, before calling this action.\n- Supported auth kinds: none, bearer, basic, api-key-header.\n google-service-account and oauth-bearer are NOT supported for custom providers.\n\nAfter registration the provider appears in provider-api-catalog and can be used with provider-api-request.`,\n getContext: getCredentialContext,\n resolveOrgRole: resolveCallerOrgRole,\n});\n"]}
|
package/dist/db/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,KAAK,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,EAAE,OAAO,MAAM,CAAC,CAAC;AAEpE,eAAO,MAAM,KAAK,EAA0B,MAAM,gBAAgB,CAAC;AAuBnE,wBAAgB,EAAE,qBAEjB;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
|
package/dist/db/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { createGetDb
|
|
1
|
+
import { createGetDb } from "@agent-native/core/db";
|
|
2
|
+
import { readOrgMemberRole } from "@agent-native/core/server";
|
|
2
3
|
import { registerShareableResource } from "@agent-native/core/sharing";
|
|
3
4
|
import * as schema from "./schema.js";
|
|
4
5
|
export const getDb = createGetDb(schema);
|
|
@@ -17,14 +18,8 @@ registerShareableResource({
|
|
|
17
18
|
if (!ctx.userEmail || !ctx.orgId || resource?.orgId !== ctx.orgId) {
|
|
18
19
|
return false;
|
|
19
20
|
}
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
WHERE org_id = ? AND LOWER(email) = LOWER(?)
|
|
23
|
-
AND federation_removal_pending_at IS NULL
|
|
24
|
-
AND role IN ('owner', 'admin') LIMIT 1`,
|
|
25
|
-
args: [ctx.orgId, ctx.userEmail],
|
|
26
|
-
});
|
|
27
|
-
return result.rows.length > 0;
|
|
21
|
+
const role = await readOrgMemberRole(ctx.orgId, ctx.userEmail);
|
|
22
|
+
return role === "owner" || role === "admin";
|
|
28
23
|
},
|
|
29
24
|
});
|
|
30
25
|
export function db() {
|
package/dist/db/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAItC,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAA2B,CAAC;AAEnE,yBAAyB,CAAC;IACxB,IAAI,EAAE,eAAe;IACrB,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,WAAW,EAAE,MAAM,CAAC,kBAAkB;IACtC,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5B,OAAO,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;IAChE,KAAK;IACL,WAAW,EAAE,KAAK;IAClB,6BAA6B,EAAE,IAAI;IACnC,mBAAmB,EAAE,IAAI;IACzB,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;QACvC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;YAClE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/D,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC;IAC9C,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,EAAE;IAChB,OAAO,KAAK,EAAE,CAAC;AACjB,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC","sourcesContent":["import { createGetDb } from \"@agent-native/core/db\";\nimport { readOrgMemberRole } from \"@agent-native/core/server\";\nimport { registerShareableResource } from \"@agent-native/core/sharing\";\nimport type { PgDatabase, PgQueryResultHKT } from \"drizzle-orm/pg-core\";\n\nimport * as schema from \"./schema.js\";\n\ntype DispatchDatabase = PgDatabase<PgQueryResultHKT, typeof schema>;\n\nexport const getDb = createGetDb(schema) as () => DispatchDatabase;\n\nregisterShareableResource({\n type: \"workspace-app\",\n resourceTable: schema.workspaceApps,\n sharesTable: schema.workspaceAppShares,\n displayName: \"Workspace app\",\n titleColumn: \"name\",\n getResourcePath: (resource) =>\n typeof resource?.path === \"string\" ? resource.path : undefined,\n getDb,\n allowPublic: false,\n requireOrgMemberForUserShares: true,\n supportsGroupShares: true,\n canManageAccess: async (resource, ctx) => {\n if (!ctx.userEmail || !ctx.orgId || resource?.orgId !== ctx.orgId) {\n return false;\n }\n const role = await readOrgMemberRole(ctx.orgId, ctx.userEmail);\n return role === \"owner\" || role === \"admin\";\n },\n});\n\nexport function db() {\n return getDb();\n}\n\nexport { schema };\nexport * from \"./schema.js\";\nexport * from \"./migrations.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-config.d.ts","sourceRoot":"","sources":["../../../src/server/lib/admin-config.ts"],"names":[],"mappings":"AAEA,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"admin-config.d.ts","sourceRoot":"","sources":["../../../src/server/lib/admin-config.ts"],"names":[],"mappings":"AAEA,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUjE;AAED,wBAAgB,4BAA4B,IAAI,MAAM,GAAG,IAAI,CAE5D"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { getAppConfig } from "@agent-native/core/server";
|
|
1
|
+
import { getAppConfig, getRequestContext } from "@agent-native/core/server";
|
|
2
2
|
export function isDispatchEnvironmentAdmin(email) {
|
|
3
3
|
const normalized = email.trim().toLowerCase();
|
|
4
4
|
if (!normalized)
|
|
5
5
|
return false;
|
|
6
|
+
if (getRequestContext()?.a2aIdentityAssurance === "org-member")
|
|
7
|
+
return false;
|
|
6
8
|
const config = getAppConfig().dispatch;
|
|
7
9
|
return [
|
|
8
10
|
...config.adminEmails,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-config.js","sourceRoot":"","sources":["../../../src/server/lib/admin-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-config.js","sourceRoot":"","sources":["../../../src/server/lib/admin-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE5E,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,iBAAiB,EAAE,EAAE,oBAAoB,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAC7E,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC,QAAQ,CAAC;IACvC,OAAO;QACL,GAAG,MAAM,CAAC,WAAW;QACrB,GAAG,MAAM,CAAC,oBAAoB;QAC9B,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,YAAY,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACnE,CAAC","sourcesContent":["import { getAppConfig, getRequestContext } from \"@agent-native/core/server\";\n\nexport function isDispatchEnvironmentAdmin(email: string): boolean {\n const normalized = email.trim().toLowerCase();\n if (!normalized) return false;\n if (getRequestContext()?.a2aIdentityAssurance === \"org-member\") return false;\n const config = getAppConfig().dispatch;\n return [\n ...config.adminEmails,\n ...config.workspaceOwnerEmails,\n ...(config.defaultOwnerEmail ? [config.defaultOwnerEmail] : []),\n ].some((candidate) => candidate.trim().toLowerCase() === normalized);\n}\n\nexport function getDispatchDefaultOwnerEmail(): string | null {\n return getAppConfig().dispatch.defaultOwnerEmail?.trim() || null;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-creation-store.d.ts","sourceRoot":"","sources":["../../../src/server/lib/app-creation-store.ts"],"names":[],"mappings":"AAuBA,OAAO,
|
|
1
|
+
{"version":3,"file":"app-creation-store.d.ts","sourceRoot":"","sources":["../../../src/server/lib/app-creation-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { describeErrorWithCauses } from "@agent-native/core/agent/engine/error-d
|
|
|
8
8
|
import { getDbExec } from "@agent-native/core/db";
|
|
9
9
|
import { and, eq, inArray } from "@agent-native/core/db/schema";
|
|
10
10
|
import { getOrgA2ASecret, getOrgDomain, isWorkspaceAppAccessAllowed, workspaceApps, } from "@agent-native/core/org";
|
|
11
|
-
import { CredentialStoreUnavailableError, FeatureNotConfiguredError, createBuilderProject, getBuilderBranchProjectId, getConfiguredAppBasePath, getRequestContext, inferWorkspaceAppRootHomePath, isIntegrationCallerRequest, readConfiguredWorkspaceAppHomePath, resolveAppRuntimeUrl, resolveVercelDeploymentProtectionHeaders, normalizeBuilderAgentAttachments, runBuilderAgent, } from "@agent-native/core/server";
|
|
11
|
+
import { CredentialStoreUnavailableError, FeatureNotConfiguredError, createBuilderProject, getBuilderBranchProjectId, getConfiguredAppBasePath, getRequestContext, inferWorkspaceAppRootHomePath, isIntegrationCallerRequest, readConfiguredWorkspaceAppHomePath, readOrgMemberRole, resolveAppRuntimeUrl, resolveVercelDeploymentProtectionHeaders, normalizeBuilderAgentAttachments, runBuilderAgent, } from "@agent-native/core/server";
|
|
12
12
|
import { getOrgSetting } from "@agent-native/core/settings";
|
|
13
13
|
import { getSetting, mutateSetting, putSetting, } from "@agent-native/core/settings";
|
|
14
14
|
import { BUILDER_CONNECT_PROVIDER, BUILDER_CONNECT_PROVIDER_LABEL, assertValidWorkspaceAppId, connectRequiredResult, normalizeWorkspaceAppHomePath, parseAgentProfileMetadata, } from "@agent-native/core/shared";
|
|
@@ -2153,19 +2153,10 @@ function isSyntheticIntegrationOwner(ownerEmail) {
|
|
|
2153
2153
|
}
|
|
2154
2154
|
async function requestOwnerRole() {
|
|
2155
2155
|
const orgId = currentOrgId();
|
|
2156
|
-
const ownerEmail = currentOwnerEmail();
|
|
2157
2156
|
if (!orgId)
|
|
2158
2157
|
return null;
|
|
2159
2158
|
try {
|
|
2160
|
-
|
|
2161
|
-
sql: `SELECT role FROM org_members
|
|
2162
|
-
WHERE org_id = ? AND LOWER(email) = ?
|
|
2163
|
-
AND federation_removal_pending_at IS NULL
|
|
2164
|
-
LIMIT 1`,
|
|
2165
|
-
args: [orgId, ownerEmail.toLowerCase()],
|
|
2166
|
-
});
|
|
2167
|
-
const role = rows[0]?.role;
|
|
2168
|
-
return typeof role === "string" ? role : null;
|
|
2159
|
+
return await readOrgMemberRole(orgId, currentOwnerEmail());
|
|
2169
2160
|
}
|
|
2170
2161
|
catch (error) {
|
|
2171
2162
|
throw new AppCreationOwnerRoleUnavailableError(error);
|