@cogenta/agents-builtin 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/image-creator/agent.d.ts +40 -0
  2. package/dist/image-creator/agent.d.ts.map +1 -0
  3. package/dist/image-creator/agent.js +48 -0
  4. package/dist/image-creator/agent.js.map +1 -0
  5. package/dist/index.d.ts +6 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +4 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/theme-creator/generate-sandbox-theme.d.ts +84 -9
  10. package/dist/theme-creator/generate-sandbox-theme.d.ts.map +1 -1
  11. package/dist/theme-creator/generate-sandbox-theme.js +157 -38
  12. package/dist/theme-creator/generate-sandbox-theme.js.map +1 -1
  13. package/dist/theme-creator/generate-theme-candidates.d.ts +23 -0
  14. package/dist/theme-creator/generate-theme-candidates.d.ts.map +1 -1
  15. package/dist/theme-creator/generate-theme-candidates.js +30 -7
  16. package/dist/theme-creator/generate-theme-candidates.js.map +1 -1
  17. package/dist/theme-creator/preview-sandbox-tool.d.ts +57 -0
  18. package/dist/theme-creator/preview-sandbox-tool.d.ts.map +1 -0
  19. package/dist/theme-creator/preview-sandbox-tool.js +48 -0
  20. package/dist/theme-creator/preview-sandbox-tool.js.map +1 -0
  21. package/dist/theme-creator/read-sandbox-tool.d.ts +57 -0
  22. package/dist/theme-creator/read-sandbox-tool.d.ts.map +1 -0
  23. package/dist/theme-creator/read-sandbox-tool.js +55 -0
  24. package/dist/theme-creator/read-sandbox-tool.js.map +1 -0
  25. package/dist/theme-creator/theme-spec.d.ts +31 -0
  26. package/dist/theme-creator/theme-spec.d.ts.map +1 -0
  27. package/dist/theme-creator/theme-spec.js +254 -0
  28. package/dist/theme-creator/theme-spec.js.map +1 -0
  29. package/dist/theme-creator/write-sandbox-file-tool.d.ts +2 -0
  30. package/dist/theme-creator/write-sandbox-file-tool.d.ts.map +1 -1
  31. package/dist/theme-creator/write-sandbox-file-tool.js +13 -2
  32. package/dist/theme-creator/write-sandbox-file-tool.js.map +1 -1
  33. package/package.json +3 -3
