@opengeni/core 3.0.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +1 -1
  2. package/dist/application/connect-operation.d.ts +3 -0
  3. package/dist/application/sandbox-recovery.d.ts +49 -0
  4. package/dist/{chunk-H7X52RI2.js → chunk-TFHSE7XR.js} +13 -2
  5. package/dist/chunk-TFHSE7XR.js.map +1 -0
  6. package/dist/dependencies.d.ts +1 -1
  7. package/dist/domain/capabilities.d.ts +2 -2
  8. package/dist/domain/connection-account-selection-error.d.ts +6 -0
  9. package/dist/domain/connector-tool-permissions.d.ts +27 -0
  10. package/dist/domain/editable-artifacts/agent-application.d.ts +8 -0
  11. package/dist/domain/environments.d.ts +3 -7
  12. package/dist/domain/insights-timing.d.ts +16 -0
  13. package/dist/domain/insights.d.ts +4 -1
  14. package/dist/domain/knowledge-files.d.ts +1 -1
  15. package/dist/domain/knowledge-preparation.d.ts +9 -0
  16. package/dist/domain/knowledge-preparation.test.d.ts +1 -0
  17. package/dist/domain/mcp-account-bindings.d.ts +19 -0
  18. package/dist/domain/native-mcp-connection-admission.d.ts +3 -0
  19. package/dist/domain/organization-integration-catalog.d.ts +15 -0
  20. package/dist/domain/personal-connection-delegations.d.ts +19 -10
  21. package/dist/domain/pr-review.d.ts +56 -4
  22. package/dist/domain/scheduled-tasks.d.ts +8 -5
  23. package/dist/domain/session-file-access.d.ts +4 -0
  24. package/dist/domain/sessions.d.ts +8 -6
  25. package/dist/domain/skills.d.ts +29 -1
  26. package/dist/editable-artifacts.js +1 -1
  27. package/dist/index.d.ts +7 -5
  28. package/dist/index.js +4868 -4803
  29. package/dist/index.js.map +1 -1
  30. package/dist/sandbox/routing.d.ts +2 -1
  31. package/dist/sandbox/runtime-settings.d.ts +1 -15
  32. package/package.json +11 -19
  33. package/src/application/composer-submit.ts +2 -1
  34. package/src/application/connect-operation.ts +32 -3
  35. package/src/application/sandbox-recovery.ts +55 -0
  36. package/src/application/user-resource-grants.ts +1 -16
  37. package/src/dependencies.ts +5 -1
  38. package/src/domain/capabilities.ts +169 -122
  39. package/src/domain/connection-account-selection-error.ts +9 -0
  40. package/src/domain/connector-tool-permissions.ts +305 -0
  41. package/src/domain/editable-artifacts/agent-application.ts +31 -2
  42. package/src/domain/environments.ts +4 -9
  43. package/src/domain/file-owner.ts +16 -1
  44. package/src/domain/insights-timing.ts +95 -0
  45. package/src/domain/insights.ts +59 -35
  46. package/src/domain/knowledge-files.ts +10 -3
  47. package/src/domain/knowledge-messages.ts +1 -0
  48. package/src/domain/knowledge-preparation.test.ts +251 -0
  49. package/src/domain/knowledge-preparation.ts +126 -0
  50. package/src/domain/mcp-account-bindings.ts +152 -0
  51. package/src/domain/native-mcp-connection-admission.ts +14 -0
  52. package/src/domain/organization-integration-catalog.ts +83 -0
  53. package/src/domain/personal-connection-delegations.ts +226 -177
  54. package/src/domain/pr-review.ts +22 -6
  55. package/src/domain/resources.ts +9 -2
  56. package/src/domain/scheduled-tasks.ts +200 -155
  57. package/src/domain/session-file-access.ts +47 -0
  58. package/src/domain/session-tool-policy.ts +12 -4
  59. package/src/domain/sessions.ts +390 -261
  60. package/src/domain/skills.ts +9 -0
  61. package/src/index.ts +10 -6
  62. package/src/rigs/index.ts +17 -17
  63. package/src/sandbox/routing.ts +18 -7
  64. package/src/sandbox/runtime-settings.ts +7 -91
  65. package/dist/application/host-mcp-owner.d.ts +0 -6
  66. package/dist/application/host-mcp-resolvers.d.ts +0 -13
  67. package/dist/chunk-5WZYFL45.js +0 -266
  68. package/dist/chunk-5WZYFL45.js.map +0 -1
  69. package/dist/chunk-H7X52RI2.js.map +0 -1
  70. package/dist/domain/connection-authority.d.ts +0 -97
  71. package/dist/domain/connection-authority.js +0 -169
  72. package/dist/domain/connection-authority.js.map +0 -1
  73. package/dist/domain/host-mcp-authority-source-admission.d.ts +0 -10
  74. package/dist/domain/host-mcp-task-admission.d.ts +0 -18
  75. package/dist/domain/packs.d.ts +0 -59
  76. package/dist/domain/product-integration-pack.d.ts +0 -44
  77. package/dist/domain/product-integration-skill.gen.d.ts +0 -5
  78. package/dist/remote-mcp-credentials.d.ts +0 -23
  79. package/dist/remote-mcp-credentials.js +0 -11
  80. package/dist/remote-mcp-credentials.js.map +0 -1
  81. package/src/application/host-mcp-owner.ts +0 -41
  82. package/src/application/host-mcp-resolvers.ts +0 -84
  83. package/src/domain/connection-authority.ts +0 -329
  84. package/src/domain/host-mcp-authority-source-admission.ts +0 -25
  85. package/src/domain/host-mcp-task-admission.ts +0 -121
  86. package/src/domain/packs.ts +0 -699
  87. package/src/domain/product-integration-pack.ts +0 -42
  88. package/src/domain/product-integration-skill.gen.ts +0 -52
  89. package/src/remote-mcp-credentials.ts +0 -361
