@opengeni/core 0.10.0 → 0.11.1
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 +86 -3
- package/dist/index.js +485 -93
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
- package/src/application/new-session-drafts.ts +126 -0
- package/src/domain/scheduled-tasks.ts +23 -1
- package/src/domain/sessions.ts +115 -50
- package/src/index.ts +1 -0
- package/src/sandbox/fleet.ts +149 -39
- package/src/sandbox/routing.ts +261 -3
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, 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';
|
|
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, SessionSpawnDenial, ReasoningEffort, SessionMcpCredentialUpdateInput, SessionEvent, SessionTurn, TurnExecutionPolicyV1, GoalSpec, SessionMcpServerMetadata, CreateSessionResponse, SessionMcpApprovalPolicy, UpdateSessionMcpApprovalPolicyResponse, WorkspaceMember, NewSessionDraft, 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';
|
|
@@ -196,6 +196,14 @@ type FleetServices = {
|
|
|
196
196
|
db: Database;
|
|
197
197
|
settings: Settings;
|
|
198
198
|
bus?: EventBus;
|
|
199
|
+
/** API-direct readiness owner for the session's home group. Production wires
|
|
200
|
+
* this to the same viewer/provider verification + rematerialization path; core
|
|
201
|
+
* tests may omit it when exercising pointer mechanics only. */
|
|
202
|
+
ensureSessionGroupReady?: (ctx: FleetContext) => Promise<FleetReadinessHold>;
|
|
203
|
+
};
|
|
204
|
+
type FleetReadinessHold = {
|
|
205
|
+
/** Release target liveness only after route publication settles. */
|
|
206
|
+
release: () => Promise<void>;
|
|
199
207
|
};
|
|
200
208
|
type FleetContext = {
|
|
201
209
|
accountId: string;
|
|
@@ -252,6 +260,21 @@ type FleetSandboxEntry = {
|
|
|
252
260
|
/** Selfhosted only: whether a display (real/Xvfb) is present. */
|
|
253
261
|
hasDisplay?: boolean;
|
|
254
262
|
lastSeenAt?: string | null;
|
|
263
|
+
/** Orthogonal truth dimensions. `liveness` is only their conservative UI
|
|
264
|
+
* projection and is never evidence for a specific dimension. */
|
|
265
|
+
providerStatus: "not_created" | "creating" | "exists" | "missing" | "unknown";
|
|
266
|
+
leaseLiveness: "cold" | "warming" | "warm" | "draining" | null;
|
|
267
|
+
routeStatus: "attached" | "detached";
|
|
268
|
+
archiveStatus: "none" | "available" | "unverified" | "invalid";
|
|
269
|
+
restoreStatus: "not_required" | "pending" | "restoring" | "verifying" | "ready" | "degraded" | "unrecoverable";
|
|
270
|
+
workspaceStatus: "unknown" | "not_ready" | "ready" | "degraded" | "unrecoverable";
|
|
271
|
+
leaseEpoch: number | null;
|
|
272
|
+
routeEpoch: number;
|
|
273
|
+
/** Numeric/boolean persistence truth only. Archive locations, content hashes,
|
|
274
|
+
* provider identities, and storage handles are intentionally not projected. */
|
|
275
|
+
workspaceGeneration: number | null;
|
|
276
|
+
archiveGeneration: number | null;
|
|
277
|
+
archiveComplete: boolean;
|
|
255
278
|
};
|
|
256
279
|
type FleetListResult = {
|
|
257
280
|
/** The session's currently-active sandbox id, or null == the group box. */
|
|
@@ -266,7 +289,7 @@ type FleetSwapResult = {
|
|
|
266
289
|
activeSandboxId: string | null;
|
|
267
290
|
activeEpoch: number;
|
|
268
291
|
reason?: string;
|
|
269
|
-
code?: BackendUnresolvableCode | "concurrent_swap";
|
|
292
|
+
code?: BackendUnresolvableCode | "concurrent_swap" | "recovery_in_progress" | "recovery_degraded" | "recovery_unrecoverable";
|
|
270
293
|
};
|
|
271
294
|
/**
|
|
272
295
|
* List the fleet: the session's own Modal group box (a synthetic entry) + the
|
|
@@ -373,8 +396,19 @@ declare function routingEnabled(settings: Settings): boolean;
|
|
|
373
396
|
* unchanged; a selfhosted active pointer routes the op to the machine.
|
|
374
397
|
*/
|
|
375
398
|
declare function wrapChannelABoxWithRouting(services: ChannelARoutingServices, ids: {
|
|
399
|
+
accountId: string;
|
|
376
400
|
workspaceId: string;
|
|
377
401
|
sessionId: string;
|
|
402
|
+
homeLease: {
|
|
403
|
+
sandboxGroupId: string;
|
|
404
|
+
leaseEpoch: number;
|
|
405
|
+
instanceId: string;
|
|
406
|
+
backend: string;
|
|
407
|
+
};
|
|
408
|
+
directRequest: {
|
|
409
|
+
requestId: string;
|
|
410
|
+
holderId: string;
|
|
411
|
+
};
|
|
378
412
|
}, established: EstablishedSandboxSession): EstablishedSandboxSession;
|
|
379
413
|
|
|
380
414
|
type AccessDeps = {
|
|
@@ -734,6 +768,36 @@ declare function manualScheduledTaskTriggerWorkflowId(taskId: string, triggerTok
|
|
|
734
768
|
*/
|
|
735
769
|
declare function manualScheduledTaskTriggerUsageKey(workspaceId: string, taskId: string, triggerToken: string): string;
|
|
736
770
|
|
|
771
|
+
/** Transport-neutral typed denial raised only after its audit row committed. */
|
|
772
|
+
declare class SessionSpawnDeniedError extends Error {
|
|
773
|
+
readonly denial: SessionSpawnDenial;
|
|
774
|
+
constructor(denial: SessionSpawnDenial);
|
|
775
|
+
}
|
|
776
|
+
declare function sessionSpawnDenialEnvelope(error: SessionSpawnDeniedError): {
|
|
777
|
+
readonly error: {
|
|
778
|
+
readonly code: "nested_agent_depth_exceeded" | "nested_agent_depth_override_forbidden";
|
|
779
|
+
readonly message: string;
|
|
780
|
+
readonly details: {
|
|
781
|
+
readonly denial: {
|
|
782
|
+
id: string;
|
|
783
|
+
accountId: string;
|
|
784
|
+
workspaceId: string;
|
|
785
|
+
parentSessionId: string | null;
|
|
786
|
+
rootSessionId: string | null;
|
|
787
|
+
currentDepth: number;
|
|
788
|
+
attemptedDepth: number;
|
|
789
|
+
effectiveMaxNestedAgentDepth: number;
|
|
790
|
+
requestedMaxNestedAgentDepthOverride: number | null;
|
|
791
|
+
policySource: "default" | "session" | "workspace" | "deployment";
|
|
792
|
+
policySessionId: string | null;
|
|
793
|
+
subjectId: string | null;
|
|
794
|
+
code: "nested_agent_depth_exceeded" | "nested_agent_depth_override_forbidden";
|
|
795
|
+
idempotencyKey: string | null;
|
|
796
|
+
createdAt: string;
|
|
797
|
+
};
|
|
798
|
+
};
|
|
799
|
+
};
|
|
800
|
+
};
|
|
737
801
|
declare function settingsWithSessionMcpServerMetadata(settings: Settings, servers: SessionMcpServerMetadata[]): Settings;
|
|
738
802
|
declare function createAndStartSession(input: {
|
|
739
803
|
requestedSessionId?: string;
|
|
@@ -778,6 +842,13 @@ declare function createAndStartSession(input: {
|
|
|
778
842
|
settings: Settings;
|
|
779
843
|
workingDir?: string | null;
|
|
780
844
|
} | null;
|
|
845
|
+
consumeNewSessionDraft?: {
|
|
846
|
+
subjectId: string;
|
|
847
|
+
expectedRevision: number;
|
|
848
|
+
} | null;
|
|
849
|
+
maxNestedAgentDepthOverride?: number | null;
|
|
850
|
+
allowNestedAgentDepthIncrease?: boolean;
|
|
851
|
+
subjectId?: string | null;
|
|
781
852
|
}): Promise<CreateSessionResponse>;
|
|
782
853
|
declare function workflowIdForSession(sessionId: string): string;
|
|
783
854
|
/**
|
|
@@ -950,6 +1021,18 @@ declare function assertWorkspaceDeletable(input: {
|
|
|
950
1021
|
activeSessionCount: number;
|
|
951
1022
|
}): void;
|
|
952
1023
|
|
|
1024
|
+
type NewSessionDraftDependencies = Pick<AppDependencies, "settings" | "db" | "objectStorage">;
|
|
1025
|
+
/** Read the authenticated actor's server-authoritative pre-session composer state. */
|
|
1026
|
+
declare function getActorNewSessionDraft(deps: Pick<NewSessionDraftDependencies, "settings" | "db">, grant: AccessGrant, workspaceId: string): Promise<NewSessionDraft>;
|
|
1027
|
+
/**
|
|
1028
|
+
* Validate and save one exact actor-private draft revision. Create-time-only
|
|
1029
|
+
* checks (live machine target, rig/variable-set state, and permission
|
|
1030
|
+
* delegation) intentionally remain in createSessionForRequest: a recoverable
|
|
1031
|
+
* draft may represent incomplete options, while no invalid option can become a
|
|
1032
|
+
* session without passing that single canonical create boundary.
|
|
1033
|
+
*/
|
|
1034
|
+
declare function saveActorNewSessionDraft(deps: NewSessionDraftDependencies, grant: AccessGrant, workspaceId: string, rawInput: unknown): Promise<NewSessionDraft>;
|
|
1035
|
+
|
|
953
1036
|
type HumanSessionCommandContext = {
|
|
954
1037
|
accountId: string;
|
|
955
1038
|
workspaceId: string;
|
|
@@ -1034,4 +1117,4 @@ declare function controlHumanWorkspace(deps: {
|
|
|
1034
1117
|
declare function getHumanComposerDraft(deps: SessionAuthorizationCommandDeps, context: HumanSessionCommandContext): Promise<ComposerDraft>;
|
|
1035
1118
|
declare function saveHumanComposerDraft(deps: SessionAuthorizationCommandDeps, context: HumanSessionCommandContext, input: SaveComposerDraftRequest): Promise<ComposerDraft>;
|
|
1036
1119
|
|
|
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 };
|
|
1120
|
+
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 FleetReadinessHold, 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, SessionSpawnDeniedError, 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, getActorNewSessionDraft, 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, saveActorNewSessionDraft, saveHumanComposerDraft, scheduledTaskTemporalScheduleId, scheduledTaskToolsProvided, scheduledTaskTriggerToken, sendAgentSessionMessage, sessionSpawnDenialEnvelope, 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 };
|