@smartmemory/compose 0.3.4-beta → 0.3.6-beta
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/bin/judgment-import.js +565 -0
- package/contracts/judgment-record.schema.json +400 -0
- package/dist/assets/{App-BG92y_CY.js → App-BG3ngu8H.js} +92 -92
- package/dist/assets/{abnfDiagram-VRR7QNED-Bip6cMjP.js → abnfDiagram-VRR7QNED-CjB_sD3D.js} +1 -1
- package/dist/assets/{arc-CyMTM07c.js → arc-_v4hR_uD.js} +1 -1
- package/dist/assets/{architectureDiagram-ZJ3FMSHR-BukV0CJw.js → architectureDiagram-ZJ3FMSHR-DreJmzXQ.js} +1 -1
- package/dist/assets/{blockDiagram-677ZJIJ3-Bjb_MNB4.js → blockDiagram-677ZJIJ3-BG9-c0O1.js} +1 -1
- package/dist/assets/{c4Diagram-LMCZKHZV-CUmTCrMW.js → c4Diagram-LMCZKHZV-DZf45Fbz.js} +1 -1
- package/dist/assets/channel-B3U5wFAT.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-Cyvi1AFH.js → chunk-2Q5K7J3B-Dn1spZYu.js} +1 -1
- package/dist/assets/{chunk-32BRIVSS-B1y5FpOd.js → chunk-32BRIVSS-pURGrJDk.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-Qw-L7OoJ.js → chunk-5VM5RSS4-BY4_PV5H.js} +1 -1
- package/dist/assets/{chunk-EX3LRPZG-G_MZEji_.js → chunk-EX3LRPZG-DdELs1qP.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-DQFs7gjy.js → chunk-JWPE2WC7-_7ujgd_Q.js} +1 -1
- package/dist/assets/{chunk-MOJQB5TN-CQZQYMcz.js → chunk-MOJQB5TN-D-ky35G-.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-CmAda4sZ.js → chunk-RYQCIY6F-Dag_kVlO.js} +1 -1
- package/dist/assets/{chunk-V7JOEXUC-CbjBz-Ek.js → chunk-V7JOEXUC-BtewURat.js} +1 -1
- package/dist/assets/{chunk-VR4S4FIN-Dvhgnm7E.js → chunk-VR4S4FIN-Dt9NZ67m.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-CSdt06Hp.js → chunk-XXDRQBXY-DfdVhbmA.js} +1 -1
- package/dist/assets/classDiagram-OUVF2IWQ-B6fCN-ht.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-B6fCN-ht.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-G8l05tXy.js → cose-bilkent-JH36ORCC-BieYif4o.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-C3n1PNJC.js → cynefin-VYW2F7L2-CT2BA6KE.js} +1 -1
- package/dist/assets/{cynefinDiagram-TSTJHNR4-C8N_CvKJ.js → cynefinDiagram-TSTJHNR4-Bh6exbyg.js} +1 -1
- package/dist/assets/{dagre-VKFMJZFB-B2pkwDhN.js → dagre-VKFMJZFB-aXMLSmQL.js} +1 -1
- package/dist/assets/{diagram-FQU43EPY-DPHD_t-1.js → diagram-FQU43EPY-Dr7JAOuQ.js} +1 -1
- package/dist/assets/{diagram-G47NLZAW-DGmHIZRr.js → diagram-G47NLZAW-DUvA3FQK.js} +1 -1
- package/dist/assets/{diagram-NH7WQ7WH-BlLWwKVt.js → diagram-NH7WQ7WH-BQUARqcu.js} +1 -1
- package/dist/assets/{diagram-OA4YK3LP-DEv704Re.js → diagram-OA4YK3LP-dDUc1zHi.js} +1 -1
- package/dist/assets/{diagram-WEI45ONY-Bj6PGUCe.js → diagram-WEI45ONY-B2h5Qlb1.js} +1 -1
- package/dist/assets/{ebnfDiagram-CCIWWBDH-Ch-icksT.js → ebnfDiagram-CCIWWBDH-DThRGupB.js} +1 -1
- package/dist/assets/{erDiagram-Q63AITRT-CI3lwEFA.js → erDiagram-Q63AITRT-BUCsprO2.js} +1 -1
- package/dist/assets/{flowDiagram-23GEKE2U-DcUANpAz.js → flowDiagram-23GEKE2U-DXtNNi6r.js} +1 -1
- package/dist/assets/{ganttDiagram-NO4QXBWP-Cy0Ie8KS.js → ganttDiagram-NO4QXBWP-D4zbBHh_.js} +1 -1
- package/dist/assets/{gitGraphDiagram-IHSO6WYX-BswI52az.js → gitGraphDiagram-IHSO6WYX-DpoQws0W.js} +1 -1
- package/dist/assets/{index-B1H7-G2y.js → index-3ZH5eMcZ.js} +2 -2
- package/dist/assets/{infoDiagram-FWYZ7A6U-BBunqvr-.js → infoDiagram-FWYZ7A6U-Bbas2GAo.js} +1 -1
- package/dist/assets/{ishikawaDiagram-FXEZZL3T-Hm4zSDlM.js → ishikawaDiagram-FXEZZL3T-CzEB9fQS.js} +1 -1
- package/dist/assets/{journeyDiagram-5HDEW3XC-CIqcTFuO.js → journeyDiagram-5HDEW3XC-Bz8TCdz2.js} +1 -1
- package/dist/assets/{kanban-definition-HUTT4EX6-CB9jCXj_.js → kanban-definition-HUTT4EX6-tozrMoV_.js} +1 -1
- package/dist/assets/{linear-CsXqv70E.js → linear-Ck7gpa5N.js} +1 -1
- package/dist/assets/{mindmap-definition-LN4V7U3C-CpqH5F_P.js → mindmap-definition-LN4V7U3C-DTcHO0DJ.js} +1 -1
- package/dist/assets/{pegDiagram-2B236MQR-HpQyrDcm.js → pegDiagram-2B236MQR-CHiINrNy.js} +1 -1
- package/dist/assets/{pieDiagram-ENE6RG2P-xkcpHwnY.js → pieDiagram-ENE6RG2P-CfS4YFlR.js} +1 -1
- package/dist/assets/{quadrantDiagram-ABIIQ3AL-kebZIOmu.js → quadrantDiagram-ABIIQ3AL-CadesS9w.js} +1 -1
- package/dist/assets/{railroadDiagram-RFXS5EU6-DNvGwWm9.js → railroadDiagram-RFXS5EU6-CgWEspBN.js} +1 -1
- package/dist/assets/{requirementDiagram-TGXJPOKE-D1lG1P7h.js → requirementDiagram-TGXJPOKE-bnI2zJeT.js} +1 -1
- package/dist/assets/{sankeyDiagram-HTMAVEWB-DOEEcn52.js → sankeyDiagram-HTMAVEWB-YWKFgOGw.js} +1 -1
- package/dist/assets/{sequenceDiagram-DBY2YBRQ-DynIVCk_.js → sequenceDiagram-DBY2YBRQ-BvkNOyF9.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-DJXFjUUL.js → sizeCapture-X5ZJPWSS-DlFPA2yO.js} +1 -1
- package/dist/assets/{stateDiagram-2N3HPSRC-OZ7trFh5.js → stateDiagram-2N3HPSRC-h8NIx0kQ.js} +1 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-DjPgZtJ9.js +1 -0
- package/dist/assets/{swimlanes-5IMT3BWC-DULYAFmB.js → swimlanes-5IMT3BWC-CT5n22kG.js} +2 -2
- package/dist/assets/swimlanesDiagram-G3AALYLV-Dn318Bhq.js +8 -0
- package/dist/assets/{timeline-definition-FHXFAJF6-CzqqUDvt.js → timeline-definition-FHXFAJF6-D267GQFF.js} +1 -1
- package/dist/assets/{vennDiagram-L72KCM5P-CdKmtcFL.js → vennDiagram-L72KCM5P-Dj-wWLYG.js} +1 -1
- package/dist/assets/{wardleyDiagram-EHGQE667-DknGwjCA.js → wardleyDiagram-EHGQE667-BxCeYxkG.js} +1 -1
- package/dist/assets/{xychartDiagram-FW5EYKEG-DdYyKfQ3.js → xychartDiagram-FW5EYKEG-DMFqWn7z.js} +1 -1
- package/dist/index.html +1 -1
- package/lib/idempotency.js +33 -8
- package/lib/judgment/schema.js +23 -0
- package/lib/judgment/store/index.js +49 -0
- package/lib/judgment/store/records.js +246 -0
- package/lib/judgment-gen.js +342 -0
- package/lib/judgment-write-guard.js +230 -0
- package/lib/judgment-writer.js +877 -0
- package/lib/lifecycle-modes.js +42 -0
- package/package.json +1 -1
- package/server/compose-mcp-tools.js +34 -0
- package/server/compose-mcp.js +125 -0
- package/server/mcp-tool-policy.js +1 -0
- package/dist/assets/channel-BzkmtaLy.js +0 -1
- package/dist/assets/classDiagram-OUVF2IWQ-BIvLcbex.js +0 -1
- package/dist/assets/classDiagram-v2-EOCWNBFH-BIvLcbex.js +0 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-GcPRHAJT.js +0 -1
- package/dist/assets/swimlanesDiagram-G3AALYLV-BB0gCy01.js +0 -8
package/lib/lifecycle-modes.js
CHANGED
|
@@ -136,6 +136,48 @@ export const LIFECYCLE_MODES = {
|
|
|
136
136
|
defaultTemplate: 'plan',
|
|
137
137
|
},
|
|
138
138
|
},
|
|
139
|
+
|
|
140
|
+
// -------------------------------------------------------------------------
|
|
141
|
+
// JUDGMENT — the joint state machine (COMP-JUDGMENT-WRITER design Decision 2).
|
|
142
|
+
// Consumed ONLY by lib/judgment-writer.js through guardedTransition(mode:
|
|
143
|
+
// 'judgment'), which makes the Stratum guard the single lifecycle authority
|
|
144
|
+
// for joint transitions where capabilities.guard is on. The per-edge required
|
|
145
|
+
// ARTIFACTS (resolution packages, dissolution, reopen, re-dispose) are
|
|
146
|
+
// enforced by lib/judgment-write-guard.js before the guard is called —
|
|
147
|
+
// edgeEvidence stays empty because the evidence lives inside records, not in
|
|
148
|
+
// per-feature files. Never run by any CLI runner; the runner block is inert.
|
|
149
|
+
//
|
|
150
|
+
// KNOWN SUPERSET: buildPhaseGraph() unconditionally adds `resolved →
|
|
151
|
+
// complete` and `<non-terminal> → killed` edges to every registered graph
|
|
152
|
+
// (an adapter invariant this feature may not touch). Those five extra edges
|
|
153
|
+
// are UNREACHABLE through the judgment writer — the write-guard's edge→
|
|
154
|
+
// artifact table refuses them before any guard call — and the parity test
|
|
155
|
+
// pins the superset to exactly that auto-added set. Closing them at the
|
|
156
|
+
// guard itself is epic S4–S6 enforcement territory.
|
|
157
|
+
// -------------------------------------------------------------------------
|
|
158
|
+
judgment: {
|
|
159
|
+
transitions: {
|
|
160
|
+
open: ['under_test', 'superseded', 'dissolved'],
|
|
161
|
+
under_test: ['resolved', 'inconclusive', 'open', 'superseded', 'dissolved'],
|
|
162
|
+
resolved: ['open'],
|
|
163
|
+
inconclusive: ['under_test', 'open'],
|
|
164
|
+
},
|
|
165
|
+
skippable: [],
|
|
166
|
+
terminal: ['superseded', 'dissolved', 'complete', 'killed'],
|
|
167
|
+
genesis: 'open',
|
|
168
|
+
completablePhase: 'resolved',
|
|
169
|
+
phaseArtifacts: [],
|
|
170
|
+
edgeEvidence: {},
|
|
171
|
+
phaseOrder: ['open', 'under_test', 'resolved', 'inconclusive'],
|
|
172
|
+
runner: {
|
|
173
|
+
artifactRoot: 'docs/judgment/records/joints',
|
|
174
|
+
runsTriage: false,
|
|
175
|
+
tracksFeatureJson: false,
|
|
176
|
+
descriptionLoader: 'plan',
|
|
177
|
+
planInputs: 'plan',
|
|
178
|
+
defaultTemplate: 'plan',
|
|
179
|
+
},
|
|
180
|
+
},
|
|
139
181
|
};
|
|
140
182
|
|
|
141
183
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smartmemory/compose",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6-beta",
|
|
4
4
|
"description": "Structured AI dev pipeline — goal-to-product orchestration with gates, iteration loops, and feature lifecycle management.",
|
|
5
5
|
"author": "SmartMemory",
|
|
6
6
|
"license": "MIT",
|
|
@@ -806,6 +806,40 @@ export function toolGetWorkspace() {
|
|
|
806
806
|
|
|
807
807
|
export function _getBinding() { return _binding?.id ?? null; }
|
|
808
808
|
|
|
809
|
+
// ---------------------------------------------------------------------------
|
|
810
|
+
// Judgment writer — COMP-JUDGMENT-WRITER (S06)
|
|
811
|
+
// ---------------------------------------------------------------------------
|
|
812
|
+
|
|
813
|
+
export async function toolJudgmentPositionCreate(args) {
|
|
814
|
+
const { judgmentPositionCreate } = await import('../lib/judgment-writer.js');
|
|
815
|
+
return judgmentPositionCreate(getTargetRoot(), args);
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
export async function toolJudgmentPositionAmend(args) {
|
|
819
|
+
const { judgmentPositionAmend } = await import('../lib/judgment-writer.js');
|
|
820
|
+
return judgmentPositionAmend(getTargetRoot(), args);
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
export async function toolJudgmentJointAdd(args) {
|
|
824
|
+
const { judgmentJointAdd } = await import('../lib/judgment-writer.js');
|
|
825
|
+
return judgmentJointAdd(getTargetRoot(), args);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
export async function toolJudgmentTransition(args) {
|
|
829
|
+
const { judgmentTransition } = await import('../lib/judgment-writer.js');
|
|
830
|
+
return judgmentTransition(getTargetRoot(), args);
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
export async function toolJudgmentLedgerAppend(args) {
|
|
834
|
+
const { judgmentLedgerAppend } = await import('../lib/judgment-writer.js');
|
|
835
|
+
return judgmentLedgerAppend(getTargetRoot(), args);
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
export async function toolGetJudgmentState() {
|
|
839
|
+
const { getJudgmentState } = await import('../lib/judgment-writer.js');
|
|
840
|
+
return getJudgmentState(getTargetRoot());
|
|
841
|
+
}
|
|
842
|
+
|
|
809
843
|
// ---------------------------------------------------------------------------
|
|
810
844
|
// COMP-MCP-ENFORCE-1 — phase-scoped MCP tool gate (profile × phase)
|
|
811
845
|
//
|
package/server/compose-mcp.js
CHANGED
|
@@ -68,6 +68,12 @@ import {
|
|
|
68
68
|
toolGetWorkspace,
|
|
69
69
|
toolWriteCheckpoint,
|
|
70
70
|
toolComposeResume,
|
|
71
|
+
toolJudgmentPositionCreate,
|
|
72
|
+
toolJudgmentPositionAmend,
|
|
73
|
+
toolJudgmentJointAdd,
|
|
74
|
+
toolJudgmentTransition,
|
|
75
|
+
toolJudgmentLedgerAppend,
|
|
76
|
+
toolGetJudgmentState,
|
|
71
77
|
_getBinding,
|
|
72
78
|
assertToolPhaseAllowed,
|
|
73
79
|
_getSessionProfile,
|
|
@@ -681,6 +687,119 @@ const TOOLS = [
|
|
|
681
687
|
},
|
|
682
688
|
},
|
|
683
689
|
},
|
|
690
|
+
|
|
691
|
+
// -------------------------------------------------------------------------
|
|
692
|
+
// Judgment writer — COMP-JUDGMENT-WRITER (the only legitimate write path to
|
|
693
|
+
// docs/judgment canon; records canonical, markdown generated). Terse
|
|
694
|
+
// schemas by design (token budget); the writer self-validates against
|
|
695
|
+
// contracts/judgment-record.schema.json — inputSchema is advisory.
|
|
696
|
+
// -------------------------------------------------------------------------
|
|
697
|
+
{
|
|
698
|
+
name: 'judgment_position_create',
|
|
699
|
+
description: 'Create a judgment position revision (new chain, update, supersession via supersedes, or tombstone via retracted). ASSERT grounding requires an elicitation block. Provenance is writer-stamped.',
|
|
700
|
+
inputSchema: {
|
|
701
|
+
type: 'object',
|
|
702
|
+
required: ['slug', 'claims', 'conviction'],
|
|
703
|
+
properties: {
|
|
704
|
+
slug: { type: 'string' },
|
|
705
|
+
claims: { type: 'array', description: 'Claims: {id, text, grounding EXT|INT|ASSERT|DERIVED|AGENT, supports[], elicitation?}.' },
|
|
706
|
+
conviction: { type: 'object', description: '{level high|medium|low, source stated|inferred}' },
|
|
707
|
+
rejected_alternatives: { type: 'array', description: '{what, why}[]' },
|
|
708
|
+
supersedes: { type: 'string', description: '<slug>#r<N> being superseded.' },
|
|
709
|
+
retracted: { type: 'boolean', description: 'true → tombstone revision.' },
|
|
710
|
+
idempotency_key: { type: 'string' },
|
|
711
|
+
},
|
|
712
|
+
},
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
name: 'judgment_position_amend',
|
|
716
|
+
description: 'Scoped amendment (P6): new revision changing ONE claim\'s grounding and/or the conviction block. Anything else is supersession via judgment_position_create.',
|
|
717
|
+
inputSchema: {
|
|
718
|
+
type: 'object',
|
|
719
|
+
required: ['slug'],
|
|
720
|
+
properties: {
|
|
721
|
+
slug: { type: 'string' },
|
|
722
|
+
claim_id: { type: 'string' },
|
|
723
|
+
grounding: { type: 'string', description: 'New grounding for claim_id.' },
|
|
724
|
+
elicitation: { type: 'object', description: 'Required if new grounding is ASSERT.' },
|
|
725
|
+
conviction: { type: 'object' },
|
|
726
|
+
idempotency_key: { type: 'string' },
|
|
727
|
+
},
|
|
728
|
+
},
|
|
729
|
+
},
|
|
730
|
+
{
|
|
731
|
+
name: 'judgment_joint_add',
|
|
732
|
+
description: 'Add a judgment joint (born open). Both branches and a coarse cost bucket are required; EXT/STRADDLE method packages may be attached now or at dispose time.',
|
|
733
|
+
inputSchema: {
|
|
734
|
+
type: 'object',
|
|
735
|
+
required: ['slug', 'question', 'branch_true', 'branch_false', 'resolve_by', 'cost', 'rank'],
|
|
736
|
+
properties: {
|
|
737
|
+
slug: { type: 'string' },
|
|
738
|
+
question: { type: 'string' },
|
|
739
|
+
branch_true: { type: 'string' },
|
|
740
|
+
branch_false: { type: 'string' },
|
|
741
|
+
resolve_by: { type: 'string', description: 'EXT|INT|CONSTRUCT|ASSERT|STRADDLE' },
|
|
742
|
+
cost: { type: 'string', description: 'hours|days|weeks|months' },
|
|
743
|
+
rank: { type: 'string', description: 'high|medium' },
|
|
744
|
+
ext: { type: 'object', description: 'EXT package: {sharpened_question, bar, falsifier} or {judgment_dispatch: true, reason}.' },
|
|
745
|
+
straddle: { type: 'object', description: '{discriminating_signal, kill_criteria}' },
|
|
746
|
+
flags: { type: 'array' },
|
|
747
|
+
idempotency_key: { type: 'string' },
|
|
748
|
+
},
|
|
749
|
+
},
|
|
750
|
+
},
|
|
751
|
+
{
|
|
752
|
+
name: 'judgment_transition',
|
|
753
|
+
description: 'Joint state machine (edge→artifact table enforced; Stratum-guarded where capabilities.guard). Provide the target state plus its required artifact (resolution/dissolution/reopen/redispose), and/or a rank change (atomic rank ledger event).',
|
|
754
|
+
inputSchema: {
|
|
755
|
+
type: 'object',
|
|
756
|
+
required: ['slug'],
|
|
757
|
+
properties: {
|
|
758
|
+
slug: { type: 'string' },
|
|
759
|
+
to: { type: 'string', description: 'open|under_test|resolved|inconclusive|superseded|dissolved' },
|
|
760
|
+
resolution: { type: 'object', description: '{outcome resolved|inconclusive|failed_to_run|superseded, …outcome-specific fields, ext_result?, elicitation?}' },
|
|
761
|
+
dissolution: { type: 'object', description: '{decomposed_into[]}' },
|
|
762
|
+
reopen: { type: 'object', description: '{shaken_evidence_ref} (P6)' },
|
|
763
|
+
redispose: { type: 'object', description: '{new_resolve_by, ext?, straddle?} (retry inconclusive with a different method)' },
|
|
764
|
+
ext: { type: 'object', description: 'EXT package attached at dispose time.' },
|
|
765
|
+
straddle: { type: 'object' },
|
|
766
|
+
rank: { type: 'object', description: '{to: high|medium}' },
|
|
767
|
+
idempotency_key: { type: 'string' },
|
|
768
|
+
},
|
|
769
|
+
},
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
name: 'judgment_ledger_append',
|
|
773
|
+
description: 'Append a judgment ledger event (kind-specific required fields enforced: commit-decide needs trigger+open_joints+prediction; postmortem needs recall_verdict+attribution and grades prediction_ref; override needs reason). Commit/CONSTRUCT events spawn prediction records.',
|
|
774
|
+
inputSchema: {
|
|
775
|
+
type: 'object',
|
|
776
|
+
required: ['kind', 'title'],
|
|
777
|
+
properties: {
|
|
778
|
+
kind: { type: 'string', description: 'decide|kill|override|escalate|calibrate|postmortem|rank|note|correct|open' },
|
|
779
|
+
title: { type: 'string' },
|
|
780
|
+
body: { type: 'string' },
|
|
781
|
+
refs: { type: 'array' },
|
|
782
|
+
rejected: { type: 'array' },
|
|
783
|
+
conviction: { type: 'object' },
|
|
784
|
+
trigger: { type: 'string', description: 'On decide: earned|forced|exhausted (marks a commit-moment decide).' },
|
|
785
|
+
open_joints: { type: 'array' },
|
|
786
|
+
prediction: { type: 'object', description: '{text, outcome_criteria}' },
|
|
787
|
+
disposition: { type: 'string', description: 'Method disposed with; CONSTRUCT requires prediction.' },
|
|
788
|
+
recall_verdict: { type: 'string' },
|
|
789
|
+
attribution: { type: 'string' },
|
|
790
|
+
prediction_ref: { type: 'string' },
|
|
791
|
+
prediction_grade: { type: 'string', description: 'right|right-wrong-reason|wrong' },
|
|
792
|
+
reason: { type: 'string' },
|
|
793
|
+
anchor: { type: 'string', description: 'On note: projection anchor (register-header, joint:<slug>, …).' },
|
|
794
|
+
idempotency_key: { type: 'string' },
|
|
795
|
+
},
|
|
796
|
+
},
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
name: 'get_judgment_state',
|
|
800
|
+
description: 'Judgment canon snapshot: positions (derived status), joints, under-test, open predictions, recent ledger. Replays pending transition intents first.',
|
|
801
|
+
inputSchema: { type: 'object', properties: {} },
|
|
802
|
+
},
|
|
684
803
|
];
|
|
685
804
|
|
|
686
805
|
// ---------------------------------------------------------------------------
|
|
@@ -774,6 +893,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
774
893
|
case 'propose_followup': result = await toolProposeFollowup(args); break;
|
|
775
894
|
case 'write_checkpoint': result = await toolWriteCheckpoint(args); break;
|
|
776
895
|
case 'compose_resume': result = await toolComposeResume(args); break;
|
|
896
|
+
case 'judgment_position_create': result = await toolJudgmentPositionCreate(args); break;
|
|
897
|
+
case 'judgment_position_amend': result = await toolJudgmentPositionAmend(args); break;
|
|
898
|
+
case 'judgment_joint_add': result = await toolJudgmentJointAdd(args); break;
|
|
899
|
+
case 'judgment_transition': result = await toolJudgmentTransition(args); break;
|
|
900
|
+
case 'judgment_ledger_append': result = await toolJudgmentLedgerAppend(args); break;
|
|
901
|
+
case 'get_judgment_state': result = await toolGetJudgmentState(args); break;
|
|
777
902
|
// agent_run removed — STRAT-DEDUP-AGENTRUN v1. Use mcp__stratum__stratum_agent_run.
|
|
778
903
|
default:
|
|
779
904
|
return {
|
|
@@ -36,6 +36,7 @@ const REVIEWER_ALLOW = [
|
|
|
36
36
|
'get_pending_gates', 'get_changelog_entries', 'get_journal_entries', 'get_completions',
|
|
37
37
|
'validate_feature', 'validate_project', 'roadmap_diff', 'get_roadmap', 'roadmap_graph_check', 'assess_feature_artifacts',
|
|
38
38
|
'set_workspace', 'get_workspace', 'bind_session',
|
|
39
|
+
'get_judgment_state', // COMP-JUDGMENT-WRITER: read-only; the five judgment write tools stay reviewer-denied
|
|
39
40
|
];
|
|
40
41
|
|
|
41
42
|
export const PROFILE_POLICY = {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ag as o,ah as n}from"./App-BG92y_CY.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-V7JOEXUC-CbjBz-Ek.js";import{_ as i}from"./App-BG92y_CY.js";import"./chunk-5VM5RSS4-Qw-L7OoJ.js";import"./chunk-XXDRQBXY-CSdt06Hp.js";import"./chunk-VR4S4FIN-Dvhgnm7E.js";import"./chunk-32BRIVSS-B1y5FpOd.js";import"./mobile-CaoXUwAr.js";import"./index-B1H7-G2y.js";import"./graph-BXPQrYYB.js";var b={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-V7JOEXUC-CbjBz-Ek.js";import{_ as i}from"./App-BG92y_CY.js";import"./chunk-5VM5RSS4-Qw-L7OoJ.js";import"./chunk-XXDRQBXY-CSdt06Hp.js";import"./chunk-VR4S4FIN-Dvhgnm7E.js";import"./chunk-32BRIVSS-B1y5FpOd.js";import"./mobile-CaoXUwAr.js";import"./index-B1H7-G2y.js";import"./graph-BXPQrYYB.js";var b={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as r,b as e,a,S as s}from"./chunk-EX3LRPZG-G_MZEji_.js";import{_ as i}from"./App-BG92y_CY.js";import"./chunk-XXDRQBXY-CSdt06Hp.js";import"./chunk-VR4S4FIN-Dvhgnm7E.js";import"./chunk-32BRIVSS-B1y5FpOd.js";import"./mobile-CaoXUwAr.js";import"./index-B1H7-G2y.js";import"./graph-BXPQrYYB.js";var b={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{c as r,s as e}from"./flowDiagram-23GEKE2U-DcUANpAz.js";import{_ as a}from"./App-BG92y_CY.js";import"./chunk-5VM5RSS4-Qw-L7OoJ.js";import"./chunk-XXDRQBXY-CSdt06Hp.js";import"./chunk-VR4S4FIN-Dvhgnm7E.js";import"./chunk-32BRIVSS-B1y5FpOd.js";import"./channel-BzkmtaLy.js";import"./mobile-CaoXUwAr.js";import"./index-B1H7-G2y.js";import"./graph-BXPQrYYB.js";var o=a(t=>`${e(t)}
|
|
2
|
-
.swimlane.cluster rect {
|
|
3
|
-
stroke: ${t.clusterBorder} !important;
|
|
4
|
-
}
|
|
5
|
-
[data-look="neo"].cluster rect {
|
|
6
|
-
filter: none;
|
|
7
|
-
}
|
|
8
|
-
`,"getStyles"),m=o,_=r({defaultLayout:"swimlane",styles:m});export{_ as diagram};
|