@objectstack/platform-objects 11.3.0 → 11.5.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.mjs","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"]}
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","../../src/audit/sys-import-job.object.ts"],"names":["ObjectSchema","Field"],"mappings":"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","file":"index.mjs","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","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_import_job — Asynchronous Data Import Job\n *\n * Each row tracks one bulk import submitted through the async import API\n * (`POST /data/:object/import/jobs`). The client sends the whole payload\n * (rows[] or a base64 xlsx) in one request; the server persists this row,\n * processes the batch in the background, and streams progress by updating the\n * counters below. Readers poll `progress` / `results` and list history.\n *\n * Persisting to the DB (rather than in-memory) means progress and history\n * survive a server restart and are queryable per object / per user.\n *\n * Writers: the rest-server import-job worker.\n * Readers: the Import Wizard (progress + history), dashboards.\n *\n * @namespace sys\n */\nexport const SysImportJob = ObjectSchema.create({\n name: 'sys_import_job',\n label: 'Import Job',\n pluralLabel: 'Import Jobs',\n icon: 'upload',\n isSystem: true,\n managedBy: 'system',\n description: 'Asynchronous bulk-import job state, progress, and history',\n displayNameField: 'object_name',\n nameField: 'object_name', // [ADR-0079] canonical primary-title pointer\n titleFormat: '{object_name} import @ {created_at}',\n compactLayout: ['object_name', 'status', 'processed_rows', 'total_rows', 'created_at'],\n\n fields: {\n id: Field.text({ label: 'Job ID', required: true, readonly: true, group: 'System' }),\n\n object_name: Field.text({\n label: 'Object',\n required: true,\n maxLength: 255,\n searchable: true,\n description: 'API name of the object being imported into',\n group: 'Identity',\n }),\n\n status: Field.select(\n ['pending', 'running', 'succeeded', 'failed', 'cancelled'],\n { label: 'Status', required: true, defaultValue: 'pending', group: 'State' },\n ),\n\n // ── progress counters (updated as the worker streams through the batch) ──\n total_rows: Field.number({ label: 'Total Rows', required: true, defaultValue: 0, group: 'Progress' }),\n processed_rows: Field.number({ label: 'Processed Rows', required: true, defaultValue: 0, group: 'Progress' }),\n created_count: Field.number({ label: 'Created', required: false, defaultValue: 0, group: 'Progress' }),\n updated_count: Field.number({ label: 'Updated', required: false, defaultValue: 0, group: 'Progress' }),\n skipped_count: Field.number({ label: 'Skipped', required: false, defaultValue: 0, group: 'Progress' }),\n error_count: Field.number({ label: 'Errors', required: false, defaultValue: 0, group: 'Progress' }),\n\n // ── request echo (so history is self-describing without the payload) ──\n write_mode: Field.select(\n ['insert', 'update', 'upsert'],\n { label: 'Write Mode', required: false, defaultValue: 'insert', group: 'Request' },\n ),\n dry_run: Field.boolean({ label: 'Dry Run', required: false, defaultValue: false, group: 'Request' }),\n run_automations: Field.boolean({ label: 'Run Automations', required: false, defaultValue: false, group: 'Request' }),\n\n // ── outcome ──\n error: Field.textarea({ label: 'Fatal Error', required: false, group: 'Outcome' }),\n results: Field.json({\n label: 'Row Results (sample)',\n required: false,\n description: 'Capped sample of per-row results (failures first) for the UI',\n group: 'Outcome',\n }),\n\n // ── undo / logical rollback ──\n undo_log: Field.json({\n label: 'Undo Log',\n required: false,\n description: 'Reversal instructions ({created:[ids], updated:[{id,before}]}) captured for small non-dry-run jobs so the import can be undone',\n group: 'Outcome',\n }),\n reverted_at: Field.datetime({\n label: 'Reverted At',\n required: false,\n description: 'Set when the import was undone (created records deleted, updated records restored)',\n group: 'Outcome',\n }),\n\n // ── lifecycle timestamps ──\n started_at: Field.datetime({ label: 'Started At', required: false, group: 'State' }),\n completed_at: Field.datetime({ label: 'Completed At', required: false, group: 'State' }),\n created_by: Field.text({ label: 'Created By', required: false, readonly: true, group: 'System' }),\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: ['object_name', 'created_at'] },\n { fields: ['status', 'created_at'] },\n { fields: ['created_by', 'created_at'] },\n ],\n});\n"]}
@@ -575,6 +575,7 @@ declare const SysUser: Omit<{
575
575
  filter: boolean;
576
576
  rowHeight: boolean;
577
577
  addRecordForm: boolean;
578
+ editInline: boolean;
578
579
  buttons?: string[] | undefined;
579
580
  } | undefined;
580
581
  appearance?: {
@@ -5245,6 +5246,7 @@ declare const SysSession: Omit<{
5245
5246
  filter: boolean;
5246
5247
  rowHeight: boolean;
5247
5248
  addRecordForm: boolean;
5249
+ editInline: boolean;
5248
5250
  buttons?: string[] | undefined;
5249
5251
  } | undefined;
5250
5252
  appearance?: {
@@ -8575,6 +8577,7 @@ declare const SysAccount: Omit<{
8575
8577
  filter: boolean;
8576
8578
  rowHeight: boolean;
8577
8579
  addRecordForm: boolean;
8580
+ editInline: boolean;
8578
8581
  buttons?: string[] | undefined;
8579
8582
  } | undefined;
8580
8583
  appearance?: {
@@ -11961,6 +11964,7 @@ declare const SysVerification: Omit<{
11961
11964
  filter: boolean;
11962
11965
  rowHeight: boolean;
11963
11966
  addRecordForm: boolean;
11967
+ editInline: boolean;
11964
11968
  buttons?: string[] | undefined;
11965
11969
  } | undefined;
11966
11970
  appearance?: {
@@ -13829,6 +13833,7 @@ declare const SysOrganization: Omit<{
13829
13833
  filter: boolean;
13830
13834
  rowHeight: boolean;
13831
13835
  addRecordForm: boolean;
13836
+ editInline: boolean;
13832
13837
  buttons?: string[] | undefined;
13833
13838
  } | undefined;
13834
13839
  appearance?: {
@@ -16170,6 +16175,7 @@ declare const SysMember: Omit<{
16170
16175
  filter: boolean;
16171
16176
  rowHeight: boolean;
16172
16177
  addRecordForm: boolean;
16178
+ editInline: boolean;
16173
16179
  buttons?: string[] | undefined;
16174
16180
  } | undefined;
16175
16181
  appearance?: {
@@ -17959,6 +17965,7 @@ declare const SysInvitation: Omit<{
17959
17965
  filter: boolean;
17960
17966
  rowHeight: boolean;
17961
17967
  addRecordForm: boolean;
17968
+ editInline: boolean;
17962
17969
  buttons?: string[] | undefined;
17963
17970
  } | undefined;
17964
17971
  appearance?: {
@@ -20512,6 +20519,7 @@ declare const SysTeam: Omit<{
20512
20519
  filter: boolean;
20513
20520
  rowHeight: boolean;
20514
20521
  addRecordForm: boolean;
20522
+ editInline: boolean;
20515
20523
  buttons?: string[] | undefined;
20516
20524
  } | undefined;
20517
20525
  appearance?: {
@@ -22303,6 +22311,7 @@ declare const SysTeamMember: Omit<{
22303
22311
  filter: boolean;
22304
22312
  rowHeight: boolean;
22305
22313
  addRecordForm: boolean;
22314
+ editInline: boolean;
22306
22315
  buttons?: string[] | undefined;
22307
22316
  } | undefined;
22308
22317
  appearance?: {
@@ -23874,6 +23883,7 @@ declare const SysBusinessUnit: Omit<{
23874
23883
  filter: boolean;
23875
23884
  rowHeight: boolean;
23876
23885
  addRecordForm: boolean;
23886
+ editInline: boolean;
23877
23887
  buttons?: string[] | undefined;
23878
23888
  } | undefined;
23879
23889
  appearance?: {
@@ -27071,6 +27081,7 @@ declare const SysBusinessUnitMember: Omit<{
27071
27081
  filter: boolean;
27072
27082
  rowHeight: boolean;
27073
27083
  addRecordForm: boolean;
27084
+ editInline: boolean;
27074
27085
  buttons?: string[] | undefined;
27075
27086
  } | undefined;
27076
27087
  appearance?: {
@@ -29457,6 +29468,7 @@ declare const SysApiKey: Omit<{
29457
29468
  filter: boolean;
29458
29469
  rowHeight: boolean;
29459
29470
  addRecordForm: boolean;
29471
+ editInline: boolean;
29460
29472
  buttons?: string[] | undefined;
29461
29473
  } | undefined;
29462
29474
  appearance?: {
@@ -32315,6 +32327,7 @@ declare const SysTwoFactor: Omit<{
32315
32327
  filter: boolean;
32316
32328
  rowHeight: boolean;
32317
32329
  addRecordForm: boolean;
32330
+ editInline: boolean;
32318
32331
  buttons?: string[] | undefined;
32319
32332
  } | undefined;
32320
32333
  appearance?: {
@@ -34474,6 +34487,7 @@ declare const SysDeviceCode: Omit<{
34474
34487
  filter: boolean;
34475
34488
  rowHeight: boolean;
34476
34489
  addRecordForm: boolean;
34490
+ editInline: boolean;
34477
34491
  buttons?: string[] | undefined;
34478
34492
  } | undefined;
34479
34493
  appearance?: {
@@ -37397,6 +37411,7 @@ declare const SysUserPreference: Omit<{
37397
37411
  filter: boolean;
37398
37412
  rowHeight: boolean;
37399
37413
  addRecordForm: boolean;
37414
+ editInline: boolean;
37400
37415
  buttons?: string[] | undefined;
37401
37416
  } | undefined;
37402
37417
  appearance?: {
@@ -39333,6 +39348,7 @@ declare const SysOauthApplication: Omit<{
39333
39348
  filter: boolean;
39334
39349
  rowHeight: boolean;
39335
39350
  addRecordForm: boolean;
39351
+ editInline: boolean;
39336
39352
  buttons?: string[] | undefined;
39337
39353
  } | undefined;
39338
39354
  appearance?: {
@@ -45617,6 +45633,7 @@ declare const SysOauthAccessToken: Omit<{
45617
45633
  filter: boolean;
45618
45634
  rowHeight: boolean;
45619
45635
  addRecordForm: boolean;
45636
+ editInline: boolean;
45620
45637
  buttons?: string[] | undefined;
45621
45638
  } | undefined;
45622
45639
  appearance?: {
@@ -48186,6 +48203,7 @@ declare const SysOauthRefreshToken: Omit<{
48186
48203
  filter: boolean;
48187
48204
  rowHeight: boolean;
48188
48205
  addRecordForm: boolean;
48206
+ editInline: boolean;
48189
48207
  buttons?: string[] | undefined;
48190
48208
  } | undefined;
48191
48209
  appearance?: {
@@ -50929,6 +50947,7 @@ declare const SysOauthConsent: Omit<{
50929
50947
  filter: boolean;
50930
50948
  rowHeight: boolean;
50931
50949
  addRecordForm: boolean;
50950
+ editInline: boolean;
50932
50951
  buttons?: string[] | undefined;
50933
50952
  } | undefined;
50934
50953
  appearance?: {
@@ -52969,6 +52988,7 @@ declare const SysJwks: Omit<{
52969
52988
  filter: boolean;
52970
52989
  rowHeight: boolean;
52971
52990
  addRecordForm: boolean;
52991
+ editInline: boolean;
52972
52992
  buttons?: string[] | undefined;
52973
52993
  } | undefined;
52974
52994
  appearance?: {
@@ -54666,6 +54686,7 @@ declare const SysSsoProvider: Omit<{
54666
54686
  filter: boolean;
54667
54687
  rowHeight: boolean;
54668
54688
  addRecordForm: boolean;
54689
+ editInline: boolean;
54669
54690
  buttons?: string[] | undefined;
54670
54691
  } | undefined;
54671
54692
  appearance?: {
@@ -57649,6 +57670,7 @@ declare const SysScimProvider: Omit<{
57649
57670
  filter: boolean;
57650
57671
  rowHeight: boolean;
57651
57672
  addRecordForm: boolean;
57673
+ editInline: boolean;
57652
57674
  buttons?: string[] | undefined;
57653
57675
  } | undefined;
57654
57676
  appearance?: {