@happyvertical/smrt-core 0.38.3 → 0.38.4
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/__tests__/fixtures/advisor-test-classes.d.ts +9 -0
- package/dist/__tests__/fixtures/advisor-test-classes.d.ts.map +1 -1
- package/dist/manifest/static-manifest.js +2 -2
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest/test-manifest-stub.d.ts.map +1 -1
- package/dist/manifest/test-manifest-stub.js +157 -2
- package/dist/manifest/test-manifest-stub.js.map +1 -1
- package/dist/manifest.json +2 -2
- package/dist/mcp-advisor/tools/preview-api-endpoints.d.ts.map +1 -1
- package/dist/mcp-advisor/types.d.ts +1 -0
- package/dist/mcp-advisor/types.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +4 -4
- package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -1
- package/dist/vite-plugin/sveltekit-generator.js +46 -7
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
- package/package.json +4 -4
package/dist/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "1.0.0",
|
|
3
|
-
"timestamp":
|
|
3
|
+
"timestamp": 1783263020457,
|
|
4
4
|
"packageName": "@happyvertical/smrt-core",
|
|
5
|
-
"packageVersion": "0.38.
|
|
5
|
+
"packageVersion": "0.38.4",
|
|
6
6
|
"objects": {
|
|
7
7
|
"@happyvertical/smrt-core:SmrtClass": {
|
|
8
8
|
"name": "smrtclass",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-api-endpoints.d.ts","sourceRoot":"","sources":["../../../src/mcp-advisor/tools/preview-api-endpoints.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"preview-api-endpoints.d.ts","sourceRoot":"","sources":["../../../src/mcp-advisor/tools/preview-api-endpoints.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAezE;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC;IAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAuO3E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp-advisor/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp-advisor/types.ts"],"names":[],"mappings":"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"}
|
package/dist/smrt-knowledge.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-05T14:50:17.572Z",
|
|
4
4
|
"packageName": "@happyvertical/smrt-core",
|
|
5
|
-
"packageVersion": "0.38.
|
|
5
|
+
"packageVersion": "0.38.4",
|
|
6
6
|
"sourceManifestPath": "dist/manifest.json",
|
|
7
7
|
"agentDocPath": "AGENTS.md",
|
|
8
8
|
"sourceHashes": {
|
|
9
|
-
"manifest": "
|
|
10
|
-
"packageJson": "
|
|
9
|
+
"manifest": "97274cbab5dfed317ed4f84d9c1520c93b27c0e7e4cafdcbe64a2ff17905d8f5",
|
|
10
|
+
"packageJson": "fc46b7062c2ee6a126ef794e3e2d042f060812706fde2787d10f59e29b0ea325",
|
|
11
11
|
"agents": "3d4ecc60503af2e37272cfc4ea8315344a84b2c74c10f5c6a83cac1dcd67e0ef"
|
|
12
12
|
},
|
|
13
13
|
"exports": [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sveltekit-generator.d.ts","sourceRoot":"","sources":["../../src/vite-plugin/sveltekit-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAQvE,OAAO,KAAK,EAEV,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAM1B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC;;;OAGG;IACH,YAAY,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrC;;;;OAIG;IACH,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACrC;
|
|
1
|
+
{"version":3,"file":"sveltekit-generator.d.ts","sourceRoot":"","sources":["../../src/vite-plugin/sveltekit-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAQvE,OAAO,KAAK,EAEV,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAM1B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC;;;OAGG;IACH,YAAY,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrC;;;;OAIG;IACH,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACrC;AA8pBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKtD;AAuWD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CA+Df;AAyrBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,GAC/B,GAAG,CAAC,MAAM,CAAC,CAwCb;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,mBAAmB,GAC5B,wBAAwB,EAAE,CA+B5B;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,mBAAmB,GAC5B,IAAI,CAkBN"}
|
|
@@ -415,7 +415,7 @@ function isTenantScoped(objectDef) {
|
|
|
415
415
|
*/
|
|
416
416
|
function generateTenantContextHelper() {
|
|
417
417
|
return `
|
|
418
|
-
import { enterTenantContext, hasTenantContext, isTenancyEnabled } from '@happyvertical/smrt-tenancy';
|
|
418
|
+
import { enterTenantContext, getCurrentTenant, hasTenantContext, isSuperAdminBypass, isTenancyEnabled } from '@happyvertical/smrt-tenancy';
|
|
419
419
|
|
|
420
420
|
function establishTenantContext(locals: unknown): void {
|
|
421
421
|
if (hasTenantContext()) return;
|
|
@@ -441,6 +441,18 @@ function tenantReadScope(): { tenantId: null } | undefined {
|
|
|
441
441
|
? { tenantId: null }
|
|
442
442
|
: undefined;
|
|
443
443
|
}
|
|
444
|
+
|
|
445
|
+
// Custom GET actions that accept a single options object may perform their
|
|
446
|
+
// own reads instead of calling generated list/get handlers. Give those actions
|
|
447
|
+
// an explicit tenant scope: active tenant when present, NULL-tenant global rows
|
|
448
|
+
// when tenancy is enabled but no tenant context exists. Super-admin bypass
|
|
449
|
+
// stays unscoped so admin callers keep deliberate cross-tenant access.
|
|
450
|
+
function tenantReadOptionsScope(): { tenantId: string | null } | undefined {
|
|
451
|
+
if (!isTenancyEnabled() || isSuperAdminBypass()) {
|
|
452
|
+
return undefined;
|
|
453
|
+
}
|
|
454
|
+
return { tenantId: getCurrentTenant()?.tenantId ?? null };
|
|
455
|
+
}
|
|
444
456
|
`;
|
|
445
457
|
}
|
|
446
458
|
/**
|
|
@@ -510,10 +522,14 @@ function buildPathParamsObjectLiteral(pathParamNames) {
|
|
|
510
522
|
${pathParamNames.map((paramName) => ` ${buildObjectTypeProperty(paramName)}: ${buildRouteParamAccess(paramName)},`).join("\n")}
|
|
511
523
|
}`;
|
|
512
524
|
}
|
|
513
|
-
function
|
|
525
|
+
function hasSingleOptionsParameter(actionDef) {
|
|
526
|
+
const parameters = Array.isArray(actionDef.parameters) ? actionDef.parameters : [];
|
|
527
|
+
return parameters.length === 1 && parameters[0]?.name === "options";
|
|
528
|
+
}
|
|
529
|
+
function buildActionInvocationArgs(actionDef, optionsIdentifier = "options") {
|
|
514
530
|
const parameters = Array.isArray(actionDef.parameters) ? actionDef.parameters : [];
|
|
515
531
|
if (parameters.length === 0) return [];
|
|
516
|
-
if (
|
|
532
|
+
if (hasSingleOptionsParameter(actionDef)) return [optionsIdentifier];
|
|
517
533
|
return parameters.map((parameter) => buildOptionsPropertyAccess(parameter.name));
|
|
518
534
|
}
|
|
519
535
|
function buildObjectTypeProperty(propertyName) {
|
|
@@ -578,6 +594,21 @@ function buildActionInvocationExpression(receiverExpression, actionName, invocat
|
|
|
578
594
|
" )"
|
|
579
595
|
].join("\n");
|
|
580
596
|
}
|
|
597
|
+
function buildScopedOptionsForTenantRead(actionDef, routeConfig, tenantScoped) {
|
|
598
|
+
if (!tenantScoped || routeConfig.method !== "GET" || !hasSingleOptionsParameter(actionDef)) return {
|
|
599
|
+
source: "",
|
|
600
|
+
optionsIdentifier: "options"
|
|
601
|
+
};
|
|
602
|
+
return {
|
|
603
|
+
source: ` const readScope = tenantReadOptionsScope();
|
|
604
|
+
const scopedOptions = readScope
|
|
605
|
+
? ({ ...options, ...readScope } as ActionArgs[0])
|
|
606
|
+
: options;
|
|
607
|
+
|
|
608
|
+
`,
|
|
609
|
+
optionsIdentifier: "scopedOptions"
|
|
610
|
+
};
|
|
611
|
+
}
|
|
581
612
|
function findItemClassRegistryKey(className, objectDef, manifest) {
|
|
582
613
|
const itemClassName = objectDef.extendsTypeArg || (className.endsWith("Collection") ? className.slice(0, -10) : void 0);
|
|
583
614
|
if (!itemClassName) return className;
|
|
@@ -1359,13 +1390,14 @@ function generateActionRouteHandler(lookupClassName, actionName, actionDef, rout
|
|
|
1359
1390
|
if (tenantScoped) guardLines.push(" establishTenantContext(locals);");
|
|
1360
1391
|
const authGuardLine = guardLines.join("\n");
|
|
1361
1392
|
const needsRequest = actionDef.parameters.length > 0;
|
|
1362
|
-
const invocationArgs = buildActionInvocationArgs(actionDef);
|
|
1363
1393
|
const collectionHandlerArgs = buildRouteHandlerArgs(routeConfig.pathParamNames.length > 0, needsRequest);
|
|
1364
1394
|
const itemHandlerArgs = buildRouteHandlerArgs(true, needsRequest);
|
|
1365
1395
|
if (hostType === "collection") {
|
|
1366
1396
|
const optionsLoad = buildActionOptionsLoad(actionName, actionDef, routeConfig, hostTypeName, actionDef.isStatic);
|
|
1367
1397
|
const receiverExpression = actionDef.isStatic ? "CollectionClass" : "typedCollection";
|
|
1368
1398
|
const staticTargetLoad = actionDef.isStatic ? ` const CollectionClass = typedCollection.constructor as typeof ${hostTypeName};\n` : "";
|
|
1399
|
+
const scopedOptions = buildScopedOptionsForTenantRead(actionDef, routeConfig, tenantScoped);
|
|
1400
|
+
const invocationArgs = buildActionInvocationArgs(actionDef, scopedOptions.optionsIdentifier);
|
|
1369
1401
|
return `// Custom collection method: ${actionName}
|
|
1370
1402
|
export const ${handlerName}: RequestHandler = async (${collectionHandlerArgs}) => {
|
|
1371
1403
|
${authGuardLine}
|
|
@@ -1375,7 +1407,7 @@ ${generateCollectionLoad(lookupClassName, { typeName: lookupTypeName })}
|
|
|
1375
1407
|
${generateCollectionNotRegisteredError(lookupClassName)}
|
|
1376
1408
|
${staticTargetLoad}
|
|
1377
1409
|
|
|
1378
|
-
${optionsLoad} const result = ${buildActionInvocationExpression(receiverExpression, actionName, invocationArgs)};
|
|
1410
|
+
${optionsLoad}${scopedOptions.source} const result = ${buildActionInvocationExpression(receiverExpression, actionName, invocationArgs)};
|
|
1379
1411
|
|
|
1380
1412
|
return json({
|
|
1381
1413
|
action: '${actionName}',
|
|
@@ -1386,6 +1418,8 @@ ${optionsLoad} const result = ${buildActionInvocationExpression(receiverExpress
|
|
|
1386
1418
|
}
|
|
1387
1419
|
if (routeConfig.scope === "collection") {
|
|
1388
1420
|
const optionsLoad = buildActionOptionsLoad(actionName, actionDef, routeConfig, hostTypeName, true);
|
|
1421
|
+
const scopedOptions = buildScopedOptionsForTenantRead(actionDef, routeConfig, tenantScoped);
|
|
1422
|
+
const invocationArgs = buildActionInvocationArgs(actionDef, scopedOptions.optionsIdentifier);
|
|
1389
1423
|
return `// Custom collection action: ${actionName}
|
|
1390
1424
|
export const ${handlerName}: RequestHandler = async (${collectionHandlerArgs}) => {
|
|
1391
1425
|
${authGuardLine}
|
|
@@ -1393,7 +1427,7 @@ ${authGuardLine}
|
|
|
1393
1427
|
const registered = ObjectRegistry.getClass('${lookupClassName}');
|
|
1394
1428
|
${generateClassNotRegisteredError(lookupClassName)}
|
|
1395
1429
|
|
|
1396
|
-
${optionsLoad} const ClassRef = registered.constructor as typeof ${hostTypeName};
|
|
1430
|
+
${optionsLoad}${scopedOptions.source} const ClassRef = registered.constructor as typeof ${hostTypeName};
|
|
1397
1431
|
const result = ${buildActionInvocationExpression("ClassRef", actionName, invocationArgs)};
|
|
1398
1432
|
|
|
1399
1433
|
return json({
|
|
@@ -1404,12 +1438,17 @@ ${optionsLoad} const ClassRef = registered.constructor as typeof ${hostTypeName
|
|
|
1404
1438
|
`;
|
|
1405
1439
|
}
|
|
1406
1440
|
const optionsLoad = buildActionOptionsLoad(actionName, actionDef, routeConfig, hostTypeName, false);
|
|
1441
|
+
const scopedItemLoad = tenantScoped && routeConfig.method === "GET" ? ` const readScope = tenantReadScope();
|
|
1442
|
+
const item = await collection.get(
|
|
1443
|
+
readScope ? { id: params.id, ...readScope } : params.id,
|
|
1444
|
+
);` : " const item = await collection.get(params.id);";
|
|
1445
|
+
const invocationArgs = buildActionInvocationArgs(actionDef);
|
|
1407
1446
|
return `// Custom action: ${actionName}
|
|
1408
1447
|
export const ${handlerName}: RequestHandler = async (${itemHandlerArgs}) => {
|
|
1409
1448
|
${authGuardLine}
|
|
1410
1449
|
const publicJsonOptions = getPublicJsonOptions(locals);
|
|
1411
1450
|
${generateCollectionLoad(lookupClassName, { typeName: lookupTypeName })}
|
|
1412
|
-
|
|
1451
|
+
${scopedItemLoad}
|
|
1413
1452
|
${generateNotFoundError(lookupClassName)}
|
|
1414
1453
|
|
|
1415
1454
|
${optionsLoad} const result = ${buildActionInvocationExpression("item", actionName, invocationArgs)};
|