@actuate-media/plugin-ai 0.0.11 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/LICENSE +21 -21
  2. package/dist/__tests__/content-generator.test.d.ts +2 -0
  3. package/dist/__tests__/content-generator.test.d.ts.map +1 -0
  4. package/dist/__tests__/content-generator.test.js +200 -0
  5. package/dist/__tests__/content-generator.test.js.map +1 -0
  6. package/dist/__tests__/index.test.js.map +1 -1
  7. package/dist/admin/AIScorePanel.d.ts +1 -1
  8. package/dist/admin/AIScorePanel.d.ts.map +1 -1
  9. package/dist/admin/AIScorePanel.js +34 -17
  10. package/dist/admin/AIScorePanel.js.map +1 -1
  11. package/dist/admin/BrandVoiceSettings.d.ts +2 -2
  12. package/dist/admin/BrandVoiceSettings.d.ts.map +1 -1
  13. package/dist/admin/BrandVoiceSettings.js +123 -34
  14. package/dist/admin/BrandVoiceSettings.js.map +1 -1
  15. package/dist/admin/ContentScoreDashboard.d.ts +1 -1
  16. package/dist/admin/ContentScoreDashboard.d.ts.map +1 -1
  17. package/dist/admin/ContentScoreDashboard.js +50 -16
  18. package/dist/admin/ContentScoreDashboard.js.map +1 -1
  19. package/dist/admin/WritingAssistantToolbar.d.ts.map +1 -1
  20. package/dist/admin/WritingAssistantToolbar.js +21 -21
  21. package/dist/admin/WritingAssistantToolbar.js.map +1 -1
  22. package/dist/brand/consistency-checker.d.ts +3 -3
  23. package/dist/brand/consistency-checker.d.ts.map +1 -1
  24. package/dist/brand/consistency-checker.js +7 -7
  25. package/dist/brand/consistency-checker.js.map +1 -1
  26. package/dist/brand/profile-builder.d.ts +2 -2
  27. package/dist/brand/profile-builder.d.ts.map +1 -1
  28. package/dist/brand/profile-builder.js +20 -19
  29. package/dist/brand/profile-builder.js.map +1 -1
  30. package/dist/brand/voice-profile.d.ts +4 -4
  31. package/dist/brand/voice-profile.d.ts.map +1 -1
  32. package/dist/collections.d.ts +1 -1
  33. package/dist/collections.d.ts.map +1 -1
  34. package/dist/collections.js.map +1 -1
  35. package/dist/fields.d.ts +1 -1
  36. package/dist/fields.d.ts.map +1 -1
  37. package/dist/fields.js.map +1 -1
  38. package/dist/hooks.d.ts.map +1 -1
  39. package/dist/hooks.js +16 -14
  40. package/dist/hooks.js.map +1 -1
  41. package/dist/index.d.ts +33 -29
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +36 -34
  44. package/dist/index.js.map +1 -1
  45. package/dist/links/smart-links.d.ts.map +1 -1
  46. package/dist/links/smart-links.js +2 -2
  47. package/dist/links/smart-links.js.map +1 -1
  48. package/dist/media/alt-text-generator.d.ts +2 -2
  49. package/dist/media/alt-text-generator.d.ts.map +1 -1
  50. package/dist/media/alt-text-generator.js +14 -9
  51. package/dist/media/alt-text-generator.js.map +1 -1
  52. package/dist/media/auto-tagger.d.ts +1 -1
  53. package/dist/media/auto-tagger.d.ts.map +1 -1
  54. package/dist/media/auto-tagger.js +8 -5
  55. package/dist/media/auto-tagger.js.map +1 -1
  56. package/dist/page-builder/generate.d.ts +23 -0
  57. package/dist/page-builder/generate.d.ts.map +1 -0
  58. package/dist/page-builder/generate.js +422 -0
  59. package/dist/page-builder/generate.js.map +1 -0
  60. package/dist/page-builder/index.d.ts +3 -0
  61. package/dist/page-builder/index.d.ts.map +1 -0
  62. package/dist/page-builder/index.js +2 -0
  63. package/dist/page-builder/index.js.map +1 -0
  64. package/dist/providers/anthropic.d.ts +1 -1
  65. package/dist/providers/anthropic.d.ts.map +1 -1
  66. package/dist/providers/anthropic.js +32 -32
  67. package/dist/providers/anthropic.js.map +1 -1
  68. package/dist/providers/index.d.ts +1 -1
  69. package/dist/providers/index.d.ts.map +1 -1
  70. package/dist/providers/index.js +6 -6
  71. package/dist/providers/index.js.map +1 -1
  72. package/dist/providers/openai.d.ts +1 -1
  73. package/dist/providers/openai.d.ts.map +1 -1
  74. package/dist/providers/openai.js +24 -24
  75. package/dist/providers/openai.js.map +1 -1
  76. package/dist/scoring/accessibility.d.ts +1 -1
  77. package/dist/scoring/accessibility.d.ts.map +1 -1
  78. package/dist/scoring/accessibility.js +22 -22
  79. package/dist/scoring/accessibility.js.map +1 -1
  80. package/dist/scoring/brand-alignment.d.ts +1 -1
  81. package/dist/scoring/brand-alignment.d.ts.map +1 -1
  82. package/dist/scoring/brand-alignment.js +14 -12
  83. package/dist/scoring/brand-alignment.js.map +1 -1
  84. package/dist/scoring/composite.d.ts +1 -1
  85. package/dist/scoring/composite.d.ts.map +1 -1
  86. package/dist/scoring/composite.js +5 -5
  87. package/dist/scoring/composite.js.map +1 -1
  88. package/dist/scoring/freshness.d.ts +1 -1
  89. package/dist/scoring/freshness.d.ts.map +1 -1
  90. package/dist/scoring/freshness.js +5 -7
  91. package/dist/scoring/freshness.js.map +1 -1
  92. package/dist/scoring/readability.d.ts +1 -1
  93. package/dist/scoring/readability.d.ts.map +1 -1
  94. package/dist/scoring/readability.js +8 -8
  95. package/dist/scoring/readability.js.map +1 -1
  96. package/dist/scoring/seo-score.d.ts.map +1 -1
  97. package/dist/scoring/seo-score.js +82 -16
  98. package/dist/scoring/seo-score.js.map +1 -1
  99. package/dist/search/clustering.d.ts +1 -1
  100. package/dist/search/clustering.d.ts.map +1 -1
  101. package/dist/search/clustering.js +7 -9
  102. package/dist/search/clustering.js.map +1 -1
  103. package/dist/search/embeddings.d.ts +1 -1
  104. package/dist/search/embeddings.d.ts.map +1 -1
  105. package/dist/search/embeddings.js +3 -3
  106. package/dist/search/embeddings.js.map +1 -1
  107. package/dist/search/semantic-search.d.ts +1 -1
  108. package/dist/search/semantic-search.d.ts.map +1 -1
  109. package/dist/search/semantic-search.js +5 -5
  110. package/dist/search/semantic-search.js.map +1 -1
  111. package/dist/translation/translator.d.ts +2 -2
  112. package/dist/translation/translator.d.ts.map +1 -1
  113. package/dist/translation/translator.js +8 -8
  114. package/dist/translation/translator.js.map +1 -1
  115. package/dist/writing/assistant.d.ts +3 -3
  116. package/dist/writing/assistant.d.ts.map +1 -1
  117. package/dist/writing/assistant.js +19 -16
  118. package/dist/writing/assistant.js.map +1 -1
  119. package/dist/writing/content-generator.d.ts +107 -0
  120. package/dist/writing/content-generator.d.ts.map +1 -0
  121. package/dist/writing/content-generator.js +273 -0
  122. package/dist/writing/content-generator.js.map +1 -0
  123. package/dist/writing/inline-suggestions.d.ts +2 -2
  124. package/dist/writing/inline-suggestions.d.ts.map +1 -1
  125. package/dist/writing/inline-suggestions.js +8 -5
  126. package/dist/writing/inline-suggestions.js.map +1 -1
  127. package/dist/writing/meta-generator.d.ts +2 -2
  128. package/dist/writing/meta-generator.d.ts.map +1 -1
  129. package/dist/writing/meta-generator.js +21 -9
  130. package/dist/writing/meta-generator.js.map +1 -1
  131. package/package.json +3 -2
