create-cogenta 0.1.5 → 0.2.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 (63) hide show
  1. package/dist/blueprint-defaults.d.ts +58 -0
  2. package/dist/blueprint-defaults.d.ts.map +1 -0
  3. package/dist/blueprint-defaults.js +111 -0
  4. package/dist/blueprint-defaults.js.map +1 -0
  5. package/dist/blueprints/association.d.ts.map +1 -1
  6. package/dist/blueprints/association.js +50 -1
  7. package/dist/blueprints/association.js.map +1 -1
  8. package/dist/blueprints/blog.d.ts.map +1 -1
  9. package/dist/blueprints/blog.js +26 -0
  10. package/dist/blueprints/blog.js.map +1 -1
  11. package/dist/blueprints/content-pack.d.ts +9 -1
  12. package/dist/blueprints/content-pack.d.ts.map +1 -1
  13. package/dist/blueprints/content-pack.js +18 -0
  14. package/dist/blueprints/content-pack.js.map +1 -1
  15. package/dist/blueprints/documentation.d.ts.map +1 -1
  16. package/dist/blueprints/documentation.js +45 -1
  17. package/dist/blueprints/documentation.js.map +1 -1
  18. package/dist/blueprints/magazine.d.ts.map +1 -1
  19. package/dist/blueprints/magazine.js +34 -0
  20. package/dist/blueprints/magazine.js.map +1 -1
  21. package/dist/blueprints/portfolio.d.ts.map +1 -1
  22. package/dist/blueprints/portfolio.js +26 -0
  23. package/dist/blueprints/portfolio.js.map +1 -1
  24. package/dist/blueprints/restaurant.d.ts.map +1 -1
  25. package/dist/blueprints/restaurant.js +50 -1
  26. package/dist/blueprints/restaurant.js.map +1 -1
  27. package/dist/blueprints/saas.d.ts.map +1 -1
  28. package/dist/blueprints/saas.js +50 -1
  29. package/dist/blueprints/saas.js.map +1 -1
  30. package/dist/blueprints/vitrine.d.ts.map +1 -1
  31. package/dist/blueprints/vitrine.js +36 -0
  32. package/dist/blueprints/vitrine.js.map +1 -1
  33. package/dist/config-file.d.ts.map +1 -1
  34. package/dist/config-file.js +22 -0
  35. package/dist/config-file.js.map +1 -1
  36. package/dist/document-step.d.ts +35 -0
  37. package/dist/document-step.d.ts.map +1 -0
  38. package/dist/document-step.js +53 -0
  39. package/dist/document-step.js.map +1 -0
  40. package/dist/plan-flow.d.ts +51 -0
  41. package/dist/plan-flow.d.ts.map +1 -0
  42. package/dist/plan-flow.js +77 -0
  43. package/dist/plan-flow.js.map +1 -0
  44. package/dist/recap.d.ts +3 -0
  45. package/dist/recap.d.ts.map +1 -1
  46. package/dist/recap.js +26 -2
  47. package/dist/recap.js.map +1 -1
  48. package/dist/scaffold.d.ts +37 -0
  49. package/dist/scaffold.d.ts.map +1 -1
  50. package/dist/scaffold.js +113 -9
  51. package/dist/scaffold.js.map +1 -1
  52. package/dist/skin-flow.d.ts +22 -8
  53. package/dist/skin-flow.d.ts.map +1 -1
  54. package/dist/skin-flow.js +57 -29
  55. package/dist/skin-flow.js.map +1 -1
  56. package/dist/types.d.ts +8 -0
  57. package/dist/types.d.ts.map +1 -1
  58. package/dist/types.js.map +1 -1
  59. package/dist/wizard.d.ts +19 -3
  60. package/dist/wizard.d.ts.map +1 -1
  61. package/dist/wizard.js +254 -45
  62. package/dist/wizard.js.map +1 -1
  63. package/package.json +9 -9
