@loomweaver/devkit 0.7.5 → 0.7.7

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 (80) hide show
  1. package/package.json +1 -1
  2. package/src/generators/auth-source/generator.js +4 -7
  3. package/src/generators/auth-source/generator.js.map +1 -1
  4. package/src/generators/distribution/generator.js +51 -53
  5. package/src/generators/distribution/generator.js.map +1 -1
  6. package/src/generators/distribution/nx-files.js +23 -16
  7. package/src/generators/distribution/nx-files.js.map +1 -1
  8. package/src/generators/frame-plugin/generator.js +7 -10
  9. package/src/generators/frame-plugin/generator.js.map +1 -1
  10. package/src/generators/layout/generator.js +4 -7
  11. package/src/generators/layout/generator.js.map +1 -1
  12. package/src/generators/nx-scaffold-shared.js +2 -3
  13. package/src/generators/nx-scaffold-shared.js.map +1 -1
  14. package/src/generators/settings-store/generator.js +4 -7
  15. package/src/generators/settings-store/generator.js.map +1 -1
  16. package/src/generators/shared.d.ts +1 -1
  17. package/src/generators/shared.js +23 -20
  18. package/src/generators/shared.js.map +1 -1
  19. package/src/generators/theme/generator.js +4 -7
  20. package/src/generators/theme/generator.js.map +1 -1
  21. package/src/generators/weaver/generator.d.ts +2 -2
  22. package/src/generators/weaver/generator.js +66 -56
  23. package/src/generators/weaver/generator.js.map +1 -1
  24. package/src/generators/weaver/nx-files.js +20 -15
  25. package/src/generators/weaver/nx-files.js.map +1 -1
  26. package/src/generators/weaver/schema.json +5 -0
  27. package/src/index.d.ts +6 -6
  28. package/src/index.js +2 -1
  29. package/src/index.js.map +1 -1
  30. package/src/lib/amend/compose.js +37 -8
  31. package/src/lib/amend/compose.js.map +1 -1
  32. package/src/lib/amend/describe.js +3 -0
  33. package/src/lib/amend/describe.js.map +1 -1
  34. package/src/lib/amend/merge.d.ts +8 -1
  35. package/src/lib/amend/merge.js +64 -22
  36. package/src/lib/amend/merge.js.map +1 -1
  37. package/src/lib/amend/types.d.ts +12 -1
  38. package/src/lib/generate/generate.js +2 -3
  39. package/src/lib/generate/generate.js.map +1 -1
  40. package/src/lib/scaffolds/inputs.d.ts +1 -0
  41. package/src/lib/scaffolds/inputs.js +5 -5
  42. package/src/lib/scaffolds/inputs.js.map +1 -1
  43. package/src/lib/scaffolds/scaffolds.js +24 -18
  44. package/src/lib/scaffolds/scaffolds.js.map +1 -1
  45. package/src/lib/validate/catalog.js +20 -6
  46. package/src/lib/validate/catalog.js.map +1 -1
  47. package/src/lib/validate/i18n.js +1 -1
  48. package/src/lib/validate/i18n.js.map +1 -1
  49. package/src/recipes/angular-distribution/recipe.js +16 -5
  50. package/src/recipes/angular-distribution/recipe.js.map +1 -1
  51. package/src/recipes/angular-weaver/agent-files.d.ts +12 -0
  52. package/src/recipes/angular-weaver/agent-files.js +169 -0
  53. package/src/recipes/angular-weaver/agent-files.js.map +1 -0
  54. package/src/recipes/angular-weaver/agent-panel.d.ts +3 -0
  55. package/src/recipes/angular-weaver/agent-panel.js +193 -0
  56. package/src/recipes/angular-weaver/agent-panel.js.map +1 -0
  57. package/src/recipes/angular-weaver/agent-stand-in.d.ts +2 -0
  58. package/src/recipes/angular-weaver/agent-stand-in.js +93 -0
  59. package/src/recipes/angular-weaver/agent-stand-in.js.map +1 -0
  60. package/src/recipes/angular-weaver/amendments.d.ts +1 -1
  61. package/src/recipes/angular-weaver/amendments.js +19 -2
  62. package/src/recipes/angular-weaver/amendments.js.map +1 -1
  63. package/src/recipes/angular-weaver/recipe.d.ts +2 -0
  64. package/src/recipes/angular-weaver/recipe.js +48 -136
  65. package/src/recipes/angular-weaver/recipe.js.map +1 -1
  66. package/src/recipes/angular-weaver/weaver-i18n.d.ts +1 -1
  67. package/src/recipes/angular-weaver/weaver-i18n.js +11 -0
  68. package/src/recipes/angular-weaver/weaver-i18n.js.map +1 -1
  69. package/src/recipes/angular-weaver/weaver-readme.d.ts +2 -0
  70. package/src/recipes/angular-weaver/weaver-readme.js +142 -0
  71. package/src/recipes/angular-weaver/weaver-readme.js.map +1 -0
  72. package/src/recipes/angular-weaver/weaver-terms.d.ts +2 -0
  73. package/src/recipes/angular-weaver/weaver-terms.js +9 -0
  74. package/src/recipes/angular-weaver/weaver-terms.js.map +1 -0
  75. package/src/recipes/frame-plugin/recipe.js +1 -2
  76. package/src/recipes/frame-plugin/recipe.js.map +1 -1
  77. package/src/recipes/layout/recipe.js +2 -3
  78. package/src/recipes/layout/recipe.js.map +1 -1
  79. package/src/recipes/theme/recipe.js +1 -2
  80. package/src/recipes/theme/recipe.js.map +1 -1
