@lucern/mcp 0.3.0-alpha.11 → 0.3.0-alpha.12
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/cli.js +53 -3
- package/dist/cli.js.map +1 -1
- package/dist/gateway.d.ts +17 -1
- package/dist/gateway.js +385 -214
- package/dist/gateway.js.map +1 -1
- package/dist/hosted-route.js +53 -3
- package/dist/hosted-route.js.map +1 -1
- package/dist/index.js +53 -3
- package/dist/index.js.map +1 -1
- package/dist/runtime.js +3 -1
- package/dist/runtime.js.map +1 -1
- package/package.json +6 -6
package/dist/gateway.js
CHANGED
|
@@ -2,6 +2,8 @@ import { z } from 'zod';
|
|
|
2
2
|
import { v } from 'convex/values';
|
|
3
3
|
import { basename, extname } from 'path';
|
|
4
4
|
import { randomUUID } from 'crypto';
|
|
5
|
+
import { anyApi } from 'convex/server';
|
|
6
|
+
import { ConvexHttpClient } from 'convex/browser';
|
|
5
7
|
|
|
6
8
|
// ../contracts/src/types/reasoning-method.ts
|
|
7
9
|
var REASONING_METHODS = [
|
|
@@ -4328,7 +4330,9 @@ var permitObjectType = z.enum([
|
|
|
4328
4330
|
"group",
|
|
4329
4331
|
"resource_instance",
|
|
4330
4332
|
"relationship_tuple",
|
|
4331
|
-
"role_assignment"
|
|
4333
|
+
"role_assignment",
|
|
4334
|
+
"attribute_binding",
|
|
4335
|
+
"policy_bundle"
|
|
4332
4336
|
]);
|
|
4333
4337
|
var permitOutboxOperation = z.enum([
|
|
4334
4338
|
"upsert",
|
|
@@ -27032,11 +27036,178 @@ async function handleOntologyMatch(args) {
|
|
|
27032
27036
|
}
|
|
27033
27037
|
}
|
|
27034
27038
|
|
|
27035
|
-
//
|
|
27039
|
+
// ../server-core/src/auth/credentials.ts
|
|
27040
|
+
function parseAuthorizationBearer(value) {
|
|
27041
|
+
if (!value) return null;
|
|
27042
|
+
const [scheme, token] = value.trim().split(/\s+/, 2);
|
|
27043
|
+
if (!scheme || !token) return null;
|
|
27044
|
+
if (scheme.toLowerCase() !== "bearer") return null;
|
|
27045
|
+
return token.trim() || null;
|
|
27046
|
+
}
|
|
27047
|
+
|
|
27048
|
+
// ../../apps/gateway/src/routes/permit-webhook.ts
|
|
27049
|
+
var mcApi = anyApi;
|
|
27050
|
+
var mcClientCache = {
|
|
27051
|
+
value: null
|
|
27052
|
+
};
|
|
27053
|
+
function readString27(value) {
|
|
27054
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
27055
|
+
}
|
|
27036
27056
|
function asRecord25(value) {
|
|
27037
27057
|
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
27038
27058
|
}
|
|
27039
|
-
function
|
|
27059
|
+
function readSecret(env = process.env) {
|
|
27060
|
+
return readString27(env.LUCERN_PERMIT_WEBHOOK_SECRET) ?? readString27(env.PERMIT_WEBHOOK_SECRET);
|
|
27061
|
+
}
|
|
27062
|
+
function isPermitWebhookAuthorized(args) {
|
|
27063
|
+
const expected = readSecret(args.env);
|
|
27064
|
+
if (!expected) {
|
|
27065
|
+
return false;
|
|
27066
|
+
}
|
|
27067
|
+
const bearer = parseAuthorizationBearer(args.headers.get("authorization"));
|
|
27068
|
+
const headerSecret = readString27(
|
|
27069
|
+
args.headers.get("x-lucern-permit-webhook-secret")
|
|
27070
|
+
);
|
|
27071
|
+
return bearer === expected || headerSecret === expected;
|
|
27072
|
+
}
|
|
27073
|
+
function readTenantKeyFromValue(value) {
|
|
27074
|
+
if (typeof value === "string" && value.trim()) {
|
|
27075
|
+
return value.trim();
|
|
27076
|
+
}
|
|
27077
|
+
const record = asRecord25(value);
|
|
27078
|
+
return readString27(record.key) ?? readString27(record.tenant) ?? readString27(record.tenantKey) ?? readString27(record.tenant_id);
|
|
27079
|
+
}
|
|
27080
|
+
function extractPermitWebhookTenantKeys(body) {
|
|
27081
|
+
const record = asRecord25(body);
|
|
27082
|
+
const candidates = [
|
|
27083
|
+
record.tenant,
|
|
27084
|
+
record.tenantKey,
|
|
27085
|
+
record.tenant_id,
|
|
27086
|
+
asRecord25(record.data).tenant,
|
|
27087
|
+
asRecord25(record.data).tenantKey,
|
|
27088
|
+
asRecord25(record.data).tenant_id,
|
|
27089
|
+
asRecord25(record.object).tenant,
|
|
27090
|
+
asRecord25(record.object).tenantKey,
|
|
27091
|
+
asRecord25(record.object).tenant_id,
|
|
27092
|
+
asRecord25(record.resource_instance).tenant
|
|
27093
|
+
];
|
|
27094
|
+
const tenantKeys = candidates.map(readTenantKeyFromValue).filter((entry) => Boolean(entry));
|
|
27095
|
+
return [...new Set(tenantKeys)];
|
|
27096
|
+
}
|
|
27097
|
+
function summarizePermitWebhookEvent(body) {
|
|
27098
|
+
const record = asRecord25(body);
|
|
27099
|
+
return {
|
|
27100
|
+
type: readString27(record.type) ?? readString27(record.event) ?? "permit.webhook",
|
|
27101
|
+
id: readString27(record.id) ?? readString27(record.event_id),
|
|
27102
|
+
tenantKeys: extractPermitWebhookTenantKeys(record)
|
|
27103
|
+
};
|
|
27104
|
+
}
|
|
27105
|
+
function getMasterControlConvexClient() {
|
|
27106
|
+
if (mcClientCache.value) {
|
|
27107
|
+
return mcClientCache.value;
|
|
27108
|
+
}
|
|
27109
|
+
const convexUrl = readString27(process.env.CONVEX_MC_URL);
|
|
27110
|
+
const deployKey = readString27(process.env.CONVEX_MC_DEPLOY_KEY);
|
|
27111
|
+
if (!convexUrl || !deployKey) {
|
|
27112
|
+
throw new GatewayAuthError(
|
|
27113
|
+
503,
|
|
27114
|
+
"UPSTREAM_ERROR",
|
|
27115
|
+
"Master Control is not configured. Set CONVEX_MC_URL and CONVEX_MC_DEPLOY_KEY."
|
|
27116
|
+
);
|
|
27117
|
+
}
|
|
27118
|
+
const client = new ConvexHttpClient(convexUrl);
|
|
27119
|
+
client.setAdminAuth(
|
|
27120
|
+
deployKey
|
|
27121
|
+
);
|
|
27122
|
+
mcClientCache.value = client;
|
|
27123
|
+
return client;
|
|
27124
|
+
}
|
|
27125
|
+
function handlePermitWebhookError(error, correlationId, policyTraceId) {
|
|
27126
|
+
const resolved = resolveServerCoreError(
|
|
27127
|
+
error,
|
|
27128
|
+
"Failed to reconcile Permit projection."
|
|
27129
|
+
);
|
|
27130
|
+
return errorResponse({
|
|
27131
|
+
code: resolved.code,
|
|
27132
|
+
message: resolved.message,
|
|
27133
|
+
status: resolved.status,
|
|
27134
|
+
correlationId,
|
|
27135
|
+
policyTraceId,
|
|
27136
|
+
invariant: resolved.invariant,
|
|
27137
|
+
suggestion: resolved.suggestion,
|
|
27138
|
+
details: resolved.details
|
|
27139
|
+
});
|
|
27140
|
+
}
|
|
27141
|
+
async function handlePermitProjectionWebhook(args) {
|
|
27142
|
+
if (!readSecret()) {
|
|
27143
|
+
return errorResponse({
|
|
27144
|
+
status: 503,
|
|
27145
|
+
code: "INTERNAL_ERROR",
|
|
27146
|
+
message: "Permit webhook secret is not configured.",
|
|
27147
|
+
correlationId: args.correlationId,
|
|
27148
|
+
policyTraceId: args.policyTraceId
|
|
27149
|
+
});
|
|
27150
|
+
}
|
|
27151
|
+
if (!isPermitWebhookAuthorized({ headers: args.request.headers })) {
|
|
27152
|
+
return errorResponse({
|
|
27153
|
+
status: 401,
|
|
27154
|
+
code: "AUTH_REQUIRED",
|
|
27155
|
+
message: "Permit webhook secret did not match.",
|
|
27156
|
+
correlationId: args.correlationId,
|
|
27157
|
+
policyTraceId: args.policyTraceId
|
|
27158
|
+
});
|
|
27159
|
+
}
|
|
27160
|
+
try {
|
|
27161
|
+
const event = summarizePermitWebhookEvent(args.body);
|
|
27162
|
+
const tenantKeys = extractPermitWebhookTenantKeys(args.body);
|
|
27163
|
+
if (tenantKeys.length === 0) {
|
|
27164
|
+
return successResponse(
|
|
27165
|
+
{
|
|
27166
|
+
acknowledged: true,
|
|
27167
|
+
reconciled: false,
|
|
27168
|
+
reason: "No tenant key found; skipping tenant-scoped reconcile.",
|
|
27169
|
+
tenantKeys: []
|
|
27170
|
+
},
|
|
27171
|
+
{
|
|
27172
|
+
correlationId: args.correlationId,
|
|
27173
|
+
policyTraceId: args.policyTraceId
|
|
27174
|
+
}
|
|
27175
|
+
);
|
|
27176
|
+
}
|
|
27177
|
+
const client = args.convexClient ?? getMasterControlConvexClient();
|
|
27178
|
+
const receipt = await client.action(mcApi.permitProjectionActions.reconcile, {
|
|
27179
|
+
mode: "apply",
|
|
27180
|
+
trigger: "permit_webhook",
|
|
27181
|
+
tenantKeys,
|
|
27182
|
+
environments: ["dev", "staging", "prod"],
|
|
27183
|
+
componentPath: "controlPlane",
|
|
27184
|
+
webhookSecret: readSecret(),
|
|
27185
|
+
event
|
|
27186
|
+
});
|
|
27187
|
+
return successResponse(
|
|
27188
|
+
{
|
|
27189
|
+
reconciled: true,
|
|
27190
|
+
receipt
|
|
27191
|
+
},
|
|
27192
|
+
{
|
|
27193
|
+
correlationId: args.correlationId,
|
|
27194
|
+
policyTraceId: args.policyTraceId
|
|
27195
|
+
}
|
|
27196
|
+
);
|
|
27197
|
+
} catch (error) {
|
|
27198
|
+
return handlePermitWebhookError(
|
|
27199
|
+
error,
|
|
27200
|
+
args.correlationId,
|
|
27201
|
+
args.policyTraceId
|
|
27202
|
+
);
|
|
27203
|
+
}
|
|
27204
|
+
}
|
|
27205
|
+
|
|
27206
|
+
// ../../apps/gateway/src/routes/questions.ts
|
|
27207
|
+
function asRecord26(value) {
|
|
27208
|
+
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
27209
|
+
}
|
|
27210
|
+
function readString28(value) {
|
|
27040
27211
|
if (typeof value !== "string") {
|
|
27041
27212
|
return void 0;
|
|
27042
27213
|
}
|
|
@@ -27050,18 +27221,18 @@ function readStringArray14(value) {
|
|
|
27050
27221
|
if (!Array.isArray(value)) {
|
|
27051
27222
|
return void 0;
|
|
27052
27223
|
}
|
|
27053
|
-
const items = value.map((entry) =>
|
|
27224
|
+
const items = value.map((entry) => readString28(entry)).filter((entry) => Boolean(entry));
|
|
27054
27225
|
return items.length > 0 ? items : void 0;
|
|
27055
27226
|
}
|
|
27056
27227
|
async function handleQuestionCreate(args) {
|
|
27057
27228
|
try {
|
|
27058
|
-
const body =
|
|
27229
|
+
const body = asRecord26(args.body);
|
|
27059
27230
|
const payload = await createQuestionFromGatewayAuth(args.authContext, {
|
|
27060
|
-
topicId:
|
|
27061
|
-
text:
|
|
27062
|
-
priority:
|
|
27063
|
-
linkedBeliefId:
|
|
27064
|
-
metadata:
|
|
27231
|
+
topicId: readString28(body.topicId),
|
|
27232
|
+
text: readString28(body.text) ?? "",
|
|
27233
|
+
priority: readString28(body.priority),
|
|
27234
|
+
linkedBeliefId: readString28(body.linkedBeliefId),
|
|
27235
|
+
metadata: asRecord26(body.metadata)
|
|
27065
27236
|
});
|
|
27066
27237
|
return successResponse(payload, {
|
|
27067
27238
|
status: 201,
|
|
@@ -27108,10 +27279,10 @@ async function handleQuestionGet(args) {
|
|
|
27108
27279
|
}
|
|
27109
27280
|
async function handleQuestionArchive(args) {
|
|
27110
27281
|
try {
|
|
27111
|
-
const body =
|
|
27282
|
+
const body = asRecord26(args.body);
|
|
27112
27283
|
const payload = await archiveQuestionFromGatewayAuth(args.authContext, {
|
|
27113
27284
|
id: args.questionId,
|
|
27114
|
-
rationale:
|
|
27285
|
+
rationale: readString28(body.reason) ?? readString28(body.rationale)
|
|
27115
27286
|
});
|
|
27116
27287
|
return successResponse(payload, {
|
|
27117
27288
|
correlationId: args.correlationId,
|
|
@@ -27154,13 +27325,13 @@ async function handleQuestionList(args) {
|
|
|
27154
27325
|
}
|
|
27155
27326
|
async function handleQuestionAnswer(args) {
|
|
27156
27327
|
try {
|
|
27157
|
-
const body =
|
|
27328
|
+
const body = asRecord26(args.body);
|
|
27158
27329
|
const payload = await answerQuestionFromGatewayAuth(args.authContext, {
|
|
27159
27330
|
id: args.questionId,
|
|
27160
|
-
text:
|
|
27161
|
-
confidence:
|
|
27331
|
+
text: readString28(body.text) ?? "",
|
|
27332
|
+
confidence: readString28(body.confidence),
|
|
27162
27333
|
evidenceIds: readStringArray14(body.evidenceIds),
|
|
27163
|
-
rationale:
|
|
27334
|
+
rationale: readString28(body.rationale)
|
|
27164
27335
|
});
|
|
27165
27336
|
return successResponse(payload, {
|
|
27166
27337
|
correlationId: args.correlationId,
|
|
@@ -27206,11 +27377,11 @@ async function handleQuestionGetAnswer(args) {
|
|
|
27206
27377
|
}
|
|
27207
27378
|
async function handleQuestionRefine(args) {
|
|
27208
27379
|
try {
|
|
27209
|
-
const body =
|
|
27380
|
+
const body = asRecord26(args.body);
|
|
27210
27381
|
const payload = await refineQuestionFromGatewayAuth(args.authContext, {
|
|
27211
27382
|
id: args.questionId,
|
|
27212
|
-
text:
|
|
27213
|
-
rationale:
|
|
27383
|
+
text: readString28(body.text) ?? "",
|
|
27384
|
+
rationale: readString28(body.rationale)
|
|
27214
27385
|
});
|
|
27215
27386
|
return successResponse(payload, {
|
|
27216
27387
|
correlationId: args.correlationId,
|
|
@@ -27232,11 +27403,11 @@ async function handleQuestionRefine(args) {
|
|
|
27232
27403
|
}
|
|
27233
27404
|
async function handleQuestionUpdateStatus(args) {
|
|
27234
27405
|
try {
|
|
27235
|
-
const body =
|
|
27406
|
+
const body = asRecord26(args.body);
|
|
27236
27407
|
const payload = await updateQuestionStatusFromGatewayAuth(args.authContext, {
|
|
27237
27408
|
id: args.questionId,
|
|
27238
|
-
status:
|
|
27239
|
-
rationale:
|
|
27409
|
+
status: readString28(body.status) ?? "",
|
|
27410
|
+
rationale: readString28(body.rationale)
|
|
27240
27411
|
});
|
|
27241
27412
|
return successResponse(payload, {
|
|
27242
27413
|
correlationId: args.correlationId,
|
|
@@ -27261,19 +27432,19 @@ async function handleQuestionUpdateStatus(args) {
|
|
|
27261
27432
|
}
|
|
27262
27433
|
async function handleQuestionBatchCreate(args) {
|
|
27263
27434
|
try {
|
|
27264
|
-
const body =
|
|
27265
|
-
const questions = Array.isArray(body.questions) ? body.questions.map((entry) =>
|
|
27266
|
-
question:
|
|
27267
|
-
category:
|
|
27268
|
-
priority:
|
|
27269
|
-
linkedBeliefNodeId:
|
|
27270
|
-
linkedWorktreeId:
|
|
27271
|
-
testType:
|
|
27435
|
+
const body = asRecord26(args.body);
|
|
27436
|
+
const questions = Array.isArray(body.questions) ? body.questions.map((entry) => asRecord26(entry)).map((entry) => ({
|
|
27437
|
+
question: readString28(entry.question) ?? readString28(entry.text) ?? "",
|
|
27438
|
+
category: readString28(entry.category),
|
|
27439
|
+
priority: readString28(entry.priority),
|
|
27440
|
+
linkedBeliefNodeId: readString28(entry.linkedBeliefNodeId) ?? readString28(entry.linkedBeliefId),
|
|
27441
|
+
linkedWorktreeId: readString28(entry.linkedWorktreeId),
|
|
27442
|
+
testType: readString28(entry.testType)
|
|
27272
27443
|
})) : [];
|
|
27273
27444
|
const payload = await createQuestionsBatchFromGatewayAuth(args.authContext, {
|
|
27274
|
-
topicId:
|
|
27445
|
+
topicId: readString28(body.topicId),
|
|
27275
27446
|
questions,
|
|
27276
|
-
source:
|
|
27447
|
+
source: readString28(body.source)
|
|
27277
27448
|
});
|
|
27278
27449
|
return successResponse(payload, {
|
|
27279
27450
|
status: 201,
|
|
@@ -27299,20 +27470,20 @@ async function handleQuestionBatchCreate(args) {
|
|
|
27299
27470
|
}
|
|
27300
27471
|
async function handleQuestionAdd(args) {
|
|
27301
27472
|
try {
|
|
27302
|
-
const body =
|
|
27473
|
+
const body = asRecord26(args.body);
|
|
27303
27474
|
const payload = await addQuestionFromGatewayAuth(args.authContext, {
|
|
27304
|
-
topicId:
|
|
27305
|
-
question:
|
|
27306
|
-
category:
|
|
27307
|
-
priority:
|
|
27308
|
-
source:
|
|
27309
|
-
beliefId:
|
|
27310
|
-
linkedWorktreeId:
|
|
27311
|
-
chatId:
|
|
27475
|
+
topicId: readString28(body.topicId),
|
|
27476
|
+
question: readString28(body.question) ?? readString28(body.text),
|
|
27477
|
+
category: readString28(body.category),
|
|
27478
|
+
priority: readString28(body.priority),
|
|
27479
|
+
source: readString28(body.source),
|
|
27480
|
+
beliefId: readString28(body.beliefId) ?? readString28(body.linkedBeliefId),
|
|
27481
|
+
linkedWorktreeId: readString28(body.linkedWorktreeId),
|
|
27482
|
+
chatId: readString28(body.chatId),
|
|
27312
27483
|
importance: readNumber18(body.importance),
|
|
27313
|
-
epistemicUnlock:
|
|
27314
|
-
metadata:
|
|
27315
|
-
questionType:
|
|
27484
|
+
epistemicUnlock: readString28(body.epistemicUnlock),
|
|
27485
|
+
metadata: asRecord26(body.metadata),
|
|
27486
|
+
questionType: readString28(body.questionType)
|
|
27316
27487
|
});
|
|
27317
27488
|
return successResponse(payload, {
|
|
27318
27489
|
status: 201,
|
|
@@ -27335,12 +27506,12 @@ async function handleQuestionAdd(args) {
|
|
|
27335
27506
|
}
|
|
27336
27507
|
async function handleQuestionUpdatePriority(args) {
|
|
27337
27508
|
try {
|
|
27338
|
-
const body =
|
|
27509
|
+
const body = asRecord26(args.body);
|
|
27339
27510
|
const payload = await updateQuestionPriorityFromGatewayAuth(
|
|
27340
27511
|
args.authContext,
|
|
27341
27512
|
{
|
|
27342
|
-
id:
|
|
27343
|
-
priority:
|
|
27513
|
+
id: readString28(body.id) ?? readString28(body.nodeId) ?? readString28(body.questionId),
|
|
27514
|
+
priority: readString28(body.priority) ?? "medium"
|
|
27344
27515
|
}
|
|
27345
27516
|
);
|
|
27346
27517
|
return successResponse(payload, {
|
|
@@ -27366,12 +27537,12 @@ async function handleQuestionUpdatePriority(args) {
|
|
|
27366
27537
|
}
|
|
27367
27538
|
async function handleQuestionAdvanceToConviction(args) {
|
|
27368
27539
|
try {
|
|
27369
|
-
const body =
|
|
27540
|
+
const body = asRecord26(args.body);
|
|
27370
27541
|
const payload = await advanceQuestionToConvictionFromGatewayAuth(
|
|
27371
27542
|
args.authContext,
|
|
27372
27543
|
{
|
|
27373
|
-
questionId:
|
|
27374
|
-
worktreeId:
|
|
27544
|
+
questionId: readString28(body.questionId) ?? readString28(body.id) ?? readString28(body.nodeId),
|
|
27545
|
+
worktreeId: readString28(body.worktreeId)
|
|
27375
27546
|
}
|
|
27376
27547
|
);
|
|
27377
27548
|
return successResponse(payload, {
|
|
@@ -27397,14 +27568,14 @@ async function handleQuestionAdvanceToConviction(args) {
|
|
|
27397
27568
|
}
|
|
27398
27569
|
async function handleQuestionUpdateConviction(args) {
|
|
27399
27570
|
try {
|
|
27400
|
-
const body =
|
|
27571
|
+
const body = asRecord26(args.body);
|
|
27401
27572
|
const payload = await updateQuestionConvictionFromGatewayAuth(
|
|
27402
27573
|
args.authContext,
|
|
27403
27574
|
{
|
|
27404
|
-
questionId:
|
|
27575
|
+
questionId: readString28(body.questionId) ?? readString28(body.id) ?? readString28(body.nodeId),
|
|
27405
27576
|
conviction: readNumber18(body.conviction),
|
|
27406
|
-
answerCompleteness:
|
|
27407
|
-
convictionRationale:
|
|
27577
|
+
answerCompleteness: readString28(body.answerCompleteness),
|
|
27578
|
+
convictionRationale: readString28(body.convictionRationale)
|
|
27408
27579
|
}
|
|
27409
27580
|
);
|
|
27410
27581
|
return successResponse(payload, {
|
|
@@ -27430,16 +27601,16 @@ async function handleQuestionUpdateConviction(args) {
|
|
|
27430
27601
|
}
|
|
27431
27602
|
async function handleQuestionFinalizeConviction(args) {
|
|
27432
27603
|
try {
|
|
27433
|
-
const body =
|
|
27604
|
+
const body = asRecord26(args.body);
|
|
27434
27605
|
const payload = await finalizeQuestionConvictionFromGatewayAuth(
|
|
27435
27606
|
args.authContext,
|
|
27436
27607
|
{
|
|
27437
|
-
questionId:
|
|
27608
|
+
questionId: readString28(body.questionId) ?? readString28(body.id) ?? readString28(body.nodeId),
|
|
27438
27609
|
conviction: readNumber18(body.conviction) ?? Number.NaN,
|
|
27439
|
-
answer:
|
|
27440
|
-
convictionRationale:
|
|
27441
|
-
answerCompleteness:
|
|
27442
|
-
whatWeNeed:
|
|
27610
|
+
answer: readString28(body.answer) ?? "",
|
|
27611
|
+
convictionRationale: readString28(body.convictionRationale),
|
|
27612
|
+
answerCompleteness: readString28(body.answerCompleteness),
|
|
27613
|
+
whatWeNeed: readString28(body.whatWeNeed)
|
|
27443
27614
|
}
|
|
27444
27615
|
);
|
|
27445
27616
|
return successResponse(payload, {
|
|
@@ -27465,12 +27636,12 @@ async function handleQuestionFinalizeConviction(args) {
|
|
|
27465
27636
|
}
|
|
27466
27637
|
async function handleQuestionUpdate(args) {
|
|
27467
27638
|
try {
|
|
27468
|
-
const body =
|
|
27639
|
+
const body = asRecord26(args.body);
|
|
27469
27640
|
const payload = await updateQuestionFromGatewayAuth(args.authContext, {
|
|
27470
|
-
questionId:
|
|
27471
|
-
question:
|
|
27472
|
-
category:
|
|
27473
|
-
priority:
|
|
27641
|
+
questionId: readString28(body.questionId) ?? readString28(body.id) ?? readString28(body.nodeId),
|
|
27642
|
+
question: readString28(body.question) ?? readString28(body.text),
|
|
27643
|
+
category: readString28(body.category),
|
|
27644
|
+
priority: readString28(body.priority)
|
|
27474
27645
|
});
|
|
27475
27646
|
return successResponse(payload, {
|
|
27476
27647
|
correlationId: args.correlationId,
|
|
@@ -27492,9 +27663,9 @@ async function handleQuestionUpdate(args) {
|
|
|
27492
27663
|
}
|
|
27493
27664
|
async function handleQuestionDelete(args) {
|
|
27494
27665
|
try {
|
|
27495
|
-
const body =
|
|
27666
|
+
const body = asRecord26(args.body);
|
|
27496
27667
|
const payload = await deleteQuestionFromGatewayAuth(args.authContext, {
|
|
27497
|
-
questionId:
|
|
27668
|
+
questionId: readString28(body.questionId) ?? readString28(body.id) ?? readString28(body.nodeId)
|
|
27498
27669
|
});
|
|
27499
27670
|
return successResponse(payload, {
|
|
27500
27671
|
correlationId: args.correlationId,
|
|
@@ -27516,10 +27687,10 @@ async function handleQuestionDelete(args) {
|
|
|
27516
27687
|
}
|
|
27517
27688
|
|
|
27518
27689
|
// ../../apps/gateway/src/routes/search.ts
|
|
27519
|
-
function
|
|
27690
|
+
function asRecord27(value) {
|
|
27520
27691
|
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
27521
27692
|
}
|
|
27522
|
-
function
|
|
27693
|
+
function readString29(value) {
|
|
27523
27694
|
if (typeof value !== "string") {
|
|
27524
27695
|
return void 0;
|
|
27525
27696
|
}
|
|
@@ -27533,13 +27704,13 @@ function readStringArray15(value) {
|
|
|
27533
27704
|
if (!Array.isArray(value)) {
|
|
27534
27705
|
return void 0;
|
|
27535
27706
|
}
|
|
27536
|
-
const items = value.map((entry) =>
|
|
27707
|
+
const items = value.map((entry) => readString29(entry)).filter((entry) => Boolean(entry));
|
|
27537
27708
|
return items.length > 0 ? items : void 0;
|
|
27538
27709
|
}
|
|
27539
27710
|
async function handleSearchResources(args) {
|
|
27540
|
-
const body =
|
|
27541
|
-
const q =
|
|
27542
|
-
const topicId =
|
|
27711
|
+
const body = asRecord27(args.body);
|
|
27712
|
+
const q = readString29(body.q) ?? readString29(body.query);
|
|
27713
|
+
const topicId = readString29(body.topicId) ?? readString29(body.projectId);
|
|
27543
27714
|
if (!q) {
|
|
27544
27715
|
return errorResponse({
|
|
27545
27716
|
code: "INVALID_REQUEST",
|
|
@@ -27563,10 +27734,10 @@ async function handleSearchResources(args) {
|
|
|
27563
27734
|
q,
|
|
27564
27735
|
topicId,
|
|
27565
27736
|
types: readStringArray15(body.types),
|
|
27566
|
-
status:
|
|
27737
|
+
status: readString29(body.status),
|
|
27567
27738
|
minConfidence: readNumber19(body.minConfidence),
|
|
27568
27739
|
limit: readNumber19(body.limit),
|
|
27569
|
-
cursor:
|
|
27740
|
+
cursor: readString29(body.cursor)
|
|
27570
27741
|
});
|
|
27571
27742
|
return successResponse(payload, {
|
|
27572
27743
|
correlationId: args.correlationId,
|
|
@@ -27588,10 +27759,10 @@ async function handleSearchResources(args) {
|
|
|
27588
27759
|
}
|
|
27589
27760
|
|
|
27590
27761
|
// ../../apps/gateway/src/routes/sources.ts
|
|
27591
|
-
function
|
|
27762
|
+
function asRecord28(value) {
|
|
27592
27763
|
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
27593
27764
|
}
|
|
27594
|
-
function
|
|
27765
|
+
function readString30(value) {
|
|
27595
27766
|
if (typeof value !== "string") {
|
|
27596
27767
|
return void 0;
|
|
27597
27768
|
}
|
|
@@ -27616,15 +27787,15 @@ function handleSourcesError(error, fallbackMessage, correlationId, policyTraceId
|
|
|
27616
27787
|
}
|
|
27617
27788
|
async function handleSourceUpsert(args) {
|
|
27618
27789
|
try {
|
|
27619
|
-
const body =
|
|
27790
|
+
const body = asRecord28(args.body);
|
|
27620
27791
|
const payload = await upsertSourceFromGatewayAuth(args.authContext, {
|
|
27621
|
-
url:
|
|
27622
|
-
sha:
|
|
27623
|
-
kind:
|
|
27624
|
-
title:
|
|
27792
|
+
url: readString30(body.url),
|
|
27793
|
+
sha: readString30(body.sha),
|
|
27794
|
+
kind: readString30(body.kind) ?? "",
|
|
27795
|
+
title: readString30(body.title),
|
|
27625
27796
|
capturedAt: readNumber20(body.capturedAt),
|
|
27626
|
-
topicId:
|
|
27627
|
-
metadata:
|
|
27797
|
+
topicId: readString30(body.topicId),
|
|
27798
|
+
metadata: asRecord28(body.metadata)
|
|
27628
27799
|
});
|
|
27629
27800
|
return successResponse(payload, {
|
|
27630
27801
|
status: 201,
|
|
@@ -27658,10 +27829,10 @@ async function handleSourceGet(args) {
|
|
|
27658
27829
|
}
|
|
27659
27830
|
|
|
27660
27831
|
// ../../apps/gateway/src/routes/tasks.ts
|
|
27661
|
-
function
|
|
27832
|
+
function asRecord29(value) {
|
|
27662
27833
|
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
27663
27834
|
}
|
|
27664
|
-
function
|
|
27835
|
+
function readString31(value) {
|
|
27665
27836
|
if (typeof value !== "string") {
|
|
27666
27837
|
return void 0;
|
|
27667
27838
|
}
|
|
@@ -27683,18 +27854,18 @@ function handleTasksError(error, fallbackMessage, correlationId, policyTraceId)
|
|
|
27683
27854
|
}
|
|
27684
27855
|
async function handleTaskCreate(args) {
|
|
27685
27856
|
try {
|
|
27686
|
-
const body =
|
|
27857
|
+
const body = asRecord29(args.body);
|
|
27687
27858
|
const payload = await createTaskFromGatewayAuth(args.authContext, {
|
|
27688
|
-
topicId:
|
|
27689
|
-
title:
|
|
27690
|
-
description:
|
|
27691
|
-
taskType:
|
|
27692
|
-
priority:
|
|
27693
|
-
status:
|
|
27694
|
-
linkedBeliefId:
|
|
27695
|
-
linkedQuestionId:
|
|
27696
|
-
linkedWorktreeId:
|
|
27697
|
-
tags: Array.isArray(body.tags) ? body.tags.map((entry) =>
|
|
27859
|
+
topicId: readString31(body.topicId),
|
|
27860
|
+
title: readString31(body.title) ?? "",
|
|
27861
|
+
description: readString31(body.description),
|
|
27862
|
+
taskType: readString31(body.taskType),
|
|
27863
|
+
priority: readString31(body.priority),
|
|
27864
|
+
status: readString31(body.status),
|
|
27865
|
+
linkedBeliefId: readString31(body.linkedBeliefId),
|
|
27866
|
+
linkedQuestionId: readString31(body.linkedQuestionId),
|
|
27867
|
+
linkedWorktreeId: readString31(body.linkedWorktreeId),
|
|
27868
|
+
tags: Array.isArray(body.tags) ? body.tags.map((entry) => readString31(entry)).filter((entry) => Boolean(entry)) : void 0,
|
|
27698
27869
|
metadata: body.metadata && typeof body.metadata === "object" && !Array.isArray(body.metadata) ? body.metadata : void 0
|
|
27699
27870
|
});
|
|
27700
27871
|
return successResponse(payload, {
|
|
@@ -27729,16 +27900,16 @@ async function handleTaskList(args) {
|
|
|
27729
27900
|
}
|
|
27730
27901
|
async function handleTaskUpdate(args) {
|
|
27731
27902
|
try {
|
|
27732
|
-
const body =
|
|
27903
|
+
const body = asRecord29(args.body);
|
|
27733
27904
|
const payload = await updateTaskFromGatewayAuth(args.authContext, {
|
|
27734
27905
|
id: args.taskId,
|
|
27735
|
-
title:
|
|
27736
|
-
description:
|
|
27737
|
-
priority:
|
|
27738
|
-
status:
|
|
27739
|
-
linkedBeliefId:
|
|
27740
|
-
linkedQuestionId:
|
|
27741
|
-
linkedWorktreeId:
|
|
27906
|
+
title: readString31(body.title),
|
|
27907
|
+
description: readString31(body.description),
|
|
27908
|
+
priority: readString31(body.priority),
|
|
27909
|
+
status: readString31(body.status),
|
|
27910
|
+
linkedBeliefId: readString31(body.linkedBeliefId),
|
|
27911
|
+
linkedQuestionId: readString31(body.linkedQuestionId),
|
|
27912
|
+
linkedWorktreeId: readString31(body.linkedWorktreeId),
|
|
27742
27913
|
metadata: body.metadata && typeof body.metadata === "object" && !Array.isArray(body.metadata) ? body.metadata : void 0
|
|
27743
27914
|
});
|
|
27744
27915
|
return successResponse(payload, {
|
|
@@ -27756,10 +27927,10 @@ async function handleTaskUpdate(args) {
|
|
|
27756
27927
|
}
|
|
27757
27928
|
async function handleTaskComplete(args) {
|
|
27758
27929
|
try {
|
|
27759
|
-
const body =
|
|
27930
|
+
const body = asRecord29(args.body);
|
|
27760
27931
|
const payload = await completeTaskFromGatewayAuth(args.authContext, {
|
|
27761
27932
|
id: args.taskId,
|
|
27762
|
-
outputSummary:
|
|
27933
|
+
outputSummary: readString31(body.outputSummary)
|
|
27763
27934
|
});
|
|
27764
27935
|
return successResponse(payload, {
|
|
27765
27936
|
correlationId: args.correlationId,
|
|
@@ -27776,10 +27947,10 @@ async function handleTaskComplete(args) {
|
|
|
27776
27947
|
}
|
|
27777
27948
|
|
|
27778
27949
|
// ../../apps/gateway/src/routes/topics.ts
|
|
27779
|
-
function
|
|
27950
|
+
function asRecord30(value) {
|
|
27780
27951
|
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
27781
27952
|
}
|
|
27782
|
-
function
|
|
27953
|
+
function readString32(value) {
|
|
27783
27954
|
if (typeof value !== "string") {
|
|
27784
27955
|
return void 0;
|
|
27785
27956
|
}
|
|
@@ -27796,7 +27967,7 @@ function readStringArray16(value) {
|
|
|
27796
27967
|
if (!Array.isArray(value)) {
|
|
27797
27968
|
return void 0;
|
|
27798
27969
|
}
|
|
27799
|
-
const items = value.map((entry) =>
|
|
27970
|
+
const items = value.map((entry) => readString32(entry)).filter((entry) => Boolean(entry));
|
|
27800
27971
|
return items.length > 0 ? items : void 0;
|
|
27801
27972
|
}
|
|
27802
27973
|
function handleTopicsError(error, fallbackMessage, correlationId, policyTraceId) {
|
|
@@ -27814,17 +27985,17 @@ function handleTopicsError(error, fallbackMessage, correlationId, policyTraceId)
|
|
|
27814
27985
|
}
|
|
27815
27986
|
async function handleTopicCreate(args) {
|
|
27816
27987
|
try {
|
|
27817
|
-
const body =
|
|
27988
|
+
const body = asRecord30(args.body);
|
|
27818
27989
|
const payload = await createTopicFromGatewayAuth(args.authContext, {
|
|
27819
|
-
name:
|
|
27820
|
-
description:
|
|
27821
|
-
type:
|
|
27822
|
-
parentTopicId:
|
|
27823
|
-
ontologyId:
|
|
27824
|
-
tenantId:
|
|
27825
|
-
workspaceId:
|
|
27826
|
-
visibility:
|
|
27827
|
-
createdBy:
|
|
27990
|
+
name: readString32(body.name) ?? "",
|
|
27991
|
+
description: readString32(body.description),
|
|
27992
|
+
type: readString32(body.type),
|
|
27993
|
+
parentTopicId: readString32(body.parentTopicId),
|
|
27994
|
+
ontologyId: readString32(body.ontologyId),
|
|
27995
|
+
tenantId: readString32(body.tenantId),
|
|
27996
|
+
workspaceId: readString32(body.workspaceId),
|
|
27997
|
+
visibility: readString32(body.visibility),
|
|
27998
|
+
createdBy: readString32(body.createdBy)
|
|
27828
27999
|
});
|
|
27829
28000
|
return successResponse(payload, {
|
|
27830
28001
|
status: 201,
|
|
@@ -27842,16 +28013,16 @@ async function handleTopicCreate(args) {
|
|
|
27842
28013
|
}
|
|
27843
28014
|
async function handleTopicUpdate(args) {
|
|
27844
28015
|
try {
|
|
27845
|
-
const body =
|
|
28016
|
+
const body = asRecord30(args.body);
|
|
27846
28017
|
const payload = await updateTopicFromGatewayAuth(args.authContext, {
|
|
27847
28018
|
id: args.topicId,
|
|
27848
|
-
name:
|
|
27849
|
-
description:
|
|
27850
|
-
type:
|
|
27851
|
-
ontologyId:
|
|
28019
|
+
name: readString32(body.name),
|
|
28020
|
+
description: readString32(body.description),
|
|
28021
|
+
type: readString32(body.type),
|
|
28022
|
+
ontologyId: readString32(body.ontologyId),
|
|
27852
28023
|
clearOntologyId: readBoolean(body.clearOntologyId),
|
|
27853
|
-
status:
|
|
27854
|
-
visibility:
|
|
28024
|
+
status: readString32(body.status),
|
|
28025
|
+
visibility: readString32(body.visibility)
|
|
27855
28026
|
});
|
|
27856
28027
|
return successResponse(payload, {
|
|
27857
28028
|
correlationId: args.correlationId,
|
|
@@ -27939,9 +28110,9 @@ async function handleTopicCoverage(args) {
|
|
|
27939
28110
|
}
|
|
27940
28111
|
async function handleTopicRemove(args) {
|
|
27941
28112
|
try {
|
|
27942
|
-
const body =
|
|
28113
|
+
const body = asRecord30(args.body);
|
|
27943
28114
|
const payload = await removeTopicFromGatewayAuth(args.authContext, {
|
|
27944
|
-
id:
|
|
28115
|
+
id: readString32(body.id) ?? readString32(body.topicId) ?? ""
|
|
27945
28116
|
});
|
|
27946
28117
|
return successResponse(payload, {
|
|
27947
28118
|
correlationId: args.correlationId,
|
|
@@ -27958,22 +28129,22 @@ async function handleTopicRemove(args) {
|
|
|
27958
28129
|
}
|
|
27959
28130
|
async function handleTopicBulkCreate(args) {
|
|
27960
28131
|
try {
|
|
27961
|
-
const body =
|
|
27962
|
-
const topics2 = Array.isArray(body.topics) ? body.topics.map((entry) =>
|
|
27963
|
-
globalId:
|
|
27964
|
-
name:
|
|
27965
|
-
description:
|
|
27966
|
-
type:
|
|
27967
|
-
parentTopicId:
|
|
28132
|
+
const body = asRecord30(args.body);
|
|
28133
|
+
const topics2 = Array.isArray(body.topics) ? body.topics.map((entry) => asRecord30(entry)).map((entry) => ({
|
|
28134
|
+
globalId: readString32(entry.globalId) ?? "",
|
|
28135
|
+
name: readString32(entry.name) ?? "",
|
|
28136
|
+
description: readString32(entry.description),
|
|
28137
|
+
type: readString32(entry.type) ?? "theme",
|
|
28138
|
+
parentTopicId: readString32(entry.parentTopicId),
|
|
27968
28139
|
depth: readNumber21(entry.depth) ?? 0,
|
|
27969
28140
|
path: readStringArray16(entry.path) ?? [],
|
|
27970
|
-
tenantId:
|
|
27971
|
-
workspaceId:
|
|
27972
|
-
graphScopeProjectId:
|
|
27973
|
-
status:
|
|
27974
|
-
visibility:
|
|
27975
|
-
metadata:
|
|
27976
|
-
createdBy:
|
|
28141
|
+
tenantId: readString32(entry.tenantId),
|
|
28142
|
+
workspaceId: readString32(entry.workspaceId),
|
|
28143
|
+
graphScopeProjectId: readString32(entry.graphScopeProjectId),
|
|
28144
|
+
status: readString32(entry.status) ?? "active",
|
|
28145
|
+
visibility: readString32(entry.visibility),
|
|
28146
|
+
metadata: asRecord30(entry.metadata),
|
|
28147
|
+
createdBy: readString32(entry.createdBy)
|
|
27977
28148
|
})) : [];
|
|
27978
28149
|
const payload = await bulkCreateTopicsFromGatewayAuth(args.authContext, {
|
|
27979
28150
|
topics: topics2
|
|
@@ -27994,10 +28165,10 @@ async function handleTopicBulkCreate(args) {
|
|
|
27994
28165
|
}
|
|
27995
28166
|
|
|
27996
28167
|
// ../../apps/gateway/src/routes/webhooks.ts
|
|
27997
|
-
function
|
|
28168
|
+
function asRecord31(value) {
|
|
27998
28169
|
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
27999
28170
|
}
|
|
28000
|
-
function
|
|
28171
|
+
function readString33(value) {
|
|
28001
28172
|
if (typeof value !== "string") {
|
|
28002
28173
|
return void 0;
|
|
28003
28174
|
}
|
|
@@ -28011,7 +28182,7 @@ function readStringArray17(value) {
|
|
|
28011
28182
|
if (!Array.isArray(value)) {
|
|
28012
28183
|
return void 0;
|
|
28013
28184
|
}
|
|
28014
|
-
const normalized = value.map((entry) =>
|
|
28185
|
+
const normalized = value.map((entry) => readString33(entry)).filter((entry) => Boolean(entry));
|
|
28015
28186
|
return normalized.length > 0 ? normalized : void 0;
|
|
28016
28187
|
}
|
|
28017
28188
|
function handleWebhooksError(error, fallbackMessage, correlationId, policyTraceId) {
|
|
@@ -28029,16 +28200,16 @@ function handleWebhooksError(error, fallbackMessage, correlationId, policyTraceI
|
|
|
28029
28200
|
}
|
|
28030
28201
|
async function handleWebhookCreate(args) {
|
|
28031
28202
|
try {
|
|
28032
|
-
const body =
|
|
28203
|
+
const body = asRecord31(args.body);
|
|
28033
28204
|
const payload = await args.authContext.convex.mutation(
|
|
28034
28205
|
"events:createWebhook",
|
|
28035
28206
|
{
|
|
28036
28207
|
tenantId: args.authContext.tenantId,
|
|
28037
28208
|
workspaceId: args.authContext.workspaceId,
|
|
28038
|
-
topicId:
|
|
28039
|
-
url:
|
|
28209
|
+
topicId: readString33(body.topicId),
|
|
28210
|
+
url: readString33(body.url) ?? "",
|
|
28040
28211
|
events: readStringArray17(body.events) ?? [],
|
|
28041
|
-
secret:
|
|
28212
|
+
secret: readString33(body.secret) ?? "",
|
|
28042
28213
|
active: readBoolean2(body.active),
|
|
28043
28214
|
createdBy: args.authContext.principalId ?? args.authContext.userId
|
|
28044
28215
|
}
|
|
@@ -28099,17 +28270,17 @@ async function handleWebhookGet(args) {
|
|
|
28099
28270
|
}
|
|
28100
28271
|
async function handleWebhookUpdate(args) {
|
|
28101
28272
|
try {
|
|
28102
|
-
const body =
|
|
28273
|
+
const body = asRecord31(args.body);
|
|
28103
28274
|
const payload = await args.authContext.convex.mutation(
|
|
28104
28275
|
"events:updateWebhook",
|
|
28105
28276
|
{
|
|
28106
28277
|
webhookId: args.webhookId,
|
|
28107
28278
|
tenantId: args.authContext.tenantId,
|
|
28108
28279
|
workspaceId: args.authContext.workspaceId,
|
|
28109
|
-
url:
|
|
28280
|
+
url: readString33(body.url),
|
|
28110
28281
|
events: readStringArray17(body.events),
|
|
28111
|
-
secret:
|
|
28112
|
-
topicId:
|
|
28282
|
+
secret: readString33(body.secret),
|
|
28283
|
+
topicId: readString33(body.topicId),
|
|
28113
28284
|
clearTopicId: body.topicId === null ? true : readBoolean2(body.clearTopicId),
|
|
28114
28285
|
active: readBoolean2(body.active),
|
|
28115
28286
|
updatedBy: args.authContext.principalId ?? args.authContext.userId
|
|
@@ -28153,12 +28324,12 @@ async function handleWebhookDelete(args) {
|
|
|
28153
28324
|
}
|
|
28154
28325
|
async function handleWebhookTest(args) {
|
|
28155
28326
|
try {
|
|
28156
|
-
const body =
|
|
28327
|
+
const body = asRecord31(args.body);
|
|
28157
28328
|
const payload = await args.authContext.convex.action("events:testWebhook", {
|
|
28158
28329
|
webhookId: args.webhookId,
|
|
28159
28330
|
tenantId: args.authContext.tenantId,
|
|
28160
28331
|
workspaceId: args.authContext.workspaceId,
|
|
28161
|
-
topicId:
|
|
28332
|
+
topicId: readString33(body.topicId),
|
|
28162
28333
|
actorId: args.authContext.principalId ?? args.authContext.userId,
|
|
28163
28334
|
actorType: inferActorType({
|
|
28164
28335
|
authMode: args.authContext.authMode,
|
|
@@ -28228,10 +28399,10 @@ async function handleWebhookHealth(args) {
|
|
|
28228
28399
|
}
|
|
28229
28400
|
|
|
28230
28401
|
// ../../apps/gateway/src/routes/worktrees.ts
|
|
28231
|
-
function
|
|
28402
|
+
function asRecord32(value) {
|
|
28232
28403
|
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
28233
28404
|
}
|
|
28234
|
-
function
|
|
28405
|
+
function readString34(value) {
|
|
28235
28406
|
if (typeof value !== "string") {
|
|
28236
28407
|
return void 0;
|
|
28237
28408
|
}
|
|
@@ -28245,14 +28416,14 @@ function readStringArray18(value) {
|
|
|
28245
28416
|
if (!Array.isArray(value)) {
|
|
28246
28417
|
return void 0;
|
|
28247
28418
|
}
|
|
28248
|
-
const normalized = value.map((entry) =>
|
|
28419
|
+
const normalized = value.map((entry) => readString34(entry)).filter((entry) => Boolean(entry));
|
|
28249
28420
|
return normalized.length > 0 ? normalized : void 0;
|
|
28250
28421
|
}
|
|
28251
28422
|
function readObjectArray(value) {
|
|
28252
28423
|
if (!Array.isArray(value)) {
|
|
28253
28424
|
return void 0;
|
|
28254
28425
|
}
|
|
28255
|
-
const normalized = value.map((entry) =>
|
|
28426
|
+
const normalized = value.map((entry) => asRecord32(entry)).filter((entry) => Object.keys(entry).length > 0);
|
|
28256
28427
|
return normalized.length > 0 ? normalized : void 0;
|
|
28257
28428
|
}
|
|
28258
28429
|
function readConfidenceImpact(value) {
|
|
@@ -28263,18 +28434,18 @@ function normalizeMergeOutcomes2(value) {
|
|
|
28263
28434
|
return [];
|
|
28264
28435
|
}
|
|
28265
28436
|
return value.map((entry) => {
|
|
28266
|
-
const finding =
|
|
28437
|
+
const finding = readString34(entry);
|
|
28267
28438
|
if (finding) {
|
|
28268
28439
|
return finding;
|
|
28269
28440
|
}
|
|
28270
|
-
const row =
|
|
28441
|
+
const row = asRecord32(entry);
|
|
28271
28442
|
if (!Object.keys(row).length) {
|
|
28272
28443
|
return null;
|
|
28273
28444
|
}
|
|
28274
28445
|
return {
|
|
28275
|
-
beliefId:
|
|
28446
|
+
beliefId: readString34(row.beliefId) ?? "",
|
|
28276
28447
|
confidence: readNumber22(row.confidence) ?? Number.NaN,
|
|
28277
|
-
rationale:
|
|
28448
|
+
rationale: readString34(row.rationale) ?? ""
|
|
28278
28449
|
};
|
|
28279
28450
|
}).filter((entry) => entry !== null);
|
|
28280
28451
|
}
|
|
@@ -28293,22 +28464,22 @@ function handleWorktreesError(error, fallbackMessage, correlationId, policyTrace
|
|
|
28293
28464
|
}
|
|
28294
28465
|
async function handleWorktreeCreate(args) {
|
|
28295
28466
|
try {
|
|
28296
|
-
const body =
|
|
28467
|
+
const body = asRecord32(args.body);
|
|
28297
28468
|
const goCriteria = readStringArray18(body.goCriteria);
|
|
28298
28469
|
const noGoSignals = readStringArray18(body.noGoSignals);
|
|
28299
28470
|
const payload = await createWorktreeFromGatewayAuth(args.authContext, {
|
|
28300
|
-
title:
|
|
28301
|
-
topicId:
|
|
28302
|
-
topicHint:
|
|
28303
|
-
objective:
|
|
28304
|
-
hypothesis:
|
|
28305
|
-
rationale:
|
|
28306
|
-
worktreeType:
|
|
28471
|
+
title: readString34(body.title) ?? readString34(body.name) ?? "",
|
|
28472
|
+
topicId: readString34(body.topicId ?? body.projectId) ?? "",
|
|
28473
|
+
topicHint: readString34(body.topicHint),
|
|
28474
|
+
objective: readString34(body.objective),
|
|
28475
|
+
hypothesis: readString34(body.hypothesis),
|
|
28476
|
+
rationale: readString34(body.rationale),
|
|
28477
|
+
worktreeType: readString34(body.worktreeType),
|
|
28307
28478
|
startDate: readNumber22(body.startDate),
|
|
28308
28479
|
endDate: readNumber22(body.endDate),
|
|
28309
28480
|
durationWeeks: readNumber22(body.durationWeeks),
|
|
28310
28481
|
confidenceImpact: readConfidenceImpact(body.confidenceImpact),
|
|
28311
|
-
beliefFocus:
|
|
28482
|
+
beliefFocus: readString34(body.beliefFocus),
|
|
28312
28483
|
beliefIds: readStringArray18(body.targetBeliefIds) ?? readStringArray18(body.beliefIds) ?? readStringArray18(body.beliefs),
|
|
28313
28484
|
targetBeliefIds: readStringArray18(body.targetBeliefIds),
|
|
28314
28485
|
targetQuestionIds: readStringArray18(body.targetQuestionIds),
|
|
@@ -28319,23 +28490,23 @@ async function handleWorktreeCreate(args) {
|
|
|
28319
28490
|
noGoSignals: noGoSignals ?? []
|
|
28320
28491
|
} : void 0,
|
|
28321
28492
|
autoShape: typeof body.autoShape === "boolean" ? body.autoShape : void 0,
|
|
28322
|
-
domainPackId:
|
|
28493
|
+
domainPackId: readString34(body.domainPackId),
|
|
28323
28494
|
tags: readStringArray18(body.tags),
|
|
28324
28495
|
touchedPaths: readStringArray18(body.touchedPaths),
|
|
28325
|
-
sourceRef:
|
|
28326
|
-
sourceKind:
|
|
28496
|
+
sourceRef: readString34(body.sourceRef),
|
|
28497
|
+
sourceKind: readString34(body.sourceKind),
|
|
28327
28498
|
campaign: readNumber22(body.campaign),
|
|
28328
|
-
lane:
|
|
28499
|
+
lane: readString34(body.lane),
|
|
28329
28500
|
laneOrderInCampaign: readNumber22(body.laneOrderInCampaign),
|
|
28330
28501
|
orderInLane: readNumber22(body.orderInLane),
|
|
28331
28502
|
dependsOn: readStringArray18(body.dependsOn),
|
|
28332
28503
|
blocks: readStringArray18(body.blocks),
|
|
28333
|
-
gate:
|
|
28504
|
+
gate: readString34(body.gate),
|
|
28334
28505
|
proofArtifacts: Array.isArray(body.proofArtifacts) ? body.proofArtifacts : void 0,
|
|
28335
|
-
staffingHint:
|
|
28506
|
+
staffingHint: readString34(body.staffingHint),
|
|
28336
28507
|
lastReconciledAt: readNumber22(body.lastReconciledAt),
|
|
28337
28508
|
autoFixPolicy: body.autoFixPolicy && typeof body.autoFixPolicy === "object" && !Array.isArray(body.autoFixPolicy) ? body.autoFixPolicy : void 0,
|
|
28338
|
-
lensId:
|
|
28509
|
+
lensId: readString34(body.lensId)
|
|
28339
28510
|
});
|
|
28340
28511
|
return successResponse(payload, {
|
|
28341
28512
|
status: 201,
|
|
@@ -28354,10 +28525,10 @@ async function handleWorktreeCreate(args) {
|
|
|
28354
28525
|
async function handleWorktreeList(args) {
|
|
28355
28526
|
try {
|
|
28356
28527
|
const payload = await listWorktreesFromGatewayAuth(args.authContext, {
|
|
28357
|
-
topicId:
|
|
28358
|
-
status:
|
|
28359
|
-
groupBy:
|
|
28360
|
-
lane:
|
|
28528
|
+
topicId: readString34(args.query.topicId) ?? "",
|
|
28529
|
+
status: readString34(args.query.status),
|
|
28530
|
+
groupBy: readString34(args.query.groupBy),
|
|
28531
|
+
lane: readString34(args.query.lane),
|
|
28361
28532
|
campaign: readNumber22(args.query.campaign),
|
|
28362
28533
|
limit: readNumber22(args.query.limit)
|
|
28363
28534
|
});
|
|
@@ -28377,10 +28548,10 @@ async function handleWorktreeList(args) {
|
|
|
28377
28548
|
async function handleWorktreeListAll(args) {
|
|
28378
28549
|
try {
|
|
28379
28550
|
const payload = await listAllWorktreesFromGatewayAuth(args.authContext, {
|
|
28380
|
-
status:
|
|
28381
|
-
lane:
|
|
28551
|
+
status: readString34(args.query.status),
|
|
28552
|
+
lane: readString34(args.query.lane),
|
|
28382
28553
|
campaign: readNumber22(args.query.campaign),
|
|
28383
|
-
groupBy:
|
|
28554
|
+
groupBy: readString34(args.query.groupBy),
|
|
28384
28555
|
limit: readNumber22(args.query.limit)
|
|
28385
28556
|
});
|
|
28386
28557
|
return successResponse(payload, {
|
|
@@ -28399,8 +28570,8 @@ async function handleWorktreeListAll(args) {
|
|
|
28399
28570
|
async function handleWorktreeListCampaigns(args) {
|
|
28400
28571
|
try {
|
|
28401
28572
|
const payload = await listCampaignsFromGatewayAuth(args.authContext, {
|
|
28402
|
-
topicId:
|
|
28403
|
-
status:
|
|
28573
|
+
topicId: readString34(args.query.topicId),
|
|
28574
|
+
status: readString34(args.query.status),
|
|
28404
28575
|
limit: readNumber22(args.query.limit)
|
|
28405
28576
|
});
|
|
28406
28577
|
return successResponse(payload, {
|
|
@@ -28436,27 +28607,27 @@ async function handleWorktreeActivate(args) {
|
|
|
28436
28607
|
}
|
|
28437
28608
|
async function handleWorktreeUpdate(args) {
|
|
28438
28609
|
try {
|
|
28439
|
-
const body =
|
|
28610
|
+
const body = asRecord32(args.body);
|
|
28440
28611
|
const payload = await updateWorktreeFromGatewayAuth(args.authContext, {
|
|
28441
28612
|
id: args.worktreeId,
|
|
28442
|
-
objective:
|
|
28443
|
-
hypothesis:
|
|
28444
|
-
rationale:
|
|
28613
|
+
objective: readString34(body.objective),
|
|
28614
|
+
hypothesis: readString34(body.hypothesis),
|
|
28615
|
+
rationale: readString34(body.rationale),
|
|
28445
28616
|
campaign: readNumber22(body.campaign),
|
|
28446
|
-
lane:
|
|
28617
|
+
lane: readString34(body.lane),
|
|
28447
28618
|
laneOrderInCampaign: readNumber22(body.laneOrderInCampaign),
|
|
28448
28619
|
orderInLane: readNumber22(body.orderInLane),
|
|
28449
28620
|
dependsOn: readStringArray18(body.dependsOn),
|
|
28450
28621
|
blocks: readStringArray18(body.blocks),
|
|
28451
|
-
gate:
|
|
28452
|
-
status:
|
|
28453
|
-
topicId:
|
|
28622
|
+
gate: readString34(body.gate),
|
|
28623
|
+
status: readString34(body.status),
|
|
28624
|
+
topicId: readString34(body.topicId),
|
|
28454
28625
|
additionalTopicIds: readStringArray18(body.additionalTopicIds),
|
|
28455
28626
|
proofArtifacts: Array.isArray(body.proofArtifacts) ? body.proofArtifacts : void 0,
|
|
28456
|
-
staffingHint:
|
|
28627
|
+
staffingHint: readString34(body.staffingHint),
|
|
28457
28628
|
lastReconciledAt: readNumber22(body.lastReconciledAt),
|
|
28458
28629
|
autoFixPolicy: body.autoFixPolicy && typeof body.autoFixPolicy === "object" ? body.autoFixPolicy : void 0,
|
|
28459
|
-
lensId:
|
|
28630
|
+
lensId: readString34(body.lensId)
|
|
28460
28631
|
});
|
|
28461
28632
|
return successResponse(payload, {
|
|
28462
28633
|
correlationId: args.correlationId,
|
|
@@ -28473,11 +28644,11 @@ async function handleWorktreeUpdate(args) {
|
|
|
28473
28644
|
}
|
|
28474
28645
|
async function handleWorktreeMerge(args) {
|
|
28475
28646
|
try {
|
|
28476
|
-
const body =
|
|
28647
|
+
const body = asRecord32(args.body);
|
|
28477
28648
|
const outcomes = normalizeMergeOutcomes2(body.outcomes);
|
|
28478
28649
|
const payload = await mergeWorktreeFromGatewayAuth(args.authContext, {
|
|
28479
28650
|
id: args.worktreeId,
|
|
28480
|
-
summary:
|
|
28651
|
+
summary: readString34(body.summary),
|
|
28481
28652
|
outcomes
|
|
28482
28653
|
});
|
|
28483
28654
|
return successResponse(payload, {
|
|
@@ -28495,7 +28666,7 @@ async function handleWorktreeMerge(args) {
|
|
|
28495
28666
|
}
|
|
28496
28667
|
async function handleWorktreeUpdateTargets(args) {
|
|
28497
28668
|
try {
|
|
28498
|
-
const body =
|
|
28669
|
+
const body = asRecord32(args.body);
|
|
28499
28670
|
const payload = await updateWorktreeTargetsFromGatewayAuth(
|
|
28500
28671
|
args.authContext,
|
|
28501
28672
|
{
|
|
@@ -28521,11 +28692,11 @@ async function handleWorktreeUpdateTargets(args) {
|
|
|
28521
28692
|
}
|
|
28522
28693
|
async function handleWorktreeComplete(args) {
|
|
28523
28694
|
try {
|
|
28524
|
-
const body =
|
|
28695
|
+
const body = asRecord32(args.body);
|
|
28525
28696
|
const payload = await completeWorktreeRecordFromGatewayAuth(
|
|
28526
28697
|
args.authContext,
|
|
28527
28698
|
{
|
|
28528
|
-
worktreeId:
|
|
28699
|
+
worktreeId: readString34(body.worktreeId) ?? "",
|
|
28529
28700
|
keyFindings: readStringArray18(body.keyFindings),
|
|
28530
28701
|
decisionsReached: readStringArray18(body.decisionsReached),
|
|
28531
28702
|
nextSteps: readStringArray18(body.nextSteps)
|
|
@@ -28546,9 +28717,9 @@ async function handleWorktreeComplete(args) {
|
|
|
28546
28717
|
}
|
|
28547
28718
|
async function handleWorktreeAdvancePhase(args) {
|
|
28548
28719
|
try {
|
|
28549
|
-
const body =
|
|
28720
|
+
const body = asRecord32(args.body);
|
|
28550
28721
|
const payload = await advanceWorktreePhaseFromGatewayAuth(args.authContext, {
|
|
28551
|
-
worktreeId:
|
|
28722
|
+
worktreeId: readString34(body.worktreeId) ?? ""
|
|
28552
28723
|
});
|
|
28553
28724
|
return successResponse(payload, {
|
|
28554
28725
|
correlationId: args.correlationId,
|
|
@@ -28565,10 +28736,10 @@ async function handleWorktreeAdvancePhase(args) {
|
|
|
28565
28736
|
}
|
|
28566
28737
|
async function handleWorktreeSetPhase(args) {
|
|
28567
28738
|
try {
|
|
28568
|
-
const body =
|
|
28739
|
+
const body = asRecord32(args.body);
|
|
28569
28740
|
const payload = await setWorktreePhaseFromGatewayAuth(args.authContext, {
|
|
28570
|
-
worktreeId:
|
|
28571
|
-
phase:
|
|
28741
|
+
worktreeId: readString34(body.worktreeId) ?? "",
|
|
28742
|
+
phase: readString34(body.phase) ?? ""
|
|
28572
28743
|
});
|
|
28573
28744
|
return successResponse(payload, {
|
|
28574
28745
|
correlationId: args.correlationId,
|
|
@@ -28585,12 +28756,12 @@ async function handleWorktreeSetPhase(args) {
|
|
|
28585
28756
|
}
|
|
28586
28757
|
async function handleWorktreePatchState(args) {
|
|
28587
28758
|
try {
|
|
28588
|
-
const body =
|
|
28759
|
+
const body = asRecord32(args.body);
|
|
28589
28760
|
const payload = await patchWorktreeStateFromGatewayAuth(
|
|
28590
28761
|
args.authContext,
|
|
28591
28762
|
{
|
|
28592
|
-
worktreeId:
|
|
28593
|
-
patch:
|
|
28763
|
+
worktreeId: readString34(body.worktreeId) ?? "",
|
|
28764
|
+
patch: asRecord32(body.patch)
|
|
28594
28765
|
}
|
|
28595
28766
|
);
|
|
28596
28767
|
return successResponse(payload, {
|
|
@@ -28608,7 +28779,7 @@ async function handleWorktreePatchState(args) {
|
|
|
28608
28779
|
}
|
|
28609
28780
|
async function handleWorktreeBulkCreate(args) {
|
|
28610
28781
|
try {
|
|
28611
|
-
const body =
|
|
28782
|
+
const body = asRecord32(args.body);
|
|
28612
28783
|
const payload = await bulkCreateWorktreesFromGatewayAuth(args.authContext, {
|
|
28613
28784
|
worktrees: Array.isArray(body.worktrees) ? body.worktrees : []
|
|
28614
28785
|
});
|
|
@@ -28627,6 +28798,6 @@ async function handleWorktreeBulkCreate(args) {
|
|
|
28627
28798
|
}
|
|
28628
28799
|
}
|
|
28629
28800
|
|
|
28630
|
-
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, handleGraphAnalysisListChanges, 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 };
|
|
28801
|
+
export { extractPermitWebhookTenantKeys, 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, handleGraphAnalysisListChanges, handleGraphAnalysisListSuggestions, handleGraphAnalysisSave, handleGraphAnalysisSaveSuggestions, handleGraphAnalysisUpdateSuggestion, handleGraphAnalyze, handleGraphBias, handleGraphEdgeList, handleGraphFalsify, handleGraphGaps, handleGraphNeighborhood, handleGraphNodeList, handleGraphRecommendationGet, handleGraphRecommendationStatus, handleGraphRecommendationsList, handleGraphTraverse, handleIdentityWhoami, handleOntologyBind, handleOntologyGet, handleOntologyList, handleOntologyMatch, handleOrgGraphByProvenance, handleOrgGraphNodeGet, handleOrgGraphPublished, handleOrgGraphSearch, handlePermitProjectionWebhook, 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, isPermitWebhookAuthorized };
|
|
28631
28802
|
//# sourceMappingURL=gateway.js.map
|
|
28632
28803
|
//# sourceMappingURL=gateway.js.map
|