pi-messenger 0.8.2 → 0.9.0

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,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.9.0] - 2026-02-05
4
+
5
+ ### Added
6
+ - **npm publishing** - Package now published to npm. Install with `pi install npm:pi-messenger`.
7
+ - **`install.mjs`** - `npx pi-messenger` copies the npm package contents to the extensions directory. No git dependency. Version-pinned to the npm release. `npx pi-messenger --remove` to uninstall.
8
+ - `repository`, `homepage`, `bugs` fields in package.json for npm/GitHub integration.
9
+ - `bin`, `files` fields in package.json for npm distribution.
10
+
11
+ ### Changed
12
+ - **Banner image** - README references `banner.png` via absolute GitHub URL (`raw.githubusercontent.com`) instead of relative path, so it renders on both GitHub and npmjs.com without shipping the 1.1MB image in the npm package.
13
+ - **Install section** - README now documents `pi install npm:pi-messenger` as the primary install method.
14
+
3
15
  ## [0.8.2] - 2026-02-01
4
16
 
5
17
  ### Fixed
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p>
2
- <img src="banner.png" alt="pi-messenger" width="1100">
2
+ <img src="https://raw.githubusercontent.com/nicobailon/pi-messenger/main/banner.png" alt="pi-messenger" width="1100">
3
3
  </p>
4
4
 
5
5
  # Pi Messenger
@@ -45,12 +45,16 @@ pi_messenger({ action: "work", autonomous: true })
45
45
 
46
46
  > **Note:** Crew agents (planner, workers, reviewers) automatically join the mesh as their first action.
47
47
 
48
- ## Install
49
-
50
- Copy to your extensions directory and restart pi:
48
+ ## Installation
51
49
 
50
+ ```bash
51
+ pi install npm:pi-messenger
52
52
  ```
53
- ~/.pi/agent/extensions/pi-messenger/
53
+
54
+ To remove:
55
+
56
+ ```bash
57
+ npx pi-messenger --remove
54
58
  ```
55
59
 
56
60
  After joining, your agent name appears in the status bar:
