@opengeni/core 0.8.0 → 0.10.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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Settings } from '@opengeni/config';
2
- import { ScheduledTask, Document, GitHubAppApiPort, ConnectionCredentialsPort, SessionAuthorizationPort, Permission, AccessContext, AccessGrant, SessionAuthorizationActor, SessionAuthorizationTarget, SessionAuthorizationOperation, SessionAuthorizationSurface, SessionAuthorizationListScope, LimitAction, LimitDecision, TurnInitiator, TurnInitiatorContext, SessionTurnSource, CapabilityCatalogItem, CapabilityInstallation, CapabilityCatalogResponse, CreateCapabilityCatalogItemRequest, EnableCapabilityRequest, VariableSet, Rig, RigVersion, CreateRigRequest, RigDefinitionEditPayload, RigChange, ProposeRigChangeRequest, UpdateRigRequest, CapabilityPack, SocialConnection, ScheduledTaskAgentConfig, ToolRef, ResourceRef, CreateScheduledTaskRequest, UpdateScheduledTaskRequest, ReasoningEffort, SessionMcpCredentialUpdateInput, SessionEvent, SessionTurn, GoalSpec, SessionMcpServerMetadata, Session, CreateSessionResponse, WorkspaceMember, SessionControlRequest, SessionControlResponse, WorkspaceInferenceControlRequest, WorkspaceInferenceControlResponse, DeleteSessionQueueItemRequest, SessionQueueMutationResponse, EditSessionQueueItemRequest, ComposerDraft, MoveSessionQueueItemRequest, SaveComposerDraftRequest, SteerSessionQueueItemRequest } from '@opengeni/contracts';
2
+ import { ScheduledTask, Document, GitHubAppApiPort, ConnectionCredentialsPort, SessionAuthorizationPort, Permission, AccessContext, AccessGrant, SessionAuthorizationActor, SessionAuthorizationTarget, SessionAuthorizationOperation, SessionAuthorizationSurface, SessionAuthorizationListScope, LimitAction, LimitDecision, TurnInitiator, TurnInitiatorContext, SessionTurnSource, CapabilityCatalogItem, CapabilityInstallation, CapabilityCatalogResponse, CreateCapabilityCatalogItemRequest, EnableCapabilityRequest, VariableSet, Rig, RigVersion, CreateRigRequest, RigDefinitionEditPayload, RigChange, ProposeRigChangeRequest, UpdateRigRequest, CapabilityPack, SocialConnection, ScheduledTaskAgentConfig, ToolRef, ResourceRef, SessionEffectiveToolPolicy, SessionToolPolicy, Session, CreateScheduledTaskRequest, UpdateScheduledTaskRequest, ReasoningEffort, SessionMcpCredentialUpdateInput, SessionEvent, SessionTurn, TurnExecutionPolicyV1, GoalSpec, SessionMcpServerMetadata, CreateSessionResponse, SessionMcpApprovalPolicy, UpdateSessionMcpApprovalPolicyResponse, WorkspaceMember, SessionControlRequest, SessionControlResponse, WorkspaceInferenceControlRequest, WorkspaceInferenceControlResponse, DeleteSessionQueueItemRequest, SessionQueueMutationResponse, EditSessionQueueItemRequest, ComposerDraft, MoveSessionQueueItemRequest, SaveComposerDraftRequest, SteerSessionQueueItemRequest } from '@opengeni/contracts';
3
3
  export { mergeToolRefs, stableJson } from '@opengeni/contracts';
4
4
  import * as _opengeni_db from '@opengeni/db';
5
5
  import { Database, SandboxRecord, EnabledMcpCapabilityServer, UpdateScheduledTaskInput, SessionCommandActor, CreateSessionMcpServerInput, UpdateSessionMcpServerCredentialsInput } from '@opengeni/db';
