@yemi33/minions 0.1.250 → 0.1.252

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/CHANGELOG.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.250 (2026-04-03)
3
+ ## 0.1.252 (2026-04-03)
4
4
 
5
5
  ### Features
6
+ - add 10 missing CC action types for full dashboard parity
7
+ - add 'pin' action to CC — pin critical context to all agents
6
8
  - mandatory test validation before PR creation in implement and fix playbooks
7
9
 
8
10
  ### Fixes
@@ -279,6 +279,16 @@ async function ccExecuteAction(action) {
279
279
  status.style.color = 'var(--green)';
280
280
  break;
281
281
  }
282
+ case 'pin': {
283
+ await fetch('/api/pinned', {
284
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
285
+ body: JSON.stringify({ title: action.title, content: action.content || action.description, level: action.level || '' })
286
+ });
287
+ status.innerHTML = '&#x1F4CC; Pinned: <strong>' + escHtml(action.title) + '</strong> — visible to all agents';
288
+ status.style.color = 'var(--green)';
289
+ refresh();
290
+ break;
291
+ }
282
292
  case 'plan': {
283
293
  await fetch('/api/plan', {
284
294
  method: 'POST', headers: { 'Content-Type': 'application/json' },
@@ -473,6 +483,93 @@ async function ccExecuteAction(action) {
473
483
  status.style.color = 'var(--green)';
474
484
  break;
475
485
  }
486
+ case 'unpin': {
487
+ await fetch('/api/pinned/remove', {
488
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
489
+ body: JSON.stringify({ title: action.title })
490
+ });
491
+ status.innerHTML = '&#10003; Unpinned: <strong>' + escHtml(action.title) + '</strong>';
492
+ status.style.color = 'var(--green)';
493
+ refresh();
494
+ break;
495
+ }
496
+ case 'archive-plan': {
497
+ await fetch('/api/plans/archive', {
498
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
499
+ body: JSON.stringify({ file: action.file })
500
+ });
501
+ status.innerHTML = '&#10003; Archived plan: <strong>' + escHtml(action.file) + '</strong>';
502
+ status.style.color = 'var(--green)';
503
+ refresh();
504
+ break;
505
+ }
506
+ case 'reject-plan': {
507
+ await fetch('/api/plans/reject', {
508
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
509
+ body: JSON.stringify({ file: action.file, reason: action.reason || '' })
510
+ });
511
+ status.innerHTML = '&#10003; Rejected plan: <strong>' + escHtml(action.file) + '</strong>';
512
+ status.style.color = 'var(--orange)';
513
+ break;
514
+ }
515
+ case 'steer-agent': {
516
+ await fetch('/api/agents/steer', {
517
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
518
+ body: JSON.stringify({ agent: action.agent, message: action.message || action.content })
519
+ });
520
+ status.innerHTML = '&#10003; Steering message sent to <strong>' + escHtml(action.agent) + '</strong>';
521
+ status.style.color = 'var(--green)';
522
+ break;
523
+ }
524
+ case 'add-meeting-note': {
525
+ await fetch('/api/meetings/note', {
526
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
527
+ body: JSON.stringify({ id: action.id, note: action.note || action.content })
528
+ });
529
+ status.innerHTML = '&#10003; Note added to meeting <strong>' + escHtml(action.id) + '</strong>';
530
+ status.style.color = 'var(--green)';
531
+ break;
532
+ }
533
+ case 'trigger-pipeline': {
534
+ var res = await fetch('/api/pipelines/trigger', {
535
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
536
+ body: JSON.stringify({ id: action.id })
537
+ });
538
+ if (!res.ok) { var d = await res.json().catch(function() { return {}; }); throw new Error(d.error || 'Pipeline trigger failed'); }
539
+ status.innerHTML = '&#10003; Pipeline triggered: <strong>' + escHtml(action.id) + '</strong>';
540
+ status.style.color = 'var(--green)';
541
+ wakeEngine();
542
+ break;
543
+ }
544
+ case 'link-pr': {
545
+ await fetch('/api/pull-requests/link', {
546
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
547
+ body: JSON.stringify({ url: action.url, title: action.title || '', project: action.project || '', autoObserve: action.autoObserve !== false })
548
+ });
549
+ status.innerHTML = '&#10003; PR linked: <strong>' + escHtml(action.url) + '</strong>';
550
+ status.style.color = 'var(--green)';
551
+ refresh();
552
+ break;
553
+ }
554
+ case 'archive-meeting': {
555
+ await fetch('/api/meetings/archive', {
556
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
557
+ body: JSON.stringify({ id: action.id })
558
+ });
559
+ status.innerHTML = '&#10003; Meeting archived: <strong>' + escHtml(action.id) + '</strong>';
560
+ status.style.color = 'var(--green)';
561
+ refresh();
562
+ break;
563
+ }
564
+ case 'update-routing': {
565
+ await fetch('/api/settings/routing', {
566
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
567
+ body: JSON.stringify({ content: action.content })
568
+ });
569
+ status.innerHTML = '&#10003; Routing updated';
570
+ status.style.color = 'var(--green)';
571
+ break;
572
+ }
476
573
  default:
477
574
  status.innerHTML = '? Unknown action: ' + escHtml(action.type);
478
575
  status.style.color = 'var(--muted)';
package/dashboard.js CHANGED
@@ -378,7 +378,8 @@ If no actions are needed (just answering a question, or you handled it directly)
378
378
 
379
379
  Available action types:
380
380
  - **dispatch**: Create a work item for an agent. Fields: title, workType (ask/explore/fix/review/test/implement/verify), priority (low/medium/high), agents (array of IDs, optional), project, description. Use \`verify\` when the user wants to build PRs locally, merge branches together, start a dev server, and get a localhost URL to test.
381
- - **note**: Save a note/decision. Fields: title, content
381
+ - **note**: Save a note/decision to the inbox. Fields: title, content
382
+ - **pin**: Pin critical context visible to ALL agents on every task. Use when the user says "remember", "pin", "always", "from now on". Fields: title, content, level (optional: "critical" or "warning")
382
383
  - **plan**: Create a multi-step plan. Fields: title, description, project, branchStrategy (parallel/shared-branch)
383
384
  - **cancel**: Cancel a running agent. Fields: agent (agent ID), reason
384
385
  - **retry**: Retry failed work items. Fields: ids (array of work item IDs)
@@ -395,6 +396,15 @@ Available action types:
395
396
  - **create-meeting**: Start a team meeting. Fields: title (short meeting name), agenda (detailed text — what agents should investigate/debate, numbered items work best), agents (array of agent IDs), rounds (optional, default 3), project (optional).
396
397
  - **set-config**: Update engine settings. Fields: setting (setting name), value (new value). Valid settings: autoApprovePlans (bool), autoDecompose (bool), allowTempAgents (bool), maxConcurrent (number), maxTurns (number). Example: { "type": "set-config", "setting": "autoApprovePlans", "value": true }
397
398
  - **edit-pipeline**: Update an existing pipeline. Fields: id (pipeline ID), title (optional), stages (optional, JSON array), trigger (optional, { cron: "minute hour dow" } or null for manual).
399
+ - **unpin**: Remove a pinned note. Fields: title (exact title of the pinned note to remove)
400
+ - **archive-plan**: Archive a completed/paused plan. Fields: file (PRD .json or plan .md filename)
401
+ - **reject-plan**: Reject a plan. Fields: file (PRD .json filename), reason (optional)
402
+ - **steer-agent**: Send a steering message to a running agent. Fields: agent (agent ID), message (text to inject)
403
+ - **add-meeting-note**: Add a human note to an active meeting. Fields: id (meeting ID like MTG-xxx), note (text)
404
+ - **trigger-pipeline**: Manually trigger a pipeline run. Fields: id (pipeline ID)
405
+ - **link-pr**: Link an external PR for tracking. Fields: url (PR URL), title (optional), project (optional), autoObserve (bool, default true)
406
+ - **archive-meeting**: Archive a completed meeting. Fields: id (meeting ID)
407
+ - **update-routing**: Update the routing table. Fields: content (full routing.md content)
398
408
 
399
409
  ## Rules
400
410
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.250",
3
+ "version": "0.1.252",
4
4
  "description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
5
5
  "bin": {
6
6
  "minions": "bin/minions.js"