@aglyn/plugins-ai 1.0.0-beta.239 → 1.0.0-beta.241

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 (99) hide show
  1. package/package.json +17 -17
  2. package/src/lib/components/ai-job-links.d.ts +17 -0
  3. package/src/lib/components/ai-job-links.js +63 -0
  4. package/src/lib/components/ai-job-links.js.map +1 -1
  5. package/src/lib/components/ai-job-plan.component.js +8 -1
  6. package/src/lib/components/ai-job-plan.component.js.map +1 -1
  7. package/src/lib/components/ai-job-requests.d.ts +5 -0
  8. package/src/lib/components/ai-job-requests.js +4 -2
  9. package/src/lib/components/ai-job-requests.js.map +1 -1
  10. package/src/lib/components/ai-site-build-page.component.js +7 -1
  11. package/src/lib/components/ai-site-build-page.component.js.map +1 -1
  12. package/src/lib/components/ai-store-finish-card.component.d.ts +28 -0
  13. package/src/lib/components/ai-store-finish-card.component.js +116 -0
  14. package/src/lib/components/ai-store-finish-card.component.js.map +1 -0
  15. package/src/lib/components/assist-build-card.component.js +12 -1
  16. package/src/lib/components/assist-build-card.component.js.map +1 -1
  17. package/src/lib/components/assist-panel.component.js +14 -2
  18. package/src/lib/components/assist-panel.component.js.map +1 -1
  19. package/src/lib/jobs/ai-job-build-step.d.ts +45 -1
  20. package/src/lib/jobs/ai-job-build-step.js +283 -7
  21. package/src/lib/jobs/ai-job-build-step.js.map +1 -1
  22. package/src/lib/jobs/ai-job-drafts.d.ts +9 -1
  23. package/src/lib/jobs/ai-job-drafts.js +4 -1
  24. package/src/lib/jobs/ai-job-drafts.js.map +1 -1
  25. package/src/lib/jobs/ai-job-layout-language.d.ts +3 -0
  26. package/src/lib/jobs/ai-job-layout-language.js +11 -4
  27. package/src/lib/jobs/ai-job-layout-language.js.map +1 -1
  28. package/src/lib/jobs/ai-job-layout-step.js +3 -1
  29. package/src/lib/jobs/ai-job-layout-step.js.map +1 -1
  30. package/src/lib/jobs/ai-job-page-language.d.ts +2 -1
  31. package/src/lib/jobs/ai-job-page-language.js +26 -9
  32. package/src/lib/jobs/ai-job-page-language.js.map +1 -1
  33. package/src/lib/jobs/ai-job-page-sections.d.ts +11 -0
  34. package/src/lib/jobs/ai-job-page-sections.js +53 -5
  35. package/src/lib/jobs/ai-job-page-sections.js.map +1 -1
  36. package/src/lib/jobs/ai-job-page-step.d.ts +2 -1
  37. package/src/lib/jobs/ai-job-page-step.js +51 -10
  38. package/src/lib/jobs/ai-job-page-step.js.map +1 -1
  39. package/src/lib/jobs/ai-job-plan-step.d.ts +12 -0
  40. package/src/lib/jobs/ai-job-plan-step.js +41 -7
  41. package/src/lib/jobs/ai-job-plan-step.js.map +1 -1
  42. package/src/lib/jobs/ai-job-site-datasets.d.ts +89 -2
  43. package/src/lib/jobs/ai-job-site-datasets.js +239 -15
  44. package/src/lib/jobs/ai-job-site-datasets.js.map +1 -1
  45. package/src/lib/jobs/ai-job-site-step.d.ts +18 -2
  46. package/src/lib/jobs/ai-job-site-step.js +109 -22
  47. package/src/lib/jobs/ai-job-site-step.js.map +1 -1
  48. package/src/lib/jobs/ai-job-site-store-pages.d.ts +75 -0
  49. package/src/lib/jobs/ai-job-site-store-pages.js +195 -0
  50. package/src/lib/jobs/ai-job-site-store-pages.js.map +1 -0
  51. package/src/lib/jobs/ai-job-store-links-layout.d.ts +71 -0
  52. package/src/lib/jobs/ai-job-store-links-layout.js +95 -0
  53. package/src/lib/jobs/ai-job-store-links-layout.js.map +1 -0
  54. package/src/lib/jobs/ai-layout-stock-photos.d.ts +69 -3
  55. package/src/lib/jobs/ai-layout-stock-photos.js +603 -42
  56. package/src/lib/jobs/ai-layout-stock-photos.js.map +1 -1
  57. package/src/lib/jobs/ai-site-publish.d.ts +18 -0
  58. package/src/lib/jobs/ai-site-publish.js +76 -15
  59. package/src/lib/jobs/ai-site-publish.js.map +1 -1
  60. package/src/lib/jobs/fixtures/ai-stock-photo-ember-oak-hits.d.ts +43 -0
  61. package/src/lib/jobs/fixtures/ai-stock-photo-ember-oak-hits.js +61 -0
  62. package/src/lib/jobs/fixtures/ai-stock-photo-ember-oak-hits.js.map +1 -0
  63. package/src/lib/layout-language/ai-layout-compiler.js +25 -2
  64. package/src/lib/layout-language/ai-layout-compiler.js.map +1 -1
  65. package/src/lib/layout-language/ai-layout-frame.d.ts +10 -0
  66. package/src/lib/layout-language/ai-layout-frame.js +58 -4
  67. package/src/lib/layout-language/ai-layout-frame.js.map +1 -1
  68. package/src/lib/layout-language/ai-layout-listings.d.ts +6 -0
  69. package/src/lib/layout-language/ai-layout-listings.js +3 -0
  70. package/src/lib/layout-language/ai-layout-listings.js.map +1 -1
  71. package/src/lib/layout-language/ai-layout-pictures.js +12 -4
  72. package/src/lib/layout-language/ai-layout-pictures.js.map +1 -1
  73. package/src/lib/model/ai-build-job.d.ts +2 -0
  74. package/src/lib/model/ai-build-job.js +23 -3
  75. package/src/lib/model/ai-build-job.js.map +1 -1
  76. package/src/lib/model/ai-build-plan.d.ts +7 -0
  77. package/src/lib/model/ai-build-plan.js.map +1 -1
  78. package/src/lib/model/ai-build-progress.js +3 -1
  79. package/src/lib/model/ai-build-progress.js.map +1 -1
  80. package/src/lib/model/ai-build-store-pages.d.ts +133 -0
  81. package/src/lib/model/ai-build-store-pages.js +209 -0
  82. package/src/lib/model/ai-build-store-pages.js.map +1 -0
  83. package/src/lib/model/ai-layout-store-links.d.ts +64 -0
  84. package/src/lib/model/ai-layout-store-links.js +165 -0
  85. package/src/lib/model/ai-layout-store-links.js.map +1 -0
  86. package/src/lib/model/ai-site-inventory.d.ts +5 -0
  87. package/src/lib/model/ai-site-inventory.js.map +1 -1
  88. package/src/lib/model/ai-site-store-pages.d.ts +192 -0
  89. package/src/lib/model/ai-site-store-pages.js +383 -0
  90. package/src/lib/model/ai-site-store-pages.js.map +1 -0
  91. package/src/lib/runtime/ai-doctrine-validators.d.ts +44 -0
  92. package/src/lib/runtime/ai-doctrine-validators.js +177 -0
  93. package/src/lib/runtime/ai-doctrine-validators.js.map +1 -1
  94. package/src/lib/runtime/ai-doctrine.js +3 -2
  95. package/src/lib/runtime/ai-doctrine.js.map +1 -1
  96. package/src/lib/runtime/site-inventory.js +8 -3
  97. package/src/lib/runtime/site-inventory.js.map +1 -1
  98. package/src/lib/testing/stand-in-dataset-index.js +8 -4
  99. package/src/lib/testing/stand-in-dataset-index.js.map +1 -1