@@ -0,0 +1,254 @@
1
+ /**
2
+ * The structure and composition of a Cogenta theme, as one standing
3
+ * specification handed to the model in the system prompt's own
4
+ * `<specification>` section (`assembleContext`, `@cogenta/agents`).
5
+ *
6
+ * **Why this file exists.** Every fact below already existed — scattered
7
+ * across `theme.write_sandbox_file`'s tool `description`, a 311-line
8
+ * `identity.md` no admin flow ever loads, and the contract D docs. A live
9
+ * report ("I attach a screenshot and what comes back is nowhere near it")
10
+ * traced back to that scattering: a tool description is read as API
11
+ * reference for one call, not as standing knowledge about what is being
12
+ * built, and the writer agent's actual system prompt was a one-sentence role
13
+ * plus ten bullets. The tool description keeps only what belongs to the
14
+ * tool (its arguments and what it rejects); everything about what a theme
15
+ * *is* lives here.
16
+ *
17
+ * **The palette rule reversed, deliberately.** The previous brief told the
18
+ * model "colour/font/spacing VALUES are not invented here — reference
19
+ * --cogenta-*". Those custom properties are generated exclusively from the
20
+ * *site's* skin (`theme-wiring.ts`'s `computeEffectiveStyles`), so a theme
21
+ * asked to reproduce a specific design was structurally repainted in
22
+ * whatever palette the site already had — the single largest cause of "far
23
+ * from the screenshot", and no amount of layout accuracy could compensate.
24
+ * A theme's own stylesheet is emitted *after* the skin stylesheet
25
+ * (`joinStyles`, `theme-render.ts`), so a theme can and should carry its own
26
+ * design palette. The namespaced pattern below keeps the site's brand colours
27
+ * reachable rather than simply overwriting `--cogenta-*` at `:root`, which
28
+ * would silently disable the operator's own colour controls.
29
+ */
30
+ export const COGENTA_THEME_SPECIFICATION = `
31
+ A Cogenta theme is a small ES module package that turns a page's stored
32
+ content into HTML, plus the CSS that makes that HTML look like a design. It
33
+ runs server-side, per request. It has no build step: files are loaded with a
34
+ plain \`import()\`, so there is no JSX, no TypeScript compilation, no bundler.
35
+
36
+ ## The files
37
+
38
+ A complete theme is three things. None is optional if the theme is meant to
39
+ look like anything.
40
+
41
+ 1. \`theme.config.{js,mjs,ts}\` — the contract D manifest.
42
+ 2. \`theme.render.{js,mjs,ts}\` — \`renderPage\` and \`renderChrome\`.
43
+ 3. At least one \`.css\` file — any name, any number. Every \`.css\` at the
44
+ theme root is picked up automatically and concatenated in filename order.
45
+
46
+ \`.tsx\` and \`.jsx\` are refused: nothing transforms JSX here. Write
47
+ \`h(tag, attrs, ...children)\` calls instead, whichever extension you choose.
48
+
49
+ ## theme.config.*
50
+
51
+ \`export default defineTheme({...})\` from '@cogenta/theme-kit', with exactly
52
+ these fields:
53
+
54
+ - \`name\`: string
55
+ - \`version\`: exact semver, e.g. '1.0.0'
56
+ - \`engine\`: a semver RANGE, e.g. '^1.0.0' — never prose
57
+ - \`blocks\`: a semver RANGE too, e.g. '^1.0.0' — the block-vocabulary
58
+ version, NEVER a list of block names
59
+ - \`implements\`: string[] — the block \`_type\` names \`renderPage\` really
60
+ handles, e.g. ['hero','collectionList','prose']
61
+ - \`collections\`: string[] or '*'
62
+ - \`runtime\`: exactly one of 'static' | 'server' | 'edge'
63
+ - \`tokens\`: a STRING path, e.g. './theme.tokens.json' — never inline data
64
+
65
+ ## theme.render.*
66
+
67
+ A real ES module exporting two functions, both building markup with \`h()\`
68
+ from '@cogenta/theme-kit'. \`h(tag, attrs, ...children)\` returns an
69
+ HtmlElement tree; the pipeline calls \`serialize()\` on what you return, and
70
+ it understands only that tree or a plain string.
71
+
72
+ \`renderChrome(input)\` returns \`{ header, footer }\` as HTML **strings**.
73
+ \`input\` is \`{ site: {name,url,locales,defaultLocale}, locale, homeHref,
74
+ headerNav: [{label,href}], footerNav, brandingHtml, tagline?, social?,
75
+ footerNote?, headerAction? }\`.
76
+
77
+ \`renderPage(page, ctx, entries)\`:
78
+ - \`page\`: \`{ title, blocks: Array<{_key, _type, ...fields}> }\` — the real
79
+ saved contract B blocks.
80
+ - \`ctx\`: \`{ site, locale, url, t(key,vals), image(mediaId,opts),
81
+ link(target), content: {entry,byPath,list} }\`.
82
+ - \`entries\`: fetched \`collectionList\` results, keyed by \`block._key\`.
83
+
84
+ Design freedom is total, like a WordPress theme: fetch whatever you need
85
+ through \`ctx.content\`, place it anywhere, invent your own block types. A
86
+ page's \`blocks\` list is one available data source, never a required
87
+ structure. The shared vocabulary (hero, prose, mediaFigure, featureGrid, cta,
88
+ gallery, quote, faq, stats, logos, collectionList, embed, testimonial,
89
+ pricingTable, accordion, statCounter, logoStrip) exists so content already
90
+ composed with those still shows something — implementing all of them is never
91
+ required. But a block type you do not specifically style must still render
92
+ plainly rather than vanish: never drop content a page actually has.
93
+
94
+ There is no access to token VALUES from render code. \`ctx.theme.tokens\` does
95
+ not exist. Render code emits semantic HTML with class names; CSS does the
96
+ rest.
97
+
98
+ ## The CSS, and where colour actually comes from
99
+
100
+ This is where a design succeeds or fails. Markup structure alone renders as
101
+ unstyled text, every time.
102
+
103
+ Two stylesheets reach the page, in this order: the **site skin** first, then
104
+ **this theme's CSS**. Later wins at equal specificity, so a theme can define
105
+ its own design language and does not merely decorate the site's.
106
+
107
+ The site skin publishes these custom properties on \`:root\`:
108
+ \`--cogenta-color-bg/fg/accent/accent-fg/muted/muted-fg/border\`,
109
+ \`--cogenta-font-sans/serif/mono\`,
110
+ \`--cogenta-font-size-xs/sm/md/lg/xl/2xl/3xl\`, \`--cogenta-space-unit\`,
111
+ \`--cogenta-radius-sm/md/lg\`, \`--cogenta-shadow-sm/md\`.
112
+
113
+ **Own your palette.** When the request describes or shows a specific design,
114
+ that design's colours, type and spacing are the point — reproducing them is
115
+ the job. Define them as your own namespaced custom properties, derived from
116
+ what the request actually shows, and build every rule on those:
117
+
118
+ \`\`\`css
119
+ :root {
120
+ --t-bg: #0e1013;
121
+ --t-surface: #171a1f;
122
+ --t-fg: #f2f4f7;
123
+ --t-muted-fg: #98a1ad;
124
+ --t-accent: #3ddc84;
125
+ --t-accent-fg: #06210f;
126
+ --t-border: #262b33;
127
+ --t-radius: 14px;
128
+ --t-display: "Fraunces", Georgia, serif;
129
+ --t-body: "Inter", system-ui, sans-serif;
130
+ --t-step: 8px;
131
+ }
132
+ \`\`\`
133
+
134
+ Prefix them with something short and specific to the theme. Do **not**
135
+ redefine \`--cogenta-*\` at \`:root\`: those are the operator's own colour
136
+ controls in the Appearance screen, and overwriting them silently disables
137
+ that feature. When a value should follow the site's brand instead of the
138
+ design, read the site variable directly, or use it as the fallback:
139
+ \`color: var(--cogenta-color-accent, var(--t-accent));\`.
140
+
141
+ Literal colours are allowed and expected in a theme's own stylesheet.
142
+ **Gradients are not** — flat, structured surfaces only, no
143
+ \`linear-gradient\`/\`radial-gradient\` anywhere. Use flat fills, borders and
144
+ spacing to build hierarchy.
145
+
146
+ Google Fonts may be pulled with an \`@import\` at the very top of a CSS file;
147
+ always give a real fallback stack.
148
+
149
+ ## Light and dark
150
+
151
+ Themes are expected to work in both. The site stamps \`data-theme="dark"\` or
152
+ \`data-theme="light"\` on the root element when a visitor chooses explicitly,
153
+ and stamps nothing on the default "system" setting — where only
154
+ \`prefers-color-scheme\` separates them. Define the complete palette on bare
155
+ \`:root\`, then redefine only the tokens in two more blocks:
156
+
157
+ \`\`\`css
158
+ @media (prefers-color-scheme: dark) {
159
+ :root:not([data-theme="light"]) { --t-bg: #0e1013; --t-fg: #f2f4f7; }
160
+ }
161
+ :root[data-theme="dark"] { --t-bg: #0e1013; --t-fg: #f2f4f7; }
162
+ :root[data-theme="light"] { --t-bg: #ffffff; --t-fg: #14171c; }
163
+ \`\`\`
164
+
165
+ Never give a colour its only definition inside a media or \`[data-theme]\`
166
+ block — it then never applies in the unstamped state, and the page renders
167
+ one theme's text on the other theme's background.
168
+
169
+ A theme that deliberately commits to a single look may skip those blocks, but
170
+ must still paint background and text colours explicitly.
171
+
172
+ ## Two things the page always has
173
+
174
+ The host page template injects both on every page, whatever the theme, so
175
+ every theme must account for them:
176
+
177
+ 1. **A "Skip to content" link**, \`.cg-skip-link\`, placed before your header
178
+ markup (WCAG 2.4.1). Style it off-screen until focus — never
179
+ \`display: none\`, which removes it from the tab order and defeats its
180
+ purpose. Without a rule for it, it renders as a plain visible link at the
181
+ very top of every page:
182
+
183
+ \`\`\`css
184
+ .cg-skip-link { position: absolute; left: 1rem; top: -4rem; z-index: 50;
185
+ padding: .6em 1.1em; background: var(--t-accent); color: var(--t-accent-fg);
186
+ border-radius: 999px; text-decoration: none; transition: top 160ms ease; }
187
+ .cg-skip-link:focus-visible { top: 1rem; }
188
+ \`\`\`
189
+
190
+ 2. **The light/dark toggle script.** The host injects the script; a theme only
191
+ ever places the button, via \`renderThemeToggle()\` from
192
+ '@cogenta/theme-kit', inside its own \`renderChrome\` markup. Never inject
193
+ the script yourself, and never write client JavaScript of your own —
194
+ themes are zero-JS apart from that one host-provided toggle.
195
+
196
+ ## A theme displays the site's content. It never contains content.
197
+
198
+ This is the rule that separates a theme from a mockup, and breaking it
199
+ produces something that looks finished and is unusable.
200
+
201
+ Everything a visitor reads — article titles, excerpts, dates, menu labels,
202
+ page copy — comes from the site's database at render time, through the page
203
+ you were handed and through \`ctx.content\`. A theme that hardcodes three
204
+ article cards in \`renderPage\` produces a site whose owner cannot edit those
205
+ articles from the admin, cannot translate them, cannot add a fourth, and
206
+ cannot delete the one that is wrong. It is not a shortcut; it is a site that
207
+ does not work.
208
+
209
+ Concretely, and without exception:
210
+
211
+ - **Never invent posts, titles, excerpts, author names, dates or prices.** If
212
+ a list should show articles, fetch them:
213
+ \`const posts = await ctx.content.list({ collection: 'article', limit: 6 })\`
214
+ and render what comes back — however many that is, including none.
215
+ - **Never write \`href="#"\`.** A link goes where the content says it goes:
216
+ \`ctx.link({ collection: entry.collection, id: entry.id })\` for an entry,
217
+ \`input.headerNav\`/\`input.footerNav\` in \`renderChrome\` for navigation.
218
+ A \`#\` is a dead link shipped to a real visitor.
219
+ - **Never hardcode display text.** Labels a theme itself owns ("Read more",
220
+ "Next") go through \`ctx.t('readMore', { default: 'Read more' })\`, so a
221
+ site in another language is not stuck with English baked into its layout.
222
+ - **An empty list renders as an empty state**, not as invented filler. A site
223
+ with no articles yet must show that honestly.
224
+
225
+ A design shows three cards; the theme's job is a card *component* and a grid
226
+ that renders however many entries exist. Design the container, never the
227
+ contents.
228
+
229
+ **The preview you get back is sample data.** \`theme.preview_sandbox\` renders
230
+ your theme against a fixed demo page so you can see structure and styling —
231
+ those titles and excerpts are scaffolding for the preview, not content to
232
+ copy into your code. If you find yourself typing a title you saw in a
233
+ preview, that is the mistake this section exists to prevent.
234
+
235
+ ## Images
236
+
237
+ A photograph the request calls for is a real \`url()\` or \`<img>\`, resolved
238
+ through \`ctx.image(mediaId)\` for uploaded media or pointing at a real asset
239
+ path. A flat colour block standing in for a photo the brief asked for is a
240
+ failure to deliver the design, not a simplification.
241
+
242
+ ## What "matching a design" means here
243
+
244
+ Colour is the easiest half and the least of it. When a reference is given,
245
+ reproduce, in this order of importance: the **layout skeleton** (how the page
246
+ divides into regions, what is full-bleed vs contained, the grid and column
247
+ counts), the **spacing rhythm and density**, the **typographic scale and
248
+ pairing** (display vs body face, weights, letter-spacing, how large the
249
+ biggest thing actually is relative to body text), the **shape language**
250
+ (corner radius, borders, elevation, how flat or how carved), and only then
251
+ the palette. A theme with the right palette and the wrong skeleton does not
252
+ resemble the reference; the reverse mostly does.
253
+ `.trim();
254
+ //# sourceMappingURL=theme-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-spec.js","sourceRoot":"","sources":["../../src/theme-creator/theme-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+N1C,CAAC,IAAI,EAAE,CAAA"}
@@ -30,6 +30,7 @@ export interface WriteSandboxFileToolOptions {
30
30
  readonly content: string;
31
31
  }) => Promise<{
32
32
  readonly path: string;
33
+ readonly warnings?: readonly string[];
33
34
  }>;
