@multiplayer-app/sandbox 0.0.30 → 0.0.32

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 (201) hide show
  1. package/dist/agents/html-generator.agent.d.ts +3 -1
  2. package/dist/agents/html-generator.agent.d.ts.map +1 -1
  3. package/dist/agents/html-generator.agent.js +90 -4
  4. package/dist/agents/html-generator.agent.js.map +1 -1
  5. package/dist/agents/markdown-generator.agent.d.ts.map +1 -1
  6. package/dist/agents/markdown-generator.agent.js +5 -10
  7. package/dist/agents/markdown-generator.agent.js.map +1 -1
  8. package/dist/agents/shared/app-vm.tools.d.ts +4 -0
  9. package/dist/agents/shared/app-vm.tools.d.ts.map +1 -0
  10. package/dist/agents/shared/app-vm.tools.js +105 -0
  11. package/dist/agents/shared/app-vm.tools.js.map +1 -0
  12. package/dist/agents/shared/build-plan.tools.d.ts +5 -0
  13. package/dist/agents/shared/build-plan.tools.d.ts.map +1 -0
  14. package/dist/agents/shared/build-plan.tools.js +176 -0
  15. package/dist/agents/shared/build-plan.tools.js.map +1 -0
  16. package/dist/agents/shared/session-quality-report.tool.d.ts +7 -0
  17. package/dist/agents/shared/session-quality-report.tool.d.ts.map +1 -0
  18. package/dist/agents/shared/session-quality-report.tool.js +97 -0
  19. package/dist/agents/shared/session-quality-report.tool.js.map +1 -0
  20. package/dist/agents/shared/session-vm-bridge.d.ts +49 -0
  21. package/dist/agents/shared/session-vm-bridge.d.ts.map +1 -0
  22. package/dist/agents/shared/session-vm-bridge.js +9 -0
  23. package/dist/agents/shared/session-vm-bridge.js.map +1 -0
  24. package/dist/agents/skills/a11y.skill.d.ts +3 -0
  25. package/dist/agents/skills/a11y.skill.d.ts.map +1 -0
  26. package/dist/agents/skills/a11y.skill.js +23 -0
  27. package/dist/agents/skills/a11y.skill.js.map +1 -0
  28. package/dist/agents/skills/account-skill-loader.d.ts +13 -0
  29. package/dist/agents/skills/account-skill-loader.d.ts.map +1 -0
  30. package/dist/agents/skills/account-skill-loader.js +42 -0
  31. package/dist/agents/skills/account-skill-loader.js.map +1 -0
  32. package/dist/agents/skills/app-scaffold.skill.d.ts +3 -0
  33. package/dist/agents/skills/app-scaffold.skill.d.ts.map +1 -0
  34. package/dist/agents/skills/app-scaffold.skill.js +30 -0
  35. package/dist/agents/skills/app-scaffold.skill.js.map +1 -0
  36. package/dist/agents/skills/copywriting.skill.d.ts +3 -0
  37. package/dist/agents/skills/copywriting.skill.d.ts.map +1 -0
  38. package/dist/agents/skills/copywriting.skill.js +35 -0
  39. package/dist/agents/skills/copywriting.skill.js.map +1 -0
  40. package/dist/agents/skills/custom-skill-repository.d.ts +40 -0
  41. package/dist/agents/skills/custom-skill-repository.d.ts.map +1 -0
  42. package/dist/agents/skills/custom-skill-repository.js +3 -0
  43. package/dist/agents/skills/custom-skill-repository.js.map +1 -0
  44. package/dist/agents/skills/data-viz.skill.d.ts +3 -0
  45. package/dist/agents/skills/data-viz.skill.d.ts.map +1 -0
  46. package/dist/agents/skills/data-viz.skill.js +42 -0
  47. package/dist/agents/skills/data-viz.skill.js.map +1 -0
  48. package/dist/agents/skills/designer.skill.d.ts +3 -0
  49. package/dist/agents/skills/designer.skill.d.ts.map +1 -0
  50. package/dist/agents/skills/designer.skill.js +139 -0
  51. package/dist/agents/skills/designer.skill.js.map +1 -0
  52. package/dist/agents/skills/forms.skill.d.ts +3 -0
  53. package/dist/agents/skills/forms.skill.d.ts.map +1 -0
  54. package/dist/agents/skills/forms.skill.js +37 -0
  55. package/dist/agents/skills/forms.skill.js.map +1 -0
  56. package/dist/agents/skills/index.d.ts +6 -0
  57. package/dist/agents/skills/index.d.ts.map +1 -0
  58. package/dist/agents/skills/index.js +18 -0
  59. package/dist/agents/skills/index.js.map +1 -0
  60. package/dist/agents/skills/interactions.skill.d.ts +3 -0
  61. package/dist/agents/skills/interactions.skill.d.ts.map +1 -0
  62. package/dist/agents/skills/interactions.skill.js +31 -0
  63. package/dist/agents/skills/interactions.skill.js.map +1 -0
  64. package/dist/agents/skills/registry.d.ts +23 -0
  65. package/dist/agents/skills/registry.d.ts.map +1 -0
  66. package/dist/agents/skills/registry.js +75 -0
  67. package/dist/agents/skills/registry.js.map +1 -0
  68. package/dist/agents/skills/skill-injection.d.ts +52 -0
  69. package/dist/agents/skills/skill-injection.d.ts.map +1 -0
  70. package/dist/agents/skills/skill-injection.js +210 -0
  71. package/dist/agents/skills/skill-injection.js.map +1 -0
  72. package/dist/agents/skills/types.d.ts +12 -0
  73. package/dist/agents/skills/types.d.ts.map +1 -0
  74. package/dist/agents/skills/types.js +3 -0
  75. package/dist/agents/skills/types.js.map +1 -0
  76. package/dist/builder-api-config.d.ts +7 -0
  77. package/dist/builder-api-config.d.ts.map +1 -1
  78. package/dist/builder-api-config.js.map +1 -1
  79. package/dist/context.d.ts +7 -0
  80. package/dist/context.d.ts.map +1 -1
  81. package/dist/context.js +19 -0
  82. package/dist/context.js.map +1 -1
  83. package/dist/create-builder-api.d.ts +2 -3
  84. package/dist/create-builder-api.d.ts.map +1 -1
  85. package/dist/create-builder-api.js +18 -0
  86. package/dist/create-builder-api.js.map +1 -1
  87. package/dist/index.d.ts +2 -1
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +2 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/lib/library/list-library-items.d.ts +2 -2
  92. package/dist/lib/library/list-library-items.d.ts.map +1 -1
  93. package/dist/lib/library/list-library-items.js +49 -7
  94. package/dist/lib/library/list-library-items.js.map +1 -1
  95. package/dist/lib/notebooks/notebook-assistant.d.ts +12 -0
  96. package/dist/lib/notebooks/notebook-assistant.d.ts.map +1 -1
  97. package/dist/lib/notebooks/notebook-assistant.js +35 -8
  98. package/dist/lib/notebooks/notebook-assistant.js.map +1 -1
  99. package/dist/lib/object-storage/index.d.ts +3 -0
  100. package/dist/lib/object-storage/index.d.ts.map +1 -0
  101. package/dist/lib/object-storage/index.js +19 -0
  102. package/dist/lib/object-storage/index.js.map +1 -0
  103. package/dist/lib/object-storage/keys.d.ts +10 -0
  104. package/dist/lib/object-storage/keys.d.ts.map +1 -0
  105. package/dist/lib/object-storage/keys.js +51 -0
  106. package/dist/lib/object-storage/keys.js.map +1 -0
  107. package/dist/lib/object-storage/s3-object-store.d.ts +14 -0
  108. package/dist/lib/object-storage/s3-object-store.d.ts.map +1 -0
  109. package/dist/lib/object-storage/s3-object-store.js +64 -0
  110. package/dist/lib/object-storage/s3-object-store.js.map +1 -0
  111. package/dist/lib/session-pages/artifact-quality-audit.d.ts +16 -0
  112. package/dist/lib/session-pages/artifact-quality-audit.d.ts.map +1 -0
  113. package/dist/lib/session-pages/artifact-quality-audit.js +293 -0
  114. package/dist/lib/session-pages/artifact-quality-audit.js.map +1 -0
  115. package/dist/lib/session-pages/artifact-storage.d.ts +3 -0
  116. package/dist/lib/session-pages/artifact-storage.d.ts.map +1 -1
  117. package/dist/lib/session-pages/artifact-storage.js +94 -85
  118. package/dist/lib/session-pages/artifact-storage.js.map +1 -1
  119. package/dist/lib/session-pages/audit-session-html.d.ts +23 -0
  120. package/dist/lib/session-pages/audit-session-html.d.ts.map +1 -0
  121. package/dist/lib/session-pages/audit-session-html.js +82 -0
  122. package/dist/lib/session-pages/audit-session-html.js.map +1 -0
  123. package/dist/lib/session-pages/contrast-check.d.ts +25 -0
  124. package/dist/lib/session-pages/contrast-check.d.ts.map +1 -0
  125. package/dist/lib/session-pages/contrast-check.js +290 -0
  126. package/dist/lib/session-pages/contrast-check.js.map +1 -0
  127. package/dist/lib/session-pages/deferred-quality-rules.d.ts +7 -0
  128. package/dist/lib/session-pages/deferred-quality-rules.d.ts.map +1 -0
  129. package/dist/lib/session-pages/deferred-quality-rules.js +25 -0
  130. package/dist/lib/session-pages/deferred-quality-rules.js.map +1 -0
  131. package/dist/lib/session-pages/delete-session-artifact.d.ts.map +1 -1
  132. package/dist/lib/session-pages/delete-session-artifact.js +12 -41
  133. package/dist/lib/session-pages/delete-session-artifact.js.map +1 -1
  134. package/dist/lib/session-pages/delete-session-artifacts.d.ts +0 -6
  135. package/dist/lib/session-pages/delete-session-artifacts.d.ts.map +1 -1
  136. package/dist/lib/session-pages/delete-session-artifacts.js +51 -15
  137. package/dist/lib/session-pages/delete-session-artifacts.js.map +1 -1
  138. package/dist/lib/session-pages/list-session-artifacts.d.ts.map +1 -1
  139. package/dist/lib/session-pages/list-session-artifacts.js +48 -48
  140. package/dist/lib/session-pages/list-session-artifacts.js.map +1 -1
  141. package/dist/lib/session-pages/read-session-artifacts.d.ts.map +1 -1
  142. package/dist/lib/session-pages/read-session-artifacts.js +4 -26
  143. package/dist/lib/session-pages/read-session-artifacts.js.map +1 -1
  144. package/dist/lib/session-pages/resolve-session-account-id.d.ts +3 -0
  145. package/dist/lib/session-pages/resolve-session-account-id.d.ts.map +1 -0
  146. package/dist/lib/session-pages/resolve-session-account-id.js +31 -0
  147. package/dist/lib/session-pages/resolve-session-account-id.js.map +1 -0
  148. package/dist/lib/session-pages/write-session-artifacts.d.ts +0 -2
  149. package/dist/lib/session-pages/write-session-artifacts.d.ts.map +1 -1
  150. package/dist/lib/session-pages/write-session-artifacts.js +8 -0
  151. package/dist/lib/session-pages/write-session-artifacts.js.map +1 -1
  152. package/dist/lib/session-plans/build-plan.d.ts +64 -0
  153. package/dist/lib/session-plans/build-plan.d.ts.map +1 -0
  154. package/dist/lib/session-plans/build-plan.js +134 -0
  155. package/dist/lib/session-plans/build-plan.js.map +1 -0
  156. package/dist/lib/yjs-pending/flush-lock.d.ts +6 -0
  157. package/dist/lib/yjs-pending/flush-lock.d.ts.map +1 -0
  158. package/dist/lib/yjs-pending/flush-lock.js +43 -0
  159. package/dist/lib/yjs-pending/flush-lock.js.map +1 -0
  160. package/dist/lib/yjs-pending/flush-worker.d.ts +5 -0
  161. package/dist/lib/yjs-pending/flush-worker.d.ts.map +1 -0
  162. package/dist/lib/yjs-pending/flush-worker.js +75 -0
  163. package/dist/lib/yjs-pending/flush-worker.js.map +1 -0
  164. package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts +22 -0
  165. package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts.map +1 -0
  166. package/dist/lib/yjs-pending/yjs-pending-updates-repository.js +3 -0
  167. package/dist/lib/yjs-pending/yjs-pending-updates-repository.js.map +1 -0
  168. package/dist/lib/yjs-pending/yjs-persistence.d.ts +23 -0
  169. package/dist/lib/yjs-pending/yjs-persistence.d.ts.map +1 -0
  170. package/dist/lib/yjs-pending/yjs-persistence.js +222 -0
  171. package/dist/lib/yjs-pending/yjs-persistence.js.map +1 -0
  172. package/dist/realtime/reset-session-artifact-y-docs.d.ts.map +1 -1
  173. package/dist/realtime/reset-session-artifact-y-docs.js +1 -6
  174. package/dist/realtime/reset-session-artifact-y-docs.js.map +1 -1
  175. package/dist/realtime/session-artifact-y-socket-io.d.ts +0 -5
  176. package/dist/realtime/session-artifact-y-socket-io.d.ts.map +1 -1
  177. package/dist/realtime/session-artifact-y-socket-io.js +5 -69
  178. package/dist/realtime/session-artifact-y-socket-io.js.map +1 -1
  179. package/dist/realtime/session-artifact-yjs-store.d.ts +3 -35
  180. package/dist/realtime/session-artifact-yjs-store.d.ts.map +1 -1
  181. package/dist/realtime/session-artifact-yjs-store.js +75 -235
  182. package/dist/realtime/session-artifact-yjs-store.js.map +1 -1
  183. package/dist/routes/chats/multiUserMessages.d.ts.map +1 -1
  184. package/dist/routes/chats/multiUserMessages.js +2 -1
  185. package/dist/routes/chats/multiUserMessages.js.map +1 -1
  186. package/dist/routes/chats/stream.d.ts.map +1 -1
  187. package/dist/routes/chats/stream.js +2 -1
  188. package/dist/routes/chats/stream.js.map +1 -1
  189. package/dist/routes/notebooks/assistant-generate.d.ts.map +1 -1
  190. package/dist/routes/notebooks/assistant-generate.js +3 -1
  191. package/dist/routes/notebooks/assistant-generate.js.map +1 -1
  192. package/dist/routes/sessions.d.ts.map +1 -1
  193. package/dist/routes/sessions.js +26 -6
  194. package/dist/routes/sessions.js.map +1 -1
  195. package/dist/routes/skills.d.ts +2 -0
  196. package/dist/routes/skills.d.ts.map +1 -0
  197. package/dist/routes/skills.js +140 -0
  198. package/dist/routes/skills.js.map +1 -0
  199. package/dist/routes/tenants/credentials.js +3 -3
  200. package/dist/routes/tenants/credentials.js.map +1 -1
  201. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-quality-report.tool.js","sourceRoot":"","sources":["../../../src/agents/shared/session-quality-report.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Host-injected bridge from agent tools to a per-session app VM (workspace,
3
+ * exec, preview). Implemented by the embedding host against its VM control
4
+ * plane; absent when the deployment has no VM runtime — tools then report
5
+ * that app workspaces are unavailable and agents fall back to session artifacts.
6
+ */
7
+ export interface AppVmInfo {
8
+ vmId: string;
9
+ stack: string;
10
+ /** Public URL where the VM's HTTP port is reachable through the preview gateway. */
11
+ previewUrl?: string;
12
+ }
13
+ export interface AppVmFile {
14
+ /** Path relative to the VM workspace root (no leading slash, no traversal). */
15
+ path: string;
16
+ content: string;
17
+ encoding?: 'utf8' | 'base64';
18
+ }
19
+ export interface AppVmExecRequest {
20
+ command: string;
21
+ cwd?: string;
22
+ timeoutMs?: number;
23
+ }
24
+ export interface AppVmExecResult {
25
+ exitCode: number;
26
+ stdout: string;
27
+ stderr: string;
28
+ durationMs: number;
29
+ truncated: boolean;
30
+ timedOut: boolean;
31
+ }
32
+ export interface SessionVmBridge {
33
+ /** Find or create the session's app VM. */
34
+ ensureVm(sessionId: string, stack?: string): Promise<AppVmInfo>;
35
+ /** Write files into the session VM's workspace (creates the VM if needed). */
36
+ writeFiles(sessionId: string, files: AppVmFile[]): Promise<{
37
+ vm: AppVmInfo;
38
+ written: Array<{
39
+ path: string;
40
+ bytes: number;
41
+ }>;
42
+ }>;
43
+ /** Run a shell command in the session VM's workspace (creates the VM if needed). */
44
+ exec(sessionId: string, request: AppVmExecRequest): Promise<{
45
+ vm: AppVmInfo;
46
+ result: AppVmExecResult;
47
+ }>;
48
+ }
49
+ //# sourceMappingURL=session-vm-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-vm-bridge.d.ts","sourceRoot":"","sources":["../../../src/agents/shared/session-vm-bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/D,8EAA8E;IAC9E,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;IAC9H,oFAAoF;IACpF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,CAAC,CAAA;CACxG"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Host-injected bridge from agent tools to a per-session app VM (workspace,
4
+ * exec, preview). Implemented by the embedding host against its VM control
5
+ * plane; absent when the deployment has no VM runtime — tools then report
6
+ * that app workspaces are unavailable and agents fall back to session artifacts.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=session-vm-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-vm-bridge.js","sourceRoot":"","sources":["../../../src/agents/shared/session-vm-bridge.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,3 @@
1
+ import type { GenerationSkill } from './types';
2
+ export declare const a11ySkill: GenerationSkill;
3
+ //# sourceMappingURL=a11y.skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a11y.skill.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/a11y.skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,SAAS,EAAE,eAkBvB,CAAA"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.a11ySkill = void 0;
4
+ exports.a11ySkill = {
5
+ name: 'a11y',
6
+ description: 'Accessibility checklist applied before publishing any page',
7
+ whenToUse: 'Every UI/HTML page (auto-included with designer).',
8
+ instructions: `## a11y — bake into the single write
9
+
10
+ Incorporate these into the ONE publish/update call — do not iterate tool calls to satisfy the checklist:
11
+
12
+ 1. Landmarks: exactly one <main>; site chrome in <header>/<nav>/<footer>; sections labelled via headings or aria-label.
13
+ 2. Heading order: one <h1>; no skipped levels; headings describe content, not styling.
14
+ 3. Contrast: body text ≥ 4.5:1, large text ≥ 3:1 against its actual background. Bright accent fills (#1DB954-class greens) need text-slate-950 (not text-white) OR a darker fill; bright accent text on white needs a darker accent shade.
15
+ 4. Keyboard: everything clickable is a <button>/<a>/input; Esc closes dialogs; :focus-visible clearly visible.
16
+ 5. Labels & names: every input has a <label>; icon-only buttons get aria-label; links make sense out of context.
17
+ 6. Images/SVG: informative SVGs get role="img" + <title>; decorative ones aria-hidden="true".
18
+ 7. State semantics: aria-selected / aria-expanded / aria-sort / role="status" where relevant.
19
+ 8. Color is never the only signal — pair statuses with symbols or text.
20
+ 9. Motion: animations disabled under prefers-reduced-motion.
21
+ 10. Touch targets ≥ 44×44px on primary actions.`,
22
+ };
23
+ //# sourceMappingURL=a11y.skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a11y.skill.js","sourceRoot":"","sources":["../../../src/agents/skills/a11y.skill.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAoB;IACxC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,4DAA4D;IACzE,SAAS,EAAE,mDAAmD;IAC9D,YAAY,EAAE;;;;;;;;;;;;;gDAagC;CAC/C,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { AdditionalContext } from '@multiplayer-app/ai-agent-types';
2
+ import type { GenerationSkill } from './types';
3
+ /** Loads account-defined skills for the account in the agent context. */
4
+ export type AccountSkillLoader = (context?: AdditionalContext) => Promise<GenerationSkill[]>;
5
+ export declare function getContextAccountId(context?: AdditionalContext): string | undefined;
6
+ /**
7
+ * Default loader: reads the account's custom skills via the injected
8
+ * CustomSkillRepository. Resolves to [] when no repository is configured,
9
+ * no account is in context, or the lookup fails — generation must never
10
+ * break because custom skills are unavailable.
11
+ */
12
+ export declare const loadAccountSkills: AccountSkillLoader;
13
+ //# sourceMappingURL=account-skill-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-skill-loader.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/account-skill-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C,yEAAyE;AACzE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,CAAC,EAAE,iBAAiB,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;AAE5F,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAGnF;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,kBAqB/B,CAAA"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadAccountSkills = void 0;
4
+ exports.getContextAccountId = getContextAccountId;
5
+ const context_1 = require("../../context");
6
+ const logger_1 = require("../../logger");
7
+ function getContextAccountId(context) {
8
+ var _a;
9
+ const accountId = (_a = context === null || context === void 0 ? void 0 : context.data) === null || _a === void 0 ? void 0 : _a.accountId;
10
+ return typeof accountId === 'string' && accountId ? accountId : undefined;
11
+ }
12
+ /**
13
+ * Default loader: reads the account's custom skills via the injected
14
+ * CustomSkillRepository. Resolves to [] when no repository is configured,
15
+ * no account is in context, or the lookup fails — generation must never
16
+ * break because custom skills are unavailable.
17
+ */
18
+ const loadAccountSkills = async (context) => {
19
+ const accountId = getContextAccountId(context);
20
+ if (!accountId) {
21
+ return [];
22
+ }
23
+ try {
24
+ const repository = (0, context_1.getBuilderApiContext)().customSkillRepository;
25
+ if (!repository) {
26
+ return [];
27
+ }
28
+ const records = await repository.listByAccount(accountId);
29
+ return records.map((record) => ({
30
+ name: record.name,
31
+ description: record.description,
32
+ whenToUse: record.whenToUse,
33
+ instructions: record.instructions,
34
+ }));
35
+ }
36
+ catch (err) {
37
+ (0, logger_1.getBuilderApiLogger)().error({ err }, 'Failed to load account skills');
38
+ return [];
39
+ }
40
+ };
41
+ exports.loadAccountSkills = loadAccountSkills;
42
+ //# sourceMappingURL=account-skill-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-skill-loader.js","sourceRoot":"","sources":["../../../src/agents/skills/account-skill-loader.ts"],"names":[],"mappings":";;;AAQA,kDAGC;AATD,2CAAoD;AACpD,yCAAkD;AAKlD,SAAgB,mBAAmB,CAAC,OAA2B;;IAC7D,MAAM,SAAS,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,SAAS,CAAA;IAC1C,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3E,CAAC;AAED;;;;;GAKG;AACI,MAAM,iBAAiB,GAAuB,KAAK,EAAE,OAAO,EAAE,EAAE;IACrE,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,8BAAoB,GAAE,CAAC,qBAAqB,CAAA;QAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QACzD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC,CAAA;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,4BAAmB,GAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAA;QACrE,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AArBY,QAAA,iBAAiB,qBAqB7B"}
@@ -0,0 +1,3 @@
1
+ import type { GenerationSkill } from './types';
2
+ export declare const appScaffoldSkill: GenerationSkill;
3
+ //# sourceMappingURL=app-scaffold.skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-scaffold.skill.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/app-scaffold.skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,gBAAgB,EAAE,eAyB9B,CAAA"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appScaffoldSkill = void 0;
4
+ exports.appScaffoldSkill = {
5
+ name: 'app-scaffold',
6
+ description: 'Build real multi-file apps in the session app workspace (VM) with writeAppFiles/runAppCommand',
7
+ whenToUse: 'The user wants an actual app or project — multiple source files, npm packages, build steps, a backend — beyond a single generated page.',
8
+ instructions: `## app-scaffold
9
+
10
+ When the request is an actual application (multi-file project, npm dependencies, build tooling, server code) target the session app workspace — an isolated per-session VM — instead of session artifacts.
11
+
12
+ ### Tools
13
+ - writeAppFiles: write project files into the workspace (batched; workspace-relative paths). Static files are served at the returned previewUrl immediately.
14
+ - runAppCommand: run shell commands in the workspace (npm install, node scripts, builds). Check exitCode and stderr after every command; fix and retry on failure instead of reporting broken output.
15
+ - If these tools error that app workspaces are unavailable, fall back to session artifacts (publishSessionArtifacts) and say so.
16
+
17
+ ### Workflow
18
+ 1. Static-first: prefer a no-build project (index.html + ES modules + import maps for CDN deps) — it previews instantly and has no toolchain to break. Reach for a build step only when the request genuinely needs one.
19
+ 2. Write ALL project files in one writeAppFiles call: entry index.html, source under src/, package.json when using npm.
20
+ 3. When npm is needed: package.json with pinned versions → runAppCommand "npm install --no-audit --no-fund" → verify exitCode 0 → build if applicable → verify the output exists (ls dist).
21
+ 4. Verify before reporting: runAppCommand a smoke check (node script, curl the built output, ls expected files). A non-zero exit or empty stderr-only result is NOT success.
22
+ 5. Report the previewUrl and what was built. Keep docs (README.md) in the workspace too.
23
+
24
+ ### Structure conventions
25
+ - index.html at the workspace root is the preview entry.
26
+ - src/ for modules, data/ for JSON fixtures, styles in a single stylesheet unless the project warrants more.
27
+ - package.json scripts: "build" and "start" when relevant; never rely on globally installed CLIs — use npx.
28
+ - All design/interaction/content skills still apply to the UI you produce inside the app.`,
29
+ };
30
+ //# sourceMappingURL=app-scaffold.skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-scaffold.skill.js","sourceRoot":"","sources":["../../../src/agents/skills/app-scaffold.skill.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,+FAA+F;IAC5G,SAAS,EAAE,yIAAyI;IACpJ,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;0FAoB0E;CACzF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { GenerationSkill } from './types';
2
+ export declare const copywritingSkill: GenerationSkill;
3
+ //# sourceMappingURL=copywriting.skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copywriting.skill.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/copywriting.skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,gBAAgB,EAAE,eA8B9B,CAAA"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copywritingSkill = void 0;
4
+ exports.copywritingSkill = {
5
+ name: 'copywriting',
6
+ description: 'Headlines, CTAs, microcopy, realistic sample content — no lorem ipsum',
7
+ whenToUse: 'User-facing pages where the words sell or guide: landing pages, product pages, dashboards with empty states, onboarding.',
8
+ instructions: `## copywriting
9
+
10
+ The words are part of the design. Generic copy makes a beautiful page feel like a template.
11
+
12
+ ### Headlines
13
+ - Lead with the outcome, not the category: "Ship dashboards your team actually reads" beats "A Modern Dashboard Solution".
14
+ - One idea per headline, ≤10 words, no title-case-every-word; subhead (1-2 sentences) carries the how/what and names the audience.
15
+ - Ban template words: "Welcome to", "revolutionary", "seamless", "cutting-edge", "unleash", "empower", "solutions".
16
+
17
+ ### CTAs
18
+ - Verb + outcome, 2-4 words: "Start free trial", "Book a demo", "See the numbers". Never "Submit", "Click here", or "Learn more" as the primary CTA ("Learn more" is fine only as a quiet text link).
19
+ - One primary CTA per view; the secondary is visually quieter (outline/ghost) and genuinely different in intent.
20
+
21
+ ### Body & features
22
+ - Feature blurbs: benefit first, mechanism second — "Find any session in seconds. Full-text search across every recording." 2 sentences max.
23
+ - Concrete beats abstract: numbers, timeframes, named integrations. "Syncs in under 5s" beats "blazing fast".
24
+ - Sentence case everywhere, including buttons and nav.
25
+
26
+ ### Microcopy
27
+ - Buttons say what happens next; loading states say what is happening ("Creating your workspace…"); confirmations say what happened and what is next.
28
+ - Empty states are onboarding: what this area will show + the action that fills it ("No sessions yet — start one from the dashboard"), never a bare "No data".
29
+ - Error messages: what went wrong + how to fix, no codes, no blame ("We couldn't save — check your connection and try again").
30
+
31
+ ### Sample data (when the page needs content)
32
+ - Realistic and internally consistent: plausible names from varied cultures, real-looking companies/emails (use example.com domains), dates near today, metrics that add up and vary naturally (not 100/200/300).
33
+ - Match the domain: a sales dashboard shows deal names and quotas; a fitness app shows workouts and streaks. Never lorem ipsum, never "Item 1/Item 2/Item 3".`,
34
+ };
35
+ //# sourceMappingURL=copywriting.skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copywriting.skill.js","sourceRoot":"","sources":["../../../src/agents/skills/copywriting.skill.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,uEAAuE;IACpF,SAAS,EAAE,0HAA0H;IACrI,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;8JAyB8I;CAC7J,CAAA"}
@@ -0,0 +1,40 @@
1
+ /** An account-defined generation skill (brand pack, house style, domain guide). */
2
+ export interface CustomSkillRecord {
3
+ skillId: string;
4
+ accountId: string;
5
+ /** Kebab-case identifier; may shadow a built-in skill to replace it account-wide. */
6
+ name: string;
7
+ description: string;
8
+ whenToUse: string;
9
+ instructions: string;
10
+ createdBy: string;
11
+ updatedBy: string;
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ }
15
+ export interface CreateCustomSkillInput {
16
+ accountId: string;
17
+ name: string;
18
+ description: string;
19
+ whenToUse: string;
20
+ instructions: string;
21
+ createdBy: string;
22
+ }
23
+ export interface UpdateCustomSkillInput {
24
+ accountId: string;
25
+ skillId: string;
26
+ name?: string;
27
+ description?: string;
28
+ whenToUse?: string;
29
+ instructions?: string;
30
+ updatedBy: string;
31
+ }
32
+ /** Implemented by the embedding host (like NotebookRepository); injected via createBuilderApi options. */
33
+ export interface CustomSkillRepository {
34
+ listByAccount(accountId: string): Promise<CustomSkillRecord[]>;
35
+ getById(accountId: string, skillId: string): Promise<CustomSkillRecord | null>;
36
+ create(input: CreateCustomSkillInput): Promise<CustomSkillRecord>;
37
+ update(input: UpdateCustomSkillInput): Promise<CustomSkillRecord | null>;
38
+ delete(accountId: string, skillId: string): Promise<boolean>;
39
+ }
40
+ //# sourceMappingURL=custom-skill-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-skill-repository.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/custom-skill-repository.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,0GAA0G;AAC1G,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAC9D,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IAC9E,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACjE,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IACxE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=custom-skill-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-skill-repository.js","sourceRoot":"","sources":["../../../src/agents/skills/custom-skill-repository.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { GenerationSkill } from './types';
2
+ export declare const dataVizSkill: GenerationSkill;
3
+ //# sourceMappingURL=data-viz.skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-viz.skill.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/data-viz.skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,YAAY,EAAE,eAqC1B,CAAA"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataVizSkill = void 0;
4
+ exports.dataVizSkill = {
5
+ name: 'data-viz',
6
+ description: 'Charts, KPI stat cards, sparklines, tables that read well',
7
+ whenToUse: 'Pages with metrics, statistics, time series, comparisons, or any numeric data.',
8
+ instructions: `## data-viz
9
+
10
+ Numbers deserve visuals. Never present a dataset as a bare table alone — lead with KPIs and a chart, keep the table as detail.
11
+
12
+ ### Chart selection
13
+ - Trend over time → line/area chart. Comparison across categories → horizontal bar (vertical only when labels are short). Part-of-whole → doughnut ONLY with ≤5 slices, else bar. Distribution → histogram-style bar. Two variables → scatter.
14
+ - One message per chart. If a chart needs a paragraph to explain, split it.
15
+
16
+ ### KPI stat row (top of data pages)
17
+ <section class="kpis"> with 3-5 cards: label (small, muted, uppercase tracking), value (2-2.5rem, font-weight 700, font-variant-numeric: tabular-nums), delta chip (▲/▼ + %, color-coded — pair with the symbol, never color alone). Grid: repeat(auto-fit, minmax(180px, 1fr)).
18
+
19
+ ### Chart.js recipe (data-heavy pages)
20
+ Load once before your script: <script src="https://cdn.jsdelivr.net/npm/chart.js@4"></script>
21
+ Theme-aware defaults — read colors from CSS so light/dark both work:
22
+ const css = getComputedStyle(document.documentElement)
23
+ const textColor = css.getPropertyValue('--pico-color').trim()
24
+ const gridColor = css.getPropertyValue('--pico-muted-border-color').trim()
25
+ Chart.defaults.color = textColor; Chart.defaults.borderColor = gridColor
26
+ Chart.defaults.font.family = css.getPropertyValue('--pico-font-family')
27
+ - Wrap every canvas in a sized container (<div style="position:relative;height:320px">) with maintainAspectRatio: false — unsized canvases explode layouts.
28
+ - Line charts: tension 0.3, thin points (radius 0-2, hover 4), subtle area fill via accent at low alpha.
29
+ - Bars: borderRadius 6, category spacing; hide vertical gridlines (x: { grid: { display: false } }).
30
+ - Legend only when >1 series; tooltips on; no chart titles inside the canvas (use an <h3> above).
31
+
32
+ ### Categorical palette (color-blind safe, works on light and dark)
33
+ #6366f1 #0ea5e9 #10b981 #f59e0b #ef4444 #8b5cf6 — use in this order; series >6 means the chart is overloaded, aggregate instead.
34
+
35
+ ### Inline SVG sparkline (when Chart.js is overkill)
36
+ <svg viewBox="0 0 100 28" preserveAspectRatio="none" class="spark"><polyline fill="none" stroke="var(--accent)" stroke-width="2" points="0,20 15,16 30,18 45,10 60,12 75,6 90,9 100,4"/></svg>
37
+ Compute points from data in <script> when values are dynamic.
38
+
39
+ ### Tables as detail
40
+ Wrap in a card with a toolbar (search input filtering rows); right-align numeric columns with tabular-nums; zebra via odd:bg-* striping or a subtle row hover; cap visible rows and add a "show all" toggle for long data. Ship 8–15 rows of realistic, varied sample data (real-sounding names/companies, plausible spread of values) — a 3-row table with "John Doe / Example Corp" reads as a broken demo.`,
41
+ };
42
+ //# sourceMappingURL=data-viz.skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-viz.skill.js","sourceRoot":"","sources":["../../../src/agents/skills/data-viz.skill.ts"],"names":[],"mappings":";;;AAEa,QAAA,YAAY,GAAoB;IAC3C,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,2DAA2D;IACxE,SAAS,EAAE,gFAAgF;IAC3F,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8YAgC8X;CAC7Y,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { GenerationSkill } from './types';
2
+ export declare const designerSkill: GenerationSkill;
3
+ //# sourceMappingURL=designer.skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designer.skill.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/designer.skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,aAAa,EAAE,eAsI3B,CAAA"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.designerSkill = void 0;
4
+ exports.designerSkill = {
5
+ name: 'designer',
6
+ description: 'Visual design system: Tailwind utilities, tokens, layout packs, typography, atmosphere, polish',
7
+ whenToUse: 'Every UI/HTML page. Always include for any .html artifact.',
8
+ instructions: `## designer
9
+
10
+ Goal: every page should feel like a shipped 2025 product site — distinctive, spacious, intentional — never a Bootstrap doc or generic AI template. Tailwind Play CDN is on (preflight): bare elements are unstyled. Utility-class every visible element. Use a small <style> only for fonts, keyframes, and atmosphere (mesh/grain).
11
+
12
+ ### Design brief is law
13
+ Use the brief's accent as LITERAL hex utilities (bg-[#0EA5E9] hover:bg-[#0284C7]) — same hex everywhere. One neutral scale (slate OR zinc OR stone). Never indigo/violet defaults unless the brief names them. Never Inter. Never bg-[var(--x)] class names (undefined vars fail the gate).
14
+
15
+ ### Accent contrast (buttons & labels)
16
+ Bright accents (#1DB954, lime, cyan-400, etc.) fail WCAG with white text and as body/eyebrow text on white. Prefer one of:
17
+ - CTA: dark text on bright fill — e.g. \`bg-[#1DB954] text-slate-950\` (not text-white)
18
+ - Or darken the fill for white text — e.g. \`bg-[#15803d] text-white\` (keep a brighter hover only if still AA)
19
+ - Accent-as-text (eyebrows, links): use a darker shade of the brief accent (\`text-[#15803d]\`), not the bright fill hex on white
20
+ Never waste turns "fixing contrast" by nudging slate body text — fix the accent/button pairing once.
21
+
22
+ ### Brand-first first viewport
23
+ ONE composition: brand/product name as a hero-level signal, one headline, one supporting sentence, one CTA pair, one dominant visual plane (gradient mesh, abstract SVG, or atmospheric wash). No KPI strips, promo chips, address blocks, or card grids in the first viewport.
24
+ - Launch pages: full-bleed hero — section background edge-to-edge; max-w column INSIDE the section. Never put the hero inside a rounded card.
25
+ - Brand must still read if the nav disappeared.
26
+ - At most one quiet eyebrow line — no floating stickers on hero media.
27
+
28
+ ### Atmosphere (required — flat white pages fail the bar)
29
+ Give the page depth without clutter. Pick 1–2 of:
30
+ - Soft accent-tint wash: bg-gradient-to-b from-[#ACCENT]/15 via-transparent to-transparent on the hero
31
+ - Mesh blob: absolutely positioned blurred circles (blur-3xl opacity-30) behind hero content, pointer-events-none
32
+ - Subtle grain: CSS repeating-radial-gradient noise at 3–5% opacity on a ::before (optional)
33
+ - Glass chrome: sticky nav with bg-white/70 dark:bg-slate-950/70 backdrop-blur-xl border-b border-*/10
34
+ Never neon saturated walls. Atmosphere supports content; it does not compete with it.
35
+
36
+ ### Typography
37
+ Load the brief's Google Fonts <link> + wire font-family on body in <style>. Pairings: Manrope+Plus Jakarta Sans (product), Sora+Space Grotesk (tech), Fraunces+Newsreader (editorial), Outfit+DM Sans (friendly). Max two families.
38
+ Scale: hero text-5xl sm:text-6xl lg:text-7xl font-extrabold tracking-tight → section h2 text-3xl sm:text-4xl font-bold tracking-tight → body text-base/lg text-slate-600. tabular-nums on metrics. Secondary text text-slate-500.
39
+
40
+ ### Canonical patterns — adapt hex/fonts/copy; do not invent a weaker layout from scratch
41
+
42
+ Sticky glass nav:
43
+ \`\`\`html
44
+ <header class="sticky top-0 z-50 border-b border-slate-200/70 bg-white/70 backdrop-blur-xl">
45
+ <div class="mx-auto flex h-16 max-w-6xl items-center justify-between px-4 sm:px-6">
46
+ <a href="index.html" class="flex items-center gap-2.5 text-lg font-extrabold tracking-tight text-slate-900">
47
+ <span class="inline-flex h-8 w-8 items-center justify-center rounded-lg bg-[#0EA5E9] text-white"><!-- lucide svg --></span>
48
+ Brand
49
+ </a>
50
+ <nav class="hidden items-center gap-8 text-sm font-medium text-slate-600 md:flex">
51
+ <a href="features.html" class="transition-colors hover:text-[#0EA5E9]">Features</a>
52
+ <a href="pricing.html" class="transition-colors hover:text-[#0EA5E9]">Pricing</a>
53
+ </nav>
54
+ <div class="flex items-center gap-3">
55
+ <button type="button" class="md:hidden inline-flex h-10 w-10 items-center justify-center rounded-lg text-slate-700" aria-label="Open menu"><!-- menu svg --></button>
56
+ <a href="#cta" class="hidden sm:inline-flex items-center rounded-lg bg-[#0EA5E9] px-4 py-2 text-sm font-semibold text-white shadow-sm transition hover:bg-[#0284C7] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#0EA5E9] focus-visible:ring-offset-2">Start free</a>
57
+ </div>
58
+ </div>
59
+ </header>
60
+ \`\`\`
61
+ Include a mobile drawer/menu script for the md:hidden button — a sticky nav that does nothing on mobile looks unfinished.
62
+
63
+ Launch hero:
64
+ \`\`\`html
65
+ <section class="relative overflow-hidden">
66
+ <div class="pointer-events-none absolute -top-24 left-1/2 h-72 w-72 -translate-x-1/2 rounded-full bg-[#0EA5E9]/25 blur-3xl"></div>
67
+ <div class="relative mx-auto max-w-6xl px-4 py-24 text-center sm:px-6 sm:py-32">
68
+ <p class="text-sm font-semibold tracking-wide text-[#0EA5E9]">For ops teams who live in data</p>
69
+ <h1 class="mt-4 text-5xl font-extrabold tracking-tight text-slate-900 sm:text-6xl lg:text-7xl">Ship clarity,<br><span class="text-[#0EA5E9]">not dashboards</span></h1>
70
+ <p class="mx-auto mt-6 max-w-2xl text-lg text-slate-600">One sentence of concrete value for a named audience — not "welcome to our platform".</p>
71
+ <div class="mt-10 flex flex-wrap items-center justify-center gap-4">
72
+ <a href="#cta" class="inline-flex items-center rounded-lg bg-[#0EA5E9] px-6 py-3 text-sm font-semibold text-white shadow-lg shadow-[#0EA5E9]/25 transition hover:bg-[#0284C7]">Start free trial</a>
73
+ <a href="features.html" class="inline-flex items-center rounded-lg border border-slate-200 bg-white px-6 py-3 text-sm font-semibold text-slate-800 transition hover:border-slate-300 hover:bg-slate-50">See how it works</a>
74
+ </div>
75
+ </div>
76
+ </section>
77
+ \`\`\`
78
+
79
+ Feature row (alternate direction with lg:flex-row-reverse on odd sections):
80
+ \`\`\`html
81
+ <section class="border-t border-slate-100 py-20 sm:py-28">
82
+ <div class="mx-auto grid max-w-6xl items-center gap-12 px-4 sm:px-6 lg:grid-cols-2">
83
+ <div>
84
+ <h2 class="text-3xl font-bold tracking-tight text-slate-900 sm:text-4xl">Outcome-led headline</h2>
85
+ <p class="mt-4 text-lg text-slate-600">Benefit first, mechanism second. Two sentences max.</p>
86
+ <ul class="mt-8 space-y-3 text-slate-700">
87
+ <li class="flex gap-3"><span class="mt-0.5 text-[#0EA5E9]"><!-- check svg --></span>Concrete capability</li>
88
+ </ul>
89
+ </div>
90
+ <div class="relative aspect-[4/3] overflow-hidden rounded-2xl border border-slate-200 bg-gradient-to-br from-[#0EA5E9]/10 to-slate-50 shadow-sm">
91
+ <!-- abstract SVG illustration or UI mock framed here — never a hotlinked photo -->
92
+ </div>
93
+ </div>
94
+ </section>
95
+ \`\`\`
96
+
97
+ KPI (product pack only — never in launch hero):
98
+ \`\`\`html
99
+ <div class="rounded-2xl border border-slate-200/80 bg-white p-5 shadow-sm transition hover:-translate-y-0.5 hover:shadow-lg">
100
+ <div class="flex items-center justify-between">
101
+ <span class="text-sm font-medium text-slate-500">Weekly active</span>
102
+ <span class="inline-flex h-9 w-9 items-center justify-center rounded-xl bg-[#0EA5E9]/10 text-[#0EA5E9]"><!-- svg --></span>
103
+ </div>
104
+ <p class="mt-3 text-3xl font-bold tracking-tight tabular-nums text-slate-900">12,480</p>
105
+ <p class="mt-1 text-sm font-medium text-emerald-600">↑ 12.4% vs last week</p>
106
+ </div>
107
+ \`\`\`
108
+
109
+ Pricing highlight:
110
+ \`\`\`html
111
+ <div class="relative rounded-2xl border-2 border-[#0EA5E9] bg-white p-8 shadow-xl shadow-[#0EA5E9]/10">
112
+ <span class="absolute -top-3 left-1/2 -translate-x-1/2 rounded-full bg-[#0EA5E9] px-3 py-1 text-xs font-semibold text-white">Most popular</span>
113
+ <h3 class="text-lg font-semibold text-slate-900">Growth</h3>
114
+ <p class="mt-3"><span class="text-4xl font-extrabold tracking-tight tabular-nums">$149</span><span class="text-slate-500">/mo</span></p>
115
+ <a href="#cta" class="mt-8 block rounded-lg bg-[#0EA5E9] py-2.5 text-center text-sm font-semibold text-white transition hover:bg-[#0284C7]">Start free trial</a>
116
+ </div>
117
+ \`\`\`
118
+
119
+ ### Layout packs
120
+ - **launch**: hero → 2–3 alternating features → social proof (logos or quote) → pricing or final CTA band. Section rhythm py-20 sm:py-28. Alternate alignment; not everything centered.
121
+ - **product**: dense glass header; KPI row; card grid or sidebar+main; tables in cards with toolbar; space-y-6.
122
+ - **editorial**: max-w-2xl measure, strong type, sticky TOC (lg+), accent border-l-4 callouts.
123
+
124
+ ### Icons
125
+ Inline Lucide/Heroicons SVG only (stroke="currentColor" stroke-width="2" class="h-5 w-5"). Never emoji. Feature icons sit in rounded-xl accent/10 badges.
126
+
127
+ ### Interactions & polish (include in the same write — do not iterate)
128
+ - Mobile nav works; primary actions ≥ 44px touch targets
129
+ - Hover + focus-visible:ring-2 ring-offset-2 on every control; nav links transition-colors, no underline
130
+ - 2–3 purposeful motions max (hero fade-in, card hover lift, scroll reveal) behind prefers-reduced-motion
131
+ - body { background } set to match scheme; gutters never flash white on dark pages
132
+ - Footer with real product name + working relative links
133
+ - One <h1>; every section has a clear job; no dead href="#"; no lorem; no "Welcome to"
134
+ - Mentally check 360px and 1280px — grids collapse, type stays readable
135
+
136
+ ### Automatic fails
137
+ Indigo/violet-on-white gradient cliché · Inter · emoji icons · hero-in-a-card · first-viewport KPI soup · flat unstyled sections · external raster images · template adjectives (revolutionary/seamless/cutting-edge/unleash/empower)`,
138
+ };
139
+ //# sourceMappingURL=designer.skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designer.skill.js","sourceRoot":"","sources":["../../../src/agents/skills/designer.skill.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAoB;IAC5C,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,gGAAgG;IAC7G,SAAS,EAAE,4DAA4D;IACvE,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sOAiIsN;CACrO,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { GenerationSkill } from './types';
2
+ export declare const formsSkill: GenerationSkill;
3
+ //# sourceMappingURL=forms.skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.skill.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/forms.skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,UAAU,EAAE,eAgCxB,CAAA"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formsSkill = void 0;
4
+ exports.formsSkill = {
5
+ name: 'forms',
6
+ description: 'Form UX: validation timing, inline errors, multi-step flows, success states',
7
+ whenToUse: 'Pages with user input: signup/contact/checkout/settings forms, wizards, feedback widgets.',
8
+ instructions: `## forms
9
+
10
+ Forms are judged by how they fail. Build the error and success paths, not just the happy markup.
11
+
12
+ ### Structure
13
+ - One <label> per control, always visible (placeholders are hints, never labels). Group related fields with <fieldset><legend>.
14
+ - Right input types and autocomplete attrs: type="email" autocomplete="email", inputmode="numeric" for codes, autocomplete="name|tel|postal-code|current-password" etc. — mobile keyboards and autofill depend on them.
15
+ - Mark optional fields with "(optional)" in the label rather than starring required ones when most fields are required.
16
+ - Single-column layout; short related fields (city/zip) may share a row. Primary submit button full-width or right-aligned, styled with the accent; never two competing primary buttons.
17
+
18
+ ### Validation timing (the part everyone gets wrong)
19
+ - Validate a field on blur, not on every keystroke; once a field has shown an error, re-validate on input so the error clears the moment it is fixed.
20
+ - On submit: preventDefault, validate all, focus the first invalid field, and show a compact error summary at the top if more than one field failed.
21
+ - Use novalidate on the <form> and run your own checks (Checking validity via input.validity is fine) so styling stays consistent.
22
+
23
+ ### Error display
24
+ - Inline, under the field: <small class="error" id="email-error">Enter a valid email, like name@company.com</small>; set aria-describedby="email-error" and aria-invalid="true" on the input, and style the invalid state (e.g. aria-invalid:border-red-500 or a .error class).
25
+ - Error copy says how to fix, not what failed: "Password needs at least 8 characters" beats "Invalid password".
26
+ - Never disable the submit button as the only validation strategy — let users submit and see what is missing.
27
+
28
+ ### Multi-step (wizard) forms
29
+ - Step indicator with current/total and step names; one <section> per step, hidden attr on inactive ones; validate the current step before advancing; Back never loses data.
30
+ - Persist draft state to localStorage on change so refresh does not wipe progress; clear it on success.
31
+
32
+ ### Async submit & success
33
+ - On submit: button disables to block double-submit and shows a busy state (spinner SVG or "Sending…" label + reduced opacity); simulate the request when there is no backend (setTimeout ~800ms).
34
+ - Success replaces the form (or shows a distinct panel): checkmark icon, confirmation headline, what happens next. Keep it in the DOM (hidden) from the start and toggle.
35
+ - Failure shows a retryable, non-destructive error banner above the form — never wipe entered data.`,
36
+ };
37
+ //# sourceMappingURL=forms.skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.skill.js","sourceRoot":"","sources":["../../../src/agents/skills/forms.skill.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAoB;IACzC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,6EAA6E;IAC1F,SAAS,EAAE,2FAA2F;IACtG,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;oGA2BoF;CACnG,CAAA"}
@@ -0,0 +1,6 @@
1
+ export type { GenerationSkill } from './types';
2
+ export { GENERATION_SKILLS, STATIC_SKILL_GUIDES, getSkillCatalog, mergeSkills, buildSkillGuidance, } from './registry';
3
+ export { extractRequestedSkills, inferRequestedSkills, extractDesignTokens, createSkillInjectingPrepareStep, } from './skill-injection';
4
+ export { loadAccountSkills, getContextAccountId, type AccountSkillLoader, } from './account-skill-loader';
5
+ export type { CustomSkillRecord, CreateCustomSkillInput, UpdateCustomSkillInput, CustomSkillRepository, } from './custom-skill-repository';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,2BAA2B,CAAA"}