@eventmodelers/cli 0.0.33 → 0.0.34
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/cli.js
CHANGED
|
@@ -1140,19 +1140,25 @@ async function runModeling(kitDir, projectDir) {
|
|
|
1140
1140
|
|
|
1141
1141
|
// Bare tool names (`→ Bash`, `→ Skill`) tell you nothing happened worth
|
|
1142
1142
|
// reading — this pulls out the one input field that actually says what the
|
|
1143
|
-
// tool did, so the trace is skimmable without the interactive TUI.
|
|
1143
|
+
// tool did, so the trace is skimmable without the interactive TUI. Collapsed
|
|
1144
|
+
// to one line and capped in length — a raw multi-line curl or a long grep
|
|
1145
|
+
// pattern wrapping across the terminal is just as unreadable as no detail at all.
|
|
1146
|
+
const oneLine = (s, max = 100) => {
|
|
1147
|
+
const flat = String(s ?? '').replace(/\s+/g, ' ').trim();
|
|
1148
|
+
return flat.length > max ? `${flat.slice(0, max)}…` : flat;
|
|
1149
|
+
};
|
|
1144
1150
|
function describeToolUse(block) {
|
|
1145
1151
|
const input = block.input ?? {};
|
|
1146
1152
|
switch (block.name) {
|
|
1147
|
-
case 'Bash': return `Bash: ${input.command}`;
|
|
1148
|
-
case 'Skill': return `Skill: ${input.skill}${input.args ? ` ${input.args}` : ''}`;
|
|
1153
|
+
case 'Bash': return `Bash: ${oneLine(input.command)}`;
|
|
1154
|
+
case 'Skill': return `Skill: ${input.skill}${input.args ? ` ${oneLine(input.args, 60)}` : ''}`;
|
|
1149
1155
|
case 'Read': return `Read: ${input.file_path}`;
|
|
1150
1156
|
case 'Edit': return `Edit: ${input.file_path}`;
|
|
1151
1157
|
case 'Write': return `Write: ${input.file_path}`;
|
|
1152
|
-
case 'Grep': return `Grep: ${input.pattern}`;
|
|
1158
|
+
case 'Grep': return `Grep: ${oneLine(input.pattern, 60)}`;
|
|
1153
1159
|
case 'Glob': return `Glob: ${input.pattern}`;
|
|
1154
1160
|
case 'WebFetch': return `WebFetch: ${input.url}`;
|
|
1155
|
-
case 'Agent': return `Agent: ${input.description ?? input.subagent_type ?? ''}`;
|
|
1161
|
+
case 'Agent': return `Agent: ${oneLine(input.description ?? input.subagent_type ?? '', 60)}`;
|
|
1156
1162
|
default: return block.name;
|
|
1157
1163
|
}
|
|
1158
1164
|
}
|
package/package.json
CHANGED
|
@@ -21,7 +21,9 @@ You are a long-lived process handling many turns in a row. Don't redo one-time s
|
|
|
21
21
|
**Resolve `CELL_ID`** from this turn's `context.selectedCell.id`, if present and non-null. When present, it overrules any cell reference (e.g. `"A2"`) parsed from the prompt text itself — it reflects the actual cell the user had selected on the canvas when they issued the prompt, and is more reliable than free-text parsing.
|
|
22
22
|
4. **Mark the prompt as started** — invoke `/update-prompt-status` with this turn's `prompt_id` and `newStatus=IN_PROGRESS`, before doing any of the actual work below. This is what makes the board UI show the prompt as being actively worked on.
|
|
23
23
|
5. Execute the prompt using the skill matched in `.agent-modeling-kit/CLAUDE.md`'s Skill Selection table, passing the resolved `TIMELINE_ID`, `NODE_ID`, and `CELL_ID` from step 3 as that skill's `timelineId`/node-reference/`cellName` arguments (not the raw `timeline_id`/`node_id` fields, and not a cell reference parsed from the prompt text). For a skill like `/place-element` that accepts a `cellName`, pass the resolved `CELL_ID` as `cellName` whenever it's present — skip parsing the prompt text for a cell reference entirely in that case.
|
|
24
|
-
**Questioning rule**: you are running autonomously — no human is available to answer questions. If you need clarification, do not pause or ask interactively — post a `QUESTION`-type comment (`/handle-comment` with `action=place`, `type=QUESTION`) on the most relevant node
|
|
24
|
+
**Questioning rule**: you are running autonomously — no human is available to answer questions. If you need clarification, do not pause or ask interactively — post a `QUESTION`-type comment (`/handle-comment` with `action=place`, `type=QUESTION`) on the most relevant node. Then:
|
|
25
|
+
- If a reasonable default interpretation exists, continue with it.
|
|
26
|
+
- If it doesn't — the prompt is ambiguous enough that any guess risks doing the wrong thing — stop instead of guessing. Skip straight to step 6 and mark the prompt `DONE` with a comment explaining what's unclear and pointing to the `QUESTION` comment you just posted. Never leave a prompt neither progressed nor closed.
|
|
25
27
|
6. **Mark the prompt as finished** — invoke `/update-prompt-status` with this turn's `prompt_id`, `newStatus=DONE`, and a `comment` that summarizes what you actually did (e.g. "Added the OrderPlaced event and wired it to the read model"). Do this once, right after the work is done — not per skill call within the turn.
|
|
26
28
|
7. If this turn has a `comment_id` field, invoke `/handle-comment` with `action=resolve`, `nodeId` from the resolved `NODE_ID` (step 3), `commentId` from `comment_id`.
|
|
27
29
|
8. Append a progress entry to `progress.txt` — see `.agent-modeling-kit/CLAUDE.md`'s Progress Entry Format. Fill in the `Learnings` line with anything reusable noticed this turn (pattern, gotcha, useful context), or "none".
|