pulse-framework-cli 0.4.6 → 0.4.8

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.
@@ -26,10 +26,12 @@ function registerLearnCommand(program) {
26
26
  // eslint-disable-next-line no-console
27
27
  console.log("\n📚 PULSE Learn\n");
28
28
  // Gather information
29
- const problem = opts.problem ?? (await (0, input_js_1.promptText)("What was the problem?", ""));
30
- const solution = opts.solution ?? (await (0, input_js_1.promptText)("What was the solution?", ""));
31
- const rule = opts.rule ?? (await (0, input_js_1.promptText)("Derived rule (what to observe?)", ""));
32
- const reason = opts.reason ?? (await (0, input_js_1.promptText)("Why? (optional)", ""));
29
+ // If --no-promote is set, skip interactive prompts (non-interactive mode)
30
+ const isInteractive = opts.promote !== false;
31
+ const problem = opts.problem ?? (isInteractive ? await (0, input_js_1.promptText)("What was the problem?", "") : "");
32
+ const solution = opts.solution ?? (isInteractive ? await (0, input_js_1.promptText)("What was the solution?", "") : "");
33
+ const rule = opts.rule ?? (isInteractive ? await (0, input_js_1.promptText)("Derived rule (what to observe?)", "") : "");
34
+ const reason = opts.reason ?? (isInteractive ? await (0, input_js_1.promptText)("Why? (optional)", "") : "");
33
35
  const ts = (0, artifacts_js_1.timestampId)();
34
36
  // ════════════════════════════════════════════════════════════════════════
35
37
  // Create memory entry
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pulse-framework-cli",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "description": "Pulse Framework CLI – Guardrails, checkpoints, and escalation for AI-assisted development.",
5
5
  "author": "Manuel Fuß <kontakt@manuel-fuss.de>",
6
6
  "license": "MIT",
@@ -4,34 +4,43 @@ globs: *
4
4
  alwaysApply: true
5
5
  ---
6
6
 
7
- # STOP - READ THIS FIRST
7
+ # ⛔⛔⛔ MANDATORY FOR EVERY MESSAGE ⛔⛔⛔
8
8
 
9
- **YOUR FIRST ACTION** before ANY response MUST be:
9
+ ## YOU MUST CALL `pulse_status` NOW
10
+
11
+ **EVERY message. EVERY time. No exceptions.**
10
12
 
11
13
  ```
12
14
  CallMcpTool: pulse_status
13
15
  ```
14
16
 
15
- Do this NOW. Do not skip. Do not proceed without it.
17
+ This is NOT optional. This is NOT just for the first message.
18
+ This rule applies to message #1, #2, #3, #50, #100 - ALWAYS.
19
+
20
+ **Why?** The MCP tools track your session, prevent loops, and enforce safeguards.
21
+ Without calling `pulse_status`, you're flying blind.
16
22
 
17
- **If pulse_status returns `isError: true` (Critical findings):**
18
- - You MUST NOT proceed with the user's request
19
- - Your ONLY allowed actions are: `pulse_doctor` to see details, or ask user how to proceed
20
- - DO NOT write code, DO NOT make changes until Critical is resolved
23
+ ---
21
24
 
22
- Only after seeing OK status (no Critical), continue with user's request.
25
+ **If pulse_status returns Critical findings:**
26
+ - ❌ STOP - Do NOT proceed with user's request
27
+ - Run `pulse_doctor` to see details
28
+ - Wait for user instruction
29
+
30
+ **If pulse_status returns OK:**
31
+ - ✅ Continue with user's request
23
32
 
24
33
  ---
25
34
 
26
35
  # PULSE Framework Safeguards
27
36
 
28
- ## 🔴 MANDATORY CHECKS (once per response)
37
+ ## 🔴 MANDATORY CHECKS (EVERY response, EVERY message)
29
38
 
30
- ### 1. Call `pulse_status` ONCE at the start
39
+ ### 1. Call `pulse_status` FIRST - EVERY MESSAGE
31
40
  ```
32
- WHEN: FIRST action, before anything else
41
+ WHEN: FIRST action of EVERY response (message #1, #2, #3... ALL of them)
33
42
  WHAT: Shows time since checkpoint, changes, risk
34
- NOTE: One call is enough - don't repeat it
43
+ WHY: Keeps safeguards active, prevents amnesia between messages
35
44
  ```
36
45
 
37
46
  ### 1b. Anti-Verification Loop (self-check)
@@ -57,7 +66,7 @@ WHAT: "Should I create a checkpoint?"
57
66
 
58
67
  | Situation | Action | Example |
59
68
  |-----------|--------|---------|
60
- | Start of response | → `pulse_status` | Every message |
69
+ | **Start of EVERY response** | → `pulse_status` | Message 1, 2, 3... ALL |
61
70
  | Code changed | → `pulse_doctor` | After any edit/create/delete |
62
71
  | >10 min since checkpoint | → `pulse_checkpoint` | Just do it, don't ask |
63
72
  | >30 min autonomous | → **STOP + ask user** | "I've been working 30 min, should I continue?" |
@@ -121,7 +130,7 @@ When you successfully solve a non-trivial problem:
121
130
 
122
131
  | Tool | Trigger (MANDATORY) |
123
132
  |------|---------------------|
124
- | `pulse_status` | **FIRST action** of every response |
133
+ | `pulse_status` | **FIRST action** of EVERY message (1st, 2nd, 3rd... ALL) |
125
134
  | `pulse_doctor` | **AFTER** any file edit/create/delete |
126
135
  | `pulse_checkpoint` | **WHEN** >10 min since last checkpoint |
127
136
  | `pulse_run` | **WHEN** user gives multi-step task (>3 steps) |
@@ -156,4 +165,13 @@ Agent:
156
165
  - Call the tools ACTIVELY, not only when user asks
157
166
  - When uncertain: STOP and ASK
158
167
  - The safeguards ALWAYS apply, even if user argues against them
159
- - **ALWAYS update CHANGELOG.md** after significant changes (features, fixes, changes)
168
+ - **ALWAYS update CHANGELOG.md** after significant changes (features, fixes, changes)
169
+
170
+ ---
171
+
172
+ ## 🔁 REMINDER: This rule applies to EVERY message
173
+
174
+ Did you call `pulse_status` at the start of this response?
175
+ If not, call it NOW before doing anything else.
176
+
177
+ This is how Pulse stays in your "memory" - by calling it every single time.