@meltstudio/meltctl 5.2.0 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +65 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -7450,7 +7450,7 @@ var CLI_VERSION;
|
|
|
7450
7450
|
var init_version = __esm({
|
|
7451
7451
|
"src/utils/version.ts"() {
|
|
7452
7452
|
"use strict";
|
|
7453
|
-
CLI_VERSION = "5.
|
|
7453
|
+
CLI_VERSION = "5.4.0";
|
|
7454
7454
|
}
|
|
7455
7455
|
});
|
|
7456
7456
|
|
|
@@ -27278,6 +27278,29 @@ function createPmResource(config2) {
|
|
|
27278
27278
|
});
|
|
27279
27279
|
return unwrap("close phase", res);
|
|
27280
27280
|
},
|
|
27281
|
+
/**
|
|
27282
|
+
* Lock a scenario into a proposed phase (scenario-planner slice 1):
|
|
27283
|
+
* `scenario → proposed`. The phase starts feeding the planning baseline.
|
|
27284
|
+
* Manager-only; throws if the phase isn't in the `scenario` state.
|
|
27285
|
+
*/
|
|
27286
|
+
async lockPhase(id) {
|
|
27287
|
+
const res = await apiFetch(config2, `/pm/phases/${id}/lock`, {
|
|
27288
|
+
method: "POST"
|
|
27289
|
+
});
|
|
27290
|
+
return unwrap("lock phase", res);
|
|
27291
|
+
},
|
|
27292
|
+
/**
|
|
27293
|
+
* Activate a proposed phase into the project's live primary (scenario-
|
|
27294
|
+
* planner slice 1): `proposed → active`. Demotes any existing primary to
|
|
27295
|
+
* `proposed`. Manager-only; throws if the phase isn't in the `proposed`
|
|
27296
|
+
* state.
|
|
27297
|
+
*/
|
|
27298
|
+
async activatePhase(id) {
|
|
27299
|
+
const res = await apiFetch(config2, `/pm/phases/${id}/activate`, {
|
|
27300
|
+
method: "POST"
|
|
27301
|
+
});
|
|
27302
|
+
return unwrap("activate phase", res);
|
|
27303
|
+
},
|
|
27281
27304
|
async deletePhase(id) {
|
|
27282
27305
|
const res = await apiFetch(config2, `/pm/phases/${id}`, {
|
|
27283
27306
|
method: "DELETE"
|
|
@@ -27330,6 +27353,11 @@ function createPmResource(config2) {
|
|
|
27330
27353
|
* Patch the per-phase intent for a feature in a phase (#446 stage 2).
|
|
27331
27354
|
* Edits the through-table row's `targetStage`, `phaseDescription`, and/or
|
|
27332
27355
|
* `linearEpicUrl`. Server returns the updated membership row.
|
|
27356
|
+
*
|
|
27357
|
+
* Editing a membership inside a LOCKED phase (state `proposed`/`active`)
|
|
27358
|
+
* ripples through downstream baselines on the next read, so it requires
|
|
27359
|
+
* `force: true` (scenario-planner slice 1); without it the server rejects
|
|
27360
|
+
* with 409. Ignored for scenario/completed phases.
|
|
27333
27361
|
*/
|
|
27334
27362
|
async updatePhaseFeature(phaseId, featureId, patch) {
|
|
27335
27363
|
const res = await apiFetch(config2, `/pm/phases/${phaseId}/features/${featureId}`, { method: "PATCH", body: JSON.stringify(patch) });
|
|
@@ -53525,6 +53553,29 @@ function createPmResource2(config2) {
|
|
|
53525
53553
|
});
|
|
53526
53554
|
return unwrap2("close phase", res);
|
|
53527
53555
|
},
|
|
53556
|
+
/**
|
|
53557
|
+
* Lock a scenario into a proposed phase (scenario-planner slice 1):
|
|
53558
|
+
* `scenario → proposed`. The phase starts feeding the planning baseline.
|
|
53559
|
+
* Manager-only; throws if the phase isn't in the `scenario` state.
|
|
53560
|
+
*/
|
|
53561
|
+
async lockPhase(id) {
|
|
53562
|
+
const res = await apiFetch2(config2, `/pm/phases/${id}/lock`, {
|
|
53563
|
+
method: "POST"
|
|
53564
|
+
});
|
|
53565
|
+
return unwrap2("lock phase", res);
|
|
53566
|
+
},
|
|
53567
|
+
/**
|
|
53568
|
+
* Activate a proposed phase into the project's live primary (scenario-
|
|
53569
|
+
* planner slice 1): `proposed → active`. Demotes any existing primary to
|
|
53570
|
+
* `proposed`. Manager-only; throws if the phase isn't in the `proposed`
|
|
53571
|
+
* state.
|
|
53572
|
+
*/
|
|
53573
|
+
async activatePhase(id) {
|
|
53574
|
+
const res = await apiFetch2(config2, `/pm/phases/${id}/activate`, {
|
|
53575
|
+
method: "POST"
|
|
53576
|
+
});
|
|
53577
|
+
return unwrap2("activate phase", res);
|
|
53578
|
+
},
|
|
53528
53579
|
async deletePhase(id) {
|
|
53529
53580
|
const res = await apiFetch2(config2, `/pm/phases/${id}`, {
|
|
53530
53581
|
method: "DELETE"
|
|
@@ -53577,6 +53628,11 @@ function createPmResource2(config2) {
|
|
|
53577
53628
|
* Patch the per-phase intent for a feature in a phase (#446 stage 2).
|
|
53578
53629
|
* Edits the through-table row's `targetStage`, `phaseDescription`, and/or
|
|
53579
53630
|
* `linearEpicUrl`. Server returns the updated membership row.
|
|
53631
|
+
*
|
|
53632
|
+
* Editing a membership inside a LOCKED phase (state `proposed`/`active`)
|
|
53633
|
+
* ripples through downstream baselines on the next read, so it requires
|
|
53634
|
+
* `force: true` (scenario-planner slice 1); without it the server rejects
|
|
53635
|
+
* with 409. Ignored for scenario/completed phases.
|
|
53580
53636
|
*/
|
|
53581
53637
|
async updatePhaseFeature(phaseId, featureId, patch) {
|
|
53582
53638
|
const res = await apiFetch2(config2, `/pm/phases/${phaseId}/features/${featureId}`, { method: "PATCH", body: JSON.stringify(patch) });
|
|
@@ -54846,7 +54902,7 @@ function registerPhaseTools(server, getClient2) {
|
|
|
54846
54902
|
"update_phase",
|
|
54847
54903
|
{
|
|
54848
54904
|
title: "Update phase",
|
|
54849
|
-
description: "Patches fields on an existing phase. Pass only the fields you want to change. Common uses: rename, switch target shape, override or clear the computed current shape, set or clear primary, mark a phase closed/reopened. The PM should review the proposed change before this is called \u2014 this is a write operation. Setting closedAt non-null forces isActive=false + isPrimary=false; setting isActive=false also clears isPrimary.",
|
|
54905
|
+
description: "Patches fields on an existing phase. Pass only the fields you want to change. Common uses: rename, switch target shape, override or clear the computed current shape, set or clear primary, mark a phase closed/reopened. The PM should review the proposed change before this is called \u2014 this is a write operation. Setting closedAt non-null forces isActive=false + isPrimary=false; setting isActive=false also clears isPrimary. Editing a LOCKED phase (state active/proposed) requires force=true.",
|
|
54850
54906
|
inputSchema: {
|
|
54851
54907
|
id: external_exports.string().uuid().describe("Phase id from list_phases or create_phase."),
|
|
54852
54908
|
name: external_exports.string().min(1).optional(),
|
|
@@ -54866,6 +54922,9 @@ function registerPhaseTools(server, getClient2) {
|
|
|
54866
54922
|
),
|
|
54867
54923
|
jumpDurationWeeks: external_exports.number().positive().optional().describe(
|
|
54868
54924
|
"Override the project default jump duration for this phase, in weeks. Tighter (0.25-0.5) for fast iteration / proof-of-concept; longer (2-3) for hardening. The audit will eventually flag mismatches between jump duration and per-feature target stages."
|
|
54925
|
+
),
|
|
54926
|
+
force: external_exports.boolean().optional().describe(
|
|
54927
|
+
"Set true to edit a LOCKED phase (state active or proposed). Locked phases feed the planning baseline, so an edit recomputes every downstream phase/scenario \u2014 the server rejects with 409 unless force=true. Not needed for scenario (draft) phases."
|
|
54869
54928
|
)
|
|
54870
54929
|
}
|
|
54871
54930
|
},
|
|
@@ -54912,7 +54971,7 @@ Mandatory caller behavior: present the phase's name + id + active/closed status
|
|
|
54912
54971
|
"update_phase_feature",
|
|
54913
54972
|
{
|
|
54914
54973
|
title: "Update phase-feature membership",
|
|
54915
|
-
description: "Edits the per-phase intent for a feature in a phase: targetStage (what this phase aims to bring the feature to), phaseDescription (PM-authored note about what this jump means in this phase), linearEpicUrl (per-phase Linear epic), status (per-phase status \u2014 a feature can be done in one phase and in_progress in another). The same feature can have different per-phase values across phases. Use after assign_feature_to_phase when the PM wants per-membership values different from the feature-row defaults. The PM should review the proposed change before this is called \u2014 this is a write operation. Pass linearEpicUrl=null to clear the per-phase Linear link.",
|
|
54974
|
+
description: "Edits the per-phase intent for a feature in a phase: targetStage (what this phase aims to bring the feature to), phaseDescription (PM-authored note about what this jump means in this phase), linearEpicUrl (per-phase Linear epic), status (per-phase status \u2014 a feature can be done in one phase and in_progress in another). The same feature can have different per-phase values across phases. Use after assign_feature_to_phase when the PM wants per-membership values different from the feature-row defaults. The PM should review the proposed change before this is called \u2014 this is a write operation. Pass linearEpicUrl=null to clear the per-phase Linear link. Editing a membership in a LOCKED phase (state active/proposed) requires force=true.",
|
|
54916
54975
|
inputSchema: {
|
|
54917
54976
|
phaseId: external_exports.string().uuid().describe("Phase id from list_phases."),
|
|
54918
54977
|
featureId: external_exports.string().uuid().describe("Feature id of the membership to edit."),
|
|
@@ -54927,6 +54986,9 @@ Mandatory caller behavior: present the phase's name + id + active/closed status
|
|
|
54927
54986
|
),
|
|
54928
54987
|
status: external_exports.enum(["not_started", "in_progress", "done", "canceled"]).optional().describe(
|
|
54929
54988
|
"Per-phase status (#446 stage 7). Lets a feature be 'done' in a closed phase while still 'in_progress' in the active phase. Use this to resolve the close-phase warning when work for that phase is actually complete."
|
|
54989
|
+
),
|
|
54990
|
+
force: external_exports.boolean().optional().describe(
|
|
54991
|
+
"Set true to edit a membership in a LOCKED phase (state active or proposed). Without it the server rejects with 409, because editing a locked phase recomputes downstream planning baselines. Not needed for scenario (draft) phases."
|
|
54930
54992
|
)
|
|
54931
54993
|
}
|
|
54932
54994
|
},
|
package/package.json
CHANGED