@hale-bopp/valentino-engine 2.1.0 → 2.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/README.md +63 -2
- package/dist/bin/commands/cockpit.d.ts +16 -0
- package/dist/bin/commands/cockpit.d.ts.map +1 -0
- package/dist/bin/commands/cockpit.js +205 -0
- package/dist/bin/commands/cockpit.js.map +1 -0
- package/dist/bin/commands/theme-audit.d.ts +7 -0
- package/dist/bin/commands/theme-audit.d.ts.map +1 -0
- package/dist/bin/commands/theme-audit.js +70 -0
- package/dist/bin/commands/theme-audit.js.map +1 -0
- package/dist/bin/commands/validate.d.ts.map +1 -1
- package/dist/bin/commands/validate.js +94 -1
- package/dist/bin/commands/validate.js.map +1 -1
- package/dist/bin/valentino.js +15 -1
- package/dist/bin/valentino.js.map +1 -1
- package/dist/cockpit-server.d.ts +17 -0
- package/dist/cockpit-server.d.ts.map +1 -0
- package/dist/cockpit-server.js +505 -0
- package/dist/cockpit-server.js.map +1 -0
- package/dist/cockpit-web/index.html +979 -0
- package/dist/core/cockpit-api.d.ts +99 -0
- package/dist/core/cockpit-api.d.ts.map +1 -0
- package/dist/core/cockpit-api.js +269 -0
- package/dist/core/cockpit-api.js.map +1 -0
- package/dist/core/cockpit-repl.d.ts +51 -0
- package/dist/core/cockpit-repl.d.ts.map +1 -0
- package/dist/core/cockpit-repl.js +217 -0
- package/dist/core/cockpit-repl.js.map +1 -0
- package/dist/core/contrast-usage-probe.d.ts +84 -0
- package/dist/core/contrast-usage-probe.d.ts.map +1 -0
- package/dist/core/contrast-usage-probe.js +244 -0
- package/dist/core/contrast-usage-probe.js.map +1 -0
- package/dist/core/contrast-usage-probe.test.d.ts +2 -0
- package/dist/core/contrast-usage-probe.test.d.ts.map +1 -0
- package/dist/core/contrast-usage-probe.test.js +186 -0
- package/dist/core/contrast-usage-probe.test.js.map +1 -0
- package/dist/core/editor.d.ts +80 -0
- package/dist/core/editor.d.ts.map +1 -0
- package/dist/core/editor.js +421 -0
- package/dist/core/editor.js.map +1 -0
- package/dist/core/gallery.d.ts +53 -0
- package/dist/core/gallery.d.ts.map +1 -0
- package/dist/core/gallery.js +123 -0
- package/dist/core/gallery.js.map +1 -0
- package/dist/core/gallery.test.d.ts +2 -0
- package/dist/core/gallery.test.d.ts.map +1 -0
- package/dist/core/gallery.test.js +127 -0
- package/dist/core/gallery.test.js.map +1 -0
- package/dist/core/intent-parser.d.ts +67 -0
- package/dist/core/intent-parser.d.ts.map +1 -0
- package/dist/core/intent-parser.js +485 -0
- package/dist/core/intent-parser.js.map +1 -0
- package/dist/core/openrouter-client.d.ts +38 -0
- package/dist/core/openrouter-client.d.ts.map +1 -0
- package/dist/core/openrouter-client.js +123 -0
- package/dist/core/openrouter-client.js.map +1 -0
- package/dist/core/page-generator.d.ts +85 -0
- package/dist/core/page-generator.d.ts.map +1 -0
- package/dist/core/page-generator.js +353 -0
- package/dist/core/page-generator.js.map +1 -0
- package/dist/core/page-generator.test.d.ts +2 -0
- package/dist/core/page-generator.test.d.ts.map +1 -0
- package/dist/core/page-generator.test.js +138 -0
- package/dist/core/page-generator.test.js.map +1 -0
- package/dist/core/page-status.d.ts +15 -1
- package/dist/core/page-status.d.ts.map +1 -1
- package/dist/core/page-status.js +21 -0
- package/dist/core/page-status.js.map +1 -1
- package/dist/core/project-adapter.d.ts +73 -0
- package/dist/core/project-adapter.d.ts.map +1 -0
- package/dist/core/project-adapter.js +364 -0
- package/dist/core/project-adapter.js.map +1 -0
- package/dist/core/schema-export.d.ts +32 -0
- package/dist/core/schema-export.d.ts.map +1 -0
- package/dist/core/schema-export.js +493 -0
- package/dist/core/schema-export.js.map +1 -0
- package/dist/core/theme-audit.d.ts +104 -0
- package/dist/core/theme-audit.d.ts.map +1 -0
- package/dist/core/theme-audit.js +127 -0
- package/dist/core/theme-audit.js.map +1 -0
- package/dist/core/theme-audit.test.d.ts +2 -0
- package/dist/core/theme-audit.test.d.ts.map +1 -0
- package/dist/core/theme-audit.test.js +198 -0
- package/dist/core/theme-audit.test.js.map +1 -0
- package/dist/core/url-import.d.ts +41 -0
- package/dist/core/url-import.d.ts.map +1 -0
- package/dist/core/url-import.js +207 -0
- package/dist/core/url-import.js.map +1 -0
- package/dist/core/video-import.d.ts +46 -0
- package/dist/core/video-import.d.ts.map +1 -0
- package/dist/core/video-import.js +192 -0
- package/dist/core/video-import.js.map +1 -0
- package/dist/core/visual-import.d.ts +42 -0
- package/dist/core/visual-import.d.ts.map +1 -0
- package/dist/core/visual-import.js +227 -0
- package/dist/core/visual-import.js.map +1 -0
- package/dist/index.d.ts +31 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.js +32 -0
- package/dist/mcp/index.js.map +1 -1
- package/package.json +10 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallery.js","sourceRoot":"","sources":["../../src/core/gallery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallery.test.d.ts","sourceRoot":"","sources":["../../src/core/gallery.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { listCatalogEntries, listPageEntries, listAllGalleryEntries, filterGalleryEntries } from './gallery.js';
|
|
3
|
+
const catalog = {
|
|
4
|
+
version: '1',
|
|
5
|
+
templates: {
|
|
6
|
+
'product-tpl': { page: { profile: 'product-surface', themeId: 'dark' } },
|
|
7
|
+
},
|
|
8
|
+
sectionPresets: {},
|
|
9
|
+
transitionProfiles: {},
|
|
10
|
+
pageBlueprints: {
|
|
11
|
+
'landing-bp': {
|
|
12
|
+
spec: {
|
|
13
|
+
version: '1',
|
|
14
|
+
id: 'landing-bp',
|
|
15
|
+
profile: 'home-signature',
|
|
16
|
+
sections: [
|
|
17
|
+
{ type: 'hero', titleKey: 'bp.hero.title' },
|
|
18
|
+
{ type: 'cards', variant: 'catalog', items: [{ titleKey: 'bp.card1' }] },
|
|
19
|
+
{ type: 'cta', titleKey: 'bp.cta.title' },
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
'about-bp': {
|
|
24
|
+
spec: {
|
|
25
|
+
version: '1',
|
|
26
|
+
id: 'about-bp',
|
|
27
|
+
profile: 'reading-manifesto',
|
|
28
|
+
sections: [
|
|
29
|
+
{ type: 'hero', titleKey: 'about.hero.title' },
|
|
30
|
+
{ type: 'manifesto', contentPrefix: 'about.manifesto' },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
governance: { tier: 'standard' },
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
const manifest = {
|
|
38
|
+
version: '1',
|
|
39
|
+
pages: [
|
|
40
|
+
{ id: 'home', route: '/', spec: 'home.json', status: 'published' },
|
|
41
|
+
{ id: 'draft-page', route: '/draft', spec: 'draft.json', status: 'draft' },
|
|
42
|
+
{ id: 'about', route: '/about', spec: 'about.json', status: 'published' },
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
describe('listCatalogEntries', () => {
|
|
46
|
+
it('returns blueprints and templates', () => {
|
|
47
|
+
const entries = listCatalogEntries(catalog);
|
|
48
|
+
expect(entries).toHaveLength(3); // 2 blueprints + 1 template
|
|
49
|
+
});
|
|
50
|
+
it('blueprints have section metadata', () => {
|
|
51
|
+
const entries = listCatalogEntries(catalog);
|
|
52
|
+
const landing = entries.find(e => e.id === 'landing-bp');
|
|
53
|
+
expect(landing).toBeDefined();
|
|
54
|
+
expect(landing.kind).toBe('blueprint');
|
|
55
|
+
expect(landing.sectionCount).toBe(3);
|
|
56
|
+
expect(landing.sectionTypes).toContain('hero');
|
|
57
|
+
expect(landing.sectionTypes).toContain('cards');
|
|
58
|
+
expect(landing.sectionTypes).toContain('cta');
|
|
59
|
+
});
|
|
60
|
+
it('templates have kind template', () => {
|
|
61
|
+
const entries = listCatalogEntries(catalog);
|
|
62
|
+
const tpl = entries.find(e => e.id === 'product-tpl');
|
|
63
|
+
expect(tpl).toBeDefined();
|
|
64
|
+
expect(tpl.kind).toBe('template');
|
|
65
|
+
expect(tpl.profile).toBe('product-surface');
|
|
66
|
+
});
|
|
67
|
+
it('includes governance tier', () => {
|
|
68
|
+
const entries = listCatalogEntries(catalog);
|
|
69
|
+
const about = entries.find(e => e.id === 'about-bp');
|
|
70
|
+
expect(about.governanceTier).toBe('standard');
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe('listPageEntries', () => {
|
|
74
|
+
it('returns only published pages', () => {
|
|
75
|
+
const entries = listPageEntries(manifest);
|
|
76
|
+
expect(entries).toHaveLength(2);
|
|
77
|
+
expect(entries.map(e => e.id)).toContain('home');
|
|
78
|
+
expect(entries.map(e => e.id)).toContain('about');
|
|
79
|
+
expect(entries.map(e => e.id)).not.toContain('draft-page');
|
|
80
|
+
});
|
|
81
|
+
it('entries have kind page', () => {
|
|
82
|
+
const entries = listPageEntries(manifest);
|
|
83
|
+
expect(entries.every(e => e.kind === 'page')).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe('listAllGalleryEntries', () => {
|
|
87
|
+
it('combines catalog and manifest', () => {
|
|
88
|
+
const entries = listAllGalleryEntries(catalog, manifest);
|
|
89
|
+
expect(entries.length).toBe(5); // 2 bp + 1 tpl + 2 published pages
|
|
90
|
+
});
|
|
91
|
+
it('works with catalog only', () => {
|
|
92
|
+
const entries = listAllGalleryEntries(catalog);
|
|
93
|
+
expect(entries).toHaveLength(3);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe('filterGalleryEntries', () => {
|
|
97
|
+
const all = listAllGalleryEntries(catalog, manifest);
|
|
98
|
+
it('filters by kind', () => {
|
|
99
|
+
const blueprints = filterGalleryEntries(all, { kind: 'blueprint' });
|
|
100
|
+
expect(blueprints).toHaveLength(2);
|
|
101
|
+
expect(blueprints.every(e => e.kind === 'blueprint')).toBe(true);
|
|
102
|
+
});
|
|
103
|
+
it('filters by multiple kinds', () => {
|
|
104
|
+
const result = filterGalleryEntries(all, { kind: ['blueprint', 'template'] });
|
|
105
|
+
expect(result).toHaveLength(3);
|
|
106
|
+
});
|
|
107
|
+
it('filters by profile', () => {
|
|
108
|
+
const result = filterGalleryEntries(all, { profile: 'home-signature' });
|
|
109
|
+
expect(result.length).toBeGreaterThanOrEqual(1);
|
|
110
|
+
expect(result.every(e => e.profile === 'home-signature')).toBe(true);
|
|
111
|
+
});
|
|
112
|
+
it('filters by section type', () => {
|
|
113
|
+
const result = filterGalleryEntries(all, { sectionType: 'manifesto' });
|
|
114
|
+
expect(result.length).toBeGreaterThanOrEqual(1);
|
|
115
|
+
expect(result.every(e => e.sectionTypes.includes('manifesto'))).toBe(true);
|
|
116
|
+
});
|
|
117
|
+
it('filters by search text', () => {
|
|
118
|
+
const result = filterGalleryEntries(all, { search: 'landing' });
|
|
119
|
+
expect(result.length).toBeGreaterThanOrEqual(1);
|
|
120
|
+
});
|
|
121
|
+
it('combines filters', () => {
|
|
122
|
+
const result = filterGalleryEntries(all, { kind: 'blueprint', profile: 'home-signature' });
|
|
123
|
+
expect(result).toHaveLength(1);
|
|
124
|
+
expect(result[0].id).toBe('landing-bp');
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=gallery.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallery.test.js","sourceRoot":"","sources":["../../src/core/gallery.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent Parser — Natural language → CockpitAction.
|
|
3
|
+
* Feature #778 (Il Sarto Parla), PBI #780 (Phase 1).
|
|
4
|
+
*
|
|
5
|
+
* Two modes:
|
|
6
|
+
* - Local (rule-based): regex patterns for IT/EN, always works, zero API.
|
|
7
|
+
* - LLM (callback): delegates to external LLM, validates output, falls back to local.
|
|
8
|
+
*
|
|
9
|
+
* Pure functions, no I/O, no LLM client.
|
|
10
|
+
*/
|
|
11
|
+
import type { CockpitAction } from './cockpit-api.js';
|
|
12
|
+
import type { SectionSpec, PageSpecV1 } from './types.js';
|
|
13
|
+
export type ParsedIntent = {
|
|
14
|
+
action: CockpitAction;
|
|
15
|
+
confidence: 'high' | 'medium' | 'low';
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
export type IntentParseResult = {
|
|
19
|
+
intent: ParsedIntent | null;
|
|
20
|
+
mode: 'local' | 'llm';
|
|
21
|
+
raw: string;
|
|
22
|
+
fallbackReason?: string;
|
|
23
|
+
};
|
|
24
|
+
export type IntentLlmCallback = (prompt: string, context: IntentLlmContext) => Promise<unknown>;
|
|
25
|
+
export type IntentLlmContext = {
|
|
26
|
+
pageSpec: PageSpecV1;
|
|
27
|
+
actionSchema: object;
|
|
28
|
+
sectionSchemas: Record<string, object>;
|
|
29
|
+
sectionSummary: Array<{
|
|
30
|
+
index: number;
|
|
31
|
+
type: string;
|
|
32
|
+
titleKey?: string;
|
|
33
|
+
}>;
|
|
34
|
+
};
|
|
35
|
+
declare function resolveSectionType(raw: string): string | null;
|
|
36
|
+
declare function parseIndex(raw: string, totalSections: number): number | null;
|
|
37
|
+
declare function buildMinimalSection(sectionType: string): SectionSpec;
|
|
38
|
+
declare function buildSectionSummary(spec: PageSpecV1): Array<{
|
|
39
|
+
index: number;
|
|
40
|
+
type: string;
|
|
41
|
+
titleKey?: string;
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* Parse a natural language operator request into a CockpitAction.
|
|
45
|
+
*
|
|
46
|
+
* Supports IT and EN. If `llm` callback is provided, tries LLM first
|
|
47
|
+
* with automatic fallback to local rule-based parser.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* // Local mode
|
|
52
|
+
* const result = parseIntent("mostrami le sezioni", pageSpec);
|
|
53
|
+
*
|
|
54
|
+
* // LLM mode with fallback
|
|
55
|
+
* const result = await parseIntent("aggiungi una hero", pageSpec, myLlm);
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function parseIntent(input: string, spec: PageSpecV1, llm?: IntentLlmCallback): Promise<IntentParseResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Synchronous local-only parsing. No LLM, always works.
|
|
61
|
+
*/
|
|
62
|
+
export declare function parseIntentLocal(input: string, spec: PageSpecV1): IntentParseResult;
|
|
63
|
+
/**
|
|
64
|
+
* Exported for testing.
|
|
65
|
+
*/
|
|
66
|
+
export { resolveSectionType, parseIndex, buildMinimalSection, buildSectionSummary };
|
|
67
|
+
//# sourceMappingURL=intent-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-parser.d.ts","sourceRoot":"","sources":["../../src/core/intent-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ1D,MAAM,MAAM,YAAY,GAAG;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,KACxB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,EAAE,UAAU,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,cAAc,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7E,CAAC;AAiCF,iBAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAItD;AAgBD,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBrE;AAiQD,iBAAS,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAgC7D;AAyDD,iBAAS,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAMxG;AA4DD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,EAChB,GAAG,CAAC,EAAE,iBAAiB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAK5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,iBAAiB,CAEnF;AAED;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC"}
|