@aphexcms/cms-core 9.2.2 → 9.3.0

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 (59) hide show
  1. package/dist/cli/index.js +22 -0
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/cli/migrate.d.ts +10 -0
  4. package/dist/cli/migrate.d.ts.map +1 -0
  5. package/dist/cli/migrate.js +80 -0
  6. package/dist/cli/migrate.js.map +1 -0
  7. package/dist/components/admin/DocumentVersionPanel.svelte +3 -0
  8. package/dist/components/admin/DocumentVersionPanel.svelte.d.ts.map +1 -1
  9. package/dist/components/admin/MediaBrowser.svelte +0 -1
  10. package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -1
  11. package/dist/components/admin/fields/richtext/PortableTextImageView.svelte +3 -0
  12. package/dist/components/admin/fields/richtext/PortableTextImageView.svelte.d.ts.map +1 -1
  13. package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte +3 -1
  14. package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte.d.ts.map +1 -1
  15. package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte +3 -0
  16. package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte.d.ts.map +1 -1
  17. package/dist/components/admin/fields/richtext/RichtextField.svelte +8 -20
  18. package/dist/components/admin/fields/richtext/RichtextField.svelte.d.ts.map +1 -1
  19. package/dist/components/admin/fields/richtext/block-defaults.d.ts +4 -0
  20. package/dist/components/admin/fields/richtext/block-defaults.d.ts.map +1 -0
  21. package/dist/components/admin/fields/richtext/block-defaults.js +8 -0
  22. package/dist/lib/components/admin/fields/richtext/block-defaults.d.ts +4 -0
  23. package/dist/lib/components/admin/fields/richtext/block-defaults.d.ts.map +1 -0
  24. package/dist/lib/components/admin/fields/richtext/block-defaults.js +9 -0
  25. package/dist/lib/components/admin/fields/richtext/block-defaults.js.map +1 -0
  26. package/dist/lib/mcp/tools.d.ts +28 -0
  27. package/dist/lib/mcp/tools.d.ts.map +1 -0
  28. package/dist/lib/mcp/tools.js +464 -0
  29. package/dist/lib/mcp/tools.js.map +1 -0
  30. package/dist/lib/routes/mcp.d.ts +5 -0
  31. package/dist/lib/routes/mcp.d.ts.map +1 -0
  32. package/dist/lib/routes/mcp.js +72 -0
  33. package/dist/lib/routes/mcp.js.map +1 -0
  34. package/dist/lib/schema-utils/validator.d.ts +6 -0
  35. package/dist/lib/schema-utils/validator.d.ts.map +1 -1
  36. package/dist/lib/schema-utils/validator.js +21 -15
  37. package/dist/lib/schema-utils/validator.js.map +1 -1
  38. package/dist/lib/server/index.d.ts +2 -1
  39. package/dist/lib/server/index.d.ts.map +1 -1
  40. package/dist/lib/server/index.js +4 -1
  41. package/dist/lib/server/index.js.map +1 -1
  42. package/dist/lib/vite/index.d.ts.map +1 -1
  43. package/dist/lib/vite/index.js +12 -1
  44. package/dist/lib/vite/index.js.map +1 -1
  45. package/dist/mcp/tools.d.ts +28 -0
  46. package/dist/mcp/tools.d.ts.map +1 -0
  47. package/dist/mcp/tools.js +463 -0
  48. package/dist/routes/mcp.d.ts +5 -0
  49. package/dist/routes/mcp.d.ts.map +1 -0
  50. package/dist/routes/mcp.js +71 -0
  51. package/dist/schema-utils/validator.d.ts +6 -0
  52. package/dist/schema-utils/validator.d.ts.map +1 -1
  53. package/dist/schema-utils/validator.js +21 -15
  54. package/dist/server/index.d.ts +2 -1
  55. package/dist/server/index.d.ts.map +1 -1
  56. package/dist/server/index.js +4 -1
  57. package/dist/vite/index.d.ts.map +1 -1
  58. package/dist/vite/index.js +12 -1
  59. package/package.json +3 -1
