@unbrained/pm-cli 2026.5.6 → 2026.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/pm/extensions/.managed-extensions.json +2 -2
- package/.agents/pm/extensions/beads/runtime.js +4 -4
- package/.agents/pm/extensions/beads/runtime.ts +5 -5
- package/.agents/pm/extensions/todos/runtime.js +7 -7
- package/.agents/pm/extensions/todos/runtime.ts +10 -10
- package/.agents/skills/HARNESS_COMPATIBILITY.md +45 -0
- package/.agents/skills/README.md +21 -0
- package/.agents/skills/pm-developer/SKILL.md +73 -0
- package/.agents/skills/pm-developer/references/COMMAND_PLAYBOOK.md +48 -0
- package/.agents/skills/pm-developer/references/PROMPTS.md +17 -0
- package/.agents/skills/pm-extensions/SKILL.md +57 -0
- package/.agents/skills/pm-extensions/references/LIFECYCLE.md +40 -0
- package/.agents/skills/pm-extensions/references/TROUBLESHOOTING.md +25 -0
- package/.agents/skills/pm-sdk/SKILL.md +50 -0
- package/.agents/skills/pm-sdk/references/INTEGRATION_CHECKLIST.md +31 -0
- package/.agents/skills/pm-sdk/references/PROMPTS.md +13 -0
- package/.agents/skills/pm-user/SKILL.md +59 -0
- package/.agents/skills/pm-user/references/PROMPTS.md +17 -0
- package/.agents/skills/pm-user/references/WORKFLOWS.md +35 -0
- package/.claude-plugin/marketplace.json +38 -0
- package/.pi/README.md +26 -0
- package/.pi/extensions/pm-cli/index.js +147 -0
- package/.pi/prompts/pm-workflow.md +5 -0
- package/.pi/skills/pm-native/SKILL.md +40 -0
- package/.pi/skills/pm-release/SKILL.md +35 -0
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +6 -0
- package/PRD.md +16 -16
- package/README.md +22 -4
- package/dist/cli/commands/claim.js +6 -6
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/close.js +9 -9
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments.d.ts +2 -0
- package/dist/cli/commands/comments.js +57 -8
- package/dist/cli/commands/comments.js.map +1 -1
- package/dist/cli/commands/completion.js +33 -4
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/config.js +6 -3
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/contracts.js +4 -1
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.d.ts +2 -2
- package/dist/cli/commands/create.js +4 -4
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/docs.js +4 -4
- package/dist/cli/commands/docs.js.map +1 -1
- package/dist/cli/commands/files.js +10 -10
- package/dist/cli/commands/files.js.map +1 -1
- package/dist/cli/commands/get.js +5 -5
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/guide.d.ts +55 -0
- package/dist/cli/commands/guide.js +260 -0
- package/dist/cli/commands/guide.js.map +1 -0
- package/dist/cli/commands/health.js +1 -1
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history.js +30 -10
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/learnings.js +3 -3
- package/dist/cli/commands/learnings.js.map +1 -1
- package/dist/cli/commands/notes.js +3 -3
- package/dist/cli/commands/notes.js.map +1 -1
- package/dist/cli/commands/reindex.js +18 -32
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/restore.d.ts +2 -2
- package/dist/cli/commands/restore.js +44 -24
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/search.d.ts +2 -0
- package/dist/cli/commands/search.js +30 -21
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/test-all.d.ts +2 -0
- package/dist/cli/commands/test-all.js +2 -0
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test.d.ts +1 -0
- package/dist/cli/commands/test.js +4 -3
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update.js +118 -118
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.js +1 -1
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/guide-topics.d.ts +25 -0
- package/dist/cli/guide-topics.js +283 -0
- package/dist/cli/guide-topics.js.map +1 -0
- package/dist/cli/help-content.js +25 -1
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/register-list-query.js +38 -1
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +17 -4
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-setup.js +1 -1
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/core/history/history.js +32 -11
- package/dist/core/history/history.js.map +1 -1
- package/dist/core/item/item-format.d.ts +2 -2
- package/dist/core/item/item-format.js +16 -16
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/schema/runtime-field-filters.js +1 -1
- package/dist/core/schema/runtime-field-filters.js.map +1 -1
- package/dist/core/schema/runtime-field-values.js +2 -2
- package/dist/core/schema/runtime-field-values.js.map +1 -1
- package/dist/core/schema/runtime-schema.d.ts +1 -1
- package/dist/core/schema/runtime-schema.js +3 -3
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/search/cache.js +7 -21
- package/dist/core/search/cache.js.map +1 -1
- package/dist/core/search/corpus.d.ts +13 -0
- package/dist/core/search/corpus.js +74 -0
- package/dist/core/search/corpus.js.map +1 -0
- package/dist/core/search/embedding-batches.js +90 -30
- package/dist/core/search/embedding-batches.js.map +1 -1
- package/dist/core/sentry/instrument.d.ts +3 -1
- package/dist/core/sentry/instrument.js +93 -9
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/shared/constants.d.ts +1 -1
- package/dist/core/shared/constants.js +1 -1
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/store/front-matter-cache.d.ts +1 -1
- package/dist/core/store/front-matter-cache.js +13 -13
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/core/store/item-format-migration.js +5 -2
- package/dist/core/store/item-format-migration.js.map +1 -1
- package/dist/core/store/item-store.js +16 -15
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/paths.js +1 -1
- package/dist/core/store/paths.js.map +1 -1
- package/dist/core/store/settings.js +6 -1
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/test/item-test-run-tracking.js +2 -2
- package/dist/core/test/item-test-run-tracking.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.js +405 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/pi/native.d.ts +5 -0
- package/dist/pi/native.js +183 -0
- package/dist/pi/native.js.map +1 -0
- package/dist/sdk/cli-contracts.d.ts +3 -1
- package/dist/sdk/cli-contracts.js +67 -2
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/types.d.ts +10 -2
- package/dist/types.js.map +1 -1
- package/docs/AGENT_GUIDE.md +15 -0
- package/docs/ARCHITECTURE.md +2 -2
- package/docs/CLAUDE_CODE_PLUGIN.md +186 -0
- package/docs/CODEX_PLUGIN.md +33 -0
- package/docs/COMMANDS.md +6 -2
- package/docs/CONFIGURATION.md +2 -8
- package/docs/EXTENSIONS.md +1 -0
- package/docs/PI_PACKAGE.md +56 -0
- package/docs/QUICKSTART.md +1 -0
- package/docs/README.md +30 -1
- package/docs/RELEASING.md +4 -2
- package/docs/SDK.md +3 -2
- package/marketplace.json +34 -0
- package/package.json +38 -4
- package/plugins/pm-cli-claude/.claude-plugin/plugin.json +23 -0
- package/plugins/pm-cli-claude/.mcp.json +12 -0
- package/plugins/pm-cli-claude/README.md +184 -0
- package/plugins/pm-cli-claude/agents/pm-coordinator.md +48 -0
- package/plugins/pm-cli-claude/commands/pm-audit.md +39 -0
- package/plugins/pm-cli-claude/commands/pm-calendar.md +41 -0
- package/plugins/pm-cli-claude/commands/pm-close-task.md +20 -0
- package/plugins/pm-cli-claude/commands/pm-developer.md +38 -0
- package/plugins/pm-cli-claude/commands/pm-init.md +44 -0
- package/plugins/pm-cli-claude/commands/pm-list.md +39 -0
- package/plugins/pm-cli-claude/commands/pm-new.md +36 -0
- package/plugins/pm-cli-claude/commands/pm-planner.md +51 -0
- package/plugins/pm-cli-claude/commands/pm-release.md +41 -0
- package/plugins/pm-cli-claude/commands/pm-search.md +21 -0
- package/plugins/pm-cli-claude/commands/pm-start-task.md +27 -0
- package/plugins/pm-cli-claude/commands/pm-status.md +15 -0
- package/plugins/pm-cli-claude/commands/pm-triage.md +35 -0
- package/plugins/pm-cli-claude/commands/pm-workflow.md +49 -0
- package/plugins/pm-cli-claude/hooks/hooks.json +17 -0
- package/plugins/pm-cli-claude/hooks/session-start.mjs +55 -0
- package/plugins/pm-cli-claude/scripts/pm-mcp-server.mjs +60 -0
- package/plugins/pm-cli-claude/skills/pm-audit/SKILL.md +88 -0
- package/plugins/pm-cli-claude/skills/pm-developer/SKILL.md +116 -0
- package/plugins/pm-cli-claude/skills/pm-planner/SKILL.md +118 -0
- package/plugins/pm-cli-claude/skills/pm-release/SKILL.md +83 -0
- package/plugins/pm-cli-claude/skills/pm-workflow/SKILL.md +148 -0
- package/plugins/pm-cli-codex/.codex-plugin/plugin.json +45 -0
- package/plugins/pm-cli-codex/.mcp.json +14 -0
- package/plugins/pm-cli-codex/README.md +30 -0
- package/plugins/pm-cli-codex/assets/pm-cli-small.svg +4 -0
- package/plugins/pm-cli-codex/commands/pm-audit.md +8 -0
- package/plugins/pm-cli-codex/commands/pm-close-task.md +9 -0
- package/plugins/pm-cli-codex/commands/pm-start-task.md +9 -0
- package/plugins/pm-cli-codex/scripts/pm-mcp-server.mjs +54 -0
- package/plugins/pm-cli-codex/skills/pm-auditor/SKILL.md +21 -0
- package/plugins/pm-cli-codex/skills/pm-auditor/agents/openai.yaml +6 -0
- package/plugins/pm-cli-codex/skills/pm-native/SKILL.md +57 -0
- package/plugins/pm-cli-codex/skills/pm-native/agents/openai.yaml +6 -0
- package/plugins/pm-cli-codex/skills/pm-release/SKILL.md +19 -0
- package/plugins/pm-cli-codex/skills/pm-release/agents/openai.yaml +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-format.js","sourceRoot":"/","sources":["core/item/item-format.ts"],"names":[],"mappings":"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","sourcesContent":["import { decode as decodeToon, encode as encodeToon } from \"@toon-format/toon\";\nimport type {\n CalendarEvent,\n Comment,\n Dependency,\n ItemDocument,\n ItemFrontMatter,\n RuntimeSchemaSettings,\n ItemTestRunSummary,\n LinkedDoc,\n LinkedFile,\n LinkedTest,\n LogNote,\n RecurrenceRule,\n Reminder,\n} from \"../../types/index.js\";\nimport type { ItemFormat } from \"../../types/index.js\";\nimport {\n CONFIDENCE_TEXT_VALUES,\n ISSUE_SEVERITY_VALUES,\n RECURRENCE_FREQUENCY_VALUES,\n RECURRENCE_WEEKDAY_VALUES,\n STATUS_VALUES,\n} from \"../../types/index.js\";\nimport { coerceRuntimeFieldValue } from \"../schema/runtime-field-values.js\";\nimport {\n resolveRuntimeFieldRegistry,\n resolveRuntimeStatusRegistry,\n type RuntimeFieldRegistry,\n type RuntimeStatusRegistry,\n} from \"../schema/runtime-schema.js\";\nimport { normalizeStatusInput } from \"./status.js\";\nimport { EXIT_CODE, FRONT_MATTER_KEY_ORDER } from \"../shared/constants.js\";\nimport { findFirstMergeConflictMarker } from \"../shared/conflict-markers.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport { orderObject } from \"../shared/serialization.js\";\nimport { compareTimestampStrings, isTimestampLiteral } from \"../shared/time.js\";\n\nconst LINKED_TEST_PM_CONTEXT_MODE_VALUES = new Set([\"schema\", \"tracker\", \"auto\"]);\n\nfunction normalizePathValue(value: string): string {\n return value.replaceAll(\"\\\\\", \"/\");\n}\n\nconst REQUIRED_STRING_FIELDS = [\n \"id\",\n \"title\",\n \"description\",\n \"created_at\",\n \"updated_at\",\n] as const;\n\nconst STATIC_FRONT_MATTER_FIELD_SET = new Set(FRONT_MATTER_KEY_ORDER);\n\ninterface RuntimeSchemaValidationContext {\n statusRegistry?: RuntimeStatusRegistry;\n fieldRegistry?: RuntimeFieldRegistry;\n unknownFieldPolicy: \"allow\" | \"warn\" | \"reject\";\n onWarning?: (warning: string) => void;\n}\n\nexport interface ItemDocumentFormatOptions {\n format?: ItemFormat;\n schema?: RuntimeSchemaSettings;\n onWarning?: (warning: string) => void;\n}\n\nfunction resolveRuntimeSchemaValidationContext(\n options: ItemDocumentFormatOptions | undefined,\n): RuntimeSchemaValidationContext | undefined {\n if (!options?.schema) {\n return undefined;\n }\n return {\n statusRegistry: resolveRuntimeStatusRegistry(options.schema),\n fieldRegistry: resolveRuntimeFieldRegistry(options.schema),\n unknownFieldPolicy: options.schema.unknown_field_policy ?? \"allow\",\n onWarning: options.onWarning,\n };\n}\n\nfunction runtimeFieldRequiredForType(definition: RuntimeFieldRegistry[\"definitions\"][number], typeName: string): boolean {\n if (!definition.required) {\n return false;\n }\n if (definition.required_types.length === 0) {\n return true;\n }\n return definition.required_types.map((value) => value.toLowerCase()).includes(typeName.trim().toLowerCase());\n}\n\nfunction weekdayOrderIndex(value: (typeof RECURRENCE_WEEKDAY_VALUES)[number]): number {\n return RECURRENCE_WEEKDAY_VALUES.indexOf(value);\n}\n\nfunction validationError(message: string): never {\n throw new PmCliError(`Invalid item front matter: ${message}`, EXIT_CODE.GENERIC_FAILURE);\n}\n\nfunction assertFrontMatterCondition(condition: boolean, message: string): void {\n if (!condition) {\n validationError(message);\n }\n}\n\nfunction assertTimestampField(record: Record<string, unknown>, fieldName: \"created_at\" | \"updated_at\" | \"deadline\"): void {\n const rawValue = record[fieldName];\n assertFrontMatterCondition(typeof rawValue === \"string\", `${fieldName} must be a string`);\n const timestamp = rawValue as string;\n assertFrontMatterCondition(isTimestampLiteral(timestamp), `${fieldName} must be a valid ISO timestamp`);\n}\n\nfunction assertValidRecurrenceRule(recurrence: unknown): void {\n assertFrontMatterCondition(\n typeof recurrence === \"object\" && recurrence !== null && !Array.isArray(recurrence),\n \"event.recurrence must be an object\",\n );\n const recurrenceRecord = recurrence as Record<string, unknown>;\n assertFrontMatterCondition(typeof recurrenceRecord.freq === \"string\", \"event.recurrence.freq must be a string\");\n const frequency = (recurrenceRecord.freq as string).trim().toLowerCase();\n assertFrontMatterCondition(\n RECURRENCE_FREQUENCY_VALUES.includes(frequency as (typeof RECURRENCE_FREQUENCY_VALUES)[number]),\n `event.recurrence.freq must be one of: ${RECURRENCE_FREQUENCY_VALUES.join(\", \")}`,\n );\n\n if (recurrenceRecord.interval !== undefined) {\n assertFrontMatterCondition(\n typeof recurrenceRecord.interval === \"number\" &&\n Number.isInteger(recurrenceRecord.interval) &&\n (recurrenceRecord.interval as number) >= 1,\n \"event.recurrence.interval must be an integer >= 1\",\n );\n }\n\n if (recurrenceRecord.count !== undefined) {\n assertFrontMatterCondition(\n typeof recurrenceRecord.count === \"number\" && Number.isInteger(recurrenceRecord.count) && (recurrenceRecord.count as number) >= 1,\n \"event.recurrence.count must be an integer >= 1\",\n );\n }\n\n if (recurrenceRecord.until !== undefined) {\n assertFrontMatterCondition(typeof recurrenceRecord.until === \"string\", \"event.recurrence.until must be a string\");\n assertFrontMatterCondition(\n isTimestampLiteral(recurrenceRecord.until as string),\n \"event.recurrence.until must be a valid ISO timestamp\",\n );\n }\n\n if (recurrenceRecord.by_weekday !== undefined) {\n assertFrontMatterCondition(Array.isArray(recurrenceRecord.by_weekday), \"event.recurrence.by_weekday must be an array\");\n for (const weekday of recurrenceRecord.by_weekday as unknown[]) {\n assertFrontMatterCondition(typeof weekday === \"string\", \"event.recurrence.by_weekday entries must be strings\");\n const normalizedWeekday = (weekday as string).trim().toLowerCase();\n assertFrontMatterCondition(\n RECURRENCE_WEEKDAY_VALUES.includes(normalizedWeekday as (typeof RECURRENCE_WEEKDAY_VALUES)[number]),\n `event.recurrence.by_weekday entries must be one of: ${RECURRENCE_WEEKDAY_VALUES.join(\", \")}`,\n );\n }\n }\n\n if (recurrenceRecord.by_month_day !== undefined) {\n assertFrontMatterCondition(Array.isArray(recurrenceRecord.by_month_day), \"event.recurrence.by_month_day must be an array\");\n for (const day of recurrenceRecord.by_month_day as unknown[]) {\n assertFrontMatterCondition(\n typeof day === \"number\" && Number.isInteger(day) && day >= 1 && day <= 31,\n \"event.recurrence.by_month_day entries must be integers 1..31\",\n );\n }\n }\n\n if (recurrenceRecord.exdates !== undefined) {\n assertFrontMatterCondition(Array.isArray(recurrenceRecord.exdates), \"event.recurrence.exdates must be an array\");\n for (const exdate of recurrenceRecord.exdates as unknown[]) {\n assertFrontMatterCondition(typeof exdate === \"string\", \"event.recurrence.exdates entries must be strings\");\n assertFrontMatterCondition(isTimestampLiteral(exdate as string), \"event.recurrence.exdates entries must be valid ISO timestamps\");\n }\n }\n}\n\nfunction assertValidFrontMatter(\n frontMatter: unknown,\n runtimeContext?: RuntimeSchemaValidationContext,\n): asserts frontMatter is ItemFrontMatter {\n assertFrontMatterCondition(\n typeof frontMatter === \"object\" && frontMatter !== null && !Array.isArray(frontMatter),\n \"front matter must be an object\",\n );\n\n const record = frontMatter as Record<string, unknown>;\n for (const fieldName of REQUIRED_STRING_FIELDS) {\n assertFrontMatterCondition(typeof record[fieldName] === \"string\", `${fieldName} is required and must be a string`);\n }\n\n const itemType = record.type;\n assertFrontMatterCondition(typeof itemType === \"string\" && itemType.trim().length > 0, \"type must be a non-empty string\");\n\n const status = record.status;\n assertFrontMatterCondition(\n typeof status === \"string\" && status.trim().length > 0,\n \"status must be a non-empty string\",\n );\n const statusRegistry = runtimeContext?.statusRegistry;\n const normalizedStatus = normalizeStatusInput(status as string, statusRegistry);\n const statusDomain = statusRegistry\n ? statusRegistry.definitions.map((definition) => definition.id)\n : [...STATUS_VALUES];\n assertFrontMatterCondition(normalizedStatus !== undefined, `status must be one of: ${statusDomain.join(\", \")}`);\n\n const priority = record.priority;\n assertFrontMatterCondition(\n typeof priority === \"number\" && Number.isInteger(priority) && [0, 1, 2, 3, 4].includes(priority),\n \"priority must be an integer 0..4\",\n );\n\n const tags = record.tags;\n assertFrontMatterCondition(Array.isArray(tags), \"tags must be an array\");\n for (const tag of tags as unknown[]) {\n assertFrontMatterCondition(typeof tag === \"string\", \"tags entries must be strings\");\n }\n\n const confidence = record.confidence;\n if (confidence !== undefined) {\n if (typeof confidence === \"number\") {\n assertFrontMatterCondition(\n Number.isInteger(confidence) && confidence >= 0 && confidence <= 100,\n \"confidence number value must be an integer 0..100\",\n );\n } else if (typeof confidence === \"string\") {\n const normalizedConfidence = confidence.trim().toLowerCase();\n const isKnownTextConfidence =\n normalizedConfidence === \"med\" || CONFIDENCE_TEXT_VALUES.includes(normalizedConfidence as (typeof CONFIDENCE_TEXT_VALUES)[number]);\n assertFrontMatterCondition(\n isKnownTextConfidence,\n `confidence string value must be one of: ${[...CONFIDENCE_TEXT_VALUES, \"med\"].join(\", \")}`,\n );\n } else {\n assertFrontMatterCondition(false, \"confidence must be a number or string\");\n }\n }\n\n const severity = record.severity;\n if (severity !== undefined) {\n if (typeof severity !== \"string\") {\n validationError(\"severity must be a string\");\n }\n const normalizedSeverity = severity.trim().toLowerCase();\n const isKnownSeverity =\n normalizedSeverity === \"med\" || ISSUE_SEVERITY_VALUES.includes(normalizedSeverity as (typeof ISSUE_SEVERITY_VALUES)[number]);\n assertFrontMatterCondition(\n isKnownSeverity,\n `severity value must be one of: ${[...ISSUE_SEVERITY_VALUES, \"med\"].join(\", \")}`,\n );\n }\n\n const regression = record.regression;\n if (regression !== undefined) {\n if (typeof regression !== \"boolean\") {\n validationError(\"regression must be a boolean\");\n }\n }\n\n assertTimestampField(record, \"created_at\");\n assertTimestampField(record, \"updated_at\");\n if (record.deadline !== undefined) {\n assertTimestampField(record, \"deadline\");\n }\n if (record.reminders !== undefined) {\n const reminders = record.reminders;\n assertFrontMatterCondition(Array.isArray(reminders), \"reminders must be an array\");\n for (const reminder of reminders as unknown[]) {\n assertFrontMatterCondition(typeof reminder === \"object\" && reminder !== null && !Array.isArray(reminder), \"reminders entries must be objects\");\n const reminderRecord = reminder as Record<string, unknown>;\n assertFrontMatterCondition(typeof reminderRecord.at === \"string\", \"reminder.at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(reminderRecord.at as string), \"reminder.at must be a valid ISO timestamp\");\n assertFrontMatterCondition(typeof reminderRecord.text === \"string\", \"reminder.text must be a string\");\n assertFrontMatterCondition((reminderRecord.text as string).trim().length > 0, \"reminder.text must not be empty\");\n }\n }\n if (record.events !== undefined) {\n const events = record.events;\n assertFrontMatterCondition(Array.isArray(events), \"events must be an array\");\n for (const event of events as unknown[]) {\n assertFrontMatterCondition(typeof event === \"object\" && event !== null && !Array.isArray(event), \"events entries must be objects\");\n const eventRecord = event as Record<string, unknown>;\n assertFrontMatterCondition(typeof eventRecord.start_at === \"string\", \"event.start_at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(eventRecord.start_at as string), \"event.start_at must be a valid ISO timestamp\");\n\n if (eventRecord.end_at !== undefined) {\n assertFrontMatterCondition(typeof eventRecord.end_at === \"string\", \"event.end_at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(eventRecord.end_at as string), \"event.end_at must be a valid ISO timestamp\");\n assertFrontMatterCondition(\n compareTimestampStrings(eventRecord.end_at as string, eventRecord.start_at as string) > 0,\n \"event.end_at must be after event.start_at\",\n );\n }\n\n for (const stringField of [\"title\", \"description\", \"location\", \"timezone\"] as const) {\n if (eventRecord[stringField] !== undefined) {\n assertFrontMatterCondition(typeof eventRecord[stringField] === \"string\", `event.${stringField} must be a string`);\n assertFrontMatterCondition(\n (eventRecord[stringField] as string).trim().length > 0,\n `event.${stringField} must not be empty`,\n );\n }\n }\n\n if (eventRecord.all_day !== undefined) {\n assertFrontMatterCondition(typeof eventRecord.all_day === \"boolean\", \"event.all_day must be a boolean\");\n }\n\n if (eventRecord.recurrence !== undefined) {\n assertValidRecurrenceRule(eventRecord.recurrence);\n if ((eventRecord.recurrence as Record<string, unknown>).until !== undefined) {\n assertFrontMatterCondition(\n compareTimestampStrings(\n (eventRecord.recurrence as Record<string, unknown>).until as string,\n eventRecord.start_at as string,\n ) >= 0,\n \"event.recurrence.until must be at or after event.start_at\",\n );\n }\n }\n }\n }\n if (record.closed_at !== undefined) {\n const closedAt = record.closed_at;\n assertFrontMatterCondition(typeof closedAt === \"string\", \"closed_at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(closedAt as string), \"closed_at must be a valid ISO timestamp\");\n }\n for (const fieldName of [\"source_type\", \"source_owner\", \"design\", \"external_ref\"] as const) {\n const value = record[fieldName];\n if (value !== undefined) {\n assertFrontMatterCondition(typeof value === \"string\", `${fieldName} must be a string`);\n }\n }\n const typeOptions = record.type_options;\n if (typeOptions !== undefined) {\n assertFrontMatterCondition(\n typeof typeOptions === \"object\" && typeOptions !== null && !Array.isArray(typeOptions),\n \"type_options must be an object\",\n );\n for (const [optionKey, optionValue] of Object.entries(typeOptions as Record<string, unknown>)) {\n assertFrontMatterCondition(optionKey.trim().length > 0, \"type_options keys must be non-empty\");\n assertFrontMatterCondition(typeof optionValue === \"string\", \"type_options values must be strings\");\n const optionText = optionValue as string;\n assertFrontMatterCondition(optionText.trim().length > 0, \"type_options values must be non-empty strings\");\n }\n }\n\n if (runtimeContext?.fieldRegistry) {\n for (const definition of runtimeContext.fieldRegistry.definitions) {\n const fieldValue = record[definition.front_matter_key];\n if (fieldValue === undefined) {\n if (runtimeFieldRequiredForType(definition, itemType as string)) {\n validationError(`missing required schema field: ${definition.front_matter_key}`);\n }\n continue;\n }\n try {\n record[definition.front_matter_key] = coerceRuntimeFieldValue(\n definition,\n fieldValue,\n `metadata field \"${definition.front_matter_key}\"`,\n );\n } catch (error: unknown) {\n validationError(\n error instanceof Error ? error.message.replace(/^Invalid\\s+/u, \"\") : `invalid ${definition.front_matter_key} value`,\n );\n }\n }\n }\n\n if (runtimeContext && runtimeContext.unknownFieldPolicy !== \"allow\") {\n const knownKeys = new Set(STATIC_FRONT_MATTER_FIELD_SET);\n for (const definition of runtimeContext.fieldRegistry?.definitions ?? []) {\n knownKeys.add(definition.front_matter_key);\n }\n const unknownKeys = Object.keys(record).filter((key) => !knownKeys.has(key)).sort((left, right) => left.localeCompare(right));\n if (unknownKeys.length > 0) {\n if (runtimeContext.unknownFieldPolicy === \"reject\") {\n validationError(`unknown schema fields are not allowed: ${unknownKeys.join(\", \")}`);\n } else {\n runtimeContext.onWarning?.(`item_unknown_schema_fields:${unknownKeys.join(\",\")}`);\n }\n }\n }\n}\n\nfunction sortDependencies(values: Dependency[] | undefined): Dependency[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values]\n .map((value) => ({\n id: value.id.trim().toLowerCase(),\n kind: value.kind,\n created_at: value.created_at,\n author: value.author?.trim() || undefined,\n source_kind: value.source_kind?.trim() || undefined,\n }))\n .sort((a, b) => {\n const byCreated = compareTimestampStrings(a.created_at, b.created_at);\n if (byCreated !== 0) return byCreated;\n const byId = a.id.localeCompare(b.id);\n if (byId !== 0) return byId;\n const byKind = a.kind.localeCompare(b.kind);\n if (byKind !== 0) return byKind;\n return (a.source_kind ?? \"\").localeCompare(b.source_kind ?? \"\");\n });\n}\n\nfunction sortLogValues<T extends Comment | LogNote>(values: T[] | undefined): T[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values].sort((a, b) => {\n const byCreated = compareTimestampStrings(a.created_at, b.created_at);\n if (byCreated !== 0) return byCreated;\n const byText = a.text.localeCompare(b.text);\n if (byText !== 0) return byText;\n return a.author.localeCompare(b.author);\n });\n}\n\nfunction sortReminders(values: Reminder[] | undefined): Reminder[] | undefined {\n if (!values || values.length === 0) return undefined;\n const normalized = [...values]\n .map((value) => ({\n at: value.at,\n text: value.text.trim(),\n }))\n .filter((value) => value.text.length > 0)\n .sort((a, b) => {\n const byAt = compareTimestampStrings(a.at, b.at);\n if (byAt !== 0) return byAt;\n return a.text.localeCompare(b.text);\n });\n return normalized.length === 0 ? undefined : normalized;\n}\n\nfunction normalizeRecurrenceRule(value: RecurrenceRule | undefined): RecurrenceRule | undefined {\n if (!value) {\n return undefined;\n }\n const normalizedFrequency = value.freq.trim().toLowerCase();\n if (!RECURRENCE_FREQUENCY_VALUES.includes(normalizedFrequency as (typeof RECURRENCE_FREQUENCY_VALUES)[number])) {\n return undefined;\n }\n\n const byWeekday = Array.from(\n new Set(\n (value.by_weekday ?? [])\n .map((weekday) => weekday.trim().toLowerCase())\n .filter((weekday) => RECURRENCE_WEEKDAY_VALUES.includes(weekday as (typeof RECURRENCE_WEEKDAY_VALUES)[number])),\n ),\n ).sort(\n (a, b) =>\n weekdayOrderIndex(a as (typeof RECURRENCE_WEEKDAY_VALUES)[number]) -\n weekdayOrderIndex(b as (typeof RECURRENCE_WEEKDAY_VALUES)[number]),\n );\n\n const byMonthDay = Array.from(\n new Set(\n (value.by_month_day ?? [])\n .filter((day) => Number.isInteger(day) && day >= 1 && day <= 31)\n .map((day) => day as number),\n ),\n ).sort((a, b) => a - b);\n\n const exdates = Array.from(\n new Set(\n (value.exdates ?? [])\n .map((timestamp) => timestamp.trim())\n .filter((timestamp) => isTimestampLiteral(timestamp)),\n ),\n ).sort((a, b) => compareTimestampStrings(a, b));\n\n const normalized: RecurrenceRule = {\n freq: normalizedFrequency as (typeof RECURRENCE_FREQUENCY_VALUES)[number],\n interval: value.interval !== undefined && value.interval > 1 ? value.interval : undefined,\n count: value.count,\n until: value.until?.trim() || undefined,\n by_weekday: byWeekday.length > 0 ? (byWeekday as (typeof RECURRENCE_WEEKDAY_VALUES)[number][]) : undefined,\n by_month_day: byMonthDay.length > 0 ? byMonthDay : undefined,\n exdates: exdates.length > 0 ? exdates : undefined,\n };\n for (const [key, fieldValue] of Object.entries(normalized)) {\n if (fieldValue === undefined) {\n delete (normalized as unknown as Record<string, unknown>)[key];\n }\n }\n return normalized;\n}\n\nfunction sortEvents(values: CalendarEvent[] | undefined): CalendarEvent[] | undefined {\n if (!values || values.length === 0) {\n return undefined;\n }\n const normalized = [...values]\n .map((value) => {\n const event: CalendarEvent = {\n start_at: value.start_at,\n end_at: value.end_at || undefined,\n title: value.title?.trim() || undefined,\n description: value.description?.trim() || undefined,\n location: value.location?.trim() || undefined,\n all_day: value.all_day,\n timezone: value.timezone?.trim() || undefined,\n recurrence: normalizeRecurrenceRule(value.recurrence),\n };\n for (const [key, fieldValue] of Object.entries(event)) {\n if (fieldValue === undefined) {\n delete (event as unknown as Record<string, unknown>)[key];\n }\n }\n return event;\n })\n .sort((a, b) => {\n const byStart = compareTimestampStrings(a.start_at, b.start_at);\n if (byStart !== 0) return byStart;\n const byEnd = (a.end_at ?? \"\").localeCompare(b.end_at ?? \"\");\n if (byEnd !== 0) return byEnd;\n const byTitle = (a.title ?? \"\").localeCompare(b.title ?? \"\");\n if (byTitle !== 0) return byTitle;\n const byAllDay = Number(Boolean(a.all_day)) - Number(Boolean(b.all_day));\n if (byAllDay !== 0) return byAllDay;\n const byTimezone = (a.timezone ?? \"\").localeCompare(b.timezone ?? \"\");\n if (byTimezone !== 0) return byTimezone;\n const byLocation = (a.location ?? \"\").localeCompare(b.location ?? \"\");\n if (byLocation !== 0) return byLocation;\n const byDescription = (a.description ?? \"\").localeCompare(b.description ?? \"\");\n if (byDescription !== 0) return byDescription;\n return JSON.stringify(a.recurrence ?? {}).localeCompare(JSON.stringify(b.recurrence ?? {}));\n });\n return normalized;\n}\n\nfunction normalizeFiles(values: LinkedFile[] | undefined): LinkedFile[] | undefined {\n if (!values || values.length === 0) return undefined;\n return values\n .map((value) => ({\n path: normalizePathValue(value.path),\n scope: value.scope,\n note: value.note?.trim() || undefined,\n }));\n}\n\nfunction normalizeTestRunSummaries(values: ItemTestRunSummary[] | undefined): ItemTestRunSummary[] | undefined {\n if (!values || values.length === 0) return undefined;\n const normalized = values\n .map((value) => {\n const runId = typeof value.run_id === \"string\" ? value.run_id.trim() : \"\";\n const kind = value.kind === \"test\" || value.kind === \"test-all\" ? value.kind : \"test\";\n const status =\n value.status === \"passed\" || value.status === \"failed\" || value.status === \"stopped\" || value.status === \"canceled\"\n ? value.status\n : \"failed\";\n const startedAt = typeof value.started_at === \"string\" ? value.started_at : \"\";\n const finishedAt = typeof value.finished_at === \"string\" ? value.finished_at : \"\";\n const recordedAt = typeof value.recorded_at === \"string\" ? value.recorded_at : \"\";\n const passed = typeof value.passed === \"number\" && Number.isFinite(value.passed) ? Math.max(0, Math.floor(value.passed)) : 0;\n const failed = typeof value.failed === \"number\" && Number.isFinite(value.failed) ? Math.max(0, Math.floor(value.failed)) : 0;\n const skipped = typeof value.skipped === \"number\" && Number.isFinite(value.skipped) ? Math.max(0, Math.floor(value.skipped)) : 0;\n return {\n run_id: runId,\n kind,\n status,\n started_at: startedAt,\n finished_at: finishedAt,\n recorded_at: recordedAt,\n attempt:\n typeof value.attempt === \"number\" && Number.isFinite(value.attempt) && value.attempt >= 1\n ? Math.floor(value.attempt)\n : undefined,\n resumed_from: value.resumed_from?.trim() || undefined,\n passed,\n failed,\n skipped,\n items:\n typeof value.items === \"number\" && Number.isFinite(value.items) && value.items >= 0\n ? Math.floor(value.items)\n : undefined,\n linked_tests:\n typeof value.linked_tests === \"number\" && Number.isFinite(value.linked_tests) && value.linked_tests >= 0\n ? Math.floor(value.linked_tests)\n : undefined,\n fail_on_skipped_triggered: value.fail_on_skipped_triggered === true ? true : undefined,\n };\n })\n .filter((value) => value.run_id.length > 0 && value.started_at.length > 0 && value.finished_at.length > 0 && value.recorded_at.length > 0)\n .sort((a, b) => {\n const byRecorded = compareTimestampStrings(a.recorded_at, b.recorded_at);\n if (byRecorded !== 0) return byRecorded;\n const byRunId = a.run_id.localeCompare(b.run_id);\n if (byRunId !== 0) return byRunId;\n return a.kind.localeCompare(b.kind);\n });\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction sortTests(values: LinkedTest[] | undefined): LinkedTest[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values]\n .map((value) => ({\n command: value.command?.trim() || undefined,\n path: value.path ? normalizePathValue(value.path) : undefined,\n scope: value.scope,\n timeout_seconds: value.timeout_seconds,\n pm_context_mode: (() => {\n const normalized = value.pm_context_mode?.trim().toLowerCase();\n if (!normalized || !LINKED_TEST_PM_CONTEXT_MODE_VALUES.has(normalized)) {\n return undefined;\n }\n return normalized as LinkedTest[\"pm_context_mode\"];\n })(),\n env_set: value.env_set\n ? Object.fromEntries(\n Object.entries(value.env_set)\n .map(([key, envValue]) => [key.trim(), String(envValue).trim()] as const)\n .filter(([key, envValue]) => key.length > 0 && envValue.length > 0)\n .sort(([left], [right]) => left.localeCompare(right)),\n )\n : undefined,\n env_clear: value.env_clear\n ? [...new Set(value.env_clear.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n shared_host_safe: value.shared_host_safe === true ? true : undefined,\n assert_stdout_contains: value.assert_stdout_contains\n ? [...new Set(value.assert_stdout_contains.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stdout_regex: value.assert_stdout_regex\n ? [...new Set(value.assert_stdout_regex.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stderr_contains: value.assert_stderr_contains\n ? [...new Set(value.assert_stderr_contains.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stderr_regex: value.assert_stderr_regex\n ? [...new Set(value.assert_stderr_regex.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stdout_min_lines:\n typeof value.assert_stdout_min_lines === \"number\" &&\n Number.isFinite(value.assert_stdout_min_lines) &&\n value.assert_stdout_min_lines >= 0\n ? Math.floor(value.assert_stdout_min_lines)\n : undefined,\n assert_json_field_equals: value.assert_json_field_equals\n ? Object.fromEntries(\n Object.entries(value.assert_json_field_equals)\n .map(([key, expectedValue]) => [key.trim(), String(expectedValue).trim()] as const)\n .filter(([key, expectedValue]) => key.length > 0 && expectedValue.length > 0)\n .sort(([left], [right]) => left.localeCompare(right)),\n )\n : undefined,\n assert_json_field_gte: value.assert_json_field_gte\n ? Object.fromEntries(\n Object.entries(value.assert_json_field_gte)\n .map(([key, expectedValue]) => [key.trim(), Number(expectedValue)] as const)\n .filter(([key, expectedValue]) => key.length > 0 && Number.isFinite(expectedValue))\n .sort(([left], [right]) => left.localeCompare(right)),\n )\n : undefined,\n note: value.note?.trim() || undefined,\n }))\n .sort((a, b) => {\n const byScope = a.scope.localeCompare(b.scope);\n if (byScope !== 0) return byScope;\n const byPath = (a.path ?? \"\").localeCompare(b.path ?? \"\");\n if (byPath !== 0) return byPath;\n const byCommand = (a.command ?? \"\").localeCompare(b.command ?? \"\");\n if (byCommand !== 0) return byCommand;\n const byTimeout = (a.timeout_seconds ?? 0) - (b.timeout_seconds ?? 0);\n if (byTimeout !== 0) return byTimeout;\n const byPmContext = (a.pm_context_mode ?? \"\").localeCompare(b.pm_context_mode ?? \"\");\n if (byPmContext !== 0) return byPmContext;\n const bySharedHostSafe = Number(Boolean(a.shared_host_safe)) - Number(Boolean(b.shared_host_safe));\n if (bySharedHostSafe !== 0) return bySharedHostSafe;\n const byEnvClear = JSON.stringify(a.env_clear ?? []).localeCompare(JSON.stringify(b.env_clear ?? []));\n if (byEnvClear !== 0) return byEnvClear;\n const byEnvSet = JSON.stringify(a.env_set ?? {}).localeCompare(JSON.stringify(b.env_set ?? {}));\n if (byEnvSet !== 0) return byEnvSet;\n const byStdoutContains = JSON.stringify(a.assert_stdout_contains ?? []).localeCompare(\n JSON.stringify(b.assert_stdout_contains ?? []),\n );\n if (byStdoutContains !== 0) return byStdoutContains;\n const byStdoutRegex = JSON.stringify(a.assert_stdout_regex ?? []).localeCompare(\n JSON.stringify(b.assert_stdout_regex ?? []),\n );\n if (byStdoutRegex !== 0) return byStdoutRegex;\n const byStderrContains = JSON.stringify(a.assert_stderr_contains ?? []).localeCompare(\n JSON.stringify(b.assert_stderr_contains ?? []),\n );\n if (byStderrContains !== 0) return byStderrContains;\n const byStderrRegex = JSON.stringify(a.assert_stderr_regex ?? []).localeCompare(\n JSON.stringify(b.assert_stderr_regex ?? []),\n );\n if (byStderrRegex !== 0) return byStderrRegex;\n const byStdoutMinLines = (a.assert_stdout_min_lines ?? 0) - (b.assert_stdout_min_lines ?? 0);\n if (byStdoutMinLines !== 0) return byStdoutMinLines;\n const byJsonFieldEquals = JSON.stringify(a.assert_json_field_equals ?? {}).localeCompare(\n JSON.stringify(b.assert_json_field_equals ?? {}),\n );\n if (byJsonFieldEquals !== 0) return byJsonFieldEquals;\n const byJsonFieldGte = JSON.stringify(a.assert_json_field_gte ?? {}).localeCompare(\n JSON.stringify(b.assert_json_field_gte ?? {}),\n );\n if (byJsonFieldGte !== 0) return byJsonFieldGte;\n return (a.note ?? \"\").localeCompare(b.note ?? \"\");\n });\n}\n\nfunction sortDocs(values: LinkedDoc[] | undefined): LinkedDoc[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values]\n .map((value) => ({\n path: normalizePathValue(value.path),\n scope: value.scope,\n note: value.note?.trim() || undefined,\n }))\n .sort((a, b) => {\n const byScope = a.scope.localeCompare(b.scope);\n if (byScope !== 0) return byScope;\n const byPath = a.path.localeCompare(b.path);\n if (byPath !== 0) return byPath;\n return (a.note ?? \"\").localeCompare(b.note ?? \"\");\n });\n}\n\nfunction normalizeTypeOptions(values: Record<string, string> | undefined): Record<string, string> | undefined {\n if (!values) {\n return undefined;\n }\n const normalizedEntries = Object.entries(values)\n .map(([key, value]) => [key.trim(), value.trim()] as const)\n .filter(([key, value]) => key.length > 0 && value.length > 0)\n .sort((left, right) => left[0].localeCompare(right[0]));\n if (normalizedEntries.length === 0) {\n return undefined;\n }\n return Object.fromEntries(normalizedEntries);\n}\n\nfunction normalizeBody(body: string): string {\n return body.replace(/^\\n+/, \"\").replace(/\\s+$/, \"\");\n}\n\nfunction normalizeConfidenceValue(value: ItemFrontMatter[\"confidence\"] | undefined): ItemFrontMatter[\"confidence\"] | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === \"number\") {\n return value;\n }\n const normalized = value.trim().toLowerCase();\n if (normalized === \"med\") {\n return \"medium\";\n }\n if (CONFIDENCE_TEXT_VALUES.includes(normalized as (typeof CONFIDENCE_TEXT_VALUES)[number])) {\n return normalized as (typeof CONFIDENCE_TEXT_VALUES)[number];\n }\n return undefined;\n}\n\nfunction normalizeSeverityValue(value: ItemFrontMatter[\"severity\"] | undefined): ItemFrontMatter[\"severity\"] | undefined {\n if (value === undefined) {\n return undefined;\n }\n const normalized = value.trim().toLowerCase();\n if (normalized === \"med\") {\n return \"medium\";\n }\n if (ISSUE_SEVERITY_VALUES.includes(normalized as (typeof ISSUE_SEVERITY_VALUES)[number])) {\n return normalized as (typeof ISSUE_SEVERITY_VALUES)[number];\n }\n return undefined;\n}\n\nexport function normalizeFrontMatter(\n frontMatter: ItemFrontMatter,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): ItemFrontMatter {\n const runtimeContext = resolveRuntimeSchemaValidationContext(options);\n const normalizedStatus = normalizeStatusInput(frontMatter.status, runtimeContext?.statusRegistry) ?? frontMatter.status;\n const tags = Array.from(new Set(frontMatter.tags.map((tag) => tag.trim().toLowerCase()).filter(Boolean))).sort((a, b) =>\n a.localeCompare(b),\n );\n const normalized: ItemFrontMatter = {\n id: frontMatter.id,\n title: frontMatter.title,\n description: frontMatter.description,\n type: frontMatter.type,\n source_type: frontMatter.source_type?.trim() || undefined,\n type_options: normalizeTypeOptions(frontMatter.type_options),\n status: normalizedStatus,\n priority: frontMatter.priority,\n tags,\n created_at: frontMatter.created_at,\n updated_at: frontMatter.updated_at,\n dependencies: sortDependencies(frontMatter.dependencies),\n comments: sortLogValues(frontMatter.comments),\n notes: sortLogValues(frontMatter.notes),\n learnings: sortLogValues(frontMatter.learnings),\n files: normalizeFiles(frontMatter.files),\n tests: sortTests(frontMatter.tests),\n test_runs: normalizeTestRunSummaries(frontMatter.test_runs),\n docs: sortDocs(frontMatter.docs),\n deadline: frontMatter.deadline || undefined,\n reminders: sortReminders(frontMatter.reminders),\n events: sortEvents(frontMatter.events),\n closed_at: frontMatter.closed_at || undefined,\n assignee: frontMatter.assignee?.trim() || undefined,\n source_owner: frontMatter.source_owner?.trim() || undefined,\n author: frontMatter.author || undefined,\n estimated_minutes: frontMatter.estimated_minutes,\n acceptance_criteria: frontMatter.acceptance_criteria ?? undefined,\n design: frontMatter.design ?? undefined,\n external_ref: frontMatter.external_ref ?? undefined,\n definition_of_ready: frontMatter.definition_of_ready?.trim() || undefined,\n order: frontMatter.order,\n goal: frontMatter.goal?.trim() || undefined,\n objective: frontMatter.objective?.trim() || undefined,\n value: frontMatter.value?.trim() || undefined,\n impact: frontMatter.impact?.trim() || undefined,\n outcome: frontMatter.outcome?.trim() || undefined,\n why_now: frontMatter.why_now?.trim() || undefined,\n parent: frontMatter.parent?.trim() || undefined,\n reviewer: frontMatter.reviewer?.trim() || undefined,\n risk: frontMatter.risk ?? undefined,\n confidence: normalizeConfidenceValue(frontMatter.confidence),\n sprint: frontMatter.sprint?.trim() || undefined,\n release: frontMatter.release?.trim() || undefined,\n blocked_by: frontMatter.blocked_by?.trim() || undefined,\n blocked_reason: frontMatter.blocked_reason?.trim() || undefined,\n unblock_note: frontMatter.unblock_note?.trim() || undefined,\n reporter: frontMatter.reporter?.trim() || undefined,\n severity: normalizeSeverityValue(frontMatter.severity),\n environment: frontMatter.environment?.trim() || undefined,\n repro_steps: frontMatter.repro_steps?.trim() || undefined,\n resolution: frontMatter.resolution?.trim() || undefined,\n expected_result: frontMatter.expected_result?.trim() || undefined,\n actual_result: frontMatter.actual_result?.trim() || undefined,\n affected_version: frontMatter.affected_version?.trim() || undefined,\n fixed_version: frontMatter.fixed_version?.trim() || undefined,\n component: frontMatter.component?.trim() || undefined,\n regression: frontMatter.regression,\n customer_impact: frontMatter.customer_impact?.trim() || undefined,\n close_reason: frontMatter.close_reason || undefined,\n };\n const sourceRecord = frontMatter as unknown as Record<string, unknown>;\n for (const [key, value] of Object.entries(sourceRecord)) {\n if (Object.prototype.hasOwnProperty.call(normalized, key) || value === undefined) {\n continue;\n }\n (normalized as unknown as Record<string, unknown>)[key] = value;\n }\n\n if (runtimeContext?.fieldRegistry) {\n for (const definition of runtimeContext.fieldRegistry.definitions) {\n const currentValue = (normalized as unknown as Record<string, unknown>)[definition.front_matter_key];\n if (currentValue === undefined) {\n continue;\n }\n (normalized as unknown as Record<string, unknown>)[definition.front_matter_key] = coerceRuntimeFieldValue(\n definition,\n currentValue,\n `metadata field \"${definition.front_matter_key}\"`,\n );\n }\n }\n\n if (runtimeContext && runtimeContext.unknownFieldPolicy !== \"allow\") {\n const knownKeys = new Set(STATIC_FRONT_MATTER_FIELD_SET);\n for (const definition of runtimeContext.fieldRegistry?.definitions ?? []) {\n knownKeys.add(definition.front_matter_key);\n }\n const unknownKeys = Object.keys(normalized as unknown as Record<string, unknown>)\n .filter((key) => !knownKeys.has(key))\n .sort((left, right) => left.localeCompare(right));\n if (unknownKeys.length > 0) {\n if (runtimeContext.unknownFieldPolicy === \"reject\") {\n validationError(`unknown schema fields are not allowed: ${unknownKeys.join(\", \")}`);\n }\n }\n }\n\n for (const [key, value] of Object.entries(normalized)) {\n if (value === undefined) {\n delete (normalized as unknown as Record<string, unknown>)[key];\n }\n }\n return normalized;\n}\n\nfunction orderFrontMatter(frontMatter: ItemFrontMatter): Record<string, unknown> {\n return orderObject(frontMatter as unknown as Record<string, unknown>, FRONT_MATTER_KEY_ORDER);\n}\n\nfunction findJsonObjectEnd(content: string): number {\n let depth = 0;\n let inString = false;\n let escaped = false;\n\n for (let i = 0; i < content.length; i += 1) {\n const char = content[i];\n if (inString) {\n if (escaped) {\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n escaped = true;\n continue;\n }\n if (char === \"\\\"\") {\n inString = false;\n }\n continue;\n }\n if (char === \"\\\"\") {\n inString = true;\n continue;\n }\n if (char === \"{\") {\n depth += 1;\n continue;\n }\n if (char === \"}\") {\n depth -= 1;\n if (depth === 0) {\n return i;\n }\n }\n }\n\n return -1;\n}\n\nexport function splitFrontMatter(content: string): { frontMatter: string; body: string } {\n if (!content.startsWith(\"{\")) {\n return { frontMatter: \"\", body: content };\n }\n const end = findJsonObjectEnd(content);\n if (end < 0) {\n return { frontMatter: \"\", body: content };\n }\n const frontMatter = content.slice(0, end + 1);\n const body = content.slice(end + 1).replace(/^\\r?\\n+/, \"\");\n return { frontMatter, body };\n}\n\nfunction stripLeadingYamlDocument(content: string): { content: string; stripped: boolean } {\n const normalizedContent = content.charCodeAt(0) === 0xfeff ? content.slice(1) : content;\n const opener = normalizedContent.match(/^[ \\t]*---[ \\t]*(?:\\r?\\n|$)/);\n if (!opener) {\n return { content: normalizedContent, stripped: false };\n }\n\n let cursor = opener[0].length;\n while (cursor < normalizedContent.length) {\n const nextNewline = normalizedContent.indexOf(\"\\n\", cursor);\n const lineEnd = nextNewline === -1 ? normalizedContent.length : nextNewline;\n const line = normalizedContent.slice(cursor, lineEnd).replace(/\\r$/, \"\");\n const afterLine = nextNewline === -1 ? lineEnd : lineEnd + 1;\n if (line.trim() === \"---\") {\n return { content: normalizedContent.slice(afterLine).replace(/^\\s+/, \"\"), stripped: true };\n }\n cursor = afterLine;\n }\n\n return { content: normalizedContent, stripped: false };\n}\n\nfunction parseJsonMarkdownItemDocument(\n content: string,\n runtimeContext?: RuntimeSchemaValidationContext,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): ItemDocument {\n const normalized = stripLeadingYamlDocument(content);\n if (normalized.stripped) {\n options.onWarning?.(\"json_markdown_leading_yaml_frontmatter_ignored\");\n }\n const { frontMatter, body } = splitFrontMatter(normalized.content);\n if (!frontMatter) {\n const trimmed = content.trimStart();\n if (trimmed.startsWith(\"{\")) {\n validationError(\"JSON front matter is not valid JSON\");\n }\n validationError(\"missing JSON front matter\");\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(frontMatter);\n } catch {\n validationError(\"JSON front matter is not valid JSON\");\n }\n assertValidFrontMatter(parsed, runtimeContext);\n\n return {\n front_matter: normalizeFrontMatter(parsed, options),\n body: normalizeBody(body),\n };\n}\n\nfunction parseToonItemDocument(\n content: string,\n runtimeContext?: RuntimeSchemaValidationContext,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): ItemDocument {\n let parsed: unknown;\n try {\n parsed = decodeToon(content);\n } catch {\n validationError(\"TOON item document is not valid TOON\");\n }\n assertFrontMatterCondition(\n typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed),\n \"TOON item document must be an object\",\n );\n const record = parsed as Record<string, unknown>;\n\n if (Object.prototype.hasOwnProperty.call(record, \"front_matter\")) {\n assertValidFrontMatter(record.front_matter, runtimeContext);\n assertFrontMatterCondition(\n record.body === undefined || typeof record.body === \"string\",\n \"TOON item document body must be a string\",\n );\n return {\n front_matter: normalizeFrontMatter(record.front_matter, options),\n body: normalizeBody(typeof record.body === \"string\" ? record.body : \"\"),\n };\n }\n\n const { body, ...frontMatterRecord } = record;\n assertFrontMatterCondition(\n body === undefined || typeof body === \"string\",\n \"TOON item document body must be a string\",\n );\n assertValidFrontMatter(frontMatterRecord, runtimeContext);\n return {\n front_matter: normalizeFrontMatter(frontMatterRecord, options),\n body: normalizeBody(typeof body === \"string\" ? body : \"\"),\n };\n}\n\nfunction serializeJsonMarkdownItemDocument(\n document: ItemDocument,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): string {\n const normalizedFrontMatter = normalizeFrontMatter(document.front_matter, options);\n const orderedFrontMatter = orderFrontMatter(normalizedFrontMatter);\n const serializedFrontMatter = JSON.stringify(orderedFrontMatter, null, 2);\n const normalizedBody = normalizeBody(document.body ?? \"\");\n if (!normalizedBody) {\n return `${serializedFrontMatter}\\n`;\n }\n return `${serializedFrontMatter}\\n\\n${normalizedBody}\\n`;\n}\n\nfunction serializeToonItemDocument(\n document: ItemDocument,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): string {\n const normalizedFrontMatter = normalizeFrontMatter(document.front_matter, options);\n const orderedFrontMatter = orderFrontMatter(normalizedFrontMatter);\n const normalizedBody = normalizeBody(document.body ?? \"\");\n return `${encodeToon({ ...orderedFrontMatter, body: normalizedBody })}\\n`;\n}\n\nexport function parseItemDocument(content: string, options: ItemDocumentFormatOptions = {}): ItemDocument {\n const conflictMarker = findFirstMergeConflictMarker(content);\n if (conflictMarker) {\n throw new PmCliError(\n `Merge conflict markers detected in item document at line ${conflictMarker.line} (${conflictMarker.marker}). Resolve <<<<<<< ======= >>>>>>> markers and retry.`,\n EXIT_CODE.GENERIC_FAILURE,\n {\n code: \"merge_conflict_markers_detected\",\n required: \"Resolve merge-conflict markers in the item file before parsing or mutation commands.\",\n why: \"Partially merged documents can corrupt item metadata and history integrity.\",\n examples: [\"git status\", \"git add <resolved-file> && git commit\"],\n nextSteps: [\"Resolve conflicts, save the file, then rerun the pm command.\"],\n },\n );\n }\n const format = options.format ?? \"json_markdown\";\n const runtimeContext = resolveRuntimeSchemaValidationContext(options);\n return format === \"toon\"\n ? parseToonItemDocument(content, runtimeContext, options)\n : parseJsonMarkdownItemDocument(content, runtimeContext, options);\n}\n\nexport function serializeItemDocument(document: ItemDocument, options: ItemDocumentFormatOptions = {}): string {\n const format = options.format ?? \"json_markdown\";\n return format === \"toon\" ? serializeToonItemDocument(document, options) : serializeJsonMarkdownItemDocument(document, options);\n}\n\nexport function canonicalDocument(document: ItemDocument, options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {}): ItemDocument {\n return {\n front_matter: normalizeFrontMatter(document.front_matter, options),\n body: normalizeBody(document.body ?? \"\"),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"item-format.js","sourceRoot":"/","sources":["core/item/item-format.ts"],"names":[],"mappings":"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","sourcesContent":["import { decode as decodeToon, encode as encodeToon } from \"@toon-format/toon\";\nimport type {\n CalendarEvent,\n Comment,\n Dependency,\n ItemDocument,\n ItemMetadata,\n RuntimeSchemaSettings,\n ItemTestRunSummary,\n LinkedDoc,\n LinkedFile,\n LinkedTest,\n LogNote,\n RecurrenceRule,\n Reminder,\n} from \"../../types/index.js\";\nimport type { ItemFormat } from \"../../types/index.js\";\nimport {\n CONFIDENCE_TEXT_VALUES,\n ISSUE_SEVERITY_VALUES,\n RECURRENCE_FREQUENCY_VALUES,\n RECURRENCE_WEEKDAY_VALUES,\n STATUS_VALUES,\n} from \"../../types/index.js\";\nimport { coerceRuntimeFieldValue } from \"../schema/runtime-field-values.js\";\nimport {\n resolveRuntimeFieldRegistry,\n resolveRuntimeStatusRegistry,\n type RuntimeFieldRegistry,\n type RuntimeStatusRegistry,\n} from \"../schema/runtime-schema.js\";\nimport { normalizeStatusInput } from \"./status.js\";\nimport { EXIT_CODE, FRONT_MATTER_KEY_ORDER } from \"../shared/constants.js\";\nimport { findFirstMergeConflictMarker } from \"../shared/conflict-markers.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport { orderObject } from \"../shared/serialization.js\";\nimport { compareTimestampStrings, isTimestampLiteral } from \"../shared/time.js\";\n\nconst LINKED_TEST_PM_CONTEXT_MODE_VALUES = new Set([\"schema\", \"tracker\", \"auto\"]);\n\nfunction normalizePathValue(value: string): string {\n return value.replaceAll(\"\\\\\", \"/\");\n}\n\nconst REQUIRED_STRING_FIELDS = [\n \"id\",\n \"title\",\n \"description\",\n \"created_at\",\n \"updated_at\",\n] as const;\n\nconst STATIC_FRONT_MATTER_FIELD_SET = new Set(FRONT_MATTER_KEY_ORDER);\n\ninterface RuntimeSchemaValidationContext {\n statusRegistry?: RuntimeStatusRegistry;\n fieldRegistry?: RuntimeFieldRegistry;\n unknownFieldPolicy: \"allow\" | \"warn\" | \"reject\";\n onWarning?: (warning: string) => void;\n}\n\nexport interface ItemDocumentFormatOptions {\n format?: ItemFormat;\n schema?: RuntimeSchemaSettings;\n onWarning?: (warning: string) => void;\n}\n\nfunction resolveRuntimeSchemaValidationContext(\n options: ItemDocumentFormatOptions | undefined,\n): RuntimeSchemaValidationContext | undefined {\n if (!options?.schema) {\n return undefined;\n }\n return {\n statusRegistry: resolveRuntimeStatusRegistry(options.schema),\n fieldRegistry: resolveRuntimeFieldRegistry(options.schema),\n unknownFieldPolicy: options.schema.unknown_field_policy ?? \"allow\",\n onWarning: options.onWarning,\n };\n}\n\nfunction runtimeFieldRequiredForType(definition: RuntimeFieldRegistry[\"definitions\"][number], typeName: string): boolean {\n if (!definition.required) {\n return false;\n }\n if (definition.required_types.length === 0) {\n return true;\n }\n return definition.required_types.map((value) => value.toLowerCase()).includes(typeName.trim().toLowerCase());\n}\n\nfunction weekdayOrderIndex(value: (typeof RECURRENCE_WEEKDAY_VALUES)[number]): number {\n return RECURRENCE_WEEKDAY_VALUES.indexOf(value);\n}\n\nfunction validationError(message: string): never {\n throw new PmCliError(`Invalid item front matter: ${message}`, EXIT_CODE.GENERIC_FAILURE);\n}\n\nfunction assertFrontMatterCondition(condition: boolean, message: string): void {\n if (!condition) {\n validationError(message);\n }\n}\n\nfunction assertTimestampField(record: Record<string, unknown>, fieldName: \"created_at\" | \"updated_at\" | \"deadline\"): void {\n const rawValue = record[fieldName];\n assertFrontMatterCondition(typeof rawValue === \"string\", `${fieldName} must be a string`);\n const timestamp = rawValue as string;\n assertFrontMatterCondition(isTimestampLiteral(timestamp), `${fieldName} must be a valid ISO timestamp`);\n}\n\nfunction assertValidRecurrenceRule(recurrence: unknown): void {\n assertFrontMatterCondition(\n typeof recurrence === \"object\" && recurrence !== null && !Array.isArray(recurrence),\n \"event.recurrence must be an object\",\n );\n const recurrenceRecord = recurrence as Record<string, unknown>;\n assertFrontMatterCondition(typeof recurrenceRecord.freq === \"string\", \"event.recurrence.freq must be a string\");\n const frequency = (recurrenceRecord.freq as string).trim().toLowerCase();\n assertFrontMatterCondition(\n RECURRENCE_FREQUENCY_VALUES.includes(frequency as (typeof RECURRENCE_FREQUENCY_VALUES)[number]),\n `event.recurrence.freq must be one of: ${RECURRENCE_FREQUENCY_VALUES.join(\", \")}`,\n );\n\n if (recurrenceRecord.interval !== undefined) {\n assertFrontMatterCondition(\n typeof recurrenceRecord.interval === \"number\" &&\n Number.isInteger(recurrenceRecord.interval) &&\n (recurrenceRecord.interval as number) >= 1,\n \"event.recurrence.interval must be an integer >= 1\",\n );\n }\n\n if (recurrenceRecord.count !== undefined) {\n assertFrontMatterCondition(\n typeof recurrenceRecord.count === \"number\" && Number.isInteger(recurrenceRecord.count) && (recurrenceRecord.count as number) >= 1,\n \"event.recurrence.count must be an integer >= 1\",\n );\n }\n\n if (recurrenceRecord.until !== undefined) {\n assertFrontMatterCondition(typeof recurrenceRecord.until === \"string\", \"event.recurrence.until must be a string\");\n assertFrontMatterCondition(\n isTimestampLiteral(recurrenceRecord.until as string),\n \"event.recurrence.until must be a valid ISO timestamp\",\n );\n }\n\n if (recurrenceRecord.by_weekday !== undefined) {\n assertFrontMatterCondition(Array.isArray(recurrenceRecord.by_weekday), \"event.recurrence.by_weekday must be an array\");\n for (const weekday of recurrenceRecord.by_weekday as unknown[]) {\n assertFrontMatterCondition(typeof weekday === \"string\", \"event.recurrence.by_weekday entries must be strings\");\n const normalizedWeekday = (weekday as string).trim().toLowerCase();\n assertFrontMatterCondition(\n RECURRENCE_WEEKDAY_VALUES.includes(normalizedWeekday as (typeof RECURRENCE_WEEKDAY_VALUES)[number]),\n `event.recurrence.by_weekday entries must be one of: ${RECURRENCE_WEEKDAY_VALUES.join(\", \")}`,\n );\n }\n }\n\n if (recurrenceRecord.by_month_day !== undefined) {\n assertFrontMatterCondition(Array.isArray(recurrenceRecord.by_month_day), \"event.recurrence.by_month_day must be an array\");\n for (const day of recurrenceRecord.by_month_day as unknown[]) {\n assertFrontMatterCondition(\n typeof day === \"number\" && Number.isInteger(day) && day >= 1 && day <= 31,\n \"event.recurrence.by_month_day entries must be integers 1..31\",\n );\n }\n }\n\n if (recurrenceRecord.exdates !== undefined) {\n assertFrontMatterCondition(Array.isArray(recurrenceRecord.exdates), \"event.recurrence.exdates must be an array\");\n for (const exdate of recurrenceRecord.exdates as unknown[]) {\n assertFrontMatterCondition(typeof exdate === \"string\", \"event.recurrence.exdates entries must be strings\");\n assertFrontMatterCondition(isTimestampLiteral(exdate as string), \"event.recurrence.exdates entries must be valid ISO timestamps\");\n }\n }\n}\n\nfunction assertValidFrontMatter(\n frontMatter: unknown,\n runtimeContext?: RuntimeSchemaValidationContext,\n): asserts frontMatter is ItemMetadata {\n assertFrontMatterCondition(\n typeof frontMatter === \"object\" && frontMatter !== null && !Array.isArray(frontMatter),\n \"front matter must be an object\",\n );\n\n const record = frontMatter as Record<string, unknown>;\n for (const fieldName of REQUIRED_STRING_FIELDS) {\n assertFrontMatterCondition(typeof record[fieldName] === \"string\", `${fieldName} is required and must be a string`);\n }\n\n const itemType = record.type;\n assertFrontMatterCondition(typeof itemType === \"string\" && itemType.trim().length > 0, \"type must be a non-empty string\");\n\n const status = record.status;\n assertFrontMatterCondition(\n typeof status === \"string\" && status.trim().length > 0,\n \"status must be a non-empty string\",\n );\n const statusRegistry = runtimeContext?.statusRegistry;\n const normalizedStatus = normalizeStatusInput(status as string, statusRegistry);\n const statusDomain = statusRegistry\n ? statusRegistry.definitions.map((definition) => definition.id)\n : [...STATUS_VALUES];\n assertFrontMatterCondition(normalizedStatus !== undefined, `status must be one of: ${statusDomain.join(\", \")}`);\n\n const priority = record.priority;\n assertFrontMatterCondition(\n typeof priority === \"number\" && Number.isInteger(priority) && [0, 1, 2, 3, 4].includes(priority),\n \"priority must be an integer 0..4\",\n );\n\n const tags = record.tags;\n assertFrontMatterCondition(Array.isArray(tags), \"tags must be an array\");\n for (const tag of tags as unknown[]) {\n assertFrontMatterCondition(typeof tag === \"string\", \"tags entries must be strings\");\n }\n\n const confidence = record.confidence;\n if (confidence !== undefined) {\n if (typeof confidence === \"number\") {\n assertFrontMatterCondition(\n Number.isInteger(confidence) && confidence >= 0 && confidence <= 100,\n \"confidence number value must be an integer 0..100\",\n );\n } else if (typeof confidence === \"string\") {\n const normalizedConfidence = confidence.trim().toLowerCase();\n const isKnownTextConfidence =\n normalizedConfidence === \"med\" || CONFIDENCE_TEXT_VALUES.includes(normalizedConfidence as (typeof CONFIDENCE_TEXT_VALUES)[number]);\n assertFrontMatterCondition(\n isKnownTextConfidence,\n `confidence string value must be one of: ${[...CONFIDENCE_TEXT_VALUES, \"med\"].join(\", \")}`,\n );\n } else {\n assertFrontMatterCondition(false, \"confidence must be a number or string\");\n }\n }\n\n const severity = record.severity;\n if (severity !== undefined) {\n if (typeof severity !== \"string\") {\n validationError(\"severity must be a string\");\n }\n const normalizedSeverity = severity.trim().toLowerCase();\n const isKnownSeverity =\n normalizedSeverity === \"med\" || ISSUE_SEVERITY_VALUES.includes(normalizedSeverity as (typeof ISSUE_SEVERITY_VALUES)[number]);\n assertFrontMatterCondition(\n isKnownSeverity,\n `severity value must be one of: ${[...ISSUE_SEVERITY_VALUES, \"med\"].join(\", \")}`,\n );\n }\n\n const regression = record.regression;\n if (regression !== undefined) {\n if (typeof regression !== \"boolean\") {\n validationError(\"regression must be a boolean\");\n }\n }\n\n assertTimestampField(record, \"created_at\");\n assertTimestampField(record, \"updated_at\");\n if (record.deadline !== undefined) {\n assertTimestampField(record, \"deadline\");\n }\n if (record.reminders !== undefined) {\n const reminders = record.reminders;\n assertFrontMatterCondition(Array.isArray(reminders), \"reminders must be an array\");\n for (const reminder of reminders as unknown[]) {\n assertFrontMatterCondition(typeof reminder === \"object\" && reminder !== null && !Array.isArray(reminder), \"reminders entries must be objects\");\n const reminderRecord = reminder as Record<string, unknown>;\n assertFrontMatterCondition(typeof reminderRecord.at === \"string\", \"reminder.at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(reminderRecord.at as string), \"reminder.at must be a valid ISO timestamp\");\n assertFrontMatterCondition(typeof reminderRecord.text === \"string\", \"reminder.text must be a string\");\n assertFrontMatterCondition((reminderRecord.text as string).trim().length > 0, \"reminder.text must not be empty\");\n }\n }\n if (record.events !== undefined) {\n const events = record.events;\n assertFrontMatterCondition(Array.isArray(events), \"events must be an array\");\n for (const event of events as unknown[]) {\n assertFrontMatterCondition(typeof event === \"object\" && event !== null && !Array.isArray(event), \"events entries must be objects\");\n const eventRecord = event as Record<string, unknown>;\n assertFrontMatterCondition(typeof eventRecord.start_at === \"string\", \"event.start_at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(eventRecord.start_at as string), \"event.start_at must be a valid ISO timestamp\");\n\n if (eventRecord.end_at !== undefined) {\n assertFrontMatterCondition(typeof eventRecord.end_at === \"string\", \"event.end_at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(eventRecord.end_at as string), \"event.end_at must be a valid ISO timestamp\");\n assertFrontMatterCondition(\n compareTimestampStrings(eventRecord.end_at as string, eventRecord.start_at as string) > 0,\n \"event.end_at must be after event.start_at\",\n );\n }\n\n for (const stringField of [\"title\", \"description\", \"location\", \"timezone\"] as const) {\n if (eventRecord[stringField] !== undefined) {\n assertFrontMatterCondition(typeof eventRecord[stringField] === \"string\", `event.${stringField} must be a string`);\n assertFrontMatterCondition(\n (eventRecord[stringField] as string).trim().length > 0,\n `event.${stringField} must not be empty`,\n );\n }\n }\n\n if (eventRecord.all_day !== undefined) {\n assertFrontMatterCondition(typeof eventRecord.all_day === \"boolean\", \"event.all_day must be a boolean\");\n }\n\n if (eventRecord.recurrence !== undefined) {\n assertValidRecurrenceRule(eventRecord.recurrence);\n if ((eventRecord.recurrence as Record<string, unknown>).until !== undefined) {\n assertFrontMatterCondition(\n compareTimestampStrings(\n (eventRecord.recurrence as Record<string, unknown>).until as string,\n eventRecord.start_at as string,\n ) >= 0,\n \"event.recurrence.until must be at or after event.start_at\",\n );\n }\n }\n }\n }\n if (record.closed_at !== undefined) {\n const closedAt = record.closed_at;\n assertFrontMatterCondition(typeof closedAt === \"string\", \"closed_at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(closedAt as string), \"closed_at must be a valid ISO timestamp\");\n }\n for (const fieldName of [\"source_type\", \"source_owner\", \"design\", \"external_ref\"] as const) {\n const value = record[fieldName];\n if (value !== undefined) {\n assertFrontMatterCondition(typeof value === \"string\", `${fieldName} must be a string`);\n }\n }\n const typeOptions = record.type_options;\n if (typeOptions !== undefined) {\n assertFrontMatterCondition(\n typeof typeOptions === \"object\" && typeOptions !== null && !Array.isArray(typeOptions),\n \"type_options must be an object\",\n );\n for (const [optionKey, optionValue] of Object.entries(typeOptions as Record<string, unknown>)) {\n assertFrontMatterCondition(optionKey.trim().length > 0, \"type_options keys must be non-empty\");\n assertFrontMatterCondition(typeof optionValue === \"string\", \"type_options values must be strings\");\n const optionText = optionValue as string;\n assertFrontMatterCondition(optionText.trim().length > 0, \"type_options values must be non-empty strings\");\n }\n }\n\n if (runtimeContext?.fieldRegistry) {\n for (const definition of runtimeContext.fieldRegistry.definitions) {\n const fieldValue = record[definition.metadata_key];\n if (fieldValue === undefined) {\n if (runtimeFieldRequiredForType(definition, itemType as string)) {\n validationError(`missing required schema field: ${definition.metadata_key}`);\n }\n continue;\n }\n try {\n record[definition.metadata_key] = coerceRuntimeFieldValue(\n definition,\n fieldValue,\n `metadata field \"${definition.metadata_key}\"`,\n );\n } catch (error: unknown) {\n validationError(\n error instanceof Error ? error.message.replace(/^Invalid\\s+/u, \"\") : `invalid ${definition.metadata_key} value`,\n );\n }\n }\n }\n\n if (runtimeContext && runtimeContext.unknownFieldPolicy !== \"allow\") {\n const knownKeys = new Set(STATIC_FRONT_MATTER_FIELD_SET);\n for (const definition of runtimeContext.fieldRegistry?.definitions ?? []) {\n knownKeys.add(definition.metadata_key);\n }\n const unknownKeys = Object.keys(record).filter((key) => !knownKeys.has(key)).sort((left, right) => left.localeCompare(right));\n if (unknownKeys.length > 0) {\n if (runtimeContext.unknownFieldPolicy === \"reject\") {\n validationError(`unknown schema fields are not allowed: ${unknownKeys.join(\", \")}`);\n } else {\n runtimeContext.onWarning?.(`item_unknown_schema_fields:${unknownKeys.join(\",\")}`);\n }\n }\n }\n}\n\nfunction sortDependencies(values: Dependency[] | undefined): Dependency[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values]\n .map((value) => ({\n id: value.id.trim().toLowerCase(),\n kind: value.kind,\n created_at: value.created_at,\n author: value.author?.trim() || undefined,\n source_kind: value.source_kind?.trim() || undefined,\n }))\n .sort((a, b) => {\n const byCreated = compareTimestampStrings(a.created_at, b.created_at);\n if (byCreated !== 0) return byCreated;\n const byId = a.id.localeCompare(b.id);\n if (byId !== 0) return byId;\n const byKind = a.kind.localeCompare(b.kind);\n if (byKind !== 0) return byKind;\n return (a.source_kind ?? \"\").localeCompare(b.source_kind ?? \"\");\n });\n}\n\nfunction sortLogValues<T extends Comment | LogNote>(values: T[] | undefined): T[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values].sort((a, b) => {\n const byCreated = compareTimestampStrings(a.created_at, b.created_at);\n if (byCreated !== 0) return byCreated;\n const byText = a.text.localeCompare(b.text);\n if (byText !== 0) return byText;\n return a.author.localeCompare(b.author);\n });\n}\n\nfunction sortReminders(values: Reminder[] | undefined): Reminder[] | undefined {\n if (!values || values.length === 0) return undefined;\n const normalized = [...values]\n .map((value) => ({\n at: value.at,\n text: value.text.trim(),\n }))\n .filter((value) => value.text.length > 0)\n .sort((a, b) => {\n const byAt = compareTimestampStrings(a.at, b.at);\n if (byAt !== 0) return byAt;\n return a.text.localeCompare(b.text);\n });\n return normalized.length === 0 ? undefined : normalized;\n}\n\nfunction normalizeRecurrenceRule(value: RecurrenceRule | undefined): RecurrenceRule | undefined {\n if (!value) {\n return undefined;\n }\n const normalizedFrequency = value.freq.trim().toLowerCase();\n if (!RECURRENCE_FREQUENCY_VALUES.includes(normalizedFrequency as (typeof RECURRENCE_FREQUENCY_VALUES)[number])) {\n return undefined;\n }\n\n const byWeekday = Array.from(\n new Set(\n (value.by_weekday ?? [])\n .map((weekday) => weekday.trim().toLowerCase())\n .filter((weekday) => RECURRENCE_WEEKDAY_VALUES.includes(weekday as (typeof RECURRENCE_WEEKDAY_VALUES)[number])),\n ),\n ).sort(\n (a, b) =>\n weekdayOrderIndex(a as (typeof RECURRENCE_WEEKDAY_VALUES)[number]) -\n weekdayOrderIndex(b as (typeof RECURRENCE_WEEKDAY_VALUES)[number]),\n );\n\n const byMonthDay = Array.from(\n new Set(\n (value.by_month_day ?? [])\n .filter((day) => Number.isInteger(day) && day >= 1 && day <= 31)\n .map((day) => day as number),\n ),\n ).sort((a, b) => a - b);\n\n const exdates = Array.from(\n new Set(\n (value.exdates ?? [])\n .map((timestamp) => timestamp.trim())\n .filter((timestamp) => isTimestampLiteral(timestamp)),\n ),\n ).sort((a, b) => compareTimestampStrings(a, b));\n\n const normalized: RecurrenceRule = {\n freq: normalizedFrequency as (typeof RECURRENCE_FREQUENCY_VALUES)[number],\n interval: value.interval !== undefined && value.interval > 1 ? value.interval : undefined,\n count: value.count,\n until: value.until?.trim() || undefined,\n by_weekday: byWeekday.length > 0 ? (byWeekday as (typeof RECURRENCE_WEEKDAY_VALUES)[number][]) : undefined,\n by_month_day: byMonthDay.length > 0 ? byMonthDay : undefined,\n exdates: exdates.length > 0 ? exdates : undefined,\n };\n for (const [key, fieldValue] of Object.entries(normalized)) {\n if (fieldValue === undefined) {\n delete (normalized as unknown as Record<string, unknown>)[key];\n }\n }\n return normalized;\n}\n\nfunction sortEvents(values: CalendarEvent[] | undefined): CalendarEvent[] | undefined {\n if (!values || values.length === 0) {\n return undefined;\n }\n const normalized = [...values]\n .map((value) => {\n const event: CalendarEvent = {\n start_at: value.start_at,\n end_at: value.end_at || undefined,\n title: value.title?.trim() || undefined,\n description: value.description?.trim() || undefined,\n location: value.location?.trim() || undefined,\n all_day: value.all_day,\n timezone: value.timezone?.trim() || undefined,\n recurrence: normalizeRecurrenceRule(value.recurrence),\n };\n for (const [key, fieldValue] of Object.entries(event)) {\n if (fieldValue === undefined) {\n delete (event as unknown as Record<string, unknown>)[key];\n }\n }\n return event;\n })\n .sort((a, b) => {\n const byStart = compareTimestampStrings(a.start_at, b.start_at);\n if (byStart !== 0) return byStart;\n const byEnd = (a.end_at ?? \"\").localeCompare(b.end_at ?? \"\");\n if (byEnd !== 0) return byEnd;\n const byTitle = (a.title ?? \"\").localeCompare(b.title ?? \"\");\n if (byTitle !== 0) return byTitle;\n const byAllDay = Number(Boolean(a.all_day)) - Number(Boolean(b.all_day));\n if (byAllDay !== 0) return byAllDay;\n const byTimezone = (a.timezone ?? \"\").localeCompare(b.timezone ?? \"\");\n if (byTimezone !== 0) return byTimezone;\n const byLocation = (a.location ?? \"\").localeCompare(b.location ?? \"\");\n if (byLocation !== 0) return byLocation;\n const byDescription = (a.description ?? \"\").localeCompare(b.description ?? \"\");\n if (byDescription !== 0) return byDescription;\n return JSON.stringify(a.recurrence ?? {}).localeCompare(JSON.stringify(b.recurrence ?? {}));\n });\n return normalized;\n}\n\nfunction normalizeFiles(values: LinkedFile[] | undefined): LinkedFile[] | undefined {\n if (!values || values.length === 0) return undefined;\n return values\n .map((value) => ({\n path: normalizePathValue(value.path),\n scope: value.scope,\n note: value.note?.trim() || undefined,\n }));\n}\n\nfunction normalizeTestRunSummaries(values: ItemTestRunSummary[] | undefined): ItemTestRunSummary[] | undefined {\n if (!values || values.length === 0) return undefined;\n const normalized = values\n .map((value) => {\n const runId = typeof value.run_id === \"string\" ? value.run_id.trim() : \"\";\n const kind = value.kind === \"test\" || value.kind === \"test-all\" ? value.kind : \"test\";\n const status =\n value.status === \"passed\" || value.status === \"failed\" || value.status === \"stopped\" || value.status === \"canceled\"\n ? value.status\n : \"failed\";\n const startedAt = typeof value.started_at === \"string\" ? value.started_at : \"\";\n const finishedAt = typeof value.finished_at === \"string\" ? value.finished_at : \"\";\n const recordedAt = typeof value.recorded_at === \"string\" ? value.recorded_at : \"\";\n const passed = typeof value.passed === \"number\" && Number.isFinite(value.passed) ? Math.max(0, Math.floor(value.passed)) : 0;\n const failed = typeof value.failed === \"number\" && Number.isFinite(value.failed) ? Math.max(0, Math.floor(value.failed)) : 0;\n const skipped = typeof value.skipped === \"number\" && Number.isFinite(value.skipped) ? Math.max(0, Math.floor(value.skipped)) : 0;\n return {\n run_id: runId,\n kind,\n status,\n started_at: startedAt,\n finished_at: finishedAt,\n recorded_at: recordedAt,\n attempt:\n typeof value.attempt === \"number\" && Number.isFinite(value.attempt) && value.attempt >= 1\n ? Math.floor(value.attempt)\n : undefined,\n resumed_from: value.resumed_from?.trim() || undefined,\n passed,\n failed,\n skipped,\n items:\n typeof value.items === \"number\" && Number.isFinite(value.items) && value.items >= 0\n ? Math.floor(value.items)\n : undefined,\n linked_tests:\n typeof value.linked_tests === \"number\" && Number.isFinite(value.linked_tests) && value.linked_tests >= 0\n ? Math.floor(value.linked_tests)\n : undefined,\n fail_on_skipped_triggered: value.fail_on_skipped_triggered === true ? true : undefined,\n };\n })\n .filter((value) => value.run_id.length > 0 && value.started_at.length > 0 && value.finished_at.length > 0 && value.recorded_at.length > 0)\n .sort((a, b) => {\n const byRecorded = compareTimestampStrings(a.recorded_at, b.recorded_at);\n if (byRecorded !== 0) return byRecorded;\n const byRunId = a.run_id.localeCompare(b.run_id);\n if (byRunId !== 0) return byRunId;\n return a.kind.localeCompare(b.kind);\n });\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction sortTests(values: LinkedTest[] | undefined): LinkedTest[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values]\n .map((value) => ({\n command: value.command?.trim() || undefined,\n path: value.path ? normalizePathValue(value.path) : undefined,\n scope: value.scope,\n timeout_seconds: value.timeout_seconds,\n pm_context_mode: (() => {\n const normalized = value.pm_context_mode?.trim().toLowerCase();\n if (!normalized || !LINKED_TEST_PM_CONTEXT_MODE_VALUES.has(normalized)) {\n return undefined;\n }\n return normalized as LinkedTest[\"pm_context_mode\"];\n })(),\n env_set: value.env_set\n ? Object.fromEntries(\n Object.entries(value.env_set)\n .map(([key, envValue]) => [key.trim(), String(envValue).trim()] as const)\n .filter(([key, envValue]) => key.length > 0 && envValue.length > 0)\n .sort(([left], [right]) => left.localeCompare(right)),\n )\n : undefined,\n env_clear: value.env_clear\n ? [...new Set(value.env_clear.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n shared_host_safe: value.shared_host_safe === true ? true : undefined,\n assert_stdout_contains: value.assert_stdout_contains\n ? [...new Set(value.assert_stdout_contains.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stdout_regex: value.assert_stdout_regex\n ? [...new Set(value.assert_stdout_regex.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stderr_contains: value.assert_stderr_contains\n ? [...new Set(value.assert_stderr_contains.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stderr_regex: value.assert_stderr_regex\n ? [...new Set(value.assert_stderr_regex.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stdout_min_lines:\n typeof value.assert_stdout_min_lines === \"number\" &&\n Number.isFinite(value.assert_stdout_min_lines) &&\n value.assert_stdout_min_lines >= 0\n ? Math.floor(value.assert_stdout_min_lines)\n : undefined,\n assert_json_field_equals: value.assert_json_field_equals\n ? Object.fromEntries(\n Object.entries(value.assert_json_field_equals)\n .map(([key, expectedValue]) => [key.trim(), String(expectedValue).trim()] as const)\n .filter(([key, expectedValue]) => key.length > 0 && expectedValue.length > 0)\n .sort(([left], [right]) => left.localeCompare(right)),\n )\n : undefined,\n assert_json_field_gte: value.assert_json_field_gte\n ? Object.fromEntries(\n Object.entries(value.assert_json_field_gte)\n .map(([key, expectedValue]) => [key.trim(), Number(expectedValue)] as const)\n .filter(([key, expectedValue]) => key.length > 0 && Number.isFinite(expectedValue))\n .sort(([left], [right]) => left.localeCompare(right)),\n )\n : undefined,\n note: value.note?.trim() || undefined,\n }))\n .sort((a, b) => {\n const byScope = a.scope.localeCompare(b.scope);\n if (byScope !== 0) return byScope;\n const byPath = (a.path ?? \"\").localeCompare(b.path ?? \"\");\n if (byPath !== 0) return byPath;\n const byCommand = (a.command ?? \"\").localeCompare(b.command ?? \"\");\n if (byCommand !== 0) return byCommand;\n const byTimeout = (a.timeout_seconds ?? 0) - (b.timeout_seconds ?? 0);\n if (byTimeout !== 0) return byTimeout;\n const byPmContext = (a.pm_context_mode ?? \"\").localeCompare(b.pm_context_mode ?? \"\");\n if (byPmContext !== 0) return byPmContext;\n const bySharedHostSafe = Number(Boolean(a.shared_host_safe)) - Number(Boolean(b.shared_host_safe));\n if (bySharedHostSafe !== 0) return bySharedHostSafe;\n const byEnvClear = JSON.stringify(a.env_clear ?? []).localeCompare(JSON.stringify(b.env_clear ?? []));\n if (byEnvClear !== 0) return byEnvClear;\n const byEnvSet = JSON.stringify(a.env_set ?? {}).localeCompare(JSON.stringify(b.env_set ?? {}));\n if (byEnvSet !== 0) return byEnvSet;\n const byStdoutContains = JSON.stringify(a.assert_stdout_contains ?? []).localeCompare(\n JSON.stringify(b.assert_stdout_contains ?? []),\n );\n if (byStdoutContains !== 0) return byStdoutContains;\n const byStdoutRegex = JSON.stringify(a.assert_stdout_regex ?? []).localeCompare(\n JSON.stringify(b.assert_stdout_regex ?? []),\n );\n if (byStdoutRegex !== 0) return byStdoutRegex;\n const byStderrContains = JSON.stringify(a.assert_stderr_contains ?? []).localeCompare(\n JSON.stringify(b.assert_stderr_contains ?? []),\n );\n if (byStderrContains !== 0) return byStderrContains;\n const byStderrRegex = JSON.stringify(a.assert_stderr_regex ?? []).localeCompare(\n JSON.stringify(b.assert_stderr_regex ?? []),\n );\n if (byStderrRegex !== 0) return byStderrRegex;\n const byStdoutMinLines = (a.assert_stdout_min_lines ?? 0) - (b.assert_stdout_min_lines ?? 0);\n if (byStdoutMinLines !== 0) return byStdoutMinLines;\n const byJsonFieldEquals = JSON.stringify(a.assert_json_field_equals ?? {}).localeCompare(\n JSON.stringify(b.assert_json_field_equals ?? {}),\n );\n if (byJsonFieldEquals !== 0) return byJsonFieldEquals;\n const byJsonFieldGte = JSON.stringify(a.assert_json_field_gte ?? {}).localeCompare(\n JSON.stringify(b.assert_json_field_gte ?? {}),\n );\n if (byJsonFieldGte !== 0) return byJsonFieldGte;\n return (a.note ?? \"\").localeCompare(b.note ?? \"\");\n });\n}\n\nfunction sortDocs(values: LinkedDoc[] | undefined): LinkedDoc[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values]\n .map((value) => ({\n path: normalizePathValue(value.path),\n scope: value.scope,\n note: value.note?.trim() || undefined,\n }))\n .sort((a, b) => {\n const byScope = a.scope.localeCompare(b.scope);\n if (byScope !== 0) return byScope;\n const byPath = a.path.localeCompare(b.path);\n if (byPath !== 0) return byPath;\n return (a.note ?? \"\").localeCompare(b.note ?? \"\");\n });\n}\n\nfunction normalizeTypeOptions(values: Record<string, string> | undefined): Record<string, string> | undefined {\n if (!values) {\n return undefined;\n }\n const normalizedEntries = Object.entries(values)\n .map(([key, value]) => [key.trim(), value.trim()] as const)\n .filter(([key, value]) => key.length > 0 && value.length > 0)\n .sort((left, right) => left[0].localeCompare(right[0]));\n if (normalizedEntries.length === 0) {\n return undefined;\n }\n return Object.fromEntries(normalizedEntries);\n}\n\nfunction normalizeBody(body: string): string {\n return body.replace(/^\\n+/, \"\").replace(/\\s+$/, \"\");\n}\n\nfunction normalizeConfidenceValue(value: ItemMetadata[\"confidence\"] | undefined): ItemMetadata[\"confidence\"] | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === \"number\") {\n return value;\n }\n const normalized = value.trim().toLowerCase();\n if (normalized === \"med\") {\n return \"medium\";\n }\n if (CONFIDENCE_TEXT_VALUES.includes(normalized as (typeof CONFIDENCE_TEXT_VALUES)[number])) {\n return normalized as (typeof CONFIDENCE_TEXT_VALUES)[number];\n }\n return undefined;\n}\n\nfunction normalizeSeverityValue(value: ItemMetadata[\"severity\"] | undefined): ItemMetadata[\"severity\"] | undefined {\n if (value === undefined) {\n return undefined;\n }\n const normalized = value.trim().toLowerCase();\n if (normalized === \"med\") {\n return \"medium\";\n }\n if (ISSUE_SEVERITY_VALUES.includes(normalized as (typeof ISSUE_SEVERITY_VALUES)[number])) {\n return normalized as (typeof ISSUE_SEVERITY_VALUES)[number];\n }\n return undefined;\n}\n\nexport function normalizeFrontMatter(\n frontMatter: ItemMetadata,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): ItemMetadata {\n const runtimeContext = resolveRuntimeSchemaValidationContext(options);\n const normalizedStatus = normalizeStatusInput(frontMatter.status, runtimeContext?.statusRegistry) ?? frontMatter.status;\n const tags = Array.from(new Set(frontMatter.tags.map((tag) => tag.trim().toLowerCase()).filter(Boolean))).sort((a, b) =>\n a.localeCompare(b),\n );\n const normalized: ItemMetadata = {\n id: frontMatter.id,\n title: frontMatter.title,\n description: frontMatter.description,\n type: frontMatter.type,\n source_type: frontMatter.source_type?.trim() || undefined,\n type_options: normalizeTypeOptions(frontMatter.type_options),\n status: normalizedStatus,\n priority: frontMatter.priority,\n tags,\n created_at: frontMatter.created_at,\n updated_at: frontMatter.updated_at,\n dependencies: sortDependencies(frontMatter.dependencies),\n comments: sortLogValues(frontMatter.comments),\n notes: sortLogValues(frontMatter.notes),\n learnings: sortLogValues(frontMatter.learnings),\n files: normalizeFiles(frontMatter.files),\n tests: sortTests(frontMatter.tests),\n test_runs: normalizeTestRunSummaries(frontMatter.test_runs),\n docs: sortDocs(frontMatter.docs),\n deadline: frontMatter.deadline || undefined,\n reminders: sortReminders(frontMatter.reminders),\n events: sortEvents(frontMatter.events),\n closed_at: frontMatter.closed_at || undefined,\n assignee: frontMatter.assignee?.trim() || undefined,\n source_owner: frontMatter.source_owner?.trim() || undefined,\n author: frontMatter.author || undefined,\n estimated_minutes: frontMatter.estimated_minutes,\n acceptance_criteria: frontMatter.acceptance_criteria ?? undefined,\n design: frontMatter.design ?? undefined,\n external_ref: frontMatter.external_ref ?? undefined,\n definition_of_ready: frontMatter.definition_of_ready?.trim() || undefined,\n order: frontMatter.order,\n goal: frontMatter.goal?.trim() || undefined,\n objective: frontMatter.objective?.trim() || undefined,\n value: frontMatter.value?.trim() || undefined,\n impact: frontMatter.impact?.trim() || undefined,\n outcome: frontMatter.outcome?.trim() || undefined,\n why_now: frontMatter.why_now?.trim() || undefined,\n parent: frontMatter.parent?.trim() || undefined,\n reviewer: frontMatter.reviewer?.trim() || undefined,\n risk: frontMatter.risk ?? undefined,\n confidence: normalizeConfidenceValue(frontMatter.confidence),\n sprint: frontMatter.sprint?.trim() || undefined,\n release: frontMatter.release?.trim() || undefined,\n blocked_by: frontMatter.blocked_by?.trim() || undefined,\n blocked_reason: frontMatter.blocked_reason?.trim() || undefined,\n unblock_note: frontMatter.unblock_note?.trim() || undefined,\n reporter: frontMatter.reporter?.trim() || undefined,\n severity: normalizeSeverityValue(frontMatter.severity),\n environment: frontMatter.environment?.trim() || undefined,\n repro_steps: frontMatter.repro_steps?.trim() || undefined,\n resolution: frontMatter.resolution?.trim() || undefined,\n expected_result: frontMatter.expected_result?.trim() || undefined,\n actual_result: frontMatter.actual_result?.trim() || undefined,\n affected_version: frontMatter.affected_version?.trim() || undefined,\n fixed_version: frontMatter.fixed_version?.trim() || undefined,\n component: frontMatter.component?.trim() || undefined,\n regression: frontMatter.regression,\n customer_impact: frontMatter.customer_impact?.trim() || undefined,\n close_reason: frontMatter.close_reason || undefined,\n };\n const sourceRecord = frontMatter as unknown as Record<string, unknown>;\n for (const [key, value] of Object.entries(sourceRecord)) {\n if (Object.prototype.hasOwnProperty.call(normalized, key) || value === undefined) {\n continue;\n }\n (normalized as unknown as Record<string, unknown>)[key] = value;\n }\n\n if (runtimeContext?.fieldRegistry) {\n for (const definition of runtimeContext.fieldRegistry.definitions) {\n const currentValue = (normalized as unknown as Record<string, unknown>)[definition.metadata_key];\n if (currentValue === undefined) {\n continue;\n }\n (normalized as unknown as Record<string, unknown>)[definition.metadata_key] = coerceRuntimeFieldValue(\n definition,\n currentValue,\n `metadata field \"${definition.metadata_key}\"`,\n );\n }\n }\n\n if (runtimeContext && runtimeContext.unknownFieldPolicy !== \"allow\") {\n const knownKeys = new Set(STATIC_FRONT_MATTER_FIELD_SET);\n for (const definition of runtimeContext.fieldRegistry?.definitions ?? []) {\n knownKeys.add(definition.metadata_key);\n }\n const unknownKeys = Object.keys(normalized as unknown as Record<string, unknown>)\n .filter((key) => !knownKeys.has(key))\n .sort((left, right) => left.localeCompare(right));\n if (unknownKeys.length > 0) {\n if (runtimeContext.unknownFieldPolicy === \"reject\") {\n validationError(`unknown schema fields are not allowed: ${unknownKeys.join(\", \")}`);\n }\n }\n }\n\n for (const [key, value] of Object.entries(normalized)) {\n if (value === undefined) {\n delete (normalized as unknown as Record<string, unknown>)[key];\n }\n }\n return normalized;\n}\n\nfunction orderFrontMatter(frontMatter: ItemMetadata): Record<string, unknown> {\n return orderObject(frontMatter as unknown as Record<string, unknown>, FRONT_MATTER_KEY_ORDER);\n}\n\nfunction findJsonObjectEnd(content: string): number {\n let depth = 0;\n let inString = false;\n let escaped = false;\n\n for (let i = 0; i < content.length; i += 1) {\n const char = content[i];\n if (inString) {\n if (escaped) {\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n escaped = true;\n continue;\n }\n if (char === \"\\\"\") {\n inString = false;\n }\n continue;\n }\n if (char === \"\\\"\") {\n inString = true;\n continue;\n }\n if (char === \"{\") {\n depth += 1;\n continue;\n }\n if (char === \"}\") {\n depth -= 1;\n if (depth === 0) {\n return i;\n }\n }\n }\n\n return -1;\n}\n\nexport function splitFrontMatter(content: string): { frontMatter: string; body: string } {\n if (!content.startsWith(\"{\")) {\n return { frontMatter: \"\", body: content };\n }\n const end = findJsonObjectEnd(content);\n if (end < 0) {\n return { frontMatter: \"\", body: content };\n }\n const frontMatter = content.slice(0, end + 1);\n const body = content.slice(end + 1).replace(/^\\r?\\n+/, \"\");\n return { frontMatter, body };\n}\n\nfunction stripLeadingYamlDocument(content: string): { content: string; stripped: boolean } {\n const normalizedContent = content.charCodeAt(0) === 0xfeff ? content.slice(1) : content;\n const opener = normalizedContent.match(/^[ \\t]*---[ \\t]*(?:\\r?\\n|$)/);\n if (!opener) {\n return { content: normalizedContent, stripped: false };\n }\n\n let cursor = opener[0].length;\n while (cursor < normalizedContent.length) {\n const nextNewline = normalizedContent.indexOf(\"\\n\", cursor);\n const lineEnd = nextNewline === -1 ? normalizedContent.length : nextNewline;\n const line = normalizedContent.slice(cursor, lineEnd).replace(/\\r$/, \"\");\n const afterLine = nextNewline === -1 ? lineEnd : lineEnd + 1;\n if (line.trim() === \"---\") {\n return { content: normalizedContent.slice(afterLine).replace(/^\\s+/, \"\"), stripped: true };\n }\n cursor = afterLine;\n }\n\n return { content: normalizedContent, stripped: false };\n}\n\nfunction parseJsonMarkdownItemDocument(\n content: string,\n runtimeContext?: RuntimeSchemaValidationContext,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): ItemDocument {\n const normalized = stripLeadingYamlDocument(content);\n if (normalized.stripped) {\n options.onWarning?.(\"json_markdown_leading_yaml_frontmatter_ignored\");\n }\n const { frontMatter, body } = splitFrontMatter(normalized.content);\n if (!frontMatter) {\n const trimmed = content.trimStart();\n if (trimmed.startsWith(\"{\")) {\n validationError(\"JSON front matter is not valid JSON\");\n }\n validationError(\"missing JSON front matter\");\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(frontMatter);\n } catch {\n validationError(\"JSON front matter is not valid JSON\");\n }\n assertValidFrontMatter(parsed, runtimeContext);\n\n return {\n metadata: normalizeFrontMatter(parsed, options),\n body: normalizeBody(body),\n };\n}\n\nfunction parseToonItemDocument(\n content: string,\n runtimeContext?: RuntimeSchemaValidationContext,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): ItemDocument {\n let parsed: unknown;\n try {\n parsed = decodeToon(content);\n } catch {\n validationError(\"TOON item document is not valid TOON\");\n }\n assertFrontMatterCondition(\n typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed),\n \"TOON item document must be an object\",\n );\n const record = parsed as Record<string, unknown>;\n\n if (Object.prototype.hasOwnProperty.call(record, \"front_matter\")) {\n assertValidFrontMatter(record.front_matter, runtimeContext);\n assertFrontMatterCondition(\n record.body === undefined || typeof record.body === \"string\",\n \"TOON item document body must be a string\",\n );\n return {\n metadata: normalizeFrontMatter(record.front_matter, options),\n body: normalizeBody(typeof record.body === \"string\" ? record.body : \"\"),\n };\n }\n\n const { body, ...frontMatterRecord } = record;\n assertFrontMatterCondition(\n body === undefined || typeof body === \"string\",\n \"TOON item document body must be a string\",\n );\n assertValidFrontMatter(frontMatterRecord, runtimeContext);\n return {\n metadata: normalizeFrontMatter(frontMatterRecord, options),\n body: normalizeBody(typeof body === \"string\" ? body : \"\"),\n };\n}\n\nfunction serializeJsonMarkdownItemDocument(\n document: ItemDocument,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): string {\n const normalizedFrontMatter = normalizeFrontMatter(document.metadata, options);\n const orderedFrontMatter = orderFrontMatter(normalizedFrontMatter);\n const serializedFrontMatter = JSON.stringify(orderedFrontMatter, null, 2);\n const normalizedBody = normalizeBody(document.body ?? \"\");\n if (!normalizedBody) {\n return `${serializedFrontMatter}\\n`;\n }\n return `${serializedFrontMatter}\\n\\n${normalizedBody}\\n`;\n}\n\nfunction serializeToonItemDocument(\n document: ItemDocument,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {},\n): string {\n const normalizedFrontMatter = normalizeFrontMatter(document.metadata, options);\n const orderedFrontMatter = orderFrontMatter(normalizedFrontMatter);\n const normalizedBody = normalizeBody(document.body ?? \"\");\n return `${encodeToon({ ...orderedFrontMatter, body: normalizedBody })}\\n`;\n}\n\nexport function parseItemDocument(content: string, options: ItemDocumentFormatOptions = {}): ItemDocument {\n const conflictMarker = findFirstMergeConflictMarker(content);\n if (conflictMarker) {\n throw new PmCliError(\n `Merge conflict markers detected in item document at line ${conflictMarker.line} (${conflictMarker.marker}). Resolve <<<<<<< ======= >>>>>>> markers and retry.`,\n EXIT_CODE.GENERIC_FAILURE,\n {\n code: \"merge_conflict_markers_detected\",\n required: \"Resolve merge-conflict markers in the item file before parsing or mutation commands.\",\n why: \"Partially merged documents can corrupt item metadata and history integrity.\",\n examples: [\"git status\", \"git add <resolved-file> && git commit\"],\n nextSteps: [\"Resolve conflicts, save the file, then rerun the pm command.\"],\n },\n );\n }\n const format = options.format ?? \"toon\";\n const runtimeContext = resolveRuntimeSchemaValidationContext(options);\n return format === \"toon\"\n ? parseToonItemDocument(content, runtimeContext, options)\n : parseJsonMarkdownItemDocument(content, runtimeContext, options);\n}\n\nexport function serializeItemDocument(document: ItemDocument, options: ItemDocumentFormatOptions = {}): string {\n const format = options.format ?? \"toon\";\n return format === \"toon\" ? serializeToonItemDocument(document, options) : serializeJsonMarkdownItemDocument(document, options);\n}\n\nexport function canonicalDocument(document: ItemDocument, options: Pick<ItemDocumentFormatOptions, \"schema\" | \"onWarning\"> = {}): ItemDocument {\n return {\n metadata: normalizeFrontMatter(document.metadata, options),\n body: normalizeBody(document.body ?? \"\"),\n };\n}\n"]}
|
|
@@ -9,7 +9,7 @@ export function collectRuntimeFilterValues(options, fieldRegistry, command) {
|
|
|
9
9
|
if (rawValue === undefined) {
|
|
10
10
|
continue;
|
|
11
11
|
}
|
|
12
|
-
filters[definition.
|
|
12
|
+
filters[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);
|
|
13
13
|
}
|
|
14
14
|
return filters;
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-field-filters.js","sourceRoot":"/","sources":["core/schema/runtime-field-filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAGjG,SAAS,WAAW,CAAC,IAAa,EAAE,KAAc;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAgC,EAChC,aAAmC,EACnC,OAA4B;IAE5B,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5E,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"runtime-field-filters.js","sourceRoot":"/","sources":["core/schema/runtime-field-filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAGjG,SAAS,WAAW,CAAC,IAAa,EAAE,KAAc;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAgC,EAChC,aAAmC,EACnC,OAA4B;IAE5B,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5E,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAA6B,EAAE,OAAgC;IACnG,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnE,MAAM,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC3E,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,OAAO,KAAK,CAAC;YACf,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import { coerceRuntimeFieldValue, readRuntimeFieldOptionValue } from \"./runtime-field-values.js\";\nimport type { RuntimeFieldCommand, RuntimeFieldRegistry } from \"./runtime-schema.js\";\n\nfunction valuesEqual(left: unknown, right: unknown): boolean {\n return JSON.stringify(left) === JSON.stringify(right);\n}\n\nexport function collectRuntimeFilterValues(\n options: Record<string, unknown>,\n fieldRegistry: RuntimeFieldRegistry,\n command: RuntimeFieldCommand,\n): Record<string, unknown> {\n const filters: Record<string, unknown> = {};\n for (const definition of fieldRegistry.command_to_fields.get(command) ?? []) {\n const rawValue = readRuntimeFieldOptionValue(options, definition);\n if (rawValue === undefined) {\n continue;\n }\n filters[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);\n }\n return filters;\n}\n\nexport function matchesRuntimeFilters(item: Record<string, unknown>, filters: Record<string, unknown>): boolean {\n for (const [fieldKey, expectedValue] of Object.entries(filters)) {\n const actualValue = item[fieldKey];\n if (Array.isArray(expectedValue)) {\n if (Array.isArray(actualValue)) {\n const normalizedActual = actualValue.map((value) => String(value));\n const normalizedExpected = expectedValue.map((value) => String(value));\n if (!normalizedExpected.every((value) => normalizedActual.includes(value))) {\n return false;\n }\n continue;\n }\n if (!valuesEqual(actualValue, expectedValue[expectedValue.length - 1])) {\n return false;\n }\n continue;\n }\n if (!valuesEqual(actualValue, expectedValue)) {\n return false;\n }\n }\n return true;\n}\n"]}
|
|
@@ -133,7 +133,7 @@ export function collectRuntimeCreateFieldValues(options, fieldRegistry, itemType
|
|
|
133
133
|
}
|
|
134
134
|
continue;
|
|
135
135
|
}
|
|
136
|
-
values[definition.
|
|
136
|
+
values[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);
|
|
137
137
|
}
|
|
138
138
|
return {
|
|
139
139
|
values,
|
|
@@ -147,7 +147,7 @@ export function collectRuntimeUpdateFieldValues(options, fieldRegistry) {
|
|
|
147
147
|
if (rawValue === undefined) {
|
|
148
148
|
continue;
|
|
149
149
|
}
|
|
150
|
-
values[definition.
|
|
150
|
+
values[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);
|
|
151
151
|
}
|
|
152
152
|
return values;
|
|
153
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-field-values.js","sourceRoot":"/","sources":["core/schema/runtime-field-values.ts"],"names":[],"mappings":"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","sourcesContent":["import { EXIT_CODE } from \"../shared/constants.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport { runtimeFieldOptionTarget, type RuntimeFieldDefinitionResolved, type RuntimeFieldRegistry } from \"./runtime-schema.js\";\n\nfunction toCamelToken(value: string): string {\n const segments = value\n .trim()\n .replaceAll(/[^A-Za-z0-9]+/g, \" \")\n .split(/\\s+/)\n .filter((segment) => segment.length > 0)\n .map((segment) => segment.toLowerCase());\n if (segments.length === 0) {\n return value;\n }\n const [first, ...rest] = segments;\n return `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join(\"\")}`;\n}\n\nfunction resolveCandidateOptionKeys(definition: RuntimeFieldDefinitionResolved): string[] {\n return [...new Set([\n runtimeFieldOptionTarget(definition),\n toCamelToken(definition.key),\n toCamelToken(definition.cli_flag),\n ...definition.cli_aliases.map((alias) => toCamelToken(alias)),\n ])];\n}\n\nexport function readRuntimeFieldOptionValue(\n options: Record<string, unknown>,\n definition: RuntimeFieldDefinitionResolved,\n): unknown {\n for (const candidateKey of resolveCandidateOptionKeys(definition)) {\n if (!Object.hasOwn(options, candidateKey)) {\n continue;\n }\n const value = options[candidateKey];\n if (value !== undefined) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction normalizeStringArrayValue(value: unknown): string[] {\n if (Array.isArray(value)) {\n return value\n .flatMap((entry) => normalizeStringArrayValue(entry))\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n }\n if (typeof value === \"string\") {\n return value\n .split(/[,\\n|]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n }\n if (value === undefined || value === null) {\n return [];\n }\n return [String(value).trim()].filter((entry) => entry.length > 0);\n}\n\nfunction parseBooleanValue(raw: unknown, label: string): boolean {\n if (typeof raw === \"boolean\") {\n return raw;\n }\n if (typeof raw === \"number\") {\n if (raw === 1) {\n return true;\n }\n if (raw === 0) {\n return false;\n }\n }\n if (typeof raw === \"string\") {\n const normalized = raw.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"false\" || normalized === \"0\" || normalized === \"no\") {\n return false;\n }\n }\n throw new PmCliError(`${label} must be one of true|false|1|0|yes|no`, EXIT_CODE.USAGE);\n}\n\nfunction parseNumberValue(raw: unknown, label: string): number {\n if (typeof raw === \"number\" && Number.isFinite(raw)) {\n return raw;\n }\n const candidate = typeof raw === \"string\" ? raw.trim() : String(raw);\n const parsed = Number(candidate);\n if (!Number.isFinite(parsed)) {\n throw new PmCliError(`${label} must be a number`, EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\nexport function coerceRuntimeFieldValue(\n definition: RuntimeFieldDefinitionResolved,\n rawValue: unknown,\n labelOverride?: string,\n): unknown {\n const label = labelOverride ?? `--${definition.cli_flag}`;\n if (definition.repeatable || definition.type === \"string_array\") {\n const values = normalizeStringArrayValue(rawValue);\n if (definition.type === \"number\") {\n return values.map((value) => parseNumberValue(value, label));\n }\n if (definition.type === \"boolean\") {\n return values.map((value) => parseBooleanValue(value, label));\n }\n return values;\n }\n\n const scalarRaw = Array.isArray(rawValue) ? rawValue[rawValue.length - 1] : rawValue;\n if (scalarRaw === undefined) {\n return undefined;\n }\n if (definition.type === \"number\") {\n return parseNumberValue(scalarRaw, label);\n }\n if (definition.type === \"boolean\") {\n return parseBooleanValue(scalarRaw, label);\n }\n return typeof scalarRaw === \"string\" ? scalarRaw : String(scalarRaw);\n}\n\nfunction shouldRequireFieldOnCreate(definition: RuntimeFieldDefinitionResolved, itemTypeName: string | undefined): boolean {\n if (!definition.required && !definition.required_on_create) {\n return false;\n }\n if (definition.required_types.length === 0) {\n return true;\n }\n if (!itemTypeName) {\n return false;\n }\n return definition.required_types.map((value) => value.toLowerCase()).includes(itemTypeName.trim().toLowerCase());\n}\n\nexport function collectRuntimeCreateFieldValues(\n options: Record<string, unknown>,\n fieldRegistry: RuntimeFieldRegistry,\n itemTypeName: string | undefined,\n): { values: Record<string, unknown>; missing_required_flags: string[] } {\n const values: Record<string, unknown> = {};\n const missingRequiredFlags: string[] = [];\n for (const definition of fieldRegistry.command_to_fields.get(\"create\") ?? []) {\n const rawValue = readRuntimeFieldOptionValue(options, definition);\n if (rawValue === undefined) {\n if (shouldRequireFieldOnCreate(definition, itemTypeName)) {\n missingRequiredFlags.push(`--${definition.cli_flag}`);\n }\n continue;\n }\n values[definition.front_matter_key] = coerceRuntimeFieldValue(definition, rawValue);\n }\n return {\n values,\n missing_required_flags: [...new Set(missingRequiredFlags)].sort((left, right) => left.localeCompare(right)),\n };\n}\n\nexport function collectRuntimeUpdateFieldValues(\n options: Record<string, unknown>,\n fieldRegistry: RuntimeFieldRegistry,\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n for (const definition of fieldRegistry.command_to_fields.get(\"update\") ?? []) {\n const rawValue = readRuntimeFieldOptionValue(options, definition);\n if (rawValue === undefined) {\n continue;\n }\n values[definition.front_matter_key] = coerceRuntimeFieldValue(definition, rawValue);\n }\n return values;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runtime-field-values.js","sourceRoot":"/","sources":["core/schema/runtime-field-values.ts"],"names":[],"mappings":"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","sourcesContent":["import { EXIT_CODE } from \"../shared/constants.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport { runtimeFieldOptionTarget, type RuntimeFieldDefinitionResolved, type RuntimeFieldRegistry } from \"./runtime-schema.js\";\n\nfunction toCamelToken(value: string): string {\n const segments = value\n .trim()\n .replaceAll(/[^A-Za-z0-9]+/g, \" \")\n .split(/\\s+/)\n .filter((segment) => segment.length > 0)\n .map((segment) => segment.toLowerCase());\n if (segments.length === 0) {\n return value;\n }\n const [first, ...rest] = segments;\n return `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join(\"\")}`;\n}\n\nfunction resolveCandidateOptionKeys(definition: RuntimeFieldDefinitionResolved): string[] {\n return [...new Set([\n runtimeFieldOptionTarget(definition),\n toCamelToken(definition.key),\n toCamelToken(definition.cli_flag),\n ...definition.cli_aliases.map((alias) => toCamelToken(alias)),\n ])];\n}\n\nexport function readRuntimeFieldOptionValue(\n options: Record<string, unknown>,\n definition: RuntimeFieldDefinitionResolved,\n): unknown {\n for (const candidateKey of resolveCandidateOptionKeys(definition)) {\n if (!Object.hasOwn(options, candidateKey)) {\n continue;\n }\n const value = options[candidateKey];\n if (value !== undefined) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction normalizeStringArrayValue(value: unknown): string[] {\n if (Array.isArray(value)) {\n return value\n .flatMap((entry) => normalizeStringArrayValue(entry))\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n }\n if (typeof value === \"string\") {\n return value\n .split(/[,\\n|]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n }\n if (value === undefined || value === null) {\n return [];\n }\n return [String(value).trim()].filter((entry) => entry.length > 0);\n}\n\nfunction parseBooleanValue(raw: unknown, label: string): boolean {\n if (typeof raw === \"boolean\") {\n return raw;\n }\n if (typeof raw === \"number\") {\n if (raw === 1) {\n return true;\n }\n if (raw === 0) {\n return false;\n }\n }\n if (typeof raw === \"string\") {\n const normalized = raw.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"false\" || normalized === \"0\" || normalized === \"no\") {\n return false;\n }\n }\n throw new PmCliError(`${label} must be one of true|false|1|0|yes|no`, EXIT_CODE.USAGE);\n}\n\nfunction parseNumberValue(raw: unknown, label: string): number {\n if (typeof raw === \"number\" && Number.isFinite(raw)) {\n return raw;\n }\n const candidate = typeof raw === \"string\" ? raw.trim() : String(raw);\n const parsed = Number(candidate);\n if (!Number.isFinite(parsed)) {\n throw new PmCliError(`${label} must be a number`, EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\nexport function coerceRuntimeFieldValue(\n definition: RuntimeFieldDefinitionResolved,\n rawValue: unknown,\n labelOverride?: string,\n): unknown {\n const label = labelOverride ?? `--${definition.cli_flag}`;\n if (definition.repeatable || definition.type === \"string_array\") {\n const values = normalizeStringArrayValue(rawValue);\n if (definition.type === \"number\") {\n return values.map((value) => parseNumberValue(value, label));\n }\n if (definition.type === \"boolean\") {\n return values.map((value) => parseBooleanValue(value, label));\n }\n return values;\n }\n\n const scalarRaw = Array.isArray(rawValue) ? rawValue[rawValue.length - 1] : rawValue;\n if (scalarRaw === undefined) {\n return undefined;\n }\n if (definition.type === \"number\") {\n return parseNumberValue(scalarRaw, label);\n }\n if (definition.type === \"boolean\") {\n return parseBooleanValue(scalarRaw, label);\n }\n return typeof scalarRaw === \"string\" ? scalarRaw : String(scalarRaw);\n}\n\nfunction shouldRequireFieldOnCreate(definition: RuntimeFieldDefinitionResolved, itemTypeName: string | undefined): boolean {\n if (!definition.required && !definition.required_on_create) {\n return false;\n }\n if (definition.required_types.length === 0) {\n return true;\n }\n if (!itemTypeName) {\n return false;\n }\n return definition.required_types.map((value) => value.toLowerCase()).includes(itemTypeName.trim().toLowerCase());\n}\n\nexport function collectRuntimeCreateFieldValues(\n options: Record<string, unknown>,\n fieldRegistry: RuntimeFieldRegistry,\n itemTypeName: string | undefined,\n): { values: Record<string, unknown>; missing_required_flags: string[] } {\n const values: Record<string, unknown> = {};\n const missingRequiredFlags: string[] = [];\n for (const definition of fieldRegistry.command_to_fields.get(\"create\") ?? []) {\n const rawValue = readRuntimeFieldOptionValue(options, definition);\n if (rawValue === undefined) {\n if (shouldRequireFieldOnCreate(definition, itemTypeName)) {\n missingRequiredFlags.push(`--${definition.cli_flag}`);\n }\n continue;\n }\n values[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);\n }\n return {\n values,\n missing_required_flags: [...new Set(missingRequiredFlags)].sort((left, right) => left.localeCompare(right)),\n };\n}\n\nexport function collectRuntimeUpdateFieldValues(\n options: Record<string, unknown>,\n fieldRegistry: RuntimeFieldRegistry,\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n for (const definition of fieldRegistry.command_to_fields.get(\"update\") ?? []) {\n const rawValue = readRuntimeFieldOptionValue(options, definition);\n if (rawValue === undefined) {\n continue;\n }\n values[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);\n }\n return values;\n}\n"]}
|
|
@@ -115,7 +115,7 @@ function normalizeRuntimeFieldDefinition(definition) {
|
|
|
115
115
|
if (!key) {
|
|
116
116
|
return null;
|
|
117
117
|
}
|
|
118
|
-
const
|
|
118
|
+
const metadataKey = normalizeStatusToken(definition.metadata_key ?? definition.front_matter_key ?? key);
|
|
119
119
|
const cliFlag = normalizeCliToken(definition.cli_flag ?? keyToDefaultCliFlag(key));
|
|
120
120
|
if (!cliFlag) {
|
|
121
121
|
return null;
|
|
@@ -136,7 +136,7 @@ function normalizeRuntimeFieldDefinition(definition) {
|
|
|
136
136
|
const requiredTypes = normalizeStringList(definition.required_types);
|
|
137
137
|
return {
|
|
138
138
|
key,
|
|
139
|
-
|
|
139
|
+
metadata_key: metadataKey,
|
|
140
140
|
cli_flag: cliFlag,
|
|
141
141
|
cli_aliases: cliAliases,
|
|
142
142
|
description: description && description.length > 0 ? description : undefined,
|
|
@@ -197,7 +197,7 @@ export function normalizeRuntimeSchemaSettings(schema) {
|
|
|
197
197
|
})),
|
|
198
198
|
fields: normalizedFields.map((definition) => ({
|
|
199
199
|
key: definition.key,
|
|
200
|
-
|
|
200
|
+
metadata_key: definition.metadata_key !== definition.key ? definition.metadata_key : undefined,
|
|
201
201
|
cli_flag: definition.cli_flag !== keyToDefaultCliFlag(definition.key) ? definition.cli_flag : undefined,
|
|
202
202
|
cli_aliases: definition.cli_aliases.length > 0 ? [...definition.cli_aliases] : undefined,
|
|
203
203
|
description: definition.description,
|