@cleocode/cleo 2026.5.11 → 2026.5.13
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/cli/index.js +431 -3
- package/dist/cli/index.js.map +3 -3
- package/package.json +9 -9
package/dist/cli/index.js
CHANGED
|
@@ -9608,6 +9608,363 @@ var init_registry = __esm({
|
|
|
9608
9608
|
description: "Task ID whose worktree should be pruned (omit for bulk prune)"
|
|
9609
9609
|
}
|
|
9610
9610
|
]
|
|
9611
|
+
},
|
|
9612
|
+
// ---------------------------------------------------------------------------
|
|
9613
|
+
// Sentient domain — T1726 SDK surface parity
|
|
9614
|
+
//
|
|
9615
|
+
// Sentient ops were dispatched via SentientHandler (registered under 'sentient'
|
|
9616
|
+
// in the DomainHandler map) but absent from OPERATIONS, making them invisible
|
|
9617
|
+
// to public SDK consumers using @cleocode/core. Adding all 10 ops here.
|
|
9618
|
+
// ---------------------------------------------------------------------------
|
|
9619
|
+
// sentient query: propose.list
|
|
9620
|
+
{
|
|
9621
|
+
gateway: "query",
|
|
9622
|
+
domain: "sentient",
|
|
9623
|
+
operation: "propose.list",
|
|
9624
|
+
description: "sentient.propose.list (query) \u2014 list all pending Tier-2 proposals (status=proposed)",
|
|
9625
|
+
tier: 2,
|
|
9626
|
+
idempotent: true,
|
|
9627
|
+
sessionRequired: false,
|
|
9628
|
+
requiredParams: [],
|
|
9629
|
+
params: [
|
|
9630
|
+
{
|
|
9631
|
+
name: "limit",
|
|
9632
|
+
type: "number",
|
|
9633
|
+
required: false,
|
|
9634
|
+
description: "Maximum number of proposals to return (default: 50)"
|
|
9635
|
+
}
|
|
9636
|
+
]
|
|
9637
|
+
},
|
|
9638
|
+
// sentient query: propose.diff
|
|
9639
|
+
{
|
|
9640
|
+
gateway: "query",
|
|
9641
|
+
domain: "sentient",
|
|
9642
|
+
operation: "propose.diff",
|
|
9643
|
+
description: "sentient.propose.diff (query) \u2014 show what a proposal would change (Tier-3 stub)",
|
|
9644
|
+
tier: 2,
|
|
9645
|
+
idempotent: true,
|
|
9646
|
+
sessionRequired: false,
|
|
9647
|
+
requiredParams: ["id"],
|
|
9648
|
+
params: [
|
|
9649
|
+
{
|
|
9650
|
+
name: "id",
|
|
9651
|
+
type: "string",
|
|
9652
|
+
required: true,
|
|
9653
|
+
description: "Proposal task ID",
|
|
9654
|
+
cli: { positional: true }
|
|
9655
|
+
}
|
|
9656
|
+
]
|
|
9657
|
+
},
|
|
9658
|
+
// sentient query: allowlist.list
|
|
9659
|
+
{
|
|
9660
|
+
gateway: "query",
|
|
9661
|
+
domain: "sentient",
|
|
9662
|
+
operation: "allowlist.list",
|
|
9663
|
+
description: "sentient.allowlist.list (query) \u2014 list owner pubkeys in the sentient allowlist",
|
|
9664
|
+
tier: 2,
|
|
9665
|
+
idempotent: true,
|
|
9666
|
+
sessionRequired: false,
|
|
9667
|
+
requiredParams: [],
|
|
9668
|
+
params: []
|
|
9669
|
+
},
|
|
9670
|
+
// sentient mutate: propose.accept
|
|
9671
|
+
{
|
|
9672
|
+
gateway: "mutate",
|
|
9673
|
+
domain: "sentient",
|
|
9674
|
+
operation: "propose.accept",
|
|
9675
|
+
description: "sentient.propose.accept (mutate) \u2014 accept a Tier-2 proposal, transitioning proposed \u2192 pending",
|
|
9676
|
+
tier: 2,
|
|
9677
|
+
idempotent: false,
|
|
9678
|
+
sessionRequired: false,
|
|
9679
|
+
requiredParams: ["id"],
|
|
9680
|
+
params: [
|
|
9681
|
+
{
|
|
9682
|
+
name: "id",
|
|
9683
|
+
type: "string",
|
|
9684
|
+
required: true,
|
|
9685
|
+
description: "Proposal task ID to accept",
|
|
9686
|
+
cli: { positional: true }
|
|
9687
|
+
}
|
|
9688
|
+
]
|
|
9689
|
+
},
|
|
9690
|
+
// sentient mutate: propose.reject
|
|
9691
|
+
{
|
|
9692
|
+
gateway: "mutate",
|
|
9693
|
+
domain: "sentient",
|
|
9694
|
+
operation: "propose.reject",
|
|
9695
|
+
description: "sentient.propose.reject (mutate) \u2014 reject a Tier-2 proposal, transitioning proposed \u2192 cancelled",
|
|
9696
|
+
tier: 2,
|
|
9697
|
+
idempotent: false,
|
|
9698
|
+
sessionRequired: false,
|
|
9699
|
+
requiredParams: ["id"],
|
|
9700
|
+
params: [
|
|
9701
|
+
{
|
|
9702
|
+
name: "id",
|
|
9703
|
+
type: "string",
|
|
9704
|
+
required: true,
|
|
9705
|
+
description: "Proposal task ID to reject",
|
|
9706
|
+
cli: { positional: true }
|
|
9707
|
+
},
|
|
9708
|
+
{
|
|
9709
|
+
name: "reason",
|
|
9710
|
+
type: "string",
|
|
9711
|
+
required: false,
|
|
9712
|
+
description: "Human-readable reason for rejection"
|
|
9713
|
+
}
|
|
9714
|
+
]
|
|
9715
|
+
},
|
|
9716
|
+
// sentient mutate: propose.run
|
|
9717
|
+
{
|
|
9718
|
+
gateway: "mutate",
|
|
9719
|
+
domain: "sentient",
|
|
9720
|
+
operation: "propose.run",
|
|
9721
|
+
description: "sentient.propose.run (mutate) \u2014 manually trigger a single Tier-2 propose tick in-process",
|
|
9722
|
+
tier: 2,
|
|
9723
|
+
idempotent: false,
|
|
9724
|
+
sessionRequired: false,
|
|
9725
|
+
requiredParams: [],
|
|
9726
|
+
params: []
|
|
9727
|
+
},
|
|
9728
|
+
// sentient mutate: propose.enable
|
|
9729
|
+
{
|
|
9730
|
+
gateway: "mutate",
|
|
9731
|
+
domain: "sentient",
|
|
9732
|
+
operation: "propose.enable",
|
|
9733
|
+
description: "sentient.propose.enable (mutate) \u2014 enable Tier-2 autonomous proposal generation (M7 gate)",
|
|
9734
|
+
tier: 2,
|
|
9735
|
+
idempotent: true,
|
|
9736
|
+
sessionRequired: false,
|
|
9737
|
+
requiredParams: [],
|
|
9738
|
+
params: []
|
|
9739
|
+
},
|
|
9740
|
+
// sentient mutate: propose.disable
|
|
9741
|
+
{
|
|
9742
|
+
gateway: "mutate",
|
|
9743
|
+
domain: "sentient",
|
|
9744
|
+
operation: "propose.disable",
|
|
9745
|
+
description: "sentient.propose.disable (mutate) \u2014 disable Tier-2 autonomous proposal generation",
|
|
9746
|
+
tier: 2,
|
|
9747
|
+
idempotent: true,
|
|
9748
|
+
sessionRequired: false,
|
|
9749
|
+
requiredParams: [],
|
|
9750
|
+
params: []
|
|
9751
|
+
},
|
|
9752
|
+
// sentient mutate: allowlist.add
|
|
9753
|
+
{
|
|
9754
|
+
gateway: "mutate",
|
|
9755
|
+
domain: "sentient",
|
|
9756
|
+
operation: "allowlist.add",
|
|
9757
|
+
description: "sentient.allowlist.add (mutate) \u2014 add a base64-encoded owner pubkey to the sentient allowlist",
|
|
9758
|
+
tier: 2,
|
|
9759
|
+
idempotent: true,
|
|
9760
|
+
sessionRequired: false,
|
|
9761
|
+
requiredParams: ["pubkey"],
|
|
9762
|
+
params: [
|
|
9763
|
+
{
|
|
9764
|
+
name: "pubkey",
|
|
9765
|
+
type: "string",
|
|
9766
|
+
required: true,
|
|
9767
|
+
description: "Base64-encoded public key to add"
|
|
9768
|
+
}
|
|
9769
|
+
]
|
|
9770
|
+
},
|
|
9771
|
+
// sentient mutate: allowlist.remove
|
|
9772
|
+
{
|
|
9773
|
+
gateway: "mutate",
|
|
9774
|
+
domain: "sentient",
|
|
9775
|
+
operation: "allowlist.remove",
|
|
9776
|
+
description: "sentient.allowlist.remove (mutate) \u2014 remove a base64-encoded owner pubkey from the sentient allowlist",
|
|
9777
|
+
tier: 2,
|
|
9778
|
+
idempotent: true,
|
|
9779
|
+
sessionRequired: false,
|
|
9780
|
+
requiredParams: ["pubkey"],
|
|
9781
|
+
params: [
|
|
9782
|
+
{
|
|
9783
|
+
name: "pubkey",
|
|
9784
|
+
type: "string",
|
|
9785
|
+
required: true,
|
|
9786
|
+
description: "Base64-encoded public key to remove"
|
|
9787
|
+
}
|
|
9788
|
+
]
|
|
9789
|
+
},
|
|
9790
|
+
// ---------------------------------------------------------------------------
|
|
9791
|
+
// Release domain — T1726 SDK surface parity
|
|
9792
|
+
//
|
|
9793
|
+
// Release ops dispatched via ReleaseHandler (registered under 'release' in
|
|
9794
|
+
// the DomainHandler map) were absent from OPERATIONS. Adding gate +
|
|
9795
|
+
// ivtr-suggest (the two ops ReleaseHandler serves) plus the canonical
|
|
9796
|
+
// 4-step pipeline ops (start, verify, publish, reconcile) introduced by
|
|
9797
|
+
// T1597 / ADR-063 that route through the core release module directly.
|
|
9798
|
+
// ---------------------------------------------------------------------------
|
|
9799
|
+
// release query: gate
|
|
9800
|
+
{
|
|
9801
|
+
gateway: "query",
|
|
9802
|
+
domain: "release",
|
|
9803
|
+
operation: "gate",
|
|
9804
|
+
description: "release.gate (query) \u2014 check all IVTR loops in a release epic have reached the released phase before allowing release.ship (T820 RELEASE-03)",
|
|
9805
|
+
tier: 1,
|
|
9806
|
+
idempotent: true,
|
|
9807
|
+
sessionRequired: false,
|
|
9808
|
+
requiredParams: ["epicId"],
|
|
9809
|
+
params: [
|
|
9810
|
+
{
|
|
9811
|
+
name: "epicId",
|
|
9812
|
+
type: "string",
|
|
9813
|
+
required: true,
|
|
9814
|
+
description: "Epic ID whose child tasks should be inspected"
|
|
9815
|
+
},
|
|
9816
|
+
{
|
|
9817
|
+
name: "force",
|
|
9818
|
+
type: "boolean",
|
|
9819
|
+
required: false,
|
|
9820
|
+
description: "Bypass the IVTR gate \u2014 requires explicit owner confirmation"
|
|
9821
|
+
}
|
|
9822
|
+
]
|
|
9823
|
+
},
|
|
9824
|
+
// release mutate: gate
|
|
9825
|
+
{
|
|
9826
|
+
gateway: "mutate",
|
|
9827
|
+
domain: "release",
|
|
9828
|
+
operation: "gate",
|
|
9829
|
+
description: "release.gate (mutate) \u2014 same IVTR gate check as query.gate; safe in both gateways (no DB writes)",
|
|
9830
|
+
tier: 1,
|
|
9831
|
+
idempotent: true,
|
|
9832
|
+
sessionRequired: false,
|
|
9833
|
+
requiredParams: ["epicId"],
|
|
9834
|
+
params: [
|
|
9835
|
+
{
|
|
9836
|
+
name: "epicId",
|
|
9837
|
+
type: "string",
|
|
9838
|
+
required: true,
|
|
9839
|
+
description: "Epic ID whose child tasks should be inspected"
|
|
9840
|
+
},
|
|
9841
|
+
{
|
|
9842
|
+
name: "force",
|
|
9843
|
+
type: "boolean",
|
|
9844
|
+
required: false,
|
|
9845
|
+
description: "Bypass the IVTR gate \u2014 requires explicit owner confirmation"
|
|
9846
|
+
}
|
|
9847
|
+
]
|
|
9848
|
+
},
|
|
9849
|
+
// release query: ivtr-suggest
|
|
9850
|
+
{
|
|
9851
|
+
gateway: "query",
|
|
9852
|
+
domain: "release",
|
|
9853
|
+
operation: "ivtr-suggest",
|
|
9854
|
+
description: "release.ivtr-suggest (query) \u2014 check if all epic tasks are released and suggest cleo release ship (T820 RELEASE-07)",
|
|
9855
|
+
tier: 1,
|
|
9856
|
+
idempotent: true,
|
|
9857
|
+
sessionRequired: false,
|
|
9858
|
+
requiredParams: ["taskId"],
|
|
9859
|
+
params: [
|
|
9860
|
+
{
|
|
9861
|
+
name: "taskId",
|
|
9862
|
+
type: "string",
|
|
9863
|
+
required: true,
|
|
9864
|
+
description: "Task ID that just reached the released phase"
|
|
9865
|
+
}
|
|
9866
|
+
]
|
|
9867
|
+
},
|
|
9868
|
+
// release mutate: ivtr-suggest
|
|
9869
|
+
{
|
|
9870
|
+
gateway: "mutate",
|
|
9871
|
+
domain: "release",
|
|
9872
|
+
operation: "ivtr-suggest",
|
|
9873
|
+
description: "release.ivtr-suggest (mutate) \u2014 same auto-suggest as query.ivtr-suggest; safe in both gateways (no DB writes)",
|
|
9874
|
+
tier: 1,
|
|
9875
|
+
idempotent: true,
|
|
9876
|
+
sessionRequired: false,
|
|
9877
|
+
requiredParams: ["taskId"],
|
|
9878
|
+
params: [
|
|
9879
|
+
{
|
|
9880
|
+
name: "taskId",
|
|
9881
|
+
type: "string",
|
|
9882
|
+
required: true,
|
|
9883
|
+
description: "Task ID that just reached the released phase"
|
|
9884
|
+
}
|
|
9885
|
+
]
|
|
9886
|
+
},
|
|
9887
|
+
// release mutate: start (T1597 / ADR-063 canonical step 1)
|
|
9888
|
+
{
|
|
9889
|
+
gateway: "mutate",
|
|
9890
|
+
domain: "release",
|
|
9891
|
+
operation: "start",
|
|
9892
|
+
description: "release.start (mutate) \u2014 Step 1 of 4: validate version, capture branch, persist release handle (T1597 / ADR-063)",
|
|
9893
|
+
tier: 1,
|
|
9894
|
+
idempotent: false,
|
|
9895
|
+
sessionRequired: false,
|
|
9896
|
+
requiredParams: ["version"],
|
|
9897
|
+
params: [
|
|
9898
|
+
{
|
|
9899
|
+
name: "version",
|
|
9900
|
+
type: "string",
|
|
9901
|
+
required: true,
|
|
9902
|
+
description: "Version to release (e.g. 2026.5.4)",
|
|
9903
|
+
cli: { positional: true }
|
|
9904
|
+
},
|
|
9905
|
+
{
|
|
9906
|
+
name: "epicId",
|
|
9907
|
+
type: "string",
|
|
9908
|
+
required: false,
|
|
9909
|
+
description: "Epic ID this release ships"
|
|
9910
|
+
},
|
|
9911
|
+
{
|
|
9912
|
+
name: "branch",
|
|
9913
|
+
type: "string",
|
|
9914
|
+
required: false,
|
|
9915
|
+
description: "Override detected branch"
|
|
9916
|
+
}
|
|
9917
|
+
]
|
|
9918
|
+
},
|
|
9919
|
+
// release query: verify (T1597 / ADR-063 canonical step 2)
|
|
9920
|
+
{
|
|
9921
|
+
gateway: "query",
|
|
9922
|
+
domain: "release",
|
|
9923
|
+
operation: "verify",
|
|
9924
|
+
description: "release.verify (query) \u2014 Step 2 of 4: run gates + audit child tasks of the active release epic (T1597 / ADR-063)",
|
|
9925
|
+
tier: 1,
|
|
9926
|
+
idempotent: true,
|
|
9927
|
+
sessionRequired: false,
|
|
9928
|
+
requiredParams: [],
|
|
9929
|
+
params: []
|
|
9930
|
+
},
|
|
9931
|
+
// release mutate: publish (T1597 / ADR-063 canonical step 3)
|
|
9932
|
+
{
|
|
9933
|
+
gateway: "mutate",
|
|
9934
|
+
domain: "release",
|
|
9935
|
+
operation: "publish",
|
|
9936
|
+
description: "release.publish (mutate) \u2014 Step 3 of 4: invoke project-context publish.command to publish the release artifact (T1597 / ADR-063)",
|
|
9937
|
+
tier: 1,
|
|
9938
|
+
idempotent: false,
|
|
9939
|
+
sessionRequired: false,
|
|
9940
|
+
requiredParams: [],
|
|
9941
|
+
params: [
|
|
9942
|
+
{
|
|
9943
|
+
name: "dryRun",
|
|
9944
|
+
type: "boolean",
|
|
9945
|
+
required: false,
|
|
9946
|
+
description: "Print command without executing"
|
|
9947
|
+
}
|
|
9948
|
+
]
|
|
9949
|
+
},
|
|
9950
|
+
// release mutate: reconcile (T1597 / ADR-063 canonical step 4)
|
|
9951
|
+
{
|
|
9952
|
+
gateway: "mutate",
|
|
9953
|
+
domain: "release",
|
|
9954
|
+
operation: "reconcile",
|
|
9955
|
+
description: "release.reconcile (mutate) \u2014 Step 4 of 4: run post-release invariants, auto-complete tasks for the active release (T1597 / ADR-063)",
|
|
9956
|
+
tier: 1,
|
|
9957
|
+
idempotent: false,
|
|
9958
|
+
sessionRequired: false,
|
|
9959
|
+
requiredParams: [],
|
|
9960
|
+
params: [
|
|
9961
|
+
{
|
|
9962
|
+
name: "dryRun",
|
|
9963
|
+
type: "boolean",
|
|
9964
|
+
required: false,
|
|
9965
|
+
description: "Preview without mutations"
|
|
9966
|
+
}
|
|
9967
|
+
]
|
|
9611
9968
|
}
|
|
9612
9969
|
];
|
|
9613
9970
|
counts = getCounts();
|
|
@@ -9957,6 +10314,7 @@ __export(engine_exports, {
|
|
|
9957
10314
|
lifecycleReset: () => lifecycleReset,
|
|
9958
10315
|
lifecycleSkip: () => lifecycleSkip,
|
|
9959
10316
|
lifecycleStatus: () => lifecycleStatus,
|
|
10317
|
+
loadActiveReleaseHandle: () => loadActiveReleaseHandle,
|
|
9960
10318
|
mapCodebase: () => mapCodebase,
|
|
9961
10319
|
memoryBrainStats: () => memoryBrainStats,
|
|
9962
10320
|
memoryContradictions: () => memoryContradictions,
|
|
@@ -10035,12 +10393,16 @@ __export(engine_exports, {
|
|
|
10035
10393
|
releaseIvtrAutoSuggest: () => releaseIvtrAutoSuggest,
|
|
10036
10394
|
releaseList: () => releaseList,
|
|
10037
10395
|
releasePrepare: () => releasePrepare,
|
|
10396
|
+
releasePublish: () => releasePublish,
|
|
10038
10397
|
releasePush: () => releasePush,
|
|
10398
|
+
releaseReconcile: () => releaseReconcile,
|
|
10039
10399
|
releaseRollback: () => releaseRollback,
|
|
10040
10400
|
releaseRollbackFull: () => releaseRollbackFull,
|
|
10041
10401
|
releaseShip: () => releaseShip,
|
|
10042
10402
|
releaseShow: () => releaseShow,
|
|
10403
|
+
releaseStart: () => releaseStart,
|
|
10043
10404
|
releaseTag: () => releaseTag,
|
|
10405
|
+
releaseVerify: () => releaseVerify,
|
|
10044
10406
|
sessionArchive: () => sessionArchive,
|
|
10045
10407
|
sessionBriefing: () => sessionBriefing,
|
|
10046
10408
|
sessionChainShow: () => sessionChainShow,
|
|
@@ -10165,6 +10527,7 @@ import {
|
|
|
10165
10527
|
lifecycleReset,
|
|
10166
10528
|
lifecycleSkip,
|
|
10167
10529
|
lifecycleStatus,
|
|
10530
|
+
loadActiveReleaseHandle,
|
|
10168
10531
|
mapCodebase,
|
|
10169
10532
|
orchestrateAnalyze,
|
|
10170
10533
|
orchestrateBootstrap,
|
|
@@ -10212,12 +10575,16 @@ import {
|
|
|
10212
10575
|
releaseIvtrAutoSuggest,
|
|
10213
10576
|
releaseList,
|
|
10214
10577
|
releasePrepare,
|
|
10578
|
+
releasePublish,
|
|
10215
10579
|
releasePush,
|
|
10580
|
+
releaseReconcile,
|
|
10216
10581
|
releaseRollback,
|
|
10217
10582
|
releaseRollbackFull,
|
|
10218
10583
|
releaseShip,
|
|
10219
10584
|
releaseShow,
|
|
10585
|
+
releaseStart,
|
|
10220
10586
|
releaseTag,
|
|
10587
|
+
releaseVerify,
|
|
10221
10588
|
sessionArchive,
|
|
10222
10589
|
sessionBriefing,
|
|
10223
10590
|
sessionChainShow,
|
|
@@ -23986,6 +24353,7 @@ var init_release2 = __esm({
|
|
|
23986
24353
|
"use strict";
|
|
23987
24354
|
init_engine();
|
|
23988
24355
|
init_base();
|
|
24356
|
+
init_meta2();
|
|
23989
24357
|
log2 = getLogger11("domain:release");
|
|
23990
24358
|
coreOps3 = {
|
|
23991
24359
|
gate: releaseGateOp,
|
|
@@ -24001,6 +24369,7 @@ var init_release2 = __esm({
|
|
|
24001
24369
|
* Supported operations:
|
|
24002
24370
|
* - `gate` — check IVTR phase state for all tasks in a release epic
|
|
24003
24371
|
* - `ivtr-suggest` — check if all epic tasks are released and suggest `release ship`
|
|
24372
|
+
* - `verify` — Step 2 of 4: run gates + audit child tasks (T1597 / ADR-063)
|
|
24004
24373
|
*/
|
|
24005
24374
|
async query(operation, params) {
|
|
24006
24375
|
const startTime = Date.now();
|
|
@@ -24043,6 +24412,16 @@ var init_release2 = __esm({
|
|
|
24043
24412
|
startTime
|
|
24044
24413
|
);
|
|
24045
24414
|
}
|
|
24415
|
+
// release.verify — Step 2 of 4: run gates + audit child tasks (T1597 / ADR-063)
|
|
24416
|
+
case "verify": {
|
|
24417
|
+
const handle = loadActiveReleaseHandle(getProjectRoot11());
|
|
24418
|
+
const result = await releaseVerify(handle);
|
|
24419
|
+
return {
|
|
24420
|
+
success: true,
|
|
24421
|
+
data: result,
|
|
24422
|
+
meta: dispatchMeta("query", "release", operation, startTime)
|
|
24423
|
+
};
|
|
24424
|
+
}
|
|
24046
24425
|
default:
|
|
24047
24426
|
return unsupportedOp("query", "release", operation, startTime);
|
|
24048
24427
|
}
|
|
@@ -24064,6 +24443,9 @@ var init_release2 = __esm({
|
|
|
24064
24443
|
* Supported operations:
|
|
24065
24444
|
* - `gate` — same IVTR gate check as query.gate (no DB writes)
|
|
24066
24445
|
* - `ivtr-suggest` — same auto-suggest as query.ivtr-suggest (no DB writes)
|
|
24446
|
+
* - `start` — Step 1 of 4: validate version, capture branch, persist handle
|
|
24447
|
+
* - `publish` — Step 3 of 4: invoke project-context publish.command
|
|
24448
|
+
* - `reconcile` — Step 4 of 4: run post-release invariants, auto-complete tasks
|
|
24067
24449
|
*/
|
|
24068
24450
|
async mutate(operation, params) {
|
|
24069
24451
|
const startTime = Date.now();
|
|
@@ -24106,6 +24488,52 @@ var init_release2 = __esm({
|
|
|
24106
24488
|
startTime
|
|
24107
24489
|
);
|
|
24108
24490
|
}
|
|
24491
|
+
// release.start — Step 1 of 4 (T1597 / ADR-063)
|
|
24492
|
+
case "start": {
|
|
24493
|
+
const version = typeof params?.version === "string" ? params.version : void 0;
|
|
24494
|
+
if (!version)
|
|
24495
|
+
return errorResult(
|
|
24496
|
+
"mutate",
|
|
24497
|
+
"release",
|
|
24498
|
+
operation,
|
|
24499
|
+
"E_INVALID_INPUT",
|
|
24500
|
+
"version is required",
|
|
24501
|
+
startTime
|
|
24502
|
+
);
|
|
24503
|
+
const result = await releaseStart(version, {
|
|
24504
|
+
epicId: typeof params?.epicId === "string" ? params.epicId : void 0,
|
|
24505
|
+
branch: typeof params?.branch === "string" ? params.branch : void 0
|
|
24506
|
+
});
|
|
24507
|
+
return {
|
|
24508
|
+
success: true,
|
|
24509
|
+
data: result,
|
|
24510
|
+
meta: dispatchMeta("mutate", "release", operation, startTime)
|
|
24511
|
+
};
|
|
24512
|
+
}
|
|
24513
|
+
// release.publish — Step 3 of 4 (T1597 / ADR-063)
|
|
24514
|
+
case "publish": {
|
|
24515
|
+
const handle = loadActiveReleaseHandle(getProjectRoot11());
|
|
24516
|
+
const result = await releasePublish(handle, {
|
|
24517
|
+
dryRun: typeof params?.dryRun === "boolean" ? params.dryRun : false
|
|
24518
|
+
});
|
|
24519
|
+
return {
|
|
24520
|
+
success: true,
|
|
24521
|
+
data: result,
|
|
24522
|
+
meta: dispatchMeta("mutate", "release", operation, startTime)
|
|
24523
|
+
};
|
|
24524
|
+
}
|
|
24525
|
+
// release.reconcile — Step 4 of 4 (T1597 / ADR-063)
|
|
24526
|
+
case "reconcile": {
|
|
24527
|
+
const handle = loadActiveReleaseHandle(getProjectRoot11());
|
|
24528
|
+
const result = await releaseReconcile(handle, {
|
|
24529
|
+
dryRun: typeof params?.dryRun === "boolean" ? params.dryRun : false
|
|
24530
|
+
});
|
|
24531
|
+
return {
|
|
24532
|
+
success: true,
|
|
24533
|
+
data: result,
|
|
24534
|
+
meta: dispatchMeta("mutate", "release", operation, startTime)
|
|
24535
|
+
};
|
|
24536
|
+
}
|
|
24109
24537
|
default:
|
|
24110
24538
|
return unsupportedOp("mutate", "release", operation, startTime);
|
|
24111
24539
|
}
|
|
@@ -24120,8 +24548,8 @@ var init_release2 = __esm({
|
|
|
24120
24548
|
/** Return declared operations for introspection and registry validation. */
|
|
24121
24549
|
getSupportedOperations() {
|
|
24122
24550
|
return {
|
|
24123
|
-
query: ["gate", "ivtr-suggest"],
|
|
24124
|
-
mutate: ["gate", "ivtr-suggest"]
|
|
24551
|
+
query: ["gate", "ivtr-suggest", "verify"],
|
|
24552
|
+
mutate: ["gate", "ivtr-suggest", "start", "publish", "reconcile"]
|
|
24125
24553
|
};
|
|
24126
24554
|
}
|
|
24127
24555
|
};
|
|
@@ -42353,7 +42781,7 @@ var analyzeCommand3 = defineCommand({
|
|
|
42353
42781
|
try {
|
|
42354
42782
|
const { runGitLogTaskLinker } = await import("@cleocode/core/nexus");
|
|
42355
42783
|
const sweeperResult = await runGitLogTaskLinker(repoPath);
|
|
42356
|
-
if (
|
|
42784
|
+
if (sweeperResult.commitsProcessed > 0) {
|
|
42357
42785
|
process.stderr.write(
|
|
42358
42786
|
`[nexus] Task-symbol sweep: ${sweeperResult.commitsProcessed} commit(s), ${sweeperResult.tasksFound} task(s), ${sweeperResult.linked} edge(s) linked.
|
|
42359
42787
|
`
|