package/dist/cli/index.js CHANGED
@@ -7,6 +7,7 @@ import { intro, outro, spinner, text, cancel, isCancel } from '@clack/prompts';
7
7
  import { cac } from 'cac';
8
8
  import pc from 'picocolors';
9
9
  import { generateTypesFromConfig } from './generate-types.js';
10
+ import { runMigrations } from './migrate.js';
10
11
  const cli = cac('aphex');
11
12
  // Version from package.json
12
13
  const version = '0.1.14';
@@ -60,6 +61,27 @@ cli
60
61
  process.exit(1);
61
62
  }
62
63
  });
64
+ /**
65
+ * aphex migrate [folder]
66
+ * Apply committed Drizzle migrations (Postgres or pglite). Runtime-safe — no drizzle-kit needed.
67
+ */
68
+ cli
69
+ .command('migrate [folder]', 'Apply database migrations (Postgres or pglite)')
70
+ .action(async (folder) => {
71
+ intro(pc.cyan('⚡ Aphex CMS - Migrate'));
72
+ const s = spinner();
73
+ s.start('Applying migrations...');
74
+ try {
75
+ const result = await runMigrations({ migrationsFolder: folder });
76
+ s.stop(pc.green(`✅ Migrations applied (${result.driver})`));
77
+ outro(pc.dim(`Target: ${pc.cyan(result.target)}`));
78
+ }
79
+ catch (error) {
80
+ s.stop(pc.red('Migration failed'));
81
+ console.error(error instanceof Error ? error.message : error);
82
+ process.exit(1);
83
+ }
84
+ });
63
85
  /**
64
86
  * aphex help
65
87
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface MigrateOptions {
2
+ /** Folder holding the generated `.sql` migrations + `meta/`. Default `./drizzle`. */
3
+ migrationsFolder?: string;
4
+ }
5
+ export interface MigrateResult {
6
+ driver: 'postgresql' | 'pglite';
7
+ target: string;
8
+ }
9
+ export declare function runMigrations(options?: MigrateOptions): Promise<MigrateResult>;
10
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,cAAc;IAC9B,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,YAAY,GAAG,QAAQ,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CA4DxF"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * `aphex migrate` — apply the committed Drizzle migrations to the database.
3
+ *
4
+ * Self-contained on purpose: it does NOT load `aphex.config.ts` (that imports SvelteKit
5
+ * virtual modules like `$env/dynamic/private` which only resolve inside Vite). Instead it reads
6
+ * the connection from the environment — exactly like `drizzle.config.ts` — and runs the drizzle
7
+ * runtime migrator (`drizzle-orm`, a runtime dependency), so it works inside a pruned production
8
+ * image where `drizzle-kit` (a devDependency) isn't present. That's the bug it fixes, and it's
9
+ * what the container entrypoint runs (`aphex migrate && node build`).
10
+ *
11
+ * Driver selection:
12
+ * - Postgres (default) when `DATABASE_URL` or `PG_*` vars are set.
13
+ * - pglite when `APHEX_DATABASE=pglite` (or no Postgres conn is configured but `APHEX_PGLITE_DIR`
14
+ * is). Migrations run as the default role — RLS policies are created here; tenant enforcement
15
+ * (the non-superuser `SET ROLE`) is a runtime concern of the adapter, not migration.
16
+ */
17
+ import { createRequire } from 'node:module';
18
+ import { pathToFileURL } from 'node:url';
19
+ import { resolve } from 'node:path';
20
+ import { mkdirSync } from 'node:fs';
21
+ /** Import a package from the *consuming app's* node_modules (cwd), not cms-core's. */
22
+ async function appImport(spec) {
23
+ const appRequire = createRequire(pathToFileURL(resolve(process.cwd(), 'package.json')).href);
24
+ return import(pathToFileURL(appRequire.resolve(spec)).href);
25
+ }
26
+ /** Build a Postgres connection string from env, mirroring `drizzle.config.ts`. Null if none set. */
27
+ function postgresUrlFromEnv() {
28
+ if (process.env.DATABASE_URL)
29
+ return process.env.DATABASE_URL;
30
+ const { PG_HOST, PG_PORT, PG_USER, PG_PASSWORD, PG_DATABASE } = process.env;
31
+ if (PG_HOST || PG_USER || PG_DATABASE) {
32
+ return `postgresql://${PG_USER || 'root'}:${PG_PASSWORD || 'mysecretpassword'}@${PG_HOST || 'localhost'}:${PG_PORT || '5432'}/${PG_DATABASE || 'local'}`;
33
+ }
34
+ return null;
35
+ }
36
+ export async function runMigrations(options = {}) {
37
+ // Load `.env` from the project root if present, so `aphex migrate` picks up DATABASE_URL in
38
+ // local dev (the CLI isn't run through Vite/SvelteKit). In production the env is provided by
39
+ // the container/host, so the missing file is fine.
40
+ if (typeof process.loadEnvFile === 'function') {
41
+ try {
42
+ process.loadEnvFile(resolve(process.cwd(), '.env'));
43
+ }
44
+ catch {
45
+ // no .env — env vars come from the environment
46
+ }
47
+ }
48
+ const migrationsFolder = resolve(process.cwd(), options.migrationsFolder ?? './drizzle');
49
+ const pgUrl = postgresUrlFromEnv();
50
+ const pgliteDir = process.env.APHEX_PGLITE_DIR;
51
+ const usePglite = process.env.APHEX_DATABASE?.toLowerCase() === 'pglite' || (!pgUrl && !!pgliteDir);
52
+ if (usePglite) {
53
+ const dir = resolve(process.cwd(), pgliteDir ?? '.aphex/pgdata');
54
+ // pglite only creates the leaf dir, not parents — ensure the full path exists first.
55
+ mkdirSync(dir, { recursive: true });
56
+ const { PGlite } = (await appImport('@electric-sql/pglite'));
57
+ const { drizzle } = (await appImport('drizzle-orm/pglite'));
58
+ const { migrate } = (await appImport('drizzle-orm/pglite/migrator'));
59
+ const client = new PGlite(dir);
60
+ await migrate(drizzle(client), { migrationsFolder });
61
+ await client.close();
62
+ return { driver: 'pglite', target: dir };
63
+ }
64
+ if (!pgUrl) {
65
+ throw new Error('No database configured. Set DATABASE_URL (or PG_HOST/PG_USER/PG_DATABASE), or APHEX_DATABASE=pglite (with optional APHEX_PGLITE_DIR).');
66
+ }
67
+ const { default: postgres } = (await appImport('postgres'));
68
+ const { drizzle } = (await appImport('drizzle-orm/postgres-js'));
69
+ const { migrate } = (await appImport('drizzle-orm/postgres-js/migrator'));
70
+ const sql = postgres(pgUrl, { max: 1 });
71
+ try {
72
+ await migrate(drizzle(sql), { migrationsFolder });
73
+ }
74
+ finally {
75
+ await sql.end();
76
+ }
77
+ const safe = pgUrl.replace(/:\/\/([^:]+):[^@]+@/, '://$1:***@');
78
+ return { driver: 'postgresql', target: safe };
79
+ }
80
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,9 @@
18
18
  ) => void;
