@praxisui/cron-builder 9.0.0-beta.77 → 9.0.0-beta.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/component-registry.json +92 -12
- package/package.json +3 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-19T20:13:41.218Z",
|
|
4
4
|
"packageName": "@praxisui/cron-builder",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.79",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -1533,39 +1533,119 @@
|
|
|
1533
1533
|
{
|
|
1534
1534
|
"chunkIndex": 1,
|
|
1535
1535
|
"chunkKind": "capabilities",
|
|
1536
|
-
"content": "Component
|
|
1536
|
+
"content": "Component Capability:\n - Path: label\n Category: meta\n Kind: string\n Description: Field label (if exposed by host).\n\nComponent Capability:\n - Path: hint\n Category: ui\n Kind: string\n Description: Helper text (if exposed by host).\n\nComponent Capability:\n - Path: enableSeconds\n Category: fields\n Kind: boolean\n Description: Enable seconds selector.\n\nComponent Capability:\n - Path: presets\n Category: presets\n Kind: array\n Description: Presets list (label + cron).\n\nComponent Capability:\n - Path: presets[].label\n Category: presets\n Kind: string\n Description: Preset label.\n\nComponent Capability:\n - Path: presets[].cron\n Category: presets\n Kind: string\n Description: Preset cron expression.\n\nComponent Capability:\n - Path: metadata\n Category: meta\n Kind: object\n Description: CronBuilderMetadata input.\n\nComponent Capability:\n - Path: metadata.mode\n Category: behavior\n Kind: enum\n Description: Enabled UI modes.\n\nComponent Capability:\n - Path: metadata.fields\n Category: fields\n Kind: object\n Description: Field visibility toggles.\n\nComponent Capability:\n - Path: metadata.fields.seconds\n Category: fields\n Kind: boolean\n Description: Show seconds field.\n\nComponent Capability:\n - Path: metadata.fields.minutes\n Category: fields\n Kind: boolean\n Description: Show minutes field.\n\nComponent Capability:\n - Path: metadata.fields.hours\n Category: fields\n Kind: boolean\n Description: Show hours field.\n\nComponent Capability:\n - Path: metadata.fields.dom\n Category: fields\n Kind: boolean\n Description: Show day-of-month field.\n\nComponent Capability:\n - Path: metadata.fields.month\n Category: fields\n Kind: boolean\n Description: Show month field.\n\nComponent Capability:\n - Path: metadata.fields.dow\n Category: fields\n Kind: boolean\n Description: Show day-of-week field.\n\nComponent Capability:\n - Path: metadata.timezone\n Category: i18n\n Kind: string\n Description: IANA timezone used for preview.\n\nComponent Capability:\n - Path: metadata.locale\n Category: i18n\n Kind: string\n Description: Locale used for humanized text.\n\nComponent Capability:\n - Path: metadata.presets\n Category: presets\n Kind: array\n Description: Presets list inside metadata.\n\nComponent Capability:\n - Path: metadata.presets[].label\n Category: presets\n Kind: string\n Description: Preset label.\n\nComponent Capability:\n - Path: metadata.presets[].cron\n Category: presets\n Kind: string\n Description: Preset cron expression.\n\nComponent Capability:\n - Path: metadata.previewOccurrences\n Category: preview\n Kind: number\n Description: Number of preview dates.\n\nComponent Capability:\n - Path: metadata.previewFrom\n Category: preview\n Kind: string\n Description: Preview start date (ISO string).\n\nComponent Capability:\n - Path: metadata.validators\n Category: validation\n Kind: object\n Description: Custom validation messages.\n\nComponent Capability:\n - Path: metadata.validators.requiredMessage\n Category: validation\n Kind: string\n Description: Required message.\n\nComponent Capability:\n - Path: metadata.validators.invalidCronMessage\n Category: validation\n Kind: string\n Description: Invalid cron message.\n\nComponent Capability:\n - Path: metadata.validationTrigger\n Category: validation\n Kind: enum\n Description: Validation trigger.\n\nComponent Capability:\n - Path: metadata.validationDebounce\n Category: validation\n Kind: number\n Description: Validation debounce (ms).\n\nComponent Capability:\n - Path: metadata.errorPosition\n Category: ui\n Kind: enum\n Description: Error display position.\n\nComponent Capability:\n - Path: metadata.showInlineErrors\n Category: ui\n Kind: boolean\n Description: Show inline errors.\n\nComponent Capability:\n - Path: metadata.hint\n Category: ui\n Kind: string\n Description: Hint text.\n\nComponent Capability:\n - Path: schedule\n Category: schedule\n Kind: object\n Description: Canonical scheduler authoring config.\n\nComponent Capability:\n - Path: schedule.kind\n Category: schedule\n Kind: enum\n Description: Business schedule intent.\n\nComponent Capability:\n - Path: schedule.timezone\n Category: i18n\n Kind: string\n Description: IANA timezone used by the schedule.\n\nComponent Capability:\n - Path: schedule.locale\n Category: i18n\n Kind: string\n Description: Locale used by humanized text and preview.\n\nComponent Capability:\n - Path: schedule.expression\n Category: dialects\n Kind: object\n Description: Technical CRON representation.\n\nComponent Capability:\n - Path: schedule.expression.cron\n Category: dialects\n Kind: string\n Description: CRON expression for custom or compiled schedules.\n\nComponent Capability:\n - Path: schedule.expression.dialect\n Category: dialects\n Kind: enum\n Description: CRON dialect family.\n\nComponent Capability:\n - Path: schedule.expression.seconds\n Category: dialects\n Kind: boolean\n Description: Whether the CRON representation includes seconds.\n\nComponent Capability:\n - Path: schedule.recurrence\n Category: recurrence\n Kind: object\n Description: Structured recurrence intent.\n\nComponent Capability:\n - Path: schedule.recurrence.once.runAt\n Category: recurrence\n Kind: string\n Description: ISO date-time for one-time schedules.\n\nComponent Capability:\n - Path: schedule.recurrence.interval.every\n Category: recurrence\n Kind: number\n Description: Interval amount.\n\nComponent Capability:\n - Path: schedule.recurrence.interval.unit\n Category: recurrence\n Kind: enum\n Description: Interval unit.\n\nComponent Capability:\n - Path: schedule.recurrence.daily.times\n Category: recurrence\n Kind: array\n Description: Daily run times in HH:mm format.\n\nComponent Capability:\n - Path: schedule.recurrence.daily.onlyWeekdays\n Category: recurrence\n Kind: boolean\n Description: Limit daily schedule to Monday through Friday.\n\nComponent Capability:\n - Path: schedule.recurrence.weekly.daysOfWeek\n Category: recurrence\n Kind: array\n Description: Weekdays as numbers where 0 is Sunday.\n\nComponent Capability:\n - Path: schedule.recurrence.weekly.times\n Category: recurrence\n Kind: array\n Description: Weekly run times in HH:mm format.\n\nComponent Capability:\n - Path: schedule.recurrence.monthly.mode\n Category: recurrence\n Kind: enum\n Description: Monthly recurrence strategy.\n\nComponent Capability:\n - Path: schedule.recurrence.monthly.dayOfMonth\n Category: recurrence\n Kind: number\n Description: Day of month for monthly schedules.\n\nComponent Capability:\n - Path: schedule.recurrence.monthly.nth\n Category: recurrence\n Kind: number\n Description: Nth weekday occurrence in the month.\n\nComponent Capability:\n - Path: schedule.recurrence.monthly.weekday\n Category: recurrence\n Kind: number\n Description: Weekday for nth weekday monthly schedules.\n\nComponent Capability:\n - Path: schedule.recurrence.monthly.times\n Category: recurrence\n Kind: array\n Description: Monthly run times in HH:mm format.\n\nComponent Capability:\n - Path: schedule.window.startAt\n Category: policy\n Kind: string\n Description: ISO start date-time for schedule validity.\n\nComponent Capability:\n - Path: schedule.window.endAt\n Category: policy\n Kind: string\n Description: ISO end date-time for schedule validity.\n\nComponent Capability:\n - Path: schedule.executionPolicy.enabled\n Category: policy\n Kind: boolean\n Description: Whether the schedule is active.\n\nComponent Capability:\n - Path: schedule.executionPolicy.misfirePolicy\n Category: policy\n Kind: enum\n Description: Policy for missed scheduled runs.\n\nComponent Capability:\n - Path: schedule.executionPolicy.concurrencyPolicy\n Category: policy\n Kind: enum\n Description: Policy for overlapping runs.",
|
|
1537
1537
|
"sourcePointer": "projects/praxis-cron-builder/src/lib/praxis-cron-builder.metadata.ts",
|
|
1538
|
-
"contentHash": "
|
|
1538
|
+
"contentHash": "3a0720967b428e63db845a8ad2126711488b0ab14ec1455010ab095840f208b6",
|
|
1539
1539
|
"sourceKind": "component_definition",
|
|
1540
1540
|
"sourceId": "pdx-cron-builder",
|
|
1541
1541
|
"corpusVersion": "1.0.0"
|
|
1542
1542
|
},
|
|
1543
1543
|
{
|
|
1544
1544
|
"chunkIndex": 2,
|
|
1545
|
+
"chunkKind": "capabilities",
|
|
1546
|
+
"content": "Component Capability:\n - Path: schedule.executionPolicy.flexibleWindowMinutes\n Category: policy\n Kind: number\n Description: Flexible delivery window in minutes.\n\nComponent Capability:\n - Path: schedule.executionPolicy.jitterMinutes\n Category: policy\n Kind: number\n Description: Randomized delay window in minutes.\n\nComponent Capability:\n - Path: schedule.preview.occurrences\n Category: preview\n Kind: number\n Description: Number of occurrences to preview.\n\nComponent Capability:\n - Path: schedule.preview.from\n Category: preview\n Kind: string\n Description: ISO date-time used as preview start.\n\nComponent Capability:\n - Path: schedule.governance.name\n Category: governance\n Kind: string\n Description: Schedule name.\n\nComponent Capability:\n - Path: schedule.governance.description\n Category: governance\n Kind: string\n Description: Schedule description.\n\nComponent Capability:\n - Path: schedule.governance.owner\n Category: governance\n Kind: string\n Description: Schedule owner.\n\nComponent Capability:\n - Path: schedule.governance.tags\n Category: governance\n Kind: array\n Description: Governance tags.\n\nComponent Capability:\n - Path: diagnostics\n Category: validation\n Kind: array\n Description: Read-only structured schedule diagnostics.\n\nComponent Capability:\n - Path: preview\n Category: preview\n Kind: array\n Description: Read-only structured preview occurrences.\n\nCapability Note:\n - presets[] should be merged by cron or label to avoid replacing all entries.\n\nCapability Note:\n - metadata.previewFrom expects an ISO date string when provided.\n\nCapability Note:\n - schedule is the canonical scheduler authoring state; value remains the current CRON string compatibility surface.\n\nCapability Note:\n - Prefer schedule.kind and schedule.recurrence for business intent; use schedule.expression.cron only for custom CRON edits.",
|
|
1547
|
+
"sourcePointer": "projects/praxis-cron-builder/src/lib/praxis-cron-builder.metadata.ts",
|
|
1548
|
+
"contentHash": "7e087ed984d390a3bc1e8addd28443f3d0b648e370e25a6265c3507e0a57d500",
|
|
1549
|
+
"sourceKind": "component_definition",
|
|
1550
|
+
"sourceId": "pdx-cron-builder",
|
|
1551
|
+
"corpusVersion": "1.0.0"
|
|
1552
|
+
},
|
|
1553
|
+
{
|
|
1554
|
+
"chunkIndex": 3,
|
|
1545
1555
|
"chunkKind": "authoring_manifest",
|
|
1546
|
-
"content": "{\n \"schemaVersion\": \"1.0.0\",\n \"componentId\": \"pdx-cron-builder\",\n \"ownerPackage\": \"@praxisui/cron-builder\",\n \"configSchemaId\": \"CronBuilderMetadata\",\n \"manifestVersion\": \"1.0.0\",\n \"runtimeInputs\": [\n {\n \"name\": \"metadata\",\n \"type\": \"CronBuilderMetadata\",\n \"description\": \"Builder UI, timezone, locale, presets, validation and preview configuration.\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string | ScheduleAuthoringConfig\",\n \"description\": \"Current CRON string compatibility value or canonical schedule authoring config.\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"description\": \"ControlValueAccessor disabled state.\"\n }\n ],\n \"editableTargets\": [\n {\n \"kind\": \"expression\",\n \"resolver\": \"schedule-expression\",\n \"description\": \"Canonical CRON expression under schedule.expression or legacy value.\"\n },\n {\n \"kind\": \"frequency\",\n \"resolver\": \"schedule-kind-and-recurrence\",\n \"description\": \"Business recurrence intent compiled into a canonical expression.\"\n },\n {\n \"kind\": \"timezone\",\n \"resolver\": \"schedule-timezone\",\n \"description\": \"IANA timezone used for preview and schedule metadata.\"\n },\n {\n \"kind\": \"preview\",\n \"resolver\": \"schedule-preview-config\",\n \"description\": \"Read-only preview generation request for next occurrences.\"\n },\n {\n \"kind\": \"validation\",\n \"resolver\": \"schedule-validation-request\",\n \"description\": \"Read-only validation diagnostics request for expression or schedule config.\"\n },\n {\n \"kind\": \"preset\",\n \"resolver\": \"cron-preset-by-label-or-expression\",\n \"description\": \"Preset entry in metadata.presets[] or top-level presets[].\"\n }\n ],\n \"operations\": [\n {\n \"operationId\": \"cron.expression.set\",\n \"title\": \"Set CRON expression\",\n \"scope\": \"global\",\n \"targetKind\": \"expression\",\n \"target\": {\n \"kind\": \"expression\",\n \"resolver\": \"schedule-expression\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"cron\"\n ],\n \"properties\": {\n \"cron\": {\n \"type\": \"string\"\n },\n \"dialect\": {\n \"enum\": [\n \"unix\",\n \"quartz\",\n \"aws-eventbridge\",\n \"kubernetes\",\n \"github-actions\",\n \"gcp-scheduler\"\n ]\n },\n \"seconds\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"cron-expression-set\",\n \"handlerContract\": {\n \"reads\": [\n \"schedule.expression\",\n \"schedule.timezone\",\n \"metadata.timezone\",\n \"value\"\n ],\n \"writes\": [\n \"schedule.kind\",\n \"schedule.expression\",\n \"value\",\n \"diagnostics\"\n ],\n \"identityKeys\": [\n \"schedule.expression.cron\",\n \"schedule.expression.dialect\"\n ],\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"cron\"\n ],\n \"properties\": {\n \"cron\": {\n \"type\": \"string\"\n },\n \"dialect\": {\n \"enum\": [\n \"unix\",\n \"quartz\",\n \"aws-eventbridge\",\n \"kubernetes\",\n \"github-actions\",\n \"gcp-scheduler\"\n ]\n },\n \"seconds\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"failureModes\": [\n \"invalid-expression\",\n \"invalid-dialect\",\n \"seconds-field-mismatch\"\n ],\n \"description\": \"Validates and normalizes an explicit CRON expression before writing schedule.expression and the compatibility value.\"\n }\n }\n ],\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"validators\": [\n \"cron-expression-valid\",\n \"cron-dialect-compatible\",\n \"editor-runtime-round-trip\"\n ],\n \"affectedPaths\": [\n \"schedule.kind\",\n \"schedule.expression\",\n \"schedule.expression.cron\",\n \"schedule.expression.dialect\",\n \"schedule.expression.seconds\",\n \"value\",\n \"diagnostics\"\n ],\n \"submissionImpact\": \"affects-submission\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"cron.frequency.set\",\n \"title\": \"Set schedule frequency\",\n \"scope\": \"global\",\n \"targetKind\": \"frequency\",\n \"target\": {\n \"kind\": \"frequency\",\n \"resolver\": \"schedule-kind-and-recurrence\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"kind\",\n \"recurrence\"\n ],\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"once\",\n \"interval\",\n \"daily\",\n \"weekly\",\n \"monthly\",\n \"customCron\"\n ]\n },\n \"recurrence\": {\n \"type\": \"object\"\n },\n \"dialect\": {\n \"enum\": [\n \"unix\",\n \"quartz\",\n \"aws-eventbridge\",\n \"kubernetes\",\n \"github-actions\",\n \"gcp-scheduler\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"cron-frequency-to-expression\",\n \"handlerContract\": {\n \"reads\": [\n \"schedule.kind\",\n \"schedule.recurrence\",\n \"schedule.timezone\",\n \"schedule.expression.dialect\"\n ],\n \"writes\": [\n \"schedule.kind\",\n \"schedule.recurrence\",\n \"schedule.expression\",\n \"value\"\n ],\n \"identityKeys\": [\n \"schedule.kind\"\n ],\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"kind\",\n \"recurrence\"\n ],\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"once\",\n \"interval\",\n \"daily\",\n \"weekly\",\n \"monthly\",\n \"customCron\"\n ]\n },\n \"recurrence\": {\n \"type\": \"object\"\n },\n \"dialect\": {\n \"enum\": [\n \"unix\",\n \"quartz\",\n \"aws-eventbridge\",\n \"kubernetes\",\n \"github-actions\",\n \"gcp-scheduler\"\n ]\n }\n }\n },\n \"failureModes\": [\n \"unsupported-kind\",\n \"non-portable-frequency\",\n \"invalid-recurrence\",\n \"cron-compile-failed\"\n ],\n \"description\": \"Compiles structured recurrence intent through compileScheduleExpression and updates the canonical schedule expression only when diagnostics have no errors.\"\n }\n }\n ],\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"validators\": [\n \"frequency-maps-to-canonical-expression\",\n \"cron-expression-valid\",\n \"diagnostics-before-patch\"\n ],\n \"affectedPaths\": [\n \"schedule.kind\",\n \"schedule.recurrence\",\n \"schedule.expression\",\n \"value\"\n ],\n \"submissionImpact\": \"affects-submission\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"cron.timezone.set\",\n \"title\": \"Set schedule timezone\",\n \"scope\": \"global\",\n \"targetKind\": \"timezone\",\n \"target\": {\n \"kind\": \"timezone\",\n \"resolver\": \"schedule-timezone\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"timezone\"\n ],\n \"properties\": {\n \"timezone\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"cron-timezone-set\",\n \"handlerContract\": {\n \"reads\": [\n \"value\",\n \"schedule\",\n \"metadata.timezone\",\n \"metadata.previewOccurrences\",\n \"metadata.previewFrom\",\n \"metadata.locale\"\n ],\n \"writes\": [\n \"schedule.timezone\",\n \"metadata.timezone\",\n \"preview\",\n \"diagnostics\"\n ],\n \"identityKeys\": [\n \"schedule.expression.cron\",\n \"schedule.timezone\"\n ],\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"timezone\"\n ],\n \"properties\": {\n \"timezone\": {\n \"type\": \"string\"\n }\n }\n },\n \"failureModes\": [\n \"invalid-timezone\",\n \"invalid-expression\",\n \"preview-generation-failed\"\n ],\n \"description\": \"Sets the IANA timezone used by schedule and metadata, then regenerates preview/diagnostics from the same expression.\"\n }\n }\n ],\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"validators\": [\n \"timezone-valid\",\n \"preview-matches-expression\",\n \"editor-runtime-round-trip\"\n ],\n \"affectedPaths\": [\n \"schedule.timezone\",\n \"metadata.timezone\",\n \"preview\",\n \"diagnostics\"\n ],\n \"submissionImpact\": \"affects-submission\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"cron.preset.apply\",\n \"title\": \"Apply CRON preset\",\n \"scope\": \"meta\",\n \"targetKind\": \"preset\",\n \"target\": {\n \"kind\": \"preset\",\n \"resolver\": \"cron-preset-by-label-or-expression\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"labelOrCron\"\n ],\n \"properties\": {\n \"labelOrCron\": {\n \"type\": \"string\"\n },\n \"timezone\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"cron-preset-apply\",\n \"handlerContract\": {\n \"reads\": [\n \"metadata.presets[]\",\n \"presets[]\",\n \"schedule.timezone\",\n \"metadata.timezone\"\n ],\n \"writes\": [\n \"schedule.kind\",\n \"schedule.expression\",\n \"schedule.timezone\",\n \"value\"\n ],\n \"identityKeys\": [\n \"metadata.presets[].label\",\n \"metadata.presets[].cron\",\n \"presets[].label\",\n \"presets[].cron\"\n ],\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"labelOrCron\"\n ],\n \"properties\": {\n \"labelOrCron\": {\n \"type\": \"string\"\n },\n \"timezone\": {\n \"type\": \"string\"\n }\n }\n },\n \"failureModes\": [\n \"preset-not-found\",\n \"preset-cron-invalid\",\n \"timezone-invalid\"\n ],\n \"description\": \"Resolves a preset by label or cron, validates it through normalizeScheduleValue/createSchedulePreview, then applies the canonical expression.\"\n }\n }\n ],\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"validators\": [\n \"preset-exists\",\n \"preset-maps-to-canonical-expression\",\n \"cron-expression-valid\"\n ],\n \"affectedPaths\": [\n \"schedule.kind\",\n \"schedule.expression\",\n \"schedule.timezone\",\n \"value\"\n ],\n \"submissionImpact\": \"affects-submission\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-preset-exists\"\n ]\n },\n {\n \"operationId\": \"cron.validate\",\n \"title\": \"Validate schedule\",\n \"scope\": \"global\",\n \"targetKind\": \"validation\",\n \"target\": {\n \"kind\": \"validation\",\n \"resolver\": \"schedule-validation-request\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"cron\": {\n \"type\": \"string\"\n },\n \"schedule\": {\n \"type\": \"object\"\n },\n \"timezone\": {\n \"type\": \"string\"\n },\n \"dialect\": {\n \"enum\": [\n \"unix\",\n \"quartz\",\n \"aws-eventbridge\",\n \"kubernetes\",\n \"github-actions\",\n \"gcp-scheduler\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"cron-validation-diagnostics\",\n \"handlerContract\": {\n \"reads\": [\n \"value\",\n \"schedule\",\n \"metadata.timezone\"\n ],\n \"writes\": [\n \"diagnostics\"\n ],\n \"identityKeys\": [\n \"schedule.expression.cron\",\n \"schedule.timezone\"\n ],\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"cron\": {\n \"type\": \"string\"\n },\n \"schedule\": {\n \"type\": \"object\"\n },\n \"timezone\": {\n \"type\": \"string\"\n },\n \"dialect\": {\n \"enum\": [\n \"unix\",\n \"quartz\",\n \"aws-eventbridge\",\n \"kubernetes\",\n \"github-actions\",\n \"gcp-scheduler\"\n ]\n }\n }\n },\n \"failureModes\": [\n \"invalid-expression\",\n \"invalid-timezone\",\n \"invalid-recurrence\"\n ],\n \"description\": \"Runs normalizeScheduleValue and validateScheduleAuthoringConfig and returns diagnostics without mutating schedule/value paths.\"\n }\n }\n ],\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"validators\": [\n \"invalid-schedules-return-diagnostics\",\n \"cron-expression-valid\",\n \"timezone-valid\"\n ],\n \"affectedPaths\": [\n \"diagnostics\"\n ],\n \"submissionImpact\": \"none\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"cron.preview.generate\",\n \"title\": \"Generate schedule preview\",\n \"scope\": \"global\",\n \"targetKind\": \"preview\",\n \"target\": {\n \"kind\": \"preview\",\n \"resolver\": \"schedule-preview-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"occurrences\": {\n \"type\": \"number\"\n },\n \"from\": {\n \"type\": \"string\"\n },\n \"timezone\": {\n \"type\": \"string\"\n },\n \"locale\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"cron-preview-generate\",\n \"handlerContract\": {\n \"reads\": [\n \"value\",\n \"schedule\",\n \"metadata.previewOccurrences\",\n \"metadata.previewFrom\",\n \"metadata.timezone\",\n \"metadata.locale\"\n ],\n \"writes\": [\n \"preview\",\n \"diagnostics\"\n ],\n \"identityKeys\": [\n \"schedule.expression.cron\",\n \"schedule.timezone\",\n \"metadata.previewFrom\"\n ],\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"occurrences\": {\n \"type\": \"number\"\n },\n \"from\": {\n \"type\": \"string\"\n },\n \"timezone\": {\n \"type\": \"string\"\n },\n \"locale\": {\n \"type\": \"string\"\n }\n }\n },\n \"failureModes\": [\n \"invalid-expression\",\n \"invalid-timezone\",\n \"preview-empty\",\n \"diagnostics-contain-errors\"\n ],\n \"description\": \"Runs createSchedulePreview and returns read-only preview occurrences plus diagnostics; it does not patch the schedule when validation fails.\"\n }\n }\n ],\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"validators\": [\n \"preview-matches-expression\",\n \"timezone-valid\",\n \"invalid-schedules-return-diagnostics\"\n ],\n \"affectedPaths\": [\n \"preview\",\n \"diagnostics\"\n ],\n \"submissionImpact\": \"none\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n }\n ],\n \"validators\": [\n {\n \"validatorId\": \"cron-expression-valid\",\n \"level\": \"error\",\n \"code\": \"PCRON001\",\n \"description\": \"CRON expressions must pass the canonical cron-runtime parser for the selected dialect before schedule/value paths are patched.\"\n },\n {\n \"validatorId\": \"cron-dialect-compatible\",\n \"level\": \"error\",\n \"code\": \"PCRON002\",\n \"description\": \"Field count, seconds support and dialect-specific rules must match CRON_DIALECTS.\"\n },\n {\n \"validatorId\": \"timezone-valid\",\n \"level\": \"error\",\n \"code\": \"PCRON003\",\n \"description\": \"Timezone must be a valid IANA timezone accepted by Intl.DateTimeFormat and schedule preview.\"\n },\n {\n \"validatorId\": \"frequency-maps-to-canonical-expression\",\n \"level\": \"error\",\n \"code\": \"PCRON004\",\n \"description\": \"Structured frequency intent must compile through compileScheduleExpression into the canonical expression when portable.\"\n },\n {\n \"validatorId\": \"preset-exists\",\n \"level\": \"error\",\n \"code\": \"PCRON005\",\n \"description\": \"Preset operations must resolve an existing preset by label or cron expression.\"\n },\n {\n \"validatorId\": \"preset-maps-to-canonical-expression\",\n \"level\": \"error\",\n \"code\": \"PCRON006\",\n \"description\": \"Preset cron values must normalize into ScheduleAuthoringConfig and a valid canonical expression.\"\n },\n {\n \"validatorId\": \"preview-matches-expression\",\n \"level\": \"error\",\n \"code\": \"PCRON007\",\n \"description\": \"Preview occurrences must be generated from the same expression, timezone and from-date requested by authoring.\"\n },\n {\n \"validatorId\": \"invalid-schedules-return-diagnostics\",\n \"level\": \"error\",\n \"code\": \"PCRON008\",\n \"description\": \"Validation and preview requests for invalid schedules must return diagnostics and must not patch schedule/value fields.\"\n },\n {\n \"validatorId\": \"diagnostics-before-patch\",\n \"level\": \"error\",\n \"code\": \"PCRON009\",\n \"description\": \"Operations that compile recurrence or presets must evaluate diagnostics before mutating canonical schedule/value paths.\"\n },\n {\n \"validatorId\": \"editor-runtime-round-trip\",\n \"level\": \"error\",\n \"code\": \"PCRON010\",\n \"description\": \"ControlValueAccessor, runtime preview and AI adapter snapshots must preserve expression and timezone.\"\n }\n ],\n \"roundTripRequirements\": [\n \"Expression and timezone edits must round-trip through ControlValueAccessor, normalizeScheduleValue and createSchedulePreview without losing the selected timezone.\",\n \"Structured frequency authoring must use ScheduleAuthoringConfig and compileScheduleExpression as the canonical source of recurrence semantics.\",\n \"Validation and preview operations are read-only: invalid schedules return diagnostics and must not mutate schedule/value paths.\",\n \"Preset operations must resolve stable label/cron identities and validate the resulting expression before applying it.\",\n \"Preview generation must use the same expression, timezone, locale, occurrences and from-date that are visible in the schedule config or metadata input.\"\n ],\n \"examples\": [\n {\n \"id\": \"weekday-0800\",\n \"request\": \"Run every weekday at 08:00.\",\n \"operationId\": \"cron.frequency.set\",\n \"params\": {\n \"kind\": \"daily\",\n \"recurrence\": {\n \"daily\": {\n \"times\": [\n \"08:00\"\n ],\n \"onlyWeekdays\": true\n }\n },\n \"dialect\": \"unix\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"every-15-minutes\",\n \"request\": \"Run every 15 minutes.\",\n \"operationId\": \"cron.frequency.set\",\n \"params\": {\n \"kind\": \"interval\",\n \"recurrence\": {\n \"interval\": {\n \"every\": 15,\n \"unit\": \"minutes\"\n }\n },\n \"dialect\": \"unix\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"monthly-first-day\",\n \"request\": \"Run monthly on the first day at 09:00.\",\n \"operationId\": \"cron.frequency.set\",\n \"params\": {\n \"kind\": \"monthly\",\n \"recurrence\": {\n \"monthly\": {\n \"mode\": \"dayOfMonth\",\n \"dayOfMonth\": 1,\n \"times\": [\n \"09:00\"\n ]\n }\n },\n \"dialect\": \"unix\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-explicit-expression\",\n \"request\": \"Use cron expression 0 8 * * 1-5.\",\n \"operationId\": \"cron.expression.set\",\n \"params\": {\n \"cron\": \"0 8 * * 1-5\",\n \"dialect\": \"unix\",\n \"seconds\": false\n },\n \"isPositive\": true\n },\n {\n \"id\": \"change-timezone-preview\",\n \"request\": \"Change timezone to America/Sao_Paulo and preview the next runs.\",\n \"operationId\": \"cron.timezone.set\",\n \"params\": {\n \"timezone\": \"America/Sao_Paulo\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"preview-next-five\",\n \"request\": \"Preview the next five runs from 2026-04-20T00:00:00Z.\",\n \"operationId\": \"cron.preview.generate\",\n \"params\": {\n \"occurrences\": 5,\n \"from\": \"2026-04-20T00:00:00.000Z\",\n \"timezone\": \"UTC\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"apply-business-hours-preset\",\n \"request\": \"Apply the business hours preset.\",\n \"operationId\": \"cron.preset.apply\",\n \"target\": \"business hours\",\n \"params\": {\n \"labelOrCron\": \"business hours\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"reject-impossible-expression\",\n \"request\": \"Use cron expression 99 99 * * *.\",\n \"operationId\": \"cron.expression.set\",\n \"params\": {\n \"cron\": \"99 99 * * *\",\n \"dialect\": \"unix\"\n },\n \"isPositive\": false\n },\n {\n \"id\": \"diagnose-invalid-expression\",\n \"request\": \"Validate 99 99 * * * and explain why it is invalid.\",\n \"operationId\": \"cron.validate\",\n \"params\": {\n \"cron\": \"99 99 * * *\",\n \"dialect\": \"unix\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"reject-invalid-timezone\",\n \"request\": \"Change timezone to Mars/Olympus.\",\n \"operationId\": \"cron.timezone.set\",\n \"params\": {\n \"timezone\": \"Mars/Olympus\"\n },\n \"isPositive\": false\n }\n ]\n}",
|
|
1556
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"pdx-cron-builder\",\"ownerPackage\":\"@praxisui/cron-builder\",\"configSchemaId\":\"CronBuilderMetadata\",\"chunkSection\":\"identity\"}",
|
|
1547
1557
|
"sourcePointer": "projects/praxis-cron-builder/src/lib/ai/praxis-cron-builder-authoring-manifest.ts",
|
|
1548
|
-
"contentHash": "
|
|
1558
|
+
"contentHash": "1cceaf90502599b642b54b358b030a6dc7d00034a78f382731db98bb7be25633",
|
|
1549
1559
|
"sourceKind": "component_definition",
|
|
1550
1560
|
"sourceId": "pdx-cron-builder",
|
|
1551
1561
|
"corpusVersion": "1.0.0"
|
|
1552
1562
|
},
|
|
1553
1563
|
{
|
|
1554
|
-
"chunkIndex":
|
|
1564
|
+
"chunkIndex": 4,
|
|
1565
|
+
"chunkKind": "authoring_manifest",
|
|
1566
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"pdx-cron-builder\",\"ownerPackage\":\"@praxisui/cron-builder\",\"configSchemaId\":\"CronBuilderMetadata\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"metadata\",\"type\":\"CronBuilderMetadata\",\"description\":\"Builder UI, timezone, locale, presets, validation and preview configuration.\"},{\"name\":\"value\",\"type\":\"string | ScheduleAuthoringConfig\",\"description\":\"Current CRON string compatibility value or canonical schedule authoring config.\"},{\"name\":\"disabled\",\"type\":\"boolean\",\"description\":\"ControlValueAccessor disabled state.\"}]}",
|
|
1567
|
+
"sourcePointer": "projects/praxis-cron-builder/src/lib/ai/praxis-cron-builder-authoring-manifest.ts",
|
|
1568
|
+
"contentHash": "b60f42440aa8331cf6c99df0ea132dbf26b75c01faef938e27e109b4331be6f1",
|
|
1569
|
+
"sourceKind": "component_definition",
|
|
1570
|
+
"sourceId": "pdx-cron-builder",
|
|
1571
|
+
"corpusVersion": "1.0.0"
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
"chunkIndex": 5,
|
|
1575
|
+
"chunkKind": "authoring_manifest",
|
|
1576
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"pdx-cron-builder\",\"ownerPackage\":\"@praxisui/cron-builder\",\"configSchemaId\":\"CronBuilderMetadata\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"expression\",\"resolver\":\"schedule-expression\",\"description\":\"Canonical CRON expression under schedule.expression or legacy value.\"},{\"kind\":\"frequency\",\"resolver\":\"schedule-kind-and-recurrence\",\"description\":\"Business recurrence intent compiled into a canonical expression.\"},{\"kind\":\"timezone\",\"resolver\":\"schedule-timezone\",\"description\":\"IANA timezone used for preview and schedule metadata.\"},{\"kind\":\"preview\",\"resolver\":\"schedule-preview-config\",\"description\":\"Read-only preview generation request for next occurrences.\"},{\"kind\":\"validation\",\"resolver\":\"schedule-validation-request\",\"description\":\"Read-only validation diagnostics request for expression or schedule config.\"},{\"kind\":\"preset\",\"resolver\":\"cron-preset-by-label-or-expression\",\"description\":\"Preset entry in metadata.presets[] or top-level presets[].\"}]}",
|
|
1577
|
+
"sourcePointer": "projects/praxis-cron-builder/src/lib/ai/praxis-cron-builder-authoring-manifest.ts",
|
|
1578
|
+
"contentHash": "8f10562e6b45133a9138f9612a39e24bcd520fb6687594732b46e7db468914e8",
|
|
1579
|
+
"sourceKind": "component_definition",
|
|
1580
|
+
"sourceId": "pdx-cron-builder",
|
|
1581
|
+
"corpusVersion": "1.0.0"
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
"chunkIndex": 6,
|
|
1585
|
+
"chunkKind": "authoring_manifest",
|
|
1586
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"pdx-cron-builder\",\"ownerPackage\":\"@praxisui/cron-builder\",\"configSchemaId\":\"CronBuilderMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"cron.expression.set\",\"title\":\"Set CRON expression\",\"scope\":\"global\",\"targetKind\":\"expression\",\"target\":{\"kind\":\"expression\",\"resolver\":\"schedule-expression\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"cron\"],\"properties\":{\"cron\":{\"type\":\"string\"},\"dialect\":{\"enum\":[\"unix\",\"quartz\",\"aws-eventbridge\",\"kubernetes\",\"github-actions\",\"gcp-scheduler\"]},\"seconds\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"cron-expression-set\",\"handlerContract\":{\"reads\":[\"schedule.expression\",\"schedule.timezone\",\"metadata.timezone\",\"value\"],\"writes\":[\"schedule.kind\",\"schedule.expression\",\"value\",\"diagnostics\"],\"identityKeys\":[\"schedule.expression.cron\",\"schedule.expression.dialect\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"cron\"],\"properties\":{\"cron\":{\"type\":\"string\"},\"dialect\":{\"enum\":[\"unix\",\"quartz\",\"aws-eventbridge\",\"kubernetes\",\"github-actions\",\"gcp-scheduler\"]},\"seconds\":{\"type\":\"boolean\"}}},\"failureModes\":[\"invalid-expression\",\"invalid-dialect\",\"seconds-field-mismatch\"],\"description\":\"Validates and normalizes an explicit CRON expression before writing schedule.expression and the compatibility value.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"cron-expression-valid\",\"cron-dialect-compatible\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"schedule.kind\",\"schedule.expression\",\"schedule.expression.cron\",\"schedule.expression.dialect\",\"schedule.expression.seconds\",\"value\",\"diagnostics\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"cron.frequency.set\",\"title\":\"Set schedule frequency\",\"scope\":\"global\",\"targetKind\":\"frequency\",\"target\":{\"kind\":\"frequency\",\"resolver\":\"schedule-kind-and-recurrence\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"kind\",\"recurrence\"],\"properties\":{\"kind\":{\"enum\":[\"once\",\"interval\",\"daily\",\"weekly\",\"monthly\",\"customCron\"]},\"recurrence\":{\"type\":\"object\"},\"dialect\":{\"enum\":[\"unix\",\"quartz\",\"aws-eventbridge\",\"kubernetes\",\"github-actions\",\"gcp-scheduler\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"cron-frequency-to-expression\",\"handlerContract\":{\"reads\":[\"schedule.kind\",\"schedule.recurrence\",\"schedule.timezone\",\"schedule.expression.dialect\"],\"writes\":[\"schedule.kind\",\"schedule.recurrence\",\"schedule.expression\",\"value\"],\"identityKeys\":[\"schedule.kind\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"kind\",\"recurrence\"],\"properties\":{\"kind\":{\"enum\":[\"once\",\"interval\",\"daily\",\"weekly\",\"monthly\",\"customCron\"]},\"recurrence\":{\"type\":\"object\"},\"dialect\":{\"enum\":[\"unix\",\"quartz\",\"aws-eventbridge\",\"kubernetes\",\"github-actions\",\"gcp-scheduler\"]}}},\"failureModes\":[\"unsupported-kind\",\"non-portable-frequency\",\"invalid-recurrence\",\"cron-compile-failed\"],\"description\":\"Compiles structured recurrence intent through compileScheduleExpression and updates the canonical schedule expression only when diagnostics have no errors.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"frequency-maps-to-canonical-expression\",\"cron-expression-valid\",\"diagnostics-before-patch\"],\"affectedPaths\":[\"schedule.kind\",\"schedule.recurrence\",\"schedule.expression\",\"value\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"cron.timezone.set\",\"title\":\"Set schedule timezone\",\"scope\":\"global\",\"targetKind\":\"timezone\",\"target\":{\"kind\":\"timezone\",\"resolver\":\"schedule-timezone\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"timezone\"],\"properties\":{\"timezone\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"cron-timezone-set\",\"handlerContract\":{\"reads\":[\"value\",\"schedule\",\"metadata.timezone\",\"metadata.previewOccurrences\",\"metadata.previewFrom\",\"metadata.locale\"],\"writes\":[\"schedule.timezone\",\"metadata.timezone\",\"preview\",\"diagnostics\"],\"identityKeys\":[\"schedule.expression.cron\",\"schedule.timezone\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"timezone\"],\"properties\":{\"timezone\":{\"type\":\"string\"}}},\"failureModes\":[\"invalid-timezone\",\"invalid-expression\",\"preview-generation-failed\"],\"description\":\"Sets the IANA timezone used by schedule and metadata, then regenerates preview/diagnostics from the same expression.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"timezone-valid\",\"preview-matches-expression\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"schedule.timezone\",\"metadata.timezone\",\"preview\",\"diagnostics\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"cron.preset.apply\",\"title\":\"Apply CRON preset\",\"scope\":\"meta\",\"targetKind\":\"preset\",\"target\":{\"kind\":\"preset\",\"resolver\":\"cron-preset-by-label-or-expression\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"labelOrCron\"],\"properties\":{\"labelOrCron\":{\"type\":\"string\"},\"timezone\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"cron-preset-apply\",\"handlerContract\":{\"reads\":[\"metadata.presets[]\",\"presets[]\",\"schedule.timezone\",\"metadata.timezone\"],\"writes\":[\"schedule.kind\",\"schedule.expression\",\"schedule.timezone\",\"value\"],\"identityKeys\":[\"metadata.presets[].label\",\"metadata.presets[].cron\",\"presets[].label\",\"presets[].cron\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"labelOrCron\"],\"properties\":{\"labelOrCron\":{\"type\":\"string\"},\"timezone\":{\"type\":\"string\"}}},\"failureModes\":[\"preset-not-found\",\"preset-cron-invalid\",\"timezone-invalid\"],\"description\":\"Resolves a preset by label or cron, validates it through normalizeScheduleValue/createSchedulePreview, then applies the canonical expression.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"preset-exists\",\"preset-maps-to-canonical-expression\",\"cron-expression-valid\"],\"affectedPaths\":[\"schedule.kind\",\"schedule.expression\",\"schedule.timezone\",\"value\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"config-initialized\",\"target-preset-exists\"]},{\"operationId\":\"cron.validate\",\"title\":\"Validate schedule\",\"scope\":\"global\",\"targetKind\":\"validation\",\"target\":{\"kind\":\"validation\",\"resolver\":\"schedule-validation-request\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"cron\":{\"type\":\"string\"},\"schedule\":{\"type\":\"object\"},\"timezone\":{\"type\":\"string\"},\"dialect\":{\"enum\":[\"unix\",\"quartz\",\"aws-eventbridge\",\"kubernetes\",\"github-actions\",\"gcp-scheduler\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"cron-validation-diagnostics\",\"handlerContract\":{\"reads\":[\"value\",\"schedule\",\"metadata.timezone\"],\"writes\":[\"diagnostics\"],\"identityKeys\":[\"schedule.expression.cron\",\"schedule.timezone\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"cron\":{\"type\":\"string\"},\"schedule\":{\"type\":\"object\"},\"timezone\":{\"type\":\"string\"},\"dialect\":{\"enum\":[\"unix\",\"quartz\",\"aws-eventbridge\",\"kubernetes\",\"github-actions\",\"gcp-scheduler\"]}}},\"failureModes\":[\"invalid-expression\",\"invalid-timezone\",\"invalid-recurrence\"],\"description\":\"Runs normalizeScheduleValue and validateScheduleAuthoringConfig and returns diagnostics without mutating schedule/value paths.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"invalid-schedules-return-diagnostics\",\"cron-expression-valid\",\"timezone-valid\"],\"affectedPaths\":[\"diagnostics\"],\"submissionImpact\":\"none\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
1587
|
+
"sourcePointer": "projects/praxis-cron-builder/src/lib/ai/praxis-cron-builder-authoring-manifest.ts",
|
|
1588
|
+
"contentHash": "5094fa50447e85bdfd42baa413f8dd551d6841e35949f6e11ee2a6b3b42eb40e",
|
|
1589
|
+
"sourceKind": "component_definition",
|
|
1590
|
+
"sourceId": "pdx-cron-builder",
|
|
1591
|
+
"corpusVersion": "1.0.0"
|
|
1592
|
+
},
|
|
1593
|
+
{
|
|
1594
|
+
"chunkIndex": 7,
|
|
1595
|
+
"chunkKind": "authoring_manifest",
|
|
1596
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"pdx-cron-builder\",\"ownerPackage\":\"@praxisui/cron-builder\",\"configSchemaId\":\"CronBuilderMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"cron.preview.generate\",\"title\":\"Generate schedule preview\",\"scope\":\"global\",\"targetKind\":\"preview\",\"target\":{\"kind\":\"preview\",\"resolver\":\"schedule-preview-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"occurrences\":{\"type\":\"number\"},\"from\":{\"type\":\"string\"},\"timezone\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"cron-preview-generate\",\"handlerContract\":{\"reads\":[\"value\",\"schedule\",\"metadata.previewOccurrences\",\"metadata.previewFrom\",\"metadata.timezone\",\"metadata.locale\"],\"writes\":[\"preview\",\"diagnostics\"],\"identityKeys\":[\"schedule.expression.cron\",\"schedule.timezone\",\"metadata.previewFrom\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"occurrences\":{\"type\":\"number\"},\"from\":{\"type\":\"string\"},\"timezone\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"}}},\"failureModes\":[\"invalid-expression\",\"invalid-timezone\",\"preview-empty\",\"diagnostics-contain-errors\"],\"description\":\"Runs createSchedulePreview and returns read-only preview occurrences plus diagnostics; it does not patch the schedule when validation fails.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"preview-matches-expression\",\"timezone-valid\",\"invalid-schedules-return-diagnostics\"],\"affectedPaths\":[\"preview\",\"diagnostics\"],\"submissionImpact\":\"none\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
1597
|
+
"sourcePointer": "projects/praxis-cron-builder/src/lib/ai/praxis-cron-builder-authoring-manifest.ts",
|
|
1598
|
+
"contentHash": "3ec65ef1ec816f60eeadfbc01e268eab0c01b67870adbcd7d576e4375993b9c0",
|
|
1599
|
+
"sourceKind": "component_definition",
|
|
1600
|
+
"sourceId": "pdx-cron-builder",
|
|
1601
|
+
"corpusVersion": "1.0.0"
|
|
1602
|
+
},
|
|
1603
|
+
{
|
|
1604
|
+
"chunkIndex": 8,
|
|
1605
|
+
"chunkKind": "authoring_manifest",
|
|
1606
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"pdx-cron-builder\",\"ownerPackage\":\"@praxisui/cron-builder\",\"configSchemaId\":\"CronBuilderMetadata\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"cron-expression-valid\",\"level\":\"error\",\"code\":\"PCRON001\",\"description\":\"CRON expressions must pass the canonical cron-runtime parser for the selected dialect before schedule/value paths are patched.\"},{\"validatorId\":\"cron-dialect-compatible\",\"level\":\"error\",\"code\":\"PCRON002\",\"description\":\"Field count, seconds support and dialect-specific rules must match CRON_DIALECTS.\"},{\"validatorId\":\"timezone-valid\",\"level\":\"error\",\"code\":\"PCRON003\",\"description\":\"Timezone must be a valid IANA timezone accepted by Intl.DateTimeFormat and schedule preview.\"},{\"validatorId\":\"frequency-maps-to-canonical-expression\",\"level\":\"error\",\"code\":\"PCRON004\",\"description\":\"Structured frequency intent must compile through compileScheduleExpression into the canonical expression when portable.\"},{\"validatorId\":\"preset-exists\",\"level\":\"error\",\"code\":\"PCRON005\",\"description\":\"Preset operations must resolve an existing preset by label or cron expression.\"},{\"validatorId\":\"preset-maps-to-canonical-expression\",\"level\":\"error\",\"code\":\"PCRON006\",\"description\":\"Preset cron values must normalize into ScheduleAuthoringConfig and a valid canonical expression.\"},{\"validatorId\":\"preview-matches-expression\",\"level\":\"error\",\"code\":\"PCRON007\",\"description\":\"Preview occurrences must be generated from the same expression, timezone and from-date requested by authoring.\"},{\"validatorId\":\"invalid-schedules-return-diagnostics\",\"level\":\"error\",\"code\":\"PCRON008\",\"description\":\"Validation and preview requests for invalid schedules must return diagnostics and must not patch schedule/value fields.\"},{\"validatorId\":\"diagnostics-before-patch\",\"level\":\"error\",\"code\":\"PCRON009\",\"description\":\"Operations that compile recurrence or presets must evaluate diagnostics before mutating canonical schedule/value paths.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PCRON010\",\"description\":\"ControlValueAccessor, runtime preview and AI adapter snapshots must preserve expression and timezone.\"}]}",
|
|
1607
|
+
"sourcePointer": "projects/praxis-cron-builder/src/lib/ai/praxis-cron-builder-authoring-manifest.ts",
|
|
1608
|
+
"contentHash": "a322028cf5c54617a0719470bdd1445a08b77de7ba8e853ea0da9fe041c58718",
|
|
1609
|
+
"sourceKind": "component_definition",
|
|
1610
|
+
"sourceId": "pdx-cron-builder",
|
|
1611
|
+
"corpusVersion": "1.0.0"
|
|
1612
|
+
},
|
|
1613
|
+
{
|
|
1614
|
+
"chunkIndex": 9,
|
|
1615
|
+
"chunkKind": "authoring_manifest",
|
|
1616
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"pdx-cron-builder\",\"ownerPackage\":\"@praxisui/cron-builder\",\"configSchemaId\":\"CronBuilderMetadata\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"Expression and timezone edits must round-trip through ControlValueAccessor, normalizeScheduleValue and createSchedulePreview without losing the selected timezone.\",\"Structured frequency authoring must use ScheduleAuthoringConfig and compileScheduleExpression as the canonical source of recurrence semantics.\",\"Validation and preview operations are read-only: invalid schedules return diagnostics and must not mutate schedule/value paths.\",\"Preset operations must resolve stable label/cron identities and validate the resulting expression before applying it.\",\"Preview generation must use the same expression, timezone, locale, occurrences and from-date that are visible in the schedule config or metadata input.\"]}",
|
|
1617
|
+
"sourcePointer": "projects/praxis-cron-builder/src/lib/ai/praxis-cron-builder-authoring-manifest.ts",
|
|
1618
|
+
"contentHash": "d6ff2c3f72db53d541a11ffb0d2c9c06734c5a7c54a9bd356242d94fe7d01a84",
|
|
1619
|
+
"sourceKind": "component_definition",
|
|
1620
|
+
"sourceId": "pdx-cron-builder",
|
|
1621
|
+
"corpusVersion": "1.0.0"
|
|
1622
|
+
},
|
|
1623
|
+
{
|
|
1624
|
+
"chunkIndex": 10,
|
|
1625
|
+
"chunkKind": "authoring_manifest",
|
|
1626
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"pdx-cron-builder\",\"ownerPackage\":\"@praxisui/cron-builder\",\"configSchemaId\":\"CronBuilderMetadata\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"weekday-0800\",\"request\":\"Run every weekday at 08:00.\",\"operationId\":\"cron.frequency.set\",\"params\":{\"kind\":\"daily\",\"recurrence\":{\"daily\":{\"times\":[\"08:00\"],\"onlyWeekdays\":true}},\"dialect\":\"unix\"},\"isPositive\":true},{\"id\":\"every-15-minutes\",\"request\":\"Run every 15 minutes.\",\"operationId\":\"cron.frequency.set\",\"params\":{\"kind\":\"interval\",\"recurrence\":{\"interval\":{\"every\":15,\"unit\":\"minutes\"}},\"dialect\":\"unix\"},\"isPositive\":true},{\"id\":\"monthly-first-day\",\"request\":\"Run monthly on the first day at 09:00.\",\"operationId\":\"cron.frequency.set\",\"params\":{\"kind\":\"monthly\",\"recurrence\":{\"monthly\":{\"mode\":\"dayOfMonth\",\"dayOfMonth\":1,\"times\":[\"09:00\"]}},\"dialect\":\"unix\"},\"isPositive\":true},{\"id\":\"set-explicit-expression\",\"request\":\"Use cron expression 0 8 * * 1-5.\",\"operationId\":\"cron.expression.set\",\"params\":{\"cron\":\"0 8 * * 1-5\",\"dialect\":\"unix\",\"seconds\":false},\"isPositive\":true},{\"id\":\"change-timezone-preview\",\"request\":\"Change timezone to America/Sao_Paulo and preview the next runs.\",\"operationId\":\"cron.timezone.set\",\"params\":{\"timezone\":\"America/Sao_Paulo\"},\"isPositive\":true},{\"id\":\"preview-next-five\",\"request\":\"Preview the next five runs from 2026-04-20T00:00:00Z.\",\"operationId\":\"cron.preview.generate\",\"params\":{\"occurrences\":5,\"from\":\"2026-04-20T00:00:00.000Z\",\"timezone\":\"UTC\"},\"isPositive\":true},{\"id\":\"apply-business-hours-preset\",\"request\":\"Apply the business hours preset.\",\"operationId\":\"cron.preset.apply\",\"target\":\"business hours\",\"params\":{\"labelOrCron\":\"business hours\"},\"isPositive\":true},{\"id\":\"reject-impossible-expression\",\"request\":\"Use cron expression 99 99 * * *.\",\"operationId\":\"cron.expression.set\",\"params\":{\"cron\":\"99 99 * * *\",\"dialect\":\"unix\"},\"isPositive\":false},{\"id\":\"diagnose-invalid-expression\",\"request\":\"Validate 99 99 * * * and explain why it is invalid.\",\"operationId\":\"cron.validate\",\"params\":{\"cron\":\"99 99 * * *\",\"dialect\":\"unix\"},\"isPositive\":true},{\"id\":\"reject-invalid-timezone\",\"request\":\"Change timezone to Mars/Olympus.\",\"operationId\":\"cron.timezone.set\",\"params\":{\"timezone\":\"Mars/Olympus\"},\"isPositive\":false}]}",
|
|
1627
|
+
"sourcePointer": "projects/praxis-cron-builder/src/lib/ai/praxis-cron-builder-authoring-manifest.ts",
|
|
1628
|
+
"contentHash": "26e54087a1ae0e3e1603db0d1e5baab27abacb8c65417525b6cd762ad1e79d2f",
|
|
1629
|
+
"sourceKind": "component_definition",
|
|
1630
|
+
"sourceId": "pdx-cron-builder",
|
|
1631
|
+
"corpusVersion": "1.0.0"
|
|
1632
|
+
},
|
|
1633
|
+
{
|
|
1634
|
+
"chunkIndex": 11,
|
|
1555
1635
|
"chunkKind": "context_pack",
|
|
1556
|
-
"content": "{\
|
|
1636
|
+
"content": "{\"componentContext\":{\"version\":\"v1\",\"optionsByPath\":{},\"actionCatalog\":[{\"id\":\"label.set\",\"intentExamples\":[\"label\",\"rótulo\",\"titulo\"],\"patchTemplate\":{\"label\":\"{{value}}\"}},{\"id\":\"hint.set\",\"intentExamples\":[\"hint\",\"help\",\"ajuda\"],\"patchTemplate\":{\"hint\":\"{{value}}\"}},{\"id\":\"enableSeconds.enable\",\"intentExamples\":[\"seconds\",\"segundos\",\"enable seconds\"],\"patchTemplate\":{\"enableSeconds\":true}},{\"id\":\"enableSeconds.disable\",\"intentExamples\":[\"disable seconds\",\"sem segundos\"],\"patchTemplate\":{\"enableSeconds\":false}},{\"id\":\"preset.add\",\"intentExamples\":[\"add preset\",\"new preset\",\"preset\"],\"patchTemplate\":{\"presets\":[{\"label\":\"{{value}}\",\"cron\":\"{{target}}\"}]}},{\"id\":\"preset.label.set\",\"intentExamples\":[\"rename preset\",\"preset label\"],\"patchTemplate\":{\"presets\":[{\"cron\":\"{{target}}\",\"label\":\"{{value}}\"}]}},{\"id\":\"preset.cron.set\",\"intentExamples\":[\"preset cron\",\"cron expression\"],\"patchTemplate\":{\"presets\":[{\"label\":\"{{target}}\",\"cron\":\"{{value}}\"}]}},{\"id\":\"schedule.daily.set\",\"intentExamples\":[\"daily\",\"diario\",\"diário\",\"every day\"],\"patchTemplate\":{\"schedule\":{\"kind\":\"daily\",\"timezone\":\"{{timezone}}\",\"recurrence\":{\"daily\":{\"times\":[\"{{value}}\"]}}}}},{\"id\":\"schedule.weekdays.set\",\"intentExamples\":[\"weekdays\",\"dias uteis\",\"dias úteis\",\"monday to friday\"],\"patchTemplate\":{\"schedule\":{\"kind\":\"daily\",\"timezone\":\"{{timezone}}\",\"recurrence\":{\"daily\":{\"times\":[\"{{value}}\"],\"onlyWeekdays\":true}}}}},{\"id\":\"schedule.timezone.set\",\"intentExamples\":[\"timezone\",\"fuso\",\"fuso horario\",\"fuso horário\"],\"patchTemplate\":{\"schedule\":{\"timezone\":\"{{value}}\"}}},{\"id\":\"schedule.concurrency.set\",\"intentExamples\":[\"concurrency\",\"concorrencia\",\"concorrência\",\"overlap\"],\"patchTemplate\":{\"schedule\":{\"executionPolicy\":{\"concurrencyPolicy\":\"{{value}}\"}}}}],\"fieldResolvers\":{\"presets[]\":[\"label\",\"cron\"]},\"hints\":[\"Use presets[].label or presets[].cron as merge keys; avoid array indexes.\",\"Prefer schedule.kind plus schedule.recurrence for business intent; use schedule.expression.cron only when the user explicitly asks for custom CRON.\",\"Cron expressions should be validated with diagnostics before applying to production.\"]}}",
|
|
1557
1637
|
"sourcePointer": "projects/praxis-cron-builder/src/lib/ai/cron-builder-context-pack.ts",
|
|
1558
|
-
"contentHash": "
|
|
1638
|
+
"contentHash": "d392e6a6f0aa2a22ae43d1de15fa2cb6e5dbc62b61aa630b6c2a95010afe8029",
|
|
1559
1639
|
"sourceKind": "component_definition",
|
|
1560
1640
|
"sourceId": "pdx-cron-builder",
|
|
1561
1641
|
"corpusVersion": "1.0.0"
|
|
1562
1642
|
},
|
|
1563
1643
|
{
|
|
1564
|
-
"chunkIndex":
|
|
1644
|
+
"chunkIndex": 12,
|
|
1565
1645
|
"chunkKind": "recipe",
|
|
1566
|
-
"content": "{\
|
|
1646
|
+
"content": "{\"_comment\":\"Recipe for pdx-cron-builder | controlType: cronBuilder\",\"templateMeta\":{\"registryKey\":\"praxis-cron-builder\",\"variantId\":\"base\",\"tags\":[\"dynamic-fields\",\"base\"],\"useWhen\":\"criar campo cronBuilder\",\"examplePrompts\":[\"crie um campo cronBuilder\",\"adicione um cronBuilder ao formulario\"]},\"fieldMetadata\":{\"name\":\"example_cronBuilder\",\"label\":\"Example cronBuilder\",\"placeholder\":\"example\",\"hint\":\"example\",\"tooltip\":\"example\",\"description\":\"example\",\"group\":\"example\",\"order\":1,\"width\":\"example\",\"isFlex\":true,\"controlType\":\"cronBuilder\",\"materialDesign\":{\"appearance\":\"fill\",\"color\":\"primary\",\"floatLabel\":\"auto\",\"subscriptSizing\":\"fixed\",\"hideRequiredMarker\":true,\"density\":\"comfortable\",\"disableRipple\":true,\"customPalette\":{\"example\":true},\"animations\":{\"example\":true}},\"prefixIcon\":\"example\",\"suffixIcon\":\"example\",\"iconPosition\":\"start\",\"iconSize\":\"small\",\"validators\":{\"example\":true,\"required\":true,\"email\":true,\"minLength\":1,\"maxLength\":1,\"min\":1,\"max\":1,\"pattern\":\"example\",\"minWords\":1,\"requiredChecked\":true},\"validationMode\":\"immediate\",\"debounceTime\":1,\"hidden\":true,\"visibleIn\":[\"form\"],\"formHidden\":true,\"tableHidden\":true,\"filterHidden\":true,\"dependencyFields\":[\"status\"],\"conditionalRequired\":{\"==\":[{\"var\":\"status\"},\"active\"]},\"conditionalDisplay\":{\"==\":[{\"var\":\"status\"},\"active\"]},\"dependencyFilterMap\":{\"example\":true},\"dependencyValuePath\":\"example\",\"dependencyMergeStrategy\":\"replace\",\"dependencyLoadOnChange\":\"respectLoadOn\",\"resetOnDependentChange\":true,\"dependencyDebounceMs\":1,\"transformDisplayValue\":\"formValue.status == 'active'\",\"transformSaveValue\":\"formValue.status == 'active'\",\"textTransformApply\":\"displayOnly\",\"inlineEditing\":true,\"unique\":true,\"readOnly\":true,\"disabled\":true,\"defaultValue\":\"default\",\"ariaLabel\":\"example\",\"ariaDescribedBy\":\"example\"}}",
|
|
1567
1647
|
"sourcePointer": "examples/ai-recipes/praxis-cron-builder/pdx-cron-builder.json",
|
|
1568
|
-
"contentHash": "
|
|
1648
|
+
"contentHash": "16235ce541001c7acf6275007481db41d8705d8422e337d20b7c27c8411491f3",
|
|
1569
1649
|
"sourceKind": "component_definition",
|
|
1570
1650
|
"sourceId": "pdx-cron-builder",
|
|
1571
1651
|
"corpusVersion": "1.0.0"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/cron-builder",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.79",
|
|
4
4
|
"description": "Cron expression builder utilities and components for Praxis UI.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"@angular/forms": "^21.0.0",
|
|
9
9
|
"@angular/cdk": "^21.0.0",
|
|
10
10
|
"@angular/material": "^21.0.0",
|
|
11
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
12
|
-
"@praxisui/ai": "^9.0.0-beta.
|
|
11
|
+
"@praxisui/core": "^9.0.0-beta.79",
|
|
12
|
+
"@praxisui/ai": "^9.0.0-beta.79",
|
|
13
13
|
"rxjs": "~7.8.0"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|