@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
|
@@ -197,7 +197,7 @@ function resolveRuntimeUnsetDefinition(token, runtimeFieldRegistry) {
|
|
|
197
197
|
}
|
|
198
198
|
const candidates = new Set([
|
|
199
199
|
definition.key,
|
|
200
|
-
definition.
|
|
200
|
+
definition.metadata_key,
|
|
201
201
|
definition.cli_flag.replaceAll("-", "_"),
|
|
202
202
|
definition.cli_flag,
|
|
203
203
|
...definition.cli_aliases.map((alias) => alias.replaceAll("-", "_")),
|
|
@@ -208,7 +208,7 @@ function resolveRuntimeUnsetDefinition(token, runtimeFieldRegistry) {
|
|
|
208
208
|
}
|
|
209
209
|
return {
|
|
210
210
|
optionKey: definition.key,
|
|
211
|
-
frontMatterKey: definition.
|
|
211
|
+
frontMatterKey: definition.metadata_key,
|
|
212
212
|
};
|
|
213
213
|
}
|
|
214
214
|
return undefined;
|
|
@@ -1187,20 +1187,20 @@ export async function runUpdate(id, options, global) {
|
|
|
1187
1187
|
mutate(document) {
|
|
1188
1188
|
const changedFields = [];
|
|
1189
1189
|
const warnings = [];
|
|
1190
|
-
let activeTypeName = resolveTypeName(document.
|
|
1190
|
+
let activeTypeName = resolveTypeName(document.metadata.type, typeRegistry) ?? document.metadata.type;
|
|
1191
1191
|
if (options.title !== undefined) {
|
|
1192
|
-
document.
|
|
1192
|
+
document.metadata.title = options.title;
|
|
1193
1193
|
changedFields.push("title");
|
|
1194
1194
|
}
|
|
1195
1195
|
if (options.description !== undefined) {
|
|
1196
|
-
document.
|
|
1196
|
+
document.metadata.description = options.description;
|
|
1197
1197
|
changedFields.push("description");
|
|
1198
1198
|
}
|
|
1199
1199
|
if (options.body !== undefined) {
|
|
1200
1200
|
document.body = options.body;
|
|
1201
1201
|
changedFields.push("body");
|
|
1202
1202
|
}
|
|
1203
|
-
const previousStatus = document.
|
|
1203
|
+
const previousStatus = document.metadata.status;
|
|
1204
1204
|
const previousStatusNormalized = normalizeStatusInput(previousStatus, statusRegistry) ?? previousStatus;
|
|
1205
1205
|
if (options.status !== undefined) {
|
|
1206
1206
|
const status = parseStatus(options.status, statusRegistry);
|
|
@@ -1218,34 +1218,34 @@ export async function runUpdate(id, options, global) {
|
|
|
1218
1218
|
],
|
|
1219
1219
|
});
|
|
1220
1220
|
}
|
|
1221
|
-
document.
|
|
1221
|
+
document.metadata.status = status;
|
|
1222
1222
|
if (status === statusRegistry.canceled_status) {
|
|
1223
|
-
delete document.
|
|
1223
|
+
delete document.metadata.assignee;
|
|
1224
1224
|
}
|
|
1225
1225
|
changedFields.push("status");
|
|
1226
1226
|
}
|
|
1227
1227
|
if (options.closeReason !== undefined || clearFrontMatterKeys.has("close_reason")) {
|
|
1228
1228
|
if (clearFrontMatterKeys.has("close_reason")) {
|
|
1229
|
-
delete document.
|
|
1229
|
+
delete document.metadata.close_reason;
|
|
1230
1230
|
}
|
|
1231
1231
|
else {
|
|
1232
1232
|
const closeReason = options.closeReason.trim();
|
|
1233
1233
|
if (closeReason.length === 0) {
|
|
1234
1234
|
throw new PmCliError("--close-reason must not be empty", EXIT_CODE.USAGE);
|
|
1235
1235
|
}
|
|
1236
|
-
document.
|
|
1236
|
+
document.metadata.close_reason = closeReason;
|
|
1237
1237
|
}
|
|
1238
1238
|
changedFields.push("close_reason");
|
|
1239
1239
|
}
|
|
1240
1240
|
else if (options.status !== undefined &&
|
|
1241
1241
|
previousStatusNormalized === statusRegistry.close_status &&
|
|
1242
|
-
document.
|
|
1243
|
-
document.
|
|
1244
|
-
delete document.
|
|
1242
|
+
document.metadata.status !== statusRegistry.canceled_status &&
|
|
1243
|
+
document.metadata.close_reason !== undefined) {
|
|
1244
|
+
delete document.metadata.close_reason;
|
|
1245
1245
|
changedFields.push("close_reason");
|
|
1246
1246
|
}
|
|
1247
1247
|
if (options.priority !== undefined) {
|
|
1248
|
-
document.
|
|
1248
|
+
document.metadata.priority = ensurePriority(options.priority);
|
|
1249
1249
|
changedFields.push("priority");
|
|
1250
1250
|
}
|
|
1251
1251
|
if (options.type !== undefined) {
|
|
@@ -1253,14 +1253,14 @@ export async function runUpdate(id, options, global) {
|
|
|
1253
1253
|
if (!resolvedTypeName) {
|
|
1254
1254
|
throw new PmCliError(`Invalid type value "${options.type}". Allowed: ${typeRegistry.types.join(", ")}`, EXIT_CODE.USAGE);
|
|
1255
1255
|
}
|
|
1256
|
-
document.
|
|
1256
|
+
document.metadata.type = resolvedTypeName;
|
|
1257
1257
|
activeTypeName = resolvedTypeName;
|
|
1258
1258
|
changedFields.push("type");
|
|
1259
1259
|
}
|
|
1260
1260
|
enforceUpdateOptionsByType(activeTypeName, options, typeRegistry);
|
|
1261
1261
|
if (options.typeOption !== undefined || clearFrontMatterKeys.has("type_options")) {
|
|
1262
1262
|
if (clearFrontMatterKeys.has("type_options")) {
|
|
1263
|
-
delete document.
|
|
1263
|
+
delete document.metadata.type_options;
|
|
1264
1264
|
}
|
|
1265
1265
|
else {
|
|
1266
1266
|
const parsedTypeOptions = parseTypeOptionEntries(options.typeOption);
|
|
@@ -1268,19 +1268,19 @@ export async function runUpdate(id, options, global) {
|
|
|
1268
1268
|
if (validation.errors.length > 0) {
|
|
1269
1269
|
throw new PmCliError(validation.errors.join("; "), EXIT_CODE.USAGE);
|
|
1270
1270
|
}
|
|
1271
|
-
document.
|
|
1271
|
+
document.metadata.type_options = validation.normalized;
|
|
1272
1272
|
}
|
|
1273
1273
|
changedFields.push("type_options");
|
|
1274
1274
|
}
|
|
1275
|
-
else if (options.type !== undefined && document.
|
|
1276
|
-
const validation = validateTypeOptions(activeTypeName, document.
|
|
1275
|
+
else if (options.type !== undefined && document.metadata.type_options !== undefined) {
|
|
1276
|
+
const validation = validateTypeOptions(activeTypeName, document.metadata.type_options, typeRegistry);
|
|
1277
1277
|
if (validation.errors.length > 0) {
|
|
1278
1278
|
throw new PmCliError(`Current type options are incompatible with type "${activeTypeName}". ${validation.errors.join("; ")}. Use --clear-type-options to clear them.`, EXIT_CODE.USAGE);
|
|
1279
1279
|
}
|
|
1280
|
-
document.
|
|
1280
|
+
document.metadata.type_options = validation.normalized;
|
|
1281
1281
|
}
|
|
1282
1282
|
if (options.dep !== undefined || options.depRemove !== undefined || clearFrontMatterKeys.has("dependencies")) {
|
|
1283
|
-
let nextDependencies = clearFrontMatterKeys.has("dependencies") ? [] : [...(document.
|
|
1283
|
+
let nextDependencies = clearFrontMatterKeys.has("dependencies") ? [] : [...(document.metadata.dependencies ?? [])];
|
|
1284
1284
|
if (dependencyUpdates.additions.length > 0) {
|
|
1285
1285
|
const seen = new Set(nextDependencies.map((entry) => dependencyKey(entry)));
|
|
1286
1286
|
for (const addition of dependencyUpdates.additions) {
|
|
@@ -1296,46 +1296,46 @@ export async function runUpdate(id, options, global) {
|
|
|
1296
1296
|
nextDependencies = nextDependencies.filter((entry) => !dependencyRemovals.some((selector) => matchesDependencySelector(entry, selector)));
|
|
1297
1297
|
}
|
|
1298
1298
|
if (nextDependencies.length === 0) {
|
|
1299
|
-
delete document.
|
|
1299
|
+
delete document.metadata.dependencies;
|
|
1300
1300
|
}
|
|
1301
1301
|
else {
|
|
1302
|
-
document.
|
|
1302
|
+
document.metadata.dependencies = nextDependencies;
|
|
1303
1303
|
}
|
|
1304
1304
|
changedFields.push("dependencies");
|
|
1305
1305
|
}
|
|
1306
1306
|
if (options.comment !== undefined || clearFrontMatterKeys.has("comments")) {
|
|
1307
1307
|
if (clearFrontMatterKeys.has("comments") || !commentUpdates.values || commentUpdates.values.length === 0) {
|
|
1308
|
-
delete document.
|
|
1308
|
+
delete document.metadata.comments;
|
|
1309
1309
|
}
|
|
1310
1310
|
else {
|
|
1311
|
-
document.
|
|
1311
|
+
document.metadata.comments = [...(document.metadata.comments ?? []), ...commentUpdates.values];
|
|
1312
1312
|
}
|
|
1313
1313
|
changedFields.push("comments");
|
|
1314
1314
|
}
|
|
1315
1315
|
if (options.note !== undefined || clearFrontMatterKeys.has("notes")) {
|
|
1316
1316
|
if (clearFrontMatterKeys.has("notes") || !noteUpdates.values || noteUpdates.values.length === 0) {
|
|
1317
|
-
delete document.
|
|
1317
|
+
delete document.metadata.notes;
|
|
1318
1318
|
}
|
|
1319
1319
|
else {
|
|
1320
|
-
document.
|
|
1320
|
+
document.metadata.notes = [...(document.metadata.notes ?? []), ...noteUpdates.values];
|
|
1321
1321
|
}
|
|
1322
1322
|
changedFields.push("notes");
|
|
1323
1323
|
}
|
|
1324
1324
|
if (options.learning !== undefined || clearFrontMatterKeys.has("learnings")) {
|
|
1325
1325
|
if (clearFrontMatterKeys.has("learnings") || !learningUpdates.values || learningUpdates.values.length === 0) {
|
|
1326
|
-
delete document.
|
|
1326
|
+
delete document.metadata.learnings;
|
|
1327
1327
|
}
|
|
1328
1328
|
else {
|
|
1329
|
-
document.
|
|
1329
|
+
document.metadata.learnings = [...(document.metadata.learnings ?? []), ...learningUpdates.values];
|
|
1330
1330
|
}
|
|
1331
1331
|
changedFields.push("learnings");
|
|
1332
1332
|
}
|
|
1333
1333
|
if (options.file !== undefined || clearFrontMatterKeys.has("files")) {
|
|
1334
1334
|
if (clearFrontMatterKeys.has("files") || !fileUpdates.values || fileUpdates.values.length === 0) {
|
|
1335
|
-
delete document.
|
|
1335
|
+
delete document.metadata.files;
|
|
1336
1336
|
}
|
|
1337
1337
|
else {
|
|
1338
|
-
const nextFiles = [...(document.
|
|
1338
|
+
const nextFiles = [...(document.metadata.files ?? [])];
|
|
1339
1339
|
const seen = new Set(nextFiles.map((entry) => fileKey(entry)));
|
|
1340
1340
|
for (const entry of fileUpdates.values) {
|
|
1341
1341
|
const key = fileKey(entry);
|
|
@@ -1345,14 +1345,14 @@ export async function runUpdate(id, options, global) {
|
|
|
1345
1345
|
nextFiles.push(entry);
|
|
1346
1346
|
seen.add(key);
|
|
1347
1347
|
}
|
|
1348
|
-
document.
|
|
1348
|
+
document.metadata.files = nextFiles;
|
|
1349
1349
|
}
|
|
1350
1350
|
changedFields.push("files");
|
|
1351
1351
|
}
|
|
1352
1352
|
if (options.test !== undefined || clearFrontMatterKeys.has("tests")) {
|
|
1353
1353
|
if (clearFrontMatterKeys.has("tests") && options.replaceTests === true) {
|
|
1354
1354
|
if (!testUpdates.values || testUpdates.values.length === 0) {
|
|
1355
|
-
delete document.
|
|
1355
|
+
delete document.metadata.tests;
|
|
1356
1356
|
}
|
|
1357
1357
|
else {
|
|
1358
1358
|
const replacementTests = [];
|
|
@@ -1365,14 +1365,14 @@ export async function runUpdate(id, options, global) {
|
|
|
1365
1365
|
replacementTests.push(entry);
|
|
1366
1366
|
seen.add(key);
|
|
1367
1367
|
}
|
|
1368
|
-
document.
|
|
1368
|
+
document.metadata.tests = replacementTests;
|
|
1369
1369
|
}
|
|
1370
1370
|
}
|
|
1371
1371
|
else if (clearFrontMatterKeys.has("tests") || !testUpdates.values || testUpdates.values.length === 0) {
|
|
1372
|
-
delete document.
|
|
1372
|
+
delete document.metadata.tests;
|
|
1373
1373
|
}
|
|
1374
1374
|
else {
|
|
1375
|
-
const nextTests = [...(document.
|
|
1375
|
+
const nextTests = [...(document.metadata.tests ?? [])];
|
|
1376
1376
|
const seen = new Set(nextTests.map((entry) => testKey(entry)));
|
|
1377
1377
|
for (const entry of testUpdates.values) {
|
|
1378
1378
|
const key = testKey(entry);
|
|
@@ -1382,16 +1382,16 @@ export async function runUpdate(id, options, global) {
|
|
|
1382
1382
|
nextTests.push(entry);
|
|
1383
1383
|
seen.add(key);
|
|
1384
1384
|
}
|
|
1385
|
-
document.
|
|
1385
|
+
document.metadata.tests = nextTests;
|
|
1386
1386
|
}
|
|
1387
1387
|
changedFields.push("tests");
|
|
1388
1388
|
}
|
|
1389
1389
|
if (options.doc !== undefined || clearFrontMatterKeys.has("docs")) {
|
|
1390
1390
|
if (clearFrontMatterKeys.has("docs") || !docUpdates.values || docUpdates.values.length === 0) {
|
|
1391
|
-
delete document.
|
|
1391
|
+
delete document.metadata.docs;
|
|
1392
1392
|
}
|
|
1393
1393
|
else {
|
|
1394
|
-
const nextDocs = [...(document.
|
|
1394
|
+
const nextDocs = [...(document.metadata.docs ?? [])];
|
|
1395
1395
|
const seen = new Set(nextDocs.map((entry) => docKey(entry)));
|
|
1396
1396
|
for (const entry of docUpdates.values) {
|
|
1397
1397
|
const key = docKey(entry);
|
|
@@ -1401,364 +1401,364 @@ export async function runUpdate(id, options, global) {
|
|
|
1401
1401
|
nextDocs.push(entry);
|
|
1402
1402
|
seen.add(key);
|
|
1403
1403
|
}
|
|
1404
|
-
document.
|
|
1404
|
+
document.metadata.docs = nextDocs;
|
|
1405
1405
|
}
|
|
1406
1406
|
changedFields.push("docs");
|
|
1407
1407
|
}
|
|
1408
1408
|
if (options.tags !== undefined || clearFrontMatterKeys.has("tags")) {
|
|
1409
|
-
document.
|
|
1409
|
+
document.metadata.tags = clearFrontMatterKeys.has("tags") ? [] : parseTags(options.tags);
|
|
1410
1410
|
changedFields.push("tags");
|
|
1411
1411
|
}
|
|
1412
1412
|
if (options.deadline !== undefined || clearFrontMatterKeys.has("deadline")) {
|
|
1413
1413
|
if (clearFrontMatterKeys.has("deadline")) {
|
|
1414
|
-
delete document.
|
|
1414
|
+
delete document.metadata.deadline;
|
|
1415
1415
|
}
|
|
1416
1416
|
else {
|
|
1417
|
-
document.
|
|
1417
|
+
document.metadata.deadline = resolveIsoOrRelative(options.deadline, new Date(), "deadline");
|
|
1418
1418
|
}
|
|
1419
1419
|
changedFields.push("deadline");
|
|
1420
1420
|
}
|
|
1421
1421
|
if (options.estimatedMinutes !== undefined || clearFrontMatterKeys.has("estimated_minutes")) {
|
|
1422
1422
|
if (clearFrontMatterKeys.has("estimated_minutes")) {
|
|
1423
|
-
delete document.
|
|
1423
|
+
delete document.metadata.estimated_minutes;
|
|
1424
1424
|
}
|
|
1425
1425
|
else {
|
|
1426
|
-
document.
|
|
1426
|
+
document.metadata.estimated_minutes = parseOptionalNumber(options.estimatedMinutes, "estimated-minutes");
|
|
1427
1427
|
}
|
|
1428
1428
|
changedFields.push("estimated_minutes");
|
|
1429
1429
|
}
|
|
1430
1430
|
if (options.acceptanceCriteria !== undefined || clearFrontMatterKeys.has("acceptance_criteria")) {
|
|
1431
1431
|
if (clearFrontMatterKeys.has("acceptance_criteria")) {
|
|
1432
|
-
delete document.
|
|
1432
|
+
delete document.metadata.acceptance_criteria;
|
|
1433
1433
|
}
|
|
1434
1434
|
else {
|
|
1435
|
-
document.
|
|
1435
|
+
document.metadata.acceptance_criteria = options.acceptanceCriteria;
|
|
1436
1436
|
}
|
|
1437
1437
|
changedFields.push("acceptance_criteria");
|
|
1438
1438
|
}
|
|
1439
1439
|
if (options.definitionOfReady !== undefined || clearFrontMatterKeys.has("definition_of_ready")) {
|
|
1440
1440
|
if (clearFrontMatterKeys.has("definition_of_ready")) {
|
|
1441
|
-
delete document.
|
|
1441
|
+
delete document.metadata.definition_of_ready;
|
|
1442
1442
|
}
|
|
1443
1443
|
else {
|
|
1444
|
-
document.
|
|
1444
|
+
document.metadata.definition_of_ready = options.definitionOfReady.trim();
|
|
1445
1445
|
}
|
|
1446
1446
|
changedFields.push("definition_of_ready");
|
|
1447
1447
|
}
|
|
1448
1448
|
const orderRaw = options.order ?? options.rank;
|
|
1449
1449
|
if (orderRaw !== undefined || clearFrontMatterKeys.has("order")) {
|
|
1450
1450
|
if (clearFrontMatterKeys.has("order")) {
|
|
1451
|
-
delete document.
|
|
1451
|
+
delete document.metadata.order;
|
|
1452
1452
|
}
|
|
1453
1453
|
else {
|
|
1454
1454
|
const parsedOrder = parseOptionalNumber(orderRaw, "order");
|
|
1455
1455
|
if (!Number.isInteger(parsedOrder)) {
|
|
1456
1456
|
throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
|
|
1457
1457
|
}
|
|
1458
|
-
document.
|
|
1458
|
+
document.metadata.order = parsedOrder;
|
|
1459
1459
|
}
|
|
1460
1460
|
changedFields.push("order");
|
|
1461
1461
|
}
|
|
1462
1462
|
if (options.goal !== undefined || clearFrontMatterKeys.has("goal")) {
|
|
1463
1463
|
if (clearFrontMatterKeys.has("goal")) {
|
|
1464
|
-
delete document.
|
|
1464
|
+
delete document.metadata.goal;
|
|
1465
1465
|
}
|
|
1466
1466
|
else {
|
|
1467
|
-
document.
|
|
1467
|
+
document.metadata.goal = options.goal.trim();
|
|
1468
1468
|
}
|
|
1469
1469
|
changedFields.push("goal");
|
|
1470
1470
|
}
|
|
1471
1471
|
if (options.objective !== undefined || clearFrontMatterKeys.has("objective")) {
|
|
1472
1472
|
if (clearFrontMatterKeys.has("objective")) {
|
|
1473
|
-
delete document.
|
|
1473
|
+
delete document.metadata.objective;
|
|
1474
1474
|
}
|
|
1475
1475
|
else {
|
|
1476
|
-
document.
|
|
1476
|
+
document.metadata.objective = options.objective.trim();
|
|
1477
1477
|
}
|
|
1478
1478
|
changedFields.push("objective");
|
|
1479
1479
|
}
|
|
1480
1480
|
if (options.value !== undefined || clearFrontMatterKeys.has("value")) {
|
|
1481
1481
|
if (clearFrontMatterKeys.has("value")) {
|
|
1482
|
-
delete document.
|
|
1482
|
+
delete document.metadata.value;
|
|
1483
1483
|
}
|
|
1484
1484
|
else {
|
|
1485
|
-
document.
|
|
1485
|
+
document.metadata.value = options.value.trim();
|
|
1486
1486
|
}
|
|
1487
1487
|
changedFields.push("value");
|
|
1488
1488
|
}
|
|
1489
1489
|
if (options.impact !== undefined || clearFrontMatterKeys.has("impact")) {
|
|
1490
1490
|
if (clearFrontMatterKeys.has("impact")) {
|
|
1491
|
-
delete document.
|
|
1491
|
+
delete document.metadata.impact;
|
|
1492
1492
|
}
|
|
1493
1493
|
else {
|
|
1494
|
-
document.
|
|
1494
|
+
document.metadata.impact = options.impact.trim();
|
|
1495
1495
|
}
|
|
1496
1496
|
changedFields.push("impact");
|
|
1497
1497
|
}
|
|
1498
1498
|
if (options.outcome !== undefined || clearFrontMatterKeys.has("outcome")) {
|
|
1499
1499
|
if (clearFrontMatterKeys.has("outcome")) {
|
|
1500
|
-
delete document.
|
|
1500
|
+
delete document.metadata.outcome;
|
|
1501
1501
|
}
|
|
1502
1502
|
else {
|
|
1503
|
-
document.
|
|
1503
|
+
document.metadata.outcome = options.outcome.trim();
|
|
1504
1504
|
}
|
|
1505
1505
|
changedFields.push("outcome");
|
|
1506
1506
|
}
|
|
1507
1507
|
if (options.whyNow !== undefined || clearFrontMatterKeys.has("why_now")) {
|
|
1508
1508
|
if (clearFrontMatterKeys.has("why_now")) {
|
|
1509
|
-
delete document.
|
|
1509
|
+
delete document.metadata.why_now;
|
|
1510
1510
|
}
|
|
1511
1511
|
else {
|
|
1512
|
-
document.
|
|
1512
|
+
document.metadata.why_now = options.whyNow.trim();
|
|
1513
1513
|
}
|
|
1514
1514
|
changedFields.push("why_now");
|
|
1515
1515
|
}
|
|
1516
1516
|
if (options.assignee !== undefined || clearFrontMatterKeys.has("assignee")) {
|
|
1517
1517
|
if (clearFrontMatterKeys.has("assignee")) {
|
|
1518
|
-
delete document.
|
|
1518
|
+
delete document.metadata.assignee;
|
|
1519
1519
|
}
|
|
1520
1520
|
else {
|
|
1521
1521
|
if (options.assignee.trim() === "") {
|
|
1522
1522
|
throw new PmCliError("--assignee must not be empty. Use --unset assignee to clear it.", EXIT_CODE.USAGE);
|
|
1523
1523
|
}
|
|
1524
|
-
document.
|
|
1524
|
+
document.metadata.assignee = options.assignee.trim();
|
|
1525
1525
|
}
|
|
1526
1526
|
changedFields.push("assignee");
|
|
1527
1527
|
}
|
|
1528
1528
|
if (options.parent !== undefined || clearFrontMatterKeys.has("parent")) {
|
|
1529
1529
|
if (clearFrontMatterKeys.has("parent")) {
|
|
1530
|
-
delete document.
|
|
1530
|
+
delete document.metadata.parent;
|
|
1531
1531
|
}
|
|
1532
1532
|
else {
|
|
1533
|
-
document.
|
|
1533
|
+
document.metadata.parent = resolvedParentValue;
|
|
1534
1534
|
}
|
|
1535
1535
|
changedFields.push("parent");
|
|
1536
1536
|
}
|
|
1537
1537
|
if (options.reviewer !== undefined || clearFrontMatterKeys.has("reviewer")) {
|
|
1538
1538
|
if (clearFrontMatterKeys.has("reviewer")) {
|
|
1539
|
-
delete document.
|
|
1539
|
+
delete document.metadata.reviewer;
|
|
1540
1540
|
}
|
|
1541
1541
|
else {
|
|
1542
|
-
document.
|
|
1542
|
+
document.metadata.reviewer = options.reviewer.trim();
|
|
1543
1543
|
}
|
|
1544
1544
|
changedFields.push("reviewer");
|
|
1545
1545
|
}
|
|
1546
1546
|
if (options.risk !== undefined || clearFrontMatterKeys.has("risk")) {
|
|
1547
1547
|
if (clearFrontMatterKeys.has("risk")) {
|
|
1548
|
-
delete document.
|
|
1548
|
+
delete document.metadata.risk;
|
|
1549
1549
|
}
|
|
1550
1550
|
else {
|
|
1551
|
-
document.
|
|
1551
|
+
document.metadata.risk = ensureEnum(normalizeRiskInput(options.risk), RISK_VALUES, "risk");
|
|
1552
1552
|
}
|
|
1553
1553
|
changedFields.push("risk");
|
|
1554
1554
|
}
|
|
1555
1555
|
if (options.confidence !== undefined || clearFrontMatterKeys.has("confidence")) {
|
|
1556
1556
|
if (clearFrontMatterKeys.has("confidence")) {
|
|
1557
|
-
delete document.
|
|
1557
|
+
delete document.metadata.confidence;
|
|
1558
1558
|
}
|
|
1559
1559
|
else {
|
|
1560
|
-
document.
|
|
1560
|
+
document.metadata.confidence = parseConfidenceInput(options.confidence);
|
|
1561
1561
|
}
|
|
1562
1562
|
changedFields.push("confidence");
|
|
1563
1563
|
}
|
|
1564
1564
|
if (options.sprint !== undefined || clearFrontMatterKeys.has("sprint")) {
|
|
1565
1565
|
if (clearFrontMatterKeys.has("sprint")) {
|
|
1566
|
-
delete document.
|
|
1566
|
+
delete document.metadata.sprint;
|
|
1567
1567
|
}
|
|
1568
1568
|
else {
|
|
1569
1569
|
const sprintValidation = validateSprintOrReleaseValue("sprint", options.sprint, sprintReleasePolicy);
|
|
1570
|
-
document.
|
|
1570
|
+
document.metadata.sprint = sprintValidation.value;
|
|
1571
1571
|
warnings.push(...sprintValidation.warnings);
|
|
1572
1572
|
}
|
|
1573
1573
|
changedFields.push("sprint");
|
|
1574
1574
|
}
|
|
1575
1575
|
if (options.release !== undefined || clearFrontMatterKeys.has("release")) {
|
|
1576
1576
|
if (clearFrontMatterKeys.has("release")) {
|
|
1577
|
-
delete document.
|
|
1577
|
+
delete document.metadata.release;
|
|
1578
1578
|
}
|
|
1579
1579
|
else {
|
|
1580
1580
|
const releaseValidation = validateSprintOrReleaseValue("release", options.release, sprintReleasePolicy);
|
|
1581
|
-
document.
|
|
1581
|
+
document.metadata.release = releaseValidation.value;
|
|
1582
1582
|
warnings.push(...releaseValidation.warnings);
|
|
1583
1583
|
}
|
|
1584
1584
|
changedFields.push("release");
|
|
1585
1585
|
}
|
|
1586
1586
|
if (options.blockedBy !== undefined || clearFrontMatterKeys.has("blocked_by")) {
|
|
1587
1587
|
if (clearFrontMatterKeys.has("blocked_by")) {
|
|
1588
|
-
delete document.
|
|
1588
|
+
delete document.metadata.blocked_by;
|
|
1589
1589
|
}
|
|
1590
1590
|
else {
|
|
1591
|
-
document.
|
|
1591
|
+
document.metadata.blocked_by = options.blockedBy.trim();
|
|
1592
1592
|
}
|
|
1593
1593
|
changedFields.push("blocked_by");
|
|
1594
1594
|
}
|
|
1595
1595
|
if (options.blockedReason !== undefined || clearFrontMatterKeys.has("blocked_reason")) {
|
|
1596
1596
|
if (clearFrontMatterKeys.has("blocked_reason")) {
|
|
1597
|
-
delete document.
|
|
1597
|
+
delete document.metadata.blocked_reason;
|
|
1598
1598
|
}
|
|
1599
1599
|
else {
|
|
1600
|
-
document.
|
|
1600
|
+
document.metadata.blocked_reason = options.blockedReason.trim();
|
|
1601
1601
|
}
|
|
1602
1602
|
changedFields.push("blocked_reason");
|
|
1603
1603
|
}
|
|
1604
1604
|
if (options.unblockNote !== undefined || clearFrontMatterKeys.has("unblock_note")) {
|
|
1605
1605
|
if (clearFrontMatterKeys.has("unblock_note")) {
|
|
1606
|
-
delete document.
|
|
1606
|
+
delete document.metadata.unblock_note;
|
|
1607
1607
|
}
|
|
1608
1608
|
else {
|
|
1609
|
-
document.
|
|
1609
|
+
document.metadata.unblock_note = options.unblockNote.trim();
|
|
1610
1610
|
}
|
|
1611
1611
|
changedFields.push("unblock_note");
|
|
1612
1612
|
}
|
|
1613
1613
|
if (options.reporter !== undefined || clearFrontMatterKeys.has("reporter")) {
|
|
1614
1614
|
if (clearFrontMatterKeys.has("reporter")) {
|
|
1615
|
-
delete document.
|
|
1615
|
+
delete document.metadata.reporter;
|
|
1616
1616
|
}
|
|
1617
1617
|
else {
|
|
1618
|
-
document.
|
|
1618
|
+
document.metadata.reporter = options.reporter.trim();
|
|
1619
1619
|
}
|
|
1620
1620
|
changedFields.push("reporter");
|
|
1621
1621
|
}
|
|
1622
1622
|
if (options.severity !== undefined || clearFrontMatterKeys.has("severity")) {
|
|
1623
1623
|
if (clearFrontMatterKeys.has("severity")) {
|
|
1624
|
-
delete document.
|
|
1624
|
+
delete document.metadata.severity;
|
|
1625
1625
|
}
|
|
1626
1626
|
else {
|
|
1627
|
-
document.
|
|
1627
|
+
document.metadata.severity = ensureEnum(normalizeSeverityInput(options.severity), ISSUE_SEVERITY_VALUES, "severity");
|
|
1628
1628
|
}
|
|
1629
1629
|
changedFields.push("severity");
|
|
1630
1630
|
}
|
|
1631
1631
|
if (options.environment !== undefined || clearFrontMatterKeys.has("environment")) {
|
|
1632
1632
|
if (clearFrontMatterKeys.has("environment")) {
|
|
1633
|
-
delete document.
|
|
1633
|
+
delete document.metadata.environment;
|
|
1634
1634
|
}
|
|
1635
1635
|
else {
|
|
1636
|
-
document.
|
|
1636
|
+
document.metadata.environment = options.environment.trim();
|
|
1637
1637
|
}
|
|
1638
1638
|
changedFields.push("environment");
|
|
1639
1639
|
}
|
|
1640
1640
|
if (options.reproSteps !== undefined || clearFrontMatterKeys.has("repro_steps")) {
|
|
1641
1641
|
if (clearFrontMatterKeys.has("repro_steps")) {
|
|
1642
|
-
delete document.
|
|
1642
|
+
delete document.metadata.repro_steps;
|
|
1643
1643
|
}
|
|
1644
1644
|
else {
|
|
1645
|
-
document.
|
|
1645
|
+
document.metadata.repro_steps = options.reproSteps.trim();
|
|
1646
1646
|
}
|
|
1647
1647
|
changedFields.push("repro_steps");
|
|
1648
1648
|
}
|
|
1649
1649
|
if (options.resolution !== undefined || clearFrontMatterKeys.has("resolution")) {
|
|
1650
1650
|
if (clearFrontMatterKeys.has("resolution")) {
|
|
1651
|
-
delete document.
|
|
1651
|
+
delete document.metadata.resolution;
|
|
1652
1652
|
}
|
|
1653
1653
|
else {
|
|
1654
|
-
document.
|
|
1654
|
+
document.metadata.resolution = options.resolution.trim();
|
|
1655
1655
|
}
|
|
1656
1656
|
changedFields.push("resolution");
|
|
1657
1657
|
}
|
|
1658
1658
|
if (options.expectedResult !== undefined || clearFrontMatterKeys.has("expected_result")) {
|
|
1659
1659
|
if (clearFrontMatterKeys.has("expected_result")) {
|
|
1660
|
-
delete document.
|
|
1660
|
+
delete document.metadata.expected_result;
|
|
1661
1661
|
}
|
|
1662
1662
|
else {
|
|
1663
|
-
document.
|
|
1663
|
+
document.metadata.expected_result = options.expectedResult.trim();
|
|
1664
1664
|
}
|
|
1665
1665
|
changedFields.push("expected_result");
|
|
1666
1666
|
}
|
|
1667
1667
|
if (options.actualResult !== undefined || clearFrontMatterKeys.has("actual_result")) {
|
|
1668
1668
|
if (clearFrontMatterKeys.has("actual_result")) {
|
|
1669
|
-
delete document.
|
|
1669
|
+
delete document.metadata.actual_result;
|
|
1670
1670
|
}
|
|
1671
1671
|
else {
|
|
1672
|
-
document.
|
|
1672
|
+
document.metadata.actual_result = options.actualResult.trim();
|
|
1673
1673
|
}
|
|
1674
1674
|
changedFields.push("actual_result");
|
|
1675
1675
|
}
|
|
1676
1676
|
if (options.affectedVersion !== undefined || clearFrontMatterKeys.has("affected_version")) {
|
|
1677
1677
|
if (clearFrontMatterKeys.has("affected_version")) {
|
|
1678
|
-
delete document.
|
|
1678
|
+
delete document.metadata.affected_version;
|
|
1679
1679
|
}
|
|
1680
1680
|
else {
|
|
1681
|
-
document.
|
|
1681
|
+
document.metadata.affected_version = options.affectedVersion.trim();
|
|
1682
1682
|
}
|
|
1683
1683
|
changedFields.push("affected_version");
|
|
1684
1684
|
}
|
|
1685
1685
|
if (options.fixedVersion !== undefined || clearFrontMatterKeys.has("fixed_version")) {
|
|
1686
1686
|
if (clearFrontMatterKeys.has("fixed_version")) {
|
|
1687
|
-
delete document.
|
|
1687
|
+
delete document.metadata.fixed_version;
|
|
1688
1688
|
}
|
|
1689
1689
|
else {
|
|
1690
|
-
document.
|
|
1690
|
+
document.metadata.fixed_version = options.fixedVersion.trim();
|
|
1691
1691
|
}
|
|
1692
1692
|
changedFields.push("fixed_version");
|
|
1693
1693
|
}
|
|
1694
1694
|
if (options.component !== undefined || clearFrontMatterKeys.has("component")) {
|
|
1695
1695
|
if (clearFrontMatterKeys.has("component")) {
|
|
1696
|
-
delete document.
|
|
1696
|
+
delete document.metadata.component;
|
|
1697
1697
|
}
|
|
1698
1698
|
else {
|
|
1699
|
-
document.
|
|
1699
|
+
document.metadata.component = options.component.trim();
|
|
1700
1700
|
}
|
|
1701
1701
|
changedFields.push("component");
|
|
1702
1702
|
}
|
|
1703
1703
|
if (options.regression !== undefined || clearFrontMatterKeys.has("regression")) {
|
|
1704
1704
|
if (clearFrontMatterKeys.has("regression")) {
|
|
1705
|
-
delete document.
|
|
1705
|
+
delete document.metadata.regression;
|
|
1706
1706
|
}
|
|
1707
1707
|
else {
|
|
1708
|
-
document.
|
|
1708
|
+
document.metadata.regression = parseRegressionInput(options.regression);
|
|
1709
1709
|
}
|
|
1710
1710
|
changedFields.push("regression");
|
|
1711
1711
|
}
|
|
1712
1712
|
if (options.customerImpact !== undefined || clearFrontMatterKeys.has("customer_impact")) {
|
|
1713
1713
|
if (clearFrontMatterKeys.has("customer_impact")) {
|
|
1714
|
-
delete document.
|
|
1714
|
+
delete document.metadata.customer_impact;
|
|
1715
1715
|
}
|
|
1716
1716
|
else {
|
|
1717
|
-
document.
|
|
1717
|
+
document.metadata.customer_impact = options.customerImpact.trim();
|
|
1718
1718
|
}
|
|
1719
1719
|
changedFields.push("customer_impact");
|
|
1720
1720
|
}
|
|
1721
1721
|
if (options.reminder !== undefined || clearFrontMatterKeys.has("reminders")) {
|
|
1722
1722
|
if (clearFrontMatterKeys.has("reminders")) {
|
|
1723
|
-
delete document.
|
|
1723
|
+
delete document.metadata.reminders;
|
|
1724
1724
|
}
|
|
1725
1725
|
else {
|
|
1726
|
-
document.
|
|
1726
|
+
document.metadata.reminders = parseReminderEntries(options.reminder, nowValue);
|
|
1727
1727
|
}
|
|
1728
1728
|
changedFields.push("reminders");
|
|
1729
1729
|
}
|
|
1730
1730
|
if (options.event !== undefined || clearFrontMatterKeys.has("events")) {
|
|
1731
1731
|
if (clearFrontMatterKeys.has("events")) {
|
|
1732
|
-
delete document.
|
|
1732
|
+
delete document.metadata.events;
|
|
1733
1733
|
}
|
|
1734
1734
|
else {
|
|
1735
|
-
document.
|
|
1735
|
+
document.metadata.events = parseEventEntries(options.event, nowValue);
|
|
1736
1736
|
}
|
|
1737
1737
|
changedFields.push("events");
|
|
1738
1738
|
}
|
|
1739
1739
|
for (const definition of runtimeFieldRegistry.definitions) {
|
|
1740
|
-
if (!clearFrontMatterKeys.has(definition.
|
|
1740
|
+
if (!clearFrontMatterKeys.has(definition.metadata_key)) {
|
|
1741
1741
|
continue;
|
|
1742
1742
|
}
|
|
1743
|
-
if (document.
|
|
1743
|
+
if (document.metadata[definition.metadata_key] === undefined) {
|
|
1744
1744
|
continue;
|
|
1745
1745
|
}
|
|
1746
|
-
delete document.
|
|
1747
|
-
changedFields.push(definition.
|
|
1746
|
+
delete document.metadata[definition.metadata_key];
|
|
1747
|
+
changedFields.push(definition.metadata_key);
|
|
1748
1748
|
}
|
|
1749
1749
|
const runtimeFieldUpdates = collectRuntimeUpdateFieldValues(options, runtimeFieldRegistry);
|
|
1750
1750
|
for (const [fieldKey, fieldValue] of Object.entries(runtimeFieldUpdates)) {
|
|
1751
1751
|
if (clearFrontMatterKeys.has(fieldKey)) {
|
|
1752
1752
|
continue;
|
|
1753
1753
|
}
|
|
1754
|
-
if (JSON.stringify(document.
|
|
1754
|
+
if (JSON.stringify(document.metadata[fieldKey]) === JSON.stringify(fieldValue)) {
|
|
1755
1755
|
continue;
|
|
1756
1756
|
}
|
|
1757
|
-
document.
|
|
1757
|
+
document.metadata[fieldKey] = fieldValue;
|
|
1758
1758
|
changedFields.push(fieldKey);
|
|
1759
1759
|
}
|
|
1760
1760
|
try {
|
|
1761
|
-
applyRegisteredItemFieldDefaultsAndValidation(document.
|
|
1761
|
+
applyRegisteredItemFieldDefaultsAndValidation(document.metadata, getActiveExtensionRegistrations());
|
|
1762
1762
|
}
|
|
1763
1763
|
catch (error) {
|
|
1764
1764
|
throw new PmCliError(error instanceof Error ? error.message : "Invalid extension item field values", EXIT_CODE.USAGE);
|