19
19
  }
20
20
 
21
+ // `onRestored` is supplied by the parent (AdminApp) as part of the panel contract;
22
+ // restores are currently driven through DocumentEditor, so it isn't called here.
23
+ // eslint-disable-next-line svelte/no-unused-props
21
24
  let { documentId, onClose, onPreviewVersion }: Props = $props();
22
25
 
23
26
  let versions = $state<any[]>([]);
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentVersionPanel.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentVersionPanel.svelte.ts"],"names":[],"mappings":"AASC,UAAU,KAAK;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAClB,OAAO,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,KACJ,IAAI,CAAC;CACV;AAmIF,QAAA,MAAM,oBAAoB;;MAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"DocumentVersionPanel.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentVersionPanel.svelte.ts"],"names":[],"mappings":"AASC,UAAU,KAAK;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAClB,OAAO,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,KACJ,IAAI,CAAC;CACV;AAsIF,QAAA,MAAM,oBAAoB;;MAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
@@ -835,7 +835,6 @@
835
835
  </div>
836
836
  {/if}
837
837
  {#if selectable}
838
- <!-- svelte-ignore a11y_no_static_element_interactions -->
839
838
  <div
840
839
  role="button"
841
840
  tabindex="0"
@@ -1 +1 @@
1
- {"version":3,"file":"MediaBrowser.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/MediaBrowser.svelte.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAS9C,UAAU,KAAK;IACd,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAC7C,oCAAoC;IACpC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AA+qCF,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"MediaBrowser.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/MediaBrowser.svelte.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAS9C,UAAU,KAAK;IACd,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAC7C,oCAAoC;IACpC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AA8qCF,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -11,6 +11,9 @@
11
11
  onDelete: () => void;
12
12
  }
13
13
 
14
+ // `type`/`nodeKey` are passed by the ProseMirror node view (svelte-node-view.ts) for
15
+ // contract parity across block views; this image view doesn't render them.
16
+ // eslint-disable-next-line svelte/no-unused-props
14
17
  let { data, selected = false, onEdit, onDelete }: Props = $props();
15
18
 
16
19
  const assetRef = $derived((data?.asset as any)?._ref as string | undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"PortableTextImageView.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/PortableTextImageView.svelte.ts"],"names":[],"mappings":"AAOC,UAAU,KAAK;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAwDF,QAAA,MAAM,qBAAqB,2CAAwC,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"PortableTextImageView.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/PortableTextImageView.svelte.ts"],"names":[],"mappings":"AAOC,UAAU,KAAK;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AA2DF,QAAA,MAAM,qBAAqB,2CAAwC,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
@@ -8,6 +8,9 @@
8
8
  onDelete: () => void;
9
9
  }
