@inkeep/agents-api 0.0.0-dev-20260123202200 → 0.0.0-dev-20260123211824
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/.well-known/workflow/v1/manifest.debug.json +14 -14
- package/dist/.well-known/workflow/v1/step.cjs +946 -26
- package/dist/createApp.d.ts +2 -2
- package/dist/data/db/runDbClient.d.ts +2 -2
- package/dist/domains/evals/routes/datasetTriggers.d.ts +2 -2
- package/dist/domains/evals/routes/index.d.ts +2 -2
- package/dist/domains/evals/workflow/routes.d.ts +2 -2
- package/dist/domains/manage/index.js +0 -2
- package/dist/domains/manage/routes/agent.js +5 -2
- package/dist/domains/manage/routes/agentFull.js +5 -2
- package/dist/domains/manage/routes/agentToolRelations.js +5 -2
- package/dist/domains/manage/routes/apiKeys.js +1 -2
- package/dist/domains/manage/routes/cliAuth.js +2 -2
- package/dist/domains/manage/routes/conversations.d.ts +2 -2
- package/dist/domains/manage/routes/credentials.js +1 -2
- package/dist/domains/manage/routes/dataComponents.js +1 -2
- package/dist/domains/manage/routes/evals/evaluationResults.d.ts +2 -2
- package/dist/domains/manage/routes/externalAgents.js +1 -2
- package/dist/domains/manage/routes/index.d.ts +2 -2
- package/dist/domains/manage/routes/index.js +4 -0
- package/dist/domains/manage/routes/mcp.d.ts +2 -2
- package/dist/domains/manage/routes/playgroundToken.js +0 -1
- package/dist/domains/manage/routes/projectFull.js +28 -6
- package/dist/domains/manage/routes/projectMembers.js +16 -35
- package/dist/domains/manage/routes/projectPermissions.js +17 -10
- package/dist/domains/manage/routes/projects.js +4 -5
- package/dist/domains/manage/routes/signoz.d.ts +2 -2
- package/dist/domains/manage/routes/userOrganizations.js +2 -2
- package/dist/domains/manage/routes/userProjectMemberships.d.ts +9 -0
- package/dist/domains/manage/routes/userProjectMemberships.js +45 -0
- package/dist/domains/run/agents/Agent.js +93 -2
- package/dist/domains/run/agents/relationTools.d.ts +2 -2
- package/dist/factory.d.ts +26 -26
- package/dist/index.d.ts +26 -26
- package/dist/initialization.js +2 -2
- package/dist/middleware/evalsAuth.d.ts +2 -2
- package/dist/middleware/manageAuth.d.ts +2 -2
- package/dist/middleware/projectAccess.d.ts +4 -11
- package/dist/middleware/projectAccess.js +1 -17
- package/dist/middleware/projectConfig.d.ts +3 -3
- package/dist/middleware/tenantAccess.js +4 -4
- package/dist/types/app.d.ts +2 -0
- package/package.json +3 -3
|
@@ -819,10 +819,12 @@ var Agent = class {
|
|
|
819
819
|
continue;
|
|
820
820
|
}
|
|
821
821
|
const zodSchema = jsonSchemaToZod(functionData.inputSchema);
|
|
822
|
+
const toolPolicies = functionToolDef.toolPolicies;
|
|
823
|
+
const needsApproval = !!toolPolicies?.["*"]?.needsApproval || !!toolPolicies?.[functionToolDef.name]?.needsApproval;
|
|
822
824
|
const aiTool = tool({
|
|
823
825
|
description: functionToolDef.description || functionToolDef.name,
|
|
824
826
|
inputSchema: zodSchema,
|
|
825
|
-
execute: async (args, { toolCallId }) => {
|
|
827
|
+
execute: async (args, { toolCallId, providerMetadata }) => {
|
|
826
828
|
let processedArgs;
|
|
827
829
|
try {
|
|
828
830
|
processedArgs = parseEmbeddedJson(args);
|
|
@@ -839,6 +841,95 @@ var Agent = class {
|
|
|
839
841
|
processedArgs = args;
|
|
840
842
|
}
|
|
841
843
|
const finalArgs = processedArgs;
|
|
844
|
+
if (needsApproval) {
|
|
845
|
+
logger.info({
|
|
846
|
+
toolName: functionToolDef.name,
|
|
847
|
+
toolCallId,
|
|
848
|
+
args: finalArgs
|
|
849
|
+
}, "Function tool requires approval - waiting for user response");
|
|
850
|
+
const currentSpan = trace.getActiveSpan();
|
|
851
|
+
if (currentSpan) currentSpan.addEvent("tool.approval.requested", {
|
|
852
|
+
"tool.name": functionToolDef.name,
|
|
853
|
+
"tool.callId": toolCallId,
|
|
854
|
+
"subAgent.id": this.config.id
|
|
855
|
+
});
|
|
856
|
+
tracer.startActiveSpan("tool.approval_requested", { attributes: {
|
|
857
|
+
"tool.name": functionToolDef.name,
|
|
858
|
+
"tool.callId": toolCallId,
|
|
859
|
+
"subAgent.id": this.config.id,
|
|
860
|
+
"subAgent.name": this.config.name
|
|
861
|
+
} }, (requestSpan) => {
|
|
862
|
+
requestSpan.setStatus({ code: SpanStatusCode.OK });
|
|
863
|
+
requestSpan.end();
|
|
864
|
+
});
|
|
865
|
+
const streamHelper = this.getStreamingHelper();
|
|
866
|
+
if (streamHelper) await streamHelper.writeToolApprovalRequest({
|
|
867
|
+
approvalId: `aitxt-${toolCallId}`,
|
|
868
|
+
toolCallId
|
|
869
|
+
});
|
|
870
|
+
else if (this.isDelegatedAgent) {
|
|
871
|
+
const streamRequestId$1 = this.getStreamRequestId();
|
|
872
|
+
if (streamRequestId$1) await toolApprovalUiBus.publish(streamRequestId$1, {
|
|
873
|
+
type: "approval-needed",
|
|
874
|
+
toolCallId,
|
|
875
|
+
toolName: functionToolDef.name,
|
|
876
|
+
input: finalArgs,
|
|
877
|
+
providerMetadata,
|
|
878
|
+
approvalId: `aitxt-${toolCallId}`
|
|
879
|
+
});
|
|
880
|
+
}
|
|
881
|
+
const approvalResult = await pendingToolApprovalManager.waitForApproval(toolCallId, functionToolDef.name, args, this.conversationId || "unknown", this.config.id);
|
|
882
|
+
if (!approvalResult.approved) {
|
|
883
|
+
if (!streamHelper && this.isDelegatedAgent) {
|
|
884
|
+
const streamRequestId$1 = this.getStreamRequestId();
|
|
885
|
+
if (streamRequestId$1) await toolApprovalUiBus.publish(streamRequestId$1, {
|
|
886
|
+
type: "approval-resolved",
|
|
887
|
+
toolCallId,
|
|
888
|
+
approved: false
|
|
889
|
+
});
|
|
890
|
+
}
|
|
891
|
+
return tracer.startActiveSpan("tool.approval_denied", { attributes: {
|
|
892
|
+
"tool.name": functionToolDef.name,
|
|
893
|
+
"tool.callId": toolCallId,
|
|
894
|
+
"subAgent.id": this.config.id,
|
|
895
|
+
"subAgent.name": this.config.name
|
|
896
|
+
} }, (denialSpan) => {
|
|
897
|
+
logger.info({
|
|
898
|
+
toolName: functionToolDef.name,
|
|
899
|
+
toolCallId,
|
|
900
|
+
reason: approvalResult.reason
|
|
901
|
+
}, "Function tool execution denied by user");
|
|
902
|
+
denialSpan.setStatus({ code: SpanStatusCode.OK });
|
|
903
|
+
denialSpan.end();
|
|
904
|
+
return {
|
|
905
|
+
__inkeepToolDenied: true,
|
|
906
|
+
toolCallId,
|
|
907
|
+
reason: approvalResult.reason
|
|
908
|
+
};
|
|
909
|
+
});
|
|
910
|
+
}
|
|
911
|
+
tracer.startActiveSpan("tool.approval_approved", { attributes: {
|
|
912
|
+
"tool.name": functionToolDef.name,
|
|
913
|
+
"tool.callId": toolCallId,
|
|
914
|
+
"subAgent.id": this.config.id,
|
|
915
|
+
"subAgent.name": this.config.name
|
|
916
|
+
} }, (approvedSpan) => {
|
|
917
|
+
logger.info({
|
|
918
|
+
toolName: functionToolDef.name,
|
|
919
|
+
toolCallId
|
|
920
|
+
}, "Function tool approved, continuing with execution");
|
|
921
|
+
approvedSpan.setStatus({ code: SpanStatusCode.OK });
|
|
922
|
+
approvedSpan.end();
|
|
923
|
+
});
|
|
924
|
+
if (!streamHelper && this.isDelegatedAgent) {
|
|
925
|
+
const streamRequestId$1 = this.getStreamRequestId();
|
|
926
|
+
if (streamRequestId$1) await toolApprovalUiBus.publish(streamRequestId$1, {
|
|
927
|
+
type: "approval-resolved",
|
|
928
|
+
toolCallId,
|
|
929
|
+
approved: true
|
|
930
|
+
});
|
|
931
|
+
}
|
|
932
|
+
}
|
|
842
933
|
logger.debug({
|
|
843
934
|
toolName: functionToolDef.name,
|
|
844
935
|
toolCallId,
|
|
@@ -876,7 +967,7 @@ var Agent = class {
|
|
|
876
967
|
}
|
|
877
968
|
}
|
|
878
969
|
});
|
|
879
|
-
functionTools[functionToolDef.name] = this.wrapToolWithStreaming(functionToolDef.name, aiTool, streamRequestId || "", "tool");
|
|
970
|
+
functionTools[functionToolDef.name] = this.wrapToolWithStreaming(functionToolDef.name, aiTool, streamRequestId || "", "tool", { needsApproval });
|
|
880
971
|
}
|
|
881
972
|
} catch (error) {
|
|
882
973
|
logger.error({ error }, "Failed to load function tools from database");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AgentConfig, DelegateRelation } from "./Agent.js";
|
|
2
2
|
import { InternalRelation } from "../utils/project.js";
|
|
3
|
-
import * as
|
|
3
|
+
import * as _inkeep_agents_core1 from "@inkeep/agents-core";
|
|
4
4
|
import { CredentialStoreRegistry, FullExecutionContext } from "@inkeep/agents-core";
|
|
5
5
|
import * as ai0 from "ai";
|
|
6
6
|
|
|
@@ -44,7 +44,7 @@ declare function createDelegateToAgentTool({
|
|
|
44
44
|
message: string;
|
|
45
45
|
}, {
|
|
46
46
|
toolCallId: any;
|
|
47
|
-
result:
|
|
47
|
+
result: _inkeep_agents_core1.Message | _inkeep_agents_core1.Task;
|
|
48
48
|
}>;
|
|
49
49
|
/**
|
|
50
50
|
* Parameters for building a transfer relation config
|
package/dist/factory.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import * as hono0 from "hono";
|
|
|
7
7
|
import { CredentialStore, ServerConfig } from "@inkeep/agents-core";
|
|
8
8
|
import * as zod0 from "zod";
|
|
9
9
|
import { SSOProviderConfig, UserAuthConfig } from "@inkeep/agents-core/auth";
|
|
10
|
-
import * as
|
|
10
|
+
import * as hono_types0 from "hono/types";
|
|
11
11
|
import * as better_auth0 from "better-auth";
|
|
12
12
|
import * as better_auth_plugins0 from "better-auth/plugins";
|
|
13
13
|
import * as _better_auth_sso0 from "@better-auth/sso";
|
|
@@ -795,25 +795,25 @@ declare function createAgentsAuth(userAuthConfig?: UserAuthConfig): better_auth0
|
|
|
795
795
|
ac: better_auth_plugins0.AccessControl;
|
|
796
796
|
roles: {
|
|
797
797
|
member: {
|
|
798
|
-
authorize<K_1 extends "
|
|
799
|
-
actions: better_auth_plugins0.Subset<"
|
|
798
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key] | {
|
|
799
|
+
actions: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key];
|
|
800
800
|
connector: "OR" | "AND";
|
|
801
801
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
|
|
802
|
-
statements: better_auth_plugins0.Subset<"
|
|
802
|
+
statements: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>;
|
|
803
803
|
};
|
|
804
804
|
admin: {
|
|
805
|
-
authorize<K_1 extends "
|
|
806
|
-
actions: better_auth_plugins0.Subset<"
|
|
805
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key] | {
|
|
806
|
+
actions: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key];
|
|
807
807
|
connector: "OR" | "AND";
|
|
808
808
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
|
|
809
|
-
statements: better_auth_plugins0.Subset<"
|
|
809
|
+
statements: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>;
|
|
810
810
|
};
|
|
811
811
|
owner: {
|
|
812
|
-
authorize<K_1 extends "
|
|
813
|
-
actions: better_auth_plugins0.Subset<"
|
|
812
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key] | {
|
|
813
|
+
actions: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key];
|
|
814
814
|
connector: "OR" | "AND";
|
|
815
815
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
|
|
816
|
-
statements: better_auth_plugins0.Subset<"
|
|
816
|
+
statements: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>;
|
|
817
817
|
};
|
|
818
818
|
};
|
|
819
819
|
membershipLimit: number;
|
|
@@ -840,13 +840,13 @@ declare function createAgentsAuth(userAuthConfig?: UserAuthConfig): better_auth0
|
|
|
840
840
|
user: better_auth0.User & Record<string, any>;
|
|
841
841
|
organization: better_auth_plugins0.Organization & Record<string, any>;
|
|
842
842
|
}) => Promise<void>;
|
|
843
|
-
|
|
843
|
+
beforeUpdateMemberRole: ({
|
|
844
844
|
member,
|
|
845
845
|
organization: org,
|
|
846
|
-
|
|
846
|
+
newRole
|
|
847
847
|
}: {
|
|
848
848
|
member: better_auth_plugins0.Member & Record<string, any>;
|
|
849
|
-
|
|
849
|
+
newRole: string;
|
|
850
850
|
user: better_auth0.User & Record<string, any>;
|
|
851
851
|
organization: better_auth_plugins0.Organization & Record<string, any>;
|
|
852
852
|
}) => Promise<void>;
|
|
@@ -1104,25 +1104,25 @@ declare function createAgentsAuth(userAuthConfig?: UserAuthConfig): better_auth0
|
|
|
1104
1104
|
ac: better_auth_plugins0.AccessControl;
|
|
1105
1105
|
roles: {
|
|
1106
1106
|
member: {
|
|
1107
|
-
authorize<K_1 extends "
|
|
1108
|
-
actions: better_auth_plugins0.Subset<"
|
|
1107
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key] | {
|
|
1108
|
+
actions: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key];
|
|
1109
1109
|
connector: "OR" | "AND";
|
|
1110
1110
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
|
|
1111
|
-
statements: better_auth_plugins0.Subset<"
|
|
1111
|
+
statements: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>;
|
|
1112
1112
|
};
|
|
1113
1113
|
admin: {
|
|
1114
|
-
authorize<K_1 extends "
|
|
1115
|
-
actions: better_auth_plugins0.Subset<"
|
|
1114
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key] | {
|
|
1115
|
+
actions: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key];
|
|
1116
1116
|
connector: "OR" | "AND";
|
|
1117
1117
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
|
|
1118
|
-
statements: better_auth_plugins0.Subset<"
|
|
1118
|
+
statements: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>;
|
|
1119
1119
|
};
|
|
1120
1120
|
owner: {
|
|
1121
|
-
authorize<K_1 extends "
|
|
1122
|
-
actions: better_auth_plugins0.Subset<"
|
|
1121
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key] | {
|
|
1122
|
+
actions: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>[key];
|
|
1123
1123
|
connector: "OR" | "AND";
|
|
1124
1124
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins0.AuthorizeResponse;
|
|
1125
|
-
statements: better_auth_plugins0.Subset<"
|
|
1125
|
+
statements: better_auth_plugins0.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins0.Statements>;
|
|
1126
1126
|
};
|
|
1127
1127
|
};
|
|
1128
1128
|
membershipLimit: number;
|
|
@@ -1149,13 +1149,13 @@ declare function createAgentsAuth(userAuthConfig?: UserAuthConfig): better_auth0
|
|
|
1149
1149
|
user: better_auth0.User & Record<string, any>;
|
|
1150
1150
|
organization: better_auth_plugins0.Organization & Record<string, any>;
|
|
1151
1151
|
}) => Promise<void>;
|
|
1152
|
-
|
|
1152
|
+
beforeUpdateMemberRole: ({
|
|
1153
1153
|
member,
|
|
1154
1154
|
organization: org,
|
|
1155
|
-
|
|
1155
|
+
newRole
|
|
1156
1156
|
}: {
|
|
1157
1157
|
member: better_auth_plugins0.Member & Record<string, any>;
|
|
1158
|
-
|
|
1158
|
+
newRole: string;
|
|
1159
1159
|
user: better_auth0.User & Record<string, any>;
|
|
1160
1160
|
organization: better_auth_plugins0.Organization & Record<string, any>;
|
|
1161
1161
|
}) => Promise<void>;
|
|
@@ -1536,6 +1536,6 @@ declare function createAgentsApp(config?: {
|
|
|
1536
1536
|
auth?: UserAuthConfig;
|
|
1537
1537
|
sandboxConfig?: SandboxConfig;
|
|
1538
1538
|
skipInitialization?: boolean;
|
|
1539
|
-
}): hono0.Hono<
|
|
1539
|
+
}): hono0.Hono<hono_types0.BlankEnv, hono_types0.BlankSchema, "/">;
|
|
1540
1540
|
//#endregion
|
|
1541
1541
|
export { type SSOProviderConfig, type UserAuthConfig, createAgentsApp, createAgentsAuth, createAgentsHono, createAuth0Provider, createOIDCProvider, initializeDefaultUser };
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { createAuth0Provider, createOIDCProvider } from "./ssoHelpers.js";
|
|
|
8
8
|
import { SSOProviderConfig, UserAuthConfig, createAgentsApp } from "./factory.js";
|
|
9
9
|
import { Hono } from "hono";
|
|
10
10
|
import * as zod205 from "zod";
|
|
11
|
-
import * as
|
|
11
|
+
import * as hono_types1 from "hono/types";
|
|
12
12
|
import * as better_auth78 from "better-auth";
|
|
13
13
|
import * as better_auth_plugins69 from "better-auth/plugins";
|
|
14
14
|
import * as _better_auth_sso10 from "@better-auth/sso";
|
|
@@ -796,25 +796,25 @@ declare const auth: better_auth78.Auth<{
|
|
|
796
796
|
ac: better_auth_plugins69.AccessControl;
|
|
797
797
|
roles: {
|
|
798
798
|
member: {
|
|
799
|
-
authorize<K_1 extends "
|
|
800
|
-
actions: better_auth_plugins69.Subset<"
|
|
799
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key] | {
|
|
800
|
+
actions: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key];
|
|
801
801
|
connector: "OR" | "AND";
|
|
802
802
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins69.AuthorizeResponse;
|
|
803
|
-
statements: better_auth_plugins69.Subset<"
|
|
803
|
+
statements: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>;
|
|
804
804
|
};
|
|
805
805
|
admin: {
|
|
806
|
-
authorize<K_1 extends "
|
|
807
|
-
actions: better_auth_plugins69.Subset<"
|
|
806
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key] | {
|
|
807
|
+
actions: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key];
|
|
808
808
|
connector: "OR" | "AND";
|
|
809
809
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins69.AuthorizeResponse;
|
|
810
|
-
statements: better_auth_plugins69.Subset<"
|
|
810
|
+
statements: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>;
|
|
811
811
|
};
|
|
812
812
|
owner: {
|
|
813
|
-
authorize<K_1 extends "
|
|
814
|
-
actions: better_auth_plugins69.Subset<"
|
|
813
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key] | {
|
|
814
|
+
actions: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key];
|
|
815
815
|
connector: "OR" | "AND";
|
|
816
816
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins69.AuthorizeResponse;
|
|
817
|
-
statements: better_auth_plugins69.Subset<"
|
|
817
|
+
statements: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>;
|
|
818
818
|
};
|
|
819
819
|
};
|
|
820
820
|
membershipLimit: number;
|
|
@@ -841,13 +841,13 @@ declare const auth: better_auth78.Auth<{
|
|
|
841
841
|
user: better_auth78.User & Record<string, any>;
|
|
842
842
|
organization: better_auth_plugins69.Organization & Record<string, any>;
|
|
843
843
|
}) => Promise<void>;
|
|
844
|
-
|
|
844
|
+
beforeUpdateMemberRole: ({
|
|
845
845
|
member,
|
|
846
846
|
organization: org,
|
|
847
|
-
|
|
847
|
+
newRole
|
|
848
848
|
}: {
|
|
849
849
|
member: better_auth_plugins69.Member & Record<string, any>;
|
|
850
|
-
|
|
850
|
+
newRole: string;
|
|
851
851
|
user: better_auth78.User & Record<string, any>;
|
|
852
852
|
organization: better_auth_plugins69.Organization & Record<string, any>;
|
|
853
853
|
}) => Promise<void>;
|
|
@@ -1105,25 +1105,25 @@ declare const auth: better_auth78.Auth<{
|
|
|
1105
1105
|
ac: better_auth_plugins69.AccessControl;
|
|
1106
1106
|
roles: {
|
|
1107
1107
|
member: {
|
|
1108
|
-
authorize<K_1 extends "
|
|
1109
|
-
actions: better_auth_plugins69.Subset<"
|
|
1108
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key] | {
|
|
1109
|
+
actions: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key];
|
|
1110
1110
|
connector: "OR" | "AND";
|
|
1111
1111
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins69.AuthorizeResponse;
|
|
1112
|
-
statements: better_auth_plugins69.Subset<"
|
|
1112
|
+
statements: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>;
|
|
1113
1113
|
};
|
|
1114
1114
|
admin: {
|
|
1115
|
-
authorize<K_1 extends "
|
|
1116
|
-
actions: better_auth_plugins69.Subset<"
|
|
1115
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key] | {
|
|
1116
|
+
actions: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key];
|
|
1117
1117
|
connector: "OR" | "AND";
|
|
1118
1118
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins69.AuthorizeResponse;
|
|
1119
|
-
statements: better_auth_plugins69.Subset<"
|
|
1119
|
+
statements: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>;
|
|
1120
1120
|
};
|
|
1121
1121
|
owner: {
|
|
1122
|
-
authorize<K_1 extends "
|
|
1123
|
-
actions: better_auth_plugins69.Subset<"
|
|
1122
|
+
authorize<K_1 extends "organization" | "member" | "invitation" | "project" | "team" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key] | {
|
|
1123
|
+
actions: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>[key];
|
|
1124
1124
|
connector: "OR" | "AND";
|
|
1125
1125
|
} | undefined } : never, connector?: "OR" | "AND"): better_auth_plugins69.AuthorizeResponse;
|
|
1126
|
-
statements: better_auth_plugins69.Subset<"
|
|
1126
|
+
statements: better_auth_plugins69.Subset<"organization" | "member" | "invitation" | "project" | "team" | "ac", better_auth_plugins69.Statements>;
|
|
1127
1127
|
};
|
|
1128
1128
|
};
|
|
1129
1129
|
membershipLimit: number;
|
|
@@ -1150,13 +1150,13 @@ declare const auth: better_auth78.Auth<{
|
|
|
1150
1150
|
user: better_auth78.User & Record<string, any>;
|
|
1151
1151
|
organization: better_auth_plugins69.Organization & Record<string, any>;
|
|
1152
1152
|
}) => Promise<void>;
|
|
1153
|
-
|
|
1153
|
+
beforeUpdateMemberRole: ({
|
|
1154
1154
|
member,
|
|
1155
1155
|
organization: org,
|
|
1156
|
-
|
|
1156
|
+
newRole
|
|
1157
1157
|
}: {
|
|
1158
1158
|
member: better_auth_plugins69.Member & Record<string, any>;
|
|
1159
|
-
|
|
1159
|
+
newRole: string;
|
|
1160
1160
|
user: better_auth78.User & Record<string, any>;
|
|
1161
1161
|
organization: better_auth_plugins69.Organization & Record<string, any>;
|
|
1162
1162
|
}) => Promise<void>;
|
|
@@ -1531,6 +1531,6 @@ declare const auth: better_auth78.Auth<{
|
|
|
1531
1531
|
}>;
|
|
1532
1532
|
}];
|
|
1533
1533
|
}> | null;
|
|
1534
|
-
declare const app: Hono<
|
|
1534
|
+
declare const app: Hono<hono_types1.BlankEnv, hono_types1.BlankSchema, "/">;
|
|
1535
1535
|
//#endregion
|
|
1536
1536
|
export { type AppConfig, type AppVariables, Hono, type NativeSandboxConfig, type SSOProviderConfig, type SandboxConfig, type UserAuthConfig, type VercelSandboxConfig, auth, createAgentsApp, createAgentsHono, createAuth0Provider, createOIDCProvider, app as default, initializeDefaultUser };
|
package/dist/initialization.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getLogger as getLogger$1 } from "./logger.js";
|
|
2
2
|
import { env } from "./env.js";
|
|
3
3
|
import runDbClient_default from "./data/db/runDbClient.js";
|
|
4
|
-
import { addUserToOrganization, getUserByEmail, upsertOrganization } from "@inkeep/agents-core";
|
|
4
|
+
import { OrgRoles, addUserToOrganization, getUserByEmail, upsertOrganization } from "@inkeep/agents-core";
|
|
5
5
|
|
|
6
6
|
//#region src/initialization.ts
|
|
7
7
|
const logger = getLogger$1("initialization");
|
|
@@ -45,7 +45,7 @@ async function initializeDefaultUser(authInstance) {
|
|
|
45
45
|
await addUserToOrganization(runDbClient_default)({
|
|
46
46
|
userId: user.id,
|
|
47
47
|
organizationId: orgId,
|
|
48
|
-
role:
|
|
48
|
+
role: OrgRoles.ADMIN
|
|
49
49
|
});
|
|
50
50
|
logger.info({
|
|
51
51
|
organizationId: orgId,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as hono4 from "hono";
|
|
2
2
|
import { BaseExecutionContext } from "@inkeep/agents-core";
|
|
3
3
|
|
|
4
4
|
//#region src/middleware/evalsAuth.d.ts
|
|
@@ -7,7 +7,7 @@ import { BaseExecutionContext } from "@inkeep/agents-core";
|
|
|
7
7
|
* Middleware to authenticate API requests using Bearer token authentication
|
|
8
8
|
* First checks if token matches INKEEP_AGENTS_EVAL_API_BYPASS_SECRET,
|
|
9
9
|
*/
|
|
10
|
-
declare const evalApiKeyAuth: () =>
|
|
10
|
+
declare const evalApiKeyAuth: () => hono4.MiddlewareHandler<{
|
|
11
11
|
Variables: {
|
|
12
12
|
executionContext: BaseExecutionContext;
|
|
13
13
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as hono0 from "hono";
|
|
2
2
|
import { BaseExecutionContext } from "@inkeep/agents-core";
|
|
3
3
|
import { createAuth } from "@inkeep/agents-core/auth";
|
|
4
4
|
|
|
@@ -12,7 +12,7 @@ import { createAuth } from "@inkeep/agents-core/auth";
|
|
|
12
12
|
* 3. Database API key
|
|
13
13
|
* 4. Internal service token
|
|
14
14
|
*/
|
|
15
|
-
declare const manageApiKeyAuth: () =>
|
|
15
|
+
declare const manageApiKeyAuth: () => hono0.MiddlewareHandler<{
|
|
16
16
|
Variables: {
|
|
17
17
|
executionContext: BaseExecutionContext;
|
|
18
18
|
userId?: string;
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import { ManageAppVariables } from "../types/app.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as hono1 from "hono";
|
|
3
|
+
import { ProjectPermissionLevel } from "@inkeep/agents-core";
|
|
3
4
|
|
|
4
5
|
//#region src/middleware/projectAccess.d.ts
|
|
5
6
|
|
|
6
|
-
/**
|
|
7
|
-
* Permission levels for project access
|
|
8
|
-
*
|
|
9
|
-
* - view: Can see project and resources (read-only)
|
|
10
|
-
* - use: Can invoke agents, create API keys, view traces
|
|
11
|
-
* - edit: Can modify configurations and manage members
|
|
12
|
-
*/
|
|
13
|
-
type ProjectPermission = 'view' | 'use' | 'edit';
|
|
14
7
|
/**
|
|
15
8
|
* Middleware to check project-level access.
|
|
16
9
|
*
|
|
@@ -26,6 +19,6 @@ declare const requireProjectPermission: <Env$1 extends {
|
|
|
26
19
|
Variables: ManageAppVariables;
|
|
27
20
|
} = {
|
|
28
21
|
Variables: ManageAppVariables;
|
|
29
|
-
}>(permission?:
|
|
22
|
+
}>(permission?: ProjectPermissionLevel) => hono1.MiddlewareHandler<Env$1, string, {}, Response>;
|
|
30
23
|
//#endregion
|
|
31
|
-
export {
|
|
24
|
+
export { requireProjectPermission };
|
|
@@ -44,7 +44,6 @@ const requireProjectPermission = (permission = "view") => createMiddleware(async
|
|
|
44
44
|
switch (permission) {
|
|
45
45
|
case "view":
|
|
46
46
|
hasAccess = await canViewProject({
|
|
47
|
-
tenantId,
|
|
48
47
|
userId,
|
|
49
48
|
projectId,
|
|
50
49
|
orgRole: tenantRole
|
|
@@ -52,7 +51,6 @@ const requireProjectPermission = (permission = "view") => createMiddleware(async
|
|
|
52
51
|
break;
|
|
53
52
|
case "use":
|
|
54
53
|
hasAccess = await canUseProject({
|
|
55
|
-
tenantId,
|
|
56
54
|
userId,
|
|
57
55
|
projectId,
|
|
58
56
|
orgRole: tenantRole
|
|
@@ -60,7 +58,6 @@ const requireProjectPermission = (permission = "view") => createMiddleware(async
|
|
|
60
58
|
break;
|
|
61
59
|
case "edit":
|
|
62
60
|
hasAccess = await canEditProject({
|
|
63
|
-
tenantId,
|
|
64
61
|
userId,
|
|
65
62
|
projectId,
|
|
66
63
|
orgRole: tenantRole
|
|
@@ -68,20 +65,7 @@ const requireProjectPermission = (permission = "view") => createMiddleware(async
|
|
|
68
65
|
break;
|
|
69
66
|
}
|
|
70
67
|
if (!hasAccess) {
|
|
71
|
-
if (isAuthzEnabled(
|
|
72
|
-
if (await canViewProject({
|
|
73
|
-
tenantId,
|
|
74
|
-
userId,
|
|
75
|
-
projectId,
|
|
76
|
-
orgRole: tenantRole
|
|
77
|
-
})) throw createApiError({
|
|
78
|
-
code: "forbidden",
|
|
79
|
-
message: `Permission denied. Required: project:${permission}`,
|
|
80
|
-
instance: c.req.path,
|
|
81
|
-
extensions: { requiredPermissions: [`project:${permission}`] }
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
if (isAuthzEnabled(tenantId)) throw createApiError({
|
|
68
|
+
if (isAuthzEnabled()) throw createApiError({
|
|
85
69
|
code: "not_found",
|
|
86
70
|
message: "Project not found",
|
|
87
71
|
instance: c.req.path
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as hono2 from "hono";
|
|
2
2
|
import { BaseExecutionContext, ResolvedRef } from "@inkeep/agents-core";
|
|
3
3
|
|
|
4
4
|
//#region src/middleware/projectConfig.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Middleware that fetches the full project definition from the Management API
|
|
7
7
|
*/
|
|
8
|
-
declare const projectConfigMiddleware:
|
|
8
|
+
declare const projectConfigMiddleware: hono2.MiddlewareHandler<{
|
|
9
9
|
Variables: {
|
|
10
10
|
executionContext: BaseExecutionContext;
|
|
11
11
|
resolvedRef: ResolvedRef;
|
|
@@ -15,7 +15,7 @@ declare const projectConfigMiddleware: hono3.MiddlewareHandler<{
|
|
|
15
15
|
* Creates a middleware that applies project config fetching except for specified route patterns
|
|
16
16
|
* @param skipRouteCheck - Function that returns true if the route should skip the middleware
|
|
17
17
|
*/
|
|
18
|
-
declare const projectConfigMiddlewareExcept: (skipRouteCheck: (path: string) => boolean) =>
|
|
18
|
+
declare const projectConfigMiddlewareExcept: (skipRouteCheck: (path: string) => boolean) => hono2.MiddlewareHandler<{
|
|
19
19
|
Variables: {
|
|
20
20
|
executionContext: BaseExecutionContext;
|
|
21
21
|
resolvedRef: ResolvedRef;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import runDbClient_default from "../data/db/runDbClient.js";
|
|
2
|
-
import { createApiError,
|
|
2
|
+
import { OrgRoles, createApiError, getUserOrganizationsFromDb } from "@inkeep/agents-core";
|
|
3
3
|
import { createMiddleware } from "hono/factory";
|
|
4
4
|
import { HTTPException } from "hono/http-exception";
|
|
5
5
|
|
|
@@ -26,7 +26,7 @@ const requireTenantAccess = () => createMiddleware(async (c, next) => {
|
|
|
26
26
|
});
|
|
27
27
|
if (userId === "system") {
|
|
28
28
|
c.set("tenantId", tenantId);
|
|
29
|
-
c.set("tenantRole",
|
|
29
|
+
c.set("tenantRole", OrgRoles.OWNER);
|
|
30
30
|
await next();
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
@@ -37,12 +37,12 @@ const requireTenantAccess = () => createMiddleware(async (c, next) => {
|
|
|
37
37
|
message: "API key does not have access to this organization"
|
|
38
38
|
});
|
|
39
39
|
c.set("tenantId", tenantId);
|
|
40
|
-
c.set("tenantRole",
|
|
40
|
+
c.set("tenantRole", OrgRoles.OWNER);
|
|
41
41
|
await next();
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
44
|
try {
|
|
45
|
-
const organizationAccess = (await
|
|
45
|
+
const organizationAccess = (await getUserOrganizationsFromDb(runDbClient_default)(userId)).find((org) => org.organizationId === tenantId);
|
|
46
46
|
if (!organizationAccess) throw createApiError({
|
|
47
47
|
code: "forbidden",
|
|
48
48
|
message: "Access denied to this organization"
|
package/dist/types/app.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ type ManageAppVariables = AppVariables & {
|
|
|
38
38
|
db: AgentsManageDatabaseClient;
|
|
39
39
|
auth: ReturnType<typeof createAuth> | null;
|
|
40
40
|
resolvedRef: ResolvedRef;
|
|
41
|
+
/** Cached by projectFull middleware to avoid duplicate DB lookup for PUT upsert */
|
|
42
|
+
isProjectCreate?: boolean;
|
|
41
43
|
};
|
|
42
44
|
type AppConfig = {
|
|
43
45
|
serverConfig: ServerConfig;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inkeep/agents-api",
|
|
3
|
-
"version": "0.0.0-dev-
|
|
3
|
+
"version": "0.0.0-dev-20260123211824",
|
|
4
4
|
"description": "Unified Inkeep Agents API - combines management, runtime, and evaluation capabilities",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -71,8 +71,8 @@
|
|
|
71
71
|
"openid-client": "^6.8.1",
|
|
72
72
|
"pg": "^8.16.3",
|
|
73
73
|
"workflow": "4.0.1-beta.33",
|
|
74
|
-
"@inkeep/agents-core": "^0.0.0-dev-
|
|
75
|
-
"@inkeep/agents-manage-mcp": "^0.0.0-dev-
|
|
74
|
+
"@inkeep/agents-core": "^0.0.0-dev-20260123211824",
|
|
75
|
+
"@inkeep/agents-manage-mcp": "^0.0.0-dev-20260123211824"
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
|
78
78
|
"@hono/zod-openapi": "^1.1.5",
|