@happyvertical/smrt-content 0.57.36 → 0.57.38
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.
- package/AGENTS.md +1 -0
- package/dist/chunks/{content-corrections-BYT3Qdw5.js → content-corrections-QyinPkfN.js} +10 -3
- package/dist/chunks/content-corrections-QyinPkfN.js.map +1 -0
- package/dist/chunks/{content-query-Clu2wO7c.js → content-query-Ci31zT0E.js} +36 -37
- package/dist/chunks/content-query-Ci31zT0E.js.map +1 -0
- package/dist/chunks/{content-reviews-B6h2aJ9m.js → content-reviews-H9ANWEi7.js} +9 -3
- package/dist/chunks/content-reviews-H9ANWEi7.js.map +1 -0
- package/dist/chunks/{content-versions-CfzXQy_N.js → content-versions-lvpWUFzP.js} +10 -4
- package/dist/chunks/content-versions-lvpWUFzP.js.map +1 -0
- package/dist/chunks/{contents-D9USRXHr.js → contents-CAiRy-Ec.js} +2 -2
- package/dist/chunks/contents-CAiRy-Ec.js.map +1 -0
- package/dist/content-contribution.d.ts.map +1 -1
- package/dist/content-contributor.d.ts.map +1 -1
- package/dist/content-correction.d.ts.map +1 -1
- package/dist/content-query.d.ts +2 -2
- package/dist/content-query.d.ts.map +1 -1
- package/dist/content-review.d.ts.map +1 -1
- package/dist/content-types.d.ts +8 -0
- package/dist/content-types.d.ts.map +1 -1
- package/dist/content-version.d.ts.map +1 -1
- package/dist/content.d.ts.map +1 -1
- package/dist/contents.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +502 -193
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +795 -59
- package/dist/recipes.d.ts +423 -0
- package/dist/recipes.d.ts.map +1 -0
- package/dist/server.js +1 -1
- package/dist/smrt-knowledge.json +613 -79
- package/dist/svelte/content-list-controller.d.ts +7 -0
- package/dist/svelte/content-list-controller.d.ts.map +1 -1
- package/dist/svelte/content-list-controller.js +16 -0
- package/package.json +24 -24
- package/dist/chunks/content-corrections-BYT3Qdw5.js.map +0 -1
- package/dist/chunks/content-query-Clu2wO7c.js.map +0 -1
- package/dist/chunks/content-reviews-B6h2aJ9m.js.map +0 -1
- package/dist/chunks/content-versions-CfzXQy_N.js.map +0 -1
- package/dist/chunks/contents-D9USRXHr.js.map +0 -1
package/AGENTS.md
CHANGED
|
@@ -27,6 +27,7 @@ you are editing. This file keeps what holds across the package.
|
|
|
27
27
|
- **ContentContributionType**: Configures intake channels, rules, and promotion mapping. Keyed per tenant (`tenant_id`, `key`); NULL-tenant rows are the global defaults each tenant can override by key
|
|
28
28
|
- **ContentContributionRevision**: Revision history for held submissions
|
|
29
29
|
- **ContentContributionAttachment**: Held file metadata; becomes an `Asset` on promotion
|
|
30
|
+
- **Recipe `content.articles`** (`src/recipes.ts`, help in `src/articles.recipe.md`): Articles over the exposed `Content` base narrowed to `type = 'article'` (the `Article` subclass is closed), plus versions, corrections, reviews and contributions for the planner and other catalog hosts. Fields it shows carry `@field({ description })` in plain words; keep them when editing the models.
|
|
30
31
|
|
|
31
32
|
## Contents Collection
|
|
32
33
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { SmrtCollection, SmrtObject, crossPackageRef, foreignKey, smrt } from "@happyvertical/smrt-core";
|
|
2
|
+
import { SmrtCollection, SmrtObject, crossPackageRef, field, foreignKey, smrt } from "@happyvertical/smrt-core";
|
|
3
3
|
import { TenantScoped, tenantId } from "@happyvertical/smrt-tenancy";
|
|
4
4
|
//#region src/content-correction.ts
|
|
5
5
|
var __defProp$1 = Object.defineProperty;
|
|
@@ -63,11 +63,18 @@ __publicField$1(ContentCorrection, "__smrtPackage__", "@happyvertical/smrt-conte
|
|
|
63
63
|
__decorateClass$1([foreignKey("Content", {
|
|
64
64
|
required: true,
|
|
65
65
|
onDelete: "CASCADE"
|
|
66
|
-
})], ContentCorrection.prototype, "contentId", 2);
|
|
66
|
+
}), field({ description: "The piece being corrected." })], ContentCorrection.prototype, "contentId", 2);
|
|
67
67
|
__decorateClass$1([foreignKey("ContentVersion", { onDelete: "CASCADE" })], ContentCorrection.prototype, "contentVersionId", 2);
|
|
68
68
|
__decorateClass$1([crossPackageRef("@happyvertical/smrt-facts:Fact")], ContentCorrection.prototype, "factId", 2);
|
|
69
69
|
__decorateClass$1([crossPackageRef("@happyvertical/smrt-facts:Fact")], ContentCorrection.prototype, "replacementFactId", 2);
|
|
70
|
+
__decorateClass$1([field({ description: "What kind of mistake it fixes: a fact, a safety concern, wording or something else." })], ContentCorrection.prototype, "correctionType", 2);
|
|
71
|
+
__decorateClass$1([field({ description: "Where the correction stands: a draft, published or retracted." })], ContentCorrection.prototype, "status", 2);
|
|
72
|
+
__decorateClass$1([field({ description: "A short note on what was wrong and how it was fixed." })], ContentCorrection.prototype, "summary", 2);
|
|
73
|
+
__decorateClass$1([field({ description: "The wording that was wrong." })], ContentCorrection.prototype, "incorrectText", 2);
|
|
74
|
+
__decorateClass$1([field({ description: "The wording that replaces it." })], ContentCorrection.prototype, "correctedText", 2);
|
|
75
|
+
__decorateClass$1([field({ description: "The note readers see about this correction." })], ContentCorrection.prototype, "publicNote", 2);
|
|
70
76
|
__decorateClass$1([tenantId({ nullable: true })], ContentCorrection.prototype, "tenantId", 2);
|
|
77
|
+
__decorateClass$1([field({ description: "When the correction was made public." })], ContentCorrection.prototype, "publishedAt", 2);
|
|
71
78
|
ContentCorrection = __decorateClass$1([TenantScoped({ mode: "optional" }), smrt({
|
|
72
79
|
tableName: "content_corrections",
|
|
73
80
|
api: { include: [
|
|
@@ -150,4 +157,4 @@ ContentCorrectionCollection = __decorateClass([smrt({
|
|
|
150
157
|
//#endregion
|
|
151
158
|
export { content_corrections_exports as n, ContentCorrection as r, ContentCorrectionCollection as t };
|
|
152
159
|
|
|
153
|
-
//# sourceMappingURL=content-corrections-
|
|
160
|
+
//# sourceMappingURL=content-corrections-QyinPkfN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-corrections-QyinPkfN.js","names":[],"sources":["../../src/content-correction.ts","../../src/content-corrections.ts"],"sourcesContent":["import type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n field,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport type {\n ContentCorrectionStatus,\n ContentCorrectionType,\n} from './content-governance';\n\nexport interface ContentCorrectionOptions extends SmrtObjectOptions {\n contentId?: string;\n contentVersionId?: string;\n factId?: string;\n replacementFactId?: string;\n correctionType?: ContentCorrectionType;\n status?: ContentCorrectionStatus;\n summary?: string;\n incorrectText?: string;\n correctedText?: string;\n publicNote?: string;\n metadata?: string | Record<string, unknown>;\n tenantId?: string | null;\n publishedAt?: Date | null;\n createdAt?: Date;\n updatedAt?: Date;\n}\n\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableName: 'content_corrections',\n api: { include: ['list', 'get', 'create', 'update'] },\n mcp: { include: ['list', 'get', 'create', 'update'] },\n cli: { skipApiCheck: true },\n})\nexport class ContentCorrection extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-content\";\n @foreignKey('Content', { required: true, onDelete: 'CASCADE' })\n @field({ description: 'The piece being corrected.' })\n contentId = '';\n\n @foreignKey('ContentVersion', { onDelete: 'CASCADE' })\n contentVersionId = '';\n\n @crossPackageRef('@happyvertical/smrt-facts:Fact')\n factId = '';\n\n @crossPackageRef('@happyvertical/smrt-facts:Fact')\n replacementFactId = '';\n @field({\n description:\n 'What kind of mistake it fixes: a fact, a safety concern, wording or something else.',\n })\n correctionType: ContentCorrectionType = 'fact';\n\n @field({\n description:\n 'Where the correction stands: a draft, published or retracted.',\n })\n status: ContentCorrectionStatus = 'draft';\n\n @field({\n description: 'A short note on what was wrong and how it was fixed.',\n })\n summary = '';\n\n @field({ description: 'The wording that was wrong.' })\n incorrectText = '';\n\n @field({ description: 'The wording that replaces it.' })\n correctedText = '';\n\n @field({ description: 'The note readers see about this correction.' })\n publicNote = '';\n metadata = '';\n\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n @field({ description: 'When the correction was made public.' })\n publishedAt: Date | null = null;\n createdAt = new Date();\n updatedAt = new Date();\n\n constructor(options: ContentCorrectionOptions = {}) {\n super(options);\n if (options.contentId) this.contentId = options.contentId;\n if (options.contentVersionId !== undefined)\n this.contentVersionId = options.contentVersionId;\n if (options.factId !== undefined) this.factId = options.factId;\n if (options.replacementFactId !== undefined)\n this.replacementFactId = options.replacementFactId;\n if (options.correctionType !== undefined)\n this.correctionType = options.correctionType;\n if (options.status !== undefined) this.status = options.status;\n if (options.summary !== undefined) this.summary = options.summary;\n if (options.incorrectText !== undefined)\n this.incorrectText = options.incorrectText;\n if (options.correctedText !== undefined)\n this.correctedText = options.correctedText;\n if (options.publicNote !== undefined) this.publicNote = options.publicNote;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n if (options.publishedAt !== undefined)\n this.publishedAt = options.publishedAt;\n if (options.createdAt) this.createdAt = options.createdAt;\n if (options.updatedAt) this.updatedAt = options.updatedAt;\n\n if (options.metadata !== undefined) {\n this.metadata =\n typeof options.metadata === 'string'\n ? options.metadata\n : JSON.stringify(options.metadata);\n }\n }\n\n getMetadata(): Record<string, unknown> {\n try {\n return this.metadata ? JSON.parse(this.metadata) : {};\n } catch {\n return {};\n }\n }\n}\n","import { SmrtCollection, smrt } from '@happyvertical/smrt-core';\nimport { ContentCorrection } from './content-correction';\n\n// The collection's own @smrt() surface: its read helpers are published\n// operations (the API explorer and the workbench call them). A collection\n// inherits only its model's CRUD verbs, so it lists the helpers it opens here.\n// The CRUD verbs repeat the model's because a collection decorator's config\n// is merged over its model's at runtime.\n@smrt({\n // Mirror the model's storage so the collection decorator cannot plan a\n // different table for it.\n tableName: 'content_corrections',\n api: {\n include: [\n 'list',\n 'get',\n 'create',\n 'update',\n 'listForContent',\n 'getPublishedForContent',\n ],\n },\n mcp: {\n include: [\n 'list',\n 'get',\n 'create',\n 'update',\n 'listForContent',\n 'getPublishedForContent',\n ],\n },\n})\nexport class ContentCorrectionCollection extends SmrtCollection<ContentCorrection> { static __smrtPackage__ = \"@happyvertical/smrt-content\";\n static readonly _itemClass = ContentCorrection;\n\n async listForContent(contentId: string): Promise<ContentCorrection[]> {\n return this.list({\n where: { contentId },\n orderBy: 'created_at DESC',\n });\n }\n\n async getPublishedForContent(\n contentId: string,\n ): Promise<ContentCorrection[]> {\n return this.list({\n where: { contentId, status: 'published' },\n orderBy: 'published_at DESC',\n });\n }\n\n async issue(\n options: ConstructorParameters<typeof ContentCorrection>[0],\n ): Promise<ContentCorrection> {\n if (!options) {\n return this.create({});\n }\n\n return this.create({\n ...options,\n metadata:\n typeof options.metadata === 'string'\n ? options.metadata\n : options.metadata\n ? JSON.stringify(options.metadata)\n : undefined,\n });\n }\n}\n"],"mappings":"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"}
|