@opengeni/api-router 0.20.0 → 0.21.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/app.js CHANGED
@@ -22,7 +22,7 @@ import {
22
22
  validateToolRefs,
23
23
  withDefaultEnabledCapabilityMcpTools,
24
24
  workflowIdForSession
25
- } from "./chunk-AEVD7E2F.js";
25
+ } from "./chunk-5EEC7Q6C.js";
26
26
  export {
27
27
  API_MAX_REQUEST_BODY_BYTES,
28
28
  allowedCorsOrigin,
@@ -21868,6 +21868,7 @@ import { randomUUID } from "crypto";
21868
21868
  import {
21869
21869
  ActivateWorkspaceInstructionPolicyRequest,
21870
21870
  CreateWorkspaceInstructionPolicyDraftRequest,
21871
+ CreateWorkspaceInstructionPolicyOnboardingProposalRequest,
21871
21872
  ImportLegacyWorkspaceInstructionPolicyDraftRequest,
21872
21873
  RollbackWorkspaceInstructionPolicyRequest,
21873
21874
  WorkspaceInstructionPolicyActivationResponse,
@@ -21876,22 +21877,34 @@ import {
21876
21877
  WorkspaceInstructionPolicyDiffResponse,
21877
21878
  WorkspaceInstructionPolicyListQuery,
21878
21879
  WorkspaceInstructionPolicyListResponse,
21880
+ WorkspaceInstructionPolicyOnboardingProposal,
21881
+ WorkspaceInstructionPolicyOnboardingProposalConflictResponse,
21882
+ WorkspaceInstructionPolicyOnboardingProposalContentErrorResponse,
21883
+ WorkspaceInstructionPolicyOnboardingProposalListQuery,
21884
+ WorkspaceInstructionPolicyOnboardingProposalListResponse,
21885
+ WorkspaceInstructionPolicyOnboardingProposalStaleResponse,
21879
21886
  WorkspaceInstructionPolicyOperationReuseResponse,
21880
- WorkspaceInstructionPolicyRevision
21887
+ WorkspaceInstructionPolicyRevision,
21888
+ WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS
21881
21889
  } from "@opengeni/contracts";
21882
21890
  import { requireAccessGrant as requireAccessGrant17 } from "@opengeni/core";
21883
21891
  import {
21884
21892
  activateWorkspaceInstructionPolicyRevision,
21885
21893
  createWorkspaceInstructionPolicyDraft,
21894
+ createWorkspaceInstructionPolicyOnboardingProposal,
21886
21895
  diffWorkspaceInstructionPolicyRevisions,
21887
21896
  getWorkspaceInstructionPolicyRevision,
21888
21897
  importLegacyWorkspaceInstructionPolicyDraft,
21889
21898
  listWorkspaceInstructionPolicyRevisions,
21899
+ listWorkspaceInstructionPolicyOnboardingProposals,
21890
21900
  rollbackWorkspaceInstructionPolicyRevision,
21891
21901
  WorkspaceInstructionPolicyConflictError,
21892
21902
  WorkspaceInstructionPolicyInvalidOperationError,
21893
21903
  WorkspaceInstructionPolicyLegacyUnavailableError,
21894
21904
  WorkspaceInstructionPolicyNotFoundError,
21905
+ WorkspaceInstructionPolicyOnboardingProposalConflictError,
21906
+ WorkspaceInstructionPolicyOnboardingProposalContentError,
21907
+ WorkspaceInstructionPolicyOnboardingProposalStaleError,
21895
21908
  WorkspaceInstructionPolicyOperationReuseError
21896
21909
  } from "@opengeni/db";
21897
21910
  import { HTTPException as HTTPException27 } from "hono/http-exception";
@@ -21924,6 +21937,37 @@ function policyErrorResponse(context, error) {
21924
21937
  409
21925
21938
  );
21926
21939
  }
21940
+ if (error instanceof WorkspaceInstructionPolicyOnboardingProposalContentError) {
21941
+ return context.json(
21942
+ WorkspaceInstructionPolicyOnboardingProposalContentErrorResponse.parse({
21943
+ code: error.code,
21944
+ message: error.message,
21945
+ maxChars: WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS
21946
+ }),
21947
+ 422
21948
+ );
21949
+ }
21950
+ if (error instanceof WorkspaceInstructionPolicyOnboardingProposalStaleError) {
21951
+ return context.json(
21952
+ WorkspaceInstructionPolicyOnboardingProposalStaleResponse.parse({
21953
+ code: error.code,
21954
+ message: error.message,
21955
+ currentHead: error.currentHead
21956
+ }),
21957
+ 409
21958
+ );
21959
+ }
21960
+ if (error instanceof WorkspaceInstructionPolicyOnboardingProposalConflictError) {
21961
+ return context.json(
21962
+ WorkspaceInstructionPolicyOnboardingProposalConflictResponse.parse({
21963
+ code: error.code,
21964
+ message: error.message,
21965
+ existingProposalId: error.existingProposalId,
21966
+ existingDraftRevisionId: error.existingDraftRevisionId
21967
+ }),
21968
+ 409
21969
+ );
21970
+ }
21927
21971
  if (error instanceof WorkspaceInstructionPolicyNotFoundError) {
21928
21972
  return context.json(
21929
21973
  { code: "WORKSPACE_INSTRUCTION_POLICY_NOT_FOUND", message: error.message },
@@ -22027,6 +22071,56 @@ function registerWorkspaceInstructionPolicyRoutes(app, deps) {
22027
22071
  return policyErrorResponse(context, error);
22028
22072
  }
22029
22073
  });
22074
+ app.get(`${base}/onboarding-proposals`, async (context) => {
22075
+ const workspaceId = context.req.param("workspaceId");
22076
+ await requireAccessGrant17(context, deps, workspaceId, "workspace:read");
22077
+ const parsed = WorkspaceInstructionPolicyOnboardingProposalListQuery.safeParse({
22078
+ limit: context.req.query("limit")
22079
+ });
22080
+ if (!parsed.success) {
22081
+ throw new HTTPException27(422, {
22082
+ message: "Invalid workspace instruction-policy onboarding-proposal query"
22083
+ });
22084
+ }
22085
+ return context.json(
22086
+ WorkspaceInstructionPolicyOnboardingProposalListResponse.parse(
22087
+ await listWorkspaceInstructionPolicyOnboardingProposals(deps.db, workspaceId, parsed.data)
22088
+ )
22089
+ );
22090
+ });
22091
+ app.post(`${base}/onboarding-proposals`, async (context) => {
22092
+ const workspaceId = context.req.param("workspaceId");
22093
+ const grant = await requireAccessGrant17(context, deps, workspaceId, "workspace:admin");
22094
+ assertBoundedActor(grant.subjectId);
22095
+ const request = await parseBody(
22096
+ context,
22097
+ CreateWorkspaceInstructionPolicyOnboardingProposalRequest
22098
+ );
22099
+ try {
22100
+ return context.json(
22101
+ WorkspaceInstructionPolicyOnboardingProposal.parse(
22102
+ await createWorkspaceInstructionPolicyOnboardingProposal(deps.db, {
22103
+ operationId: request.operationId ?? randomUUID(),
22104
+ accountId: grant.accountId,
22105
+ workspaceId,
22106
+ createdBySubjectId: grant.subjectId,
22107
+ kind: request.kind,
22108
+ scope: request.scope,
22109
+ roleKey: request.roleKey,
22110
+ content: request.content,
22111
+ sourceId: request.sourceId,
22112
+ sourceVersion: request.sourceVersion,
22113
+ confidenceBps: request.confidenceBps,
22114
+ expectedCurrentRevisionId: request.expectedCurrentRevisionId,
22115
+ expectedActivationVersion: request.expectedActivationVersion
22116
+ })
22117
+ ),
22118
+ 201
22119
+ );
22120
+ } catch (error) {
22121
+ return policyErrorResponse(context, error);
22122
+ }
22123
+ });
22030
22124
  app.get(`${base}/diff`, async (context) => {
22031
22125
  const workspaceId = context.req.param("workspaceId");
22032
22126
  await requireAccessGrant17(context, deps, workspaceId, "workspace:read");
@@ -25996,4 +26090,4 @@ export {
25996
26090
  withDefaultEnabledCapabilityMcpTools,
25997
26091
  workflowIdForSession2 as workflowIdForSession
25998
26092
  };
25999
- //# sourceMappingURL=chunk-AEVD7E2F.js.map
26093
+ //# sourceMappingURL=chunk-5EEC7Q6C.js.map