@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.
- package/dist/cli/index.js +22 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/migrate.d.ts +10 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +80 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/components/admin/DocumentVersionPanel.svelte +3 -0
- package/dist/components/admin/DocumentVersionPanel.svelte.d.ts.map +1 -1
- package/dist/components/admin/MediaBrowser.svelte +0 -1
- package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/PortableTextImageView.svelte +3 -0
- package/dist/components/admin/fields/richtext/PortableTextImageView.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte +3 -1
- package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte +3 -0
- package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/RichtextField.svelte +8 -20
- package/dist/components/admin/fields/richtext/RichtextField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/block-defaults.d.ts +4 -0
- package/dist/components/admin/fields/richtext/block-defaults.d.ts.map +1 -0
- package/dist/components/admin/fields/richtext/block-defaults.js +8 -0
- package/dist/lib/components/admin/fields/richtext/block-defaults.d.ts +4 -0
- package/dist/lib/components/admin/fields/richtext/block-defaults.d.ts.map +1 -0
- package/dist/lib/components/admin/fields/richtext/block-defaults.js +9 -0
- package/dist/lib/components/admin/fields/richtext/block-defaults.js.map +1 -0
- package/dist/lib/mcp/tools.d.ts +28 -0
- package/dist/lib/mcp/tools.d.ts.map +1 -0
- package/dist/lib/mcp/tools.js +464 -0
- package/dist/lib/mcp/tools.js.map +1 -0
- package/dist/lib/routes/mcp.d.ts +5 -0
- package/dist/lib/routes/mcp.d.ts.map +1 -0
- package/dist/lib/routes/mcp.js +72 -0
- package/dist/lib/routes/mcp.js.map +1 -0
- package/dist/lib/schema-utils/validator.d.ts +6 -0
- package/dist/lib/schema-utils/validator.d.ts.map +1 -1
- package/dist/lib/schema-utils/validator.js +21 -15
- package/dist/lib/schema-utils/validator.js.map +1 -1
- package/dist/lib/server/index.d.ts +2 -1
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +4 -1
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/vite/index.d.ts.map +1 -1
- package/dist/lib/vite/index.js +12 -1
- package/dist/lib/vite/index.js.map +1 -1
- package/dist/mcp/tools.d.ts +28 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +463 -0
- package/dist/routes/mcp.d.ts +5 -0
- package/dist/routes/mcp.d.ts.map +1 -0
- package/dist/routes/mcp.js +71 -0
- package/dist/schema-utils/validator.d.ts +6 -0
- package/dist/schema-utils/validator.d.ts.map +1 -1
- package/dist/schema-utils/validator.js +21 -15
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -1
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +12 -1
- 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
|
*/
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;
|
|
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;
|
|
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"}
|
|
@@ -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;
|
|
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;
|
|
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;
|
|
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;
|
|
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) ??
|
|
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;
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|