@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@damn-dev/cli",
3
- "version": "0.15.1",
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 (with grammY). Multi-user pairing supported.
548
- WhatsApp, Discord, and Slack are planned.
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 agent's
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.