@@ -4,6 +4,9 @@ exports.angularWeaver = void 0;
4
4
  exports.resolveWeaverInput = resolveWeaverInput;
5
5
  const casing_1 = require("../../lib/generate/casing");
6
6
  const manifest_1 = require("../../lib/validate/manifest");
7
+ const agent_files_1 = require("./agent-files");
8
+ const weaver_terms_1 = require("./weaver-terms");
9
+ const weaver_readme_1 = require("./weaver-readme");
7
10
  const weaver_i18n_1 = require("./weaver-i18n");
8
11
  const DEFAULT_MENU_SLOT = 'content/tab/context';
9
12
  const SURFACE_ICON = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="4" y="4" width="16" height="16" rx="3"/><path d="M8 9h8M8 13h8M8 17h5"/></svg>';
@@ -28,50 +31,52 @@ function resolveMenuSlot(menu) {
28
31
  }
29
32
  return typeof menu === 'string' && menu.length ? menu : undefined;
30
33
  }
31
- const PLATFORM_BOUND_CHORD_TOKENS = [
34
+ const PLATFORM_BOUND_CHORD_TOKENS = new Set([
32
35
  'cmd',
33
36
  'command',
34
37
  'ctrl',
35
38
  'control',
36
39
  'meta',
37
- ];
40
+ ]);
38
41
  function assertPlatformNeutralChord(shortcut) {
39
42
  const tokens = shortcut
40
43
  .toLowerCase()
41
44
  .split('+')
42
45
  .map((token) => token.trim());
43
- const bound = tokens.find((token) => PLATFORM_BOUND_CHORD_TOKENS.includes(token));
46
+ const bound = tokens.find((token) => PLATFORM_BOUND_CHORD_TOKENS.has(token));
44
47
  if (bound) {
45
48
  throw new Error(`Shortcut "${shortcut}" binds the platform-specific "${bound}" key. Use the neutral 'mod' token (e.g. 'mod+shift+k') — the host renders it as ⌘ on macOS and Ctrl elsewhere.`);
46
49
  }
47
50
  }