@@ -0,0 +1,77 @@
1
+ import { proposeSitePlan, resolveApprovedPlan, summarisePlan, } from '@cogenta/agents';
2
+ function printBrief(draft, out) {
3
+ out.heading('What we understood from your document');
4
+ out.line(draft.brief.summary);
5
+ out.detail(`Activity: ${draft.brief.activity}`);
6
+ out.detail(`Audience: ${draft.brief.audience}`);
7
+ out.detail(`Tone: ${draft.brief.tone}`);
8
+ out.detail(`Languages: ${draft.brief.languages.join(', ')}`);
9
+ for (const source of draft.brief.sources) {
10
+ out.detail(`Read from ${source.filename} (${source.format}, ${source.characters} characters${source.truncated ? ', truncated' : ''})`);
11
+ }
12
+ for (const warning of draft.brief.warnings)
13
+ out.warn(warning);
14
+ for (const violation of draft.violations)
15
+ out.warn(violation.explanation);
16
+ }
17
+ export async function runPlanFlow(options) {
18
+ options.out.heading('Reading your document');
19
+ options.out.detail('Analysing the brief, proposing a content model and several designs…');
20
+ const proposed = await proposeSitePlan({
21
+ client: options.client,
22
+ model: options.model,
23
+ documents: options.documents,
24
+ ...(options.siteName === undefined ? {} : { siteName: options.siteName }),
25
+ ...(options.blueprintLabel === undefined ? {} : { blueprintLabel: options.blueprintLabel }),
26
+ ...(options.skinCount === undefined ? {} : { skinCount: options.skinCount }),
27
+ });
28
+ if (!proposed.ok) {
29
+ options.out.bad(`The document could not be turned into a plan (${proposed.stage}): ${proposed.reason}`);
30
+ return { kind: 'failed', stage: proposed.stage, reason: proposed.reason };
31
+ }
32
+ const { draft } = proposed;
33
+ printBrief(draft, options.out);
34
+ for (const warning of draft.warnings)
35
+ options.out.warn(warning);
36
+ const wantsReview = await options.prompter.confirm('Review this proposal now, item by item? (answering no saves it as a draft to review in the admin later — nothing is applied either way)', false);
37
+ if (!wantsReview) {
38
+ return {
39
+ kind: 'deferred',
40
+ draft,
41
+ reason: 'the proposal was not reviewed, so it was saved as a draft instead of being applied',
42
+ };
43
+ }
44
+ const decisions = {};
45
+ for (const section of summarisePlan(draft)) {
46
+ if (section.items.length === 0)
47
+ continue;
48
+ options.out.heading(section.title);
49
+ options.out.line(section.description);
50
+ if (section.mode === 'one-of') {
51
+ const chosen = await options.prompter.choice('Which one?', [
52
+ ...section.items.map((item) => ({
53
+ label: item.title,
54
+ value: item.id,
55
+ hint: item.detail,
56
+ })),
57
+ { label: 'None of them', value: null },
58
+ ], 0);
59
+ for (const item of section.items) {
60
+ decisions[item.id] = item.id === chosen ? 'accepted' : 'rejected';
61
+ }
62
+ continue;
63
+ }
64
+ for (const item of section.items) {
65
+ options.out.detail(item.detail);
66
+ const keep = await options.prompter.confirm(`Keep “${item.title}”?`, true);
67
+ decisions[item.id] = keep ? 'accepted' : 'rejected';
68
+ }
69
+ }
70
+ const approved = resolveApprovedPlan(draft, decisions);
71
+ options.out.ok(`Approved: ${approved.collections.length} collection(s), ${approved.pages.length} page(s), ${approved.demoContent.length} demonstration entr${approved.demoContent.length === 1 ? 'y' : 'ies'}${approved.skinId === undefined ? ', no design' : `, the “${approved.skinId}” design`}.`);
72
+ if (approved.rejected.length > 0) {
73
+ options.out.detail(`Refused: ${approved.rejected.join(', ')}.`);
74
+ }
75
+ return { kind: 'reviewed', draft, decisions, approved };
76
+ }
77
+ //# sourceMappingURL=plan-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-flow.js","sourceRoot":"","sources":["../src/plan-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,eAAe,EACf,mBAAmB,EAEnB,aAAa,GACd,MAAM,iBAAiB,CAAA;AA+CxB,SAAS,UAAU,CAAC,KAAoB,EAAE,GAAW;IACnD,GAAG,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAA;IACpD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC7B,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC/C,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC/C,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5D,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,CACR,aAAa,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,cAAc,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAC3H,CAAA;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7D,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU;QAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,qEAAqE,CAAC,CAAA;IAEzF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;QACrC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3F,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;KAC7E,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,GAAG,CACb,iDAAiD,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,MAAM,EAAE,CACvF,CAAA;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;IAC3E,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAA;IAC1B,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IAC9B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE/D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAChD,yIAAyI,EACzI,KAAK,CACN,CAAA;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK;YACL,MAAM,EAAE,oFAAoF;SAC7F,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAqC,EAAE,CAAA;IACtD,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QACxC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAErC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAC1C,YAAY,EACZ;gBACE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,EAAE;oBACd,IAAI,EAAE,IAAI,CAAC,MAAM;iBAClB,CAAC,CAAC;gBACH,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;aACvC,EACD,CAAC,CACF,CAAA;YACD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;YACnE,CAAC;YACD,SAAQ;QACV,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAA;YAC1E,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;QACrD,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CACZ,aAAa,QAAQ,CAAC,WAAW,CAAC,MAAM,mBAAmB,QAAQ,CAAC,KAAK,CAAC,MAAM,aAAa,QAAQ,CAAC,WAAW,CAAC,MAAM,sBAAsB,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,QAAQ,CAAC,MAAM,UAAU,GAAG,CACvR,CAAA;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjE,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;AACzD,CAAC"}
package/dist/recap.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { Output } from '@cogenta/cli';
2
2
  import type { ResolvedBlueprint } from './blueprints/registry.js';
