flownav 0.1.1 → 0.1.2

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/README.md CHANGED
@@ -112,8 +112,8 @@ outputs:
112
112
  $ flownav affected "Normalize" --rename
113
113
  wf-orders:Normalize — impact of rename
114
114
  2 node(s) reference "Normalize" by name and will break unless their expressions are rewritten:
115
- ✗ wf-orders:Notify Sales uses {email} in text
116
- ✗ wf-orders:Orphan Code uses {email} in jsCode
115
+ × wf-orders:Notify Sales uses {email} in text
116
+ × wf-orders:Orphan Code uses {email} in jsCode
117
117
  ```
118
118
 
119
119
  **A path, even across workflows**
@@ -158,7 +158,7 @@ $ flownav check
158
158
  ERROR dead-refs [wf-orders] Orphan Code reads "Deleted Step", which does not exist
159
159
  WARN fragile-reads [wf-orders] Orphan Code reads $('Normalize') but Normalize is not upstream via main; it may not have run
160
160
  WARN unreachable [wf-orders] Orphan Code is not reachable from any trigger
161
- INFO cycles [wf-orders] loop (Loop Over Items): Ping Self ⇄ Loop Orders
161
+ INFO cycles [wf-orders] loop (Loop Over Items): Ping Self <-> Loop Orders
162
162
  INFO dead-ends [wf-orders] Loop Orders output [0 done] is not connected
163
163
  INFO no-error-handler [wf-enrich] Enrich customer has no error workflow and no node-level error handling
164
164
  ```
package/dist/checks.js CHANGED
@@ -126,7 +126,7 @@ export function runChecks(g, only) {
126
126
  : undefined;
127
127
  f.push({
128
128
  check: 'cycles', severity: kind ? 'info' : 'warn', wf: w.id,
129
- message: `${kind ?? 'cycle without Loop Over Items or Wait'}: ${comp.map((id) => g.nodeById.get(id).name).join(' ⇄ ')}`,
129
+ message: `${kind ?? 'cycle without Loop Over Items or Wait'}: ${comp.map((id) => g.nodeById.get(id).name).join(' <-> ')}`,
130
130
  });
131
131
  }
132
132
  }
package/dist/queries.js CHANGED
@@ -179,7 +179,7 @@ export function affected(g, q, mode = 'rename') {
179
179
  ? `${readers.length} node(s) reference "${n.name}" by name and will ${mode === 'rename' ? 'break unless their expressions are rewritten' : 'read a missing node'}:`
180
180
  : `No expression references "${n.name}" by name.${mode === 'rename' ? " Safe to rename (connections are keyed by name; update them with the rename)." : ''}`);
181
181
  for (const e of readers)
182
- lines.push(` ✗ ${fmtReader(e)}`);
182
+ lines.push(` × ${fmtReader(e)}`);
183
183
  data.breaks = readers;
184
184
  }
185
185
  if (mode === 'delete') {
@@ -192,7 +192,7 @@ export function affected(g, q, mode = 'rename') {
192
192
  if (orphaned.length) {
193
193
  lines.push('lose their only input (become unreachable):');
194
194
  for (const d of orphaned)
195
- lines.push(` ✗ ${g.label(d)}`);
195
+ lines.push(` × ${g.label(d)}`);
196
196
  }
197
197
  const heads = g.outE(n.id, ['capability']);
198
198
  if (heads.length) {
@@ -204,7 +204,7 @@ export function affected(g, q, mode = 'rename') {
204
204
  if (callers.length) {
205
205
  lines.push('callers that will fail:');
206
206
  for (const e of callers)
207
- lines.push(` ✗ ${g.label(e.from)} (${edgeTag(e)})`);
207
+ lines.push(` × ${g.label(e.from)} (${edgeTag(e)})`);
208
208
  }
209
209
  data.orphaned = orphaned;
210
210
  data.callers = callers;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flownav",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Typed node graph for n8n workflows: explain, path, affected (rename/delete safety), checks, and an MCP server so agents navigate workflows with far fewer tokens.",
5
5
  "author": "Omer Turkenits",
6
6
  "license": "MIT",