48
51
  function resolveFeatures(id, input) {
49
- var _a, _b, _c, _d;
50
- const menuSlot = resolveMenuSlot(input === null || input === void 0 ? void 0 : input.menu);
51
- const barItem = Boolean(input === null || input === void 0 ? void 0 : input.barItem);
52
- const hasShortcut = Boolean((_a = input === null || input === void 0 ? void 0 : input.shortcut) === null || _a === void 0 ? void 0 : _a.trim());
52
+ const menuSlot = resolveMenuSlot(input?.menu);
53
+ const barItem = Boolean(input?.barItem);
54
+ const hasShortcut = Boolean(input?.shortcut?.trim());
53
55
  if (hasShortcut) {
54
- assertPlatformNeutralChord((_c = (_b = input === null || input === void 0 ? void 0 : input.shortcut) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : '');
56
+ assertPlatformNeutralChord(input?.shortcut?.trim() ?? '');
55
57
  }
56
- const instanceable = Boolean(input === null || input === void 0 ? void 0 : input.instanceable);
57
- const container = Boolean(input === null || input === void 0 ? void 0 : input.container);
58
+ const instanceable = Boolean(input?.instanceable);
59
+ const container = Boolean(input?.container);
58
60
  if (instanceable && container) {
59
61
  throw new Error('A surface cannot be both a container and instanceable: a container tab holds its own ":id" and is therefore routable, while named instances exist only for a docked, non-routable surface. Pick one.');
60
62
  }
63
+ const agent = Boolean(input?.agent);
61
64
  return {
62
- command: Boolean(input === null || input === void 0 ? void 0 : input.command) ||
65
+ command: Boolean(input?.command) ||
63
66
  menuSlot !== undefined ||
64
67
  barItem ||
65
- hasShortcut,
68
+ hasShortcut ||
69
+ agent,
66
70
  menuSlot,
67
- settings: Boolean(input === null || input === void 0 ? void 0 : input.settings),
68
- access: (input === null || input === void 0 ? void 0 : input.access) ? accessLiteral(input.access) : undefined,
69
- shortcut: ((_d = input === null || input === void 0 ? void 0 : input.shortcut) === null || _d === void 0 ? void 0 : _d.trim()) || `mod+shift+${id.charAt(0)}`,
71
+ settings: Boolean(input?.settings),
72
+ access: input?.access ? accessLiteral(input.access) : undefined,
73
+ shortcut: input?.shortcut?.trim() || `mod+shift+${id.charAt(0)}`,
70
74
  barItem,
71
- about: Boolean(input === null || input === void 0 ? void 0 : input.about),
75
+ about: Boolean(input?.about),
72
76
  instanceable,
73
77
  container,
74
- spec: (input === null || input === void 0 ? void 0 : input.spec) !== false,
78
+ agent,
79
+ spec: input?.spec !== false,
75
80
  };
76
81
  }
77
82
  function deriveCapabilities(features) {
@@ -82,32 +87,31 @@ function deriveCapabilities(features) {
82
87
  set.add('ui');
83
88
  set.add('host');
84
89
  }
90
+ if (features.agent) {
91
+ set.add('ui');
92
+ set.add('automation');
93
+ }
85
94
  return manifest_1.KNOWN_CAPABILITIES.filter((capability) => set.has(capability));
86
95
  }
87
96
  function resolveWeaverInput(input) {
88
- var _a, _b, _c, _d;
89
97
  if (!(0, casing_1.isKebabId)(input.id)) {
90
98
  throw new Error(`Weaver id must be kebab-case (e.g. "notes"); got "${input.id}".`);
91
99
  }
92
100
  const features = resolveFeatures(input.id, input.features);
93
- const capabilities = ((_a = input.capabilities) === null || _a === void 0 ? void 0 : _a.length)
101
+ const capabilities = input.capabilities?.length
94
102
  ? [...input.capabilities]
95
103
  : deriveCapabilities(features);
96
104
  return {
97
105
  id: input.id,
98
- name: ((_b = input.name) === null || _b === void 0 ? void 0 : _b.trim()) || (0, casing_1.toTitleCase)(input.id),
106
+ name: input.name?.trim() || (0, casing_1.toTitleCase)(input.id),
99
107
  className: (0, casing_1.toPascalCase)(input.id),
100
108
  propertyName: (0, casing_1.toCamelCase)(input.id),
101
109
  capabilities,
102
110
  features,
103
- prefix: ((_c = input.prefix) === null || _c === void 0 ? void 0 : _c.trim()) || 'lw',
104
- importPath: ((_d = input.importPath) === null || _d === void 0 ? void 0 : _d.trim()) || `@loomweaver/${input.id}-weaver`,
111
+ prefix: input.prefix?.trim() || 'lw',
112
+ importPath: input.importPath?.trim() || `@loomweaver/${input.id}-weaver`,
105
113
  };
106
114
  }
107
- function capabilityItems(capabilities) {
108
- return capabilities.map((capability) => `'${capability}'`).join(', ');
109
- }
110
- const CONTAINER_EXAMPLE_ID = 'example';
111
115
  function containerChildIds(w) {
112
116
  return [`${w.id}.canvas`, `${w.id}.details`];
113
117
  }
@@ -161,7 +165,7 @@ function surfaceBlock(w) {
161
165
  }
162
166
  function railTarget(w) {
163
167
  if (w.features.container) {
164
- return `ctx.navigateContent('${w.id}/${CONTAINER_EXAMPLE_ID}')`;
168
+ return `ctx.navigateContent('${w.id}/${weaver_terms_1.CONTAINER_EXAMPLE_ID}')`;
165
169
  }
166
170
  if (w.features.instanceable) {
167
171
  return `ctx.revealSurface('${w.id}')`;
@@ -266,6 +270,9 @@ function pluginFile(w) {
266
270
  if (w.features.about) {
267
271
  imports.push(`import { ${w.className}AboutDialog } from '../dialogs/${w.id}-about-dialog';`);
268
272
  }
273
+ if (w.features.agent) {
274
+ imports.push(`import { ${w.propertyName}Agent, ${w.propertyName}Connection } from '../agent/${w.id}-agent';`, `import { ${w.className}AgentPanel } from '../agent/${w.id}-agent-panel';`);
275
+ }
269
276
  if (w.features.settings) {
270
277
  imports.unshift("import { signal } from '@angular/core';");
271
278
  }
@@ -274,6 +281,9 @@ function pluginFile(w) {
274
281
  consts.push(`const ${w.propertyName}Enabled = signal(true);`, `const ${w.propertyName}Note = signal('');`);
275
282
  }
276
283
  const body = [` ctx.contributeIcons({ '${w.id}': icon });`];
284
+ if (w.features.agent) {
285
+ body.push(` ${w.propertyName}Agent.set(${w.propertyName}Connection(ctx));`);
286
+ }
277
287
  if (w.features.command)
278
288
  body.push(commandBlock(w));
279
289
  if (w.features.about)
@@ -287,6 +297,11 @@ function pluginFile(w) {
287
297
  body.push(menuBlock(w));
288
298
  if (w.features.settings)
289
299
  body.push(settingsBlock(w));
300
+ if (w.features.agent)
301
+ body.push((0, agent_files_1.agentSurfaceBlock)(w));
302
+ const deactivate = w.features.agent
303
+ ? `\n deactivate() {\n ${w.propertyName}Agent.set(null);\n },`
304
+ : '';
290
305
  return `${imports.join('\n')}
291
306
 
292
307
  ${consts.join('\n')}
@@ -295,11 +310,11 @@ export const ${w.propertyName}Plugin: Plugin = {
295
310
  manifest: {
296
311
  id: '${w.id}',
297
312
  name: '${w.name}',
298
- capabilities: [${capabilityItems(w.capabilities)}],
313
+ capabilities: [${(0, weaver_terms_1.capabilityItems)(w.capabilities)}],
299
314
  },
300
315
  activate(ctx) {
301
316
  ${body.join('\n')}
302
- },
317
+ },${deactivate}
303
318
  };
304
319
  `;
305
320
  }
@@ -427,112 +442,6 @@ describe('${w.propertyName}Plugin', () => {
427
442
  });
428
443
  `;
429
444
  }
430
- function surfaceNotes(w) {
431
- const railNote = 'Rail and bar items reference region ids (`primary`, `status`) that must exist in your layout.';
432
- if (w.features.container) {
433
- return [
434
- `The surface is a **container**: it is routable at \`/${w.id}/:id\`, and its tab holds a`,
435
- 'nested pane tree of child surfaces. The host draws the inner tabs, splits and drag targets; this',
436
- 'weaver only declares which children it offers.',
437
- '',
438
- `- \`children\` is what the inner "new tab" picker lists — the host access-gates it for you.`,
439
- '- `initial` is what a freshly opened container tab starts with.',
440
- `- The children declare \`docks: []\`. That is the container-only convention: they are never seeded`,
441
- ' into a sidebar, they exist solely inside this container.',
442
- `- Each child reads the container's \`:id\` from an injected \`ActivatedRoute\` — the host supplies a`,
443
- ' synthetic one, so a child needs no knowledge of where it is mounted. Two open container tabs are',
444
- ' two independent trees, each scoped to its own id.',
445
- `- The inner tree is **sealed**: a child cannot be dragged out, and nothing can be dragged in. It`,
446
- ' travels with the tab, including into a sidebar or a pop-out window.',
447
- '',
448
- `The rail item opens the fixed id \`${CONTAINER_EXAMPLE_ID}\`. Replace that with whatever the user`,
449
- 'actually picked — a document, a run, a project.',
450
- '',
451
- railNote,
452
- ];
453
- }
454
- if (w.features.instanceable) {
455
- return [
456
- `The surface is **docked** into the \`primary\` region and marked \`instanceable\`, so the host shows a`,
457
- 'switcher for saving, naming, renaming and deleting several configurations of it, each with its own',
458
- '`VIEW_STATE` blob.',
459
- '',
460
- 'It is deliberately **not** routable. Named instances exist only for a docked surface — a routable',
461
- 'one holds the URL pane instead, and the host drops `instanceable` on that path. The rail item',
462
- 'therefore reveals the surface (`ctx.revealSurface`) rather than navigating to a URL, which focuses',
463
- 'it wherever the user has since moved it.',
464
- '',
465
- 'The generated view already uses that blob for its sort order, because a hidden surface is destroyed',
466
- 'as soon as it is clean: state kept in a component field survives neither a tab switch nor',
467
- 'a collapsed sidebar, and never survived a reload. The rule is *evictable = reload-safe* — anything',
468
- 'that must not be lost goes through `VIEW_STATE`, and `set()` replaces the whole blob, so spread it.',
469
- '',
470
- railNote,
471
- ];
472
- }
473
- return [
474
- `The surface is routable at \`/${w.id}\`; ${railNote.charAt(0).toLowerCase()}${railNote.slice(1)}`,
475
- '',
476
- 'A routable surface has **no `VIEW_STATE` handle** — injecting the token there throws. It owns a URL,',
477
- 'so anything shareable (a filter, the active sub-tab) belongs in route params or `subRoutes`, where it',
478
- 'survives a deep link too; unsaved edits are `DirtySurface`, and an instance that is expensive to',
479
- 'rebuild declares `retain: \'always\'`. Generate with `--instanceable` for the docked, `VIEW_STATE`',
480
- 'flavour instead.',
481
- ];
482
- }
483
- function readmeFile(w) {
484
- return [
485
- `# ${w.name} weaver`,
486
- '',
487
- `A LoomWeaver weaver (a domain plugin bundle). It consumes only the public \`@loomweaver/plugin-sdk\` contract.`,
488
- '',
489
- '## Wire it into a distribution',
490
- '',
491
- `1. Add the plugin to \`providePlugins\` in \`src/app/app.config.ts\`. It is **variadic** and`,
492
- ` returns an array, so spread it:`,
493
- '',
494
- ' ```ts',
495
- ` import { ${w.propertyName}Plugin } from '${w.importPath}'; // Nx: the workspace alias; without one, a relative path to this library's src/index.ts`,
496
- ` ...providePlugins(${w.propertyName}Plugin),`,
497
- ' ```',
498
- '',
499
- `2. Grant its capabilities (default-deny) via \`provideCapabilityGrants\`:`,
500
- '',
501
- ' ```ts',
502
- ` provideCapabilityGrants({ '${w.id}': [${capabilityItems(w.capabilities)}] });`,
503
- ' ```',
504
- '',
505
- `3. Compose its translations with \`provideTranslationNamespaces('${w.id}')\` — and serve the`,
506
- ` bundle by adding an assets glob to your application's build target, so the loader can fetch`,
507
- ` \`/i18n/${w.id}/<lang>.json\` (the Nx generator adds this glob for you):`,
508
- '',
509
- ' ```json',
510
- ` { "glob": "**/*.json", "input": "<path to this library>/src/lib/i18n", "output": "i18n/${w.id}" }`,
511
- ' ```',
512
- '',
513
- `4. If your application compiles the shell's theme with Tailwind, name this library as a source`,
514
- ` for it, so the utility classes in these templates are emitted. Tailwind also detects sources`,
515
- ` by itself, but that depends on where it resolves the project root and on \`.gitignore\`, and`,
516
- ` what the scaffold names covers the application alone (the Nx generator adds this line for`,
517
- ` you). Applications scaffolded with \`--styles precompiled\` run no Tailwind and need nothing:`,
518
- '',
519
- ' ```css',
520
- ` @source '<path from that stylesheet to this library>/src';`,
521
- ' ```',
522
- '',
523
- ...surfaceNotes(w),
524
- '',
525
- '## After scaffolding',
526
- '',
527
- '- `src/lib/i18n/de.json` starts as a copy of the English strings — translate it.',
528
- `- A scaffolded command defaults its shortcut to \`mod+shift+<first letter of the id>\` — two weavers whose ids share a first letter collide; pass \`--shortcut\` or edit the command.`,
529
- '- The project is generated **untagged**: Nx tags belong to your `depConstraints`, and inventing',
530
- ' one would fail a lint policy you never opted this project into. If your workspace enforces',
531
- ' module boundaries, give it tags your constraints allow — `--tags` at generation time, or',
532
- ' `tags` in `project.json` afterwards.',
533
- '',
534
- ].join('\n');
535
- }
536
445
  exports.angularWeaver = {
537
446
  id: 'angular-weaver',
538
447
  build(input) {
@@ -542,7 +451,7 @@ exports.angularWeaver = {
542
451
  [`src/lib/plugin/${w.id}.plugin.ts`]: pluginFile(w),
543
452
  'src/lib/i18n/en.json': (0, weaver_i18n_1.i18nFile)(w),
544
453
  'src/lib/i18n/de.json': (0, weaver_i18n_1.i18nFile)(w),
545
- 'README.md': readmeFile(w),
454
+ 'README.md': (0, weaver_readme_1.readmeFile)(w),
546
455
  };
547
456
  if (w.features.container) {
548
457
  files[`src/lib/views/${w.id}-canvas-view.ts`] = childViewFile(w, 'canvas', `${w.className}CanvasView`);
@@ -559,6 +468,9 @@ exports.angularWeaver = {
559
468
  files[`src/lib/dialogs/${w.id}-about-dialog.html`] =
560
469
  aboutDialogTemplateFile(w);
561
470
  }
471
+ if (w.features.agent) {
472
+ Object.assign(files, (0, agent_files_1.agentFiles)(w));
473
+ }
562
474
  if (w.features.spec) {
563
475
  files[`src/lib/plugin/${w.id}.plugin.spec.ts`] = specFile(w);
564
476
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/recipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/recipe.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { ResolvedWeaver } from './recipe';
1
+ import type { ResolvedWeaver } from './recipe';
2
2
  export declare function i18nBundle(w: ResolvedWeaver): Record<string, unknown>;
3
3
  export declare function i18nFile(w: ResolvedWeaver): string;
@@ -14,6 +14,17 @@ function i18nBundle(w) {
14
14
  }
15
15
  if (w.features.about)
16
16
  bundle['about'] = `About ${w.name}`;
17
+ if (w.features.agent) {
18
+ bundle['agent'] = {
19
+ title: `${w.name} assistant`,
20
+ confirm: {
21
+ title: 'Run this command?',
22
+ message: 'An agent asked to run a command that was marked consequential.',
23
+ yes: 'Run it',
24
+ no: 'Not now',
25
+ },
26
+ };
27
+ }
17
28
  if (w.features.settings)
18
29
  bundle['settings'] = { title: w.name, enabled: 'Enabled', note: 'Note' };
19
30
  return bundle;
@@ -1 +1 @@
1
- {"version":3,"file":"weaver-i18n.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/weaver-i18n.ts"],"names":[],"mappings":";;AAEA,gCAcC;AAED,4BAEC;AAlBD,SAAgB,UAAU,CAAC,CAAiB;IAC1C,MAAM,MAAM,GAA4B,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;QAC5B,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;QACtC,MAAM,CAAC,mBAAmB,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,WAAW,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK;QAAE,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ;QACrB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAiB;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"weaver-i18n.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/weaver-i18n.ts"],"names":[],"mappings":";;AAEA,gCA0BC;AAED,4BAEC;AA9BD,SAAgB,UAAU,CAAC,CAAiB;IAC1C,MAAM,MAAM,GAA4B,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;QAC5B,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;QACtC,MAAM,CAAC,mBAAmB,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,WAAW,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK;QAAE,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,YAAY;YAC5B,OAAO,EAAE;gBACP,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EACL,gEAAgE;gBAClE,GAAG,EAAE,QAAQ;gBACb,EAAE,EAAE,SAAS;aACd;SACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ;QACrB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAiB;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACvD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ResolvedWeaver } from './recipe';
2
+ export declare function readmeFile(w: ResolvedWeaver): string;
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readmeFile = readmeFile;
4
+ const weaver_terms_1 = require("./weaver-terms");
5
+ function surfaceNotes(w) {
6
+ const railNote = 'Rail and bar items reference region ids (`primary`, `status`) that must exist in your layout.';
7
+ if (w.features.container) {
8
+ return [
9
+ `The surface is a **container**: it is routable at \`/${w.id}/:id\`, and its tab holds a`,
10
+ 'nested pane tree of child surfaces. The host draws the inner tabs, splits and drag targets; this',
11
+ 'weaver only declares which children it offers.',
12
+ '',
13
+ `- \`children\` is what the inner "new tab" picker lists — the host access-gates it for you.`,
14
+ '- `initial` is what a freshly opened container tab starts with.',
15
+ `- The children declare \`docks: []\`. That is the container-only convention: they are never seeded`,
16
+ ' into a sidebar, they exist solely inside this container.',
17
+ `- Each child reads the container's \`:id\` from an injected \`ActivatedRoute\` — the host supplies a`,
18
+ ' synthetic one, so a child needs no knowledge of where it is mounted. Two open container tabs are',
19
+ ' two independent trees, each scoped to its own id.',
20
+ `- The inner tree is **sealed**: a child cannot be dragged out, and nothing can be dragged in. It`,
21
+ ' travels with the tab, including into a sidebar or a pop-out window.',
22
+ '',
23
+ `The rail item opens the fixed id \`${weaver_terms_1.CONTAINER_EXAMPLE_ID}\`. Replace that with whatever the user`,
24
+ 'actually picked — a document, a run, a project.',
25
+ '',
26
+ railNote,
27
+ ];
28
+ }
29
+ if (w.features.instanceable) {
30
+ return [
31
+ `The surface is **docked** into the \`primary\` region and marked \`instanceable\`, so the host shows a`,
32
+ 'switcher for saving, naming, renaming and deleting several configurations of it, each with its own',
33
+ '`VIEW_STATE` blob.',
34
+ '',
35
+ 'It is deliberately **not** routable. Named instances exist only for a docked surface — a routable',
36
+ 'one holds the URL pane instead, and the host drops `instanceable` on that path. The rail item',
37
+ 'therefore reveals the surface (`ctx.revealSurface`) rather than navigating to a URL, which focuses',
38
+ 'it wherever the user has since moved it.',
39
+ '',
40
+ 'The generated view already uses that blob for its sort order, because a hidden surface is destroyed',
41
+ 'as soon as it is clean: state kept in a component field survives neither a tab switch nor',
42
+ 'a collapsed sidebar, and never survived a reload. The rule is *evictable = reload-safe* — anything',
43
+ 'that must not be lost goes through `VIEW_STATE`, and `set()` replaces the whole blob, so spread it.',
44
+ '',
45
+ railNote,
46
+ ];
47
+ }
48
+ return [
49
+ `The surface is routable at \`/${w.id}\`; ${railNote.charAt(0).toLowerCase()}${railNote.slice(1)}`,
50
+ '',
51
+ 'A routable surface has **no `VIEW_STATE` handle** — injecting the token there throws. It owns a URL,',
52
+ 'so anything shareable (a filter, the active sub-tab) belongs in route params or `subRoutes`, where it',
53
+ 'survives a deep link too; unsaved edits are `DirtySurface`, and an instance that is expensive to',
54
+ "rebuild declares `retain: 'always'`. Generate with `--instanceable` for the docked, `VIEW_STATE`",
55
+ 'flavour instead.',
56
+ ];
57
+ }
58
+ function agentNotes(w) {
59
+ return [
60
+ '',
61
+ '## The agent connection',
62
+ '',
63
+ `\`src/lib/agent/\` holds three files and one of them is meant to be thrown away.`,
64
+ '',
65
+ `- \`${w.id}-agent.ts\` is the connection: the workbench's own commands offered as tools, and a`,
66
+ ' seam where this weaver decides about a call before it runs. Nothing is registered twice — the',
67
+ ' list comes from the workbench, already narrowed by everything that would refuse the call.',
68
+ `- \`${w.id}-agent-panel.ts\` shows what is offered, the call as it streams, and the outcome.`,
69
+ `- \`${w.id}-agent-source.ts\` is a **stand-in**, not an assistant: it produces the protocol's own`,
70
+ ' events so the whole path runs before you have connected anything. Replace that one file with',
71
+ ' your transport and nothing else changes. No transport, credential or model is generated for',
72
+ ' you, because none of them can be guessed.',
73
+ '',
74
+ 'Three things are easy to get wrong and invisible when they are, so the generated code does them',
75
+ 'rather than explaining them: the offered list is asked for again every run, every event is handed',
76
+ 'over unfiltered, and a decision before a call can only narrow what the workbench would have',
77
+ 'allowed anyway.',
78
+ '',
79
+ `The generated weaver needs two packages your project may not carry yet:`,
80
+ '',
81
+ '```bash',
82
+ `npm i @loomweaver/ag-ui @ag-ui/core`,
83
+ '```',
84
+ '',
85
+ 'The Nx generator and the CLI record them for you; the MCP route names them instead.',
86
+ ];
87
+ }
88
+ function readmeFile(w) {
89
+ return [
90
+ `# ${w.name} weaver`,
91
+ '',
92
+ `A LoomWeaver weaver (a domain plugin bundle). It consumes only the public \`@loomweaver/plugin-sdk\` contract.`,
93
+ '',
94
+ '## Wire it into a distribution',
95
+ '',
96
+ `1. Add the plugin to \`providePlugins\` in \`src/app/app.config.ts\`. It is **variadic** and`,
97
+ ` returns an array, so spread it:`,
98
+ '',
99
+ ' ```ts',
100
+ ` import { ${w.propertyName}Plugin } from '${w.importPath}'; // Nx: the workspace alias; without one, a relative path to this library's src/index.ts`,
101
+ ` ...providePlugins(${w.propertyName}Plugin),`,
102
+ ' ```',
103
+ '',
104
+ `2. Grant its capabilities (default-deny) via \`provideCapabilityGrants\`:`,
105
+ '',
106
+ ' ```ts',
107
+ ` provideCapabilityGrants({ '${w.id}': [${(0, weaver_terms_1.capabilityItems)(w.capabilities)}] });`,
108
+ ' ```',
109
+ '',
110
+ `3. Compose its translations with \`provideTranslationNamespaces('${w.id}')\` — and serve the`,
111
+ ` bundle by adding an assets glob to your application's build target, so the loader can fetch`,
112
+ ` \`/i18n/${w.id}/<lang>.json\` (the Nx generator adds this glob for you):`,
113
+ '',
114
+ ' ```json',
115
+ ` { "glob": "**/*.json", "input": "<path to this library>/src/lib/i18n", "output": "i18n/${w.id}" }`,
116
+ ' ```',
117
+ '',
118
+ `4. If your application compiles the shell's theme with Tailwind, name this library as a source`,
119
+ ` for it, so the utility classes in these templates are emitted. Tailwind also detects sources`,
120
+ ` by itself, but that depends on where it resolves the project root and on \`.gitignore\`, and`,
121
+ ` what the scaffold names covers the application alone (the Nx generator adds this line for`,
122
+ ` you). Applications scaffolded with \`--styles precompiled\` run no Tailwind and need nothing:`,
123
+ '',
124
+ ' ```css',
125
+ ` @source '<path from that stylesheet to this library>/src';`,
126
+ ' ```',
127
+ '',
128
+ ...surfaceNotes(w),
129
+ ...(w.features.agent ? agentNotes(w) : []),
130
+ '',
131
+ '## After scaffolding',
132
+ '',
133
+ '- `src/lib/i18n/de.json` starts as a copy of the English strings — translate it.',
134
+ `- A scaffolded command defaults its shortcut to \`mod+shift+<first letter of the id>\` — two weavers whose ids share a first letter collide; pass \`--shortcut\` or edit the command.`,
135
+ '- The project is generated **untagged**: Nx tags belong to your `depConstraints`, and inventing',
136
+ ' one would fail a lint policy you never opted this project into. If your workspace enforces',
137
+ ' module boundaries, give it tags your constraints allow — `--tags` at generation time, or',
138
+ ' `tags` in `project.json` afterwards.',
139
+ '',
140
+ ].join('\n');
141
+ }
142
+ //# sourceMappingURL=weaver-readme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weaver-readme.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/weaver-readme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const CONTAINER_EXAMPLE_ID = "example";
2
+ export declare function capabilityItems(capabilities: readonly string[]): string;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONTAINER_EXAMPLE_ID = void 0;
4
+ exports.capabilityItems = capabilityItems;
5
+ exports.CONTAINER_EXAMPLE_ID = 'example';
6
+ function capabilityItems(capabilities) {
7
+ return capabilities.map((capability) => `'${capability}'`).join(', ');
8
+ }
9
+ //# sourceMappingURL=weaver-terms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weaver-terms.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-weaver/weaver-terms.ts"],"names":[],"mappings":";;;AAEA,0CAEC;AAJY,QAAA,oBAAoB,GAAG,SAAS,CAAC;AAE9C,SAAgB,eAAe,CAAC,YAA+B;IAC7D,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC"}
@@ -4,11 +4,10 @@ exports.framePlugin = void 0;
4
4
  exports.resolveFramePluginInput = resolveFramePluginInput;
5
5
  const casing_1 = require("../../lib/generate/casing");
6
6
  function resolveFramePluginInput(input) {
7
- var _a;
8
7
  if (!(0, casing_1.isKebabId)(input.id)) {
9
8
  throw new Error(`Sandbox plugin id must be kebab-case (e.g. "notes"); got "${input.id}".`);
10
9
  }
11
- return { id: input.id, name: ((_a = input.name) === null || _a === void 0 ? void 0 : _a.trim()) || (0, casing_1.toTitleCase)(input.id) };
10
+ return { id: input.id, name: input.name?.trim() || (0, casing_1.toTitleCase)(input.id) };
12
11
  }
13
12
  function pluginHtml(p) {
14
13
  return `<!doctype html>
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/frame-plugin/recipe.ts"],"names":[],"mappings":";;;AAaA,0DAKC;AAjBD,sDAAmE;AAYnE,SAAgB,uBAAuB,CAAC,KAAuB;;IAC7D,IAAI,CAAC,IAAA,kBAAS,EAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,6DAA6D,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAI,EAAE,KAAI,IAAA,oBAAW,EAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,CAAsB;IACxC,OAAO;;;;aAII,CAAC,CAAC,IAAI;;;;;;;CAOlB,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,CAAsB;IACtC,OAAO;;;;;;;;;;;gCAWuB,CAAC,CAAC,IAAI;;iBAErB,CAAC,CAAC,EAAE;oBACD,CAAC,CAAC,IAAI;sBACJ,CAAC,CAAC,EAAE;+BACK,CAAC,CAAC,EAAE;;;;;wBAKX,CAAC,CAAC,EAAE;;;CAG3B,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,CAAsB;IACtC,OAAO;;;;aAII,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;YAgBP,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BjB,CAAC;AACF,CAAC;AAED,SAAS,MAAM,CAAC,CAAsB;IACpC,OAAO;QACL,KAAK,CAAC,CAAC,IAAI,iBAAiB;QAC5B,EAAE;QACF,yFAAyF;QACzF,8FAA8F;QAC9F,EAAE;QACF,2CAA2C;QAC3C,EAAE;QACF,yEAAyE,CAAC,CAAC,EAAE,iBAAiB;QAC9F,qFAAqF;QACrF,wFAAwF;QACxF,EAAE;QACF,aAAa;QACb,gGAAgG;QAChG,QAAQ;QACR,EAAE;QACF,iDAAiD;QACjD,EAAE;QACF,UAAU;QACV,iCAAiC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,0DAA0D;QACrH,iCAAiC,CAAC,CAAC,EAAE,gCAAgC;QACrE,QAAQ;QACR,EAAE;QACF,iCAAiC,CAAC,CAAC,EAAE,8DAA8D;QACnG,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAEY,QAAA,WAAW,GAA6B;IACnD,EAAE,EAAE,cAAc;IAClB,KAAK,CAAC,KAAuB;QAC3B,MAAM,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO;YACL,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;YAC5B,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxB,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxB,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;SACvB,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/frame-plugin/recipe.ts"],"names":[],"mappings":";;;AAaA,0DAKC;AAjBD,sDAAmE;AAYnE,SAAgB,uBAAuB,CAAC,KAAuB;IAC7D,IAAI,CAAC,IAAA,kBAAS,EAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,6DAA6D,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAA,oBAAW,EAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,CAAsB;IACxC,OAAO;;;;aAII,CAAC,CAAC,IAAI;;;;;;;CAOlB,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,CAAsB;IACtC,OAAO;;;;;;;;;;;gCAWuB,CAAC,CAAC,IAAI;;iBAErB,CAAC,CAAC,EAAE;oBACD,CAAC,CAAC,IAAI;sBACJ,CAAC,CAAC,EAAE;+BACK,CAAC,CAAC,EAAE;;;;;wBAKX,CAAC,CAAC,EAAE;;;CAG3B,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,CAAsB;IACtC,OAAO;;;;aAII,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;YAgBP,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BjB,CAAC;AACF,CAAC;AAED,SAAS,MAAM,CAAC,CAAsB;IACpC,OAAO;QACL,KAAK,CAAC,CAAC,IAAI,iBAAiB;QAC5B,EAAE;QACF,yFAAyF;QACzF,8FAA8F;QAC9F,EAAE;QACF,2CAA2C;QAC3C,EAAE;QACF,yEAAyE,CAAC,CAAC,EAAE,iBAAiB;QAC9F,qFAAqF;QACrF,wFAAwF;QACxF,EAAE;QACF,aAAa;QACb,gGAAgG;QAChG,QAAQ;QACR,EAAE;QACF,iDAAiD;QACjD,EAAE;QACF,UAAU;QACV,iCAAiC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,0DAA0D;QACrH,iCAAiC,CAAC,CAAC,EAAE,gCAAgC;QACrE,QAAQ;QACR,EAAE;QACF,iCAAiC,CAAC,CAAC,EAAE,8DAA8D;QACnG,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAEY,QAAA,WAAW,GAA6B;IACnD,EAAE,EAAE,cAAc;IAClB,KAAK,CAAC,KAAuB;QAC3B,MAAM,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO;YACL,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;YAC5B,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxB,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxB,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;SACvB,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -5,8 +5,7 @@ exports.resolveLayoutInput = resolveLayoutInput;
5
5
  const shell_regions_1 = require("../shell-regions");
6
6
  const casing_1 = require("../../lib/generate/casing");
7
7
  function resolveLayoutInput(input) {
8
- var _a;
9
- const name = ((_a = input.name) === null || _a === void 0 ? void 0 : _a.trim()) || 'base';
8
+ const name = input.name?.trim() || 'base';
10
9
  if (!(0, casing_1.isKebabId)(name)) {
11
10
  throw new Error(`Layout name must be kebab-case (e.g. "base"); got "${name}".`);
12
11
  }
@@ -20,7 +19,7 @@ import { ShellLayout } from '@loomweaver/shell';
20
19
 
21
20
  export const ${l.propertyName}Layout: ShellLayout = {
22
21
  regions: [
23
- ${(0, shell_regions_1.renderRegions)(' ')}
22
+ ${(0, shell_regions_1.renderRegions)(' '.repeat(4))}
24
23
  ],
25
24
  };
26
25
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/layout/recipe.ts"],"names":[],"mappings":";;;AAaA,gDAMC;AAlBD,oDAAiD;AACjD,sDAAmE;AAWnE,SAAgB,kBAAkB,CAAC,KAAkB;;IACnD,MAAM,IAAI,GAAG,CAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAI,EAAE,KAAI,MAAM,CAAC;IAC1C,IAAI,CAAC,IAAA,kBAAS,EAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sDAAsD,IAAI,IAAI,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,UAAU,CAAC,CAAiB;IACnC,OAAO,mEAAmE,CAAC,CAAC,YAAY;;;;;eAK3E,CAAC,CAAC,YAAY;;EAE3B,IAAA,6BAAa,EAAC,MAAM,CAAC;;;CAGtB,CAAC;AACF,CAAC;AAEY,QAAA,MAAM,GAAwB;IACzC,EAAE,EAAE,QAAQ;IACZ,KAAK,CAAC,KAAkB;QACtB,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/layout/recipe.ts"],"names":[],"mappings":";;;AAaA,gDAMC;AAlBD,oDAAiD;AACjD,sDAAmE;AAWnE,SAAgB,kBAAkB,CAAC,KAAkB;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC;IAC1C,IAAI,CAAC,IAAA,kBAAS,EAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sDAAsD,IAAI,IAAI,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,UAAU,CAAC,CAAiB;IACnC,OAAO,mEAAmE,CAAC,CAAC,YAAY;;;;;eAK3E,CAAC,CAAC,YAAY;;EAE3B,IAAA,6BAAa,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;;CAG7B,CAAC;AACF,CAAC;AAEY,QAAA,MAAM,GAAwB;IACzC,EAAE,EAAE,QAAQ;IACZ,KAAK,CAAC,KAAkB;QACtB,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC;CACF,CAAC"}