10
10
 
11
+ // `nodeKey` is passed by the inline node view (svelte-inline-node-view.ts) for contract
12
+ // parity but isn't needed here.
13
+ // eslint-disable-next-line svelte/no-unused-props
11
14
  let { type, data, selected, onEdit, onDelete }: Props = $props();
12
15
 
13
16
  const label = $derived(
@@ -15,7 +18,6 @@
15
18
  );
16
19
  </script>
17
20
 
18
- <!-- svelte-ignore a11y_no_static_element_interactions -->
19
21
  <span
20
22
  class="inline-object-chip"
21
23
  class:selected
@@ -1 +1 @@
1
- {"version":3,"file":"PortableTextInlineView.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/PortableTextInlineView.svelte.ts"],"names":[],"mappings":"AAGC,UAAU,KAAK;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AA2BF,QAAA,MAAM,sBAAsB,2CAAwC,CAAC;AACrE,KAAK,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACxE,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"PortableTextInlineView.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/PortableTextInlineView.svelte.ts"],"names":[],"mappings":"AAGC,UAAU,KAAK;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AA6BF,QAAA,MAAM,sBAAsB,2CAAwC,CAAC;AACrE,KAAK,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACxE,eAAe,sBAAsB,CAAC"}
@@ -10,6 +10,9 @@
10
10
  onDelete: () => void;
11
11
  }
12
12
 