@@ -0,0 +1,47 @@
1
+ import type { AccessGrant, FileAsset } from "@opengeni/contracts";
2
+ import {
3
+ getSessionAuthorityProjection,
4
+ getFilesForSubject,
5
+ readSessionFileAttachments,
6
+ withSessionRlsActorContext,
7
+ } from "@opengeni/db";
8
+ import type { SessionAuthorizationDependencies } from "../session-authorization";
9
+ import {
10
+ requireSessionAuthorization,
11
+ withResolvedSessionAuthorization,
12
+ } from "../session-authorization";
13
+
14
+ /** A session attachment grant is never a generic file/Knowledge grant. */
15
+ export async function readSessionAttachmentFiles(
16
+ deps: SessionAuthorizationDependencies,
17
+ grant: AccessGrant,
18
+ sessionId: string,
19
+ fileIds: readonly string[],
20
+ ): Promise<FileAsset[]> {
21
+ const authority = await getSessionAuthorityProjection(deps.db, grant.workspaceId, sessionId);
22
+ if (!authority) return [];
23
+ const authorization = await requireSessionAuthorization(deps, grant, {
24
+ sessionId,
25
+ operation: "session.read",
26
+ surface: "core",
27
+ });
28
+ const ordinary = await getFilesForSubject(deps.db, {
29
+ accountId: grant.accountId,
30
+ workspaceId: grant.workspaceId,
31
+ subjectId: grant.subjectId,
32
+ fileIds,
33
+ });
34
+ const missing = fileIds.filter((id) => !ordinary.some((file) => file.id === id));
35
+ const actor = authorization?.actor ?? { kind: "subject" as const, subjectId: grant.subjectId };
36
+ const read = () =>
37
+ readSessionFileAttachments(deps.db, {
38
+ accountId: grant.accountId,
39
+ workspaceId: grant.workspaceId,
40
+ fileIds: missing,
41
+ access: { sessionId, authorityEpoch: authority.authorityEpoch, actor },
42
+ });
43
+ const shared = authorization
44
+ ? await withResolvedSessionAuthorization(authorization, read)
45
+ : await withSessionRlsActorContext({ subjectId: grant.subjectId }, read);
46
+ return [...ordinary, ...shared];
47
+ }
@@ -65,8 +65,11 @@ export function resolveSessionToolPolicy(input: SessionToolPolicyInput): Resolve
65
65
  availableIds.has(id),
66
66
  );
67
67
  const mandatoryIdSet = new Set<string>(mandatoryIds);
68
- const selectedRefs = mergeToolRefs([], input.sessionTools);
69
68
  const tracksWorkspaceDefaults = policy.mode === "workspace_default";
69
+ const excludedIds = new Set(tracksWorkspaceDefaults ? policy.excludedMcpServerIds : []);
70
+ const selectedRefs = mergeToolRefs([], input.sessionTools).filter(
71
+ (tool) => !excludedIds.has(tool.id) || mandatoryIdSet.has(tool.id),
72
+ );
70
73
 
71
74
  // Persisted refs may outlive a capability installation, deployment config,
72
75
  // or its credentials. Admission remains strict for newly requested refs, but
@@ -80,7 +83,7 @@ export function resolveSessionToolPolicy(input: SessionToolPolicyInput): Resolve
80
83
  toolRefs = mergeToolRefs(
81
84
  toolRefs,
82
85
  sortedIds(defaultIds)
83
- .filter((id) => availableIds.has(id))
86
+ .filter((id) => availableIds.has(id) && !excludedIds.has(id))
84
87
  .map((id) => ({ kind: "mcp" as const, id, optional: true as const })),
85
88
  );
86
89
  }
@@ -97,7 +100,7 @@ export function resolveSessionToolPolicy(input: SessionToolPolicyInput): Resolve
97
100
  selectedRefs,
98
101
  tracksWorkspaceDefaults
99
102
  ? sortedIds(defaultIds)
100
- .filter((id) => availableIds.has(id))
103
+ .filter((id) => availableIds.has(id) && !excludedIds.has(id))
101
104
  .map((id) => ({ kind: "mcp" as const, id, optional: true as const }))
102
105
  : [],
103
106
  );
@@ -190,7 +193,12 @@ export async function workspaceSessionToolPolicyDefaultServerIds(
190
193
  const configured = resolveWorkspaceSessionToolDefaults(workspace.settings);
191
194
  if (!configured?.mcpServerIds) return availableDefaults;
192
195
  const available = new Set(availableDefaults);
193
- return sortedIds(configured.mcpServerIds.filter((id) => available.has(id)));
196
+ return sortedIds([
197
+ ...configured.mcpServerIds.filter((id) => available.has(id)),
198
+ ...(configured.inheritConnectedMcpServers
199
+ ? availableDefaults.filter((id) => !["opengeni", "files", "docs"].includes(id))
200
+ : []),
201
+ ]);
194
202
  }
195
203
 
196
204
  /** Add a bounded, secret-safe effective projection to a session response. */