@happyvertical/smrt-cli 0.53.2 → 0.53.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.
Files changed (65) hide show
  1. package/AGENTS.md +1 -0
  2. package/README.md +40 -0
  3. package/agents/app-commands.md +93 -0
  4. package/bin/smrt-web.mjs +19 -0
  5. package/bin/smrt.js +18 -12
  6. package/dist/{ApiKey-BZmbOTnL-nvcrCRDQ.js → ApiKey-BZmbOTnL-DPPF6Swn.js} +2 -2
  7. package/dist/ApiKeyCollection-Bfb_nw81-B1-2YKj8.js +2 -0
  8. package/dist/AuditLogCollection-B1YonCAP-DP4PCCw-.js +2 -0
  9. package/dist/{NostrIdentity-n70E0vck-BYlxfKXV.js → NostrIdentity-n70E0vck-D60BSg6H.js} +3 -3
  10. package/dist/NostrIdentityCollection-Ca74dkaL-C-v57o9N.js +2 -0
  11. package/dist/{OidcIdentity-Cb1bxreM-DDXZ2ULx.js → OidcIdentity-Cb1bxreM-B2eV2ahq.js} +2 -2
  12. package/dist/OidcIdentityCollection-TV8VdK69-BodvOtPJ.js +2 -0
  13. package/dist/ProfileAssetCollection-B9hacUJa-B7PLe0ld.js +2 -0
  14. package/dist/{ProfileCollection-DuJT7Mum-CEPfbh20.js → ProfileCollection-DuJT7Mum-B3Uhqphs.js} +26 -26
  15. package/dist/ProfileLinkCollection-4uNURz32-CLY1cBnn.js +2 -0
  16. package/dist/ProfileMetadataCollection-DQhbfEfa-Bzv-E4ep.js +2 -0
  17. package/dist/{ProfileMetafieldCollection-CoBuM_5G-DiMAQiDg.js → ProfileMetafieldCollection-CoBuM_5G-D-VqQuY1.js} +1 -1
  18. package/dist/{ProfileRelationshipCollection-DUVgaIqf-CUh6lQdy.js → ProfileRelationshipCollection-DUVgaIqf-gEkDBmkh.js} +1 -1
  19. package/dist/{ProfileRelationshipTermCollection-DtA9OM23-Sn18A9Vz.js → ProfileRelationshipTermCollection-DtA9OM23-DI_awdol.js} +1 -1
  20. package/dist/{ProfileRelationshipType-BRiRka6t-C0Sh1CTk.js → ProfileRelationshipType-BRiRka6t-Ci-qvFhm.js} +1 -1
  21. package/dist/{ProfileRelationshipTypeCollection-BdXwd7Kf-DEnQtZuK.js → ProfileRelationshipTypeCollection-BdXwd7Kf-CaQMLH9f.js} +1 -1
  22. package/dist/app/cli.d.ts +44 -0
  23. package/dist/app/cli.d.ts.map +1 -0
  24. package/dist/app/errors.d.ts +22 -0
  25. package/dist/app/errors.d.ts.map +1 -0
  26. package/dist/app/identity.d.ts +24 -0
  27. package/dist/app/identity.d.ts.map +1 -0
  28. package/dist/app/index.d.ts +19 -0
  29. package/dist/app/index.d.ts.map +1 -0
  30. package/dist/app/launchers.d.ts +40 -0
  31. package/dist/app/launchers.d.ts.map +1 -0
  32. package/dist/app/operations.d.ts +28 -0
  33. package/dist/app/operations.d.ts.map +1 -0
  34. package/dist/app/portability-assets.d.ts +151 -0
  35. package/dist/app/portability-assets.d.ts.map +1 -0
  36. package/dist/app/portability.d.ts +117 -0
  37. package/dist/app/portability.d.ts.map +1 -0
  38. package/dist/app/process-record.d.ts +54 -0
  39. package/dist/app/process-record.d.ts.map +1 -0
  40. package/dist/app/runtime.d.ts +83 -0
  41. package/dist/app/runtime.d.ts.map +1 -0
  42. package/dist/app.d.ts +1 -0
  43. package/dist/app.js +4 -0
  44. package/dist/cli-BRFsobey.js +1275 -0
  45. package/dist/cli-generator.d.ts.map +1 -1
  46. package/dist/commands/utilities.d.ts.map +1 -1
  47. package/dist/{commands-D6UUd6cJ.js → commands-dFz1e9A6.js} +17 -288
  48. package/dist/{dist-BwlARYH5.js → dist-Berwe80z.js} +4 -4
  49. package/dist/{dist-vvYmwpFv.js → dist-C2BqYVu7.js} +27 -27
  50. package/dist/{dist-BCAkEXaz.js → dist-D4BNILLN.js} +3 -3
  51. package/dist/{dist-BGsb09DN.js → dist-EJ63xUEp.js} +2 -2
  52. package/dist/index.js +14 -9
  53. package/dist/mcp-apps-packaging-CixRnxz_.js +286 -0
  54. package/dist/{oidcProvisioningPrimitives-D9OYu5-F-D5PxeL32.js → oidcProvisioningPrimitives-D9OYu5-F-B-kYsBTM.js} +4 -4
  55. package/dist/portability-DmQWSSXA.js +859 -0
  56. package/dist/resolveIdentity-B-PK6RwU-BmAU1Kse.js +2 -0
  57. package/package.json +14 -9
  58. package/dist/ApiKeyCollection-Bfb_nw81-CZVWaFPV.js +0 -2
  59. package/dist/AuditLogCollection-B1YonCAP-CnMHEquA.js +0 -2
  60. package/dist/NostrIdentityCollection-Ca74dkaL-C1Q9BNQc.js +0 -2
  61. package/dist/OidcIdentityCollection-TV8VdK69-RZ2ocmoN.js +0 -2
  62. package/dist/ProfileAssetCollection-B9hacUJa-C1qMe0_q.js +0 -2
  63. package/dist/ProfileLinkCollection-4uNURz32-GWzU0-kb.js +0 -2
  64. package/dist/ProfileMetadataCollection-DQhbfEfa-Dog-9nKM.js +0 -2
  65. package/dist/resolveIdentity-B-PK6RwU-CkUCBn4e.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"cli-generator.d.ts","sourceRoot":"","sources":["../src/cli-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-generator.d.ts","sourceRoot":"","sources":["../src/cli-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/commands/utilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/commands/utilities.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,27 @@
1
1
  import { t as resolveManifestEntryPackageName } from "./index.js";
2
2
  import { t as DEFAULT_CLI_CONFIG } from "./config-hqNo4lzH.js";
3
+ import { addMcpAppsRuntime, assertMcpAppsPluginName, configureMcpAppsConsumerRegistry, mcpAppsCommands, scaffoldMcpAppsPackage, validateMcpAppsPackage } from "./mcp-apps-packaging-CixRnxz_.js";
3
4
  import { createRequire } from "node:module";
4
5
  import * as fs from "node:fs";
5
- import { cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, realpathSync, writeFileSync } from "node:fs";
6
+ import { existsSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
6
7
  import * as path from "node:path";
7
8
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
8
9
  import { fileURLToPath, pathToFileURL } from "node:url";
9
10
  import { ObjectRegistry, SchemaComparer, checkLiveSchemaParity, collectForeignKeyOrphanCounts, createQualifiedName, ensureDeferredSystemTableCompatibility, generateDDLForEngine, getClassName, isQualifiedName, isSmrtCollectionExtendsName, migratePostgresSystemTimestamps, parseQualifiedName, planForeignKeyCreation, planPostgresSystemTimestampMigrations } from "@happyvertical/smrt-core";
10
11
  import { loadExternalManifestSync } from "@happyvertical/smrt-core/manifest";
12
+ import { execFileSync, execSync, spawn, spawnSync } from "node:child_process";
13
+ import { homedir, tmpdir } from "node:os";
14
+ import { createHash } from "node:crypto";
11
15
  import { access, cp, mkdir, readFile, rm, writeFile } from "node:fs/promises";
12
16
  import { createLogger } from "@happyvertical/logger";
13
17
  import glob from "fast-glob";
14
- import { createHash } from "node:crypto";
15
18
  import { getPackageConfig } from "@happyvertical/smrt-config";
16
19
  import { toSnakeCase as toSnakeCase$1 } from "@happyvertical/smrt-core/utils";
17
20
  import { checkKnowledgeGraphFreshness, discoverScopedPackageDirectories, readAgentModuleDocs, readPackageAgentDoc, resolveAgentModuleDocPaths } from "@happyvertical/smrt-core/knowledge";
18
21
  import { MCPGenerator } from "@happyvertical/smrt-core/generators";
19
22
  import { generateDeclarationsFromCLI } from "@happyvertical/smrt-core/prebuild";
20
- import { execFileSync, execSync, spawn, spawnSync } from "node:child_process";
21
23
  import https from "node:https";
22
- import { homedir, tmpdir } from "node:os";
23
24
  import { extract } from "tar";
24
- import Ajv2020 from "ajv/dist/2020.js";
25
25
  import { importWorkspaceModule } from "@happyvertical/smrt-core/utils/import-workspace-module";
26
26
  import { renderForeignKeyAddStatements } from "@happyvertical/smrt-core/schema";
27
27
  import { FRAMEWORK_BASE_TABLE_NAMES, backfillLegacyQualifiedNames, buildIntegerWidthTableStatements, collectIntegerWidthTargets, collectNullEqualIndexTargets, countLegacyQualifiedNameReferences, dropFrameworkBaseTables, migrateNullEqualIndexes, nullEqualIndexStatements, parsePostgresTimeoutMs, planFrameworkBaseTableDrop, preflightIntegerWidthWidening, preflightNullEqualIndexes, widenIntegerColumnsToBigInt } from "@happyvertical/smrt-core/migrations";
@@ -6245,287 +6245,6 @@ async function processPlaceholders(outputDir, config, options) {
6245
6245
  console.log(` Processed placeholders in ${replacedCount} files`);
6246
6246
  }
6247
6247
  //#endregion
6248
- //#region src/commands/mcp-apps-packaging.ts
6249
- /**
6250
- * Portable MCP Apps plugin packaging helpers.
6251
- *
6252
- * These helpers intentionally validate distribution metadata only. Runtime
6253
- * MCP extension metadata is owned by the v2 server adapter and is not an
6254
- * install-plugin manifest.
6255
- */
6256
- var requireSchema = createRequire(import.meta.url);
6257
- var pluginSchema = requireSchema("@happyvertical/smrt-dev-mcp/schemas/agent-plugins-1.0.0/plugin.schema.json");
6258
- var mcpSchema = requireSchema("@happyvertical/smrt-dev-mcp/schemas/agent-plugins-1.0.0/mcp.schema.json");
6259
- var ajv = new Ajv2020({
6260
- strict: true,
6261
- allErrors: true
6262
- });
6263
- var validatePluginSchema = ajv.compile(pluginSchema);
6264
- var validateMcpSchema = ajv.compile(mcpSchema);
6265
- var PLUGIN_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json";
6266
- var MCP_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json";
6267
- var CANONICAL_SCOPE_REGISTRY = "@happyvertical:registry=https://npm.happyvertical.com/";
6268
- var SECRET_KEY = /(?:api[_-]?key|secret|token|password|authorization|credential)/i;
6269
- var ENVIRONMENT_CREDENTIAL_FILE = /^\.env(?:\.|$)/;
6270
- var PRIVATE_KEY_CARRIER = /^(?:id_(?:rsa|dsa|ecdsa|ed25519)|private(?:[._-]key)?|.*\.key)$/i;
6271
- var PRIVATE_KEY_HEADER = /-----BEGIN(?: [A-Z0-9]+)* PRIVATE KEY-----/;
6272
- function add(result, code, message) {
6273
- result.findings.push({
6274
- code,
6275
- message
6276
- });
6277
- }
6278
- function readJson$1(path, result) {
6279
- try {
6280
- return JSON.parse(readFileSync(path, "utf8"));
6281
- } catch (error) {
6282
- add(result, "json-malformed", `${relative(process.cwd(), path)} is not valid JSON`);
6283
- return;
6284
- }
6285
- }
6286
- function isObject(value) {
6287
- return typeof value === "object" && value !== null && !Array.isArray(value);
6288
- }
6289
- function safeRelativePath(value, field, root, result) {
6290
- if (typeof value !== "string" || !value.startsWith("./") || value.includes("\\") || value.split("/").includes("..")) {
6291
- add(result, "unsafe-path", `${field} must be a root-relative ./ path without parent segments`);
6292
- return;
6293
- }
6294
- const target = resolve(root, value);
6295
- if (!target.startsWith(`${root}${sep}`)) {
6296
- add(result, "unsafe-path", `${field} resolves outside the plugin root`);
6297
- return;
6298
- }
6299
- try {
6300
- const stat = lstatSync(target);
6301
- if (stat.isSymbolicLink() || !stat.isFile()) add(result, "invalid-resource", `${field} must name a regular file`);
6302
- } catch {
6303
- add(result, "missing-resource", `${field} does not exist`);
6304
- }
6305
- }
6306
- function scanTree(root, current, result) {
6307
- for (const entry of readdirSync(current, { withFileTypes: true })) {
6308
- const path = join(current, entry.name);
6309
- const display = relative(root, path);
6310
- const stat = lstatSync(path);
6311
- if (stat.isSymbolicLink()) add(result, "symlink", `${display} is a symbolic link; plugin packages must contain regular files`);
6312
- else if (stat.isDirectory()) scanTree(root, path, result);
6313
- else if (stat.isFile()) if (ENVIRONMENT_CREDENTIAL_FILE.test(entry.name) || PRIVATE_KEY_CARRIER.test(entry.name)) add(result, "secret-artifact", `${display} is a credential carrier and cannot be packaged`);
6314
- else try {
6315
- if (PRIVATE_KEY_HEADER.test(readFileSync(path, "utf8"))) add(result, "secret-artifact", `${display} contains a private key and cannot be packaged`);
6316
- } catch {
6317
- add(result, "artifact-unreadable", `${display} could not be inspected and cannot be packaged`);
6318
- }
6319
- }
6320
- }
6321
- function scanSecrets(value, source, result) {
6322
- if (Array.isArray(value)) {
6323
- value.forEach((item) => {
6324
- scanSecrets(item, source, result);
6325
- });
6326
- return;
6327
- }
6328
- if (!isObject(value)) return;
6329
- for (const [key, child] of Object.entries(value)) {
6330
- if (SECRET_KEY.test(key) && typeof child === "string" && child.trim()) add(result, "secret-artifact", `${source} contains a credential-shaped ${key} field`);
6331
- scanSecrets(child, source, result);
6332
- }
6333
- }
6334
- function validateServerUrl(value, name, result) {
6335
- if (typeof value !== "string") return add(result, "server-url", `mcpServers.${name}.url must be a string`);
6336
- try {
6337
- const url = new URL(value);
6338
- const isLoopback = url.hostname === "127.0.0.1" || url.hostname === "localhost" || url.hostname === "[::1]";
6339
- if (url.username || url.password) add(result, "server-url", `mcpServers.${name}.url must not contain credentials`);
6340
- if (url.protocol !== "https:" && !(url.protocol === "http:" && isLoopback)) add(result, "server-url", `mcpServers.${name}.url must use HTTPS, except loopback development URLs`);
6341
- } catch {
6342
- add(result, "server-url", `mcpServers.${name}.url is not a URL`);
6343
- }
6344
- }
6345
- /** Validate portable plugin files and the optional OpenAI install extension. */
6346
- function validateMcpAppsPackage(rootPath) {
6347
- const root = resolve(rootPath);
6348
- const result = {
6349
- findings: [],
6350
- valid: false
6351
- };
6352
- try {
6353
- scanTree(root, root, result);
6354
- } catch {
6355
- add(result, "plugin-root", "Plugin root must be a readable directory");
6356
- return result;
6357
- }
6358
- const pluginPath = join(root, "plugin.json");
6359
- const mcpPath = join(root, "mcp.json");
6360
- if (!lstatExists(pluginPath)) add(result, "plugin-missing", "plugin.json is required at the plugin root");
6361
- if (!lstatExists(mcpPath)) add(result, "mcp-missing", "mcp.json is required at the plugin root");
6362
- const plugin = lstatExists(pluginPath) ? readJson$1(pluginPath, result) : void 0;
6363
- const mcp = lstatExists(mcpPath) ? readJson$1(mcpPath, result) : void 0;
6364
- if (plugin !== void 0 && !isObject(plugin)) add(result, "plugin-object", "plugin.json must contain an object");
6365
- if (mcp !== void 0 && !isObject(mcp)) add(result, "mcp-object", "mcp.json must contain an object");
6366
- if (plugin !== void 0 && !validatePluginSchema(plugin)) add(result, "plugin-format", "plugin.json violates the pinned Agent Plugins 1.0.0 schema");
6367
- if (mcp !== void 0 && !validateMcpSchema(mcp)) add(result, "mcp-format", "mcp.json violates the pinned Agent Plugins 1.0.0 schema");
6368
- if (isObject(plugin)) {
6369
- scanSecrets(plugin, "plugin.json", result);
6370
- if (plugin.$schema !== PLUGIN_SCHEMA) add(result, "plugin-schema", `plugin.json.$schema must be ${PLUGIN_SCHEMA}`);
6371
- if (plugin.extensions !== void 0 && !isObject(plugin.extensions)) add(result, "extensions", "plugin.json.extensions must be an object");
6372
- const openai = (isObject(plugin.extensions) ? plugin.extensions : void 0)?.["com.openai"];
6373
- if (openai !== void 0 && !isObject(openai)) add(result, "openai-extension", "extensions.com.openai must be an object");
6374
- if (isObject(openai)) {
6375
- if (openai.apps !== void 0) safeRelativePath(openai.apps, "extensions.com.openai.apps", root, result);
6376
- const ui = openai.interface;
6377
- if (ui !== void 0 && !isObject(ui)) add(result, "openai-interface", "extensions.com.openai.interface must be an object");
6378
- if (isObject(ui)) {
6379
- for (const key of ["composerIcon", "logo"]) if (ui[key] !== void 0) safeRelativePath(ui[key], `extensions.com.openai.interface.${key}`, root, result);
6380
- if (ui.screenshots !== void 0) if (!Array.isArray(ui.screenshots) || ui.screenshots.some((path) => typeof path !== "string")) add(result, "openai-screenshots", "interface.screenshots must be an array of paths");
6381
- else ui.screenshots.forEach((path, index) => {
6382
- safeRelativePath(path, `extensions.com.openai.interface.screenshots[${index}]`, root, result);
6383
- });
6384
- }
6385
- }
6386
- }
6387
- if (isObject(mcp)) {
6388
- scanSecrets(mcp, "mcp.json", result);
6389
- if (mcp.$schema !== MCP_SCHEMA) add(result, "mcp-schema", `mcp.json.$schema must be ${MCP_SCHEMA}`);
6390
- if (!isObject(mcp.mcpServers) || Object.keys(mcp.mcpServers).length === 0) add(result, "mcp-servers", "mcp.json requires a non-empty mcpServers object");
6391
- else for (const [name, server] of Object.entries(mcp.mcpServers)) {
6392
- if (!name.trim() || !isObject(server)) {
6393
- add(result, "mcp-server", `mcpServers.${name || "<empty>"} must be an object with a name`);
6394
- continue;
6395
- }
6396
- if (server.type !== "streamable-http") add(result, "mcp-transport", `mcpServers.${name}.type must be streamable-http`);
6397
- validateServerUrl(server.url, name, result);
6398
- }
6399
- }
6400
- result.valid = result.findings.length === 0;
6401
- return result;
6402
- }
6403
- function lstatExists(path) {
6404
- try {
6405
- return lstatSync(path).isFile();
6406
- } catch {
6407
- return false;
6408
- }
6409
- }
6410
- /**
6411
- * Add the public, credential-free SMRT package route to a generated app.
6412
- * A pre-existing scope route is an explicit consumer decision and must not be
6413
- * silently replaced.
6414
- */
6415
- function configureMcpAppsConsumerRegistry(appRoot) {
6416
- const npmrcPath = join(resolve(appRoot), ".npmrc");
6417
- let existing = "";
6418
- try {
6419
- const stat = lstatSync(npmrcPath);
6420
- if (stat.isSymbolicLink() || !stat.isFile()) throw new Error("Generated application .npmrc must be a regular file");
6421
- existing = readFileSync(npmrcPath, "utf8");
6422
- } catch (error) {
6423
- if (error.code !== "ENOENT") throw error;
6424
- }
6425
- const scopeLines = existing.split(/\r?\n/).filter((line) => /^\s*@happyvertical:registry(?:\s|=|$)/.test(line));
6426
- if (scopeLines.length > 0) {
6427
- for (const line of scopeLines) {
6428
- const match = /^\s*@happyvertical:registry\s*=\s*(\S+?)(?:\s+[;#].*)?\s*$/.exec(line);
6429
- if (!match || match[1] !== "https://npm.happyvertical.com/") throw new Error("Generated application already declares a different or malformed @happyvertical registry; refusing to replace it");
6430
- }
6431
- return;
6432
- }
6433
- writeFileSync(npmrcPath, `${existing}${existing && !existing.endsWith("\n") ? "\n" : ""}${CANONICAL_SCOPE_REGISTRY}\n`);
6434
- }
6435
- /** Copy the opt-in app route/resources and merge only its declared dependencies. */
6436
- function addMcpAppsRuntime(sourceRoot, appRoot) {
6437
- const resolvedSource = resolve(sourceRoot);
6438
- const source = join(lstatSync(resolvedSource).isFile() ? dirname(resolvedSource) : resolvedSource, "mcp-apps-template");
6439
- const dependencies = JSON.parse(readFileSync(join(source, "package.dependencies.json"), "utf8"));
6440
- cpSync(join(source, "src"), join(resolve(appRoot), "src"), {
6441
- recursive: true,
6442
- force: false,
6443
- errorOnExist: true
6444
- });
6445
- const packagePath = join(resolve(appRoot), "package.json");
6446
- const packageJson = JSON.parse(readFileSync(packagePath, "utf8"));
6447
- packageJson.dependencies = {
6448
- ...packageJson.dependencies,
6449
- ...dependencies
6450
- };
6451
- writeFileSync(packagePath, `${JSON.stringify(packageJson, null, 2)}\n`);
6452
- }
6453
- function assertMcpAppsPluginName(name) {
6454
- if (!validatePluginSchema({
6455
- $schema: PLUGIN_SCHEMA,
6456
- name
6457
- })) throw new Error("Plugin name must satisfy Agent Plugins 1.0.0 (1–64 lowercase letters, digits, dots or hyphens; no repeated separators).");
6458
- }
6459
- /** Create the minimal local portable package. It intentionally has no .app.json: registered IDs are host-owned. */
6460
- function scaffoldMcpAppsPackage(rootPath, name, version = "0.1.0") {
6461
- assertMcpAppsPluginName(name);
6462
- const root = resolve(rootPath);
6463
- mkdirSync(root, { recursive: true });
6464
- const pluginPath = join(root, "plugin.json");
6465
- const mcpPath = join(root, "mcp.json");
6466
- if (lstatExists(pluginPath) || lstatExists(mcpPath)) throw new Error("Refusing to overwrite existing MCP Apps package files");
6467
- writeFileSync(pluginPath, `${JSON.stringify({
6468
- $schema: PLUGIN_SCHEMA,
6469
- name,
6470
- version,
6471
- description: "SMRT MCP Apps package",
6472
- extensions: { "com.openai": { interface: {
6473
- displayName: name,
6474
- shortDescription: "SMRT MCP Apps package"
6475
- } } }
6476
- }, null, 2)}\n`);
6477
- writeFileSync(mcpPath, `${JSON.stringify({
6478
- $schema: MCP_SCHEMA,
6479
- mcpServers: { smrt: {
6480
- type: "streamable-http",
6481
- url: "http://127.0.0.1:3000/api/mcp"
6482
- } }
6483
- }, null, 2)}\n`);
6484
- }
6485
- var mcpAppsCommands = {
6486
- "mcp-apps scaffold": {
6487
- name: "mcp-apps scaffold",
6488
- description: "Create opt-in portable MCP Apps plugin metadata for a local SMRT app",
6489
- options: {
6490
- "output-dir": {
6491
- type: "string",
6492
- description: "Plugin directory (defaults to ./mcp-apps)"
6493
- },
6494
- name: {
6495
- type: "string",
6496
- description: "Portable plugin name",
6497
- default: "smrt-app"
6498
- },
6499
- version: {
6500
- type: "string",
6501
- description: "Portable plugin version",
6502
- default: "0.1.0"
6503
- }
6504
- },
6505
- handler: async (_args, options) => {
6506
- const root = typeof options["output-dir"] === "string" ? options["output-dir"] : "./mcp-apps";
6507
- scaffoldMcpAppsPackage(root, typeof options.name === "string" ? options.name : "smrt-app", typeof options.version === "string" ? options.version : "0.1.0");
6508
- console.log(`Created portable MCP Apps metadata in ${root}.`);
6509
- console.log("Mount and authorize the native v2 /api/mcp endpoint before changing the loopback URL.");
6510
- }
6511
- },
6512
- "mcp-apps validate": {
6513
- name: "mcp-apps validate",
6514
- description: "Fail closed when portable MCP Apps package metadata is unsafe or incomplete",
6515
- options: { "output-dir": {
6516
- type: "string",
6517
- description: "Plugin directory (defaults to ./mcp-apps)"
6518
- } },
6519
- handler: async (_args, options) => {
6520
- const root = typeof options["output-dir"] === "string" ? options["output-dir"] : "./mcp-apps";
6521
- const result = validateMcpAppsPackage(root);
6522
- for (const finding of result.findings) console.error(`${finding.code}: ${finding.message}`);
6523
- if (!result.valid) throw new Error(`MCP Apps package validation failed with ${result.findings.length} finding(s)`);
6524
- console.log(`MCP Apps package at ${root} is valid.`);
6525
- }
6526
- }
6527
- };
6528
- //#endregion
6529
6248
  //#region src/commands/gnode.ts
6530
6249
  /**
6531
6250
  * Gnode CLI Commands
@@ -7409,7 +7128,7 @@ var dbMaterializeTenantHierarchyCommand = {
7409
7128
  if (!config.database?.url || config.database.url === ":memory:") throw new Error("Database configuration required for db:materialize-tenant-hierarchy. Configure database.url in smrt.config.ts (or DATABASE_URL).");
7410
7129
  const dbType = config.database.type || "sqlite";
7411
7130
  const { getDatabase } = await import("@happyvertical/sql");
7412
- const { materializeTenantHierarchy, TenantHierarchyMaterializationError } = await import("./dist-vvYmwpFv.js");
7131
+ const { materializeTenantHierarchy, TenantHierarchyMaterializationError } = await import("./dist-C2BqYVu7.js");
7413
7132
  db = await getDatabase({
7414
7133
  type: dbType,
7415
7134
  url: config.database.url
@@ -7618,7 +7337,7 @@ var dbMigrateLedgerAccountsCommand = {
7618
7337
  if (dbType !== "postgres") throw new Error("db:migrate-ledger-accounts currently supports PostgreSQL only; no changes were made. See the smrt-ledgers README for SQLite.");
7619
7338
  await autoDiscoverAndLoad();
7620
7339
  const { getDatabase } = await import("@happyvertical/sql");
7621
- const { migrateLedgerAccountsTable, planLedgerAccountsTableMove } = await import("./dist-BwlARYH5.js");
7340
+ const { migrateLedgerAccountsTable, planLedgerAccountsTableMove } = await import("./dist-Berwe80z.js");
7622
7341
  db = await getDatabase({
7623
7342
  type: dbType,
7624
7343
  url: config.database.url
@@ -10013,6 +9732,16 @@ function renderAgentSurfaceReport(report) {
10013
9732
  */
10014
9733
  var utilityCommands = {
10015
9734
  ...mcpAppsCommands,
9735
+ app: {
9736
+ name: "app",
9737
+ description: "Application operations: install, setup, recover, start, stop, doctor, open, backup, export, import, migrate, worker, dev, build (`smrt app help`)",
9738
+ args: ["[operation]", "[args...]"],
9739
+ handler: async (args) => {
9740
+ const { runAppCommand } = await import("./cli-BRFsobey.js").then((n) => n.r);
9741
+ const code = await runAppCommand(args);
9742
+ if (code !== 0) process.exitCode = code;
9743
+ }
9744
+ },
10016
9745
  introspect: {
10017
9746
  name: "introspect",
10018
9747
  description: "Analyze project and discover SMRT objects",