@@ -155,6 +155,8 @@ type AppDependencies = {
155
155
  */
156
156
  sessionAuthorization?: SessionAuthorizationPort | null;
157
157
  managedAuth?: ManagedAuth | null;
158
+ /** Injectable Codex HTTP transport for deterministic API/provider tests. */
159
+ codexFetch?: typeof fetch;
158
160
  sandboxClient?: ApiSandboxClient;
159
161
  /**
160
162
  * Resume a box by id from a serialized resume_state envelope (the lease's
@@ -613,10 +615,21 @@ declare function buildMarketingDailyAnalysisAgentConfig(input: {
613
615
  promptInstructions?: string;
614
616
  }): ScheduledTaskAgentConfig;
615
617
 
616
- declare function validateToolRefs(tools: ToolRef[], settings: Settings): ToolRef[];
618
+ declare function validateToolRefs(tools: ToolRef[], settings: McpSettings): ToolRef[];
617
619
  type McpSettings = Pick<Settings, "mcpServers">;
618
620
  declare function enabledCapabilityMcpToolRefs(settings: McpSettings, runtimeSettings: McpSettings): ToolRef[];
619
621
  declare function withDefaultEnabledCapabilityMcpTools(tools: ToolRef[], settings: McpSettings, runtimeSettings: McpSettings): ToolRef[];
622
+ /** Drop stored refs that are no longer present in the current runtime registry. */
623
+ declare function availableToolRefs(tools: ToolRef[], settings: McpSettings): ToolRef[];
624
+ /** A child or fixed-policy follow-up may narrow its allow-list, never widen it. */
625
+ declare function assertToolRefsSubset(requested: ToolRef[], allowed: ToolRef[], message?: string): void;
626
+ /** Validate runtime availability and then enforce the durable policy fence. */
627
+ declare function validateToolRefsForSessionPolicy(input: {
628
+ requested: ToolRef[];
629
+ settings: McpSettings;
630
+ allowedTools: ToolRef[];
631
+ message: string;
632
+ }): ToolRef[];
620
633
  declare function normalizeResources(resources: ResourceRef[]): ResourceRef[];
621
634
  declare function mergeResourceRefs(existing: ResourceRef[], additions: ResourceRef[]): ResourceRef[];
622
635
  declare function validateGitHubRepositorySelectionShapes(resources: ResourceRef[]): number[];
@@ -625,6 +638,34 @@ declare function validateGitHubRepositorySelectionShape(resources: ResourceRef[]
625
638
  declare function validateGitHubRepositorySelection(db: Database, workspaceId: string, resources: ResourceRef[]): Promise<void>;
626
639
  declare function validateFileResources(db: Database, workspaceId: string, resources: ResourceRef[]): Promise<void>;
627
640
 
641
+ type ResolvedSessionToolPolicy = {
642
+ toolRefs: ToolRef[];
643
+ effectivePolicy: SessionEffectiveToolPolicy;
644
+ };
645
+ type SessionToolPolicyInput = {
646
+ toolPolicy?: SessionToolPolicy | null;
647
+ sessionTools: ToolRef[];
648
+ turnTools?: ToolRef[];
649
+ /** Undefined preserves the legacy merge path for pre-provenance callers. */
650
+ turnToolsProvided?: boolean;
651
+ availableMcpServerIds: Iterable<string>;
652
+ /** Current omitted-tools defaults, intentionally narrower than all servers. */
653
+ defaultMcpServerIds?: Iterable<string>;
654
+ };
655
+ /**
656
+ * Resolve the same ID-only policy used by API projections and worker turns.
657
+ * This function never receives endpoint URLs, credentials, schemas, or live
658
+ * probe results. `availableMcpServerIds` is the resolved runtime registry;
659
+ * `defaultMcpServerIds` is the capability-only omitted-tools set.
660
+ */
661
+ declare function resolveSessionToolPolicy(input: SessionToolPolicyInput): ResolvedSessionToolPolicy;
662
+ /** Current full runtime registry IDs, including configured static servers. */
663
+ declare function workspaceSessionToolPolicyServerIds(db: Database, workspaceId: string, settings: Settings): Promise<string[]>;
664
+ /** Current omitted-tools defaults; this preserves capability-first behavior. */
665
+ declare function workspaceSessionToolPolicyDefaultServerIds(db: Database, workspaceId: string, settings: Settings): Promise<string[]>;
666
+ /** Add a bounded, secret-safe effective projection to a session response. */
667
+ declare function sessionWithEffectiveToolPolicy(session: Session, workspaceServerIds: Iterable<string>, workspaceDefaultServerIds?: Iterable<string>): Session;
668
+
628
669
  /**
629
670
  * Whether a raw scheduled-task payload explicitly set agentConfig.tools.
630
671
  * Zod's `.default([])` erases the distinction between "absent" and
@@ -705,9 +746,11 @@ declare function createAndStartSession(input: {
705
746
  turnInstructions?: string | null;
706
747
  resources: ResourceRef[];
707
748
  tools: ToolRef[];
749
+ toolPolicy?: SessionToolPolicy;
708
750
  clientEventId?: string;
709
751
  model: string;
710
752
  reasoningEffort: Settings["openaiReasoningEffort"];
753
+ turnExecutionPolicy: TurnExecutionPolicyV1;
711
754
  sandboxBackend: Settings["sandboxBackend"];
712
755
  metadata: Record<string, unknown>;
713
756
  createdBy?: TurnInitiator;
@@ -753,6 +796,7 @@ declare function workflowIdForSession(sessionId: string): string;
753
796
  * later) and the MCP surfaces that share them validate identically and cannot
754
797
  * drift.
755
798
  */
799
+ declare function canonicalConfiguredModel(settings: Settings, model: string | null | undefined): string | null | undefined;
756
800
  declare function assertConfiguredModel(settings: Settings, model: string | null | undefined): void;
757
801
  /**
758
802
  * Reject a model the WORKSPACE's model policy blocks, at the same choke points
@@ -787,6 +831,7 @@ declare function postUserMessageTurn(input: {
787
831
  turnInstructions?: string | null;
788
832
  resources: ResourceRef[];
789
833
  tools: ToolRef[];
834
+ toolsProvided: boolean;
790
835
  model?: string | null;
791
836
  reasoningEffort?: Settings["openaiReasoningEffort"] | null;
792
837
  clientEventId?: string;
@@ -798,6 +843,8 @@ declare function postUserMessageTurn(input: {
798
843
  commandActor?: SessionCommandActor;
799
844
  controlEtag?: string | null;
800
845
  expectedDraftRevision?: number | null;
846
+ reasoningEffortFallback?: Settings["openaiReasoningEffort"];
847
+ turnExecutionPolicy: TurnExecutionPolicyV1;
801
848
  }): Promise<{
802
849
  accepted: SessionEvent;
803
850
  turn: SessionTurn;
@@ -816,8 +863,9 @@ declare function createSessionForRequest(deps: ApiRouteDeps, grant: AccessGrant,
816
863
  * Full accept-user-message flow shared by the `user.message` branch of
817
864
  * `POST /sessions/:id/events` and the first-party MCP `session_send_message`
818
865
  * tool: resource/tool validation, usage limits, the locked append + turn
819
- * enqueue, and usage recording. `toolsProvided: false` applies the
820
- * workspace's default capability MCP tools, matching an absent `tools` key.
866
+ * enqueue, and usage recording. `toolsProvided: false` durably preserves an
867
+ * absent `tools` key so execution inherits the session policy; an explicit
868
+ * empty array is a deliberate per-turn narrowing.
821
869
  */
822
870
  declare function acceptSessionUserMessage(deps: AcceptSessionUserMessageDependencies, grant: AccessGrant, workspaceId: string, sessionId: string, input: {
823
871
  text: string;
@@ -855,6 +903,17 @@ declare function updateSessionTitle(deps: {
855
903
  title: string | null;
856
904
  relatedSessionAccess: "target" | "root";
857
905
  }>;
906
+ /**
907
+ * Update one existing session MCP server's approval policy. The database
908
+ * serializes this write with attempt claim under the session lock: an already
909
+ * claimed attempt retains its immutable snapshot, while the next claim captures
910
+ * this value. No attempt is cancelled, restarted, or reinterpreted.
911
+ */
912
+ declare function updateSessionMcpApprovalPolicy(deps: {
913
+ db: Database;
914
+ bus: EventBus;
915
+ sessionAuthorization?: SessionAuthorizationPort | null;
916
+ }, grant: AccessGrant, sessionId: string, serverId: string, requireApproval: SessionMcpApprovalPolicy): Promise<UpdateSessionMcpApprovalPolicyResponse>;
858
917
  declare function readSessionLineage(deps: Pick<ApiRouteDeps, "db" | "sessionAuthorization">, grant: AccessGrant, sessionId: string): Promise<_opengeni_db.SessionLineage>;
859
918
 
860
919
  /** A member can manage other members (directly or via the admin wildcard). */
@@ -975,4 +1034,4 @@ declare function controlHumanWorkspace(deps: {
975
1034
  declare function getHumanComposerDraft(deps: SessionAuthorizationCommandDeps, context: HumanSessionCommandContext): Promise<ComposerDraft>;
976
1035
  declare function saveHumanComposerDraft(deps: SessionAuthorizationCommandDeps, context: HumanSessionCommandContext, input: SaveComposerDraftRequest): Promise<ComposerDraft>;
977
1036
 
978
- export { type AcceptSessionUserMessageDependencies, type AccessDeps, type AgentSessionCommandContext, type ApiRouteDeps, type ApiSandboxClient, type ApiSandboxSession, type AppDependencies, type ChannelARoutingServices, type DocumentIndexClient, type FleetContext, type FleetListResult, type FleetLiveness, type FleetSandboxEntry, type FleetServices, type FleetSwapResult, type HumanSessionCommandContext, type LimitCheckInput, type LimitDependencies, MARKETING_SOCIAL_PACK_ID, MAX_CHECKS_PER_RIG, MAX_CREDENTIAL_HOOKS_PER_RIG, MAX_DEFAULT_VARIABLE_SETS_PER_RIG, MAX_ENVIRONMENTS_PER_WORKSPACE, MAX_RIGS_PER_WORKSPACE, MAX_VARIABLES_PER_ENVIRONMENT, type ManagedAuth, type McpCapabilityProbe, type McpCapabilityProbeInput, type McpCapabilityProbeResult, type ObjectStorageDependency, type ProvisionResult, type ResolvedSessionAuthorization, type ResumeBoxByIdInput, type ResumedSandboxSession, type RigServices, type RigVerificationClassification, type RunOnOp, type RunOnResult, SESSION_AUTHORIZATION_DEFAULT_REAUTHORIZE_MS, SESSION_WORKFLOW_WAKE_DISPATCHER_PERIOD_MS, SESSION_WORKFLOW_WAKE_DISPATCHER_SCHEDULE_ID, SESSION_WORKFLOW_WAKE_DISPATCHER_WORKFLOW_TYPE, SessionAuthorizationDeniedError, type SessionAuthorizationDependencies, SessionAuthorizationUnavailableError, type SessionWorkflowClient, acceptSessionUserMessage, activateRigVersionForApi, appendRigSetupCommand, applyCapabilityEnablement, assertAllowedEnvironmentVariableName, assertAllowedVariableSetVariableName, assertConfiguredModel, assertPackSandboxImageCompatible, assertWorkspaceDeletable, assertWorkspaceMemberRemovable, assertWorkspaceModelPolicyAllows, buildCapabilityCatalog, buildFleetContextForSession, buildMarketingDailyAnalysisAgentConfig, checkLimit, classifyRigVerificationOutcome, controlAgentSessionWorkstream, controlHumanSessionWorkstream, controlHumanWorkspace, createAndStartSession, createCatalogItem, createRigForApi, createRigVersionForApi, createSessionForRequest, createValidatedScheduledTask, deleteHumanQueuePrompt, deleteRigForApi, disableCapability, discoverMcpRegistryCapabilities, editHumanQueuePrompt, enableCapability, enabledCapabilityMcpToolRefs, getCapabilityPack, getHumanComposerDraft, hasPermission, isBuiltInCapabilityPack, isUserMember, listCapabilityPacks, listFleet, listRigChangesForApi, listRigVersionsForApi, listWorkspaceCapabilityPacks, manualScheduledTaskTriggerUsageKey, manualScheduledTaskTriggerWorkflowId, memberCanAdminister, mergeResourceRefs, moveHumanQueuePrompt, normalizeResources, officialMcpRegistryUrl, postUserMessageTurn, promoteSetupAppendChange, promoteVerifiedDefinitionEditChangeForApi, proposeRigChangeForApi, provisionSandbox, readSessionLineage, reasoningEffortForSession, recordRigAuditEvent, recordVariableSetAuditEvent, recordWorkspaceUsage, relayConfigFromSettings, relayDialBaseFromSettings, requireAccessContext, requireAccessGrant, requireEnvironmentEncryption, requireLimit, requirePermission, requireQueuedTurnForApi, requireRigChangeForApi, requireRigForApi, requireScheduledTaskForApi, requireSessionAuthorization, requireSessionAuthorizationListScope, requireVariableSetEncryption, requireVariableSetForApi, resolveCapabilityPack, resolveMemberSubjectId, restoreScheduledTask, rigActorForGrant, routingEnabled, runOnSandbox, saveHumanComposerDraft, scheduledTaskTemporalScheduleId, scheduledTaskToolsProvided, scheduledTaskTriggerToken, sendAgentSessionMessage, settingsWithEnabledCapabilityMcpServers, settingsWithMcpCapabilityServers, settingsWithSessionMcpServerMetadata, steerAgentSession, steerHumanQueuePrompt, swapActiveSandbox, syncCreatedScheduledTask, syncUpdatedScheduledTask, updateRigForApi, updateSessionTitle, validateFileResources, validateGitHubRepositorySelection, validateGitHubRepositorySelectionShape, validateGitHubRepositorySelectionShapes, validateMcpCapabilityConnection, validateToolRefs, validateVariableSetAttachment, validatedScheduledTaskUpdate, withDefaultEnabledCapabilityMcpTools, workflowIdForSession, wrapChannelABoxWithRouting };
1037
+ export { type AcceptSessionUserMessageDependencies, type AccessDeps, type AgentSessionCommandContext, type ApiRouteDeps, type ApiSandboxClient, type ApiSandboxSession, type AppDependencies, type ChannelARoutingServices, type DocumentIndexClient, type FleetContext, type FleetListResult, type FleetLiveness, type FleetSandboxEntry, type FleetServices, type FleetSwapResult, type HumanSessionCommandContext, type LimitCheckInput, type LimitDependencies, MARKETING_SOCIAL_PACK_ID, MAX_CHECKS_PER_RIG, MAX_CREDENTIAL_HOOKS_PER_RIG, MAX_DEFAULT_VARIABLE_SETS_PER_RIG, MAX_ENVIRONMENTS_PER_WORKSPACE, MAX_RIGS_PER_WORKSPACE, MAX_VARIABLES_PER_ENVIRONMENT, type ManagedAuth, type McpCapabilityProbe, type McpCapabilityProbeInput, type McpCapabilityProbeResult, type ObjectStorageDependency, type ProvisionResult, type ResolvedSessionAuthorization, type ResolvedSessionToolPolicy, type ResumeBoxByIdInput, type ResumedSandboxSession, type RigServices, type RigVerificationClassification, type RunOnOp, type RunOnResult, SESSION_AUTHORIZATION_DEFAULT_REAUTHORIZE_MS, SESSION_WORKFLOW_WAKE_DISPATCHER_PERIOD_MS, SESSION_WORKFLOW_WAKE_DISPATCHER_SCHEDULE_ID, SESSION_WORKFLOW_WAKE_DISPATCHER_WORKFLOW_TYPE, SessionAuthorizationDeniedError, type SessionAuthorizationDependencies, SessionAuthorizationUnavailableError, type SessionToolPolicyInput, type SessionWorkflowClient, acceptSessionUserMessage, activateRigVersionForApi, appendRigSetupCommand, applyCapabilityEnablement, assertAllowedEnvironmentVariableName, assertAllowedVariableSetVariableName, assertConfiguredModel, assertPackSandboxImageCompatible, assertToolRefsSubset, assertWorkspaceDeletable, assertWorkspaceMemberRemovable, assertWorkspaceModelPolicyAllows, availableToolRefs, buildCapabilityCatalog, buildFleetContextForSession, buildMarketingDailyAnalysisAgentConfig, canonicalConfiguredModel, checkLimit, classifyRigVerificationOutcome, controlAgentSessionWorkstream, controlHumanSessionWorkstream, controlHumanWorkspace, createAndStartSession, createCatalogItem, createRigForApi, createRigVersionForApi, createSessionForRequest, createValidatedScheduledTask, deleteHumanQueuePrompt, deleteRigForApi, disableCapability, discoverMcpRegistryCapabilities, editHumanQueuePrompt, enableCapability, enabledCapabilityMcpToolRefs, getCapabilityPack, getHumanComposerDraft, hasPermission, isBuiltInCapabilityPack, isUserMember, listCapabilityPacks, listFleet, listRigChangesForApi, listRigVersionsForApi, listWorkspaceCapabilityPacks, manualScheduledTaskTriggerUsageKey, manualScheduledTaskTriggerWorkflowId, memberCanAdminister, mergeResourceRefs, moveHumanQueuePrompt, normalizeResources, officialMcpRegistryUrl, postUserMessageTurn, promoteSetupAppendChange, promoteVerifiedDefinitionEditChangeForApi, proposeRigChangeForApi, provisionSandbox, readSessionLineage, reasoningEffortForSession, recordRigAuditEvent, recordVariableSetAuditEvent, recordWorkspaceUsage, relayConfigFromSettings, relayDialBaseFromSettings, requireAccessContext, requireAccessGrant, requireEnvironmentEncryption, requireLimit, requirePermission, requireQueuedTurnForApi, requireRigChangeForApi, requireRigForApi, requireScheduledTaskForApi, requireSessionAuthorization, requireSessionAuthorizationListScope, requireVariableSetEncryption, requireVariableSetForApi, resolveCapabilityPack, resolveMemberSubjectId, resolveSessionToolPolicy, restoreScheduledTask, rigActorForGrant, routingEnabled, runOnSandbox, saveHumanComposerDraft, scheduledTaskTemporalScheduleId, scheduledTaskToolsProvided, scheduledTaskTriggerToken, sendAgentSessionMessage, sessionWithEffectiveToolPolicy, settingsWithEnabledCapabilityMcpServers, settingsWithMcpCapabilityServers, settingsWithSessionMcpServerMetadata, steerAgentSession, steerHumanQueuePrompt, swapActiveSandbox, syncCreatedScheduledTask, syncUpdatedScheduledTask, updateRigForApi, updateSessionMcpApprovalPolicy, updateSessionTitle, validateFileResources, validateGitHubRepositorySelection, validateGitHubRepositorySelectionShape, validateGitHubRepositorySelectionShapes, validateMcpCapabilityConnection, validateToolRefs, validateToolRefsForSessionPolicy, validateVariableSetAttachment, validatedScheduledTaskUpdate, withDefaultEnabledCapabilityMcpTools, workflowIdForSession, workspaceSessionToolPolicyDefaultServerIds, workspaceSessionToolPolicyServerIds, wrapChannelABoxWithRouting };