@lucern/mcp 0.3.0-alpha.2 → 0.3.0-alpha.3

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/gateway.js CHANGED
@@ -1890,6 +1890,40 @@ defineTable({
1890
1890
  { kind: "index", name: "by_tier_window_end", columns: ["tier", "windowEndMs"] }
1891
1891
  ]
1892
1892
  });
1893
+ defineTable({
1894
+ name: "oauthDeviceCodes",
1895
+ component: "mc",
1896
+ category: "identity",
1897
+ shape: z.object({
1898
+ "deviceCodeHash": z.string(),
1899
+ "userCode": z.string(),
1900
+ "clientId": z.string(),
1901
+ "scope": z.string(),
1902
+ "status": z.enum(["pending", "approved", "denied", "expired", "consumed"]),
1903
+ "expiresAt": z.number(),
1904
+ "intervalSeconds": z.number(),
1905
+ "lastPolledAt": z.number().optional(),
1906
+ "slowDownCount": z.number().optional(),
1907
+ "clerkUserId": z.string().optional(),
1908
+ "tenantId": idOf("tenants").optional(),
1909
+ "workspaceId": z.string().optional(),
1910
+ "principalId": z.string().optional(),
1911
+ "role": z.string().optional(),
1912
+ "scopes": z.array(z.string()).optional(),
1913
+ "sessionId": z.string().optional(),
1914
+ "approvedAt": z.number().optional(),
1915
+ "deniedAt": z.number().optional(),
1916
+ "consumedAt": z.number().optional(),
1917
+ "createdAt": z.number(),
1918
+ "updatedAt": z.number()
1919
+ }),
1920
+ indices: [
1921
+ { kind: "index", name: "by_deviceCodeHash", columns: ["deviceCodeHash"] },
1922
+ { kind: "index", name: "by_userCode", columns: ["userCode"] },
1923
+ { kind: "index", name: "by_status_expiresAt", columns: ["status", "expiresAt"] },
1924
+ { kind: "index", name: "by_sessionId", columns: ["sessionId"] }
1925
+ ]
1926
+ });
1893
1927
  defineTable({
1894
1928
  name: "servicePrincipalKeys",
1895
1929
  component: "mc",
@@ -11750,6 +11784,12 @@ var ServerCoreError = class extends Error {
11750
11784
  code;
11751
11785
  details;
11752
11786
  };
11787
+ var GatewayAuthError = class extends ServerCoreError {
11788
+ constructor(status, code, message, options) {
11789
+ super(status, code, message, options);
11790
+ this.name = "GatewayAuthError";
11791
+ }
11792
+ };
11753
11793
  var VALID_CODES = /* @__PURE__ */ new Set([
11754
11794
  "AUTH_REQUIRED",
11755
11795
  "AUTHENTICATION_REQUIRED",
@@ -16244,6 +16284,56 @@ function readString12(value) {
16244
16284
  function readNumber7(value) {
16245
16285
  return typeof value === "number" && Number.isFinite(value) ? value : void 0;
16246
16286
  }
16287
+ function normalizeLimit(value, fallback, max) {
16288
+ const parsed = readNumber7(value);
16289
+ if (parsed === void 0) {
16290
+ return fallback;
16291
+ }
16292
+ return Math.max(1, Math.min(Math.floor(parsed), max));
16293
+ }
16294
+ function matchesOptionalString(actual, expected) {
16295
+ if (!expected) {
16296
+ return true;
16297
+ }
16298
+ return readString12(actual) === expected;
16299
+ }
16300
+ function normalizeGraphNode2(row) {
16301
+ const record = asRecord10(row);
16302
+ const nodeId = readString12(record.nodeId) ?? readString12(record._id);
16303
+ const globalId = readString12(record.globalId);
16304
+ const text = readString12(record.text) ?? readString12(record.canonicalText);
16305
+ return {
16306
+ ...record,
16307
+ ...nodeId ? { nodeId } : {},
16308
+ ...globalId ? { globalId } : {},
16309
+ ...text ? { text, canonicalText: text } : {}
16310
+ };
16311
+ }
16312
+ function normalizeGraphEdge2(row) {
16313
+ const record = asRecord10(row);
16314
+ const edgeId = readString12(record.edgeId) ?? readString12(record._id);
16315
+ return {
16316
+ ...record,
16317
+ ...edgeId ? { edgeId } : {},
16318
+ fromNodeId: readString12(record.fromNodeId) ?? readString12(record.sourceGlobalId),
16319
+ toNodeId: readString12(record.toNodeId) ?? readString12(record.targetGlobalId)
16320
+ };
16321
+ }
16322
+ async function fetchGraphNodeByIdentifier(authContext, input) {
16323
+ if (input.nodeId) {
16324
+ const node = await authContext.convex.query(api.epistemicNodes.get, {
16325
+ nodeId: input.nodeId
16326
+ });
16327
+ return node ? normalizeGraphNode2(node) : null;
16328
+ }
16329
+ if (input.globalId) {
16330
+ const node = await authContext.convex.query(api.epistemicNodes.getByGlobalId, {
16331
+ globalId: input.globalId
16332
+ });
16333
+ return node ? normalizeGraphNode2(node) : null;
16334
+ }
16335
+ return null;
16336
+ }
16247
16337
  function inferRiskLevel(score, threshold) {
16248
16338
  if (score >= Math.max(threshold + 0.2, 0.9)) {
16249
16339
  return "critical";
@@ -16455,6 +16545,45 @@ function graphGapsFromGatewayAuth(authContext, input) {
16455
16545
  function graphFalsifyFromGatewayAuth(authContext, input) {
16456
16546
  return graphFalsify(createGatewayGraphPort(authContext), input);
16457
16547
  }
16548
+ async function listGraphNodesFromGatewayAuth(authContext, input) {
16549
+ if (input.nodeId || input.globalId) {
16550
+ const node = await fetchGraphNodeByIdentifier(authContext, input);
16551
+ if (!node) {
16552
+ return { items: [], nodes: [], total: 0 };
16553
+ }
16554
+ if (input.topicId && readString12(node.topicId) !== input.topicId) {
16555
+ return { items: [], nodes: [], total: 0 };
16556
+ }
16557
+ if (!matchesOptionalString(node.nodeType, input.nodeType)) {
16558
+ return { items: [], nodes: [], total: 0 };
16559
+ }
16560
+ return { items: [node], nodes: [node], total: 1 };
16561
+ }
16562
+ const topicId = readString12(input.topicId) ?? readString12(input.projectId);
16563
+ if (!topicId) {
16564
+ throw new Error("[graph] topicId is required to list graph nodes.");
16565
+ }
16566
+ const rows = await authContext.convex.query(api.epistemicNodes.getByTopic, {
16567
+ topicId,
16568
+ userId: authContext.userId,
16569
+ limit: normalizeLimit(input.limit, 250, 1e3)
16570
+ });
16571
+ const nodes = asRecordArray2(rows).map(normalizeGraphNode2).filter((node) => matchesOptionalString(node.nodeType, input.nodeType));
16572
+ return { items: nodes, nodes, total: nodes.length };
16573
+ }
16574
+ async function listGraphEdgesFromGatewayAuth(authContext, input) {
16575
+ const topicId = readString12(input.topicId) ?? readString12(input.projectId);
16576
+ if (!topicId) {
16577
+ throw new Error("[graph] topicId is required to list graph edges.");
16578
+ }
16579
+ const rows = await authContext.convex.query(api.epistemicEdges.getByTopic, {
16580
+ topicId,
16581
+ userId: authContext.userId,
16582
+ limit: normalizeLimit(input.limit, 500, 2e3)
16583
+ });
16584
+ const edges = asRecordArray2(rows).map(normalizeGraphEdge2).filter((edge) => matchesOptionalString(edge.edgeId, input.edgeId)).filter((edge) => matchesOptionalString(edge.fromNodeId, input.fromNodeId)).filter((edge) => matchesOptionalString(edge.toNodeId, input.toNodeId)).filter((edge) => matchesOptionalString(edge.edgeType, input.edgeType));
16585
+ return { items: edges, edges, total: edges.length };
16586
+ }
16458
16587
 
16459
16588
  // ../server-core/src/auth/gateway-claims.ts
16460
16589
  function lastDelegator(delegationChain) {
@@ -20454,6 +20583,44 @@ async function handleGraphNeighborhood(args) {
20454
20583
  );
20455
20584
  }
20456
20585
  }
20586
+ async function handleGraphNodeList(args) {
20587
+ try {
20588
+ const payload = await listGraphNodesFromGatewayAuth(
20589
+ args.authContext,
20590
+ args.query
20591
+ );
20592
+ return successResponse(payload, {
20593
+ correlationId: args.correlationId,
20594
+ policyTraceId: args.policyTraceId
20595
+ });
20596
+ } catch (error) {
20597
+ return handleGraphError(
20598
+ error,
20599
+ "Failed to list graph nodes.",
20600
+ args.correlationId,
20601
+ args.policyTraceId
20602
+ );
20603
+ }
20604
+ }
20605
+ async function handleGraphEdgeList(args) {
20606
+ try {
20607
+ const payload = await listGraphEdgesFromGatewayAuth(
20608
+ args.authContext,
20609
+ args.query
20610
+ );
20611
+ return successResponse(payload, {
20612
+ correlationId: args.correlationId,
20613
+ policyTraceId: args.policyTraceId
20614
+ });
20615
+ } catch (error) {
20616
+ return handleGraphError(
20617
+ error,
20618
+ "Failed to list graph edges.",
20619
+ args.correlationId,
20620
+ args.policyTraceId
20621
+ );
20622
+ }
20623
+ }
20457
20624
  async function handleGraphTraverse(args) {
20458
20625
  const body = asRecord20(args.body);
20459
20626
  if (!readString25(body.startNode)) {
@@ -20595,6 +20762,444 @@ async function handleGraphFalsify(args) {
20595
20762
  }
20596
20763
  }
20597
20764
 
20765
+ // ../server-core/src/graph-analysis.ts
20766
+ function cleanString(value) {
20767
+ if (typeof value !== "string") {
20768
+ return void 0;
20769
+ }
20770
+ const normalized = value.trim();
20771
+ return normalized.length > 0 ? normalized : void 0;
20772
+ }
20773
+ function cleanNumber(value) {
20774
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
20775
+ }
20776
+ function cleanStringArray(value) {
20777
+ if (!Array.isArray(value)) {
20778
+ return void 0;
20779
+ }
20780
+ const normalized = value.map((entry) => cleanString(entry)).filter((entry) => Boolean(entry));
20781
+ return normalized.length > 0 ? normalized : void 0;
20782
+ }
20783
+ function asRecord21(value) {
20784
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
20785
+ }
20786
+ function asRecordArray3(value) {
20787
+ return Array.isArray(value) ? value.filter(
20788
+ (entry) => Boolean(entry) && typeof entry === "object" && !Array.isArray(entry)
20789
+ ) : [];
20790
+ }
20791
+ function requireString4(value, label) {
20792
+ const normalized = cleanString(value);
20793
+ if (!normalized) {
20794
+ throw new Error(`${label} is required`);
20795
+ }
20796
+ return normalized;
20797
+ }
20798
+ function requireMatchingTenantScope(authContext, input) {
20799
+ const tenantId = requireString4(input.tenantId, "tenantId");
20800
+ const workspaceId = requireString4(input.workspaceId, "workspaceId");
20801
+ if (authContext.tenantId && authContext.tenantId !== tenantId) {
20802
+ throw new GatewayAuthError(
20803
+ 403,
20804
+ "FORBIDDEN",
20805
+ "Requested tenantId does not match the authenticated Lucern tenant context."
20806
+ );
20807
+ }
20808
+ if (authContext.workspaceId && authContext.workspaceId !== workspaceId) {
20809
+ throw new GatewayAuthError(
20810
+ 403,
20811
+ "FORBIDDEN",
20812
+ "Requested workspaceId does not match the authenticated Lucern workspace context."
20813
+ );
20814
+ }
20815
+ return { tenantId, workspaceId };
20816
+ }
20817
+ function readLimit(value) {
20818
+ const parsed = cleanNumber(value);
20819
+ if (parsed === void 0) {
20820
+ return void 0;
20821
+ }
20822
+ return Math.max(1, Math.min(Math.floor(parsed), 200));
20823
+ }
20824
+ function publicSuggestionStatus(status) {
20825
+ const normalized = cleanString(status);
20826
+ if (normalized === "pending") {
20827
+ return "open";
20828
+ }
20829
+ if (normalized === "declined") {
20830
+ return "dismissed";
20831
+ }
20832
+ return normalized;
20833
+ }
20834
+ function normalizeSuggestion(row) {
20835
+ return {
20836
+ ...row,
20837
+ suggestionId: cleanString(row.suggestionId) ?? cleanString(row.recommendationId),
20838
+ recommendationId: cleanString(row.recommendationId) ?? cleanString(row.suggestionId),
20839
+ status: publicSuggestionStatus(row.status)
20840
+ };
20841
+ }
20842
+ function normalizeRecommendation(row) {
20843
+ const suggestion = normalizeSuggestion(row);
20844
+ return {
20845
+ ...suggestion,
20846
+ recommendationId: cleanString(suggestion.recommendationId) ?? cleanString(suggestion.suggestionId)
20847
+ };
20848
+ }
20849
+ function normalizeNodeResult(row, input) {
20850
+ const metadata = asRecord21(row.metadata);
20851
+ const confidence = cleanNumber(row.confidence) ?? cleanNumber(metadata.confidence) ?? cleanNumber(row.baseRate);
20852
+ return {
20853
+ nodeId: cleanString(row.globalId) ?? cleanString(row.nodeId) ?? String(row._id ?? ""),
20854
+ globalId: cleanString(row.globalId),
20855
+ topicId: cleanString(row.topicId),
20856
+ sourceWorkspaceId: cleanString(row.workspaceId) ?? cleanString(metadata.workspaceId) ?? cleanString(input.workspaceId),
20857
+ publishedAt: cleanNumber(metadata.publishedAt),
20858
+ publishedByPrincipalId: cleanString(metadata.publishedByPrincipalId),
20859
+ visibility: cleanString(metadata.visibility) ?? "workspace",
20860
+ confidence: confidence ?? null,
20861
+ confidenceHistory: Array.isArray(metadata.confidenceHistory) ? metadata.confidenceHistory : void 0,
20862
+ provenance: {
20863
+ scope: cleanString(input.provenanceScope) ?? "own_workspace",
20864
+ sourceWorkspaceId: cleanString(metadata.sourceWorkspaceId) ?? cleanString(input.workspaceId),
20865
+ publishedAt: cleanNumber(metadata.publishedAt),
20866
+ publishedByPrincipalId: cleanString(metadata.publishedByPrincipalId),
20867
+ metadata: metadata.provenance
20868
+ },
20869
+ nodeType: cleanString(row.nodeType),
20870
+ text: cleanString(row.canonicalText) ?? cleanString(row.text) ?? cleanString(row.title),
20871
+ title: cleanString(row.title),
20872
+ metadata
20873
+ };
20874
+ }
20875
+ function filterNodeResults(rows, input) {
20876
+ const nodeTypes = new Set(cleanStringArray(input.nodeTypes) ?? []);
20877
+ const minConfidence = cleanNumber(input.minConfidence);
20878
+ return rows.map((row) => normalizeNodeResult(row, input)).filter((row) => {
20879
+ const nodeType = cleanString(row.nodeType);
20880
+ if (nodeTypes.size > 0 && (!nodeType || !nodeTypes.has(nodeType))) {
20881
+ return false;
20882
+ }
20883
+ if (minConfidence !== void 0 && (typeof row.confidence !== "number" || row.confidence < minConfidence)) {
20884
+ return false;
20885
+ }
20886
+ return true;
20887
+ });
20888
+ }
20889
+ async function saveGraphAnalysisFromGatewayAuth(authContext, input) {
20890
+ return await authContext.convex.mutation(
20891
+ api.graphAnalysisResults.saveAnalysis,
20892
+ {
20893
+ ...input,
20894
+ topicId: requireString4(input.topicId, "topicId"),
20895
+ workspaceId: requireString4(input.workspaceId, "workspaceId"),
20896
+ userId: authContext.userId
20897
+ }
20898
+ );
20899
+ }
20900
+ async function listGraphAnalysesFromGatewayAuth(authContext, input) {
20901
+ const analyses = await authContext.convex.query(
20902
+ api.graphAnalysisResults.listAnalyses,
20903
+ {
20904
+ topicId: requireString4(input.topicId, "topicId"),
20905
+ workspaceId: cleanString(input.workspaceId),
20906
+ analysisType: cleanString(input.analysisType),
20907
+ limit: readLimit(input.limit),
20908
+ userId: authContext.userId
20909
+ }
20910
+ );
20911
+ return { analyses: Array.isArray(analyses) ? analyses : [] };
20912
+ }
20913
+ async function getLatestGraphAnalysisFromGatewayAuth(authContext, input) {
20914
+ return await authContext.convex.query(
20915
+ api.graphAnalysisResults.getLatestAnalysis,
20916
+ {
20917
+ topicId: requireString4(input.topicId, "topicId"),
20918
+ workspaceId: cleanString(input.workspaceId),
20919
+ analysisType: cleanString(input.analysisType),
20920
+ userId: authContext.userId
20921
+ }
20922
+ );
20923
+ }
20924
+ async function saveGraphSuggestionsFromGatewayAuth(authContext, input) {
20925
+ const suggestions = await authContext.convex.mutation(
20926
+ api.graphAnalysisResults.saveSuggestions,
20927
+ {
20928
+ ...input,
20929
+ topicId: requireString4(input.topicId, "topicId"),
20930
+ workspaceId: requireString4(input.workspaceId, "workspaceId"),
20931
+ userId: authContext.userId
20932
+ }
20933
+ );
20934
+ return {
20935
+ suggestions: Array.isArray(suggestions) ? suggestions.map((row) => normalizeSuggestion(asRecord21(row))) : []
20936
+ };
20937
+ }
20938
+ async function listGraphSuggestionsFromGatewayAuth(authContext, input) {
20939
+ const suggestions = await authContext.convex.query(
20940
+ api.graphAnalysisResults.listSuggestions,
20941
+ {
20942
+ topicId: requireString4(input.topicId, "topicId"),
20943
+ workspaceId: cleanString(input.workspaceId),
20944
+ analysisId: cleanString(input.analysisId),
20945
+ findingId: cleanString(input.findingId),
20946
+ status: cleanString(input.status),
20947
+ limit: readLimit(input.limit),
20948
+ userId: authContext.userId
20949
+ }
20950
+ );
20951
+ return {
20952
+ suggestions: Array.isArray(suggestions) ? suggestions.map((row) => normalizeSuggestion(asRecord21(row))) : []
20953
+ };
20954
+ }
20955
+ async function updateGraphSuggestionStatusFromGatewayAuth(authContext, input) {
20956
+ const suggestion = await authContext.convex.mutation(
20957
+ api.graphAnalysisResults.updateSuggestionStatus,
20958
+ {
20959
+ suggestionId: requireString4(input.suggestionId, "suggestionId"),
20960
+ status: requireString4(input.status, "status"),
20961
+ rationale: cleanString(input.rationale),
20962
+ metadata: input.metadata,
20963
+ userId: authContext.userId
20964
+ }
20965
+ );
20966
+ return normalizeSuggestion(asRecord21(suggestion));
20967
+ }
20968
+ async function computeOrRequestGraphAnalysisFromGatewayAuth(authContext, input) {
20969
+ const topicId = requireString4(input.topicId, "topicId");
20970
+ const analysisType = cleanString(input.analysisType) ?? "structure_analysis";
20971
+ const analysis = await graphAnalyzeFromGatewayAuth(authContext, {
20972
+ topicId,
20973
+ metric: analysisType
20974
+ });
20975
+ const payload = asRecord21(analysis.payload);
20976
+ return {
20977
+ analysisId: `computed:${topicId}:${analysisType}`,
20978
+ topicId,
20979
+ workspaceId: requireString4(input.workspaceId, "workspaceId"),
20980
+ analysisType,
20981
+ healthScore: cleanNumber(payload.healthScore),
20982
+ findings: asRecordArray3(payload.findings),
20983
+ suggestions: [],
20984
+ sourceNodeIds: cleanStringArray(input.sourceNodeIds) ?? [],
20985
+ sourceEdgeIds: cleanStringArray(input.sourceEdgeIds) ?? [],
20986
+ detectorVersions: asRecord21(input.detectorVersions),
20987
+ metadata: asRecord21(input.metadata),
20988
+ createdAt: Date.now()
20989
+ };
20990
+ }
20991
+ async function listGraphRecommendationsFromGatewayAuth(authContext, input) {
20992
+ const { suggestions } = await listGraphSuggestionsFromGatewayAuth(authContext, input);
20993
+ return {
20994
+ recommendations: suggestions.map((row) => normalizeRecommendation(row))
20995
+ };
20996
+ }
20997
+ async function getGraphRecommendationFromGatewayAuth(authContext, recommendationId) {
20998
+ const recommendation = await authContext.convex.query(
20999
+ api.graphAnalysisResults.getSuggestion,
21000
+ {
21001
+ suggestionId: recommendationId,
21002
+ userId: authContext.userId
21003
+ }
21004
+ );
21005
+ return normalizeRecommendation(asRecord21(recommendation));
21006
+ }
21007
+ async function markGraphRecommendationStatusFromGatewayAuth(authContext, input) {
21008
+ const updated = await updateGraphSuggestionStatusFromGatewayAuth(authContext, {
21009
+ suggestionId: requireString4(input.recommendationId, "recommendationId"),
21010
+ status: requireString4(input.status, "status"),
21011
+ rationale: cleanString(input.rationale),
21012
+ metadata: input.metadata
21013
+ });
21014
+ return normalizeRecommendation(updated);
21015
+ }
21016
+ async function searchOrgGraphFromGatewayAuth(authContext, input) {
21017
+ requireMatchingTenantScope(authContext, input);
21018
+ const query = requireString4(input.query, "query");
21019
+ const rows = await authContext.convex.query(api.nodes.search, {
21020
+ searchQuery: query,
21021
+ limit: readLimit(input.limit)
21022
+ });
21023
+ return {
21024
+ results: filterNodeResults(Array.isArray(rows) ? rows : [], input)
21025
+ };
21026
+ }
21027
+ async function getOrgGraphNodeFromGatewayAuth(authContext, input) {
21028
+ requireMatchingTenantScope(authContext, input);
21029
+ const nodeId = cleanString(input.nodeId);
21030
+ const globalId = cleanString(input.globalId) ?? nodeId;
21031
+ if (!globalId) {
21032
+ throw new Error("nodeId or globalId is required");
21033
+ }
21034
+ const node = await authContext.convex.query(api.nodes.getByGlobalId, {
21035
+ globalId
21036
+ });
21037
+ return normalizeNodeResult(asRecord21(node), input);
21038
+ }
21039
+ async function listOrgGraphByProvenanceFromGatewayAuth(authContext, input) {
21040
+ requireMatchingTenantScope(authContext, input);
21041
+ requireString4(input.provenanceScope, "provenanceScope");
21042
+ const rows = await authContext.convex.query(api.nodes.listAll, {
21043
+ limit: readLimit(input.limit)
21044
+ });
21045
+ return {
21046
+ results: filterNodeResults(Array.isArray(rows) ? rows : [], input)
21047
+ };
21048
+ }
21049
+ async function listPublishedOrgGraphFromGatewayAuth(authContext, input) {
21050
+ return listOrgGraphByProvenanceFromGatewayAuth(authContext, {
21051
+ ...input,
21052
+ provenanceScope: "published"
21053
+ });
21054
+ }
21055
+
21056
+ // ../../apps/gateway/src/routes/graph-analysis.ts
21057
+ function asRecord22(value) {
21058
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
21059
+ }
21060
+ function routeError(error, fallbackMessage, correlationId, policyTraceId) {
21061
+ const resolved = resolveServerCoreError(error, fallbackMessage);
21062
+ return errorResponse({
21063
+ code: resolved.code,
21064
+ message: resolved.message,
21065
+ status: resolved.status,
21066
+ correlationId,
21067
+ policyTraceId,
21068
+ invariant: resolved.invariant,
21069
+ suggestion: resolved.suggestion,
21070
+ details: resolved.details
21071
+ });
21072
+ }
21073
+ async function withGraphRoute(args) {
21074
+ try {
21075
+ const payload = await args.run();
21076
+ return successResponse(payload, {
21077
+ correlationId: args.correlationId,
21078
+ policyTraceId: args.policyTraceId
21079
+ });
21080
+ } catch (error) {
21081
+ return routeError(
21082
+ error,
21083
+ args.fallbackMessage,
21084
+ args.correlationId,
21085
+ args.policyTraceId
21086
+ );
21087
+ }
21088
+ }
21089
+ async function handleGraphAnalysisSave(args) {
21090
+ return withGraphRoute({
21091
+ ...args,
21092
+ fallbackMessage: "Failed to save graph analysis.",
21093
+ run: () => saveGraphAnalysisFromGatewayAuth(args.authContext, asRecord22(args.body))
21094
+ });
21095
+ }
21096
+ async function handleGraphAnalysisList(args) {
21097
+ return withGraphRoute({
21098
+ ...args,
21099
+ fallbackMessage: "Failed to list graph analyses.",
21100
+ run: () => listGraphAnalysesFromGatewayAuth(args.authContext, args.query)
21101
+ });
21102
+ }
21103
+ async function handleGraphAnalysisLatest(args) {
21104
+ return withGraphRoute({
21105
+ ...args,
21106
+ fallbackMessage: "Failed to fetch latest graph analysis.",
21107
+ run: () => getLatestGraphAnalysisFromGatewayAuth(args.authContext, args.query)
21108
+ });
21109
+ }
21110
+ async function handleGraphAnalysisSaveSuggestions(args) {
21111
+ return withGraphRoute({
21112
+ ...args,
21113
+ fallbackMessage: "Failed to save graph suggestions.",
21114
+ run: () => saveGraphSuggestionsFromGatewayAuth(args.authContext, asRecord22(args.body))
21115
+ });
21116
+ }
21117
+ async function handleGraphAnalysisListSuggestions(args) {
21118
+ return withGraphRoute({
21119
+ ...args,
21120
+ fallbackMessage: "Failed to list graph suggestions.",
21121
+ run: () => listGraphSuggestionsFromGatewayAuth(args.authContext, args.query)
21122
+ });
21123
+ }
21124
+ async function handleGraphAnalysisUpdateSuggestion(args) {
21125
+ return withGraphRoute({
21126
+ ...args,
21127
+ fallbackMessage: "Failed to update graph suggestion.",
21128
+ run: () => updateGraphSuggestionStatusFromGatewayAuth(args.authContext, {
21129
+ ...asRecord22(args.body),
21130
+ suggestionId: args.suggestionId
21131
+ })
21132
+ });
21133
+ }
21134
+ async function handleGraphAnalysisCompute(args) {
21135
+ return withGraphRoute({
21136
+ ...args,
21137
+ fallbackMessage: "Failed to compute graph analysis.",
21138
+ run: () => computeOrRequestGraphAnalysisFromGatewayAuth(
21139
+ args.authContext,
21140
+ asRecord22(args.body)
21141
+ )
21142
+ });
21143
+ }
21144
+ async function handleGraphRecommendationsList(args) {
21145
+ return withGraphRoute({
21146
+ ...args,
21147
+ fallbackMessage: "Failed to list graph recommendations.",
21148
+ run: () => listGraphRecommendationsFromGatewayAuth(args.authContext, args.query)
21149
+ });
21150
+ }
21151
+ async function handleGraphRecommendationGet(args) {
21152
+ return withGraphRoute({
21153
+ ...args,
21154
+ fallbackMessage: "Failed to fetch graph recommendation.",
21155
+ run: () => getGraphRecommendationFromGatewayAuth(
21156
+ args.authContext,
21157
+ args.recommendationId
21158
+ )
21159
+ });
21160
+ }
21161
+ async function handleGraphRecommendationStatus(args) {
21162
+ return withGraphRoute({
21163
+ ...args,
21164
+ fallbackMessage: "Failed to update graph recommendation.",
21165
+ run: () => markGraphRecommendationStatusFromGatewayAuth(args.authContext, {
21166
+ ...asRecord22(args.body),
21167
+ recommendationId: args.recommendationId
21168
+ })
21169
+ });
21170
+ }
21171
+ async function handleOrgGraphSearch(args) {
21172
+ return withGraphRoute({
21173
+ ...args,
21174
+ fallbackMessage: "Failed to search organization graph.",
21175
+ run: () => searchOrgGraphFromGatewayAuth(args.authContext, asRecord22(args.body))
21176
+ });
21177
+ }
21178
+ async function handleOrgGraphNodeGet(args) {
21179
+ return withGraphRoute({
21180
+ ...args,
21181
+ fallbackMessage: "Failed to fetch organization graph node.",
21182
+ run: () => getOrgGraphNodeFromGatewayAuth(args.authContext, {
21183
+ ...args.query,
21184
+ nodeId: args.nodeId
21185
+ })
21186
+ });
21187
+ }
21188
+ async function handleOrgGraphByProvenance(args) {
21189
+ return withGraphRoute({
21190
+ ...args,
21191
+ fallbackMessage: "Failed to list organization graph by provenance.",
21192
+ run: () => listOrgGraphByProvenanceFromGatewayAuth(args.authContext, args.query)
21193
+ });
21194
+ }
21195
+ async function handleOrgGraphPublished(args) {
21196
+ return withGraphRoute({
21197
+ ...args,
21198
+ fallbackMessage: "Failed to list published organization graph nodes.",
21199
+ run: () => listPublishedOrgGraphFromGatewayAuth(args.authContext, args.query)
21200
+ });
21201
+ }
21202
+
20598
21203
  // ../../apps/gateway/src/routes/identity.ts
20599
21204
  async function handleIdentityWhoami(args) {
20600
21205
  try {
@@ -20622,7 +21227,7 @@ async function handleIdentityWhoami(args) {
20622
21227
  }
20623
21228
 
20624
21229
  // ../../apps/gateway/src/routes/ontologies.ts
20625
- function asRecord21(value) {
21230
+ function asRecord23(value) {
20626
21231
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
20627
21232
  }
20628
21233
  function readString26(value) {
@@ -20682,7 +21287,7 @@ async function handleOntologyGet(args) {
20682
21287
  }
20683
21288
  async function handleOntologyBind(args) {
20684
21289
  try {
20685
- const body = asRecord21(args.body);
21290
+ const body = asRecord23(args.body);
20686
21291
  const payload = await bindOntologyFromGatewayAuth(args.authContext, {
20687
21292
  ontologyId: args.ontologyId,
20688
21293
  topicId: readString26(body.topicId) ?? ""
@@ -20702,7 +21307,7 @@ async function handleOntologyBind(args) {
20702
21307
  }
20703
21308
  async function handleOntologyMatch(args) {
20704
21309
  try {
20705
- const body = asRecord21(args.body);
21310
+ const body = asRecord23(args.body);
20706
21311
  const payload = await matchOntologyFromGatewayAuth(args.authContext, {
20707
21312
  text: readString26(body.text) ?? "",
20708
21313
  topicId: readString26(body.topicId),
@@ -20725,7 +21330,7 @@ async function handleOntologyMatch(args) {
20725
21330
  }
20726
21331
 
20727
21332
  // ../../apps/gateway/src/routes/questions.ts
20728
- function asRecord22(value) {
21333
+ function asRecord24(value) {
20729
21334
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
20730
21335
  }
20731
21336
  function readString27(value) {
@@ -20747,13 +21352,13 @@ function readStringArray13(value) {
20747
21352
  }
20748
21353
  async function handleQuestionCreate(args) {
20749
21354
  try {
20750
- const body = asRecord22(args.body);
21355
+ const body = asRecord24(args.body);
20751
21356
  const payload = await createQuestionFromGatewayAuth(args.authContext, {
20752
21357
  topicId: readString27(body.topicId),
20753
21358
  text: readString27(body.text) ?? "",
20754
21359
  priority: readString27(body.priority),
20755
21360
  linkedBeliefId: readString27(body.linkedBeliefId),
20756
- metadata: asRecord22(body.metadata)
21361
+ metadata: asRecord24(body.metadata)
20757
21362
  });
20758
21363
  return successResponse(payload, {
20759
21364
  status: 201,
@@ -20800,7 +21405,7 @@ async function handleQuestionGet(args) {
20800
21405
  }
20801
21406
  async function handleQuestionArchive(args) {
20802
21407
  try {
20803
- const body = asRecord22(args.body);
21408
+ const body = asRecord24(args.body);
20804
21409
  const payload = await archiveQuestionFromGatewayAuth(args.authContext, {
20805
21410
  id: args.questionId,
20806
21411
  rationale: readString27(body.reason) ?? readString27(body.rationale)
@@ -20846,7 +21451,7 @@ async function handleQuestionList(args) {
20846
21451
  }
20847
21452
  async function handleQuestionAnswer(args) {
20848
21453
  try {
20849
- const body = asRecord22(args.body);
21454
+ const body = asRecord24(args.body);
20850
21455
  const payload = await answerQuestionFromGatewayAuth(args.authContext, {
20851
21456
  id: args.questionId,
20852
21457
  text: readString27(body.text) ?? "",
@@ -20898,7 +21503,7 @@ async function handleQuestionGetAnswer(args) {
20898
21503
  }
20899
21504
  async function handleQuestionRefine(args) {
20900
21505
  try {
20901
- const body = asRecord22(args.body);
21506
+ const body = asRecord24(args.body);
20902
21507
  const payload = await refineQuestionFromGatewayAuth(args.authContext, {
20903
21508
  id: args.questionId,
20904
21509
  text: readString27(body.text) ?? "",
@@ -20924,7 +21529,7 @@ async function handleQuestionRefine(args) {
20924
21529
  }
20925
21530
  async function handleQuestionUpdateStatus(args) {
20926
21531
  try {
20927
- const body = asRecord22(args.body);
21532
+ const body = asRecord24(args.body);
20928
21533
  const payload = await updateQuestionStatusFromGatewayAuth(args.authContext, {
20929
21534
  id: args.questionId,
20930
21535
  status: readString27(body.status) ?? "",
@@ -20953,8 +21558,8 @@ async function handleQuestionUpdateStatus(args) {
20953
21558
  }
20954
21559
  async function handleQuestionBatchCreate(args) {
20955
21560
  try {
20956
- const body = asRecord22(args.body);
20957
- const questions = Array.isArray(body.questions) ? body.questions.map((entry) => asRecord22(entry)).map((entry) => ({
21561
+ const body = asRecord24(args.body);
21562
+ const questions = Array.isArray(body.questions) ? body.questions.map((entry) => asRecord24(entry)).map((entry) => ({
20958
21563
  question: readString27(entry.question) ?? readString27(entry.text) ?? "",
20959
21564
  category: readString27(entry.category),
20960
21565
  priority: readString27(entry.priority),
@@ -20991,7 +21596,7 @@ async function handleQuestionBatchCreate(args) {
20991
21596
  }
20992
21597
  async function handleQuestionAdd(args) {
20993
21598
  try {
20994
- const body = asRecord22(args.body);
21599
+ const body = asRecord24(args.body);
20995
21600
  const payload = await addQuestionFromGatewayAuth(args.authContext, {
20996
21601
  topicId: readString27(body.topicId),
20997
21602
  question: readString27(body.question) ?? readString27(body.text),
@@ -21003,7 +21608,7 @@ async function handleQuestionAdd(args) {
21003
21608
  chatId: readString27(body.chatId),
21004
21609
  importance: readNumber18(body.importance),
21005
21610
  epistemicUnlock: readString27(body.epistemicUnlock),
21006
- metadata: asRecord22(body.metadata),
21611
+ metadata: asRecord24(body.metadata),
21007
21612
  questionType: readString27(body.questionType)
21008
21613
  });
21009
21614
  return successResponse(payload, {
@@ -21027,7 +21632,7 @@ async function handleQuestionAdd(args) {
21027
21632
  }
21028
21633
  async function handleQuestionUpdatePriority(args) {
21029
21634
  try {
21030
- const body = asRecord22(args.body);
21635
+ const body = asRecord24(args.body);
21031
21636
  const payload = await updateQuestionPriorityFromGatewayAuth(
21032
21637
  args.authContext,
21033
21638
  {
@@ -21058,7 +21663,7 @@ async function handleQuestionUpdatePriority(args) {
21058
21663
  }
21059
21664
  async function handleQuestionAdvanceToConviction(args) {
21060
21665
  try {
21061
- const body = asRecord22(args.body);
21666
+ const body = asRecord24(args.body);
21062
21667
  const payload = await advanceQuestionToConvictionFromGatewayAuth(
21063
21668
  args.authContext,
21064
21669
  {
@@ -21089,7 +21694,7 @@ async function handleQuestionAdvanceToConviction(args) {
21089
21694
  }
21090
21695
  async function handleQuestionUpdateConviction(args) {
21091
21696
  try {
21092
- const body = asRecord22(args.body);
21697
+ const body = asRecord24(args.body);
21093
21698
  const payload = await updateQuestionConvictionFromGatewayAuth(
21094
21699
  args.authContext,
21095
21700
  {
@@ -21122,7 +21727,7 @@ async function handleQuestionUpdateConviction(args) {
21122
21727
  }
21123
21728
  async function handleQuestionFinalizeConviction(args) {
21124
21729
  try {
21125
- const body = asRecord22(args.body);
21730
+ const body = asRecord24(args.body);
21126
21731
  const payload = await finalizeQuestionConvictionFromGatewayAuth(
21127
21732
  args.authContext,
21128
21733
  {
@@ -21157,7 +21762,7 @@ async function handleQuestionFinalizeConviction(args) {
21157
21762
  }
21158
21763
  async function handleQuestionUpdate(args) {
21159
21764
  try {
21160
- const body = asRecord22(args.body);
21765
+ const body = asRecord24(args.body);
21161
21766
  const payload = await updateQuestionFromGatewayAuth(args.authContext, {
21162
21767
  questionId: readString27(body.questionId) ?? readString27(body.id) ?? readString27(body.nodeId),
21163
21768
  question: readString27(body.question) ?? readString27(body.text),
@@ -21184,7 +21789,7 @@ async function handleQuestionUpdate(args) {
21184
21789
  }
21185
21790
  async function handleQuestionDelete(args) {
21186
21791
  try {
21187
- const body = asRecord22(args.body);
21792
+ const body = asRecord24(args.body);
21188
21793
  const payload = await deleteQuestionFromGatewayAuth(args.authContext, {
21189
21794
  questionId: readString27(body.questionId) ?? readString27(body.id) ?? readString27(body.nodeId)
21190
21795
  });
@@ -21208,7 +21813,7 @@ async function handleQuestionDelete(args) {
21208
21813
  }
21209
21814
 
21210
21815
  // ../../apps/gateway/src/routes/search.ts
21211
- function asRecord23(value) {
21816
+ function asRecord25(value) {
21212
21817
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
21213
21818
  }
21214
21819
  function readString28(value) {
@@ -21229,7 +21834,7 @@ function readStringArray14(value) {
21229
21834
  return items.length > 0 ? items : void 0;
21230
21835
  }
21231
21836
  async function handleSearchResources(args) {
21232
- const body = asRecord23(args.body);
21837
+ const body = asRecord25(args.body);
21233
21838
  const q = readString28(body.q) ?? readString28(body.query);
21234
21839
  const topicId = readString28(body.topicId) ?? readString28(body.projectId);
21235
21840
  if (!q) {
@@ -21280,7 +21885,7 @@ async function handleSearchResources(args) {
21280
21885
  }
21281
21886
 
21282
21887
  // ../../apps/gateway/src/routes/sources.ts
21283
- function asRecord24(value) {
21888
+ function asRecord26(value) {
21284
21889
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
21285
21890
  }
21286
21891
  function readString29(value) {
@@ -21308,7 +21913,7 @@ function handleSourcesError(error, fallbackMessage, correlationId, policyTraceId
21308
21913
  }
21309
21914
  async function handleSourceUpsert(args) {
21310
21915
  try {
21311
- const body = asRecord24(args.body);
21916
+ const body = asRecord26(args.body);
21312
21917
  const payload = await upsertSourceFromGatewayAuth(args.authContext, {
21313
21918
  url: readString29(body.url),
21314
21919
  sha: readString29(body.sha),
@@ -21316,7 +21921,7 @@ async function handleSourceUpsert(args) {
21316
21921
  title: readString29(body.title),
21317
21922
  capturedAt: readNumber20(body.capturedAt),
21318
21923
  topicId: readString29(body.topicId),
21319
- metadata: asRecord24(body.metadata)
21924
+ metadata: asRecord26(body.metadata)
21320
21925
  });
21321
21926
  return successResponse(payload, {
21322
21927
  status: 201,
@@ -21350,7 +21955,7 @@ async function handleSourceGet(args) {
21350
21955
  }
21351
21956
 
21352
21957
  // ../../apps/gateway/src/routes/tasks.ts
21353
- function asRecord25(value) {
21958
+ function asRecord27(value) {
21354
21959
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
21355
21960
  }
21356
21961
  function readString30(value) {
@@ -21375,7 +21980,7 @@ function handleTasksError(error, fallbackMessage, correlationId, policyTraceId)
21375
21980
  }
21376
21981
  async function handleTaskCreate(args) {
21377
21982
  try {
21378
- const body = asRecord25(args.body);
21983
+ const body = asRecord27(args.body);
21379
21984
  const payload = await createTaskFromGatewayAuth(args.authContext, {
21380
21985
  topicId: readString30(body.topicId),
21381
21986
  title: readString30(body.title) ?? "",
@@ -21419,7 +22024,7 @@ async function handleTaskList(args) {
21419
22024
  }
21420
22025
  async function handleTaskUpdate(args) {
21421
22026
  try {
21422
- const body = asRecord25(args.body);
22027
+ const body = asRecord27(args.body);
21423
22028
  const payload = await updateTaskFromGatewayAuth(args.authContext, {
21424
22029
  id: args.taskId,
21425
22030
  title: readString30(body.title),
@@ -21446,7 +22051,7 @@ async function handleTaskUpdate(args) {
21446
22051
  }
21447
22052
  async function handleTaskComplete(args) {
21448
22053
  try {
21449
- const body = asRecord25(args.body);
22054
+ const body = asRecord27(args.body);
21450
22055
  const payload = await completeTaskFromGatewayAuth(args.authContext, {
21451
22056
  id: args.taskId,
21452
22057
  outputSummary: readString30(body.outputSummary)
@@ -21466,7 +22071,7 @@ async function handleTaskComplete(args) {
21466
22071
  }
21467
22072
 
21468
22073
  // ../../apps/gateway/src/routes/topics.ts
21469
- function asRecord26(value) {
22074
+ function asRecord28(value) {
21470
22075
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
21471
22076
  }
21472
22077
  function readString31(value) {
@@ -21504,7 +22109,7 @@ function handleTopicsError(error, fallbackMessage, correlationId, policyTraceId)
21504
22109
  }
21505
22110
  async function handleTopicCreate(args) {
21506
22111
  try {
21507
- const body = asRecord26(args.body);
22112
+ const body = asRecord28(args.body);
21508
22113
  const payload = await createTopicFromGatewayAuth(args.authContext, {
21509
22114
  name: readString31(body.name) ?? "",
21510
22115
  description: readString31(body.description),
@@ -21532,7 +22137,7 @@ async function handleTopicCreate(args) {
21532
22137
  }
21533
22138
  async function handleTopicUpdate(args) {
21534
22139
  try {
21535
- const body = asRecord26(args.body);
22140
+ const body = asRecord28(args.body);
21536
22141
  const payload = await updateTopicFromGatewayAuth(args.authContext, {
21537
22142
  id: args.topicId,
21538
22143
  name: readString31(body.name),
@@ -21629,7 +22234,7 @@ async function handleTopicCoverage(args) {
21629
22234
  }
21630
22235
  async function handleTopicRemove(args) {
21631
22236
  try {
21632
- const body = asRecord26(args.body);
22237
+ const body = asRecord28(args.body);
21633
22238
  const payload = await removeTopicFromGatewayAuth(args.authContext, {
21634
22239
  id: readString31(body.id) ?? readString31(body.topicId) ?? ""
21635
22240
  });
@@ -21648,8 +22253,8 @@ async function handleTopicRemove(args) {
21648
22253
  }
21649
22254
  async function handleTopicBulkCreate(args) {
21650
22255
  try {
21651
- const body = asRecord26(args.body);
21652
- const topics2 = Array.isArray(body.topics) ? body.topics.map((entry) => asRecord26(entry)).map((entry) => ({
22256
+ const body = asRecord28(args.body);
22257
+ const topics2 = Array.isArray(body.topics) ? body.topics.map((entry) => asRecord28(entry)).map((entry) => ({
21653
22258
  globalId: readString31(entry.globalId) ?? "",
21654
22259
  name: readString31(entry.name) ?? "",
21655
22260
  description: readString31(entry.description),
@@ -21662,7 +22267,7 @@ async function handleTopicBulkCreate(args) {
21662
22267
  graphScopeProjectId: readString31(entry.graphScopeProjectId),
21663
22268
  status: readString31(entry.status) ?? "active",
21664
22269
  visibility: readString31(entry.visibility),
21665
- metadata: asRecord26(entry.metadata),
22270
+ metadata: asRecord28(entry.metadata),
21666
22271
  createdBy: readString31(entry.createdBy)
21667
22272
  })) : [];
21668
22273
  const payload = await bulkCreateTopicsFromGatewayAuth(args.authContext, {
@@ -21684,7 +22289,7 @@ async function handleTopicBulkCreate(args) {
21684
22289
  }
21685
22290
 
21686
22291
  // ../../apps/gateway/src/routes/webhooks.ts
21687
- function asRecord27(value) {
22292
+ function asRecord29(value) {
21688
22293
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
21689
22294
  }
21690
22295
  function readString32(value) {
@@ -21719,7 +22324,7 @@ function handleWebhooksError(error, fallbackMessage, correlationId, policyTraceI
21719
22324
  }
21720
22325
  async function handleWebhookCreate(args) {
21721
22326
  try {
21722
- const body = asRecord27(args.body);
22327
+ const body = asRecord29(args.body);
21723
22328
  const payload = await args.authContext.convex.mutation(
21724
22329
  "events:createWebhook",
21725
22330
  {
@@ -21789,7 +22394,7 @@ async function handleWebhookGet(args) {
21789
22394
  }
21790
22395
  async function handleWebhookUpdate(args) {
21791
22396
  try {
21792
- const body = asRecord27(args.body);
22397
+ const body = asRecord29(args.body);
21793
22398
  const payload = await args.authContext.convex.mutation(
21794
22399
  "events:updateWebhook",
21795
22400
  {
@@ -21843,7 +22448,7 @@ async function handleWebhookDelete(args) {
21843
22448
  }
21844
22449
  async function handleWebhookTest(args) {
21845
22450
  try {
21846
- const body = asRecord27(args.body);
22451
+ const body = asRecord29(args.body);
21847
22452
  const payload = await args.authContext.convex.action("events:testWebhook", {
21848
22453
  webhookId: args.webhookId,
21849
22454
  tenantId: args.authContext.tenantId,
@@ -21918,7 +22523,7 @@ async function handleWebhookHealth(args) {
21918
22523
  }
21919
22524
 
21920
22525
  // ../../apps/gateway/src/routes/worktrees.ts
21921
- function asRecord28(value) {
22526
+ function asRecord30(value) {
21922
22527
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
21923
22528
  }
21924
22529
  function readString33(value) {
@@ -21953,7 +22558,7 @@ function handleWorktreesError(error, fallbackMessage, correlationId, policyTrace
21953
22558
  }
21954
22559
  async function handleWorktreeCreate(args) {
21955
22560
  try {
21956
- const body = asRecord28(args.body);
22561
+ const body = asRecord30(args.body);
21957
22562
  const payload = await createWorktreeFromGatewayAuth(args.authContext, {
21958
22563
  title: readString33(body.title) ?? "",
21959
22564
  topicId: readString33(body.topicId ?? body.projectId) ?? "",
@@ -22074,7 +22679,7 @@ async function handleWorktreeActivate(args) {
22074
22679
  }
22075
22680
  async function handleWorktreeUpdate(args) {
22076
22681
  try {
22077
- const body = asRecord28(args.body);
22682
+ const body = asRecord30(args.body);
22078
22683
  const payload = await updateWorktreeFromGatewayAuth(args.authContext, {
22079
22684
  id: args.worktreeId,
22080
22685
  objective: readString33(body.objective),
@@ -22111,9 +22716,9 @@ async function handleWorktreeUpdate(args) {
22111
22716
  }
22112
22717
  async function handleWorktreeMerge(args) {
22113
22718
  try {
22114
- const body = asRecord28(args.body);
22719
+ const body = asRecord30(args.body);
22115
22720
  const rawOutcomes = Array.isArray(body.outcomes) ? body.outcomes : [];
22116
- const outcomes = rawOutcomes.map((entry) => asRecord28(entry)).map((entry) => ({
22721
+ const outcomes = rawOutcomes.map((entry) => asRecord30(entry)).map((entry) => ({
22117
22722
  beliefId: readString33(entry.beliefId) ?? "",
22118
22723
  confidence: readNumber22(entry.confidence) ?? Number.NaN,
22119
22724
  rationale: readString33(entry.rationale) ?? ""
@@ -22138,7 +22743,7 @@ async function handleWorktreeMerge(args) {
22138
22743
  }
22139
22744
  async function handleWorktreeUpdateTargets(args) {
22140
22745
  try {
22141
- const body = asRecord28(args.body);
22746
+ const body = asRecord30(args.body);
22142
22747
  const payload = await updateWorktreeTargetsFromGatewayAuth(
22143
22748
  args.authContext,
22144
22749
  {
@@ -22164,7 +22769,7 @@ async function handleWorktreeUpdateTargets(args) {
22164
22769
  }
22165
22770
  async function handleWorktreeComplete(args) {
22166
22771
  try {
22167
- const body = asRecord28(args.body);
22772
+ const body = asRecord30(args.body);
22168
22773
  const payload = await completeWorktreeRecordFromGatewayAuth(
22169
22774
  args.authContext,
22170
22775
  {
@@ -22189,7 +22794,7 @@ async function handleWorktreeComplete(args) {
22189
22794
  }
22190
22795
  async function handleWorktreeAdvancePhase(args) {
22191
22796
  try {
22192
- const body = asRecord28(args.body);
22797
+ const body = asRecord30(args.body);
22193
22798
  const payload = await advanceWorktreePhaseFromGatewayAuth(args.authContext, {
22194
22799
  worktreeId: readString33(body.worktreeId) ?? ""
22195
22800
  });
@@ -22208,7 +22813,7 @@ async function handleWorktreeAdvancePhase(args) {
22208
22813
  }
22209
22814
  async function handleWorktreeSetPhase(args) {
22210
22815
  try {
22211
- const body = asRecord28(args.body);
22816
+ const body = asRecord30(args.body);
22212
22817
  const payload = await setWorktreePhaseFromGatewayAuth(args.authContext, {
22213
22818
  worktreeId: readString33(body.worktreeId) ?? "",
22214
22819
  phase: readString33(body.phase) ?? ""
@@ -22228,12 +22833,12 @@ async function handleWorktreeSetPhase(args) {
22228
22833
  }
22229
22834
  async function handleWorktreePatchState(args) {
22230
22835
  try {
22231
- const body = asRecord28(args.body);
22836
+ const body = asRecord30(args.body);
22232
22837
  const payload = await patchWorktreeStateFromGatewayAuth(
22233
22838
  args.authContext,
22234
22839
  {
22235
22840
  worktreeId: readString33(body.worktreeId) ?? "",
22236
- patch: asRecord28(body.patch)
22841
+ patch: asRecord30(body.patch)
22237
22842
  }
22238
22843
  );
22239
22844
  return successResponse(payload, {
@@ -22251,7 +22856,7 @@ async function handleWorktreePatchState(args) {
22251
22856
  }
22252
22857
  async function handleWorktreeBulkCreate(args) {
22253
22858
  try {
22254
- const body = asRecord28(args.body);
22859
+ const body = asRecord30(args.body);
22255
22860
  const payload = await bulkCreateWorktreesFromGatewayAuth(args.authContext, {
22256
22861
  worktrees: Array.isArray(body.worktrees) ? body.worktrees : []
22257
22862
  });
@@ -22270,6 +22875,6 @@ async function handleWorktreeBulkCreate(args) {
22270
22875
  }
22271
22876
  }
22272
22877
 
22273
- export { handleBeliefArchive, handleBeliefBatchUpdateCriticality, handleBeliefBisect, handleBeliefConfidenceHistory, handleBeliefCreate, handleBeliefCreateContract, handleBeliefFork, handleBeliefGet, handleBeliefLineage, handleBeliefLink, handleBeliefList, handleBeliefReassignTopic, handleBeliefRefine, handleBeliefRelationships, handleBeliefUnlinkEvidence, handleBeliefUpdateConfidence, handleBeliefUpdateCriticality, handleBeliefUpdateRationale, handleBeliefUpdateStatus, handleContradictionFlag, handleContradictionGet, handleContradictionList, handleEdgeBatchCreate, handleEdgeCreate, handleEdgeDelete, handleEdgeList, handleEdgeRemove, handleEdgeTraverse, handleEdgeUpdate, handleEdgesRemoveBetween, handleEventsList, handleEventsReplay, handleEvidenceClassify, handleEvidenceClassifyBatch, handleEvidenceCreate, handleEvidenceFlagIncorrect, handleEvidenceGet, handleEvidenceLink, handleEvidenceList, handleEvidenceRemove, handleEvidenceSearch, handleEvidenceUpdate, handleEvidenceUpdateStatus, handleEvidenceUpdateVerificationStatus, handleGraphAnalyze, handleGraphBias, handleGraphFalsify, handleGraphGaps, handleGraphNeighborhood, handleGraphTraverse, handleIdentityWhoami, handleOntologyBind, handleOntologyGet, handleOntologyList, handleOntologyMatch, handleQuestionAdd, handleQuestionAdvanceToConviction, handleQuestionAnswer, handleQuestionArchive, handleQuestionBatchCreate, handleQuestionCreate, handleQuestionDelete, handleQuestionFinalizeConviction, handleQuestionGet, handleQuestionGetAnswer, handleQuestionList, handleQuestionRefine, handleQuestionUpdate, handleQuestionUpdateConviction, handleQuestionUpdatePriority, handleQuestionUpdateStatus, handleSearchResources, handleSourceGet, handleSourceUpsert, handleTaskComplete, handleTaskCreate, handleTaskList, handleTaskUpdate, handleTopicBulkCreate, handleTopicCoverage, handleTopicCreate, handleTopicGet, handleTopicList, handleTopicRemove, handleTopicTree, handleTopicUpdate, handleWebhookCreate, handleWebhookDelete, handleWebhookDeliveries, handleWebhookGet, handleWebhookHealth, handleWebhookList, handleWebhookTest, handleWebhookUpdate, handleWorktreeActivate, handleWorktreeAdvancePhase, handleWorktreeBulkCreate, handleWorktreeComplete, handleWorktreeCreate, handleWorktreeList, handleWorktreeListAll, handleWorktreeListCampaigns, handleWorktreeMerge, handleWorktreePatchState, handleWorktreeSetPhase, handleWorktreeUpdate, handleWorktreeUpdateTargets };
22878
+ export { handleBeliefArchive, handleBeliefBatchUpdateCriticality, handleBeliefBisect, handleBeliefConfidenceHistory, handleBeliefCreate, handleBeliefCreateContract, handleBeliefFork, handleBeliefGet, handleBeliefLineage, handleBeliefLink, handleBeliefList, handleBeliefReassignTopic, handleBeliefRefine, handleBeliefRelationships, handleBeliefUnlinkEvidence, handleBeliefUpdateConfidence, handleBeliefUpdateCriticality, handleBeliefUpdateRationale, handleBeliefUpdateStatus, handleContradictionFlag, handleContradictionGet, handleContradictionList, handleEdgeBatchCreate, handleEdgeCreate, handleEdgeDelete, handleEdgeList, handleEdgeRemove, handleEdgeTraverse, handleEdgeUpdate, handleEdgesRemoveBetween, handleEventsList, handleEventsReplay, handleEvidenceClassify, handleEvidenceClassifyBatch, handleEvidenceCreate, handleEvidenceFlagIncorrect, handleEvidenceGet, handleEvidenceLink, handleEvidenceList, handleEvidenceRemove, handleEvidenceSearch, handleEvidenceUpdate, handleEvidenceUpdateStatus, handleEvidenceUpdateVerificationStatus, handleGraphAnalysisCompute, handleGraphAnalysisLatest, handleGraphAnalysisList, handleGraphAnalysisListSuggestions, handleGraphAnalysisSave, handleGraphAnalysisSaveSuggestions, handleGraphAnalysisUpdateSuggestion, handleGraphAnalyze, handleGraphBias, handleGraphEdgeList, handleGraphFalsify, handleGraphGaps, handleGraphNeighborhood, handleGraphNodeList, handleGraphRecommendationGet, handleGraphRecommendationStatus, handleGraphRecommendationsList, handleGraphTraverse, handleIdentityWhoami, handleOntologyBind, handleOntologyGet, handleOntologyList, handleOntologyMatch, handleOrgGraphByProvenance, handleOrgGraphNodeGet, handleOrgGraphPublished, handleOrgGraphSearch, handleQuestionAdd, handleQuestionAdvanceToConviction, handleQuestionAnswer, handleQuestionArchive, handleQuestionBatchCreate, handleQuestionCreate, handleQuestionDelete, handleQuestionFinalizeConviction, handleQuestionGet, handleQuestionGetAnswer, handleQuestionList, handleQuestionRefine, handleQuestionUpdate, handleQuestionUpdateConviction, handleQuestionUpdatePriority, handleQuestionUpdateStatus, handleSearchResources, handleSourceGet, handleSourceUpsert, handleTaskComplete, handleTaskCreate, handleTaskList, handleTaskUpdate, handleTopicBulkCreate, handleTopicCoverage, handleTopicCreate, handleTopicGet, handleTopicList, handleTopicRemove, handleTopicTree, handleTopicUpdate, handleWebhookCreate, handleWebhookDelete, handleWebhookDeliveries, handleWebhookGet, handleWebhookHealth, handleWebhookList, handleWebhookTest, handleWebhookUpdate, handleWorktreeActivate, handleWorktreeAdvancePhase, handleWorktreeBulkCreate, handleWorktreeComplete, handleWorktreeCreate, handleWorktreeList, handleWorktreeListAll, handleWorktreeListCampaigns, handleWorktreeMerge, handleWorktreePatchState, handleWorktreeSetPhase, handleWorktreeUpdate, handleWorktreeUpdateTargets };
22274
22879
  //# sourceMappingURL=gateway.js.map
22275
22880
  //# sourceMappingURL=gateway.js.map