package/install.mjs ADDED
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * pi-messenger installer
5
+ *
6
+ * Copies the npm package contents to ~/.pi/agent/extensions/pi-messenger.
7
+ * No git dependency — the npm package IS the source.
8
+ *
9
+ * Usage:
10
+ * npx pi-messenger # Install or update
11
+ * npx pi-messenger --remove # Remove the extension
12
+ */
13
+
14
+ import * as fs from "node:fs";
15
+ import * as path from "node:path";
16
+ import * as os from "node:os";
17
+ import { fileURLToPath } from "node:url";
18
+
19
+ const __filename = fileURLToPath(import.meta.url);
20
+ const PACKAGE_DIR = path.dirname(__filename);
21
+ const EXTENSION_DIR = path.join(os.homedir(), ".pi", "agent", "extensions", "pi-messenger");
22
+
23
+ const pkg = JSON.parse(fs.readFileSync(path.join(PACKAGE_DIR, "package.json"), "utf-8"));
24
+ const VERSION = pkg.version;
25
+
26
+ const args = process.argv.slice(2);
27
+ const isRemove = args.includes("--remove") || args.includes("-r");
28
+ const isHelp = args.includes("--help") || args.includes("-h");
29
+
30
+ if (isHelp) {
31
+ console.log(`
32
+ pi-messenger v${VERSION} - Multi-agent coordination for pi
33
+
34
+ Usage:
35
+ npx pi-messenger Install or update
36
+ npx pi-messenger --remove Remove the extension
37
+ npx pi-messenger --help Show this help
38
+
39
+ Installation directory: ${EXTENSION_DIR}
40
+ `);
41
+ process.exit(0);
42
+ }
43
+
44
+ if (isRemove) {
45
+ if (fs.existsSync(EXTENSION_DIR)) {
46
+ fs.rmSync(EXTENSION_DIR, { recursive: true });
47
+ console.log("Removed pi-messenger from " + EXTENSION_DIR);
48
+ } else {
49
+ console.log("pi-messenger is not installed");
50
+ }
51
+ process.exit(0);
52
+ }
53
+
54
+ // Already running from the extension dir (e.g. local dev)
55
+ if (path.resolve(PACKAGE_DIR) === path.resolve(EXTENSION_DIR)) {
56
+ console.log(`Already installed at ${EXTENSION_DIR} (v${VERSION})`);
57
+ process.exit(0);
58
+ }
59
+
60
+ const isUpdate = fs.existsSync(EXTENSION_DIR);
61
+
62
+ // Warn if existing install is a git clone from the old installer
63
+ if (isUpdate && fs.existsSync(path.join(EXTENSION_DIR, ".git"))) {
64
+ console.log("Existing install is a git clone. Remove it first:\n");
65
+ console.log(" npx pi-messenger --remove && npx pi-messenger");
66
+ process.exit(1);
67
+ }
68
+
69
+ // Clean slate for updates so removed files don't linger between versions
70
+ if (isUpdate) {
71
+ fs.rmSync(EXTENSION_DIR, { recursive: true });
72
+ }
73
+
74
+ const SKIP = new Set([".git", "node_modules", ".DS_Store"]);
75
+
76
+ function copyDir(src, dest) {
77
+ fs.mkdirSync(dest, { recursive: true });
78
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
79
+ if (SKIP.has(entry.name)) continue;
80
+ const srcPath = path.join(src, entry.name);
81
+ const destPath = path.join(dest, entry.name);
82
+ if (entry.isDirectory()) {
83
+ copyDir(srcPath, destPath);
84
+ } else {
85
+ fs.copyFileSync(srcPath, destPath);
86
+ }
87
+ }
88
+ }
89
+
90
+ copyDir(PACKAGE_DIR, EXTENSION_DIR);
91
+
92
+ const action = isUpdate ? "Updated" : "Installed";
93
+ console.log(`${action} pi-messenger v${VERSION} → ${EXTENSION_DIR}
94
+
95
+ Tools: pi_messenger
96
+ Commands: /messenger, /messenger config
97
+ Docs: ${EXTENSION_DIR}/README.md`);
package/package.json CHANGED
@@ -1,10 +1,17 @@
1
1
  {
2
2
  "name": "pi-messenger",
3
- "version": "0.8.2",
3
+ "version": "0.9.0",
4
4
  "description": "Inter-agent messaging and file reservation system for pi coding agent",
5
5
  "type": "module",
6
- "pi": {
7
- "extensions": ["./index.ts"]
6
+ "author": "Nico Bailon",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/nicobailon/pi-messenger.git"
11
+ },
12
+ "homepage": "https://github.com/nicobailon/pi-messenger#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/nicobailon/pi-messenger/issues"
8
15
  },
9
16
  "keywords": [
10
17
  "pi-package",
@@ -13,8 +20,24 @@
13
20
  "extension",
14
21
  "messaging",
15
22
  "multi-agent",
16
- "coordination"
23
+ "coordination",
24
+ "ai",
25
+ "agents",
26
+ "cli"
17
27
  ],
18
- "author": "Nico Bailon",
19
- "license": "MIT"
28
+ "bin": {
29
+ "pi-messenger": "install.mjs"
30
+ },
31
+ "files": [
32
+ "*.ts",
33
+ "*.mjs",
34
+ "crew/**",
35
+ "skills/**",
36
+ "README.md",
37
+ "CHANGELOG.md",
38
+ "ARCHITECTURE.md"
39
+ ],
40
+ "pi": {
41
+ "extensions": ["./index.ts"]
42
+ }
20
43
  }
package/banner.png DELETED
Binary file
package/tsconfig.json DELETED
@@ -1,19 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "NodeNext",
5
- "moduleResolution": "NodeNext",
6
- "esModuleInterop": true,
7
- "strict": false,
8
- "skipLibCheck": true,
9
- "noEmit": true,
10
- "resolveJsonModule": true,
11
- "paths": {
12
- "@mariozechner/pi-coding-agent": ["/opt/homebrew/lib/node_modules/@mariozechner/pi-coding-agent/dist/index.d.ts"],
13
- "@mariozechner/pi-tui": ["/opt/homebrew/lib/node_modules/@mariozechner/pi-coding-agent/node_modules/@mariozechner/pi-tui/dist/index.d.ts"],
14
- "@sinclair/typebox": ["/opt/homebrew/lib/node_modules/@mariozechner/pi-coding-agent/node_modules/@sinclair/typebox/build/esm/index.d.mts"]
15
- },
16
- "baseUrl": "."
17
- },
18
- "include": ["*.ts"]
19
- }