"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createMetadataUpdateCommand = createMetadataUpdateCommand;
const runtime_contract_1 = require("../../../lib/runtime/runtime-contract");
const metadata_update_operation_1 = require("../metadata-update-operation");
async function createMetadataUpdateCommand() {
    const { Command } = await import("commander");
    const command = new Command("update");
    command
        .description("Apply helper-backed metadata field updates to an existing metadata-bearing artifact.")
        .requiredOption("--artifact <path>", "Repository-relative artifact path to update.")
        .option("--active-artifact <path>", "Repository-relative active artifact path expected by the current handoff.")
        .option("--field <key=value>", "Direct intended metadata update. Repeat for multiple fields.", collectFieldAssignment, [])
        .action((_, commandInstance) => {
        const repositoryContext = (0, runtime_contract_1.createRepositoryContext)((0, runtime_contract_1.detectRepositoryRoot)(), false);
        (0, metadata_update_operation_1.executeMetadataUpdateOperation)({
            commandName: "metadata update",
            write: true,
            commandInstance,
            repositoryRoot: repositoryContext.root,
            detectionSource: repositoryContext.detectionSource
        });
    });
    return command;
}
function collectFieldAssignment(value, previous) {
    previous.push(value);
    return previous;
}