34
35
  readonly deleteFile: (input: {
35
36
  readonly sandboxId: string;
@@ -45,6 +46,7 @@ export type WriteSandboxFileInput = z.infer<typeof WriteSandboxFileInputSchema>;
45
46
  declare const WriteSandboxFileOutputSchema: z.ZodObject<{
46
47
  sandboxId: z.ZodString;
47
48
  path: z.ZodString;
49
+ warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
48
50
  }, z.core.$strip>;
49
51
  export type WriteSandboxFileOutput = z.infer<typeof WriteSandboxFileOutputSchema>;
50
52
  export declare function createWriteSandboxFileTool(options: WriteSandboxFileToolOptions): ToolDefinition<WriteSandboxFileInput, WriteSandboxFileOutput>;
@@ -1 +1 @@
1
- {"version":3,"file":"write-sandbox-file-tool.d.ts","sourceRoot":"","sources":["../../src/theme-creator/write-sandbox-file-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KACzB,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KACtB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpB;AAED,QAAA,MAAM,2BAA2B;;;;iBAM/B,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAE/E,QAAA,MAAM,4BAA4B;;;iBAAwD,CAAA;AAC1F,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEjF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,cAAc,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAsF/D"}
1
+ {"version":3,"file":"write-sandbox-file-tool.d.ts","sourceRoot":"","sources":["../../src/theme-creator/write-sandbox-file-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KACzB,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;IAC/E,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KACtB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpB;AAED,QAAA,MAAM,2BAA2B;;;;iBAM/B,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAE/E,QAAA,MAAM,4BAA4B;;;;iBAKhC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEjF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,cAAc,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CA4F/D"}
@@ -7,7 +7,12 @@ const WriteSandboxFileInputSchema = z.object({
7
7
  path: z.string().min(1),
8
8
  content: z.string(),
9
9
  });
10
- const WriteSandboxFileOutputSchema = z.object({ sandboxId: z.string(), path: z.string() });
10
+ const WriteSandboxFileOutputSchema = z.object({
11
+ sandboxId: z.string(),
12
+ path: z.string(),
13
+ /** Present when the file was accepted but contains something worth fixing — a dead `href="#"`, say. Read them: a warning here is a real defect that simply was not worth refusing the write over. */
14
+ warnings: z.array(z.string()).optional(),
15
+ });
11
16
  export function createWriteSandboxFileTool(options) {
12
17
  return defineTool({
13
18
  name: 'theme.write_sandbox_file',
@@ -88,7 +93,13 @@ This example is deliberately generic (it renders whatever block types a real pag
88
93
  path: input.path,
89
94
  content: input.content,
90
95
  });
91
- return { sandboxId: input.sandboxId, path: result.path };
96
+ return {
97
+ sandboxId: input.sandboxId,
98
+ path: result.path,
99
+ ...(result.warnings === undefined || result.warnings.length === 0
100
+ ? {}
101
+ : { warnings: [...result.warnings] }),
102
+ };
92
103
  },
93
104
  async revert(receipt) {
94
105
  await options.deleteFile({ sandboxId: receipt.sandboxId, path: receipt.path });
@@ -1 +1 @@
1
- {"version":3,"file":"write-sandbox-file-tool.js","sourceRoot":"","sources":["../../src/theme-creator/write-sandbox-file-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAsCvB,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,4HAA4H;IAC5H,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,2MAA2M;IAC3M,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAA;AAGF,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAG1F,MAAM,UAAU,0BAA0B,CACxC,OAAoC;IAEpC,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wmBA+DulB;QACpmB,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,4BAA4B;QACpC,WAAW,EAAE,CAAC,qBAAqB,CAAC;QACpC,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,KAAK;QACX,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACrC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAA;YACF,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;QAC1D,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,OAAO;YAClB,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAChF,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"write-sandbox-file-tool.js","sourceRoot":"","sources":["../../src/theme-creator/write-sandbox-file-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAsCvB,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,4HAA4H;IAC5H,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,2MAA2M;IAC3M,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAA;AAGF,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,qMAAqM;IACrM,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAA;AAGF,MAAM,UAAU,0BAA0B,CACxC,OAAoC;IAEpC,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wmBA+DulB;QACpmB,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,4BAA4B;QACpC,WAAW,EAAE,CAAC,qBAAqB,CAAC;QACpC,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,KAAK;QACX,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACrC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAA;YACF,OAAO;gBACL,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAC/D,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;aACxC,CAAA;QACH,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,OAAO;YAClB,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAChF,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cogenta/agents-builtin",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "The built-in agents shipped with Cogenta — Security, SEO, Content, Performance.",
5
5
  "license": "MPL-2.0",
6
6
  "type": "module",
@@ -28,8 +28,8 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "zod": "^4.4.3",
31
- "@cogenta/agents": "0.6.0",
32
- "@cogenta/core": "0.8.0"
31
+ "@cogenta/core": "0.9.0",
32
+ "@cogenta/agents": "0.7.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "typescript": "^7.0.2",