contentrain 0.9.1 → 0.10.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.
- package/dist/index.mjs +1 -1
- package/dist/serve-ui/assets/{AgentPromptGroup.vue_vue_type_script_setup_true_lang-BUgcmCel.js → AgentPromptGroup.vue_vue_type_script_setup_true_lang-DGijfAoG.js} +1 -1
- package/dist/serve-ui/assets/{AppLayout-Do2_5NzN.js → AppLayout-Cu18nQFJ.js} +1 -1
- package/dist/serve-ui/assets/{BranchDetailPage-CSChmKRm.js → BranchDetailPage-B5Zb4CWG.js} +1 -1
- package/dist/serve-ui/assets/{BranchesPage-CKmUQGvC.js → BranchesPage-hxZVqEWG.js} +1 -1
- package/dist/serve-ui/assets/{CardContent.vue_vue_type_script_setup_true_lang-C-ErmW5E.js → CardContent.vue_vue_type_script_setup_true_lang-Wep4RMkj.js} +1 -1
- package/dist/serve-ui/assets/{CollapsibleTrigger.vue_vue_type_script_setup_true_lang-BkgPlJ2I.js → CollapsibleTrigger.vue_vue_type_script_setup_true_lang-ClPT-9J4.js} +1 -1
- package/dist/serve-ui/assets/{Collection-BIp9PGUk.js → Collection-CvRfhUB7.js} +1 -1
- package/dist/serve-ui/assets/ConfigProvider-DPWUDqGh.js +1 -0
- package/dist/serve-ui/assets/ContentListPage-KrCopmD6.js +109 -0
- package/dist/serve-ui/assets/ContentListPage-tjbruqdP.css +1 -0
- package/dist/serve-ui/assets/{ContentPage-DxCgrLef.js → ContentPage-RYWcjK9c.js} +1 -1
- package/dist/serve-ui/assets/{DashboardPage-ZED85wnk.js → DashboardPage-B_M6WKld.js} +1 -1
- package/dist/serve-ui/assets/{DialogTitle.vue_vue_type_script_setup_true_lang-CK0rHwJz.js → DialogTitle.vue_vue_type_script_setup_true_lang-VT8-tcWV.js} +1 -1
- package/dist/serve-ui/assets/{DoctorPage-PSdw7-NX.js → DoctorPage-DMnd50Qe.js} +1 -1
- package/dist/serve-ui/assets/{FormatReferencePage-Dt8ImU06.js → FormatReferencePage-8Y_dGr6K.js} +1 -1
- package/dist/serve-ui/assets/{Input.vue_vue_type_script_setup_true_lang-C3VgSy5x.js → Input.vue_vue_type_script_setup_true_lang-DTg5x_1H.js} +1 -1
- package/dist/serve-ui/assets/{ModelDetailPage-kA0Lz3j8.js → ModelDetailPage-3-G2J9oZ.js} +1 -1
- package/dist/serve-ui/assets/{ModelsPage-ChrvonG7.js → ModelsPage-7bZuwfxB.js} +1 -1
- package/dist/serve-ui/assets/{NormalizePage-BeV0fXxR.js → NormalizePage-D1ACHOOk.js} +1 -1
- package/dist/serve-ui/assets/{PageHeader.vue_vue_type_script_setup_true_lang-l8rY5aKw.js → PageHeader.vue_vue_type_script_setup_true_lang-f_qa-M1s.js} +1 -1
- package/dist/serve-ui/assets/{Presence-CJ45TUKi.js → Presence-CfATKqRO.js} +1 -1
- package/dist/serve-ui/assets/{Separator.vue_vue_type_script_setup_true_lang-Dm_SeSXH.js → Separator.vue_vue_type_script_setup_true_lang-D-ZdYJPm.js} +1 -1
- package/dist/serve-ui/assets/{StudioHint.vue_vue_type_script_setup_true_lang-D8gajE42.js → StudioHint.vue_vue_type_script_setup_true_lang-C_9M35tB.js} +1 -1
- package/dist/serve-ui/assets/{TrustBadge.vue_vue_type_script_setup_true_lang-BFsW1BeB.js → TrustBadge.vue_vue_type_script_setup_true_lang-CNzxpJIB.js} +1 -1
- package/dist/serve-ui/assets/{ValidatePage-CefzPKQt.js → ValidatePage-Ci8Njrjy.js} +1 -1
- package/dist/serve-ui/assets/{arrow-down-2eFyUX-7.js → arrow-down-DuuSrZrX.js} +1 -1
- package/dist/serve-ui/assets/{arrow-left-Cm9qLVJZ.js → arrow-left-Dxkqq18_.js} +1 -1
- package/dist/serve-ui/assets/{book-marked-DOVEt8op.js → book-marked-BJCFfYPg.js} +1 -1
- package/dist/serve-ui/assets/{book-open-D7FZ9DjL.js → book-open-BrhESfqB.js} +1 -1
- package/dist/serve-ui/assets/{box-6034TScP.js → box-DnDvmOFz.js} +1 -1
- package/dist/serve-ui/assets/{chevron-down-1YnRxEyi.js → chevron-down-DxPRdtQ2.js} +1 -1
- package/dist/serve-ui/assets/{chevron-right-ChclIXq1.js → chevron-right-4fFpOcQY.js} +1 -1
- package/dist/serve-ui/assets/{circle-alert-CsDw3E63.js → circle-alert-DHoba5Yl.js} +1 -1
- package/dist/serve-ui/assets/{content-Dk9oS4p9.js → content-CUJS4qD7.js} +1 -1
- package/dist/serve-ui/assets/{database-Bxh_he7Y.js → database-DXeLd4fP.js} +1 -1
- package/dist/serve-ui/assets/{file-code-CmLEXWG_.js → file-code-DAeYB6-U.js} +1 -1
- package/dist/serve-ui/assets/{file-text-aeYUaj6Z.js → file-text-CNkcFAch.js} +1 -1
- package/dist/serve-ui/assets/{git-branch-B9O3fl9q.js → git-branch-C8WJyunb.js} +1 -1
- package/dist/serve-ui/assets/{git-merge-BV3-DZtx.js → git-merge-zRH3kO3U.js} +1 -1
- package/dist/serve-ui/assets/{hash-Cbo1MDOa.js → hash-CXM2KyoG.js} +1 -1
- package/dist/serve-ui/assets/{index-BOn9xpBS.js → index-ChZMsiq8.js} +2 -2
- package/dist/serve-ui/assets/{languages-UFW2WzqJ.js → languages-DJeX1WoO.js} +1 -1
- package/dist/serve-ui/assets/{plus-D27DSXed.js → plus-BKiDA6K4.js} +1 -1
- package/dist/serve-ui/assets/{project-Bivz_zhf.js → project-CoRDn0ek.js} +1 -1
- package/dist/serve-ui/assets/{scan-search-DcqzKN0r.js → scan-search-D5bwEyY7.js} +1 -1
- package/dist/serve-ui/assets/{settings-pl-VrPIa.js → settings-BmVCntIC.js} +1 -1
- package/dist/serve-ui/assets/{shield-check-DXmIgtuh.js → shield-check-CiRjJIVW.js} +1 -1
- package/dist/serve-ui/assets/{stethoscope-DeR62yPK.js → stethoscope-B8Z0pam_.js} +1 -1
- package/dist/serve-ui/assets/{trash-2-Cobh5bGF.js → trash-2-B_0ZPRjy.js} +1 -1
- package/dist/serve-ui/assets/useDirection-BO2bsovR.js +1 -0
- package/dist/serve-ui/assets/{useId-BLtQdZRI.js → useId-D0eDf3m4.js} +1 -1
- package/dist/serve-ui/assets/{useNonce-CJZRkJkf.js → useNonce-CiRlnwG8.js} +1 -1
- package/dist/serve-ui/assets/{useWatch-CxmSSJCk.js → useWatch-BEMqYN2q.js} +1 -1
- package/dist/serve-ui/index.html +1 -1
- package/package.json +4 -4
- package/dist/serve-ui/assets/ConfigProvider-DQspbvIG.js +0 -1
- package/dist/serve-ui/assets/ContentListPage-DlhJ486k.js +0 -109
- package/dist/serve-ui/assets/ContentListPage-tCu3OQw5.css +0 -1
- package/dist/serve-ui/assets/useDirection-CKzliOt2.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Y as b,a2 as N,u as p,h as $,ac as L,af as P,ae as W,r as z,i as E,M as U,w as M,U as _,W as G,_ as K,a4 as Y,a5 as H,t as j,H as J,aj as Q,F as X,a as S,ak as Z,m as D,al as ee,$ as v,b as te,z as ae,e as ne,o as re,f as oe,l as ie}from"./index-BOn9xpBS.js";const se={"branch-detail.and-delete-the-source":"and delete the source branch.","branch-detail.approve-merge":"Approve & Merge","branch-detail.ask-your-agent":"Ask your agent","branch-detail.back":"Back","branch-detail.branch-merged-successfully":"Branch merged successfully.","branch-detail.branch-rejected-and-deleted":"Branch rejected and deleted.","branch-detail.branch-review-and-diff":"Branch review and diff","branch-detail.cancel":"Cancel","branch-detail.check-the-content-quality":"Check the content quality of the pending changes","branch-detail.confirm-merge":"Confirm merge","branch-detail.confirm-rejection":"Confirm rejection","branch-detail.continue-with-phase-2":"Continue with Phase 2 — patch source files with content references","branch-detail.delete-branch":"Delete Branch","branch-detail.failed-to-delete-branch":"Failed to delete branch. Please try again.","branch-detail.failed-to-merge-branch":"Failed to merge branch. Please try again.","branch-detail.file":"file","branch-detail.into":"into","branch-detail.merge":"Merge","branch-detail.no-diff-available-for":"No diff available for this branch.","branch-detail.preview-already-merged":"This branch is already merged into the content-tracking branch.","branch-detail.preview-check-unavailable":"Preview check could not run against this branch.","branch-detail.preview-conflicts-heading":"Files that would conflict","branch-detail.preview-ff-clean":"Fast-forward merge — no conflicts detected.","branch-detail.preview-files-changed-suffix":"files changed","branch-detail.preview-requires-3way":"Will require a three-way merge. Review the changes carefully before approving.","branch-detail.preview-title":"Merge preview","branch-detail.reject":"Reject","branch-detail.review-the-changes-on":"Review the changes on this branch and recommend approval or rejection","branch-detail.this-will-merge":"This will merge","branch-detail.this-will-permanently-delete":"This will permanently delete the branch","branches.add-sample-content-to":"Add sample content to my models","branches.aigenerated-changes-from-your":"AI-generated changes from your IDE will appear here for review.","branches.branch":"Branch","branches.branches-history":"Branches & History","branches.content":"Content","branches.content-saved":"Content Saved","branches.contentrain-operations-will-appear":"Contentrain operations will appear here as a timeline.","branches.create-a-new-content":"Create a new content model for my project","branches.deleted":"Deleted","branches.get-started":"Get started","branches.initialize-my-contentrain-project":"Initialize my contentrain project","branches.merged":"Merged","branches.model":"Model","branches.model-created":"Model Created","branches.model-updated":"Model Updated","branches.no-history-yet":"No history yet","branches.no-pending-branches":"No pending branches","branches.normalize":"Normalize","branches.normalize-my-project-extract":"Normalize my project — extract hardcoded strings","branches.operation":"Operation","branches.refresh":"Refresh","branches.review-pending-changes-and":"Review pending changes and track operations","branches.share-branch-reviews-with":"Share branch reviews with your team in Contentrain Studio.","branches.try-asking-your-ai":"Try asking your AI agent","branches.validate":"Validate","breadcrumb-ellipsis.more":"More","button.button":"button","common.off":"Off","common.on":"On","content-list.add-a-new-entry":"Add a new entry to ${modelId}","content-list.all-locales":"All locales","content-list.ask-your-agent":"Ask your agent","content-list.columns":"Columns","content-list.content-mutations-are-agent":"Content mutations are agent actions — copy a prompt above and paste it in your AI agent.","content-list.create-content-using-ai":"Create content using AI in your IDE.","content-list.create-sample-content-for":"Create sample content for ${modelId}","content-list.delete-draft-entries-from":"Delete draft entries from ${modelId}","content-list.generate-5-entries-for":"Generate 5 entries for ${modelId}","content-list.missing":"missing","content-list.no-entries-matching":'No entries matching "',"content-list.no-entries-yet":"No entries yet","content-list.page":"Page","content-list.refresh":"Refresh","content-list.required":"required","content-list.reset":"Reset","content-list.search-entries":"Search entries...","content-list.show":"Show","content-list.show-all":"Show all","content-list.toggle-columns":"Toggle columns","content-list.translate-modelid-content-to":"Translate ${modelId} content to Turkish","content-list.update-the-content-of":"Update the content of ${modelId}","content.browse-and-inspect-content":"Browse and inspect content by collection","content.collection":"Collection","content.content":"Content","content.create-models-using-your":"Create models using your IDE with AI assistance. Once models are defined, their content will appear here.","content.dictionary":"Dictionary","content.document":"Document","content.fields":"fields","content.filter-models":"Filter models...","content.i18n":"i18n","content.no-models-matching":'No models matching "',"content.no-models-yet":"No models yet","content.singleton":"Singleton","dashboard.branches":"Branches","dashboard.content-models":"Content Models","dashboard.content-saved":"Content Saved","dashboard.contentrain-init":"contentrain init","dashboard.context-updated":"Context Updated","dashboard.create-a-blog-model":"Create a blog model with title, content, and author fields","dashboard.create-models-using-ai":"Create models using AI in your IDE to get started.","dashboard.dashboard":"Dashboard","dashboard.deleted":"Deleted","dashboard.entries":"Entries","dashboard.fields":"fields","dashboard.fix-issues":"Fix issues","dashboard.fix-validation-errors-in":"Fix validation errors in my content","dashboard.full-report":"Full report","dashboard.generate-sample-content-for":"Generate sample content for my models","dashboard.get-started":"Get started","dashboard.i18n":"i18n","dashboard.issues":"Issues","dashboard.locales":"Locales","dashboard.manage-content-with-ai":"Manage content with AI chat and team review in Contentrain Studio.","dashboard.merged":"Merged","dashboard.model-created":"Model Created","dashboard.model-updated":"Model Updated","dashboard.models":"Models","dashboard.no-content-models-yet":"No content models yet","dashboard.no-operations-yet-start":"No operations yet. Start by creating models or content.","dashboard.normalize-my-project-extract":"Normalize my project — extract hardcoded strings","dashboard.not-a-contentrain-project":"Not a Contentrain project","dashboard.operation":"Operation","dashboard.populate":"Populate","dashboard.recent-operations":"Recent Operations","dashboard.review-pending-content-changes":"Review pending content changes","dashboard.run":"Run","dashboard.terms":"terms","dashboard.to-initialize":"to initialize.","dashboard.total":"total","dashboard.try-with-your-ai":"Try with your AI agent","dashboard.validation-summary":"Validation Summary","dashboard.view-all":"View all","dashboard.your-project-at-a":"Your project at a glance","dialog-content.close":"Close","dialog-footer.close":"Close","dialog-scroll-content.close":"Close","doctor.and-more":"and more.","doctor.checks-title":"Checks","doctor.duplicate-values-title":"Duplicate dictionary values","doctor.empty-cta":"Click Run to execute the health checks.","doctor.empty-title":"No report yet.","doctor.error-label":"error","doctor.missing-in":"missing in","doctor.missing-locale-title":"Missing locale keys","doctor.run-button":"Run","doctor.subtitle":"Project health report — git, Node, .contentrain/ structure, models, orphan content, branch pressure, SDK freshness.","doctor.summary-all-passed":"All checks passed","doctor.summary-failed-suffix":"failed","doctor.summary-passed-detail":"checks passed.","doctor.summary-review-below":"Review the failing rows below.","doctor.summary-title":"Summary","doctor.summary-warnings-suffix":"warnings","doctor.title":"Doctor","doctor.unused-keys-title":"Unused keys","doctor.usage-toggle-description":"Scan source files for unused keys, duplicate dictionary values, and locale gaps. Slower but surfaces content drift.","doctor.usage-toggle-label":"Usage analysis","doctor.warning-label":"warning","extraction-review-panel.strings":"strings","format.empty":"No format reference available yet.","format.loading":"Loading format reference…","format.subtitle":"Contentrain's content-format specification — how models, content, meta, and vocabulary are stored on disk.","format.title":"Format Reference","header.open-in-studio":"Open in Studio","index.ts.bgdestructive-textwhite-hoverbgdestructive90-focusvisibleringdestructive20":"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60","index.ts.border-bgbackground-shadowxs-hoverbgaccent":"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50","index.ts.bordertransparent-bgdestructive-textwhite-ahoverbgdestructive90":"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60","index.ts.bordertransparent-bgprimary-textprimaryforeground-ahoverbgprimary90":"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90","index.ts.bordertransparent-bgsecondary-textsecondaryforeground-ahoverbgsecondary90":"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90","index.ts.h10-roundedmd-px6-hassvgpx4":"h-10 rounded-md px-6 has-[>svg]:px-4","index.ts.h8-roundedmd-gap15-px3":"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5","index.ts.h9-px4-py2-hassvgpx3":"h-9 px-4 py-2 has-[>svg]:px-3","index.ts.icon":"icon","index.ts.textdestructive-bgcard-svgtextcurrent-dataslotalertdescriptiontextdestructive90":"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90","index.ts.textforeground-ahoverbgaccent-ahovertextaccentforeground":"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground","index.ts.textprimary-underlineoffset4-hoverunderline":"text-primary underline-offset-4 hover:underline","layout.dismiss":"Dismiss","layout.meta-changed-title":"SEO metadata updated","layout.watcher-paused-label":"Live updates paused:","layout.watcher-restart-hint":"Restart contentrain serve to reattach the watcher.","mobile-nav.branch":"Branch","mobile-nav.content":"Content","mobile-nav.dash":"Dash","mobile-nav.models":"Models","mobile-nav.valid":"Valid.","model-detail.add-a-category-field":"Add a 'category' field to ${modelId}","model-detail.ask-your-agent":"Ask your agent","model-detail.delete-the-modelid-model":"Delete the ${modelId} model","model-detail.fields":"Fields","model-detail.generate-5-sample-entries":"Generate 5 sample entries for ${modelId}","model-detail.i18n":"i18n","model-detail.import-snippet":"Import Snippet","model-detail.models":"Models","model-detail.req":"req","model-detail.sample-data":"Sample Data","model-detail.system-fields":"System Fields","model-detail.update-modelid-to-support":"Update ${modelId} to support i18n","model-detail.view-content":"View Content","models.add-a-testimonials-collection":"Add a testimonials collection model","models.ask-your-agent":"Ask your agent","models.clear-search":"Clear search","models.close":"Close","models.content-model-definitions":"Content model definitions","models.create-a-blog-model":"Create a blog model with title, content, slug, and author fields","models.create-a-faq-model":"Create a FAQ model with question and answer fields","models.create-a-new-content":"Create a new content model","models.create-and-manage-models":"Create and manage models with AI chat in Contentrain Studio.","models.create-content-models-using":"Create content models using AI in your IDE, then come back to inspect them here.","models.fields":"fields","models.filtered-from":"filtered from","models.i18n":"i18n","models.model":"model","models.models":"Models","models.no-models-found":"No models found","models.no-models-match":'No models match "',"models.no-models-yet":"No models yet","models.scaffold-my-project-with":"Scaffold my project with a landing page template","models.search":"Search","models.search-models-by-name":"Search models by name, domain, or kind...","models.total":"total","models.try-a-different-search":'". Try a different search term.',"normalize.adjust-the-normalize-plan":"Adjust the normalize plan — also include strings from the footer component","normalize.approve-or-request-changes":"Approve or request changes","normalize.approve-to-write-extractions":"Approve to write extractions to content models on a review branch. Reject to discard, or ask the agent to adjust the plan.","normalize.ask-your-ai-agent":"Ask your AI agent to get started","normalize.candidates":"candidates","normalize.click-an-extraction-to":"Click an extraction to see its source trace","normalize.content-extraction-and-i18n":"Content extraction and i18n readiness","normalize.continue-to-phase-2":"Continue to Phase 2 — patch source files with content references","normalize.copy-a-prompt-above":"Copy a prompt above or describe what you want extracted. The agent scans your source files, classifies strings, and builds an extraction plan.","normalize.delete":"Delete","normalize.extract-hardcoded-strings":"Extract hardcoded strings","normalize.extract-hero-section-text":"Extract hero section text into a content model","normalize.extracted":"extracted","normalize.extractions":"Extractions","normalize.extractions-across":"extractions across","normalize.files-scanned":"files scanned","normalize.how-it-works":"How it works","normalize.make-my-landing-page":"Make my landing page i18n-ready","normalize.merge":"Merge","normalize.merge-and-continue":"Merge and continue","normalize.merge-review-branches-into":"Merge review branches into main, then ask the agent to start Phase 2 — patching source files with content references.","normalize.models":"models","normalize.normalize":"Normalize","normalize.normalize-my-vue-project":"Normalize my Vue project — extract hardcoded strings","normalize.normalize-plan":"Normalize Plan","normalize.normalize-scans-your-source":"Normalize scans your source files for hardcoded strings and extracts them into content models, making your project i18n-ready.","normalize.patches":"patches","normalize.pending-normalize-branches":"Pending normalize branches","normalize.prompt-your-ai-agent":"Prompt your AI agent","normalize.remove-navigation-labels-from":"Remove navigation labels from the extraction plan","normalize.request-changes-from-your":"Request changes from your agent","normalize.review-and-merge-normalize":"Review and merge normalize branches into your main branch.","normalize.review-the-plan-here":"Review the plan here","normalize.scan-srcpages-for-content":"Scan src/pages for content strings and create extraction plan","normalize.skipped":"skipped","normalize.source-patches":"Source Patches","normalize.source-trace":"Source Trace","normalize.start-reuse-for-the":"Start reuse for the extracted content models","normalize.strings-found":"strings found","normalize.the-agent-sends-the":"The agent sends the plan to this dashboard. You review every extraction, source trace, and patch before anything is applied.","normalize.track-normalize-history-and":"Track normalize history and manage extractions in Contentrain Studio.","normalize.whats-next-ask-your":"What's next — ask your agent","primary-sidebar.branches":"Branches","primary-sidebar.content":"Content","primary-sidebar.contentrain":"Contentrain","primary-sidebar.dashboard":"Dashboard","primary-sidebar.doctor":"Doctor","primary-sidebar.format":"Format","primary-sidebar.models":"Models","primary-sidebar.normalize":"Normalize","primary-sidebar.validate":"Validate","router.ts.branches":"branches","router.ts.content":"content","router.ts.dashboard":"dashboard","router.ts.models":"models","router.ts.normalize":"normalize","router.ts.validate":"validate","scroll-bar.vertical":"vertical","select-content.popper":"popper","separator.horizontal":"horizontal","source-trace-panel.content-entry":"Content Entry","source-trace-panel.reuse-patch":"Reuse Patch","source-trace-panel.source-file":"Source File","source-trace-panel.source-trace":"Source Trace","status-bar.locales":"locales","status-bar.models":"models","studio-hint.open-studio":"Open Studio","sub-sidebar-layout.no-models-found":"No models found","sub-sidebar-layout.search":"Search...","tree-select.no-scannable-files-found":"No scannable files found","trust-badge.blocked":"Blocked","trust-badge.partial":"Partial","trust-badge.pending-review":"Pending review","trust-badge.validated":"Validated","trust-badge.warnings":"warnings","use-api.ts.contenttype":"Content-Type","use-api.ts.delete":"DELETE","use-api.ts.post":"POST","use-formatters.ts.2digit":"2-digit","use-formatters.ts.short":"short","validate.all-checks-passed":"All checks passed","validate.all-issue-types-are":"All issue types are hidden. Adjust filters above to see issues.","validate.ask-your-agent":"Ask your agent","validate.by-model":"By Model","validate.by-severity":"By Severity","validate.check-content-quality-and":"Check content quality and i18n completeness","validate.content-quality-report":"Content quality report","validate.entries":"Entries","validate.errors":"Errors","validate.errors-2":"Errors (","validate.fix-all-validation-errors":"Fix all validation errors in my content","validate.fix-warnings":"fix warnings","validate.models":"Models","validate.notice":"notice","validate.notices":"Notices","validate.notices-2":"Notices (","validate.quality-check":"quality check","validate.refreshing-validation":"Refreshing validation...","validate.review-and-fix-validation":"Review and fix validation warnings","validate.updated":"Updated","validate.validate-my-content-models":"Validate my content models","validate.validation":"Validation","validate.validation-results-update-automatically":"Validation results update automatically when your agent runs validation tools.","validate.warnings":"Warnings","validate.warnings-2":"Warnings (","validate.your-content-and-models":"Your content and models are in great shape. No errors, warnings, or notices found."},de="en";class le{constructor(t,n){this._data=t,this._locale=null,this._defaultLocale=n||null}locale(t){return this._locale=t,this}get(t,n){let a;if(this._locale)a=this._data.get(this._locale)??{};else if(this._defaultLocale&&this._data.has(this._defaultLocale))a=this._data.get(this._defaultLocale);else{const o=this._data.keys().next().value;a=this._data.get(o)??{}}if(t===void 0)return a;const r=a[t];if(r!==void 0)return n?r.replace(/\{(\w+)\}/g,(o,l)=>{const s=n[l];return s!==void 0?String(s):o}):r}}const ce={"serve-ui-texts":new Map([["en",se]])};function Ie(e){const t=ce[e];if(!t)throw new Error(`Unknown dictionary model: "${e}"`);return new le(t,de)}function Oe(e){return Y()?(H(e),!0):!1}const y=new WeakMap,Pe=(...e)=>{var t;const n=e[0],a=(t=_())==null?void 0:t.proxy;if(a==null&&!G())throw new Error("injectLocal must be called in setup");return a&&y.has(a)&&n in y.get(a)?y.get(a)[n]:K(...e)};function ue(e){if(!b(e))return N(e);const t=new Proxy({},{get(n,a,r){return p(Reflect.get(e.value,a,r))},set(n,a,r){return b(e.value[a])&&!b(r)?e.value[a].value=r:e.value[a]=r,!0},deleteProperty(n,a){return Reflect.deleteProperty(e.value,a)},has(n,a){return Reflect.has(e.value,a)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return N(t)}function me(e){return ue($(e))}function he(e,...t){const n=t.flat(),a=n[0];return me(()=>Object.fromEntries(typeof a=="function"?Object.entries(j(e)).filter(([r,o])=>!a(J(o),r)):Object.entries(j(e)).filter(r=>!n.includes(r[0]))))}const Ee=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Me=e=>typeof e<"u",pe=Object.prototype.toString,_e=e=>pe.call(e)==="[object Object]",ge=()=>{};function fe(e,t){function n(...a){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,a),{fn:t,thisArg:this,args:a})).then(r).catch(o)})}return n}const T=e=>e();function be(e=T,t={}){const{initialState:n="active"}=t,a=ye(n==="active");function r(){a.value=!1}function o(){a.value=!0}const l=(...s)=>{a.value&&e(...s)};return{isActive:P(a),pause:r,resume:o,eventFilter:l}}function De(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function ve(e){return _()}function Te(e){return Array.isArray(e)?e:[e]}function ye(...e){if(e.length!==1)return L(...e);const t=e[0];return typeof t=="function"?P(W(()=>({get:t,set:ge}))):z(t)}function we(e,t,n={}){const{eventFilter:a=T,...r}=n;return M(e,fe(a,t),r)}function Fe(e,t,n={}){const{eventFilter:a,initialState:r="active",...o}=n,{eventFilter:l,pause:s,resume:u,isActive:i}=be(a,{initialState:r});return{stop:we(e,t,{...o,eventFilter:l}),pause:s,resume:u,isActive:i}}function Re(e,t=!0,n){ve()?E(e,n):t?e():U(e)}function Ve(e,t,n){return M(e,t,{...n,immediate:!0})}const xe="/api";async function w(e,t){const n=await fetch(`${xe}${e}`,{headers:{"Content-Type":"application/json"},...t});if(!n.ok){const a=await n.text();let r=`API ${n.status}`;try{const o=JSON.parse(a);o!=null&&o.error&&(r=o.error)}catch{a&&(r=a)}throw new Error(r)}return n.json()}function qe(){return{get:e=>w(e),post:(e,t)=>w(e,{method:"POST",body:t?JSON.stringify(t):void 0}),del:e=>w(e,{method:"DELETE"})}}const I=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,O=Q,ke=(e,t)=>n=>{var a;if((t==null?void 0:t.variants)==null)return O(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:r,defaultVariants:o}=t,l=Object.keys(r).map(i=>{const c=n==null?void 0:n[i],h=o==null?void 0:o[i];if(c===null)return null;const m=I(c)||I(h);return r[i][m]}),s=n&&Object.entries(n).reduce((i,c)=>{let[h,m]=c;return m===void 0||(i[h]=m),i},{}),u=t==null||(a=t.compoundVariants)===null||a===void 0?void 0:a.reduce((i,c)=>{let{class:h,className:m,...q}=c;return Object.entries(q).every(B=>{let[A,f]=B;return Array.isArray(f)?f.includes({...o,...s}[A]):{...o,...s}[A]===f})?[...i,h,m]:i},[]);return O(e,l,u,n==null?void 0:n.class,n==null?void 0:n.className)};function F(e){return e?e.flatMap(t=>t.type===X?F(t.children):[t]):[]}const Ce=S({name:"PrimitiveSlot",inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{var u;if(!n.default)return null;const a=F(n.default()),r=a.findIndex(i=>i.type!==Z);if(r===-1)return a;const o=a[r];(u=o.props)==null||delete u.ref;const l=o.props?D(t,o.props):t,s=ee({...o,props:{}},l);return a.length===1?s:(a[r]=s,a)}}}),ze=["area","img","input"],Se=S({name:"Primitive",inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:"div"}},setup(e,{attrs:t,slots:n}){const a=e.asChild?"template":e.as;return typeof a=="string"&&ze.includes(a)?()=>v(a,t):a!=="template"?()=>v(e.as,t,{default:n.default}):()=>v(Ce,t,{default:n.default})}}),Be=S({__name:"Badge",props:{asChild:{type:Boolean},as:{},variant:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,n=he(t,"class");return(a,r)=>(re(),te(p(Se),D({"data-slot":"badge",class:p(ae)(p(Ae)({variant:e.variant}),t.class)},p(n)),{default:ne(()=>[oe(a.$slots,"default")]),_:3},16,["class"]))}}),Ae=ke("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}}),k=z(!1),R=z(null),C=new Set;let d=null,x=null,g=1e3;function V(){if(d&&(d.readyState===WebSocket.OPEN||d.readyState===WebSocket.CONNECTING))return;const e=window.location.protocol==="https:"?"wss:":"ws:";d=new WebSocket(`${e}//${window.location.host}/ws`),d.addEventListener("open",()=>{k.value=!0,g=1e3}),d.addEventListener("message",t=>{try{const n=JSON.parse(t.data);R.value=new Date;for(const a of C)a(n)}catch{}}),d.addEventListener("close",()=>{k.value=!1,Ne()}),d.addEventListener("error",()=>{d==null||d.close()})}function Ne(){x||(x=setTimeout(()=>{x=null,g=Math.min(g*2,3e4),V()},g))}function $e(e){return E(()=>{e&&C.add(e),V()}),ie(()=>{e&&C.delete(e)}),{connected:k,lastUpdate:R}}export{Se as P,Ce as S,Be as _,Re as a,Ee as b,Pe as c,Ie as d,Ve as e,Oe as f,_e as g,Te as h,Me as i,qe as j,F as k,ke as l,De as p,he as r,ye as t,$e as u,Fe as w};
|
|
1
|
+
import{Y as b,a2 as N,u as p,h as $,ac as L,af as P,ae as W,r as z,i as E,M as U,w as M,U as _,W as G,_ as K,a4 as Y,a5 as H,t as j,H as J,aj as Q,F as X,a as S,ak as Z,m as D,al as ee,$ as v,b as te,z as ae,e as ne,o as re,f as oe,l as ie}from"./index-ChZMsiq8.js";const se={"branch-detail.and-delete-the-source":"and delete the source branch.","branch-detail.approve-merge":"Approve & Merge","branch-detail.ask-your-agent":"Ask your agent","branch-detail.back":"Back","branch-detail.branch-merged-successfully":"Branch merged successfully.","branch-detail.branch-rejected-and-deleted":"Branch rejected and deleted.","branch-detail.branch-review-and-diff":"Branch review and diff","branch-detail.cancel":"Cancel","branch-detail.check-the-content-quality":"Check the content quality of the pending changes","branch-detail.confirm-merge":"Confirm merge","branch-detail.confirm-rejection":"Confirm rejection","branch-detail.continue-with-phase-2":"Continue with Phase 2 — patch source files with content references","branch-detail.delete-branch":"Delete Branch","branch-detail.failed-to-delete-branch":"Failed to delete branch. Please try again.","branch-detail.failed-to-merge-branch":"Failed to merge branch. Please try again.","branch-detail.file":"file","branch-detail.into":"into","branch-detail.merge":"Merge","branch-detail.no-diff-available-for":"No diff available for this branch.","branch-detail.preview-already-merged":"This branch is already merged into the content-tracking branch.","branch-detail.preview-check-unavailable":"Preview check could not run against this branch.","branch-detail.preview-conflicts-heading":"Files that would conflict","branch-detail.preview-ff-clean":"Fast-forward merge — no conflicts detected.","branch-detail.preview-files-changed-suffix":"files changed","branch-detail.preview-requires-3way":"Will require a three-way merge. Review the changes carefully before approving.","branch-detail.preview-title":"Merge preview","branch-detail.reject":"Reject","branch-detail.review-the-changes-on":"Review the changes on this branch and recommend approval or rejection","branch-detail.this-will-merge":"This will merge","branch-detail.this-will-permanently-delete":"This will permanently delete the branch","branches.add-sample-content-to":"Add sample content to my models","branches.aigenerated-changes-from-your":"AI-generated changes from your IDE will appear here for review.","branches.branch":"Branch","branches.branches-history":"Branches & History","branches.content":"Content","branches.content-saved":"Content Saved","branches.contentrain-operations-will-appear":"Contentrain operations will appear here as a timeline.","branches.create-a-new-content":"Create a new content model for my project","branches.deleted":"Deleted","branches.get-started":"Get started","branches.initialize-my-contentrain-project":"Initialize my contentrain project","branches.merged":"Merged","branches.model":"Model","branches.model-created":"Model Created","branches.model-updated":"Model Updated","branches.no-history-yet":"No history yet","branches.no-pending-branches":"No pending branches","branches.normalize":"Normalize","branches.normalize-my-project-extract":"Normalize my project — extract hardcoded strings","branches.operation":"Operation","branches.refresh":"Refresh","branches.review-pending-changes-and":"Review pending changes and track operations","branches.share-branch-reviews-with":"Share branch reviews with your team in Contentrain Studio.","branches.try-asking-your-ai":"Try asking your AI agent","branches.validate":"Validate","breadcrumb-ellipsis.more":"More","button.button":"button","common.off":"Off","common.on":"On","content-list.add-a-new-entry":"Add a new entry to ${modelId}","content-list.all-locales":"All locales","content-list.ask-your-agent":"Ask your agent","content-list.columns":"Columns","content-list.content-mutations-are-agent":"Content mutations are agent actions — copy a prompt above and paste it in your AI agent.","content-list.create-content-using-ai":"Create content using AI in your IDE.","content-list.create-sample-content-for":"Create sample content for ${modelId}","content-list.delete-draft-entries-from":"Delete draft entries from ${modelId}","content-list.generate-5-entries-for":"Generate 5 entries for ${modelId}","content-list.missing":"missing","content-list.no-entries-matching":'No entries matching "',"content-list.no-entries-yet":"No entries yet","content-list.page":"Page","content-list.refresh":"Refresh","content-list.required":"required","content-list.reset":"Reset","content-list.search-entries":"Search entries...","content-list.show":"Show","content-list.show-all":"Show all","content-list.toggle-columns":"Toggle columns","content-list.translate-modelid-content-to":"Translate ${modelId} content to Turkish","content-list.update-the-content-of":"Update the content of ${modelId}","content.browse-and-inspect-content":"Browse and inspect content by collection","content.collection":"Collection","content.content":"Content","content.create-models-using-your":"Create models using your IDE with AI assistance. Once models are defined, their content will appear here.","content.dictionary":"Dictionary","content.document":"Document","content.fields":"fields","content.filter-models":"Filter models...","content.i18n":"i18n","content.no-models-matching":'No models matching "',"content.no-models-yet":"No models yet","content.singleton":"Singleton","dashboard.branches":"Branches","dashboard.content-models":"Content Models","dashboard.content-saved":"Content Saved","dashboard.contentrain-init":"contentrain init","dashboard.context-updated":"Context Updated","dashboard.create-a-blog-model":"Create a blog model with title, content, and author fields","dashboard.create-models-using-ai":"Create models using AI in your IDE to get started.","dashboard.dashboard":"Dashboard","dashboard.deleted":"Deleted","dashboard.entries":"Entries","dashboard.fields":"fields","dashboard.fix-issues":"Fix issues","dashboard.fix-validation-errors-in":"Fix validation errors in my content","dashboard.full-report":"Full report","dashboard.generate-sample-content-for":"Generate sample content for my models","dashboard.get-started":"Get started","dashboard.i18n":"i18n","dashboard.issues":"Issues","dashboard.locales":"Locales","dashboard.manage-content-with-ai":"Manage content with AI chat and team review in Contentrain Studio.","dashboard.merged":"Merged","dashboard.model-created":"Model Created","dashboard.model-updated":"Model Updated","dashboard.models":"Models","dashboard.no-content-models-yet":"No content models yet","dashboard.no-operations-yet-start":"No operations yet. Start by creating models or content.","dashboard.normalize-my-project-extract":"Normalize my project — extract hardcoded strings","dashboard.not-a-contentrain-project":"Not a Contentrain project","dashboard.operation":"Operation","dashboard.populate":"Populate","dashboard.recent-operations":"Recent Operations","dashboard.review-pending-content-changes":"Review pending content changes","dashboard.run":"Run","dashboard.terms":"terms","dashboard.to-initialize":"to initialize.","dashboard.total":"total","dashboard.try-with-your-ai":"Try with your AI agent","dashboard.validation-summary":"Validation Summary","dashboard.view-all":"View all","dashboard.your-project-at-a":"Your project at a glance","dialog-content.close":"Close","dialog-footer.close":"Close","dialog-scroll-content.close":"Close","doctor.and-more":"and more.","doctor.checks-title":"Checks","doctor.duplicate-values-title":"Duplicate dictionary values","doctor.empty-cta":"Click Run to execute the health checks.","doctor.empty-title":"No report yet.","doctor.error-label":"error","doctor.missing-in":"missing in","doctor.missing-locale-title":"Missing locale keys","doctor.run-button":"Run","doctor.subtitle":"Project health report — git, Node, .contentrain/ structure, models, orphan content, branch pressure, SDK freshness.","doctor.summary-all-passed":"All checks passed","doctor.summary-failed-suffix":"failed","doctor.summary-passed-detail":"checks passed.","doctor.summary-review-below":"Review the failing rows below.","doctor.summary-title":"Summary","doctor.summary-warnings-suffix":"warnings","doctor.title":"Doctor","doctor.unused-keys-title":"Unused keys","doctor.usage-toggle-description":"Scan source files for unused keys, duplicate dictionary values, and locale gaps. Slower but surfaces content drift.","doctor.usage-toggle-label":"Usage analysis","doctor.warning-label":"warning","extraction-review-panel.strings":"strings","format.empty":"No format reference available yet.","format.loading":"Loading format reference…","format.subtitle":"Contentrain's content-format specification — how models, content, meta, and vocabulary are stored on disk.","format.title":"Format Reference","header.open-in-studio":"Open in Studio","index.ts.bgdestructive-textwhite-hoverbgdestructive90-focusvisibleringdestructive20":"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60","index.ts.border-bgbackground-shadowxs-hoverbgaccent":"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50","index.ts.bordertransparent-bgdestructive-textwhite-ahoverbgdestructive90":"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60","index.ts.bordertransparent-bgprimary-textprimaryforeground-ahoverbgprimary90":"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90","index.ts.bordertransparent-bgsecondary-textsecondaryforeground-ahoverbgsecondary90":"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90","index.ts.h10-roundedmd-px6-hassvgpx4":"h-10 rounded-md px-6 has-[>svg]:px-4","index.ts.h8-roundedmd-gap15-px3":"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5","index.ts.h9-px4-py2-hassvgpx3":"h-9 px-4 py-2 has-[>svg]:px-3","index.ts.icon":"icon","index.ts.textdestructive-bgcard-svgtextcurrent-dataslotalertdescriptiontextdestructive90":"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90","index.ts.textforeground-ahoverbgaccent-ahovertextaccentforeground":"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground","index.ts.textprimary-underlineoffset4-hoverunderline":"text-primary underline-offset-4 hover:underline","layout.dismiss":"Dismiss","layout.meta-changed-title":"SEO metadata updated","layout.watcher-paused-label":"Live updates paused:","layout.watcher-restart-hint":"Restart contentrain serve to reattach the watcher.","mobile-nav.branch":"Branch","mobile-nav.content":"Content","mobile-nav.dash":"Dash","mobile-nav.models":"Models","mobile-nav.valid":"Valid.","model-detail.add-a-category-field":"Add a 'category' field to ${modelId}","model-detail.ask-your-agent":"Ask your agent","model-detail.delete-the-modelid-model":"Delete the ${modelId} model","model-detail.fields":"Fields","model-detail.generate-5-sample-entries":"Generate 5 sample entries for ${modelId}","model-detail.i18n":"i18n","model-detail.import-snippet":"Import Snippet","model-detail.models":"Models","model-detail.req":"req","model-detail.sample-data":"Sample Data","model-detail.system-fields":"System Fields","model-detail.update-modelid-to-support":"Update ${modelId} to support i18n","model-detail.view-content":"View Content","models.add-a-testimonials-collection":"Add a testimonials collection model","models.ask-your-agent":"Ask your agent","models.clear-search":"Clear search","models.close":"Close","models.content-model-definitions":"Content model definitions","models.create-a-blog-model":"Create a blog model with title, content, slug, and author fields","models.create-a-faq-model":"Create a FAQ model with question and answer fields","models.create-a-new-content":"Create a new content model","models.create-and-manage-models":"Create and manage models with AI chat in Contentrain Studio.","models.create-content-models-using":"Create content models using AI in your IDE, then come back to inspect them here.","models.fields":"fields","models.filtered-from":"filtered from","models.i18n":"i18n","models.model":"model","models.models":"Models","models.no-models-found":"No models found","models.no-models-match":'No models match "',"models.no-models-yet":"No models yet","models.scaffold-my-project-with":"Scaffold my project with a landing page template","models.search":"Search","models.search-models-by-name":"Search models by name, domain, or kind...","models.total":"total","models.try-a-different-search":'". Try a different search term.',"normalize.adjust-the-normalize-plan":"Adjust the normalize plan — also include strings from the footer component","normalize.approve-or-request-changes":"Approve or request changes","normalize.approve-to-write-extractions":"Approve to write extractions to content models on a review branch. Reject to discard, or ask the agent to adjust the plan.","normalize.ask-your-ai-agent":"Ask your AI agent to get started","normalize.candidates":"candidates","normalize.click-an-extraction-to":"Click an extraction to see its source trace","normalize.content-extraction-and-i18n":"Content extraction and i18n readiness","normalize.continue-to-phase-2":"Continue to Phase 2 — patch source files with content references","normalize.copy-a-prompt-above":"Copy a prompt above or describe what you want extracted. The agent scans your source files, classifies strings, and builds an extraction plan.","normalize.delete":"Delete","normalize.extract-hardcoded-strings":"Extract hardcoded strings","normalize.extract-hero-section-text":"Extract hero section text into a content model","normalize.extracted":"extracted","normalize.extractions":"Extractions","normalize.extractions-across":"extractions across","normalize.files-scanned":"files scanned","normalize.how-it-works":"How it works","normalize.make-my-landing-page":"Make my landing page i18n-ready","normalize.merge":"Merge","normalize.merge-and-continue":"Merge and continue","normalize.merge-review-branches-into":"Merge review branches into main, then ask the agent to start Phase 2 — patching source files with content references.","normalize.models":"models","normalize.normalize":"Normalize","normalize.normalize-my-vue-project":"Normalize my Vue project — extract hardcoded strings","normalize.normalize-plan":"Normalize Plan","normalize.normalize-scans-your-source":"Normalize scans your source files for hardcoded strings and extracts them into content models, making your project i18n-ready.","normalize.patches":"patches","normalize.pending-normalize-branches":"Pending normalize branches","normalize.prompt-your-ai-agent":"Prompt your AI agent","normalize.remove-navigation-labels-from":"Remove navigation labels from the extraction plan","normalize.request-changes-from-your":"Request changes from your agent","normalize.review-and-merge-normalize":"Review and merge normalize branches into your main branch.","normalize.review-the-plan-here":"Review the plan here","normalize.scan-srcpages-for-content":"Scan src/pages for content strings and create extraction plan","normalize.skipped":"skipped","normalize.source-patches":"Source Patches","normalize.source-trace":"Source Trace","normalize.start-reuse-for-the":"Start reuse for the extracted content models","normalize.strings-found":"strings found","normalize.the-agent-sends-the":"The agent sends the plan to this dashboard. You review every extraction, source trace, and patch before anything is applied.","normalize.track-normalize-history-and":"Track normalize history and manage extractions in Contentrain Studio.","normalize.whats-next-ask-your":"What's next — ask your agent","primary-sidebar.branches":"Branches","primary-sidebar.content":"Content","primary-sidebar.contentrain":"Contentrain","primary-sidebar.dashboard":"Dashboard","primary-sidebar.doctor":"Doctor","primary-sidebar.format":"Format","primary-sidebar.models":"Models","primary-sidebar.normalize":"Normalize","primary-sidebar.validate":"Validate","router.ts.branches":"branches","router.ts.content":"content","router.ts.dashboard":"dashboard","router.ts.models":"models","router.ts.normalize":"normalize","router.ts.validate":"validate","scroll-bar.vertical":"vertical","select-content.popper":"popper","separator.horizontal":"horizontal","source-trace-panel.content-entry":"Content Entry","source-trace-panel.reuse-patch":"Reuse Patch","source-trace-panel.source-file":"Source File","source-trace-panel.source-trace":"Source Trace","status-bar.locales":"locales","status-bar.models":"models","studio-hint.open-studio":"Open Studio","sub-sidebar-layout.no-models-found":"No models found","sub-sidebar-layout.search":"Search...","tree-select.no-scannable-files-found":"No scannable files found","trust-badge.blocked":"Blocked","trust-badge.partial":"Partial","trust-badge.pending-review":"Pending review","trust-badge.validated":"Validated","trust-badge.warnings":"warnings","use-api.ts.contenttype":"Content-Type","use-api.ts.delete":"DELETE","use-api.ts.post":"POST","use-formatters.ts.2digit":"2-digit","use-formatters.ts.short":"short","validate.all-checks-passed":"All checks passed","validate.all-issue-types-are":"All issue types are hidden. Adjust filters above to see issues.","validate.ask-your-agent":"Ask your agent","validate.by-model":"By Model","validate.by-severity":"By Severity","validate.check-content-quality-and":"Check content quality and i18n completeness","validate.content-quality-report":"Content quality report","validate.entries":"Entries","validate.errors":"Errors","validate.errors-2":"Errors (","validate.fix-all-validation-errors":"Fix all validation errors in my content","validate.fix-warnings":"fix warnings","validate.models":"Models","validate.notice":"notice","validate.notices":"Notices","validate.notices-2":"Notices (","validate.quality-check":"quality check","validate.refreshing-validation":"Refreshing validation...","validate.review-and-fix-validation":"Review and fix validation warnings","validate.updated":"Updated","validate.validate-my-content-models":"Validate my content models","validate.validation":"Validation","validate.validation-results-update-automatically":"Validation results update automatically when your agent runs validation tools.","validate.warnings":"Warnings","validate.warnings-2":"Warnings (","validate.your-content-and-models":"Your content and models are in great shape. No errors, warnings, or notices found."},de="en";class le{constructor(t,n){this._data=t,this._locale=null,this._defaultLocale=n||null}locale(t){return this._locale=t,this}get(t,n){let a;if(this._locale)a=this._data.get(this._locale)??{};else if(this._defaultLocale&&this._data.has(this._defaultLocale))a=this._data.get(this._defaultLocale);else{const o=this._data.keys().next().value;a=this._data.get(o)??{}}if(t===void 0)return a;const r=a[t];if(r!==void 0)return n?r.replace(/\{(\w+)\}/g,(o,l)=>{const s=n[l];return s!==void 0?String(s):o}):r}}const ce={"serve-ui-texts":new Map([["en",se]])};function Ie(e){const t=ce[e];if(!t)throw new Error(`Unknown dictionary model: "${e}"`);return new le(t,de)}function Oe(e){return Y()?(H(e),!0):!1}const y=new WeakMap,Pe=(...e)=>{var t;const n=e[0],a=(t=_())==null?void 0:t.proxy;if(a==null&&!G())throw new Error("injectLocal must be called in setup");return a&&y.has(a)&&n in y.get(a)?y.get(a)[n]:K(...e)};function ue(e){if(!b(e))return N(e);const t=new Proxy({},{get(n,a,r){return p(Reflect.get(e.value,a,r))},set(n,a,r){return b(e.value[a])&&!b(r)?e.value[a].value=r:e.value[a]=r,!0},deleteProperty(n,a){return Reflect.deleteProperty(e.value,a)},has(n,a){return Reflect.has(e.value,a)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return N(t)}function me(e){return ue($(e))}function he(e,...t){const n=t.flat(),a=n[0];return me(()=>Object.fromEntries(typeof a=="function"?Object.entries(j(e)).filter(([r,o])=>!a(J(o),r)):Object.entries(j(e)).filter(r=>!n.includes(r[0]))))}const Ee=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Me=e=>typeof e<"u",pe=Object.prototype.toString,_e=e=>pe.call(e)==="[object Object]",ge=()=>{};function fe(e,t){function n(...a){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,a),{fn:t,thisArg:this,args:a})).then(r).catch(o)})}return n}const T=e=>e();function be(e=T,t={}){const{initialState:n="active"}=t,a=ye(n==="active");function r(){a.value=!1}function o(){a.value=!0}const l=(...s)=>{a.value&&e(...s)};return{isActive:P(a),pause:r,resume:o,eventFilter:l}}function De(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function ve(e){return _()}function Te(e){return Array.isArray(e)?e:[e]}function ye(...e){if(e.length!==1)return L(...e);const t=e[0];return typeof t=="function"?P(W(()=>({get:t,set:ge}))):z(t)}function we(e,t,n={}){const{eventFilter:a=T,...r}=n;return M(e,fe(a,t),r)}function Fe(e,t,n={}){const{eventFilter:a,initialState:r="active",...o}=n,{eventFilter:l,pause:s,resume:u,isActive:i}=be(a,{initialState:r});return{stop:we(e,t,{...o,eventFilter:l}),pause:s,resume:u,isActive:i}}function Re(e,t=!0,n){ve()?E(e,n):t?e():U(e)}function Ve(e,t,n){return M(e,t,{...n,immediate:!0})}const xe="/api";async function w(e,t){const n=await fetch(`${xe}${e}`,{headers:{"Content-Type":"application/json"},...t});if(!n.ok){const a=await n.text();let r=`API ${n.status}`;try{const o=JSON.parse(a);o!=null&&o.error&&(r=o.error)}catch{a&&(r=a)}throw new Error(r)}return n.json()}function qe(){return{get:e=>w(e),post:(e,t)=>w(e,{method:"POST",body:t?JSON.stringify(t):void 0}),del:e=>w(e,{method:"DELETE"})}}const I=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,O=Q,ke=(e,t)=>n=>{var a;if((t==null?void 0:t.variants)==null)return O(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:r,defaultVariants:o}=t,l=Object.keys(r).map(i=>{const c=n==null?void 0:n[i],h=o==null?void 0:o[i];if(c===null)return null;const m=I(c)||I(h);return r[i][m]}),s=n&&Object.entries(n).reduce((i,c)=>{let[h,m]=c;return m===void 0||(i[h]=m),i},{}),u=t==null||(a=t.compoundVariants)===null||a===void 0?void 0:a.reduce((i,c)=>{let{class:h,className:m,...q}=c;return Object.entries(q).every(B=>{let[A,f]=B;return Array.isArray(f)?f.includes({...o,...s}[A]):{...o,...s}[A]===f})?[...i,h,m]:i},[]);return O(e,l,u,n==null?void 0:n.class,n==null?void 0:n.className)};function F(e){return e?e.flatMap(t=>t.type===X?F(t.children):[t]):[]}const Ce=S({name:"PrimitiveSlot",inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{var u;if(!n.default)return null;const a=F(n.default()),r=a.findIndex(i=>i.type!==Z);if(r===-1)return a;const o=a[r];(u=o.props)==null||delete u.ref;const l=o.props?D(t,o.props):t,s=ee({...o,props:{}},l);return a.length===1?s:(a[r]=s,a)}}}),ze=["area","img","input"],Se=S({name:"Primitive",inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:"div"}},setup(e,{attrs:t,slots:n}){const a=e.asChild?"template":e.as;return typeof a=="string"&&ze.includes(a)?()=>v(a,t):a!=="template"?()=>v(e.as,t,{default:n.default}):()=>v(Ce,t,{default:n.default})}}),Be=S({__name:"Badge",props:{asChild:{type:Boolean},as:{},variant:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,n=he(t,"class");return(a,r)=>(re(),te(p(Se),D({"data-slot":"badge",class:p(ae)(p(Ae)({variant:e.variant}),t.class)},p(n)),{default:ne(()=>[oe(a.$slots,"default")]),_:3},16,["class"]))}}),Ae=ke("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}}),k=z(!1),R=z(null),C=new Set;let d=null,x=null,g=1e3;function V(){if(d&&(d.readyState===WebSocket.OPEN||d.readyState===WebSocket.CONNECTING))return;const e=window.location.protocol==="https:"?"wss:":"ws:";d=new WebSocket(`${e}//${window.location.host}/ws`),d.addEventListener("open",()=>{k.value=!0,g=1e3}),d.addEventListener("message",t=>{try{const n=JSON.parse(t.data);R.value=new Date;for(const a of C)a(n)}catch{}}),d.addEventListener("close",()=>{k.value=!1,Ne()}),d.addEventListener("error",()=>{d==null||d.close()})}function Ne(){x||(x=setTimeout(()=>{x=null,g=Math.min(g*2,3e4),V()},g))}function $e(e){return E(()=>{e&&C.add(e),V()}),ie(()=>{e&&C.delete(e)}),{connected:k,lastUpdate:R}}export{Se as P,Ce as S,Be as _,Re as a,Ee as b,Pe as c,Ie as d,Ve as e,Oe as f,_e as g,Te as h,Me as i,qe as j,F as k,ke as l,De as p,he as r,ye as t,$e as u,Fe as w};
|
package/dist/serve-ui/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
9
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
10
10
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-ChZMsiq8.js"></script>
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/index-KZ2rT4mJ.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body class="min-h-screen bg-background font-sans text-foreground antialiased">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "contentrain",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "CLI for Contentrain — AI content governance infrastructure",
|
|
6
6
|
"type": "module",
|
|
@@ -49,9 +49,9 @@
|
|
|
49
49
|
"zod": "^3.24.0",
|
|
50
50
|
"@contentrain/rules": "0.7.0",
|
|
51
51
|
"@contentrain/skills": "0.8.0",
|
|
52
|
-
"@contentrain/mcp": "3.0.
|
|
53
|
-
"@contentrain/query": "7.0.
|
|
54
|
-
"@contentrain/types": "1.0
|
|
52
|
+
"@contentrain/mcp": "3.0.3",
|
|
53
|
+
"@contentrain/query": "7.0.5",
|
|
54
|
+
"@contentrain/types": "1.1.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/ws": "^8.5.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as o}from"./Presence-CJ45TUKi.js";const[e]=o("ConfigProvider");export{e as i};
|