@adminiumjs/meta 0.1.0-rc.1

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 (194) hide show
  1. package/LICENSE +661 -0
  2. package/dist/bootstrap.d.ts +103 -0
  3. package/dist/bootstrap.d.ts.map +1 -0
  4. package/dist/bootstrap.js +225 -0
  5. package/dist/bootstrap.js.map +1 -0
  6. package/dist/columns.d.ts +44 -0
  7. package/dist/columns.d.ts.map +1 -0
  8. package/dist/columns.js +57 -0
  9. package/dist/columns.js.map +1 -0
  10. package/dist/connect.d.ts +38 -0
  11. package/dist/connect.d.ts.map +1 -0
  12. package/dist/connect.js +57 -0
  13. package/dist/connect.js.map +1 -0
  14. package/dist/ids.d.ts +79 -0
  15. package/dist/ids.d.ts.map +1 -0
  16. package/dist/ids.js +165 -0
  17. package/dist/ids.js.map +1 -0
  18. package/dist/index.d.ts +21 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +21 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/migrations/0001_core_auth.d.ts +9 -0
  23. package/dist/migrations/0001_core_auth.d.ts.map +1 -0
  24. package/dist/migrations/0001_core_auth.js +102 -0
  25. package/dist/migrations/0001_core_auth.js.map +1 -0
  26. package/dist/migrations/0002_rbac.d.ts +8 -0
  27. package/dist/migrations/0002_rbac.d.ts.map +1 -0
  28. package/dist/migrations/0002_rbac.js +75 -0
  29. package/dist/migrations/0002_rbac.js.map +1 -0
  30. package/dist/migrations/0003_connections_schema.d.ts +9 -0
  31. package/dist/migrations/0003_connections_schema.d.ts.map +1 -0
  32. package/dist/migrations/0003_connections_schema.js +100 -0
  33. package/dist/migrations/0003_connections_schema.js.map +1 -0
  34. package/dist/migrations/0004_pages_views.d.ts +8 -0
  35. package/dist/migrations/0004_pages_views.d.ts.map +1 -0
  36. package/dist/migrations/0004_pages_views.js +59 -0
  37. package/dist/migrations/0004_pages_views.js.map +1 -0
  38. package/dist/migrations/0005_ops.d.ts +9 -0
  39. package/dist/migrations/0005_ops.d.ts.map +1 -0
  40. package/dist/migrations/0005_ops.js +104 -0
  41. package/dist/migrations/0005_ops.js.map +1 -0
  42. package/dist/migrations/0006_platform.d.ts +11 -0
  43. package/dist/migrations/0006_platform.d.ts.map +1 -0
  44. package/dist/migrations/0006_platform.js +259 -0
  45. package/dist/migrations/0006_platform.js.map +1 -0
  46. package/dist/migrations/0007_llm_runs.d.ts +33 -0
  47. package/dist/migrations/0007_llm_runs.d.ts.map +1 -0
  48. package/dist/migrations/0007_llm_runs.js +62 -0
  49. package/dist/migrations/0007_llm_runs.js.map +1 -0
  50. package/dist/migrations/0008_llm_overrides.d.ts +18 -0
  51. package/dist/migrations/0008_llm_overrides.d.ts.map +1 -0
  52. package/dist/migrations/0008_llm_overrides.js +24 -0
  53. package/dist/migrations/0008_llm_overrides.js.map +1 -0
  54. package/dist/migrations/0009_views_kind.d.ts +20 -0
  55. package/dist/migrations/0009_views_kind.d.ts.map +1 -0
  56. package/dist/migrations/0009_views_kind.js +24 -0
  57. package/dist/migrations/0009_views_kind.js.map +1 -0
  58. package/dist/migrations/0010_llm_prompt_version_width.d.ts +19 -0
  59. package/dist/migrations/0010_llm_prompt_version_width.d.ts.map +1 -0
  60. package/dist/migrations/0010_llm_prompt_version_width.js +28 -0
  61. package/dist/migrations/0010_llm_prompt_version_width.js.map +1 -0
  62. package/dist/migrations/index.d.ts +29 -0
  63. package/dist/migrations/index.d.ts.map +1 -0
  64. package/dist/migrations/index.js +43 -0
  65. package/dist/migrations/index.js.map +1 -0
  66. package/dist/migrator.d.ts +83 -0
  67. package/dist/migrator.d.ts.map +1 -0
  68. package/dist/migrator.js +173 -0
  69. package/dist/migrator.js.map +1 -0
  70. package/dist/prefix.d.ts +19 -0
  71. package/dist/prefix.d.ts.map +1 -0
  72. package/dist/prefix.js +33 -0
  73. package/dist/prefix.js.map +1 -0
  74. package/dist/repos/api-keys.d.ts +31 -0
  75. package/dist/repos/api-keys.d.ts.map +1 -0
  76. package/dist/repos/api-keys.js +62 -0
  77. package/dist/repos/api-keys.js.map +1 -0
  78. package/dist/repos/audit.d.ts +51 -0
  79. package/dist/repos/audit.d.ts.map +1 -0
  80. package/dist/repos/audit.js +78 -0
  81. package/dist/repos/audit.js.map +1 -0
  82. package/dist/repos/connections.d.ts +90 -0
  83. package/dist/repos/connections.d.ts.map +1 -0
  84. package/dist/repos/connections.js +191 -0
  85. package/dist/repos/connections.js.map +1 -0
  86. package/dist/repos/email-templates.d.ts +47 -0
  87. package/dist/repos/email-templates.d.ts.map +1 -0
  88. package/dist/repos/email-templates.js +93 -0
  89. package/dist/repos/email-templates.js.map +1 -0
  90. package/dist/repos/exports.d.ts +67 -0
  91. package/dist/repos/exports.d.ts.map +1 -0
  92. package/dist/repos/exports.js +132 -0
  93. package/dist/repos/exports.js.map +1 -0
  94. package/dist/repos/files.d.ts +52 -0
  95. package/dist/repos/files.d.ts.map +1 -0
  96. package/dist/repos/files.js +86 -0
  97. package/dist/repos/files.js.map +1 -0
  98. package/dist/repos/imports.d.ts +71 -0
  99. package/dist/repos/imports.d.ts.map +1 -0
  100. package/dist/repos/imports.js +111 -0
  101. package/dist/repos/imports.js.map +1 -0
  102. package/dist/repos/index.d.ts +26 -0
  103. package/dist/repos/index.d.ts.map +1 -0
  104. package/dist/repos/index.js +26 -0
  105. package/dist/repos/index.js.map +1 -0
  106. package/dist/repos/jobs.d.ts +71 -0
  107. package/dist/repos/jobs.d.ts.map +1 -0
  108. package/dist/repos/jobs.js +187 -0
  109. package/dist/repos/jobs.js.map +1 -0
  110. package/dist/repos/llm-overrides.d.ts +89 -0
  111. package/dist/repos/llm-overrides.d.ts.map +1 -0
  112. package/dist/repos/llm-overrides.js +205 -0
  113. package/dist/repos/llm-overrides.js.map +1 -0
  114. package/dist/repos/llm-runs.d.ts +114 -0
  115. package/dist/repos/llm-runs.d.ts.map +1 -0
  116. package/dist/repos/llm-runs.js +214 -0
  117. package/dist/repos/llm-runs.js.map +1 -0
  118. package/dist/repos/notification-prefs.d.ts +34 -0
  119. package/dist/repos/notification-prefs.d.ts.map +1 -0
  120. package/dist/repos/notification-prefs.js +80 -0
  121. package/dist/repos/notification-prefs.js.map +1 -0
  122. package/dist/repos/notifications.d.ts +60 -0
  123. package/dist/repos/notifications.d.ts.map +1 -0
  124. package/dist/repos/notifications.js +107 -0
  125. package/dist/repos/notifications.js.map +1 -0
  126. package/dist/repos/overrides.d.ts +59 -0
  127. package/dist/repos/overrides.d.ts.map +1 -0
  128. package/dist/repos/overrides.js +143 -0
  129. package/dist/repos/overrides.js.map +1 -0
  130. package/dist/repos/pages.d.ts +192 -0
  131. package/dist/repos/pages.d.ts.map +1 -0
  132. package/dist/repos/pages.js +374 -0
  133. package/dist/repos/pages.js.map +1 -0
  134. package/dist/repos/password-resets.d.ts +32 -0
  135. package/dist/repos/password-resets.d.ts.map +1 -0
  136. package/dist/repos/password-resets.js +56 -0
  137. package/dist/repos/password-resets.js.map +1 -0
  138. package/dist/repos/permissions.d.ts +28 -0
  139. package/dist/repos/permissions.d.ts.map +1 -0
  140. package/dist/repos/permissions.js +100 -0
  141. package/dist/repos/permissions.js.map +1 -0
  142. package/dist/repos/roles.d.ts +33 -0
  143. package/dist/repos/roles.d.ts.map +1 -0
  144. package/dist/repos/roles.js +89 -0
  145. package/dist/repos/roles.js.map +1 -0
  146. package/dist/repos/scheduled-reports.d.ts +73 -0
  147. package/dist/repos/scheduled-reports.d.ts.map +1 -0
  148. package/dist/repos/scheduled-reports.js +132 -0
  149. package/dist/repos/scheduled-reports.js.map +1 -0
  150. package/dist/repos/sessions.d.ts +33 -0
  151. package/dist/repos/sessions.d.ts.map +1 -0
  152. package/dist/repos/sessions.js +79 -0
  153. package/dist/repos/sessions.js.map +1 -0
  154. package/dist/repos/settings.d.ts +25 -0
  155. package/dist/repos/settings.d.ts.map +1 -0
  156. package/dist/repos/settings.js +73 -0
  157. package/dist/repos/settings.js.map +1 -0
  158. package/dist/repos/snapshots.d.ts +79 -0
  159. package/dist/repos/snapshots.d.ts.map +1 -0
  160. package/dist/repos/snapshots.js +191 -0
  161. package/dist/repos/snapshots.js.map +1 -0
  162. package/dist/repos/user-prefs.d.ts +56 -0
  163. package/dist/repos/user-prefs.d.ts.map +1 -0
  164. package/dist/repos/user-prefs.js +147 -0
  165. package/dist/repos/user-prefs.js.map +1 -0
  166. package/dist/repos/users.d.ts +38 -0
  167. package/dist/repos/users.d.ts.map +1 -0
  168. package/dist/repos/users.js +103 -0
  169. package/dist/repos/users.js.map +1 -0
  170. package/dist/repos/util.d.ts +45 -0
  171. package/dist/repos/util.d.ts.map +1 -0
  172. package/dist/repos/util.js +81 -0
  173. package/dist/repos/util.js.map +1 -0
  174. package/dist/repos/views.d.ts +75 -0
  175. package/dist/repos/views.d.ts.map +1 -0
  176. package/dist/repos/views.js +180 -0
  177. package/dist/repos/views.js.map +1 -0
  178. package/dist/schema/index.d.ts +4 -0
  179. package/dist/schema/index.d.ts.map +1 -0
  180. package/dist/schema/index.js +4 -0
  181. package/dist/schema/index.js.map +1 -0
  182. package/dist/schema/json-payloads.d.ts +479 -0
  183. package/dist/schema/json-payloads.d.ts.map +1 -0
  184. package/dist/schema/json-payloads.js +340 -0
  185. package/dist/schema/json-payloads.js.map +1 -0
  186. package/dist/schema/settings-registry.d.ts +187 -0
  187. package/dist/schema/settings-registry.d.ts.map +1 -0
  188. package/dist/schema/settings-registry.js +183 -0
  189. package/dist/schema/settings-registry.js.map +1 -0
  190. package/dist/schema/tables.d.ts +568 -0
  191. package/dist/schema/tables.d.ts.map +1 -0
  192. package/dist/schema/tables.js +51 -0
  193. package/dist/schema/tables.js.map +1 -0
  194. package/package.json +33 -0
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Settings registry (07-meta-store.md §7.1): every global settings key with
3
+ * its Zod schema, code default, and secret flag. `adminium_settings` stores
4
+ * explicit overrides only — unset keys fall back to these defaults, so new
5
+ * releases can change defaults without data migrations.
6
+ */
7
+ import { z } from 'zod';
8
+ import { accentSchema, densitySchema, localeSchema, themeSchema } from './json-payloads.js';
9
+ function def(schema, dflt, description, opts = {}) {
10
+ return {
11
+ schema,
12
+ default: dflt,
13
+ description,
14
+ ...(opts.secret === undefined ? {} : { secret: opts.secret }),
15
+ ...(opts.portable === undefined ? {} : { portable: opts.portable }),
16
+ };
17
+ }
18
+ /** Shorthand for the common case: operator-authored config that a bundle carries. */
19
+ const P = { portable: true };
20
+ const smtpSchema = z
21
+ .object({
22
+ host: z.string(),
23
+ port: z.number().int().min(1).max(65535),
24
+ user: z.string(),
25
+ passEncrypted: z.string(),
26
+ from: z.string(),
27
+ secure: z.boolean(),
28
+ })
29
+ .nullable();
30
+ const llmProviderSchema = z
31
+ .enum(['anthropic', 'openai', 'openai-compatible', 'ollama', 'adminium-managed'])
32
+ .nullable();
33
+ /**
34
+ * One row of the desktop capability grant table (11-electron.md §12).
35
+ *
36
+ * A grant is the record that an installed micro-SaaS manifest was consented to a
37
+ * host capability — `{ manifestId, capabilityId }` is its identity, `grantedAt`
38
+ * its audit trail. The desktop `CapabilityHost` reads these to decide whether a
39
+ * `capabilities.invoke` (§4) may reach a provider; a call with no matching grant
40
+ * is refused with `CAPABILITY_NOT_GRANTED`. The dashboard's consent step writes
41
+ * one and its revoke control removes one.
42
+ *
43
+ * Bounds, not free strings: `capabilityId` is a dotted id from a closed host
44
+ * vocabulary (`printer.escpos`, …) and `manifestId` a reverse-DNS app id, so both
45
+ * are short. This is the meta-store boundary; the route validates `capabilityId`
46
+ * against the known set on top of it.
47
+ */
48
+ export const capabilityGrantSchema = z.object({
49
+ manifestId: z.string().min(1).max(200),
50
+ capabilityId: z.string().min(1).max(120),
51
+ grantedAt: z.number().int().nonnegative(),
52
+ });
53
+ export const capabilityGrantsSchema = z.array(capabilityGrantSchema);
54
+ export const SETTINGS_REGISTRY = {
55
+ 'appearance.theme': def(themeSchema, 'system', 'Default UI theme', P),
56
+ 'appearance.accent': def(accentSchema, 'indigo', 'Default accent color', P),
57
+ 'appearance.density': def(densitySchema, 'comfortable', 'Default layout density', P),
58
+ 'locale.default': def(localeSchema, 'en_US', 'Default locale', P),
59
+ 'branding.appName': def(z.string().min(1).max(60), 'Adminium', 'Application display name', P),
60
+ 'branding.logoFileId': def(z.string().nullable(), null, 'Logo file id', P),
61
+ 'branding.faviconFileId': def(z.string().nullable(), null, 'Favicon file id', P),
62
+ 'auth.sessionTtlHours': def(z.number().int().min(1).max(8760), 720, 'Session lifetime in hours', P),
63
+ 'auth.require2fa': def(z.boolean(), false, 'Require TOTP for all users', P),
64
+ 'auth.allowSignup': def(z.boolean(), false, 'Allow self-signup (default invite-only)', P),
65
+ 'auth.passwordMinLength': def(z.number().int().min(8).max(128), 10, 'Minimum password length', P),
66
+ 'email.smtp': def(smtpSchema, null, 'SMTP transport; email features degrade gracefully when unset', { secret: true, portable: true }),
67
+ 'llm.provider': def(llmProviderSchema, null, 'LLM provider (06-llm-assist.md §3.1)', P),
68
+ 'llm.apiKey': def(z.string().nullable(), null, 'LLM provider API key', { secret: true, portable: true }),
69
+ 'llm.model': def(z.string().nullable(), null, 'LLM model override (null = provider default)', P),
70
+ 'llm.baseUrl': def(z.string().nullable(), null, 'Base URL for openai-compatible / ollama', P),
71
+ 'llm.maxOutputTokens': def(z.number().int().positive().nullable(), null, 'Max output tokens (null = provider default)', P),
72
+ 'retention.auditLogDays': def(z.number().int().min(30).max(3650), 365, 'Audit log retention in days', P),
73
+ 'retention.exportsDays': def(z.number().int().min(1).max(365), 30, 'Export artifact retention in days', P),
74
+ 'retention.webhookDeliveriesDays': def(z.number().int().min(1), 30, 'Webhook delivery log retention in days', P),
75
+ 'retention.automationRunsDays': def(z.number().int().min(1), 90, 'Automation run retention in days', P),
76
+ 'retention.notificationsDays': def(z.number().int().min(1), 90, 'Read-notification retention in days', P),
77
+ 'retention.llmRunsDays': def(z.number().int().min(1), 90, 'Unapplied LLM run retention in days', P),
78
+ 'retention.jobsDays': def(z.number().int().min(1), 30, 'Finished job retention in days', P),
79
+ 'retention.auditArchive': def(z.boolean(), false, 'Archive audit batches to adminium_files before deleting', P),
80
+ 'telemetry.enabled': def(z.boolean(), false, 'Anonymous telemetry (opt-in)', P),
81
+ // Separate from telemetry.enabled and likewise OFF by default: an update
82
+ // check is an outbound call that discloses the instance's IP + version to
83
+ // the vendor, so a self-hosted instance opts into it explicitly rather than
84
+ // inheriting consent from the telemetry answer (M10-T04).
85
+ 'updates.checkEnabled': def(z.boolean(), false, 'Check for new releases (opt-in outbound call)', P),
86
+ // ── NOT portable ──────────────────────────────────────────────────────────
87
+ // Everything below identifies THIS instance, records that something already
88
+ // happened to it, or answers a question about the MACHINE it runs on. A
89
+ // bundle that carried any of them would fuse two installs into one identity,
90
+ // decide one device's login policy from another's, or — worst, for the claim —
91
+ // hand a fresh install a "setup already done" flag it can never clear. See
92
+ // `SettingDef.portable`.
93
+ /**
94
+ * The desktop shell's §5 "Skip login on this computer" answer, mirrored out of
95
+ * `<userData>/config.json` (11-electron.md §2.3 `singleUser`) at every boot by
96
+ * the composition root. `POST /api/v1/auth/desktop-session` reads THIS — the
97
+ * route refuses while it is false, which is what the "Require login on this
98
+ * device" toggle turns off.
99
+ *
100
+ * NAMING: §5 spells the key `desktop.single_user`. This registry's convention
101
+ * is `<domain>.<camelCase>` for all 30 of its siblings, and the key is a TS
102
+ * literal type here rather than a string in a doc, so it follows the code.
103
+ *
104
+ * DEFAULT FALSE — i.e. "ask for the password" — even though §2.3's `config.json`
105
+ * default is `true` and §6 step 3's checkbox ships ticked. That is not a
106
+ * contradiction, because THIS DEFAULT IS ONLY EVER REACHED WHEN THE MIRROR DID
107
+ * NOT RUN. When the desktop shell passes `ADMINIUM_DESKTOP_SINGLE_USER`, every
108
+ * boot overwrites this row with the user's real answer and the default is dead
109
+ * code; the only world where it decides anything is one where the wrapper
110
+ * failed to tell the server what the user chose.
111
+ *
112
+ * In that world the two candidate defaults fail in opposite directions:
113
+ *
114
+ * true ⇒ a user who explicitly turned ON "Require login on this device" is
115
+ * silently auto-logged-in anyway. The control fails OPEN, against
116
+ * exactly the threat it exists for (someone else at this keyboard),
117
+ * and nothing anywhere says so.
118
+ * false ⇒ auto-login stops working and the user sees the standard login
119
+ * screen. A visible missing convenience, and their password still
120
+ * opens the app.
121
+ *
122
+ * A broken promise about a password beats a broken promise about a shortcut, so
123
+ * the unmirrored case fails closed and loudly rather than open and silently.
124
+ *
125
+ * NEVER portable: it is per-DEVICE policy. A bundle that carried it would
126
+ * answer "may this machine skip its login?" using another machine's answer.
127
+ */
128
+ 'desktop.singleUser': def(z.boolean(), false, 'Desktop: skip login on this computer (11-electron.md §5)'),
129
+ /**
130
+ * The desktop capability grant table (11-electron.md §12). Written by the
131
+ * consent step on manifest install and cleared by its revoke control; read by
132
+ * the main-process `CapabilityHost` on every `capabilities.invoke` to gate a
133
+ * call against a real, revocable grant.
134
+ *
135
+ * NAMING: §12 spells the `adminium_settings` key `desktop.capability_grants`.
136
+ * This registry's convention is `<domain>.<camelCase>` — the same override
137
+ * `desktop.singleUser` makes over §5's `desktop.single_user`, and for the same
138
+ * reason: the key is a TS literal type here, so it follows the code.
139
+ *
140
+ * NEVER portable: a grant is a per-DEVICE authorization to touch THIS machine's
141
+ * hardware. A bundle that carried it would silently pre-authorize an app to
142
+ * reach a receipt printer on a machine whose owner never consented.
143
+ */
144
+ 'desktop.capabilityGrants': def(capabilityGrantsSchema, [], 'Desktop: consented capability grants (11-electron.md §12)'),
145
+ 'system.instanceId': def(z.string().nullable(), null, 'Stable instance identity (seeded at bootstrap)'),
146
+ 'system.bootstrappedAt': def(z.number().nullable(), null, 'First-run timestamp (epoch ms)'),
147
+ /**
148
+ * The first-super-admin CLAIM (M10-T04). Its row's PRESENCE — not its value —
149
+ * is the once-only gate: `createFirstSuperAdmin` INSERTs it inside the same
150
+ * transaction that creates the user, so the `key` PRIMARY KEY makes a second
151
+ * (or concurrent) bootstrap attempt fail atomically on every dialect. Never
152
+ * `set()` this key from application code.
153
+ *
154
+ * NEVER portable, for the same reason it is never `set()`: importing it into
155
+ * an instance with zero users closes `/setup/*` (409) forever, so no super
156
+ * admin can be created and nobody can log in. The instance is scrap.
157
+ */
158
+ 'system.superAdminCreatedAt': def(z.number().nullable(), null, 'First-super-admin bootstrap claim (epoch ms)'),
159
+ /**
160
+ * The bundle FORMAT version of this store. Not portable: the target records
161
+ * its own, and the version a bundle was written at already travels in the
162
+ * manifest (`BundleManifest.configVersion`), which is what replay reads.
163
+ * Copying the source's value would let an old bundle silently downgrade the
164
+ * number a newer target reports about itself.
165
+ */
166
+ 'system.configVersion': def(z.number().int().min(1), 1, 'Config bundle format version'),
167
+ };
168
+ export const SETTING_KEYS = Object.keys(SETTINGS_REGISTRY);
169
+ export function isSettingKey(key) {
170
+ return Object.prototype.hasOwnProperty.call(SETTINGS_REGISTRY, key);
171
+ }
172
+ export function isSecretSettingKey(key) {
173
+ return SETTINGS_REGISTRY[key].secret === true;
174
+ }
175
+ /**
176
+ * True when the registry declares `key` safe to carry in a config bundle.
177
+ * Opt-in, so an undeclared (i.e. new) key is never exported — see
178
+ * {@link SettingDef.portable}.
179
+ */
180
+ export function isPortableSettingKey(key) {
181
+ return SETTINGS_REGISTRY[key].portable === true;
182
+ }
183
+ //# sourceMappingURL=settings-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-registry.js","sourceRoot":"","sources":["../../src/schema/settings-registry.ts"],"names":[],"mappings":"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"}