@milehimikey/em 1.21.0 → 1.22.1
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/.claude/agents/em-implementer.md +10 -0
- package/.claude/agents/em-validator.md +1 -0
- package/.claude/skills/event-modeling/SKILL.md +1 -1
- package/.claude/skills/event-modeling-conform/SKILL.md +7 -4
- package/.claude/skills/event-modeling-conform/reference/conform.md +82 -4
- package/.claude/skills/event-modeling-design/SKILL.md +5 -2
- package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
- package/.claude/skills/event-modeling-engagement/SKILL.md +1 -1
- package/.claude/skills/event-modeling-engagement/reference/engagement.md +1 -0
- package/.claude/skills/event-modeling-implement/SKILL.md +5 -3
- package/.claude/skills/event-modeling-implement/reference/implement.md +14 -0
- package/.claude/skills/event-modeling-review/SKILL.md +1 -1
- package/.claude/skills/event-modeling-shared/reference/em-dsl.md +55 -6
- package/.claude/skills/event-modeling-shared/reference/operating-principles.md +26 -15
- package/.claude-plugin/marketplace.json +2 -2
- package/dist/cli/api.d.ts +136 -9
- package/dist/cli/api.js +278 -27
- package/dist/cli/api.js.map +1 -1
- package/dist/cli/bindings.d.ts +152 -0
- package/dist/cli/bindings.js +462 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/conformScope.d.ts +32 -0
- package/dist/cli/conformScope.js +68 -5
- package/dist/cli/conformScope.js.map +1 -1
- package/dist/cli/engagement.d.ts +24 -1
- package/dist/cli/engagement.js +50 -6
- package/dist/cli/engagement.js.map +1 -1
- package/dist/cli/engagementBrief.d.ts +127 -0
- package/dist/cli/engagementBrief.js +313 -0
- package/dist/cli/engagementBrief.js.map +1 -0
- package/dist/cli/engagementFile.d.ts +14 -0
- package/dist/cli/engagementFile.js +54 -0
- package/dist/cli/engagementFile.js.map +1 -1
- package/dist/cli/scopeInputs.js +2 -2
- package/dist/cli/scopeInputs.js.map +1 -1
- package/dist/cli/status.d.ts +5 -0
- package/dist/cli/status.js +1 -0
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/upgrade.js +9 -10
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli.js +143 -11
- package/dist/cli.js.map +1 -1
- package/dist/emit/api.d.ts +26 -1
- package/dist/emit/api.js +183 -25
- package/dist/emit/api.js.map +1 -1
- package/dist/emit/apiSurfaceJson.d.ts +3 -0
- package/dist/emit/apiSurfaceJson.js +43 -0
- package/dist/emit/apiSurfaceJson.js.map +1 -0
- package/dist/emit/diffJson.d.ts +1 -1
- package/dist/emit/diffJson.js +20 -1
- package/dist/emit/diffJson.js.map +1 -1
- package/dist/emit/engagementJson.d.ts +8 -3
- package/dist/emit/engagementJson.js +31 -4
- package/dist/emit/engagementJson.js.map +1 -1
- package/dist/emit/json.d.ts +42 -1
- package/dist/emit/json.js +65 -6
- package/dist/emit/json.js.map +1 -1
- package/dist/mcp/server.js +92 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/diff.d.ts +19 -1
- package/dist/model/diff.js +99 -0
- package/dist/model/diff.js.map +1 -1
- package/dist/model/model.d.ts +105 -9
- package/dist/model/model.js +116 -20
- package/dist/model/model.js.map +1 -1
- package/dist/model/refs.d.ts +4 -0
- package/dist/model/refs.js +35 -1
- package/dist/model/refs.js.map +1 -1
- package/dist/model/rules.d.ts +61 -0
- package/dist/model/rules.js +72 -0
- package/dist/model/rules.js.map +1 -1
- package/dist/model/validate.js +137 -4
- package/dist/model/validate.js.map +1 -1
- package/dist/parser/ast.d.ts +30 -0
- package/dist/parser/parser.js +67 -1
- package/dist/parser/parser.js.map +1 -1
- package/dist/render/sliceDiagram.js +6 -0
- package/dist/render/sliceDiagram.js.map +1 -1
- package/dist/render/storylineDiagram.js +6 -0
- package/dist/render/storylineDiagram.js.map +1 -1
- package/dist/system/adaptation.d.ts +5 -2
- package/dist/system/adaptation.js +5 -3
- package/dist/system/adaptation.js.map +1 -1
- package/dist/templates.d.ts +4 -0
- package/dist/templates.js +29 -0
- package/dist/templates.js.map +1 -1
- package/package.json +2 -1
- package/plugin/.claude-plugin/plugin.json +2 -2
- package/plugin/agents/em-implementer.md +10 -0
- package/plugin/agents/em-validator.md +1 -0
- package/plugin/shared/reference/em-dsl.md +55 -6
- package/plugin/shared/reference/operating-principles.md +26 -15
- package/plugin/skills/conform/SKILL.md +7 -4
- package/plugin/skills/conform/reference/conform.md +82 -4
- package/plugin/skills/design/SKILL.md +5 -2
- package/plugin/skills/discover/SKILL.md +1 -1
- package/plugin/skills/engagement/SKILL.md +1 -1
- package/plugin/skills/engagement/reference/engagement.md +1 -0
- package/plugin/skills/event-modeling/SKILL.md +1 -1
- package/plugin/skills/implement/SKILL.md +5 -3
- package/plugin/skills/implement/reference/implement.md +14 -0
- package/plugin/skills/review/SKILL.md +1 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { NormalizedModel } from "../model/model.js";
|
|
2
|
+
import { RefsResult } from "../model/refs.js";
|
|
3
|
+
/** What `engagement brief` needs beyond `{file, model, refs}` — no readiness/diagnostics input
|
|
4
|
+
* (unlike `plan`): the brief describes the slice, it never judges whether it's ready to build. */
|
|
5
|
+
export interface EngagementBriefModelInput {
|
|
6
|
+
file: string;
|
|
7
|
+
model: NormalizedModel;
|
|
8
|
+
refs: RefsResult;
|
|
9
|
+
baseDir: string;
|
|
10
|
+
}
|
|
11
|
+
export interface BriefElementSummary {
|
|
12
|
+
/** Bare `<kind>.<slug>` (docs/bindings.md's ref shape) — no `<sliceKey>/` prefix: the brief
|
|
13
|
+
* already names the one slice every one of these elements belongs to. */
|
|
14
|
+
ref: string;
|
|
15
|
+
kind: string;
|
|
16
|
+
name: string;
|
|
17
|
+
public: boolean;
|
|
18
|
+
fields: Array<{
|
|
19
|
+
name: string;
|
|
20
|
+
type: string | null;
|
|
21
|
+
optional: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
/** An element on the OTHER side of a cross-unit edge — full qualified export ref (model-wide
|
|
25
|
+
* unambiguous), plus which engagement unit owns it. */
|
|
26
|
+
export interface BriefNeighborItem {
|
|
27
|
+
ref: string;
|
|
28
|
+
kind: string;
|
|
29
|
+
name: string;
|
|
30
|
+
unit: string;
|
|
31
|
+
}
|
|
32
|
+
export interface BriefRepeatedView {
|
|
33
|
+
/** The view's display name, as declared by this slice. */
|
|
34
|
+
view: string;
|
|
35
|
+
/** The other (textual) slice export keys where `view <this> again` reads it — every one of
|
|
36
|
+
* them folds (MIL-208) into this same unit, so none is a separate PR. */
|
|
37
|
+
instances: string[];
|
|
38
|
+
}
|
|
39
|
+
export interface BriefContextDoc {
|
|
40
|
+
/** As stored in the engagement file — repo-relative, exactly as given. */
|
|
41
|
+
path: string;
|
|
42
|
+
inline: boolean;
|
|
43
|
+
/** The file's full text when `inline` and it was found; null otherwise. */
|
|
44
|
+
content: string | null;
|
|
45
|
+
/** Null when `inline` is false (never checked in pointer mode — the same "stored as given,
|
|
46
|
+
* never checked at write time" posture the engagement file itself holds for `context:`). */
|
|
47
|
+
missing: boolean | null;
|
|
48
|
+
}
|
|
49
|
+
export interface EngagementBriefSlice {
|
|
50
|
+
key: string;
|
|
51
|
+
sliceName: string;
|
|
52
|
+
pattern: string;
|
|
53
|
+
docStatus: string | null;
|
|
54
|
+
tracking: string | null;
|
|
55
|
+
prTitle: string;
|
|
56
|
+
/** The MIL-280 convention: every slice branch is `impl/<key>`, cut from and targeting `main`. */
|
|
57
|
+
branch: string;
|
|
58
|
+
base: string;
|
|
59
|
+
/** The Ledger's OWN recorded state/branch/base/pr (`em engagement set`) — branch/base/pr are
|
|
60
|
+
* null until a human or the lead has actually recorded them; `branch`/`base` above are the
|
|
61
|
+
* convention to follow when they're still null. */
|
|
62
|
+
ledgerState: string;
|
|
63
|
+
ledgerBranch: string | null;
|
|
64
|
+
ledgerBase: string | null;
|
|
65
|
+
ledgerPr: string | null;
|
|
66
|
+
doc: {
|
|
67
|
+
found: boolean;
|
|
68
|
+
path: string | null;
|
|
69
|
+
content: string | null;
|
|
70
|
+
};
|
|
71
|
+
/** Non-null only when `doc.found` is false: this slice's own elements/fields from the model,
|
|
72
|
+
* since there is no doc to read as the spec. */
|
|
73
|
+
fallbackElements: BriefElementSummary[] | null;
|
|
74
|
+
modelContext: {
|
|
75
|
+
consumes: BriefNeighborItem[];
|
|
76
|
+
produces: BriefNeighborItem[];
|
|
77
|
+
neighborUnits: string[];
|
|
78
|
+
repeatedViews: BriefRepeatedView[];
|
|
79
|
+
};
|
|
80
|
+
contract: {
|
|
81
|
+
publicTouching: boolean;
|
|
82
|
+
contractPath: string | null;
|
|
83
|
+
publicElements: BriefElementSummary[];
|
|
84
|
+
};
|
|
85
|
+
definitionOfDone: {
|
|
86
|
+
invariantIds: string[];
|
|
87
|
+
scenarioTitles: string[];
|
|
88
|
+
bindingsPath: string;
|
|
89
|
+
bindingsExample: string;
|
|
90
|
+
conformCheckCommand: string;
|
|
91
|
+
isolationNote: string;
|
|
92
|
+
prTitle: string;
|
|
93
|
+
};
|
|
94
|
+
context: BriefContextDoc[];
|
|
95
|
+
}
|
|
96
|
+
export interface EngagementBrief {
|
|
97
|
+
file: string;
|
|
98
|
+
engagement: string;
|
|
99
|
+
slug: string;
|
|
100
|
+
inlineContext: boolean;
|
|
101
|
+
slices: EngagementBriefSlice[];
|
|
102
|
+
}
|
|
103
|
+
export type BriefResult = {
|
|
104
|
+
ok: true;
|
|
105
|
+
brief: EngagementBrief;
|
|
106
|
+
} | {
|
|
107
|
+
ok: false;
|
|
108
|
+
message: string;
|
|
109
|
+
};
|
|
110
|
+
/** docs/bindings.md's minimal shape, filled in for this slice's own elements and invariant ids —
|
|
111
|
+
* `TODO` placeholders where only the implementer who writes the code knows the file/identifier.
|
|
112
|
+
* A template to complete, not a claim. */
|
|
113
|
+
export declare function buildBindingsExample(key: string, elements: BriefElementSummary[], invariantIds: string[]): string;
|
|
114
|
+
/** GH #454: the shared builder the CLI action and the MCP `engagement_brief` tool both call — one
|
|
115
|
+
* input, one document, byte-identical. Refusal posture matches `plan`: an unreadable/invalid
|
|
116
|
+
* engagement file or a model the engagement no longer matches (`missingKeys`) refuses with no
|
|
117
|
+
* partial brief. An unresolved `--slice` is passed through AS GIVEN (same GH #237 convention
|
|
118
|
+
* `engagement set`'s CLI action uses) so the "not in engagement" refusal below is what speaks,
|
|
119
|
+
* not a generic resolver error. */
|
|
120
|
+
export declare function engagementBriefFor(input: EngagementBriefModelInput, slug: string, opts?: {
|
|
121
|
+
sliceKey?: string | null;
|
|
122
|
+
inlineContext?: boolean;
|
|
123
|
+
}): BriefResult;
|
|
124
|
+
/** Text form: a self-contained brief per slice, each pasteable into its own ticket as-is, in
|
|
125
|
+
* engagement order. More than one is separated by a plain rule line (not nested under one
|
|
126
|
+
* shared heading) so each chunk still reads as its own document. */
|
|
127
|
+
export declare function formatEngagementBriefText(brief: EngagementBrief): string;
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// `em engagement brief` (GH #454): a deterministic, self-contained per-slice work brief for
|
|
3
|
+
// implementers em does not control — a ticket-driven cloud agent fed by Jira/Linear tickets, not
|
|
4
|
+
// an em-aware session. `em implement` hands such a session the slice doc plus a conversation's
|
|
5
|
+
// worth of context; this hands a ticket EVERYTHING it needs in one paste, built from machinery
|
|
6
|
+
// that already exists elsewhere so nothing here is re-derived or re-judged:
|
|
7
|
+
//
|
|
8
|
+
// - the spec: the bound slice doc, read the same way `readSliceDoc` always has, embedded
|
|
9
|
+
// verbatim — it IS the spec. No doc: the model's own elements/fields for the slice, loudly
|
|
10
|
+
// flagged as a gap rather than silently working around it.
|
|
11
|
+
// - model context: cross-unit edges (`model/edges.ts`, `loops-to` excluded — the same exclusion
|
|
12
|
+
// `engagement.ts`'s unit graph already uses) folded to engagement units exactly as
|
|
13
|
+
// `unitPredecessors`/`buildEngagementPlan` do, via the exported `unitOfElement`.
|
|
14
|
+
// - contract surface: `catalog/apiFirst.ts`'s `slicePublicTouching`/`contractPathFor` — the same
|
|
15
|
+
// gate `--slice-ready` and `em slice ratify` already enforce.
|
|
16
|
+
// - definition of done: the slice's own `INV-*` ids and authored scenario titles (the doc-side
|
|
17
|
+
// extraction `em engagement plan`'s pre-flight already uses), a filled-in skeleton of the
|
|
18
|
+
// bindings manifest (docs/bindings.md) scoped to this slice's own elements/invariants, the
|
|
19
|
+
// exact `em conform bindings check` verify line, and the resolved PR title (`resolvePrTitle`,
|
|
20
|
+
// the same helper `plan` calls).
|
|
21
|
+
// - context documents: the engagement's `context:` list (GH #455) — pointers by default,
|
|
22
|
+
// `--inline-context` embeds each file's full text (a missing file is a loud marker, never a
|
|
23
|
+
// crash — the same spirit as `plan`'s `context-missing` pre-flight).
|
|
24
|
+
//
|
|
25
|
+
// One brief per engagement slice (model/Ledger order) unless `--slice` narrows it to one. `--json`
|
|
26
|
+
// is the MCP `engagement_brief` tool's document, byte-for-byte (see emit/engagementJson.ts).
|
|
27
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
28
|
+
import { dirname, join } from "node:path";
|
|
29
|
+
import { collectModelInvariants } from "../model/model.js";
|
|
30
|
+
import { semanticEdges } from "../model/edges.js";
|
|
31
|
+
import { computeModelKey } from "../model/qualifiedRef.js";
|
|
32
|
+
import { slicePublicTouching } from "../catalog/apiFirst.js";
|
|
33
|
+
import { contractPathFor } from "./api.js";
|
|
34
|
+
import { readSliceDoc } from "../catalog/readSliceDoc.js";
|
|
35
|
+
import { docFolders } from "../catalog/docLocate.js";
|
|
36
|
+
import { authoredScenarios } from "../catalog/sliceSections.js";
|
|
37
|
+
import { extractInvariantIds } from "../catalog/invTokens.js";
|
|
38
|
+
import { loadEngagement } from "./engagementFile.js";
|
|
39
|
+
import { buildUnitIndex, effectiveTracking, missingKeys, missingMessage, resolvePrTitle, unitOfElement, SLICE_BASE } from "./engagement.js";
|
|
40
|
+
const ISOLATION_NOTE = "Touch nothing outside this slice's own scope: no edits to a sibling slice's code or tests, " +
|
|
41
|
+
"and no shared files beyond what the foundation PR already landed (implement.md §8). If the " +
|
|
42
|
+
"work needs something outside this boundary, stop and say so instead of reaching across it.";
|
|
43
|
+
function bareRef(fullRef, kind, name, sliceKey) {
|
|
44
|
+
if (fullRef === undefined)
|
|
45
|
+
return `${kind}.${name}`;
|
|
46
|
+
const prefix = `${sliceKey}/`;
|
|
47
|
+
return fullRef.startsWith(prefix) ? fullRef.slice(prefix.length) : fullRef;
|
|
48
|
+
}
|
|
49
|
+
function summarizeElement(el, refs, sliceKey) {
|
|
50
|
+
return {
|
|
51
|
+
ref: bareRef(refs.refById.get(el.id), el.kind, el.name, sliceKey),
|
|
52
|
+
kind: el.kind,
|
|
53
|
+
name: el.name,
|
|
54
|
+
public: el.public === true,
|
|
55
|
+
fields: (el.fields ?? []).map((f) => ({ name: f.name, type: f.type ?? null, optional: f.optional === true })),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** docs/bindings.md's minimal shape, filled in for this slice's own elements and invariant ids —
|
|
59
|
+
* `TODO` placeholders where only the implementer who writes the code knows the file/identifier.
|
|
60
|
+
* A template to complete, not a claim. */
|
|
61
|
+
export function buildBindingsExample(key, elements, invariantIds) {
|
|
62
|
+
const lines = [`bindingsSchemaVersion: "1.0"`, `slice: ${key}`, "elements:"];
|
|
63
|
+
if (elements.length === 0) {
|
|
64
|
+
lines.push(" []");
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
for (const el of elements)
|
|
68
|
+
lines.push(` - ref: ${el.ref}`, " file: TODO", " identifier: TODO");
|
|
69
|
+
}
|
|
70
|
+
lines.push("invariants:");
|
|
71
|
+
if (invariantIds.length === 0) {
|
|
72
|
+
lines.push(" []");
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
for (const id of invariantIds)
|
|
76
|
+
lines.push(` - id: ${id}`, " enforcedIn: {file: TODO, identifier: TODO}", " testedIn: {file: TODO, identifier: TODO}");
|
|
77
|
+
}
|
|
78
|
+
return lines.join("\n");
|
|
79
|
+
}
|
|
80
|
+
/** Where `slices/<key>.md` sits — root first, then any storyline folder (`catalog/docLocate.ts`'s
|
|
81
|
+
* own search order) — without resolving against the process's cwd, so the path is a pure
|
|
82
|
+
* function of `baseDir` (deterministic regardless of where the command runs from). */
|
|
83
|
+
function sliceDocDisplayPath(baseDir, key) {
|
|
84
|
+
const rel = `slices/${key}.md`;
|
|
85
|
+
for (const folder of docFolders(baseDir)) {
|
|
86
|
+
const candidate = join(baseDir, folder, rel);
|
|
87
|
+
if (existsSync(candidate))
|
|
88
|
+
return candidate;
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/** The slice's own model context: cross-UNIT edges only (same-unit pattern edges, and anything
|
|
93
|
+
* folded into this unit via `unitOfElement`, are internal and not "context"). `loops-to` is
|
|
94
|
+
* excluded, matching every other engagement graph read (it re-feeds an earlier read model, never
|
|
95
|
+
* a build or context dependency). */
|
|
96
|
+
function buildModelContext(model, refs, idx, key) {
|
|
97
|
+
const consumes = new Map();
|
|
98
|
+
const produces = new Map();
|
|
99
|
+
const neighborUnits = new Set();
|
|
100
|
+
for (const e of semanticEdges(model)) {
|
|
101
|
+
if (e.source === "loops-to")
|
|
102
|
+
continue;
|
|
103
|
+
const fromUnit = unitOfElement(model, idx, e.from);
|
|
104
|
+
const toUnit = unitOfElement(model, idx, e.to);
|
|
105
|
+
if (!fromUnit || !toUnit || fromUnit === toUnit)
|
|
106
|
+
continue;
|
|
107
|
+
if (toUnit === key) {
|
|
108
|
+
const el = model.byId.get(e.from);
|
|
109
|
+
if (el) {
|
|
110
|
+
const ref = refs.refById.get(el.id) ?? `${el.kind}.${el.name}`;
|
|
111
|
+
consumes.set(ref, { ref, kind: el.kind, name: el.name, unit: fromUnit });
|
|
112
|
+
neighborUnits.add(fromUnit);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (fromUnit === key) {
|
|
116
|
+
const el = model.byId.get(e.to);
|
|
117
|
+
if (el) {
|
|
118
|
+
const ref = refs.refById.get(el.id) ?? `${el.kind}.${el.name}`;
|
|
119
|
+
produces.set(ref, { ref, kind: el.kind, name: el.name, unit: toUnit });
|
|
120
|
+
neighborUnits.add(toUnit);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const order = (a, b) => (idx.sliceIndexOf.get(a) ?? 0) - (idx.sliceIndexOf.get(b) ?? 0);
|
|
125
|
+
const byRef = (a, b) => a.ref.localeCompare(b.ref);
|
|
126
|
+
const sliceIndex = idx.sliceIndexOf.get(key);
|
|
127
|
+
const repeatedViews = [];
|
|
128
|
+
if (sliceIndex !== undefined) {
|
|
129
|
+
for (const el of model.slices[sliceIndex].elements) {
|
|
130
|
+
if (el.kind !== "view" || el.again)
|
|
131
|
+
continue;
|
|
132
|
+
const instances = [
|
|
133
|
+
...new Set(model.elements.filter((x) => x.again === true && x.logicalId === el.id).map((x) => refs.sliceKeys[x.sliceIndex]).filter((s) => s !== undefined)),
|
|
134
|
+
];
|
|
135
|
+
if (instances.length > 0)
|
|
136
|
+
repeatedViews.push({ view: el.name, instances });
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
consumes: [...consumes.values()].sort(byRef),
|
|
141
|
+
produces: [...produces.values()].sort(byRef),
|
|
142
|
+
neighborUnits: [...neighborUnits].sort(order),
|
|
143
|
+
repeatedViews,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function buildContextDoc(path, inline) {
|
|
147
|
+
if (!inline)
|
|
148
|
+
return { path, inline: false, content: null, missing: null };
|
|
149
|
+
if (!existsSync(path))
|
|
150
|
+
return { path, inline: true, content: null, missing: true };
|
|
151
|
+
try {
|
|
152
|
+
return { path, inline: true, content: readFileSync(path, "utf8"), missing: false };
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return { path, inline: true, content: null, missing: true };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function buildSliceBrief(input, eng, idx, entry, inlineContext) {
|
|
159
|
+
const { model, refs, baseDir } = input;
|
|
160
|
+
const key = entry.key;
|
|
161
|
+
const sliceIndex = idx.sliceIndexOf.get(key);
|
|
162
|
+
const slice = model.slices[sliceIndex];
|
|
163
|
+
const sliceName = slice.name ?? key;
|
|
164
|
+
const tracking = effectiveTracking(idx.docTracking.get(key) ?? null, eng.tracking);
|
|
165
|
+
const prTitle = resolvePrTitle(eng.prTitle, tracking, sliceName, key);
|
|
166
|
+
const docPath = sliceDocDisplayPath(baseDir, key);
|
|
167
|
+
const doc = readSliceDoc(baseDir, key);
|
|
168
|
+
const ownElements = slice.elements.map((el) => summarizeElement(el, refs, key));
|
|
169
|
+
const invariantIds = doc ? extractInvariantIds(doc.body) : collectModelInvariants(model).filter((inv) => inv.element.sliceIndex === sliceIndex).map((inv) => inv.id);
|
|
170
|
+
const scenarioTitles = doc ? authoredScenarios(doc.body).map((s) => s.title) : [];
|
|
171
|
+
const publicTouching = slicePublicTouching(slice);
|
|
172
|
+
const contractPath = publicTouching ? contractPathFor(input.file, computeModelKey(model, input.file)) : null;
|
|
173
|
+
const publicElements = ownElements.filter((e) => e.public);
|
|
174
|
+
const bindingsPath = join(dirname(input.file), "conformance", "bindings", `${key}.yaml`);
|
|
175
|
+
const bindingsExample = buildBindingsExample(key, ownElements, invariantIds);
|
|
176
|
+
const conformCheckCommand = `em conform bindings check ${input.file} --repo <path-to-target-repo> --slice ${key} --exit-code`;
|
|
177
|
+
return {
|
|
178
|
+
key,
|
|
179
|
+
sliceName,
|
|
180
|
+
pattern: idx.pattern.get(key) ?? "unknown",
|
|
181
|
+
docStatus: idx.docStatus.get(key) ?? null,
|
|
182
|
+
tracking,
|
|
183
|
+
prTitle,
|
|
184
|
+
branch: `impl/${key}`,
|
|
185
|
+
base: SLICE_BASE,
|
|
186
|
+
ledgerState: entry.state,
|
|
187
|
+
ledgerBranch: entry.branch,
|
|
188
|
+
ledgerBase: entry.base,
|
|
189
|
+
ledgerPr: entry.pr,
|
|
190
|
+
doc: { found: doc !== null, path: docPath, content: doc ? doc.body.trim() : null },
|
|
191
|
+
fallbackElements: doc ? null : ownElements,
|
|
192
|
+
modelContext: buildModelContext(model, refs, idx, key),
|
|
193
|
+
contract: { publicTouching, contractPath, publicElements },
|
|
194
|
+
definitionOfDone: { invariantIds, scenarioTitles, bindingsPath, bindingsExample, conformCheckCommand, isolationNote: ISOLATION_NOTE, prTitle },
|
|
195
|
+
context: eng.context.map((path) => buildContextDoc(path, inlineContext)),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/** GH #454: the shared builder the CLI action and the MCP `engagement_brief` tool both call — one
|
|
199
|
+
* input, one document, byte-identical. Refusal posture matches `plan`: an unreadable/invalid
|
|
200
|
+
* engagement file or a model the engagement no longer matches (`missingKeys`) refuses with no
|
|
201
|
+
* partial brief. An unresolved `--slice` is passed through AS GIVEN (same GH #237 convention
|
|
202
|
+
* `engagement set`'s CLI action uses) so the "not in engagement" refusal below is what speaks,
|
|
203
|
+
* not a generic resolver error. */
|
|
204
|
+
export function engagementBriefFor(input, slug, opts = {}) {
|
|
205
|
+
const loaded = loadEngagement(input.file, slug);
|
|
206
|
+
if (!loaded.ok)
|
|
207
|
+
return loaded;
|
|
208
|
+
const idx = buildUnitIndex(input.model, input.refs, input.baseDir);
|
|
209
|
+
const missing = missingKeys(loaded.file, idx);
|
|
210
|
+
if (missing.length > 0)
|
|
211
|
+
return { ok: false, message: missingMessage(slug, missing) };
|
|
212
|
+
let entries = loaded.file.slices;
|
|
213
|
+
if (opts.sliceKey !== undefined && opts.sliceKey !== null) {
|
|
214
|
+
const entry = entries.find((e) => e.key === opts.sliceKey);
|
|
215
|
+
if (!entry)
|
|
216
|
+
return { ok: false, message: `slice "${opts.sliceKey}" is not in engagement "${slug}"` };
|
|
217
|
+
entries = [entry];
|
|
218
|
+
}
|
|
219
|
+
const inlineContext = opts.inlineContext === true;
|
|
220
|
+
const slices = entries.map((entry) => buildSliceBrief(input, loaded.file, idx, entry, inlineContext));
|
|
221
|
+
return { ok: true, brief: { file: input.file, engagement: loaded.path, slug: loaded.file.slug, inlineContext, slices } };
|
|
222
|
+
}
|
|
223
|
+
const RULE = "=".repeat(72);
|
|
224
|
+
function formatOneBrief(brief, s) {
|
|
225
|
+
const lines = [];
|
|
226
|
+
lines.push(`# Work brief: ${brief.slug} / ${s.key} — "${s.sliceName}"`, "");
|
|
227
|
+
lines.push(`- Tracking: ${s.tracking ?? "none"}`);
|
|
228
|
+
lines.push(`- PR title to use: "${s.prTitle}"`);
|
|
229
|
+
lines.push(`- Branch: \`${s.branch}\` on \`${s.base}\` (MIL-280: every slice PR targets main, never another slice's branch)`);
|
|
230
|
+
const ledgerBits = [s.ledgerBranch ? `branch ${s.ledgerBranch}` : null, s.ledgerBase ? `base ${s.ledgerBase}` : null, s.ledgerPr ? `pr ${s.ledgerPr}` : null].filter((x) => x !== null);
|
|
231
|
+
lines.push(`- Ledger: ${s.ledgerState}${ledgerBits.length > 0 ? ` (${ledgerBits.join(", ")})` : ""}`);
|
|
232
|
+
lines.push(`- Pattern: ${s.pattern} · doc status: ${s.docStatus ?? "(no doc)"}`, "");
|
|
233
|
+
lines.push("## The spec", "");
|
|
234
|
+
if (s.doc.found) {
|
|
235
|
+
lines.push(`Verbatim from \`${s.doc.path}\` — this IS the spec.`, "", "<!-- BEGIN SPEC -->", s.doc.content ?? "", "<!-- END SPEC -->");
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
lines.push(`**NO BOUND DOC FOUND for slice "${s.key}" — there is nothing to read as a spec.** Expected \`slices/${s.key}.md\`. ` +
|
|
239
|
+
"The model's own elements for this slice are listed below; this brief is INCOMPLETE until a slice doc is authored and ratified.", "", "| Kind | Name | Public | Fields |", "|---|---|---|---|");
|
|
240
|
+
for (const el of s.fallbackElements ?? []) {
|
|
241
|
+
const fields = el.fields.map((f) => `${f.name}${f.optional ? "?" : ""}${f.type ? `: ${f.type}` : ""}`).join(", ") || "—";
|
|
242
|
+
lines.push(`| ${el.kind} | ${el.name} | ${el.public ? "yes" : "no"} | ${fields} |`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
lines.push("");
|
|
246
|
+
lines.push("## Model context", "");
|
|
247
|
+
lines.push(s.modelContext.consumes.length > 0 ? "Consumes:" : "Consumes: nothing from outside this slice.");
|
|
248
|
+
for (const c of s.modelContext.consumes)
|
|
249
|
+
lines.push(`- ${c.kind} \`${c.name}\` (${c.ref}) — produced by unit \`${c.unit}\``);
|
|
250
|
+
lines.push(s.modelContext.produces.length > 0 ? "Produces:" : "Produces: nothing read outside this slice.");
|
|
251
|
+
for (const p of s.modelContext.produces)
|
|
252
|
+
lines.push(`- ${p.kind} \`${p.name}\` (${p.ref}) — read by unit \`${p.unit}\``);
|
|
253
|
+
lines.push(`Neighbor slices: ${s.modelContext.neighborUnits.length > 0 ? s.modelContext.neighborUnits.map((u) => `\`${u}\``).join(", ") : "none"}`);
|
|
254
|
+
if (s.modelContext.repeatedViews.length > 0) {
|
|
255
|
+
lines.push("Repeated view instances:");
|
|
256
|
+
for (const r of s.modelContext.repeatedViews)
|
|
257
|
+
lines.push(`- \`${r.view}\` is read again, later, in: ${r.instances.map((i) => `\`${i}\``).join(", ")} (same unit — no separate PR)`);
|
|
258
|
+
}
|
|
259
|
+
lines.push("");
|
|
260
|
+
lines.push("## Contract surface", "");
|
|
261
|
+
lines.push(s.contract.publicTouching
|
|
262
|
+
? `This slice is **public-touching**. Contract file: \`${s.contract.contractPath}\`.`
|
|
263
|
+
: "This slice is not public-touching — it owns no `public` command, event or view.");
|
|
264
|
+
if (s.contract.publicElements.length > 0) {
|
|
265
|
+
lines.push("Public elements:");
|
|
266
|
+
for (const el of s.contract.publicElements)
|
|
267
|
+
lines.push(`- ${el.kind} \`${el.name}\` (${el.ref})`);
|
|
268
|
+
}
|
|
269
|
+
lines.push("");
|
|
270
|
+
lines.push("## Definition of done", "");
|
|
271
|
+
lines.push(s.definitionOfDone.invariantIds.length > 0
|
|
272
|
+
? `- Tests traceable to this slice's invariants: ${s.definitionOfDone.invariantIds.join(", ")}`
|
|
273
|
+
: "- This slice declares no INV-* invariants.");
|
|
274
|
+
lines.push(s.definitionOfDone.scenarioTitles.length > 0
|
|
275
|
+
? `- Tests traceable to this slice's scenarios: ${s.definitionOfDone.scenarioTitles.map((t) => `"${t}"`).join(", ")}`
|
|
276
|
+
: "- The spec has no authored `### Scenario:` blocks yet.");
|
|
277
|
+
lines.push(`- Commit \`${s.definitionOfDone.bindingsPath}\` (see docs/bindings.md) binding every element ref and invariant id above to the file/identifier that implements it. Minimal shape:`, "");
|
|
278
|
+
lines.push(" ```yaml");
|
|
279
|
+
for (const l of s.definitionOfDone.bindingsExample.split("\n"))
|
|
280
|
+
lines.push(` ${l}`);
|
|
281
|
+
lines.push(" ```", "");
|
|
282
|
+
lines.push(` Then verify: \`${s.definitionOfDone.conformCheckCommand}\``);
|
|
283
|
+
lines.push(`- Slice isolation: ${s.definitionOfDone.isolationNote}`);
|
|
284
|
+
lines.push(`- PR title: "${s.definitionOfDone.prTitle}"`, "");
|
|
285
|
+
lines.push(brief.inlineContext ? "## Context documents (inlined: --inline-context)" : "## Context documents", "");
|
|
286
|
+
if (s.context.length === 0) {
|
|
287
|
+
lines.push("No engagement-level context documents.");
|
|
288
|
+
}
|
|
289
|
+
else if (!brief.inlineContext) {
|
|
290
|
+
for (const c of s.context)
|
|
291
|
+
lines.push(`- ${c.path}`);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
for (const c of s.context) {
|
|
295
|
+
lines.push(`### ${c.path}`, "");
|
|
296
|
+
if (c.missing) {
|
|
297
|
+
lines.push(`**MISSING: context document "${c.path}" was not found on disk — this brief could not inline it.**`);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
lines.push(`<!-- BEGIN CONTEXT: ${c.path} -->`, c.content ?? "", `<!-- END CONTEXT: ${c.path} -->`);
|
|
301
|
+
}
|
|
302
|
+
lines.push("");
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return lines.join("\n").trimEnd();
|
|
306
|
+
}
|
|
307
|
+
/** Text form: a self-contained brief per slice, each pasteable into its own ticket as-is, in
|
|
308
|
+
* engagement order. More than one is separated by a plain rule line (not nested under one
|
|
309
|
+
* shared heading) so each chunk still reads as its own document. */
|
|
310
|
+
export function formatEngagementBriefText(brief) {
|
|
311
|
+
return brief.slices.map((s) => formatOneBrief(brief, s)).join(`\n\n${RULE}\n\n`);
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=engagementBrief.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engagementBrief.js","sourceRoot":"","sources":["../../src/cli/engagementBrief.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,10 @@ export interface EngagementFile {
|
|
|
26
26
|
tracking: string | null;
|
|
27
27
|
/** GH #334: the PR title template (`{key}`, `{slice}`); null when absent (the default title applies). */
|
|
28
28
|
prTitle: string | null;
|
|
29
|
+
/** GH #455: repo-relative paths to documents an implementer needs beyond the slice doc
|
|
30
|
+
* (constitution, NFR docs, ADRs) — stored exactly as given, `[]` when absent. Not checked
|
|
31
|
+
* against the filesystem here; `plan`'s pre-flight does that. */
|
|
32
|
+
context: string[];
|
|
29
33
|
parallel: number;
|
|
30
34
|
status: "open" | "closed";
|
|
31
35
|
slices: EngagementSliceEntry[];
|
|
@@ -63,6 +67,16 @@ export declare function parseEngagementFile(text: string): ParseResult;
|
|
|
63
67
|
export declare function spliceSliceEntry(text: string, entry: EngagementSliceEntry): string | null;
|
|
64
68
|
/** Replace the frontmatter `status:` value. Null when the line is not found. */
|
|
65
69
|
export declare function spliceStatus(text: string, status: "open" | "closed"): string | null;
|
|
70
|
+
/** GH #455: a `--context-doc` value (or a `context:` entry) must be a non-empty single line.
|
|
71
|
+
* Never checked against the filesystem — paths are stored exactly as given. */
|
|
72
|
+
export declare function validateContextPaths(paths: string[]): string | null;
|
|
73
|
+
/** Replace (or insert) the frontmatter's whole `context:` list — `set --context-doc` replaces
|
|
74
|
+
* the list wholesale, same as every other `set` input. When the line already exists, only its
|
|
75
|
+
* value is replaced (same splice discipline as every other field here); when it doesn't, it is
|
|
76
|
+
* inserted right before `parallel:` (the schema's fixed field order: tracking?, prTitle?,
|
|
77
|
+
* context?, parallel). A no-op for an empty list on a file with no existing `context:` line.
|
|
78
|
+
* `null` when the frontmatter is missing or malformed (no `parallel:` line to anchor on). */
|
|
79
|
+
export declare function spliceContextList(text: string, context: string[]): string | null;
|
|
66
80
|
/** Regenerate the Ledger region's body in the file's own EOL. Null when the marker pair is
|
|
67
81
|
* missing. */
|
|
68
82
|
export declare function spliceLedger(text: string, ledgerLines: string[]): string | null;
|
|
@@ -38,6 +38,11 @@ export function detectEol(text) {
|
|
|
38
38
|
return text.includes("\r\n") ? "\r\n" : "\n";
|
|
39
39
|
}
|
|
40
40
|
const q = (s) => (s === null ? "null" : JSON.stringify(s));
|
|
41
|
+
/** GH #455: `context:`'s value — a one-line JSON-style flow sequence, so the whole field stays a
|
|
42
|
+
* single splice-able line like every other frontmatter field here. */
|
|
43
|
+
function formatContextList(paths) {
|
|
44
|
+
return `[${paths.map((p) => JSON.stringify(p)).join(", ")}]`;
|
|
45
|
+
}
|
|
41
46
|
/** One `slices:` entry as its single frontmatter line (no EOL). Key order is fixed. */
|
|
42
47
|
export function formatSliceEntryLine(e) {
|
|
43
48
|
const held = e.heldBy ? `, heldBy: ${e.heldBy}` : "";
|
|
@@ -72,6 +77,7 @@ export function renderEngagementFile(fm, ledgerLines) {
|
|
|
72
77
|
`createdBy: ${q(fm.createdBy)}`,
|
|
73
78
|
...(fm.tracking === null ? [] : [`tracking: ${q(fm.tracking)}`]),
|
|
74
79
|
...(fm.prTitle === null ? [] : [`prTitle: ${q(fm.prTitle)}`]),
|
|
80
|
+
...(fm.context.length === 0 ? [] : [`context: ${formatContextList(fm.context)}`]),
|
|
75
81
|
`parallel: ${fm.parallel}`,
|
|
76
82
|
`status: ${fm.status}`,
|
|
77
83
|
"slices:",
|
|
@@ -118,6 +124,17 @@ export function parseEngagementFile(text) {
|
|
|
118
124
|
const status = str(d.status);
|
|
119
125
|
if (status !== "open" && status !== "closed")
|
|
120
126
|
return { ok: false, message: `status must be open or closed, got "${status ?? "(missing)"}"` };
|
|
127
|
+
const context = [];
|
|
128
|
+
if (d.context !== undefined && d.context !== null) {
|
|
129
|
+
if (!Array.isArray(d.context))
|
|
130
|
+
return { ok: false, message: "context must be a list of repo-relative paths" };
|
|
131
|
+
for (const item of d.context) {
|
|
132
|
+
const s = str(item);
|
|
133
|
+
if (s === null || s.trim() === "")
|
|
134
|
+
return { ok: false, message: "every context entry must be a non-empty string (a repo-relative path)" };
|
|
135
|
+
context.push(s);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
121
138
|
const parallel = Number(d.parallel);
|
|
122
139
|
if (!Number.isInteger(parallel) || parallel < 1)
|
|
123
140
|
return { ok: false, message: "parallel must be a positive integer" };
|
|
@@ -149,6 +166,7 @@ export function parseEngagementFile(text) {
|
|
|
149
166
|
createdBy: str(d.createdBy),
|
|
150
167
|
tracking: str(d.tracking),
|
|
151
168
|
prTitle: str(d.prTitle),
|
|
169
|
+
context,
|
|
152
170
|
parallel,
|
|
153
171
|
status,
|
|
154
172
|
slices,
|
|
@@ -181,6 +199,42 @@ export function spliceStatus(text, status) {
|
|
|
181
199
|
const next = inner.replace(re, (_m, prefix) => `${prefix}${status}`);
|
|
182
200
|
return text.slice(0, loc.innerStart) + next + text.slice(loc.innerEnd);
|
|
183
201
|
}
|
|
202
|
+
/** GH #455: a `--context-doc` value (or a `context:` entry) must be a non-empty single line.
|
|
203
|
+
* Never checked against the filesystem — paths are stored exactly as given. */
|
|
204
|
+
export function validateContextPaths(paths) {
|
|
205
|
+
for (const p of paths) {
|
|
206
|
+
if (p.trim() === "")
|
|
207
|
+
return "--context-doc must be a non-empty path";
|
|
208
|
+
if (/[\r\n]/.test(p))
|
|
209
|
+
return "--context-doc must be a single line (no newlines)";
|
|
210
|
+
}
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
/** Replace (or insert) the frontmatter's whole `context:` list — `set --context-doc` replaces
|
|
214
|
+
* the list wholesale, same as every other `set` input. When the line already exists, only its
|
|
215
|
+
* value is replaced (same splice discipline as every other field here); when it doesn't, it is
|
|
216
|
+
* inserted right before `parallel:` (the schema's fixed field order: tracking?, prTitle?,
|
|
217
|
+
* context?, parallel). A no-op for an empty list on a file with no existing `context:` line.
|
|
218
|
+
* `null` when the frontmatter is missing or malformed (no `parallel:` line to anchor on). */
|
|
219
|
+
export function spliceContextList(text, context) {
|
|
220
|
+
const loc = locateFrontmatterInner(text);
|
|
221
|
+
if (!loc)
|
|
222
|
+
return null;
|
|
223
|
+
const inner = text.slice(loc.innerStart, loc.innerEnd);
|
|
224
|
+
const existing = fieldLineRegex("context").exec(inner);
|
|
225
|
+
if (existing) {
|
|
226
|
+
const at = loc.innerStart + existing.index;
|
|
227
|
+
return text.slice(0, at) + existing[1] + formatContextList(context) + text.slice(at + existing[0].length);
|
|
228
|
+
}
|
|
229
|
+
if (context.length === 0)
|
|
230
|
+
return text;
|
|
231
|
+
const anchor = fieldLineRegex("parallel").exec(inner);
|
|
232
|
+
if (!anchor)
|
|
233
|
+
return null;
|
|
234
|
+
const eol = detectEol(text);
|
|
235
|
+
const at = loc.innerStart + anchor.index;
|
|
236
|
+
return text.slice(0, at) + `context: ${formatContextList(context)}` + eol + text.slice(at);
|
|
237
|
+
}
|
|
184
238
|
/** Regenerate the Ledger region's body in the file's own EOL. Null when the marker pair is
|
|
185
239
|
* missing. */
|
|
186
240
|
export function spliceLedger(text, ledgerLines) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engagementFile.js","sourceRoot":"","sources":["../../src/cli/engagementFile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engagementFile.js","sourceRoot":"","sources":["../../src/cli/engagementFile.ts"],"names":[],"mappings":"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"}
|