@objectstack/platform-objects 11.1.0 → 11.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/audit/sys-notification.object.ts","../../src/audit/sys-attachment.object.ts","../../src/audit/sys-email.object.ts","../../src/audit/sys-email-template.object.ts","../../src/audit/sys-saved-report.object.ts","../../src/audit/sys-report-schedule.object.ts","../../src/audit/sys-job.object.ts","../../src/audit/sys-job-run.object.ts","../../src/audit/sys-job-queue.object.ts"],"names":["ObjectSchema","Field"],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_notification — Notification Event (ADR-0030 Layer 2)\n *\n * **Re-modeled (ADR-0030)**: this object was previously a per-user inbox. It is\n * now the platform's notification **event** — one row per `emit()`, the single\n * ingress through which every producer (the flow `notify` node, collaboration\n * `@mention`, record assignment, system alerts) publishes. It carries no\n * recipient and no read-state: those live downstream in the delivery\n * materialization (`sys_inbox_message`) and the receipt\n * (`sys_notification_receipt`).\n *\n * Layering (ADR-0012 / ADR-0030):\n * L2 event → this object (`topic` / `payload` / `dedup_key` / `severity`)\n * L4 delivery → `sys_notification_delivery` (outbox; P1)\n * L5 materialize → `sys_inbox_message` (in-app), email/push/… per channel\n * L5 receipt → `sys_notification_receipt` (read/clicked/dismissed)\n *\n * Writers: `NotificationService.emit()` only — **no producer writes this row\n * directly** (single-ingress rule). Readers: the delivery pipeline; the admin\n * notification-event log. The Console bell reads `sys_inbox_message`, not this.\n *\n * @namespace sys\n */\nexport const SysNotification = ObjectSchema.create({\n name: 'sys_notification',\n label: 'Notification Event',\n pluralLabel: 'Notification Events',\n icon: 'bell',\n isSystem: true,\n managedBy: 'system',\n description: 'Notification events — one row per emit() (ADR-0030 Layer 2 ingress)',\n displayNameField: 'topic',\n titleFormat: '{topic}',\n compactLayout: ['topic', 'severity', 'source_object', 'created_at'],\n\n listViews: {\n recent: {\n type: 'grid',\n name: 'recent',\n label: 'Recent',\n data: { provider: 'object', object: 'sys_notification' },\n columns: ['topic', 'severity', 'actor_id', 'source_object', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n pagination: { pageSize: 50 },\n emptyState: { title: 'No events', message: 'No notification events have been emitted.' },\n },\n by_topic: {\n type: 'grid',\n name: 'by_topic',\n label: 'By Topic',\n data: { provider: 'object', object: 'sys_notification' },\n columns: ['topic', 'severity', 'source_object', 'source_id', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n pagination: { pageSize: 100 },\n grouping: { fields: [{ field: 'topic', order: 'asc', collapsed: false }] },\n },\n },\n\n fields: {\n id: Field.text({\n label: 'Notification ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n // ── Event identity ───────────────────────────────────────────\n topic: Field.text({\n label: 'Topic',\n required: true,\n maxLength: 200,\n searchable: true,\n description: 'Notification topic, e.g. task.assigned, collab.mention',\n group: 'Event',\n }),\n\n payload: Field.json({\n label: 'Payload',\n required: false,\n description: 'Template inputs carried to channels (title/body/url/actor/source/…)',\n group: 'Event',\n }),\n\n severity: Field.select(['info', 'warning', 'critical'], {\n label: 'Severity',\n required: false,\n defaultValue: 'info',\n description: 'Severity hint for rendering / filtering',\n group: 'Event',\n }),\n\n dedup_key: Field.text({\n label: 'Dedup Key',\n required: false,\n maxLength: 255,\n description: 'Idempotency key within a topic window; a repeat emit is a no-op',\n group: 'Event',\n }),\n\n // ── Source linkage ───────────────────────────────────────────\n source_object: Field.text({\n label: 'Source Object',\n required: false,\n maxLength: 100,\n description: 'Object name of the related record (e.g. lead, opportunity)',\n group: 'Source',\n }),\n\n source_id: Field.text({\n label: 'Source Record',\n required: false,\n maxLength: 100,\n description: 'Record id within source_object',\n group: 'Source',\n }),\n\n actor_id: Field.lookup('sys_user', {\n label: 'Actor',\n required: false,\n description: 'User who caused the event (mentioner, assigner)',\n group: 'Source',\n }),\n\n // ── Lifecycle ────────────────────────────────────────────────\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['topic', 'created_at'] },\n // Idempotency spine (ADR-0030). UNIQUE so `emit()` dedup is race-safe: a\n // concurrent emit with the same dedup_key loses the insert and converges to\n // the winner (mirrors the delivery outbox). SQL treats NULLs as distinct, so\n // the (common) events with no dedup_key are unconstrained.\n { fields: ['dedup_key'], unique: true },\n { fields: ['source_object', 'source_id'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_attachment — Polymorphic File ↔ Record Link\n *\n * Generic join row that attaches a previously-uploaded `sys_file` to\n * any other record. Mirrors the Salesforce \"ContentDocumentLink\" /\n * ServiceNow \"sys_attachment\" pattern: file storage and \"where this\n * file is attached\" are separated, so the same `sys_file` row can be\n * surfaced on multiple records, an org-wide library, or a thread.\n *\n * Conventions:\n * - `parent_object` is the short object name (e.g. `account`, `lead`,\n * `opportunity`, `case`, `sys_comment`).\n * - `parent_id` is the parent record's primary key.\n * - `(parent_object, parent_id)` is the natural index for the\n * \"files on this record\" lookup.\n * - `share_type` follows the Salesforce convention: V = Viewer,\n * C = Collaborator, I = Inferred (inherited from parent record).\n *\n * @namespace sys\n */\nexport const SysAttachment = ObjectSchema.create({\n name: 'sys_attachment',\n label: 'Attachment',\n pluralLabel: 'Attachments',\n icon: 'paperclip',\n isSystem: true,\n managedBy: 'platform',\n description: 'Polymorphic link between a sys_file and any other record',\n titleFormat: '{file_name} → {parent_object}/{parent_id}',\n compactLayout: ['created_at', 'parent_object', 'file_name', 'mime_type', 'size'],\n\n fields: {\n id: Field.text({\n label: 'Attachment ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n // ── Parent (polymorphic) ────────────────────────────────────\n parent_object: Field.text({\n label: 'Parent Object',\n required: true,\n searchable: true,\n maxLength: 128,\n description: 'Short object name of the attached-to record (e.g. account, lead)',\n group: 'Parent',\n }),\n\n parent_id: Field.text({\n label: 'Parent Record',\n required: true,\n searchable: true,\n maxLength: 64,\n description: 'Primary key of the attached-to record',\n group: 'Parent',\n }),\n\n // ── File reference ──────────────────────────────────────────\n file_id: Field.lookup('sys_file', {\n label: 'File',\n required: true,\n description: 'The sys_file storage entry being attached',\n group: 'File',\n }),\n\n file_name: Field.text({\n label: 'File Name',\n required: false,\n searchable: true,\n maxLength: 255,\n description: 'Denormalised copy of sys_file.name for fast list rendering',\n group: 'File',\n }),\n\n mime_type: Field.text({\n label: 'MIME Type',\n required: false,\n maxLength: 128,\n group: 'File',\n }),\n\n size: Field.number({\n label: 'Size (bytes)',\n required: false,\n group: 'File',\n }),\n\n // ── Sharing ────────────────────────────────────────────────\n share_type: Field.select(\n ['viewer', 'collaborator', 'inferred'],\n {\n label: 'Share Type',\n defaultValue: 'viewer',\n description: 'viewer | collaborator | inferred (inherited from parent record)',\n group: 'Sharing',\n },\n ),\n\n visibility: Field.select(\n ['internal', 'all_users', 'shared_users'],\n {\n label: 'Visibility',\n defaultValue: 'internal',\n group: 'Sharing',\n },\n ),\n\n // ── Authoring ──────────────────────────────────────────────\n uploaded_by: Field.lookup('sys_user', {\n label: 'Uploaded By',\n required: false,\n group: 'System',\n }),\n\n description: Field.textarea({\n label: 'Description',\n required: false,\n maxLength: 1024,\n group: 'File',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n required: false,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['parent_object', 'parent_id', 'created_at'] },\n { fields: ['file_id'] },\n { fields: ['uploaded_by'] },\n ],\n\n enable: {\n trackHistory: false,\n searchable: true,\n apiEnabled: true,\n trash: true,\n mru: false,\n clone: false,\n },\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_email — Outbound Email Log\n *\n * Persistent record of every email the platform has tried to deliver.\n * Lets administrators audit campaigns, debug delivery failures, and\n * lets users see \"what was sent\" from a record's activity stream.\n *\n * The actual SMTP / API delivery is performed by an `IEmailTransport`\n * implementation injected into the EmailServicePlugin (e.g. nodemailer,\n * SendGrid, Resend). This object only stores the outcome.\n *\n * Typical writers: `IEmailService.send()`.\n * Typical readers: activity timeline, deliverability dashboard.\n *\n * @namespace sys\n */\nexport const SysEmail = ObjectSchema.create({\n name: 'sys_email',\n label: 'Email',\n pluralLabel: 'Emails',\n icon: 'mail',\n isSystem: true,\n managedBy: 'append-only',\n description: 'Outbound email delivery log',\n displayNameField: 'subject',\n titleFormat: '{subject}',\n compactLayout: ['subject', 'to', 'status', 'sent_at'],\n\n fields: {\n id: Field.text({\n label: 'Email ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n // ── Envelope ─────────────────────────────────────────────────\n message_id: Field.text({\n label: 'Message-ID',\n required: false,\n maxLength: 255,\n description: 'RFC-5322 Message-ID assigned by the transport',\n group: 'Envelope',\n }),\n\n from_address: Field.text({\n label: 'From',\n required: true,\n maxLength: 320,\n searchable: true,\n group: 'Envelope',\n }),\n\n to_addresses: Field.text({\n label: 'To',\n required: true,\n maxLength: 4000,\n searchable: true,\n description: 'Comma-separated recipient addresses',\n group: 'Envelope',\n }),\n\n cc_addresses: Field.text({\n label: 'Cc',\n required: false,\n maxLength: 4000,\n group: 'Envelope',\n }),\n\n bcc_addresses: Field.text({\n label: 'Bcc',\n required: false,\n maxLength: 4000,\n group: 'Envelope',\n }),\n\n reply_to: Field.text({\n label: 'Reply-To',\n required: false,\n maxLength: 320,\n group: 'Envelope',\n }),\n\n // ── Content ──────────────────────────────────────────────────\n subject: Field.text({\n label: 'Subject',\n required: true,\n maxLength: 998,\n searchable: true,\n group: 'Content',\n }),\n\n body_text: Field.textarea({\n label: 'Body (text)',\n required: false,\n searchable: true,\n group: 'Content',\n }),\n\n body_html: Field.textarea({\n label: 'Body (HTML)',\n required: false,\n group: 'Content',\n }),\n\n // ── Delivery state ───────────────────────────────────────────\n status: Field.select(\n ['queued', 'sent', 'failed'],\n {\n label: 'Status',\n required: true,\n defaultValue: 'queued',\n description: 'Lifecycle state — queued by IEmailService.send before transport call',\n group: 'State',\n },\n ),\n\n error: Field.textarea({\n label: 'Error',\n required: false,\n description: 'Transport error message when status=failed',\n group: 'State',\n }),\n\n attempt_count: Field.number({\n label: 'Attempts',\n required: false,\n defaultValue: 0,\n description: 'Number of delivery attempts performed by the service',\n group: 'State',\n }),\n\n sent_at: Field.datetime({\n label: 'Sent At',\n required: false,\n description: 'Set when status transitions to \"sent\"',\n group: 'State',\n }),\n\n // ── Source linkage ───────────────────────────────────────────\n related_object: Field.text({\n label: 'Related Object',\n required: false,\n maxLength: 100,\n description: 'Object name of the related record (e.g. lead, opportunity)',\n group: 'Source',\n }),\n\n related_id: Field.text({\n label: 'Related Record',\n required: false,\n maxLength: 100,\n description: 'Record id within related_object',\n group: 'Source',\n }),\n\n sent_by: Field.lookup('sys_user', {\n label: 'Sent By',\n required: false,\n group: 'Source',\n }),\n\n // ── Lifecycle ────────────────────────────────────────────────\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n required: false,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['status', 'created_at'] },\n { fields: ['related_object', 'related_id'] },\n { fields: ['sent_by'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_email_template — Outbound Email Template (metadata row)\n *\n * Backing persistence for the `email_template` metadata type. Each\n * row is the runtime representation of an `EmailTemplate` Zod\n * envelope. Resolved by `(name, locale)`; the EmailService picks the\n * best-matching locale for the recipient, falling back to `en-US`.\n *\n * Authoring: built-in templates are seeded by `EmailServicePlugin`\n * on `kernel:ready`; administrators may edit subject/body in Studio\n * and tenants may overlay specific rows.\n *\n * @namespace sys\n */\nexport const SysEmailTemplate = ObjectSchema.create({\n name: 'sys_email_template',\n label: 'Email Template',\n pluralLabel: 'Email Templates',\n icon: 'mail',\n isSystem: true,\n managedBy: 'config',\n description: 'Outbound email template (subject + body + variables) resolved by name+locale',\n displayNameField: 'label',\n titleFormat: '{label}',\n compactLayout: ['name', 'label', 'category', 'locale', 'active'],\n\n fields: {\n id: Field.text({\n label: 'ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n // ── Identity ─────────────────────────────────────────────────\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 128,\n description: 'Dotted snake_case identifier (e.g. auth.password_reset)',\n group: 'Identity',\n }),\n label: Field.text({\n label: 'Label',\n required: true,\n maxLength: 200,\n description: 'Human-readable name shown in Studio',\n group: 'Identity',\n }),\n category: Field.select(\n ['auth', 'notification', 'workflow', 'marketing', 'custom'],\n {\n label: 'Category',\n required: true,\n defaultValue: 'custom',\n group: 'Identity',\n },\n ),\n locale: Field.text({\n label: 'Locale',\n required: true,\n defaultValue: 'en-US',\n maxLength: 16,\n description: 'BCP-47 locale tag (en-US, zh-CN, …)',\n group: 'Identity',\n }),\n description: Field.textarea({\n label: 'Description',\n required: false,\n group: 'Identity',\n }),\n\n // ── Content ──────────────────────────────────────────────────\n subject: Field.text({\n label: 'Subject',\n required: true,\n maxLength: 500,\n description: 'Subject template; supports {{var.path}} placeholders',\n group: 'Content',\n }),\n body_html: Field.textarea({\n label: 'HTML Body',\n required: true,\n description: 'HTML body template; supports {{var.path}} placeholders',\n group: 'Content',\n }),\n body_text: Field.textarea({\n label: 'Plain Text Body',\n required: false,\n description: 'Optional plain-text alternative (auto-derived from HTML when blank)',\n group: 'Content',\n }),\n\n // ── Envelope overrides ───────────────────────────────────────\n from_name: Field.text({\n label: 'From Name',\n required: false,\n maxLength: 200,\n group: 'Envelope',\n }),\n from_address: Field.text({\n label: 'From Address',\n required: false,\n maxLength: 255,\n group: 'Envelope',\n }),\n reply_to: Field.text({\n label: 'Reply-To',\n required: false,\n maxLength: 255,\n group: 'Envelope',\n }),\n\n // ── Lifecycle ────────────────────────────────────────────────\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n group: 'Lifecycle',\n }),\n is_system: Field.boolean({\n label: 'System Template',\n required: false,\n defaultValue: false,\n readonly: true,\n description: 'Provided by a plugin / platform; tenants may edit but should not delete',\n group: 'Lifecycle',\n }),\n\n /**\n * Variables declared by the template author. Stored as JSON text\n * (array of {name,type,required,description}). Used by the Studio\n * authoring UI to render form hints and by sendTemplate() to\n * validate required vars at runtime.\n */\n variables_json: Field.textarea({\n label: 'Variables (JSON)',\n required: false,\n description: 'JSON array of {name,type,required,description}',\n group: 'Lifecycle',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name', 'locale'], unique: true },\n { fields: ['category'] },\n { fields: ['active'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_saved_report — Reusable Report Definition\n *\n * A persisted query against a single object that can be re-executed\n * on demand or on a schedule. Acts as the bridge between ad-hoc\n * filtering in the UI and the structured report library administrators\n * curate.\n *\n * The query envelope (`query_json`) is the same shape ObjectQL accepts\n * — `{ filter, fields, orderBy, limit, groupBy }` — so a report can be\n * round-tripped between the list view and the report definition\n * without re-translation.\n *\n * Conventions:\n * - `object_name` is the short object the report queries.\n * - `format` controls how `IReportService.run()` renders the rows\n * (`csv` for downloads, `html_table` for email digests, `json`\n * for raw API consumption).\n *\n * @namespace sys\n */\nexport const SysSavedReport = ObjectSchema.create({\n name: 'sys_saved_report',\n label: 'Saved Report',\n pluralLabel: 'Saved Reports',\n icon: 'bar-chart',\n isSystem: true,\n managedBy: 'platform',\n description: 'Persisted ObjectQL report definition — re-runnable and schedulable',\n displayNameField: 'name',\n titleFormat: '{name}',\n compactLayout: ['name', 'object_name', 'format', 'owner_id', 'updated_at'],\n\n fields: {\n id: Field.text({\n label: 'Report ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 200,\n searchable: true,\n group: 'Definition',\n }),\n\n description: Field.textarea({\n label: 'Description',\n required: false,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: true,\n maxLength: 100,\n description: 'Short object name the report queries',\n group: 'Definition',\n }),\n\n query_json: Field.textarea({\n label: 'Query',\n required: true,\n description: 'ObjectQL query envelope — { filter, fields, orderBy, limit, groupBy }',\n group: 'Definition',\n }),\n\n format: Field.select(\n ['csv', 'json', 'html_table'],\n {\n label: 'Format',\n required: true,\n defaultValue: 'csv',\n description: 'Rendering used by IReportService.run() and email digests',\n group: 'Definition',\n },\n ),\n\n owner_id: Field.lookup('sys_user', {\n label: 'Owner',\n required: false,\n description: 'User that owns the report definition (drives sharing)',\n group: 'Provenance',\n }),\n\n last_run_at: Field.datetime({\n label: 'Last Run',\n required: false,\n description: 'Stamped by IReportService.run() on successful execution',\n group: 'State',\n }),\n\n last_row_count: Field.number({\n label: 'Last Row Count',\n required: false,\n group: 'State',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n required: false,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['object_name'] },\n { fields: ['owner_id'] },\n { fields: ['name'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_report_schedule — Recurring Report Delivery\n *\n * Joins a `sys_saved_report` to an interval and a recipient list so\n * the reports plugin can deliver \"daily pipeline digest\" / \"weekly\n * lead summary\" without a separate workflow.\n *\n * Scheduling: `interval_minutes` (1440 = daily, 10080 = weekly) or a\n * `cron_expression`. When a `cron_expression` is set it wins over\n * `interval_minutes` and is evaluated in `timezone` (default UTC) via\n * croner — so \"every weekday 09:00 local\" is expressible. `next_run_at`\n * is computed from whichever applies.\n *\n * Delivery: when the master dispatch job ticks (every minute by\n * default), every schedule with `next_run_at <= now` is loaded,\n * its report is executed, the result is rendered into the report's\n * `format`, and the rendered body is emailed to each address in\n * `recipients`. `next_run_at` is then advanced by `interval_minutes`.\n *\n * Conventions:\n * - `recipients` is a comma-separated list of RFC-5322 addresses to\n * keep the schema driver-agnostic. The reports plugin splits and\n * trims before handing the list to IEmailService.\n * - `active=false` disables the schedule without losing its history.\n *\n * @namespace sys\n */\nexport const SysReportSchedule = ObjectSchema.create({\n name: 'sys_report_schedule',\n label: 'Report Schedule',\n pluralLabel: 'Report Schedules',\n icon: 'clock',\n isSystem: true,\n managedBy: 'platform',\n description: 'Recurring delivery of a sys_saved_report via email',\n titleFormat: '{report_id} → {recipients}',\n compactLayout: ['report_id', 'recipients', 'interval_minutes', 'active', 'next_run_at'],\n\n fields: {\n id: Field.text({\n label: 'Schedule ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n report_id: Field.lookup('sys_saved_report', {\n label: 'Report',\n required: true,\n group: 'Schedule',\n }),\n\n name: Field.text({\n label: 'Name',\n required: false,\n maxLength: 200,\n description: 'Optional label for the digest — used in the email subject',\n group: 'Schedule',\n }),\n\n interval_minutes: Field.number({\n label: 'Interval (minutes)',\n required: false,\n defaultValue: 1440,\n description: 'How often to send (1440 = daily, 10080 = weekly)',\n group: 'Schedule',\n }),\n\n cron_expression: Field.text({\n label: 'Cron Expression',\n required: false,\n maxLength: 100,\n description: 'Optional 5/6-field cron — overrides interval_minutes when present',\n group: 'Schedule',\n }),\n\n timezone: Field.text({\n label: 'Timezone',\n required: false,\n maxLength: 64,\n defaultValue: 'UTC',\n group: 'Schedule',\n }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n group: 'Schedule',\n }),\n\n recipients: Field.text({\n label: 'Recipients',\n required: true,\n maxLength: 4000,\n description: 'Comma-separated email addresses',\n group: 'Delivery',\n }),\n\n format: Field.select(\n ['csv', 'html_table'],\n {\n label: 'Format',\n required: false,\n defaultValue: 'html_table',\n description: 'Render format — csv is attached, html_table is inlined',\n group: 'Delivery',\n },\n ),\n\n subject_template: Field.text({\n label: 'Subject Template',\n required: false,\n maxLength: 200,\n description: 'Email subject; {{name}} / {{date}} / {{rows}} are substituted',\n group: 'Delivery',\n }),\n\n owner_id: Field.lookup('sys_user', {\n label: 'Owner',\n required: false,\n group: 'Provenance',\n }),\n\n next_run_at: Field.datetime({\n label: 'Next Run',\n required: false,\n description: 'Dispatcher loads schedules where next_run_at <= now',\n group: 'State',\n }),\n\n last_sent_at: Field.datetime({\n label: 'Last Sent',\n required: false,\n group: 'State',\n }),\n\n last_status: Field.select(\n ['ok', 'failed', 'skipped'],\n {\n label: 'Last Status',\n required: false,\n group: 'State',\n },\n ),\n\n last_error: Field.textarea({\n label: 'Last Error',\n required: false,\n group: 'State',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n required: false,\n group: 'System',\n }),\n },\n\n indexes: [\n // Hot path for the dispatch loop.\n { fields: ['active', 'next_run_at'] },\n { fields: ['report_id'] },\n { fields: ['owner_id'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_job — Registered Background Jobs\n *\n * Catalogue row for every job currently scheduled by an `IJobService`\n * implementation. Lets ops see the full list of recurring/one-off tasks\n * (cron, interval, once) running on this ObjectStack instance, when each\n * last ran, and whether it is currently active.\n *\n * Writers: the active job adapter (`DbJobAdapter` upserts on `schedule()`).\n * Readers: Studio \"Background Jobs\" view, ops dashboards.\n *\n * @namespace sys\n */\nexport const SysJob = ObjectSchema.create({\n name: 'sys_job',\n label: 'Background Job',\n pluralLabel: 'Background Jobs',\n icon: 'clock',\n isSystem: true,\n managedBy: 'system',\n description: 'Catalogue of registered background jobs',\n displayNameField: 'name',\n titleFormat: '{name}',\n compactLayout: ['name', 'schedule_type', 'active', 'last_run_at', 'last_status'],\n\n fields: {\n id: Field.text({ label: 'Job ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Job Name',\n required: true,\n maxLength: 255,\n searchable: true,\n description: 'Unique job identifier (snake_case)',\n group: 'Identity',\n }),\n\n schedule_type: Field.select(['cron', 'interval', 'once'], {\n label: 'Schedule Type',\n required: true,\n group: 'Schedule',\n }),\n\n schedule_expression: Field.text({\n label: 'Expression',\n required: false,\n maxLength: 200,\n description: 'Cron expression / interval ms / ISO datetime',\n group: 'Schedule',\n }),\n\n timezone: Field.text({\n label: 'Timezone',\n required: false,\n maxLength: 100,\n group: 'Schedule',\n }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Whether the scheduler is currently running this job',\n group: 'State',\n }),\n\n last_run_at: Field.datetime({ label: 'Last Run At', required: false, group: 'State' }),\n last_status: Field.select(\n ['success', 'failed', 'timeout', 'running'],\n { label: 'Last Status', required: false, group: 'State' },\n ),\n last_error: Field.textarea({ label: 'Last Error', required: false, group: 'State' }),\n run_count: Field.number({ label: 'Run Count', required: false, defaultValue: 0, group: 'State' }),\n failure_count: Field.number({ label: 'Failure Count', required: false, defaultValue: 0, group: 'State' }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['active'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_job_run — Background Job Execution History\n *\n * Each row is one execution of a registered job (`sys_job`). Stores\n * outcome, duration, error, and whether the run was a manual trigger or\n * a scheduled tick. Replaces the in-memory `executions[]` array from\n * `IntervalJobAdapter`.\n *\n * Writers: the active job adapter.\n * Readers: Studio \"Job Runs\" view, dashboards, alerting.\n *\n * @namespace sys\n */\nexport const SysJobRun = ObjectSchema.create({\n name: 'sys_job_run',\n label: 'Job Run',\n pluralLabel: 'Job Runs',\n icon: 'play',\n isSystem: true,\n managedBy: 'append-only',\n description: 'Background job execution audit trail',\n displayNameField: 'job_name',\n titleFormat: '{job_name} @ {started_at}',\n compactLayout: ['job_name', 'status', 'started_at', 'duration_ms', 'attempt'],\n\n fields: {\n id: Field.text({ label: 'Run ID', required: true, readonly: true, group: 'System' }),\n\n job_name: Field.text({\n label: 'Job',\n required: true,\n maxLength: 255,\n searchable: true,\n group: 'Identity',\n }),\n\n status: Field.select(\n ['running', 'success', 'failed', 'timeout'],\n { label: 'Status', required: true, defaultValue: 'running', group: 'State' },\n ),\n\n started_at: Field.datetime({ label: 'Started At', required: true, group: 'State' }),\n completed_at: Field.datetime({ label: 'Completed At', required: false, group: 'State' }),\n duration_ms: Field.number({ label: 'Duration (ms)', required: false, group: 'State' }),\n attempt: Field.number({\n label: 'Attempt',\n required: false,\n defaultValue: 1,\n description: '1 for first run, >1 for retries/replays',\n group: 'State',\n }),\n\n trigger: Field.select(\n ['schedule', 'manual', 'replay'],\n { label: 'Trigger', required: false, defaultValue: 'schedule', group: 'State' },\n ),\n\n error: Field.textarea({ label: 'Error', required: false, group: 'State' }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['job_name', 'started_at'] },\n { fields: ['status', 'started_at'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_job_queue — Durable Background Job / Message Queue + DLQ\n *\n * The persistent backing store for `DbQueueAdapter`. Each row is one\n * enqueued message — pending until a worker leases (`status='running'`),\n * then `completed`, `failed`, or finally `dlq` after exhausting retries.\n *\n * DLQ rows are simply `status='dlq'` rows in this same table; no separate\n * table needed. Listing/replay is a filter on `status`.\n *\n * Idempotency: `idempotency_key` + `queue` are deduplicated by the adapter\n * over a configurable window (default 24h) — the column is indexed.\n *\n * Concurrency: workers claim a row by CAS-updating `status` from `pending`\n * to `running` plus setting `locked_by`/`locked_until`. Reads only return\n * rows whose lock has not been claimed (or whose lease expired).\n *\n * Writers: `DbQueueAdapter` (publish/lease/complete/fail).\n * Readers: Studio DLQ view, ops dashboards, the adapter's worker loop.\n *\n * @namespace sys\n */\nexport const SysJobQueue = ObjectSchema.create({\n name: 'sys_job_queue',\n label: 'Job Queue Message',\n pluralLabel: 'Job Queue Messages',\n icon: 'inbox',\n isSystem: true,\n managedBy: 'system',\n description: 'Durable job/message queue including dead letters',\n displayNameField: 'queue',\n titleFormat: '{queue} #{id}',\n compactLayout: ['queue', 'status', 'attempts', 'scheduled_for', 'last_error'],\n\n fields: {\n id: Field.text({ label: 'Message ID', required: true, readonly: true, group: 'System' }),\n\n queue: Field.text({\n label: 'Queue',\n required: true,\n maxLength: 255,\n searchable: true,\n description: 'Logical queue name (snake_case)',\n group: 'Identity',\n }),\n\n idempotency_key: Field.text({\n label: 'Idempotency Key',\n required: false,\n maxLength: 255,\n description: 'Deduplication key within (queue, window)',\n group: 'Identity',\n }),\n\n payload_json: Field.textarea({\n label: 'Payload (JSON)',\n required: false,\n description: 'Serialized message body',\n group: 'Content',\n }),\n\n metadata_json: Field.textarea({\n label: 'Metadata (JSON)',\n required: false,\n description: 'Serialized metadata bag (tenant_id, source_record, ...)',\n group: 'Content',\n }),\n\n status: Field.select(\n ['pending', 'running', 'completed', 'failed', 'dlq'],\n {\n label: 'Status',\n required: true,\n defaultValue: 'pending',\n description: 'Lifecycle state',\n group: 'State',\n },\n ),\n\n priority: Field.number({\n label: 'Priority',\n required: false,\n defaultValue: 100,\n description: 'Lower = higher priority',\n group: 'Schedule',\n }),\n\n attempts: Field.number({ label: 'Attempts', required: false, defaultValue: 0, group: 'State' }),\n max_attempts: Field.number({ label: 'Max Attempts', required: false, defaultValue: 3, group: 'State' }),\n\n backoff_type: Field.select(\n ['fixed', 'exponential'],\n { label: 'Backoff', required: false, defaultValue: 'exponential', group: 'Schedule' },\n ),\n backoff_delay_ms: Field.number({\n label: 'Backoff Base (ms)',\n required: false,\n defaultValue: 1000,\n group: 'Schedule',\n }),\n backoff_max_delay_ms: Field.number({\n label: 'Backoff Cap (ms)',\n required: false,\n group: 'Schedule',\n }),\n\n scheduled_for: Field.datetime({\n label: 'Scheduled For',\n required: false,\n description: 'Earliest time a worker may lease this message',\n group: 'Schedule',\n }),\n\n locked_by: Field.text({\n label: 'Locked By',\n required: false,\n maxLength: 255,\n description: 'Worker id holding the lease',\n group: 'Lease',\n }),\n locked_until: Field.datetime({\n label: 'Locked Until',\n required: false,\n description: 'Lease expiry; if past, another worker may claim',\n group: 'Lease',\n }),\n\n last_error: Field.textarea({ label: 'Last Error', required: false, group: 'State' }),\n completed_at: Field.datetime({ label: 'Completed At', required: false, group: 'State' }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['queue', 'status', 'scheduled_for'] },\n { fields: ['idempotency_key', 'queue'] },\n { fields: ['status'] },\n ],\n});\n"]}
1
+ {"version":3,"sources":["../../src/audit/sys-notification.object.ts","../../src/audit/sys-attachment.object.ts","../../src/audit/sys-email.object.ts","../../src/audit/sys-email-template.object.ts","../../src/audit/sys-saved-report.object.ts","../../src/audit/sys-report-schedule.object.ts","../../src/audit/sys-job.object.ts","../../src/audit/sys-job-run.object.ts","../../src/audit/sys-job-queue.object.ts"],"names":["ObjectSchema","Field"],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_notification — Notification Event (ADR-0030 Layer 2)\n *\n * **Re-modeled (ADR-0030)**: this object was previously a per-user inbox. It is\n * now the platform's notification **event** — one row per `emit()`, the single\n * ingress through which every producer (the flow `notify` node, collaboration\n * `@mention`, record assignment, system alerts) publishes. It carries no\n * recipient and no read-state: those live downstream in the delivery\n * materialization (`sys_inbox_message`) and the receipt\n * (`sys_notification_receipt`).\n *\n * Layering (ADR-0012 / ADR-0030):\n * L2 event → this object (`topic` / `payload` / `dedup_key` / `severity`)\n * L4 delivery → `sys_notification_delivery` (outbox; P1)\n * L5 materialize → `sys_inbox_message` (in-app), email/push/… per channel\n * L5 receipt → `sys_notification_receipt` (read/clicked/dismissed)\n *\n * Writers: `NotificationService.emit()` only — **no producer writes this row\n * directly** (single-ingress rule). Readers: the delivery pipeline; the admin\n * notification-event log. The Console bell reads `sys_inbox_message`, not this.\n *\n * @namespace sys\n */\nexport const SysNotification = ObjectSchema.create({\n name: 'sys_notification',\n label: 'Notification Event',\n pluralLabel: 'Notification Events',\n icon: 'bell',\n isSystem: true,\n managedBy: 'system',\n description: 'Notification events — one row per emit() (ADR-0030 Layer 2 ingress)',\n displayNameField: 'topic',\n nameField: 'topic', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{topic}',\n compactLayout: ['topic', 'severity', 'source_object', 'created_at'],\n\n listViews: {\n recent: {\n type: 'grid',\n name: 'recent',\n label: 'Recent',\n data: { provider: 'object', object: 'sys_notification' },\n columns: ['topic', 'severity', 'actor_id', 'source_object', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n pagination: { pageSize: 50 },\n emptyState: { title: 'No events', message: 'No notification events have been emitted.' },\n },\n by_topic: {\n type: 'grid',\n name: 'by_topic',\n label: 'By Topic',\n data: { provider: 'object', object: 'sys_notification' },\n columns: ['topic', 'severity', 'source_object', 'source_id', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n pagination: { pageSize: 100 },\n grouping: { fields: [{ field: 'topic', order: 'asc', collapsed: false }] },\n },\n },\n\n fields: {\n id: Field.text({\n label: 'Notification ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n // ── Event identity ───────────────────────────────────────────\n topic: Field.text({\n label: 'Topic',\n required: true,\n maxLength: 200,\n searchable: true,\n description: 'Notification topic, e.g. task.assigned, collab.mention',\n group: 'Event',\n }),\n\n payload: Field.json({\n label: 'Payload',\n required: false,\n description: 'Template inputs carried to channels (title/body/url/actor/source/…)',\n group: 'Event',\n }),\n\n severity: Field.select(['info', 'warning', 'critical'], {\n label: 'Severity',\n required: false,\n defaultValue: 'info',\n description: 'Severity hint for rendering / filtering',\n group: 'Event',\n }),\n\n dedup_key: Field.text({\n label: 'Dedup Key',\n required: false,\n maxLength: 255,\n description: 'Idempotency key within a topic window; a repeat emit is a no-op',\n group: 'Event',\n }),\n\n // ── Source linkage ───────────────────────────────────────────\n source_object: Field.text({\n label: 'Source Object',\n required: false,\n maxLength: 100,\n description: 'Object name of the related record (e.g. lead, opportunity)',\n group: 'Source',\n }),\n\n source_id: Field.text({\n label: 'Source Record',\n required: false,\n maxLength: 100,\n description: 'Record id within source_object',\n group: 'Source',\n }),\n\n actor_id: Field.lookup('sys_user', {\n label: 'Actor',\n required: false,\n description: 'User who caused the event (mentioner, assigner)',\n group: 'Source',\n }),\n\n // ── Lifecycle ────────────────────────────────────────────────\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['topic', 'created_at'] },\n // Idempotency spine (ADR-0030). UNIQUE so `emit()` dedup is race-safe: a\n // concurrent emit with the same dedup_key loses the insert and converges to\n // the winner (mirrors the delivery outbox). SQL treats NULLs as distinct, so\n // the (common) events with no dedup_key are unconstrained.\n { fields: ['dedup_key'], unique: true },\n { fields: ['source_object', 'source_id'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_attachment — Polymorphic File ↔ Record Link\n *\n * Generic join row that attaches a previously-uploaded `sys_file` to\n * any other record. Mirrors the Salesforce \"ContentDocumentLink\" /\n * ServiceNow \"sys_attachment\" pattern: file storage and \"where this\n * file is attached\" are separated, so the same `sys_file` row can be\n * surfaced on multiple records, an org-wide library, or a thread.\n *\n * Conventions:\n * - `parent_object` is the short object name (e.g. `account`, `lead`,\n * `opportunity`, `case`, `sys_comment`).\n * - `parent_id` is the parent record's primary key.\n * - `(parent_object, parent_id)` is the natural index for the\n * \"files on this record\" lookup.\n * - `share_type` follows the Salesforce convention: V = Viewer,\n * C = Collaborator, I = Inferred (inherited from parent record).\n *\n * @namespace sys\n */\nexport const SysAttachment = ObjectSchema.create({\n name: 'sys_attachment',\n label: 'Attachment',\n pluralLabel: 'Attachments',\n icon: 'paperclip',\n isSystem: true,\n managedBy: 'platform',\n description: 'Polymorphic link between a sys_file and any other record',\n titleFormat: '{file_name} → {parent_object}/{parent_id}',\n compactLayout: ['created_at', 'parent_object', 'file_name', 'mime_type', 'size'],\n\n fields: {\n id: Field.text({\n label: 'Attachment ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n // ── Parent (polymorphic) ────────────────────────────────────\n parent_object: Field.text({\n label: 'Parent Object',\n required: true,\n searchable: true,\n maxLength: 128,\n description: 'Short object name of the attached-to record (e.g. account, lead)',\n group: 'Parent',\n }),\n\n parent_id: Field.text({\n label: 'Parent Record',\n required: true,\n searchable: true,\n maxLength: 64,\n description: 'Primary key of the attached-to record',\n group: 'Parent',\n }),\n\n // ── File reference ──────────────────────────────────────────\n file_id: Field.lookup('sys_file', {\n label: 'File',\n required: true,\n description: 'The sys_file storage entry being attached',\n group: 'File',\n }),\n\n file_name: Field.text({\n label: 'File Name',\n required: false,\n searchable: true,\n maxLength: 255,\n description: 'Denormalised copy of sys_file.name for fast list rendering',\n group: 'File',\n }),\n\n mime_type: Field.text({\n label: 'MIME Type',\n required: false,\n maxLength: 128,\n group: 'File',\n }),\n\n size: Field.number({\n label: 'Size (bytes)',\n required: false,\n group: 'File',\n }),\n\n // ── Sharing ────────────────────────────────────────────────\n share_type: Field.select(\n ['viewer', 'collaborator', 'inferred'],\n {\n label: 'Share Type',\n defaultValue: 'viewer',\n description: 'viewer | collaborator | inferred (inherited from parent record)',\n group: 'Sharing',\n },\n ),\n\n visibility: Field.select(\n ['internal', 'all_users', 'shared_users'],\n {\n label: 'Visibility',\n defaultValue: 'internal',\n group: 'Sharing',\n },\n ),\n\n // ── Authoring ──────────────────────────────────────────────\n uploaded_by: Field.lookup('sys_user', {\n label: 'Uploaded By',\n required: false,\n group: 'System',\n }),\n\n description: Field.textarea({\n label: 'Description',\n required: false,\n maxLength: 1024,\n group: 'File',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n required: false,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['parent_object', 'parent_id', 'created_at'] },\n { fields: ['file_id'] },\n { fields: ['uploaded_by'] },\n ],\n\n enable: {\n trackHistory: false,\n searchable: true,\n apiEnabled: true,\n trash: true,\n mru: false,\n clone: false,\n },\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_email — Outbound Email Log\n *\n * Persistent record of every email the platform has tried to deliver.\n * Lets administrators audit campaigns, debug delivery failures, and\n * lets users see \"what was sent\" from a record's activity stream.\n *\n * The actual SMTP / API delivery is performed by an `IEmailTransport`\n * implementation injected into the EmailServicePlugin (e.g. nodemailer,\n * SendGrid, Resend). This object only stores the outcome.\n *\n * Typical writers: `IEmailService.send()`.\n * Typical readers: activity timeline, deliverability dashboard.\n *\n * @namespace sys\n */\nexport const SysEmail = ObjectSchema.create({\n name: 'sys_email',\n label: 'Email',\n pluralLabel: 'Emails',\n icon: 'mail',\n isSystem: true,\n managedBy: 'append-only',\n description: 'Outbound email delivery log',\n displayNameField: 'subject',\n nameField: 'subject', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{subject}',\n compactLayout: ['subject', 'to', 'status', 'sent_at'],\n\n fields: {\n id: Field.text({\n label: 'Email ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n // ── Envelope ─────────────────────────────────────────────────\n message_id: Field.text({\n label: 'Message-ID',\n required: false,\n maxLength: 255,\n description: 'RFC-5322 Message-ID assigned by the transport',\n group: 'Envelope',\n }),\n\n from_address: Field.text({\n label: 'From',\n required: true,\n maxLength: 320,\n searchable: true,\n group: 'Envelope',\n }),\n\n to_addresses: Field.text({\n label: 'To',\n required: true,\n maxLength: 4000,\n searchable: true,\n description: 'Comma-separated recipient addresses',\n group: 'Envelope',\n }),\n\n cc_addresses: Field.text({\n label: 'Cc',\n required: false,\n maxLength: 4000,\n group: 'Envelope',\n }),\n\n bcc_addresses: Field.text({\n label: 'Bcc',\n required: false,\n maxLength: 4000,\n group: 'Envelope',\n }),\n\n reply_to: Field.text({\n label: 'Reply-To',\n required: false,\n maxLength: 320,\n group: 'Envelope',\n }),\n\n // ── Content ──────────────────────────────────────────────────\n subject: Field.text({\n label: 'Subject',\n required: true,\n maxLength: 998,\n searchable: true,\n group: 'Content',\n }),\n\n body_text: Field.textarea({\n label: 'Body (text)',\n required: false,\n searchable: true,\n group: 'Content',\n }),\n\n body_html: Field.textarea({\n label: 'Body (HTML)',\n required: false,\n group: 'Content',\n }),\n\n // ── Delivery state ───────────────────────────────────────────\n status: Field.select(\n ['queued', 'sent', 'failed'],\n {\n label: 'Status',\n required: true,\n defaultValue: 'queued',\n description: 'Lifecycle state — queued by IEmailService.send before transport call',\n group: 'State',\n },\n ),\n\n error: Field.textarea({\n label: 'Error',\n required: false,\n description: 'Transport error message when status=failed',\n group: 'State',\n }),\n\n attempt_count: Field.number({\n label: 'Attempts',\n required: false,\n defaultValue: 0,\n description: 'Number of delivery attempts performed by the service',\n group: 'State',\n }),\n\n sent_at: Field.datetime({\n label: 'Sent At',\n required: false,\n description: 'Set when status transitions to \"sent\"',\n group: 'State',\n }),\n\n // ── Source linkage ───────────────────────────────────────────\n related_object: Field.text({\n label: 'Related Object',\n required: false,\n maxLength: 100,\n description: 'Object name of the related record (e.g. lead, opportunity)',\n group: 'Source',\n }),\n\n related_id: Field.text({\n label: 'Related Record',\n required: false,\n maxLength: 100,\n description: 'Record id within related_object',\n group: 'Source',\n }),\n\n sent_by: Field.lookup('sys_user', {\n label: 'Sent By',\n required: false,\n group: 'Source',\n }),\n\n // ── Lifecycle ────────────────────────────────────────────────\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n required: false,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['status', 'created_at'] },\n { fields: ['related_object', 'related_id'] },\n { fields: ['sent_by'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_email_template — Outbound Email Template (metadata row)\n *\n * Backing persistence for the `email_template` metadata type. Each\n * row is the runtime representation of an `EmailTemplate` Zod\n * envelope. Resolved by `(name, locale)`; the EmailService picks the\n * best-matching locale for the recipient, falling back to `en-US`.\n *\n * Authoring: built-in templates are seeded by `EmailServicePlugin`\n * on `kernel:ready`; administrators may edit subject/body in Studio\n * and tenants may overlay specific rows.\n *\n * @namespace sys\n */\nexport const SysEmailTemplate = ObjectSchema.create({\n name: 'sys_email_template',\n label: 'Email Template',\n pluralLabel: 'Email Templates',\n icon: 'mail',\n isSystem: true,\n managedBy: 'config',\n description: 'Outbound email template (subject + body + variables) resolved by name+locale',\n displayNameField: 'label',\n nameField: 'label', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{label}',\n compactLayout: ['name', 'label', 'category', 'locale', 'active'],\n\n fields: {\n id: Field.text({\n label: 'ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n // ── Identity ─────────────────────────────────────────────────\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 128,\n description: 'Dotted snake_case identifier (e.g. auth.password_reset)',\n group: 'Identity',\n }),\n label: Field.text({\n label: 'Label',\n required: true,\n maxLength: 200,\n description: 'Human-readable name shown in Studio',\n group: 'Identity',\n }),\n category: Field.select(\n ['auth', 'notification', 'workflow', 'marketing', 'custom'],\n {\n label: 'Category',\n required: true,\n defaultValue: 'custom',\n group: 'Identity',\n },\n ),\n locale: Field.text({\n label: 'Locale',\n required: true,\n defaultValue: 'en-US',\n maxLength: 16,\n description: 'BCP-47 locale tag (en-US, zh-CN, …)',\n group: 'Identity',\n }),\n description: Field.textarea({\n label: 'Description',\n required: false,\n group: 'Identity',\n }),\n\n // ── Content ──────────────────────────────────────────────────\n subject: Field.text({\n label: 'Subject',\n required: true,\n maxLength: 500,\n description: 'Subject template; supports {{var.path}} placeholders',\n group: 'Content',\n }),\n body_html: Field.textarea({\n label: 'HTML Body',\n required: true,\n description: 'HTML body template; supports {{var.path}} placeholders',\n group: 'Content',\n }),\n body_text: Field.textarea({\n label: 'Plain Text Body',\n required: false,\n description: 'Optional plain-text alternative (auto-derived from HTML when blank)',\n group: 'Content',\n }),\n\n // ── Envelope overrides ───────────────────────────────────────\n from_name: Field.text({\n label: 'From Name',\n required: false,\n maxLength: 200,\n group: 'Envelope',\n }),\n from_address: Field.text({\n label: 'From Address',\n required: false,\n maxLength: 255,\n group: 'Envelope',\n }),\n reply_to: Field.text({\n label: 'Reply-To',\n required: false,\n maxLength: 255,\n group: 'Envelope',\n }),\n\n // ── Lifecycle ────────────────────────────────────────────────\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n group: 'Lifecycle',\n }),\n is_system: Field.boolean({\n label: 'System Template',\n required: false,\n defaultValue: false,\n readonly: true,\n description: 'Provided by a plugin / platform; tenants may edit but should not delete',\n group: 'Lifecycle',\n }),\n\n /**\n * Variables declared by the template author. Stored as JSON text\n * (array of {name,type,required,description}). Used by the Studio\n * authoring UI to render form hints and by sendTemplate() to\n * validate required vars at runtime.\n */\n variables_json: Field.textarea({\n label: 'Variables (JSON)',\n required: false,\n description: 'JSON array of {name,type,required,description}',\n group: 'Lifecycle',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name', 'locale'], unique: true },\n { fields: ['category'] },\n { fields: ['active'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_saved_report — Reusable Report Definition\n *\n * A persisted query against a single object that can be re-executed\n * on demand or on a schedule. Acts as the bridge between ad-hoc\n * filtering in the UI and the structured report library administrators\n * curate.\n *\n * The query envelope (`query_json`) is the same shape ObjectQL accepts\n * — `{ filter, fields, orderBy, limit, groupBy }` — so a report can be\n * round-tripped between the list view and the report definition\n * without re-translation.\n *\n * Conventions:\n * - `object_name` is the short object the report queries.\n * - `format` controls how `IReportService.run()` renders the rows\n * (`csv` for downloads, `html_table` for email digests, `json`\n * for raw API consumption).\n *\n * @namespace sys\n */\nexport const SysSavedReport = ObjectSchema.create({\n name: 'sys_saved_report',\n label: 'Saved Report',\n pluralLabel: 'Saved Reports',\n icon: 'bar-chart',\n isSystem: true,\n managedBy: 'platform',\n description: 'Persisted ObjectQL report definition — re-runnable and schedulable',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{name}',\n compactLayout: ['name', 'object_name', 'format', 'owner_id', 'updated_at'],\n\n fields: {\n id: Field.text({\n label: 'Report ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 200,\n searchable: true,\n group: 'Definition',\n }),\n\n description: Field.textarea({\n label: 'Description',\n required: false,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: true,\n maxLength: 100,\n description: 'Short object name the report queries',\n group: 'Definition',\n }),\n\n query_json: Field.textarea({\n label: 'Query',\n required: true,\n description: 'ObjectQL query envelope — { filter, fields, orderBy, limit, groupBy }',\n group: 'Definition',\n }),\n\n format: Field.select(\n ['csv', 'json', 'html_table'],\n {\n label: 'Format',\n required: true,\n defaultValue: 'csv',\n description: 'Rendering used by IReportService.run() and email digests',\n group: 'Definition',\n },\n ),\n\n owner_id: Field.lookup('sys_user', {\n label: 'Owner',\n required: false,\n description: 'User that owns the report definition (drives sharing)',\n group: 'Provenance',\n }),\n\n last_run_at: Field.datetime({\n label: 'Last Run',\n required: false,\n description: 'Stamped by IReportService.run() on successful execution',\n group: 'State',\n }),\n\n last_row_count: Field.number({\n label: 'Last Row Count',\n required: false,\n group: 'State',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n required: false,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['object_name'] },\n { fields: ['owner_id'] },\n { fields: ['name'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_report_schedule — Recurring Report Delivery\n *\n * Joins a `sys_saved_report` to an interval and a recipient list so\n * the reports plugin can deliver \"daily pipeline digest\" / \"weekly\n * lead summary\" without a separate workflow.\n *\n * Scheduling: `interval_minutes` (1440 = daily, 10080 = weekly) or a\n * `cron_expression`. When a `cron_expression` is set it wins over\n * `interval_minutes` and is evaluated in `timezone` (default UTC) via\n * croner — so \"every weekday 09:00 local\" is expressible. `next_run_at`\n * is computed from whichever applies.\n *\n * Delivery: when the master dispatch job ticks (every minute by\n * default), every schedule with `next_run_at <= now` is loaded,\n * its report is executed, the result is rendered into the report's\n * `format`, and the rendered body is emailed to each address in\n * `recipients`. `next_run_at` is then advanced by `interval_minutes`.\n *\n * Conventions:\n * - `recipients` is a comma-separated list of RFC-5322 addresses to\n * keep the schema driver-agnostic. The reports plugin splits and\n * trims before handing the list to IEmailService.\n * - `active=false` disables the schedule without losing its history.\n *\n * @namespace sys\n */\nexport const SysReportSchedule = ObjectSchema.create({\n name: 'sys_report_schedule',\n label: 'Report Schedule',\n pluralLabel: 'Report Schedules',\n icon: 'clock',\n isSystem: true,\n managedBy: 'platform',\n description: 'Recurring delivery of a sys_saved_report via email',\n titleFormat: '{report_id} → {recipients}',\n compactLayout: ['report_id', 'recipients', 'interval_minutes', 'active', 'next_run_at'],\n\n fields: {\n id: Field.text({\n label: 'Schedule ID',\n required: true,\n readonly: true,\n group: 'System',\n }),\n\n report_id: Field.lookup('sys_saved_report', {\n label: 'Report',\n required: true,\n group: 'Schedule',\n }),\n\n name: Field.text({\n label: 'Name',\n required: false,\n maxLength: 200,\n description: 'Optional label for the digest — used in the email subject',\n group: 'Schedule',\n }),\n\n interval_minutes: Field.number({\n label: 'Interval (minutes)',\n required: false,\n defaultValue: 1440,\n description: 'How often to send (1440 = daily, 10080 = weekly)',\n group: 'Schedule',\n }),\n\n cron_expression: Field.text({\n label: 'Cron Expression',\n required: false,\n maxLength: 100,\n description: 'Optional 5/6-field cron — overrides interval_minutes when present',\n group: 'Schedule',\n }),\n\n timezone: Field.text({\n label: 'Timezone',\n required: false,\n maxLength: 64,\n defaultValue: 'UTC',\n group: 'Schedule',\n }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n group: 'Schedule',\n }),\n\n recipients: Field.text({\n label: 'Recipients',\n required: true,\n maxLength: 4000,\n description: 'Comma-separated email addresses',\n group: 'Delivery',\n }),\n\n format: Field.select(\n ['csv', 'html_table'],\n {\n label: 'Format',\n required: false,\n defaultValue: 'html_table',\n description: 'Render format — csv is attached, html_table is inlined',\n group: 'Delivery',\n },\n ),\n\n subject_template: Field.text({\n label: 'Subject Template',\n required: false,\n maxLength: 200,\n description: 'Email subject; {{name}} / {{date}} / {{rows}} are substituted',\n group: 'Delivery',\n }),\n\n owner_id: Field.lookup('sys_user', {\n label: 'Owner',\n required: false,\n group: 'Provenance',\n }),\n\n next_run_at: Field.datetime({\n label: 'Next Run',\n required: false,\n description: 'Dispatcher loads schedules where next_run_at <= now',\n group: 'State',\n }),\n\n last_sent_at: Field.datetime({\n label: 'Last Sent',\n required: false,\n group: 'State',\n }),\n\n last_status: Field.select(\n ['ok', 'failed', 'skipped'],\n {\n label: 'Last Status',\n required: false,\n group: 'State',\n },\n ),\n\n last_error: Field.textarea({\n label: 'Last Error',\n required: false,\n group: 'State',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({\n label: 'Updated At',\n required: false,\n group: 'System',\n }),\n },\n\n indexes: [\n // Hot path for the dispatch loop.\n { fields: ['active', 'next_run_at'] },\n { fields: ['report_id'] },\n { fields: ['owner_id'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_job — Registered Background Jobs\n *\n * Catalogue row for every job currently scheduled by an `IJobService`\n * implementation. Lets ops see the full list of recurring/one-off tasks\n * (cron, interval, once) running on this ObjectStack instance, when each\n * last ran, and whether it is currently active.\n *\n * Writers: the active job adapter (`DbJobAdapter` upserts on `schedule()`).\n * Readers: Studio \"Background Jobs\" view, ops dashboards.\n *\n * @namespace sys\n */\nexport const SysJob = ObjectSchema.create({\n name: 'sys_job',\n label: 'Background Job',\n pluralLabel: 'Background Jobs',\n icon: 'clock',\n isSystem: true,\n managedBy: 'system',\n description: 'Catalogue of registered background jobs',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{name}',\n compactLayout: ['name', 'schedule_type', 'active', 'last_run_at', 'last_status'],\n\n fields: {\n id: Field.text({ label: 'Job ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Job Name',\n required: true,\n maxLength: 255,\n searchable: true,\n description: 'Unique job identifier (snake_case)',\n group: 'Identity',\n }),\n\n schedule_type: Field.select(['cron', 'interval', 'once'], {\n label: 'Schedule Type',\n required: true,\n group: 'Schedule',\n }),\n\n schedule_expression: Field.text({\n label: 'Expression',\n required: false,\n maxLength: 200,\n description: 'Cron expression / interval ms / ISO datetime',\n group: 'Schedule',\n }),\n\n timezone: Field.text({\n label: 'Timezone',\n required: false,\n maxLength: 100,\n group: 'Schedule',\n }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Whether the scheduler is currently running this job',\n group: 'State',\n }),\n\n last_run_at: Field.datetime({ label: 'Last Run At', required: false, group: 'State' }),\n last_status: Field.select(\n ['success', 'failed', 'timeout', 'running'],\n { label: 'Last Status', required: false, group: 'State' },\n ),\n last_error: Field.textarea({ label: 'Last Error', required: false, group: 'State' }),\n run_count: Field.number({ label: 'Run Count', required: false, defaultValue: 0, group: 'State' }),\n failure_count: Field.number({ label: 'Failure Count', required: false, defaultValue: 0, group: 'State' }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['active'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_job_run — Background Job Execution History\n *\n * Each row is one execution of a registered job (`sys_job`). Stores\n * outcome, duration, error, and whether the run was a manual trigger or\n * a scheduled tick. Replaces the in-memory `executions[]` array from\n * `IntervalJobAdapter`.\n *\n * Writers: the active job adapter.\n * Readers: Studio \"Job Runs\" view, dashboards, alerting.\n *\n * @namespace sys\n */\nexport const SysJobRun = ObjectSchema.create({\n name: 'sys_job_run',\n label: 'Job Run',\n pluralLabel: 'Job Runs',\n icon: 'play',\n isSystem: true,\n managedBy: 'append-only',\n description: 'Background job execution audit trail',\n displayNameField: 'job_name',\n nameField: 'job_name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{job_name} @ {started_at}',\n compactLayout: ['job_name', 'status', 'started_at', 'duration_ms', 'attempt'],\n\n fields: {\n id: Field.text({ label: 'Run ID', required: true, readonly: true, group: 'System' }),\n\n job_name: Field.text({\n label: 'Job',\n required: true,\n maxLength: 255,\n searchable: true,\n group: 'Identity',\n }),\n\n status: Field.select(\n ['running', 'success', 'failed', 'timeout'],\n { label: 'Status', required: true, defaultValue: 'running', group: 'State' },\n ),\n\n started_at: Field.datetime({ label: 'Started At', required: true, group: 'State' }),\n completed_at: Field.datetime({ label: 'Completed At', required: false, group: 'State' }),\n duration_ms: Field.number({ label: 'Duration (ms)', required: false, group: 'State' }),\n attempt: Field.number({\n label: 'Attempt',\n required: false,\n defaultValue: 1,\n description: '1 for first run, >1 for retries/replays',\n group: 'State',\n }),\n\n trigger: Field.select(\n ['schedule', 'manual', 'replay'],\n { label: 'Trigger', required: false, defaultValue: 'schedule', group: 'State' },\n ),\n\n error: Field.textarea({ label: 'Error', required: false, group: 'State' }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n },\n\n indexes: [\n { fields: ['job_name', 'started_at'] },\n { fields: ['status', 'started_at'] },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_job_queue — Durable Background Job / Message Queue + DLQ\n *\n * The persistent backing store for `DbQueueAdapter`. Each row is one\n * enqueued message — pending until a worker leases (`status='running'`),\n * then `completed`, `failed`, or finally `dlq` after exhausting retries.\n *\n * DLQ rows are simply `status='dlq'` rows in this same table; no separate\n * table needed. Listing/replay is a filter on `status`.\n *\n * Idempotency: `idempotency_key` + `queue` are deduplicated by the adapter\n * over a configurable window (default 24h) — the column is indexed.\n *\n * Concurrency: workers claim a row by CAS-updating `status` from `pending`\n * to `running` plus setting `locked_by`/`locked_until`. Reads only return\n * rows whose lock has not been claimed (or whose lease expired).\n *\n * Writers: `DbQueueAdapter` (publish/lease/complete/fail).\n * Readers: Studio DLQ view, ops dashboards, the adapter's worker loop.\n *\n * @namespace sys\n */\nexport const SysJobQueue = ObjectSchema.create({\n name: 'sys_job_queue',\n label: 'Job Queue Message',\n pluralLabel: 'Job Queue Messages',\n icon: 'inbox',\n isSystem: true,\n managedBy: 'system',\n description: 'Durable job/message queue including dead letters',\n displayNameField: 'queue',\n nameField: 'queue', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{queue} #{id}',\n compactLayout: ['queue', 'status', 'attempts', 'scheduled_for', 'last_error'],\n\n fields: {\n id: Field.text({ label: 'Message ID', required: true, readonly: true, group: 'System' }),\n\n queue: Field.text({\n label: 'Queue',\n required: true,\n maxLength: 255,\n searchable: true,\n description: 'Logical queue name (snake_case)',\n group: 'Identity',\n }),\n\n idempotency_key: Field.text({\n label: 'Idempotency Key',\n required: false,\n maxLength: 255,\n description: 'Deduplication key within (queue, window)',\n group: 'Identity',\n }),\n\n payload_json: Field.textarea({\n label: 'Payload (JSON)',\n required: false,\n description: 'Serialized message body',\n group: 'Content',\n }),\n\n metadata_json: Field.textarea({\n label: 'Metadata (JSON)',\n required: false,\n description: 'Serialized metadata bag (tenant_id, source_record, ...)',\n group: 'Content',\n }),\n\n status: Field.select(\n ['pending', 'running', 'completed', 'failed', 'dlq'],\n {\n label: 'Status',\n required: true,\n defaultValue: 'pending',\n description: 'Lifecycle state',\n group: 'State',\n },\n ),\n\n priority: Field.number({\n label: 'Priority',\n required: false,\n defaultValue: 100,\n description: 'Lower = higher priority',\n group: 'Schedule',\n }),\n\n attempts: Field.number({ label: 'Attempts', required: false, defaultValue: 0, group: 'State' }),\n max_attempts: Field.number({ label: 'Max Attempts', required: false, defaultValue: 3, group: 'State' }),\n\n backoff_type: Field.select(\n ['fixed', 'exponential'],\n { label: 'Backoff', required: false, defaultValue: 'exponential', group: 'Schedule' },\n ),\n backoff_delay_ms: Field.number({\n label: 'Backoff Base (ms)',\n required: false,\n defaultValue: 1000,\n group: 'Schedule',\n }),\n backoff_max_delay_ms: Field.number({\n label: 'Backoff Cap (ms)',\n required: false,\n group: 'Schedule',\n }),\n\n scheduled_for: Field.datetime({\n label: 'Scheduled For',\n required: false,\n description: 'Earliest time a worker may lease this message',\n group: 'Schedule',\n }),\n\n locked_by: Field.text({\n label: 'Locked By',\n required: false,\n maxLength: 255,\n description: 'Worker id holding the lease',\n group: 'Lease',\n }),\n locked_until: Field.datetime({\n label: 'Locked Until',\n required: false,\n description: 'Lease expiry; if past, another worker may claim',\n group: 'Lease',\n }),\n\n last_error: Field.textarea({ label: 'Last Error', required: false, group: 'State' }),\n completed_at: Field.datetime({ label: 'Completed At', required: false, group: 'State' }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['queue', 'status', 'scheduled_for'] },\n { fields: ['idempotency_key', 'queue'] },\n { fields: ['status'] },\n ],\n});\n"]}
@@ -10,6 +10,8 @@ var SysNotification = ObjectSchema.create({
10
10
  managedBy: "system",
11
11
  description: "Notification events \u2014 one row per emit() (ADR-0030 Layer 2 ingress)",
12
12
  displayNameField: "topic",
13
+ nameField: "topic",
14
+ // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
13
15
  titleFormat: "{topic}",
14
16
  compactLayout: ["topic", "severity", "source_object", "created_at"],
15
17
  listViews: {
@@ -236,6 +238,8 @@ var SysEmail = ObjectSchema.create({
236
238
  managedBy: "append-only",
237
239
  description: "Outbound email delivery log",
238
240
  displayNameField: "subject",
241
+ nameField: "subject",
242
+ // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
239
243
  titleFormat: "{subject}",
240
244
  compactLayout: ["subject", "to", "status", "sent_at"],
241
245
  fields: {
@@ -384,6 +388,8 @@ var SysEmailTemplate = ObjectSchema.create({
384
388
  managedBy: "config",
385
389
  description: "Outbound email template (subject + body + variables) resolved by name+locale",
386
390
  displayNameField: "label",
391
+ nameField: "label",
392
+ // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
387
393
  titleFormat: "{label}",
388
394
  compactLayout: ["name", "label", "category", "locale", "active"],
389
395
  fields: {
@@ -520,6 +526,8 @@ var SysSavedReport = ObjectSchema.create({
520
526
  managedBy: "platform",
521
527
  description: "Persisted ObjectQL report definition \u2014 re-runnable and schedulable",
522
528
  displayNameField: "name",
529
+ nameField: "name",
530
+ // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
523
531
  titleFormat: "{name}",
524
532
  compactLayout: ["name", "object_name", "format", "owner_id", "updated_at"],
525
533
  fields: {
@@ -738,6 +746,8 @@ var SysJob = ObjectSchema.create({
738
746
  managedBy: "system",
739
747
  description: "Catalogue of registered background jobs",
740
748
  displayNameField: "name",
749
+ nameField: "name",
750
+ // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
741
751
  titleFormat: "{name}",
742
752
  compactLayout: ["name", "schedule_type", "active", "last_run_at", "last_status"],
743
753
  fields: {
@@ -806,6 +816,8 @@ var SysJobRun = ObjectSchema.create({
806
816
  managedBy: "append-only",
807
817
  description: "Background job execution audit trail",
808
818
  displayNameField: "job_name",
819
+ nameField: "job_name",
820
+ // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
809
821
  titleFormat: "{job_name} @ {started_at}",
810
822
  compactLayout: ["job_name", "status", "started_at", "duration_ms", "attempt"],
811
823
  fields: {
@@ -858,6 +870,8 @@ var SysJobQueue = ObjectSchema.create({
858
870
  managedBy: "system",
859
871
  description: "Durable job/message queue including dead letters",
860
872
  displayNameField: "queue",
873
+ nameField: "queue",
874
+ // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
861
875
  titleFormat: "{queue} #{id}",
862
876
  compactLayout: ["queue", "status", "attempts", "scheduled_for", "last_error"],
863
877
  fields: {