@@ -1,4 +1,4 @@
1
- import { requireAIProvider } from "../providers/index.js";
1
+ import { requireAIProvider } from '../providers/index.js';
2
2
  /** Returns inline writing suggestions for the given text at the cursor position. */
3
3
  export async function getSuggestions(text, cursorPosition, context) {
4
4
  const ai = context?.provider ?? requireAIProvider();
@@ -15,18 +15,21 @@ Return a JSON array of objects with:
15
15
  - "type": one of "completion", "improvement", or "alternative"
16
16
  - "confidence": a number between 0 and 1`;
17
17
  const result = await ai.generateText(prompt, {
18
- systemPrompt: "You are a writing assistant providing inline suggestions. Return valid JSON only, no markdown.",
18
+ systemPrompt: 'You are a writing assistant providing inline suggestions. Return valid JSON only, no markdown.',
19
19
  maxTokens: 512,
20
20
  temperature: 0.6,
21
21
  });
22
22
  try {
23
- const cleaned = result.text.replace(/```json?\n?/g, "").replace(/```/g, "").trim();
23
+ const cleaned = result.text
24
+ .replace(/```json?\n?/g, '')
25
+ .replace(/```/g, '')
26
+ .trim();
24
27
  const parsed = JSON.parse(cleaned);
25
28
  return parsed.map((s) => ({
26
29
  text: s.text,
27
- type: (["completion", "improvement", "alternative"].includes(s.type)
30
+ type: (['completion', 'improvement', 'alternative'].includes(s.type)
28
31
  ? s.type
29
- : "completion"),
32
+ : 'completion'),
30
33
  confidence: Math.max(0, Math.min(1, s.confidence ?? 0.5)),
31
34
  range: { start: cursorPosition, end: cursorPosition },
32
35
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"inline-suggestions.js","sourceRoot":"","sources":["../../src/writing/inline-suggestions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAe1D,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,cAAsB,EACtB,OAA2B;IAE3B,MAAM,EAAE,GAAG,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,CAAC;IAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,GAAG,GAAG,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG;;uBAEM,MAAM;;sBAEP,KAAK;;;;;yCAKc,CAAC;IAExC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE;QAC3C,YAAY,EAAE,gGAAgG;QAC9G,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAI/B,CAAC;QAEH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClE,CAAC,CAAC,CAAC,CAAC,IAAI;gBACR,CAAC,CAAC,YAAY,CAA6B;YAC7C,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;YACzD,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE;SACtD,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"inline-suggestions.js","sourceRoot":"","sources":["../../src/writing/inline-suggestions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAezD,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,cAAsB,EACtB,OAA2B;IAE3B,MAAM,EAAE,GAAG,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,CAAA;IAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,EAAE,cAAc,CAAC,CAAA;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,GAAG,GAAG,CAAC,CAAA;IAE9D,MAAM,MAAM,GAAG;;uBAEM,MAAM;;sBAEP,KAAK;;;;;yCAKc,CAAA;IAEvC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE;QAC3C,YAAY,EACV,gGAAgG;QAClG,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI;aACxB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;aAC3B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;aACnB,IAAI,EAAE,CAAA;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAI/B,CAAA;QAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClE,CAAC,CAAC,CAAC,CAAC,IAAI;gBACR,CAAC,CAAC,YAAY,CAA6B;YAC7C,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;YACzD,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE;SACtD,CAAC,CAAC,CAAA;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { AIProvider } from "../providers/index.js";
1
+ import type { AIProvider } from '../providers/index.js';
2
2
  export interface TitleOptions {
3
3
  count?: number;
4
- style?: "informative" | "engaging" | "seo-optimized";
4
+ style?: 'informative' | 'engaging' | 'seo-optimized';
5
5
  provider?: AIProvider;
6
6
  }
7
7
  /** Generates an SEO-friendly meta description from content. */
@@ -1 +1 @@
1
- {"version":3,"file":"meta-generator.d.ts","sourceRoot":"","sources":["../../src/writing/meta-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,eAAe,CAAC;IACrD,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,+DAA+D;AAC/D,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAY,EACvB,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,gDAAgD;AAChD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAY,EACvB,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,+DAA+D;AAC/D,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBnB"}
1
+ {"version":3,"file":"meta-generator.d.ts","sourceRoot":"","sources":["../../src/writing/meta-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,eAAe,CAAA;IACpD,QAAQ,CAAC,EAAE,UAAU,CAAA;CACtB;AAED,+DAA+D;AAC/D,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAY,EACvB,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,gDAAgD;AAChD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAY,EACvB,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,+DAA+D;AAC/D,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA4B9F"}
@@ -1,41 +1,53 @@
1
- import { requireAIProvider } from "../providers/index.js";
1
+ import { requireAIProvider } from '../providers/index.js';
2
2
  /** Generates an SEO-friendly meta description from content. */
3
3
  export async function generateMetaDescription(content, maxLength = 155, provider) {
4
4
  const ai = provider ?? requireAIProvider();
5
5
  const result = await ai.generateText(`Write a compelling meta description (maximum ${maxLength} characters) for the following content. The description should be informative, include relevant keywords naturally, and encourage clicks from search results.\n\nContent:\n${content.slice(0, 3000)}`, {
6
- systemPrompt: "You are an SEO specialist. Write only the meta description text, no quotes or labels. Keep it under the specified character limit.",
6
+ systemPrompt: 'You are an SEO specialist. Write only the meta description text, no quotes or labels. Keep it under the specified character limit.',
7
7
  maxTokens: 256,
8
8
  temperature: 0.5,
9
9
  });
10
- return result.text.replace(/^["']|["']$/g, "").trim().slice(0, maxLength);
10
+ return result.text
11
+ .replace(/^["']|["']$/g, '')
12
+ .trim()
13
+ .slice(0, maxLength);
11
14
  }
12
15
  /** Generates a concise excerpt from content. */
13
16
  export async function generateExcerpt(content, maxLength = 300, provider) {
14
17
  const ai = provider ?? requireAIProvider();
15
18
  const result = await ai.generateText(`Write a concise excerpt (maximum ${maxLength} characters) that summarizes the following content. It should capture the essence of the piece and entice readers.\n\nContent:\n${content.slice(0, 3000)}`, {
16
- systemPrompt: "You are an editor. Write only the excerpt text, no quotes or labels.",
19
+ systemPrompt: 'You are an editor. Write only the excerpt text, no quotes or labels.',
17
20
  maxTokens: 256,
18
21
  temperature: 0.4,
19
22
  });
20
- return result.text.replace(/^["']|["']$/g, "").trim().slice(0, maxLength);
23
+ return result.text
24
+ .replace(/^["']|["']$/g, '')
25
+ .trim()
26
+ .slice(0, maxLength);
21
27
  }
22
28
  /** Generates title options from content in the given style. */
23
29
  export async function generateTitle(content, options) {
24
30
  const ai = options?.provider ?? requireAIProvider();
25
31
  const count = options?.count ?? 5;
26
- const style = options?.style ?? "informative";
32
+ const style = options?.style ?? 'informative';
27
33
  const result = await ai.generateText(`Generate ${count} ${style} title options for the following content. Return them as a JSON array of strings.\n\nContent:\n${content.slice(0, 3000)}`, {
28
- systemPrompt: "You are a headline writer. Return valid JSON only: an array of title strings. No markdown formatting.",
34
+ systemPrompt: 'You are a headline writer. Return valid JSON only: an array of title strings. No markdown formatting.',
29
35
  maxTokens: 512,
30
36
  temperature: 0.7,
31
37
  });
32
38
  try {
33
- const cleaned = result.text.replace(/```json?\n?/g, "").replace(/```/g, "").trim();
39
+ const cleaned = result.text
40
+ .replace(/```json?\n?/g, '')
41
+ .replace(/```/g, '')
42
+ .trim();
34
43
  const titles = JSON.parse(cleaned);
35
44
  if (Array.isArray(titles))
36
45
  return titles.map(String);
37
46
  }
38
47
  catch { }
39
- return result.text.split("\n").filter((line) => line.trim().length > 0).slice(0, count);
48
+ return result.text
49
+ .split('\n')
50
+ .filter((line) => line.trim().length > 0)
51
+ .slice(0, count);
40
52
  }
41
53
  //# sourceMappingURL=meta-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta-generator.js","sourceRoot":"","sources":["../../src/writing/meta-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAQ1D,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAe,EACf,YAAoB,GAAG,EACvB,QAAqB;IAErB,MAAM,EAAE,GAAG,QAAQ,IAAI,iBAAiB,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAClC,gDAAgD,SAAS,8KAA8K,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAC/P;QACE,YAAY,EAAE,oIAAoI;QAClJ,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CACF,CAAC;IAEF,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5E,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,YAAoB,GAAG,EACvB,QAAqB;IAErB,MAAM,EAAE,GAAG,QAAQ,IAAI,iBAAiB,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAClC,oCAAoC,SAAS,mIAAmI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EACxM;QACE,YAAY,EAAE,sEAAsE;QACpF,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CACF,CAAC;IAEF,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5E,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,OAAsB;IAEtB,MAAM,EAAE,GAAG,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,aAAa,CAAC;IAE9C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAClC,YAAY,KAAK,IAAI,KAAK,kGAAkG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EACpJ;QACE,YAAY,EAAE,uGAAuG;QACrH,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CACF,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1F,CAAC"}
1
+ {"version":3,"file":"meta-generator.js","sourceRoot":"","sources":["../../src/writing/meta-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAQzD,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAe,EACf,YAAoB,GAAG,EACvB,QAAqB;IAErB,MAAM,EAAE,GAAG,QAAQ,IAAI,iBAAiB,EAAE,CAAA;IAE1C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAClC,gDAAgD,SAAS,8KAA8K,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAC/P;QACE,YAAY,EACV,oIAAoI;QACtI,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CACF,CAAA;IAED,OAAO,MAAM,CAAC,IAAI;SACf,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;AACxB,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,YAAoB,GAAG,EACvB,QAAqB;IAErB,MAAM,EAAE,GAAG,QAAQ,IAAI,iBAAiB,EAAE,CAAA;IAE1C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAClC,oCAAoC,SAAS,mIAAmI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EACxM;QACE,YAAY,EAAE,sEAAsE;QACpF,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CACF,CAAA;IAED,OAAO,MAAM,CAAC,IAAI;SACf,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;AACxB,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,OAAsB;IACzE,MAAM,EAAE,GAAG,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,CAAA;IACnD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,aAAa,CAAA;IAE7C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAClC,YAAY,KAAK,IAAI,KAAK,kGAAkG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EACpJ;QACE,YAAY,EACV,uGAAuG;QACzG,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CACF,CAAA;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI;aACxB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;aAC3B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;aACnB,IAAI,EAAE,CAAA;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAClC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACtD,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,OAAO,MAAM,CAAC,IAAI;SACf,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACxC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actuate-media/plugin-ai",
3
- "version": "0.0.11",
3
+ "version": "0.2.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/actuatecms/actuatecms.git",
@@ -25,7 +25,8 @@
25
25
  "devDependencies": {
26
26
  "@types/react": "^19.0.0",
27
27
  "typescript": "^5.7.0",
28
- "vitest": "^3.0.0"
28
+ "vitest": "^3.0.0",
29
+ "@actuate-media/cms-core": "0.17.0"
29
30
  },
30
31
  "peerDependencies": {
31
32
  "@actuate-media/cms-core": ">=0.1.0",