13
+ // `nodeKey` is passed by the ProseMirror node view (svelte-node-view.ts) for contract
14
+ // parity across block views but isn't needed here.
15
+ // eslint-disable-next-line svelte/no-unused-props
13
16
  let { type, data, selected = false, onEdit, onDelete }: Props = $props();
14
17
 
15
18
  const title = $derived((data.title as string) || (data.name as string) || type);
@@ -1 +1 @@
1
- {"version":3,"file":"PortableTextObjectView.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/PortableTextObjectView.svelte.ts"],"names":[],"mappings":"AAMC,UAAU,KAAK;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AA+CF,QAAA,MAAM,sBAAsB,2CAAwC,CAAC;AACrE,KAAK,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACxE,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"PortableTextObjectView.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/PortableTextObjectView.svelte.ts"],"names":[],"mappings":"AAMC,UAAU,KAAK;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAkDF,QAAA,MAAM,sBAAsB,2CAAwC,CAAC;AACrE,KAAK,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACxE,eAAe,sBAAsB,CAAC"}
@@ -32,6 +32,11 @@
32
32
  import { PortableTextObject } from './portable-text-object-node';
33
33
  import { PortableTextInlineObject } from './portable-text-inline-object';
34
34
  import { createAnnotationMark } from './custom-annotation-mark';
35
+ import {
36
+ DEFAULT_BLOCK_STYLES,
37
+ DEFAULT_BLOCK_DECORATORS,
38
+ DEFAULT_BLOCK_LISTS
39
+ } from './block-defaults';
35
40
  import type { ArrayField as ArrayFieldType, SchemaType } from '../../../../types/schemas';
36
41
  import { getSchemaContext } from '../../../../schema-context.svelte';
37
42
  import { getSchemaByName } from '../../../../schema-utils/utils';
@@ -82,28 +87,11 @@
82
87
  let editingIsInline = $state(false);
83
88
 
84
89
  const blockDef = $derived(field.of.find((ref) => ref.type === 'block'));
85
- const styles = $derived(
86
- blockDef?.styles?.map((s) => s.value) ?? [
87
- 'normal',
88
- 'h1',
89
- 'h2',
90
- 'h3',
91
- 'h4',
92
- 'h5',
93
- 'h6',
94
- 'blockquote'
95
- ]
96
- );
90
+ const styles = $derived(blockDef?.styles?.map((s) => s.value) ?? DEFAULT_BLOCK_STYLES);
97
91
  const decorators = $derived(
98
- blockDef?.marks?.decorators?.map((d) => d.value) ?? [
99
- 'strong',
100
- 'em',
101
- 'underline',
102
- 'strike-through',
103
- 'code'
104
- ]
92
+ blockDef?.marks?.decorators?.map((d) => d.value) ?? DEFAULT_BLOCK_DECORATORS
105
93
  );
106
- const lists = $derived(blockDef?.lists?.map((l) => l.value) ?? ['bullet', 'number']);
94
+ const lists = $derived(blockDef?.lists?.map((l) => l.value) ?? DEFAULT_BLOCK_LISTS);
107
95
 
