@lobu/cli 3.0.3 → 3.0.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 (106) hide show
  1. package/README.md +8 -8
  2. package/dist/__tests__/login.test.d.ts +2 -0
  3. package/dist/__tests__/login.test.d.ts.map +1 -0
  4. package/dist/__tests__/login.test.js +173 -0
  5. package/dist/__tests__/login.test.js.map +1 -0
  6. package/dist/api/client.d.ts.map +1 -1
  7. package/dist/api/client.js +3 -5
  8. package/dist/api/client.js.map +1 -1
  9. package/dist/api/context.d.ts +22 -0
  10. package/dist/api/context.d.ts.map +1 -0
  11. package/dist/api/context.js +113 -0
  12. package/dist/api/context.js.map +1 -0
  13. package/dist/api/credentials.d.ts +9 -4
  14. package/dist/api/credentials.d.ts.map +1 -1
  15. package/dist/api/credentials.js +127 -15
  16. package/dist/api/credentials.js.map +1 -1
  17. package/dist/commands/chat.d.ts +11 -0
  18. package/dist/commands/chat.d.ts.map +1 -0
  19. package/dist/commands/chat.js +195 -0
  20. package/dist/commands/chat.js.map +1 -0
  21. package/dist/commands/context.d.ts +8 -0
  22. package/dist/commands/context.d.ts.map +1 -0
  23. package/dist/commands/context.js +46 -0
  24. package/dist/commands/context.js.map +1 -0
  25. package/dist/commands/dev.d.ts +1 -8
  26. package/dist/commands/dev.d.ts.map +1 -1
  27. package/dist/commands/dev.js +236 -57
  28. package/dist/commands/dev.js.map +1 -1
  29. package/dist/commands/init.d.ts.map +1 -1
  30. package/dist/commands/init.js +351 -676
  31. package/dist/commands/init.js.map +1 -1
  32. package/dist/commands/launch.d.ts.map +1 -1
  33. package/dist/commands/launch.js +2 -8
  34. package/dist/commands/launch.js.map +1 -1
  35. package/dist/commands/login.d.ts +2 -0
  36. package/dist/commands/login.d.ts.map +1 -1
  37. package/dist/commands/login.js +283 -14
  38. package/dist/commands/login.js.map +1 -1
  39. package/dist/commands/logout.d.ts +3 -1
  40. package/dist/commands/logout.d.ts.map +1 -1
  41. package/dist/commands/logout.js +5 -3
  42. package/dist/commands/logout.js.map +1 -1
  43. package/dist/commands/providers/add.d.ts.map +1 -1
  44. package/dist/commands/providers/add.js +38 -14
  45. package/dist/commands/providers/add.js.map +1 -1
  46. package/dist/commands/providers/list.d.ts.map +1 -1
  47. package/dist/commands/providers/list.js +4 -2
  48. package/dist/commands/providers/list.js.map +1 -1
  49. package/dist/commands/skills/add.d.ts.map +1 -1
  50. package/dist/commands/skills/add.js +25 -7
  51. package/dist/commands/skills/add.js.map +1 -1
  52. package/dist/commands/skills/info.d.ts.map +1 -1
  53. package/dist/commands/skills/info.js.map +1 -1
  54. package/dist/commands/skills/list.d.ts.map +1 -1
  55. package/dist/commands/skills/list.js.map +1 -1
  56. package/dist/commands/skills/registry.d.ts +5 -0
  57. package/dist/commands/skills/registry.d.ts.map +1 -1
  58. package/dist/commands/skills/registry.js.map +1 -1
  59. package/dist/commands/skills/search.d.ts.map +1 -1
  60. package/dist/commands/skills/search.js +3 -1
  61. package/dist/commands/skills/search.js.map +1 -1
  62. package/dist/commands/status.d.ts +1 -1
  63. package/dist/commands/status.d.ts.map +1 -1
  64. package/dist/commands/status.js +107 -4
  65. package/dist/commands/status.js.map +1 -1
  66. package/dist/commands/validate.d.ts.map +1 -1
  67. package/dist/commands/validate.js +9 -20
  68. package/dist/commands/validate.js.map +1 -1
  69. package/dist/commands/whoami.d.ts +3 -1
  70. package/dist/commands/whoami.d.ts.map +1 -1
  71. package/dist/commands/whoami.js +17 -3
  72. package/dist/commands/whoami.js.map +1 -1
  73. package/dist/config/agents-manifest.d.ts +92 -0
  74. package/dist/config/agents-manifest.d.ts.map +1 -0
  75. package/dist/config/agents-manifest.js +7 -0
  76. package/dist/config/agents-manifest.js.map +1 -0
  77. package/dist/config/loader.d.ts +18 -0
  78. package/dist/config/loader.d.ts.map +1 -1
  79. package/dist/config/loader.js +62 -2
  80. package/dist/config/loader.js.map +1 -1
  81. package/dist/config/platform-schemas.d.ts +120 -0
  82. package/dist/config/platform-schemas.d.ts.map +1 -0
  83. package/dist/config/platform-schemas.js +97 -0
  84. package/dist/config/platform-schemas.js.map +1 -0
  85. package/dist/config/schema.d.ts +546 -111
  86. package/dist/config/schema.d.ts.map +1 -1
  87. package/dist/config/schema.js +26 -19
  88. package/dist/config/schema.js.map +1 -1
  89. package/dist/config/transformer.d.ts +3 -0
  90. package/dist/config/transformer.d.ts.map +1 -1
  91. package/dist/config/transformer.js +7 -10
  92. package/dist/config/transformer.js.map +1 -1
  93. package/dist/index.d.ts +0 -4
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +52 -10
  96. package/dist/index.js.map +1 -1
  97. package/dist/system-skills.json +89 -29
  98. package/dist/templates/.env.tmpl +3 -14
  99. package/dist/templates/.gitignore.tmpl +1 -0
  100. package/dist/templates/README.md.tmpl +7 -8
  101. package/dist/utils/markdown.d.ts +3 -0
  102. package/dist/utils/markdown.d.ts.map +1 -0
  103. package/dist/utils/markdown.js +10 -0
  104. package/dist/utils/markdown.js.map +1 -0
  105. package/package.json +4 -2
  106. package/dist/templates/lobu.toml.tmpl +0 -44
