@damn-dev/cli 0.15.1 → 0.19.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/package.json +5 -1
- package/runtime/apps/backend/dist/resources/coo/WORKSPACE_GUIDE.md +48 -4
- package/runtime/apps/backend/dist/resources/skills/channel-context-builtin/SKILL.md +33 -0
- package/runtime/apps/backend/dist/server.cjs +8919 -7159
- package/runtime/apps/backend/prisma/schema.prisma +52 -0
- package/runtime/apps/frontend/dist/assets/{index-DSfZKjOi.js → index-B-JJMVpu.js} +100 -100
- package/runtime/apps/frontend/dist/assets/index-XcP6o-oq.css +1 -0
- package/runtime/apps/frontend/dist/index.html +2 -2
- package/runtime/apps/frontend/dist/sw.js +1 -1
- package/runtime/apps/frontend/dist/assets/index-By3Unk5U.css +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@damn-dev/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.2",
|
|
4
4
|
"description": "damn.dev — self-hosted workspace OS for human + AI agent collaboration.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://damn.dev",
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"@fastify/static": "^7.0.4",
|
|
33
33
|
"@prisma/client": "^6.0.0",
|
|
34
34
|
"@trpc/server": "^11.0.0",
|
|
35
|
+
"@whiskeysockets/baileys": "7.0.0-rc13",
|
|
35
36
|
"adm-zip": "^0.5.16",
|
|
36
37
|
"archiver": "^7.0.1",
|
|
37
38
|
"better-auth": "^1.5.4",
|
|
@@ -41,8 +42,11 @@
|
|
|
41
42
|
"fastify": "^4.28.1",
|
|
42
43
|
"fastify-plugin": "^5.0.0",
|
|
43
44
|
"grammy": "^1.41.1",
|
|
45
|
+
"mammoth": "^1.12.0",
|
|
46
|
+
"pdf-parse": "^2.4.5",
|
|
44
47
|
"playwright-core": "^1.59.1",
|
|
45
48
|
"prisma": "^6.0.0",
|
|
49
|
+
"qrcode": "^1.5.4",
|
|
46
50
|
"web-push": "^3.6.7",
|
|
47
51
|
"ws": "^8.18.0",
|
|
48
52
|
"yaml": "^2.8.2",
|
|
@@ -431,6 +431,22 @@ trust-update blocks. Mounts are reflected in SOUL.md `## File Access` with
|
|
|
431
431
|
git context (remote URL, branch) when a git repo is detected. Mounts support
|
|
432
432
|
`ro` (read-only, default) and `rw` (read & write) modes.
|
|
433
433
|
|
|
434
|
+
## Channel Files-in-Context (0.19.0+)
|
|
435
|
+
Any channel can have files pinned to it via the files button in the channel
|
|
436
|
+
header. Pinned files are shared context for every human and agent in that
|
|
437
|
+
channel — distinct from per-message attachments (which apply only to the
|
|
438
|
+
message they're sent with). File types: anything (documents, images, data).
|
|
439
|
+
|
|
440
|
+
Consumption is **on-demand**, not auto-loaded: an agent's prompt receives a
|
|
441
|
+
`## Channel Context Files` manifest listing each pinned file's `attachmentId`,
|
|
442
|
+
filename, and type, plus instructions to fetch content only when relevant. To
|
|
443
|
+
read a pinned file, the agent calls `skill_exec(slug: 'channel-context-builtin',
|
|
444
|
+
args: { tool: 'read', attachmentId: '<id>' })`. Text/PDF/DOCX return extracted
|
|
445
|
+
text (truncated at ~30k chars); images return as native vision input. The read
|
|
446
|
+
tool is auto-approved (read-tier) and the `channel-context-builtin` skill is
|
|
447
|
+
always-on for every agent — no manual enabling needed. A file can only be read
|
|
448
|
+
from the channel it's pinned to (cross-channel reads are refused).
|
|
449
|
+
|
|
434
450
|
## Integrations
|
|
435
451
|
Settings → Integrations provides one-click setup for external tools. Each
|
|
436
452
|
integration handles env vars, volume mounts, skill installation, and agent
|
|
@@ -544,11 +560,20 @@ External channel bridges are configured in each agent's Channels tab.
|
|
|
544
560
|
Messages from external channels flow through the full pipeline — approvals,
|
|
545
561
|
audit trail, delegation, and block parsing all work identically.
|
|
546
562
|
|
|
547
|
-
Current supported channels: Telegram (
|
|
548
|
-
|
|
563
|
+
Current supported channels: Telegram (grammY) and WhatsApp (Baileys bridge).
|
|
564
|
+
Discord and Slack are planned. Both Telegram and WhatsApp support multi-user pairing.
|
|
565
|
+
|
|
566
|
+
WhatsApp: each agent links its own number by scanning a QR (Agent → Channels tab →
|
|
567
|
+
Connect WhatsApp), exactly like a per-agent Telegram bot. Two inbox modes: Open
|
|
568
|
+
(anyone who messages the number gets their own private thread and a reply — a
|
|
569
|
+
support/business line) or Invite-only (only people who send a pairing code can reach
|
|
570
|
+
the agent). Each WhatsApp contact appears as its own tab under a single "WhatsApp"
|
|
571
|
+
inbox channel in the sidebar; clicking a sender's name shows a read-only contact card
|
|
572
|
+
(phone, first/last seen, message count, and whether they're a known workspace member
|
|
573
|
+
or a prospect). CRM depth lives in chut.co, not damn.dev.
|
|
549
574
|
|
|
550
|
-
When a user asks about connecting agents to Telegram, direct them to the
|
|
551
|
-
Channels tab. Do not suggest configuring OpenClaw's native channel settings.
|
|
575
|
+
When a user asks about connecting agents to Telegram or WhatsApp, direct them to the
|
|
576
|
+
agent's Channels tab. Do not suggest configuring OpenClaw's native channel settings.
|
|
552
577
|
|
|
553
578
|
## Scheduling (Heartbeats)
|
|
554
579
|
Agents can run scheduled tasks via their agent panel → Schedule tab. When enabled,
|
|
@@ -703,6 +728,25 @@ stress-testing; the purge tool handles surprises.
|
|
|
703
728
|
|
|
704
729
|
Import/export from the agent panel or team settings.
|
|
705
730
|
|
|
731
|
+
## Import from OpenClaw
|
|
732
|
+
Users migrating from a vanilla OpenClaw install can bring their existing agents
|
|
733
|
+
into damn.dev — soul, identity, memory, knowledge, skills, and heartbeat all
|
|
734
|
+
preserved. The importer scans `~/.openclaw` on the host, lists each agent it
|
|
735
|
+
finds, and imports the selected ones on demand. It is **dry-run until the user
|
|
736
|
+
clicks Import** — nothing is written during the scan.
|
|
737
|
+
|
|
738
|
+
Two surfaces, same flow:
|
|
739
|
+
- **Onboarding** — a step that appears *only* when the scan finds at least one
|
|
740
|
+
not-yet-imported OpenClaw agent. Fresh users with no prior OpenClaw setup never
|
|
741
|
+
see it.
|
|
742
|
+
- **Settings → Workspace → "Import from OpenClaw"** — always available, so users
|
|
743
|
+
who skipped onboarding (or added OpenClaw agents later) can still migrate.
|
|
744
|
+
|
|
745
|
+
Already-imported agents are greyed out; a "re-import (overwrite)" toggle forces a
|
|
746
|
+
true overwrite of soul/identity/skills. Imported agents land with shell tools
|
|
747
|
+
denied, sandbox off, and the standard governance wiring — identical to natively
|
|
748
|
+
created agents. The `coo` agent is never migrated (it's auto-seeded per install).
|
|
749
|
+
|
|
706
750
|
## Agent Creation
|
|
707
751
|
Ask the COO to design agent teams: "I need an agent that handles customer support."
|
|
708
752
|
The COO proposes the full setup — agents, skills, channel assignments — and you
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "channel-context-builtin"
|
|
3
|
+
description: "Read files that users or agents have pinned to the current channel for shared reference. When a turn includes a '## Channel Context Files' manifest, those files are available but NOT loaded into context — call this skill to read one on demand. Text, Markdown, JSON, CSV, PDF, and DOCX return extracted text; images return as a viewable picture."
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
required_secrets: []
|
|
6
|
+
required_tools: []
|
|
7
|
+
tools:
|
|
8
|
+
- name: read
|
|
9
|
+
description: "Read one file pinned to the current channel. Pass the attachment `id` exactly as it appears in the '## Channel Context Files' manifest for this turn (the backticked value). Documents (txt/md/json/csv/pdf/docx) return their extracted text — truncated to ~30k characters for very large files, with `truncated: true` set. Images (png/jpeg/gif/webp) are routed back as a native vision input so you can actually see them. Only files pinned to THIS channel are readable; ids from other channels are rejected."
|
|
10
|
+
parameters:
|
|
11
|
+
- name: attachmentId
|
|
12
|
+
type: string
|
|
13
|
+
description: "The attachment id from the '## Channel Context Files' manifest (the value inside backticks). REQUIRED."
|
|
14
|
+
required: true
|
|
15
|
+
endpoint: inprocess://channel-context-builtin/read
|
|
16
|
+
method: POST
|
|
17
|
+
requires_approval: false
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Channel Context Files
|
|
21
|
+
|
|
22
|
+
Users and agents can pin files to a channel via the channel header's Files button. Pinned files are shared reference material for everyone in the channel — they are listed in a `## Channel Context Files` manifest at the start of a turn but are **never** auto-loaded into your context.
|
|
23
|
+
|
|
24
|
+
When you need the contents of a pinned file, call:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
skill_exec({ slug: 'channel-context-builtin', args: { tool: 'read', attachmentId: '<id>' } })
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- Use the exact `id` shown in the manifest.
|
|
31
|
+
- Documents come back as extracted text. Large files are truncated (`truncated: true`).
|
|
32
|
+
- Images come back as a native vision input — you'll see the picture directly.
|
|
33
|
+
- You can only read files pinned to the channel you're currently in.
|