3
3
  import type { EnvironmentReport } from './environment.js';
4
4
  import type { ValidateKeyResult } from './llm-setup.js';
5
+ import type { PlanFlowOutcome } from './plan-flow.js';
5
6
  import type { ScaffoldResult } from './scaffold.js';
6
7
  import type { SkinOutcome } from './skin-flow.js';
7
8
  import type { WizardAnswers } from './types.js';
@@ -13,6 +14,8 @@ export interface RecapInput {
13
14
  readonly scaffold: ScaffoldResult;
14
15
  /** Present only when generation was attempted (L9 task 7) — absent means it was never offered (no LLM, no description). */
15
16
  readonly skinOutcome?: SkinOutcome;
17
+ /** Present only when a specification document was read (L19). Absent means the step was never entered. */
18
+ readonly plan?: PlanFlowOutcome;
16
19
  }
17
20
  /** Step 10: "ce qui est actif, ce qui est dégradé et pourquoi, prochaine étape." Every degraded item names why, never just that it is degraded. */
18
21
  export declare function printRecap(input: RecapInput, out: Output): void;
@@ -1 +1 @@
1
- {"version":3,"file":"recap.d.ts","sourceRoot":"","sources":["../src/recap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;IACvC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,2HAA2H;IAC3H,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC;AAED,mJAAmJ;AACnJ,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAqF/D"}
1
+ {"version":3,"file":"recap.d.ts","sourceRoot":"","sources":["../src/recap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;IACvC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,2HAA2H;IAC3H,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,0GAA0G;IAC1G,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAChC;AAED,mJAAmJ;AACnJ,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAmH/D"}
package/dist/recap.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { BLUEPRINT_CONTENT_PACKS } from './blueprints/content-packs.js';
2
2
  /** Step 10: "ce qui est actif, ce qui est dégradé et pourquoi, prochaine étape." Every degraded item names why, never just that it is degraded. */
3
3
  export function printRecap(input, out) {
4
- const { answers, environment, resolvedBlueprint, keyValidation, scaffold, skinOutcome } = input;
4
+ const { answers, environment, resolvedBlueprint, keyValidation, scaffold, skinOutcome, plan } = input;
5
5
  out.heading('Your site');
6
6
  out.ok(`${answers.siteName} — ${answers.siteUrl}`);
7
7
  out.detail(answers.targetDir);
@@ -51,6 +51,30 @@ export function printRecap(input, out) {
51
51
  out.heading('Recommended agents');
52
52
  out.detail('Not enabled — no site runs a live agent scheduler yet. Recorded in .cogenta/recommended-agents.json for when one exists.');
53
53
  }
54
+ if (plan !== undefined) {
55
+ out.heading('Your document');
56
+ if (plan.kind === 'failed') {
57
+ out.bad(`No plan could be produced (${plan.stage}): ${plan.reason}`);
58
+ out.detail('The site was created from your answers alone. Nothing was applied from the document.');
59
+ }
60
+ else if (plan.kind === 'deferred') {
61
+ out.warn('A plan was proposed but nobody reviewed it, so nothing from it was applied.');
62
+ if (scaffold.sitePlanPath !== undefined)
63
+ out.detail(`Saved at ${scaffold.sitePlanPath}`);
64
+ out.detail('Open the admin and review it there — it applies only once you accept it, item by item.');
65
+ }
66
+ else {
67
+ out.ok(`${scaffold.approvedCollectionNames.length} collection(s) you approved were added${scaffold.approvedCollectionNames.length === 0 ? '' : `: ${scaffold.approvedCollectionNames.join(', ')}`}.`);
68
+ if (scaffold.approvedEntriesSeeded > 0) {
69
+ out.detail(`${scaffold.approvedEntriesSeeded} demonstration entr${scaffold.approvedEntriesSeeded === 1 ? 'y was' : 'ies were'} created as drafts, never published — read them before you publish them.`);
70
+ }
71
+ if (plan.approved.rejected.length > 0) {
72
+ out.detail(`You refused: ${plan.approved.rejected.join(', ')}.`);
73
+ }
74
+ for (const violation of plan.draft.violations)
75
+ out.detail(violation.explanation);
76
+ }
77
+ }
54
78
  out.heading('Admin account');
55
79
  if (scaffold.usersExitCode === 0) {
56
80
  out.line(scaffold.usersOutput.trim());
@@ -71,6 +95,6 @@ export function printRecap(input, out) {
71
95
  out.line('npm install');
72
96
  out.line('npx cogenta serve');
73
97
  out.detail(`Then open ${answers.siteUrl}/admin and sign in with the admin account above.`);
74
- out.detail('A role that can publish, or admin, is asked to set up a second factor (or a passkey) at first sign-in that ceremony needs a browser, so it never runs during install.');
98
+ out.detail('A password is all it takes to sign in, for every role (ADR-0021). The admin recommends a second factor for an account that can publish or administer, and the profile screen is where to turn one on it is never demanded at the door.');
75
99
  }
76
100
  //# sourceMappingURL=recap.js.map
package/dist/recap.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"recap.js","sourceRoot":"","sources":["../src/recap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recap.js","sourceRoot":"","sources":["../src/recap.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { type DemoEntry, type PlanDecisions, type SitePlanDraft } from '@cogenta/agents';
1
2
  import type { SkinTokens } from '@cogenta/render';
3
+ import { type CollectionDefinition } from '@cogenta/schema';
2
4
  export interface ScaffoldAnswers {
3
5
  readonly targetDir: string;
4
6
  readonly siteName: string;
@@ -15,6 +17,35 @@ export interface ScaffoldAnswers {
15
17
  readonly blueprintId?: string;
16
18
  /** Already generated and validated by `chooseSkin` (L9 task 7). Absent: the theme's default `tokens.json` is copied, exactly as before this option existed. */
17
19
  readonly skinTokens?: SkinTokens;
20
+ /** Every locale the site is set up with. Defaults to `[defaultLocale]` — the behaviour before L19. */
21
+ readonly locales?: readonly string[];
22
+ /** L19 task 8's confirmed per-site-type defaults. Absent: `@cogenta/core`'s own defaults apply, unchanged. */
23
+ readonly security?: {
24
+ readonly pageMaxAge: number;
25
+ readonly hstsMaxAge: number;
26
+ };
27
+ /** `false` skips the blueprint's demo content. Defaults to `true` — the behaviour before L19. */
28
+ readonly seedDemoContent?: boolean;
29
+ /**
30
+ * Collections a human approved item by item from a document-driven plan
31
+ * (L19). Written into `cogenta.schema.mjs` alongside the blueprint's own,
32
+ * and their tables created. Never the whole proposal — only what
33
+ * `resolveApprovedPlan` returned.
34
+ */
35
+ readonly approvedCollections?: readonly CollectionDefinition[];
36
+ /** Demonstration entries approved one at a time, seeded into `approvedCollections`. */
37
+ readonly approvedDemoContent?: readonly DemoEntry[];
38
+ /**
39
+ * A proposal to keep on disk for later review. Written to
40
+ * `.cogenta/site-plans/`, never applied by this function — this is how a
41
+ * non-interactive run leaves a plan waiting for a human rather than
42
+ * publishing one behind their back (L19, "jamais une publication
43
+ * automatique").
44
+ */
45
+ readonly sitePlan?: {
46
+ readonly draft: SitePlanDraft;
47
+ readonly decisions?: PlanDecisions;
48
+ };
18
49
  }
19
50
  export interface ScaffoldResult {
20
51
  readonly configPath: string;
@@ -29,6 +60,12 @@ export interface ScaffoldResult {
29
60
  readonly schemaPath: string;
30
61
  /** Present only when a blueprint wrote `theme.tokens.json` — says whether the AI-generated skin was used or the theme's default was copied. */
31
62
  readonly skinSource?: 'generated' | 'default';
63
+ /** Names of the collections that came from an approved document-driven plan, in the order written. */
64
+ readonly approvedCollectionNames: readonly string[];
65
+ /** How many approved demonstration entries were actually seeded. */
66
+ readonly approvedEntriesSeeded: number;
67
+ /** Where an unreviewed proposal was left waiting, when one was. */
68
+ readonly sitePlanPath?: string;
32
69
  }
33
70
  /**
34
71
  * Step 9: "Installation, migrations, contenu de démo." Writes the site's
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAKjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,+JAA+J;IAC/J,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,2JAA2J;IAC3J,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,+IAA+I;IAC/I,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAC9C;AAmFD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,eAAe,EACxB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAAC,cAAc,CAAC,CAuGzB"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAA;AAIxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,iBAAiB,CAAA;AAIxB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,+JAA+J;IAC/J,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;IAChC,sGAAsG;IACtG,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,8GAA8G;IAC9G,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAChF,iGAAiG;IACjG,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAA;IAC9D,uFAAuF;IACvF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IACnD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAA;KAAE,CAAA;CAC1F;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,2JAA2J;IAC3J,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,+IAA+I;IAC/I,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IAC7C,sGAAsG;IACtG,QAAQ,CAAC,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAA;IACnD,oEAAoE;IACpE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAA;IACtC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAsHD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,eAAe,EACxB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAAC,cAAc,CAAC,CA2IzB"}
package/dist/scaffold.js CHANGED
@@ -2,10 +2,11 @@ import { randomBytes } from 'node:crypto';
2
2
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
+ import { createFileSitePlanStore, } from '@cogenta/agents';
5
6
  import { createUserStore, ensureAuthTables } from '@cogenta/auth';
6
7
  import { createOutput, runMigrate, runUsers } from '@cogenta/cli';
7
8
  import { createDatabaseRegistry, createLogger } from '@cogenta/core';
8
- import { createSchemaTables } from '@cogenta/schema';
9
+ import { createContentStore, createSchemaTables, validateCollectionSet, } from '@cogenta/schema';
9
10
  import { BLUEPRINT_CONTENT_PACKS } from './blueprints/content-packs.js';
10
11
  import { DEFAULT_BLUEPRINT_ID, resolveBlueprint } from './blueprints/registry.js';
11
12
  function capture() {
@@ -31,11 +32,18 @@ function configFileContents(answers) {
31
32
  const llmBlock = answers.llm === undefined
32
33
  ? ''
33
34
  : ` llm: { provider: ${JSON.stringify(answers.llm.provider)}, model: ${JSON.stringify(answers.llm.model)} },\n`;
35
+ // Written only when the human confirmed L19 task 8's per-site-type
36
+ // recommendations. Absent, `@cogenta/core`'s own defaults apply, and a
37
+ // config file generated before L19 is unchanged byte for byte.
38
+ const securityBlock = answers.security === undefined
39
+ ? ''
40
+ : ` security: { pageMaxAge: ${answers.security.pageMaxAge}, hstsMaxAge: ${answers.security.hstsMaxAge} },\n`;
41
+ const locales = answers.locales ?? [answers.defaultLocale];
34
42
  return `export default {
35
43
  site: {
36
44
  name: ${JSON.stringify(answers.siteName)},
37
45
  url: ${JSON.stringify(answers.siteUrl)},
38
- locales: [${JSON.stringify(answers.defaultLocale)}],
46
+ locales: ${JSON.stringify(locales)},
39
47
  defaultLocale: ${JSON.stringify(answers.defaultLocale)},
40
48
  },
41
49
  database: {
@@ -44,9 +52,28 @@ function configFileContents(answers) {
44
52
  },
45
53
  cache: { path: ${JSON.stringify(join(answers.targetDir, '.cogenta', 'cache'))} },
46
54
  storage: { path: ${JSON.stringify(join(answers.targetDir, '.cogenta', 'media'))} },
47
- ${llmBlock}}
55
+ ${llmBlock}${securityBlock}}
48
56
  `;
49
57
  }
58
+ /**
59
+ * The blueprint's collections plus whatever a human approved from a
60
+ * document-driven plan, with a name collision resolved in the blueprint's
61
+ * favour.
62
+ *
63
+ * That direction is deliberate: the blueprint's `page` collection is seeded
64
+ * with real demo pages by `seedDemoContent`, and replacing its definition
65
+ * with a proposed one of the same name would leave those rows referring to
66
+ * fields that no longer exist. The dropped proposal is reported, not
67
+ * silently discarded.
68
+ */
69
+ function mergeCollections(fromBlueprint, approved) {
70
+ const taken = new Set(fromBlueprint.map((collection) => collection.name));
71
+ const added = approved.filter((collection) => !taken.has(collection.name));
72
+ const all = [...fromBlueprint, ...added];
73
+ if (added.length > 0)
74
+ validateCollectionSet(all);
75
+ return { all, added };
76
+ }
50
77
  function schemaFileContents(collections) {
51
78
  // Every `FieldDefinition` a blueprint declares here is plain, serialisable
52
79
  // data (contract A) — `defineCollection` validates and returns it as-is,
@@ -119,15 +146,34 @@ export async function scaffoldSite(answers, env = process.env) {
119
146
  // unconditionally is what makes "npm create cogenta" with every default
120
147
  // answer produce a site `cogenta serve` can actually start.
121
148
  const schemaPath = join(answers.targetDir, 'cogenta.schema.mjs');
122
- await writeFile(schemaPath, schemaFileContents(pack?.collections ?? []), 'utf8');
149
+ const merged = mergeCollections(pack?.collections ?? [], answers.approvedCollections ?? []);
150
+ await writeFile(schemaPath, schemaFileContents(merged.all), 'utf8');
123
151
  let skinSource;
124
- if (pack !== undefined) {
152
+ // A plan the human approved brings its own skin, whatever blueprint was
153
+ // picked — including `blank`, which has no content pack and therefore
154
+ // never wrote a `theme.tokens.json` before.
155
+ const writesTheme = pack !== undefined || answers.approvedCollections !== undefined;
156
+ if (writesTheme) {
125
157
  skinSource = answers.skinTokens === undefined ? 'default' : 'generated';
126
158
  const tokensJson = answers.skinTokens === undefined
127
159
  ? await canonicalTokensJson()
128
160
  : `${JSON.stringify(answers.skinTokens, null, 2)}\n`;
129
161
  await writeFile(join(answers.targetDir, 'theme.tokens.json'), tokensJson, 'utf8');
130
- await writeFile(join(answers.targetDir, '.cogenta', 'recommended-agents.json'), `${JSON.stringify(pack.recommendedAgents, null, 2)}\n`, 'utf8');
162
+ if (pack !== undefined) {
163
+ await writeFile(join(answers.targetDir, '.cogenta', 'recommended-agents.json'), `${JSON.stringify(pack.recommendedAgents, null, 2)}\n`, 'utf8');
164
+ }
165
+ }
166
+ // A proposal nobody reviewed is written down, never acted on. This is the
167
+ // only thing a non-interactive run does with a document-driven plan.
168
+ let sitePlanPath;
169
+ if (answers.sitePlan !== undefined) {
170
+ const directory = join(answers.targetDir, '.cogenta', 'site-plans');
171
+ const store = createFileSitePlanStore(directory);
172
+ await store.save(answers.sitePlan.draft);
173
+ if (answers.sitePlan.decisions !== undefined) {
174
+ await store.recordDecisions(answers.sitePlan.draft.id, answers.sitePlan.decisions);
175
+ }
176
+ sitePlanPath = join(directory, `${answers.sitePlan.draft.id}.plan.json`);
131
177
  }
132
178
  const migrateCapture = capture();
133
179
  const migrateStderr = capture();
@@ -149,17 +195,29 @@ export async function scaffoldSite(answers, env = process.env) {
149
195
  out: createOutput(usersCapture.write, false),
150
196
  stderr: usersStderr.write,
151
197
  });
152
- if (pack !== undefined && migrateExitCode === 0 && usersExitCode === 0) {
198
+ let approvedEntriesSeeded = 0;
199
+ const needsDatabaseWork = merged.all.length > 0;
200
+ if (needsDatabaseWork && migrateExitCode === 0 && usersExitCode === 0) {
153
201
  const logger = createLogger({ level: 'silent' });
154
202
  const selection = await createDatabaseRegistry({ logger }).select({
155
203
  driver: answers.databaseDriver,
156
204
  url: databaseUrlFor(answers),
157
205
  });
158
206
  try {
159
- await createSchemaTables(selection.instance, pack.collections);
207
+ await createSchemaTables(selection.instance, merged.all);
160
208
  await ensureAuthTables(selection.instance);
161
209
  const admin = await createUserStore(selection.instance).byEmail(answers.adminEmail);
162
- await pack.seedDemoContent(selection.instance, answers.defaultLocale, admin?.id ?? null);
210
+ if (pack !== undefined && (answers.seedDemoContent ?? true)) {
211
+ await pack.seedDemoContent(selection.instance, answers.defaultLocale, admin?.id ?? null);
212
+ }
213
+ approvedEntriesSeeded = await seedApprovedEntries({
214
+ db: selection.instance,
215
+ collections: merged.added,
216
+ entries: answers.approvedDemoContent ?? [],
217
+ defaultLocale: answers.defaultLocale,
218
+ adminId: admin?.id ?? null,
219
+ ...(answers.llm === undefined ? {} : { model: answers.llm.model }),
220
+ });
163
221
  }
164
222
  finally {
165
223
  await selection.dispose();
@@ -175,6 +233,52 @@ export async function scaffoldSite(answers, env = process.env) {
175
233
  fellBackToBlank,
176
234
  schemaPath,
177
235
  ...(skinSource === undefined ? {} : { skinSource }),
236
+ approvedCollectionNames: merged.added.map((collection) => collection.name),
237
+ approvedEntriesSeeded,
238
+ ...(sitePlanPath === undefined ? {} : { sitePlanPath }),
178
239
  };
179
240
  }
241
+ /**
242
+ * Seeds the demonstration entries a human approved, one at a time, through
243
+ * the real `ContentStore` — the same path the blueprints' own seeders take.
244
+ *
245
+ * Entries are created as drafts, not published. A blueprint's demo content
246
+ * is written by this repository and vouched for; this is written by a model
247
+ * about somebody's business, and putting it live on a public site before its
248
+ * owner has read it is precisely the automatic application R6 forbids.
249
+ */
250
+ async function seedApprovedEntries(input) {
251
+ if (input.entries.length === 0)
252
+ return 0;
253
+ const stores = new Map(input.collections.map((collection) => [
254
+ collection.name,
255
+ createContentStore({
256
+ db: input.db,
257
+ collection,
258
+ defaultLocale: input.defaultLocale,
259
+ }),
260
+ ]));
261
+ let seeded = 0;
262
+ for (const entry of input.entries) {
263
+ const store = stores.get(entry.collection);
264
+ if (store === undefined)
265
+ continue;
266
+ await store.create({
267
+ status: 'draft',
268
+ createdBy: input.adminId,
269
+ // `generated`, not the `human` default: contract A calls `provenance`
270
+ // non-optional because the European AI framework requires it, and this
271
+ // entry was written by a model about somebody's business.
272
+ provenance: 'generated',
273
+ provenanceDetail: {
274
+ agent: 'site-planner',
275
+ ...(input.model === undefined ? {} : { model: input.model }),
276
+ at: new Date().toISOString(),
277
+ },
278
+ values: entry.values,
279
+ });
280
+ seeded++;
281
+ }
282
+ return seeded;
283
+ }
180
284
  //# sourceMappingURL=scaffold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EACL,uBAAuB,GAIxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEpE,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AACvE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AA6DjF,SAAS,OAAO;IACd,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,OAAwB;IAC9C,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,WAAW,CAAA;IACjE,2EAA2E;IAC3E,uCAAuC;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,OAAwB;IAClD,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,KAAK,SAAS;QACvB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAA;IAEpH,mEAAmE;IACnE,uEAAuE;IACvE,+DAA+D;IAC/D,MAAM,aAAa,GACjB,OAAO,CAAC,QAAQ,KAAK,SAAS;QAC5B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,6BAA6B,OAAO,CAAC,QAAQ,CAAC,UAAU,iBAAiB,OAAO,CAAC,QAAQ,CAAC,UAAU,OAAO,CAAA;IAEjH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IAE1D,OAAO;;YAEG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;WACjC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;eAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;qBACjB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;;;cAG5C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC;WACzC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;;mBAE/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;qBAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EAC/E,QAAQ,GAAG,aAAa;CACzB,CAAA;AACD,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,gBAAgB,CACvB,aAA8C,EAC9C,QAAyC;IAKzC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACzE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1E,MAAM,GAAG,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,CAAA;IACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAChD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;AACvB,CAAC;AAED,SAAS,kBAAkB,CAAC,WAA4C;IACtE,2EAA2E;IAC3E,yEAAyE;IACzE,0EAA0E;IAC1E,0EAA0E;IAC1E,uBAAuB;IACvB,OAAO,kBAAkB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;AACnE,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAwB;IACnD,MAAM,GAAG,GAAG;QACV,IAAI,EACF,OAAO,CAAC,QAAQ;aACb,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,cAAc;QAC9C,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE;YACZ,eAAe,EAAE,QAAQ;YACzB,cAAc,EAAE,QAAQ;YACxB,0BAA0B,EAAE,QAAQ;SACrC;KACF,CAAA;IACD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;AAC5C,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB;IAChC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAA;IACvE,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AAC7C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAwB,EACxB,GAAG,GAAuC,OAAO,CAAC,GAAG;IAErD,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,gBAAgB,CACrD,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAC5C,CAAA;IAED,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAErE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAA;IAChE,MAAM,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAA;IAChE,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAA;IAE9F,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,+DAA+D;IAC/D,MAAM,SAAS,CACb,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAC/B,4BAA4B,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAClE,MAAM,CACP,CAAA;IACD,MAAM,SAAS,CACb,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,EACrC,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EACxD,MAAM,CACP,CAAA;IAED,MAAM,IAAI,GAAG,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAClD,2EAA2E;IAC3E,yEAAyE;IACzE,gEAAgE;IAChE,wEAAwE;IACxE,4DAA4D;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,EAAE,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAA;IAC3F,MAAM,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;IACnE,IAAI,UAA+C,CAAA;IAEnD,wEAAwE;IACxE,sEAAsE;IACtE,4CAA4C;IAC5C,MAAM,WAAW,GAAG,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS,CAAA;IAEnF,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAA;QACvE,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,KAAK,SAAS;YAC9B,CAAC,CAAC,MAAM,mBAAmB,EAAE;YAC7B,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;QACxD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;QACjF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,SAAS,CACb,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,yBAAyB,CAAC,EAC9D,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACtD,MAAM,CACP,CAAA;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,qEAAqE;IACrE,IAAI,YAAgC,CAAA;IACpC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;QACnE,MAAM,KAAK,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAA;QAChD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACpF,CAAC;QACD,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,EAAE,CAAA;IAChC,MAAM,aAAa,GAAG,OAAO,EAAE,CAAA;IAC/B,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC;QACvC,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,OAAO,CAAC,SAAS;QACtB,GAAG;QACH,GAAG,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC;QAC9C,MAAM,EAAE,aAAa,CAAC,KAAK;KAC5B,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,OAAO,EAAE,CAAA;IAC9B,MAAM,WAAW,GAAG,OAAO,EAAE,CAAA;IAC7B,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC;QACnC,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,OAAO,CAAC,SAAS;QACtB,GAAG;QACH,KAAK,EAAE,OAAO,CAAC,UAAU;QACzB,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;QAC5C,MAAM,EAAE,WAAW,CAAC,KAAK;KAC1B,CAAC,CAAA;IAEF,IAAI,qBAAqB,GAAG,CAAC,CAAA;IAC7B,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IAC/C,IAAI,iBAAiB,IAAI,eAAe,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChE,MAAM,EAAE,OAAO,CAAC,cAAc;YAC9B,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC;SAC7B,CAAC,CAAA;QACF,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;YACxD,MAAM,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YAC1C,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YACnF,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,CAAA;YAC1F,CAAC;YACD,qBAAqB,GAAG,MAAM,mBAAmB,CAAC;gBAChD,EAAE,EAAE,SAAS,CAAC,QAAQ;gBACtB,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,OAAO,EAAE,OAAO,CAAC,mBAAmB,IAAI,EAAE;gBAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI;gBAC1B,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;aACnE,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,SAAS,CAAC,OAAO,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU;QACV,eAAe;QACf,aAAa,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE;QAC3D,aAAa;QACb,WAAW,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE;QACrD,WAAW,EAAE,SAAS,CAAC,EAAE;QACzB,eAAe;QACf,UAAU;QACV,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACnD,uBAAuB,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAC1E,qBAAqB;QACrB,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;KACxD,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,mBAAmB,CAAC,KAQlC;IACC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;QACpC,UAAU,CAAC,IAAI;QACf,kBAAkB,CAAC;YACjB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,UAAU;YACV,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC;KACH,CAAC,CACH,CAAA;IAED,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC1C,IAAI,KAAK,KAAK,SAAS;YAAE,SAAQ;QACjC,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,sEAAsE;YACtE,uEAAuE;YACvE,0DAA0D;YAC1D,UAAU,EAAE,WAAW;YACvB,gBAAgB,EAAE;gBAChB,KAAK,EAAE,cAAc;gBACrB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC7B;YACD,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAA;QACF,MAAM,EAAE,CAAA;IACV,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -11,25 +11,39 @@ export interface ChooseSkinOptions {
11
11
  readonly blueprintLabel: string;
12
12
  readonly siteName: string;
13
13
  readonly targetDir: string;
14
- /** Caps how many manual "regenerate" rounds the user can ask for, on top of each round's own three automatic correction attempts. */
14
+ /** Caps how many manual "regenerate" rounds the user can ask for, on top of each candidate's own three automatic correction attempts. */
15
15
  readonly maxRegenerations?: number;
16
+ /** How many designs to propose. Clamped to 2..5 by `generateSkinCandidates`. Defaults to 3. */
17
+ readonly candidateCount?: number;
16
18
  }
17
19
  export type SkinOutcome = {
18
20
  readonly kind: 'generated';
19
21
  readonly tokens: SkinTokens;
20
22
  readonly attempts: number;
23
+ /** Which of the proposed designs the human picked. */
24
+ readonly candidateId: string;
25
+ readonly candidateLabel: string;
26
+ /** How many were actually offered — the lot requires this to be at least two. */
27
+ readonly offered: number;
21
28
  } | {
22
29
  readonly kind: 'default';
23
30
  readonly reason: string;
24
31
  };
25
32
  /**
26
- * Step 5 of L9 task 7's pipeline: "Aperçu proposé sur trois pages types, avec
27
- * possibilité de régénérer ou d'ajuster." Each round runs `generateSkin`'s own
28
- * three-attempt auto-correction loop; on success, three real preview pages are
29
- * written to disk (`.cogenta/skin-preview/`) and the human is offered accept,
30
- * regenerate, or fall back to the default — bounded so a non-interactive
31
- * `--yes`/`--config` run (whose `Prompter.choice` always returns its default,
32
- * "accept") never loops.
33
+ * L19 task 3, in the installer: "l'utilisateur voit et choisit explicitement
34
+ * entre deux et cinq gabarits proposés, jamais un seul choix imposé."
35
+ *
36
+ * The shape of the round is what it was in L9 task 7 — generate, preview on
37
+ * three real pages, then accept / regenerate / fall back to the default,
38
+ * bounded so a non-interactive `--yes` run (whose `Prompter.choice` always
39
+ * answers with its default) never loops. What changed is that a round now
40
+ * produces several designs rather than one, each validated against contract
41
+ * D by `generateSkin`'s own loop, and the accept step is a pick among them.
42
+ *
43
+ * A round that cannot produce at least two distinct valid designs is not
44
+ * offered as a choice: it falls through to the next round, and eventually to
45
+ * the default skin, saying why. Presenting one option as if it were a
46
+ * decision is the failure mode this task exists to remove.
33
47
  */
34
48
  export declare function chooseSkin(options: ChooseSkinOptions): Promise<SkinOutcome>;
35
49
  //# sourceMappingURL=skin-flow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skin-flow.d.ts","sourceRoot":"","sources":["../src/skin-flow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG5C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,qIAAqI;IACrI,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAkBzD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CA+CjF"}
1
+ {"version":3,"file":"skin-flow.d.ts","sourceRoot":"","sources":["../src/skin-flow.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,cAAc,EAAsB,MAAM,iBAAiB,CAAA;AACjG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG5C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,yIAAyI;IACzI,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,+FAA+F;IAC/F,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CACjC;AAED,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAwBzD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqEjF"}