reflectt-node 0.1.0 → 0.1.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/defaults/TEAM-ROLES.yaml +84 -0
- package/defaults/TEAM-STANDARDS.md +32 -0
- package/defaults/TEAM.md +32 -0
- package/dist/cloud.d.ts.map +1 -1
- package/dist/cloud.js +133 -0
- package/dist/cloud.js.map +1 -1
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +89 -0
- package/dist/dashboard.js.map +1 -1
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +12 -1
- package/dist/embeddings.js.map +1 -1
- package/package.json +15 -11
- package/public/dashboard.js +15 -0
- package/templates/README.md +11 -0
- package/templates/incident-template.md +38 -0
- package/templates/review-packet.md +35 -0
- package/templates/task-template.md +40 -0
- package/plugins/reflectt-channel/README.md +0 -96
- package/plugins/reflectt-channel/index.ts +0 -789
- package/plugins/reflectt-channel/openclaw.plugin.json +0 -23
- package/plugins/reflectt-channel/package.json +0 -23
- package/plugins/reflectt-channel/src/channel.ts +0 -433
- package/plugins/reflectt-channel/src/types.ts +0 -29
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reflectt-node",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Local node server for agent-to-agent communication via OpenClaw",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -31,13 +31,14 @@
|
|
|
31
31
|
"hooks:install": "bash scripts/install-hooks.sh"
|
|
32
32
|
},
|
|
33
33
|
"keywords": [
|
|
34
|
+
"reflectt",
|
|
35
|
+
"openclaw",
|
|
34
36
|
"ai-agents",
|
|
35
37
|
"agent-coordination",
|
|
36
38
|
"task-management",
|
|
37
|
-
"openclaw",
|
|
38
39
|
"self-hosted",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
40
|
+
"team-health",
|
|
41
|
+
"task-board"
|
|
41
42
|
],
|
|
42
43
|
"author": "Team Reflectt",
|
|
43
44
|
"license": "Apache-2.0",
|
|
@@ -47,7 +48,6 @@
|
|
|
47
48
|
"@fastify/websocket": "^11.0.1",
|
|
48
49
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
49
50
|
"@supabase/supabase-js": "^2.95.3",
|
|
50
|
-
"@xenova/transformers": "^2.17.2",
|
|
51
51
|
"better-sqlite3": "^12.6.2",
|
|
52
52
|
"commander": "^14.0.3",
|
|
53
53
|
"dotenv": "^16.4.7",
|
|
@@ -75,13 +75,17 @@
|
|
|
75
75
|
"url": "https://github.com/reflectt/reflectt-node/issues"
|
|
76
76
|
},
|
|
77
77
|
"engines": {
|
|
78
|
-
"node": ">=
|
|
78
|
+
"node": ">=20"
|
|
79
79
|
},
|
|
80
80
|
"files": [
|
|
81
81
|
"dist/",
|
|
82
82
|
"public/",
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"LICENSE"
|
|
86
|
-
|
|
83
|
+
"templates/",
|
|
84
|
+
"defaults/",
|
|
85
|
+
"LICENSE",
|
|
86
|
+
"README.md"
|
|
87
|
+
],
|
|
88
|
+
"optionalDependencies": {
|
|
89
|
+
"@xenova/transformers": "^2.17.2"
|
|
90
|
+
}
|
|
87
91
|
}
|
package/public/dashboard.js
CHANGED
|
@@ -66,6 +66,20 @@ let focusModeActive = false;
|
|
|
66
66
|
|
|
67
67
|
const TASK_ID_PATTERN = /\b(task-[a-z0-9-]+)\b/gi;
|
|
68
68
|
|
|
69
|
+
// First-boot banner: show on empty installs, hide once tasks exist or user dismisses
|
|
70
|
+
function updateFirstBootBanner() {
|
|
71
|
+
const el = document.getElementById('first-boot-banner');
|
|
72
|
+
if (!el) return;
|
|
73
|
+
const dismissed = localStorage.getItem('reflectt-first-boot-dismissed');
|
|
74
|
+
const hasTasks = allTasks.length > 0;
|
|
75
|
+
el.hidden = dismissed === '1' || hasTasks;
|
|
76
|
+
}
|
|
77
|
+
function dismissFirstBootBanner() {
|
|
78
|
+
localStorage.setItem('reflectt-first-boot-dismissed', '1');
|
|
79
|
+
const el = document.getElementById('first-boot-banner');
|
|
80
|
+
if (el) el.hidden = true;
|
|
81
|
+
}
|
|
82
|
+
|
|
69
83
|
// Delta cursors for lower payload refreshes
|
|
70
84
|
let lastTaskSync = 0;
|
|
71
85
|
let lastChatSync = 0;
|
|
@@ -694,6 +708,7 @@ async function loadTasks(forceFull = false) {
|
|
|
694
708
|
// Update sidebar badge
|
|
695
709
|
const navTaskBadge = document.getElementById('nav-task-count');
|
|
696
710
|
if (navTaskBadge) navTaskBadge.textContent = allTasks.length;
|
|
711
|
+
updateFirstBootBanner();
|
|
697
712
|
}
|
|
698
713
|
|
|
699
714
|
function renderProjectTabs() {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Starter templates
|
|
2
|
+
|
|
3
|
+
These templates are copied into `~/.reflectt/templates/` by `reflectt init`.
|
|
4
|
+
|
|
5
|
+
Files:
|
|
6
|
+
- `task-template.md`
|
|
7
|
+
- `review-packet.md`
|
|
8
|
+
- `incident-template.md`
|
|
9
|
+
|
|
10
|
+
Notes:
|
|
11
|
+
- `reflectt init` will **not** overwrite existing templates unless `--force` is used.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Incident template
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
<what happened in one sentence>
|
|
5
|
+
|
|
6
|
+
## Impact
|
|
7
|
+
- Who/what was affected:
|
|
8
|
+
- Severity:
|
|
9
|
+
- Duration:
|
|
10
|
+
|
|
11
|
+
## Timeline (PT)
|
|
12
|
+
- <time> —
|
|
13
|
+
- <time> —
|
|
14
|
+
|
|
15
|
+
## Detection
|
|
16
|
+
- How we found out:
|
|
17
|
+
- Signals/alerts involved:
|
|
18
|
+
|
|
19
|
+
## Root cause
|
|
20
|
+
- Primary cause:
|
|
21
|
+
- Contributing factors:
|
|
22
|
+
|
|
23
|
+
## Resolution
|
|
24
|
+
- What fixed it:
|
|
25
|
+
- What we changed:
|
|
26
|
+
|
|
27
|
+
## Prevention
|
|
28
|
+
- What we’ll do to prevent recurrence:
|
|
29
|
+
|
|
30
|
+
## Action items
|
|
31
|
+
| Item | Owner | ETA | Status |
|
|
32
|
+
|---|---|---:|---|
|
|
33
|
+
| | | | |
|
|
34
|
+
|
|
35
|
+
## Links
|
|
36
|
+
- PRs:
|
|
37
|
+
- Logs:
|
|
38
|
+
- Dashboard:
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Review packet
|
|
2
|
+
|
|
3
|
+
## What is this
|
|
4
|
+
A reviewer-friendly packet that makes it possible to approve without context-switching.
|
|
5
|
+
|
|
6
|
+
## Metadata
|
|
7
|
+
- Task: <task-id>
|
|
8
|
+
- Owner: <@>
|
|
9
|
+
- Reviewer: <@>
|
|
10
|
+
- PR: <https://github.com/...>
|
|
11
|
+
- Commit: <sha>
|
|
12
|
+
- Changed files:
|
|
13
|
+
-
|
|
14
|
+
|
|
15
|
+
## Summary (1–3 bullets)
|
|
16
|
+
-
|
|
17
|
+
-
|
|
18
|
+
|
|
19
|
+
## How to verify
|
|
20
|
+
- Checks run:
|
|
21
|
+
- [ ] <e.g. npm test>
|
|
22
|
+
- [ ] <e.g. npm run build>
|
|
23
|
+
- Manual QA steps:
|
|
24
|
+
1.
|
|
25
|
+
2.
|
|
26
|
+
|
|
27
|
+
## Screenshots / proof
|
|
28
|
+
-
|
|
29
|
+
|
|
30
|
+
## Caveats / known risks
|
|
31
|
+
- none
|
|
32
|
+
|
|
33
|
+
## Rollout / follow-up
|
|
34
|
+
- Rollout notes:
|
|
35
|
+
- Follow-ups (if any):
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Task template
|
|
2
|
+
|
|
3
|
+
## Title
|
|
4
|
+
<short, specific, verifiable>
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
- Why this matters:
|
|
8
|
+
- Current behavior:
|
|
9
|
+
- Desired behavior:
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
- In scope:
|
|
13
|
+
- Out of scope:
|
|
14
|
+
|
|
15
|
+
## Done criteria (verifiable)
|
|
16
|
+
- [ ]
|
|
17
|
+
- [ ]
|
|
18
|
+
- [ ]
|
|
19
|
+
|
|
20
|
+
## Plan (smallest shippable slice first)
|
|
21
|
+
1.
|
|
22
|
+
2.
|
|
23
|
+
3.
|
|
24
|
+
|
|
25
|
+
## Artifacts
|
|
26
|
+
- PR: <link>
|
|
27
|
+
- Process artifact(s): <process/...>
|
|
28
|
+
- Screenshots/logs: <link or path>
|
|
29
|
+
|
|
30
|
+
## Review ask
|
|
31
|
+
- Review type: blocking-only | full
|
|
32
|
+
- What to focus on:
|
|
33
|
+
|
|
34
|
+
## Risks / caveats
|
|
35
|
+
-
|
|
36
|
+
|
|
37
|
+
## Owners + ETA
|
|
38
|
+
- Owner: <@>
|
|
39
|
+
- Reviewer: <@>
|
|
40
|
+
- ETA: <e.g. ~2h>
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
# reflectt-channel
|
|
2
|
-
|
|
3
|
-
OpenClaw channel plugin that connects agents to reflectt-node via SSE (Server-Sent Events).
|
|
4
|
-
|
|
5
|
-
## What it does
|
|
6
|
-
|
|
7
|
-
1. Connects to reflectt-node's `/events` SSE endpoint
|
|
8
|
-
2. Listens for chat messages with @mentions
|
|
9
|
-
3. Routes mentioned agents through OpenClaw's inbound pipeline
|
|
10
|
-
4. Posts agent responses back to reflectt-node via `POST /chat/messages`
|
|
11
|
-
|
|
12
|
-
## Install
|
|
13
|
-
|
|
14
|
-
From the reflectt-node repo root:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
openclaw plugins install ./plugins/reflectt-channel
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Or from anywhere:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
openclaw plugins install /path/to/reflectt-node/plugins/reflectt-channel
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Configure
|
|
27
|
-
|
|
28
|
-
Add to `~/.openclaw/openclaw.json`. Two config paths are supported:
|
|
29
|
-
|
|
30
|
-
**Option 1 — `channels.reflectt` (recommended):**
|
|
31
|
-
|
|
32
|
-
```json
|
|
33
|
-
{
|
|
34
|
-
"channels": {
|
|
35
|
-
"reflectt": {
|
|
36
|
-
"enabled": true,
|
|
37
|
-
"url": "http://127.0.0.1:4445"
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
**Option 2 — `plugins.entries` (general plugin convention):**
|
|
44
|
-
|
|
45
|
-
```json
|
|
46
|
-
{
|
|
47
|
-
"plugins": {
|
|
48
|
-
"entries": {
|
|
49
|
-
"reflectt-channel": {
|
|
50
|
-
"config": {
|
|
51
|
-
"url": "http://127.0.0.1:4445"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
> **Precedence:** `channels.reflectt` takes priority over `plugins.entries`. If both are set, `channels.reflectt.url` wins.
|
|
60
|
-
|
|
61
|
-
> **Default:** If neither is configured, the plugin falls back to `http://127.0.0.1:4445` and logs a warning with the exact config keys to set.
|
|
62
|
-
|
|
63
|
-
Or use the CLI shorthand:
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
openclaw config set channels.reflectt.enabled true
|
|
67
|
-
openclaw config set channels.reflectt.url "http://127.0.0.1:4445"
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Then restart the gateway:
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
openclaw gateway restart
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Verify
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
openclaw plugins list # Should show reflectt-channel
|
|
80
|
-
openclaw plugins info reflectt-channel
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Message flow
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
reflectt-node (SSE /events)
|
|
87
|
-
→ reflectt-channel plugin detects @mention
|
|
88
|
-
→ OpenClaw routes to agent session
|
|
89
|
-
→ Agent responds
|
|
90
|
-
→ Plugin POSTs to reflectt-node /chat/messages
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Requirements
|
|
94
|
-
|
|
95
|
-
- OpenClaw gateway running
|
|
96
|
-
- reflectt-node running at the configured URL
|