@@ -1,3 +1,4 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
1
2
  /**
2
3
  * @license
3
4
  * Copyright 2026 Aglyn LLC
@@ -22,7 +23,8 @@ import { unregisterPluginServices } from "@aglyn/aglyn/plugin-manager/plugin-ser
22
23
  * plugin may not load the data plugin that registers the real one. It answers
23
24
  * in the shape the data plugin's `dataset-record-index.ts` documents: live
24
25
  * datasets only, narrowed to a site to those shared with it, each with its
25
- * fields (`{ id, name, type }`, in the dataset page's order) and its
26
+ * fields (`{ id, name, type }` and a `customType` where one rides it, in
27
+ * the dataset page's order) and its
26
28
  * `visibleTo`. What the data plugin itself answers is held in its own spec.
27
29
  */ const OWNER = 'data';
28
30
  const str = (value)=>typeof value === 'string' ? value.trim() : '';
@@ -63,12 +65,14 @@ function record(id, data) {
63
65
  facts: {
64
66
  fields: model.order.map((fieldId)=>{
65
67
  var _ref;
66
- var _model_fields_fieldId, _model_fields_fieldId1;
67
- return {
68
+ var _model_fields_fieldId, _model_fields_fieldId1, _model_fields_fieldId2, _model_fields_fieldId3;
69
+ return _extends({
68
70
  id: fieldId,
69
71
  name: str((_model_fields_fieldId = model.fields[fieldId]) == null ? void 0 : _model_fields_fieldId.name) || fieldId,
70
72
  type: String((_ref = (_model_fields_fieldId1 = model.fields[fieldId]) == null ? void 0 : _model_fields_fieldId1.type) != null ? _ref : 'text')
71
- };
73
+ }, str((_model_fields_fieldId2 = model.fields[fieldId]) == null ? void 0 : _model_fields_fieldId2.customType) ? {
74
+ customType: str((_model_fields_fieldId3 = model.fields[fieldId]) == null ? void 0 : _model_fields_fieldId3.customType)
75
+ } : {});
72
76
  }),
73
77
  visibleTo: Array.isArray(data['visibleTo']) ? data['visibleTo'] : []
74
78
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/testing/stand-in-dataset-index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { visibleToHost } from '@aglyn/aglyn/app-utils/scope-tokens'\nimport {\n registerPluginRecordIndex,\n type PluginIndexedRecord,\n} from '@aglyn/aglyn/plugin-manager/plugin-record-index'\nimport { unregisterPluginServices } from '@aglyn/aglyn/plugin-manager/plugin-services'\n\n/**\n * The `dataset` index the plugin that keeps the workspace's datasets\n * publishes (AGL-3080), stood in over a spec's own Firestore double — this\n * plugin may not load the data plugin that registers the real one. It answers\n * in the shape the data plugin's `dataset-record-index.ts` documents: live\n * datasets only, narrowed to a site to those shared with it, each with its\n * fields (`{ id, name, type }`, in the dataset page's order) and its\n * `visibleTo`. What the data plugin itself answers is held in its own spec.\n */\n\nconst OWNER = 'data'\n\nconst str = (value: unknown): string => (typeof value === 'string' ? value.trim() : '')\n\n/** A field as a dataset document stores it, as far as this stand-in reads one. */\ninterface StoredField {\n name?: unknown\n type?: unknown\n}\n\n/**\n * The fields a dataset document declares, in the Data page's order: its\n * model's, or for a dataset from before models, each name in `fields` as a\n * text field — the derivation the data plugin applies.\n */\nfunction storedFields(data: Record<string, unknown>): { order: string[]; fields: Record<string, StoredField> } {\n const model = data['model'] as { order?: unknown; fields?: unknown } | undefined\n if (model && Array.isArray(model.order) && model.order.length && model.fields && typeof model.fields === 'object') {\n return { order: model.order.map(String), fields: model.fields as Record<string, StoredField> }\n }\n const names = Array.isArray(data['fields']) ? data['fields'].map(String) : []\n const titled = (name: string) => {\n const words = name.replace(/_/g, ' ').trim()\n return words ? words.charAt(0).toUpperCase() + words.slice(1) : name\n }\n return {\n order: names,\n fields: Object.fromEntries(names.map((name) => [name, { name: titled(name), type: 'text' }])),\n }\n}\n\nfunction record(id: string, data: Record<string, unknown> | undefined): PluginIndexedRecord | null {\n if (!data || data['deletedAt'] != null) return null\n const model = storedFields(data)\n return {\n id,\n name: str(data['displayName']) || str(data['name']) || id,\n facts: {\n fields: model.order.map((fieldId) => ({\n id: fieldId,\n name: str(model.fields[fieldId]?.name) || fieldId,\n type: String(model.fields[fieldId]?.type ?? 'text'),\n })),\n visibleTo: Array.isArray(data['visibleTo']) ? data['visibleTo'] : [],\n },\n }\n}\n\n/** Registers it, reading through `firestore`. */\nexport function standInDatasetIndex(firestore: FirebaseFirestore.Firestore): void {\n const datasets = (orgId: string) => firestore.collection('orgs').doc(orgId).collection('datasets')\n const shared = (one: PluginIndexedRecord | null, hostId: string | null | undefined) =>\n one && (!hostId || visibleToHost(one.facts['visibleTo'] as string[], hostId)) ? one : null\n registerPluginRecordIndex(\n 'dataset',\n {\n async list({ orgId, hostId, limit }) {\n if (!orgId) return { records: [], truncated: false }\n const snapshot = await datasets(orgId).get()\n const records = snapshot.docs\n .map((doc) => shared(record(doc.id, doc.data()), hostId))\n .filter((one): one is PluginIndexedRecord => one !== null)\n return { records: records.slice(0, limit), truncated: records.length > limit }\n },\n async get({ orgId, hostId, id }) {\n if (!orgId) return null\n const snapshot = await datasets(orgId).doc(id).get()\n return snapshot.exists ? shared(record(snapshot.id, snapshot.data()), hostId) : null\n },\n },\n { pluginId: OWNER },\n )\n}\n\n/** Forgets it, so the next spec starts with nothing keeping datasets. */\nexport function removeStandInDatasetIndex(): void {\n unregisterPluginServices(OWNER)\n}\n"],"names":["visibleToHost","registerPluginRecordIndex","unregisterPluginServices","OWNER","str","value","trim","storedFields","data","model","Array","isArray","order","length","fields","map","String","names","titled","name","words","replace","charAt","toUpperCase","slice","Object","fromEntries","type","record","id","facts","fieldId","visibleTo","standInDatasetIndex","firestore","datasets","orgId","collection","doc","shared","one","hostId","list","limit","records","truncated","snapshot","get","docs","filter","exists","pluginId","removeStandInDatasetIndex"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/testing/stand-in-dataset-index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { visibleToHost } from '@aglyn/aglyn/app-utils/scope-tokens'\nimport {\n registerPluginRecordIndex,\n type PluginIndexedRecord,\n} from '@aglyn/aglyn/plugin-manager/plugin-record-index'\nimport { unregisterPluginServices } from '@aglyn/aglyn/plugin-manager/plugin-services'\n\n/**\n * The `dataset` index the plugin that keeps the workspace's datasets\n * publishes (AGL-3080), stood in over a spec's own Firestore double — this\n * plugin may not load the data plugin that registers the real one. It answers\n * in the shape the data plugin's `dataset-record-index.ts` documents: live\n * datasets only, narrowed to a site to those shared with it, each with its\n * fields (`{ id, name, type }` and a `customType` where one rides it, in\n * the dataset page's order) and its\n * `visibleTo`. What the data plugin itself answers is held in its own spec.\n */\n\nconst OWNER = 'data'\n\nconst str = (value: unknown): string => (typeof value === 'string' ? value.trim() : '')\n\n/** A field as a dataset document stores it, as far as this stand-in reads one. */\ninterface StoredField {\n name?: unknown\n type?: unknown\n customType?: unknown\n}\n\n/**\n * The fields a dataset document declares, in the Data page's order: its\n * model's, or for a dataset from before models, each name in `fields` as a\n * text field — the derivation the data plugin applies.\n */\nfunction storedFields(data: Record<string, unknown>): { order: string[]; fields: Record<string, StoredField> } {\n const model = data['model'] as { order?: unknown; fields?: unknown } | undefined\n if (model && Array.isArray(model.order) && model.order.length && model.fields && typeof model.fields === 'object') {\n return { order: model.order.map(String), fields: model.fields as Record<string, StoredField> }\n }\n const names = Array.isArray(data['fields']) ? data['fields'].map(String) : []\n const titled = (name: string) => {\n const words = name.replace(/_/g, ' ').trim()\n return words ? words.charAt(0).toUpperCase() + words.slice(1) : name\n }\n return {\n order: names,\n fields: Object.fromEntries(names.map((name) => [name, { name: titled(name), type: 'text' }])),\n }\n}\n\nfunction record(id: string, data: Record<string, unknown> | undefined): PluginIndexedRecord | null {\n if (!data || data['deletedAt'] != null) return null\n const model = storedFields(data)\n return {\n id,\n name: str(data['displayName']) || str(data['name']) || id,\n facts: {\n fields: model.order.map((fieldId) => ({\n id: fieldId,\n name: str(model.fields[fieldId]?.name) || fieldId,\n type: String(model.fields[fieldId]?.type ?? 'text'),\n ...(str(model.fields[fieldId]?.customType) ? { customType: str(model.fields[fieldId]?.customType) } : {}),\n })),\n visibleTo: Array.isArray(data['visibleTo']) ? data['visibleTo'] : [],\n },\n }\n}\n\n/** Registers it, reading through `firestore`. */\nexport function standInDatasetIndex(firestore: FirebaseFirestore.Firestore): void {\n const datasets = (orgId: string) => firestore.collection('orgs').doc(orgId).collection('datasets')\n const shared = (one: PluginIndexedRecord | null, hostId: string | null | undefined) =>\n one && (!hostId || visibleToHost(one.facts['visibleTo'] as string[], hostId)) ? one : null\n registerPluginRecordIndex(\n 'dataset',\n {\n async list({ orgId, hostId, limit }) {\n if (!orgId) return { records: [], truncated: false }\n const snapshot = await datasets(orgId).get()\n const records = snapshot.docs\n .map((doc) => shared(record(doc.id, doc.data()), hostId))\n .filter((one): one is PluginIndexedRecord => one !== null)\n return { records: records.slice(0, limit), truncated: records.length > limit }\n },\n async get({ orgId, hostId, id }) {\n if (!orgId) return null\n const snapshot = await datasets(orgId).doc(id).get()\n return snapshot.exists ? shared(record(snapshot.id, snapshot.data()), hostId) : null\n },\n },\n { pluginId: OWNER },\n )\n}\n\n/** Forgets it, so the next spec starts with nothing keeping datasets. */\nexport function removeStandInDatasetIndex(): void {\n unregisterPluginServices(OWNER)\n}\n"],"names":["visibleToHost","registerPluginRecordIndex","unregisterPluginServices","OWNER","str","value","trim","storedFields","data","model","Array","isArray","order","length","fields","map","String","names","titled","name","words","replace","charAt","toUpperCase","slice","Object","fromEntries","type","record","id","facts","fieldId","customType","visibleTo","standInDatasetIndex","firestore","datasets","orgId","collection","doc","shared","one","hostId","list","limit","records","truncated","snapshot","get","docs","filter","exists","pluginId","removeStandInDatasetIndex"],"mappings":"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"}