108
96
  const customAnnotations = $derived(
109
97
  (blockDef?.marks?.annotations ?? []).map((a) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"RichtextField.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/RichtextField.svelte.ts"],"names":[],"mappings":"AA4BA,OAAO,EAGL,KAAK,iBAAiB,EACtB,MAAM,4BAA4B,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAc,MAAM,2BAA2B,CAAC;AAWzF,UAAU,KAAK;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AA+mCF,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"RichtextField.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/RichtextField.svelte.ts"],"names":[],"mappings":"AA4BA,OAAO,EAGL,KAAK,iBAAiB,EACtB,MAAM,4BAA4B,CAAC;AASrC,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAc,MAAM,2BAA2B,CAAC;AAWzF,UAAU,KAAK;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AA+lCF,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const DEFAULT_BLOCK_STYLES: string[];
2
+ export declare const DEFAULT_BLOCK_DECORATORS: string[];
3
+ export declare const DEFAULT_BLOCK_LISTS: string[];
4
+ //# sourceMappingURL=block-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-defaults.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/block-defaults.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,UAA+D,CAAC;AAEjG,eAAO,MAAM,wBAAwB,UAA0D,CAAC;AAEhG,eAAO,MAAM,mBAAmB,UAAuB,CAAC"}
@@ -0,0 +1,8 @@
1
+ // Default Portable Text block config, applied when a `{ type: 'block' }` in a
2
+ // schema omits its own `styles` / `marks.decorators` / `lists`. Single source of
3
+ // truth: the editor (RichtextField.svelte) and the MCP schema guide
4
+ // (mcp/tools.ts → portableTextGuide) both import these, so what the agent is told
5
+ // matches what the editor actually offers. Plain constants — no Svelte.
6
+ export const DEFAULT_BLOCK_STYLES = ['normal', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'];
7
+ export const DEFAULT_BLOCK_DECORATORS = ['strong', 'em', 'underline', 'strike-through', 'code'];
8
+ export const DEFAULT_BLOCK_LISTS = ['bullet', 'number'];
@@ -0,0 +1,4 @@
1
+ export declare const DEFAULT_BLOCK_STYLES: string[];
2
+ export declare const DEFAULT_BLOCK_DECORATORS: string[];
3
+ export declare const DEFAULT_BLOCK_LISTS: string[];
4
+ //# sourceMappingURL=block-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-defaults.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/block-defaults.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,UAA+D,CAAC;AAEjG,eAAO,MAAM,wBAAwB,UAA0D,CAAC;AAEhG,eAAO,MAAM,mBAAmB,UAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Default Portable Text block config, applied when a `{ type: 'block' }` in a
2
+ // schema omits its own `styles` / `marks.decorators` / `lists`. Single source of
3
+ // truth: the editor (RichtextField.svelte) and the MCP schema guide
4
+ // (mcp/tools.ts → portableTextGuide) both import these, so what the agent is told
5
+ // matches what the editor actually offers. Plain constants — no Svelte.
6
+ export const DEFAULT_BLOCK_STYLES = ['normal', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'];
7
+ export const DEFAULT_BLOCK_DECORATORS = ['strong', 'em', 'underline', 'strike-through', 'code'];
8
+ export const DEFAULT_BLOCK_LISTS = ['bullet', 'number'];
9
+ //# sourceMappingURL=block-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-defaults.js","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/block-defaults.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iFAAiF;AACjF,oEAAoE;AACpE,kFAAkF;AAClF,wEAAwE;AAExE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAEjG,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAEhG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import type { CMSInstances } from '../hooks.js';
3
+ import type { LocalAPIContext } from '../local-api/index.js';
4
+ export interface McpToolResult {
5
+ content: Array<{
6
+ type: 'text';
7
+ text: string;
8
+ }>;
9
+ isError?: boolean;
10
+ }
11
+ export interface McpTool {
12
+ name: string;
13
+ description: string;
14
+ /** zod raw shape describing the tool's arguments. */
15
+ inputSchema: z.ZodRawShape;
16
+ handler: (args: Record<string, unknown>) => Promise<McpToolResult>;
17
+ }
18
+ export interface McpToolDeps {
19
+ aphexCMS: CMSInstances;
20
+ context: LocalAPIContext;
21
+ }
22
+ /**
23
+ * Build the content-plane tools for one authenticated request.
24
+ * Safe to expose against a live instance: all writes go through LocalAPI, so a
25
+ * read-only API key is rejected by the permission layer, not by this registry.
26
+ */
27
+ export declare function buildContentTools({ aphexCMS, context }: McpToolDeps): McpTool[];
28
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/lib/mcp/tools.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAe1D,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,eAAe,CAAC;CACzB;AA6FD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,OAAO,EAAE,CAoW/E"}