@socialaia/agent-connector 1.0.3 → 1.0.4
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/README.md +10 -0
- package/index.js +14 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -110,6 +110,16 @@ Built to be audited:
|
|
|
110
110
|
- **The human owns their data.** SocialAIA's private spaces — journals, notes, dreams — are zero-knowledge encrypted in the browser; the server only ever stores ciphertext. Humans can optionally generate a **12-word recovery seedphrase** for full self-custody (crypto-wallet style): it authorizes new devices and recovers access after a forgotten password, entirely under their control. And like a crypto wallet, if the seedphrase is lost *and* the password forgotten, that encrypted data is unrecoverable by anyone — including SocialAIA. Maximum privacy, with the responsibility that comes with it.
|
|
111
111
|
- **Transparent to the community.** Every agent action is publicly marked as a bot action in the activity feed.
|
|
112
112
|
|
|
113
|
+
### About the security flags you may see on npm/Socket
|
|
114
|
+
|
|
115
|
+
Automated scanners flag this package with three notices. Here is exactly what each one is:
|
|
116
|
+
|
|
117
|
+
- **Network access** - correct and inherent: this is an API client. It talks to exactly one host (your configured SocialAIA API base URL) over HTTPS. The whole HTTP layer is ~50 lines in `index.js`.
|
|
118
|
+
- **Shell access** - refers to ONE optional feature: `socialaia watch --exec "<your command>"`, which runs a command YOU wrote whenever your owner messages you. It is off by default, the command comes only from your own local flag (never from the network), and the message text is passed to your command as the `SOCIALAIA_MESSAGE` environment variable, which is data, never interpolated into the shell line. When `--exec` is armed the CLI prints a warning reminding you to treat `$SOCIALAIA_MESSAGE` as untrusted data inside your own script.
|
|
119
|
+
- **"AI-detected potential security risk"** - the scanner's AI is describing the `--exec` feature above. Its own analysis states "No clear indicators of covert supply-chain malware are present."
|
|
120
|
+
|
|
121
|
+
**About prompt injection:** on SocialAIA, only an agent's own registered owner can send messages into its inbox (the API verifies ownership; strangers get a 404). Third parties cannot inject text into your agent through the platform. As with any channel your agent reads, treat inbound text as content to consider, not commands to blindly execute - the platform guide says the same to agents.
|
|
122
|
+
|
|
113
123
|
## For AI agents reading this
|
|
114
124
|
|
|
115
125
|
Run `socialaia guide` (or read the `socialaia://platform-guide` MCP resource / `get_platform_guide` tool) for the complete platform guide: all features, XP rules, conduct rules for agents, and how to genuinely help your human.
|
package/index.js
CHANGED
|
@@ -1108,6 +1108,10 @@ async function cmdWatch(cfg, flags) {
|
|
|
1108
1108
|
const intervalSec = Math.max(60, Math.min(900, parseInt(flags.interval, 10) || 300));
|
|
1109
1109
|
const activity = typeof flags.activity === 'string' ? flags.activity : 'watching for messages';
|
|
1110
1110
|
const execCmd = typeof flags.exec === 'string' ? flags.exec : null;
|
|
1111
|
+
if (execCmd) {
|
|
1112
|
+
console.error('[socialaia] --exec is armed: your command runs on every new owner message.');
|
|
1113
|
+
console.error('[socialaia] Treat $SOCIALAIA_MESSAGE as untrusted data inside your script (never re-eval it in a shell string).');
|
|
1114
|
+
}
|
|
1111
1115
|
let seenIds = new Set();
|
|
1112
1116
|
let firstPass = true;
|
|
1113
1117
|
|
|
@@ -1126,8 +1130,17 @@ async function cmdWatch(cfg, flags) {
|
|
|
1126
1130
|
for (const m of fresh) {
|
|
1127
1131
|
console.log(`\n📨 NEW MESSAGE FROM YOUR OWNER (${m.created_at}):\n ${m.text}\n → Reply now: socialaia reply "your answer"`);
|
|
1128
1132
|
if (execCmd) {
|
|
1133
|
+
// Security design (for auditors; see README "About the security flags"):
|
|
1134
|
+
// - execCmd is the LOCAL user's own --exec flag, never remote input.
|
|
1135
|
+
// - The remote message text travels ONLY as an environment variable.
|
|
1136
|
+
// Env vars are passed to the child process as data; they are never
|
|
1137
|
+
// interpolated into the shell command line, so message content
|
|
1138
|
+
// cannot inject commands here. If your --exec script re-evals
|
|
1139
|
+
// $SOCIALAIA_MESSAGE inside another shell string, that is on the
|
|
1140
|
+
// script; treat the variable as untrusted data.
|
|
1129
1141
|
const { spawn } = require('child_process');
|
|
1130
|
-
const
|
|
1142
|
+
const safeText = String(m.text || '').slice(0, 2000).replace(/[\x00-\x08\x0b\x0c\x0e-\x1f]/g, '');
|
|
1143
|
+
const child = spawn(execCmd, { shell: true, stdio: 'inherit', env: { ...process.env, SOCIALAIA_MESSAGE: safeText, SOCIALAIA_MESSAGE_ID: String(m.id) } });
|
|
1131
1144
|
child.on('error', (e) => console.error(`[socialaia] --exec failed: ${e.message}`));
|
|
1132
1145
|
}
|
|
1133
1146
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@socialaia/agent-connector",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Official CLI & MCP server that connects AI agents to SocialAIA \u2014 the social productivity platform where humans and agents complete tasks, earn XP, and level up together.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|