@@ -1,5 +1,5 @@
1
- import { readFile } from "node:fs/promises";
2
- import { join } from "node:path";
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import { join, resolve } from "node:path";
3
3
  import { parse as parseToml } from "smol-toml";
4
4
  import { lobuConfigSchema } from "./schema.js";
5
5
  export const CONFIG_FILENAME = "lobu.toml";
@@ -38,4 +38,64 @@ export async function loadConfig(cwd) {
38
38
  export function isLoadError(result) {
39
39
  return "error" in result;
40
40
  }
41
+ /**
42
+ * Read IDENTITY.md, SOUL.md, USER.md from a directory.
43
+ * Returns content or undefined if file doesn't exist.
44
+ */
45
+ export async function loadAgentMarkdown(dir) {
46
+ const result = {};
47
+ const files = [
48
+ { path: "IDENTITY.md", key: "identityMd" },
49
+ { path: "SOUL.md", key: "soulMd" },
50
+ { path: "USER.md", key: "userMd" },
51
+ ];
52
+ for (const { path, key } of files) {
53
+ try {
54
+ const content = await readFile(join(dir, path), "utf-8");
55
+ if (content.trim()) {
56
+ result[key] = content.trim();
57
+ }
58
+ }
59
+ catch {
60
+ // File doesn't exist, skip
61
+ }
62
+ }
63
+ return result;
64
+ }
65
+ /**
66
+ * Scan directories for *.md skill files.
67
+ * Later dirs override earlier dirs (agent-specific overrides shared).
68
+ * Returns array of { name, content } where name is filename without extension.
69
+ */
70
+ export async function loadSkillFiles(dirs) {
71
+ const skillMap = new Map();
72
+ for (const dir of dirs) {
73
+ const resolvedDir = resolve(dir);
74
+ let entries;
75
+ try {
76
+ entries = await readdir(resolvedDir);
77
+ }
78
+ catch {
79
+ continue; // Directory doesn't exist, skip
80
+ }
81
+ for (const entry of entries) {
82
+ if (!entry.endsWith(".md"))
83
+ continue;
84
+ const name = entry.slice(0, -3); // strip .md
85
+ try {
86
+ const content = await readFile(join(resolvedDir, entry), "utf-8");
87
+ if (content.trim()) {
88
+ skillMap.set(name, content.trim());
89
+ }
90
+ }
91
+ catch {
92
+ // Skip unreadable files
93
+ }
94
+ }
95
+ }
96
+ return Array.from(skillMap.entries()).map(([name, content]) => ({
97
+ name,
98
+ content,
99
+ }));
100
+ }
41
101
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAuB,MAAM,aAAa,CAAC;AAEpE,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAY3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW;IAEX,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAE9C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,KAAK,EAAE,MAAM,eAAe,aAAa,GAAG,EAAE;YAC9C,OAAO,EAAE,CAAC,gCAAgC,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,GAAG,CAA4B,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,0BAA0B,eAAe,EAAE;YAClD,OAAO,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CACrC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CACvD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,WAAW,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAA8B;IACxD,OAAO,OAAO,IAAI,MAAM,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Platform config schemas and env var mapping for lobu.toml.
3
+ * Mirrors @lobu/core/platform-schemas — kept in sync manually since CLI
4
+ * can't depend on @lobu/core due to TypeScript rootDir constraints.
5
+ */
6
+ import { z } from "zod";
7
+ export declare const SUPPORTED_PLATFORMS: readonly ["telegram", "slack", "discord", "whatsapp", "teams"];
8
+ export type SupportedPlatform = (typeof SUPPORTED_PLATFORMS)[number];
9
+ export declare const TelegramConfigSchema: z.ZodObject<{
10
+ botToken: z.ZodOptional<z.ZodString>;
11
+ mode: z.ZodOptional<z.ZodEnum<["auto", "webhook", "polling"]>>;
12
+ secretToken: z.ZodOptional<z.ZodString>;
13
+ userName: z.ZodOptional<z.ZodString>;
14
+ apiBaseUrl: z.ZodOptional<z.ZodString>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ botToken?: string | undefined;
17
+ mode?: "auto" | "webhook" | "polling" | undefined;
18
+ secretToken?: string | undefined;
19
+ userName?: string | undefined;
20
+ apiBaseUrl?: string | undefined;
21
+ }, {
22
+ botToken?: string | undefined;
23
+ mode?: "auto" | "webhook" | "polling" | undefined;
24
+ secretToken?: string | undefined;
25
+ userName?: string | undefined;
26
+ apiBaseUrl?: string | undefined;
27
+ }>;
28
+ export declare const SlackConfigSchema: z.ZodObject<{
29
+ botToken: z.ZodOptional<z.ZodString>;
30
+ botUserId: z.ZodOptional<z.ZodString>;
31
+ signingSecret: z.ZodOptional<z.ZodString>;
32
+ clientId: z.ZodOptional<z.ZodString>;
33
+ clientSecret: z.ZodOptional<z.ZodString>;
34
+ encryptionKey: z.ZodOptional<z.ZodString>;
35
+ installationKeyPrefix: z.ZodOptional<z.ZodString>;
36
+ userName: z.ZodOptional<z.ZodString>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ botToken?: string | undefined;
39
+ userName?: string | undefined;
40
+ botUserId?: string | undefined;
41
+ signingSecret?: string | undefined;
42
+ clientId?: string | undefined;
43
+ clientSecret?: string | undefined;
44
+ encryptionKey?: string | undefined;
45
+ installationKeyPrefix?: string | undefined;
46
+ }, {
47
+ botToken?: string | undefined;
48
+ userName?: string | undefined;
49
+ botUserId?: string | undefined;
50
+ signingSecret?: string | undefined;
51
+ clientId?: string | undefined;
52
+ clientSecret?: string | undefined;
53
+ encryptionKey?: string | undefined;
54
+ installationKeyPrefix?: string | undefined;
55
+ }>;
56
+ export declare const DiscordConfigSchema: z.ZodObject<{
57
+ botToken: z.ZodOptional<z.ZodString>;
58
+ applicationId: z.ZodOptional<z.ZodString>;
59
+ publicKey: z.ZodOptional<z.ZodString>;
60
+ mentionRoleIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
61
+ userName: z.ZodOptional<z.ZodString>;
62
+ }, "strip", z.ZodTypeAny, {
63
+ botToken?: string | undefined;
64
+ userName?: string | undefined;
65
+ applicationId?: string | undefined;
66
+ publicKey?: string | undefined;
67
+ mentionRoleIds?: string[] | undefined;
68
+ }, {
69
+ botToken?: string | undefined;
70
+ userName?: string | undefined;
71
+ applicationId?: string | undefined;
72
+ publicKey?: string | undefined;
73
+ mentionRoleIds?: string[] | undefined;
74
+ }>;
75
+ export declare const WhatsAppConfigSchema: z.ZodObject<{
76
+ accessToken: z.ZodOptional<z.ZodString>;
77
+ phoneNumberId: z.ZodOptional<z.ZodString>;
78
+ appSecret: z.ZodOptional<z.ZodString>;
79
+ verifyToken: z.ZodOptional<z.ZodString>;
80
+ apiVersion: z.ZodOptional<z.ZodString>;
81
+ userName: z.ZodOptional<z.ZodString>;
82
+ }, "strip", z.ZodTypeAny, {
83
+ userName?: string | undefined;
84
+ accessToken?: string | undefined;
85
+ phoneNumberId?: string | undefined;
86
+ appSecret?: string | undefined;
87
+ verifyToken?: string | undefined;
88
+ apiVersion?: string | undefined;
89
+ }, {
90
+ userName?: string | undefined;
91
+ accessToken?: string | undefined;
92
+ phoneNumberId?: string | undefined;
93
+ appSecret?: string | undefined;
94
+ verifyToken?: string | undefined;
95
+ apiVersion?: string | undefined;
96
+ }>;
97
+ export declare const TeamsConfigSchema: z.ZodObject<{
98
+ appId: z.ZodOptional<z.ZodString>;
99
+ appPassword: z.ZodOptional<z.ZodString>;
100
+ appTenantId: z.ZodOptional<z.ZodString>;
101
+ appType: z.ZodOptional<z.ZodEnum<["MultiTenant", "SingleTenant"]>>;
102
+ userName: z.ZodOptional<z.ZodString>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ userName?: string | undefined;
105
+ appId?: string | undefined;
106
+ appPassword?: string | undefined;
107
+ appTenantId?: string | undefined;
108
+ appType?: "MultiTenant" | "SingleTenant" | undefined;
109
+ }, {
110
+ userName?: string | undefined;
111
+ appId?: string | undefined;
112
+ appPassword?: string | undefined;
113
+ appTenantId?: string | undefined;
114
+ appType?: "MultiTenant" | "SingleTenant" | undefined;
115
+ }>;
116
+ /**
117
+ * Maps each platform + field to the corresponding environment variable name.
118
+ */
119
+ export declare const PLATFORM_ENV_MAP: Record<SupportedPlatform, Record<string, string>>;
120
+ //# sourceMappingURL=platform-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-schemas.d.ts","sourceRoot":"","sources":["../../src/config/platform-schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB,gEAMtB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS5B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAO/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,iBAAiB,EACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyCvB,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Platform config schemas and env var mapping for lobu.toml.
3
+ * Mirrors @lobu/core/platform-schemas — kept in sync manually since CLI
4
+ * can't depend on @lobu/core due to TypeScript rootDir constraints.
5
+ */
6
+ import { z } from "zod";
7
+ export const SUPPORTED_PLATFORMS = [
8
+ "telegram",
9
+ "slack",
10
+ "discord",
11
+ "whatsapp",
12
+ "teams",
13
+ ];
14
+ export const TelegramConfigSchema = z.object({
15
+ botToken: z.string().optional(),
16
+ mode: z.enum(["auto", "webhook", "polling"]).optional(),
17
+ secretToken: z.string().optional(),
18
+ userName: z.string().optional(),
19
+ apiBaseUrl: z.string().optional(),
20
+ });
21
+ export const SlackConfigSchema = z.object({
22
+ botToken: z.string().optional(),
23
+ botUserId: z.string().optional(),
24
+ signingSecret: z.string().optional(),
25
+ clientId: z.string().optional(),
26
+ clientSecret: z.string().optional(),
27
+ encryptionKey: z.string().optional(),
28
+ installationKeyPrefix: z.string().optional(),
29
+ userName: z.string().optional(),
30
+ });
31
+ export const DiscordConfigSchema = z.object({
32
+ botToken: z.string().optional(),
33
+ applicationId: z.string().optional(),
34
+ publicKey: z.string().optional(),
35
+ mentionRoleIds: z.array(z.string()).optional(),
36
+ userName: z.string().optional(),
37
+ });
38
+ export const WhatsAppConfigSchema = z.object({
39
+ accessToken: z.string().optional(),
40
+ phoneNumberId: z.string().optional(),
41
+ appSecret: z.string().optional(),
42
+ verifyToken: z.string().optional(),
43
+ apiVersion: z.string().optional(),
44
+ userName: z.string().optional(),
45
+ });
46
+ export const TeamsConfigSchema = z.object({
47
+ appId: z.string().optional(),
48
+ appPassword: z.string().optional(),
49
+ appTenantId: z.string().optional(),
50
+ appType: z.enum(["MultiTenant", "SingleTenant"]).optional(),
51
+ userName: z.string().optional(),
52
+ });
53
+ /**
54
+ * Maps each platform + field to the corresponding environment variable name.
55
+ */
56
+ export const PLATFORM_ENV_MAP = {
57
+ telegram: {
58
+ botToken: "TELEGRAM_BOT_TOKEN",
59
+ mode: "TELEGRAM_MODE",
60
+ secretToken: "TELEGRAM_SECRET_TOKEN",
61
+ userName: "TELEGRAM_USERNAME",
62
+ apiBaseUrl: "TELEGRAM_API_BASE_URL",
63
+ },
64
+ slack: {
65
+ botToken: "SLACK_BOT_TOKEN",
66
+ botUserId: "SLACK_BOT_USER_ID",
67
+ signingSecret: "SLACK_SIGNING_SECRET",
68
+ clientId: "SLACK_CLIENT_ID",
69
+ clientSecret: "SLACK_CLIENT_SECRET",
70
+ encryptionKey: "SLACK_ENCRYPTION_KEY",
71
+ installationKeyPrefix: "SLACK_INSTALLATION_KEY_PREFIX",
72
+ userName: "SLACK_USERNAME",
73
+ },
74
+ discord: {
75
+ botToken: "DISCORD_BOT_TOKEN",
76
+ applicationId: "DISCORD_APPLICATION_ID",
77
+ publicKey: "DISCORD_PUBLIC_KEY",
78
+ mentionRoleIds: "DISCORD_MENTION_ROLE_IDS",
79
+ userName: "DISCORD_USERNAME",
80
+ },
81
+ whatsapp: {
82
+ accessToken: "WHATSAPP_ACCESS_TOKEN",
83
+ phoneNumberId: "WHATSAPP_PHONE_NUMBER_ID",
84
+ appSecret: "WHATSAPP_APP_SECRET",
85
+ verifyToken: "WHATSAPP_VERIFY_TOKEN",
86
+ apiVersion: "WHATSAPP_API_VERSION",
87
+ userName: "WHATSAPP_USERNAME",
88
+ },
89
+ teams: {
90
+ appId: "TEAMS_APP_ID",
91
+ appPassword: "TEAMS_APP_PASSWORD",
92
+ appTenantId: "TEAMS_APP_TENANT_ID",
93
+ appType: "TEAMS_APP_TYPE",
94
+ userName: "TEAMS_USERNAME",
95
+ },
96
+ };
97
+ //# sourceMappingURL=platform-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-schemas.js","sourceRoot":"","sources":["../../src/config/platform-schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU;IACV,OAAO;IACP,SAAS;IACT,UAAU;IACV,OAAO;CACC,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAGzB;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,oBAAoB;QAC9B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,mBAAmB;QAC7B,UAAU,EAAE,uBAAuB;KACpC;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EAAE,mBAAmB;QAC9B,aAAa,EAAE,sBAAsB;QACrC,QAAQ,EAAE,iBAAiB;QAC3B,YAAY,EAAE,qBAAqB;QACnC,aAAa,EAAE,sBAAsB;QACrC,qBAAqB,EAAE,+BAA+B;QACtD,QAAQ,EAAE,gBAAgB;KAC3B;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,mBAAmB;QAC7B,aAAa,EAAE,wBAAwB;QACvC,SAAS,EAAE,oBAAoB;QAC/B,cAAc,EAAE,0BAA0B;QAC1C,QAAQ,EAAE,kBAAkB;KAC7B;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,uBAAuB;QACpC,aAAa,EAAE,0BAA0B;QACzC,SAAS,EAAE,qBAAqB;QAChC,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,sBAAsB;QAClC,QAAQ,EAAE,mBAAmB;KAC9B;IACD,KAAK,EAAE;QACL,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,gBAAgB;KAC3B;CACF,CAAC"}