botmux 2.105.0 → 2.105.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.
@@ -68,7 +68,8 @@ export interface V2IsolationContext {
68
68
  * (the agent's botmux CLI needs its config/registry/pm2/data structure) — instead its
69
69
  * cross-bot-SENSITIVE parts are denied surgically: bots.json, logs, other bots' lark
70
70
  * configs / session files / send-creds / BOT_HOMEs, and the shared conversation-content
71
- * dirs. Own BOT_HOME + own session/cred + config/registry stay readable by default.
71
+ * dirs (frozen-cards, queues, attachments, whiteboards, …). Own BOT_HOME + own
72
+ * session/cred + own attachments bucket + config/registry stay readable by default.
72
73
  * Plus the system-credential stores. Everything else (code/repos/runtime) stays open.
73
74
  *
74
75
  * NOTE: per-bot session stores (`sessions-<appId>.json`) are denied by PATTERN — see
@@ -1 +1 @@
1
- {"version":3,"file":"read-isolation.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;8EAG8E;AAC9E,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED;;;;;;;;;;;;;wBAawB;AACxB,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG9E;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED;;+EAE+E;AAC/E,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB;;+FAE2F;IAC3F,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAC;IACvB;;kFAE8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;uFAYuF;AACvF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAuDlE;AAOD;;;;;;;;;;;2EAW2E;AAC3E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAUpE;AAED;;;;;;;uEAOuE;AACvE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG;IACzD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAqBA;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB;qEACiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,iBAAiB,EAAE,OAAO,CAAC;CAC5B,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAiBlD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,GAAE,MAAM,EAAO,EACzB,cAAc,GAAE,MAAM,EAAO,EAC7B,YAAY,GAAE,MAAM,EAAO,EAC3B,WAAW,GAAE,MAAM,EAAO,GACzB,MAAM,CAwBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE1F"}
1
+ {"version":3,"file":"read-isolation.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;8EAG8E;AAC9E,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED;;;;;;;;;;;;;wBAawB;AACxB,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG9E;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED;;+EAE+E;AAC/E,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB;;+FAE2F;IAC3F,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAC;IACvB;;kFAE8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;uFAauF;AACvF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAwFlE;AAOD;;;;;;;;;;;2EAW2E;AAC3E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAmBpE;AAED;;;;;;;uEAOuE;AACvE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG;IACzD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAyBA;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB;qEACiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,iBAAiB,EAAE,OAAO,CAAC;CAC5B,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAiBlD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,GAAE,MAAM,EAAO,EACzB,cAAc,GAAE,MAAM,EAAO,EAC7B,YAAY,GAAE,MAAM,EAAO,EAC3B,WAAW,GAAE,MAAM,EAAO,GACzB,MAAM,CAwBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE1F"}
@@ -79,7 +79,8 @@ export function botHomePath(botmuxHome, appId) {
79
79
  * (the agent's botmux CLI needs its config/registry/pm2/data structure) — instead its
80
80
  * cross-bot-SENSITIVE parts are denied surgically: bots.json, logs, other bots' lark
81
81
  * configs / session files / send-creds / BOT_HOMEs, and the shared conversation-content
82
- * dirs. Own BOT_HOME + own session/cred + config/registry stay readable by default.
82
+ * dirs (frozen-cards, queues, attachments, whiteboards, …). Own BOT_HOME + own
83
+ * session/cred + own attachments bucket + config/registry stay readable by default.
83
84
  * Plus the system-credential stores. Everything else (code/repos/runtime) stays open.
84
85
  *
85
86
  * NOTE: per-bot session stores (`sessions-<appId>.json`) are denied by PATTERN — see
@@ -128,10 +129,43 @@ export function buildV2DenyPaths(ctx) {
128
129
  `${bh}/bots`,
129
130
  `${sd}/sessions.json`, // legacy shared store
130
131
  `${sd}/frozen-cards`, // conversation content (all bots')
131
- `${sd}/turn-sends`,
132
+ `${sd}/turn-sends`, // CLI only APPENDS markers here — read-deny is safe
132
133
  `${sd}/crash-diagnostics`,
134
+ // All bots' Feishu-uploaded files. Own per-appId bucket (attachments/<self>/) is
135
+ // re-allowed via buildV2CarveOuts; siblings' buckets + the legacy flat
136
+ // per-messageId layout stay denied.
133
137
  `${sd}/attachments`,
134
- `${sd}/whiteboards`,
138
+ // whiteboards/ is deliberately NOT denied (owner decision): whiteboards are
139
+ // shared content, meant to be visible across the bots that collaborate on
140
+ // them. NOTE the store is currently GLOBAL (no per-chat scoping), so a
141
+ // sandboxed bot can `whiteboard list`/`read` boards from other chats too —
142
+ // an accepted tradeoff until whiteboards are bucketed by chat/appId. Also
143
+ // un-denying the read avoids the read-modify-write clobber a deny would cause.
144
+ // Queued inbound messages (queues/<rootMessageId>.jsonl = full LarkMessage
145
+ // content for EVERY bot). Daemon-side only — the CLI never reads it.
146
+ `${sd}/queues`,
147
+ // Seatbelt profiles + reattach markers: filenames/rules enumerate sibling
148
+ // session ids and appIds. sandbox-exec parses the profile BEFORE applying it,
149
+ // and the markers are read by the daemon — the sandboxed CLI never reads these.
150
+ `${sd}/read-isolation`,
151
+ // NOTE: schedules.json is deliberately NOT denied. It's a read-modify-write
152
+ // store: denying the read makes a sandboxed `botmux schedule` load an empty
153
+ // map and then overwrite the shared file, silently wiping EVERY bot's tasks
154
+ // (read-modify-write degraded to write-only). We accept the minor leak
155
+ // (isolated bots can read others' scheduled prompts) until schedule-store
156
+ // fail-closes on read errors (ENOENT vs EPERM). See PR #387 review.
157
+ `${bh}/feishu-session.json`, // Feishu web login session (setup automation) — can mint bots
158
+ // The dashboard admin credentials. `.dashboard-secret` signs the loopback-HMAC
159
+ // that gates `/__cli/rotate` AND the daemon-IPC write-link routes — the ipc-server
160
+ // comment (dashboard-ipc-server.ts) explicitly relies on the sandbox hiding it to
161
+ // "keep a sandboxed worker from minting write tokens" for sessions it doesn't own
162
+ // (a cross-bot escalation reachable by a semi-trusted conversant driving the agent).
163
+ // Only owner-facing admin verbs (`botmux dashboard`/`term-link`) sign with it — the
164
+ // agent's send/list/status never do, so denying it costs the agent nothing. Its
165
+ // sibling `.dashboard-token` (dashboard bearer) is denied for the same reason;
166
+ // `.dashboard-port` is just a port number (no credential value) → left readable.
167
+ `${bh}/.dashboard-secret`,
168
+ `${bh}/.dashboard-token`,
135
169
  // NOTE: extraDenyPaths (readDenyExtraPaths) are NOT here — they go to
136
170
  // buildV2CarveOuts().finalDenyPaths so they win over the own-BOT_HOME allow.
137
171
  ]
@@ -163,6 +197,15 @@ export function buildV2DenyRegexes(ctx) {
163
197
  // bots.json.bak / .tmp / .bak.<suffix> but NOT the exact bots.json (that is
164
198
  // the subpath deny's job) and NOT an unrelated `bots.jsonx`.
165
199
  `^${escapeForRegex(bh)}/bots\\.json\\.`,
200
+ // LEGACY pre-BOT_HOME send-cred files (`<sd>/.send-cred-<appId>`): current
201
+ // builds write send-cred.json inside BOT_HOME, but leftovers from older
202
+ // builds still carry live per-bot send credentials at the data root.
203
+ `^${escapeForRegex(sd)}/\\.send-cred-`,
204
+ // Per-bot user display-name caches (`identities-<appId>.json`): open_id→name
205
+ // PII of every bot's interlocutors. The CLI never reads them (daemon-side
206
+ // prompt injection only), so the OWN file gets NO carve-out — the whole
207
+ // filename class is denied.
208
+ `^${escapeForRegex(sd)}/identities-[^/]+\\.json$`,
166
209
  ];
167
210
  }
168
211
  /** The v2 Seatbelt carve-outs that accompany {@link buildV2DenyPaths} +
@@ -186,10 +229,14 @@ export function buildV2CarveOuts(ctx) {
186
229
  // Own routing metadata (`botmux send` reads it to route replies); siblings'
187
230
  // stay denied by the buildV2DenyRegexes filename pattern.
188
231
  `${sd}/sessions-${self}.json`,
232
+ // Own Feishu-upload bucket (attachments/<appId>/<messageId>/…) — the agent must
233
+ // read files the user uploads in chat. getAttachmentsDir keys the bucket on the
234
+ // appId precisely so this spawn-time-static carve-out can exist.
235
+ `${sd}/attachments/${self}`,
189
236
  ],
190
237
  // file-read-metadata on the wholesale-denied parents so the CLI/skill can realpath()
191
238
  // through them WITHOUT `ls` (enumeration) leaking.
192
- traverseDirs: [`${bh}/bots`, `${h}/.lark-cli-bots`],
239
+ traverseDirs: [`${bh}/bots`, `${h}/.lark-cli-bots`, `${sd}/attachments`],
193
240
  finalDenyPaths: (ctx.extraDenyPaths ?? [])
194
241
  .map(normalizeIsolationPath)
195
242
  .filter((p) => !!p),
@@ -1 +1 @@
1
- {"version":3,"file":"read-isolation.js","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-isolation.js","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAk7DA,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAk2HrF;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8F7B"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAk7DA,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAo3HrF;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8F7B"}
package/dist/cli.js CHANGED
@@ -4172,6 +4172,11 @@ async function cmdQuoted(rest) {
4172
4172
  console.error('用法: botmux quoted <message_id> [--session-id <id>]');
4173
4173
  process.exit(1);
4174
4174
  }
4175
+ // Read isolation: register this bot from its own send-cred file so the Lark
4176
+ // client (getMessageDetail below) is available WITHOUT reading the denied
4177
+ // bots.json — same as cmdHistory / cmdSend. Missing this was why a sandboxed
4178
+ // isolated bot's `botmux quoted` failed "Bot not registered".
4179
+ await registerSelfFromCredFile();
4175
4180
  const { larkAppId: appId } = await resolveSessionAppId(sessionIdArg);
4176
4181
  const { getMessageDetail } = await import('./im/lark/client.js');
4177
4182
  const { expandMergeForward } = await import('./im/lark/merge-forward.js');
@@ -4195,6 +4200,20 @@ async function cmdQuoted(rest) {
4195
4200
  if (merged)
4196
4201
  rendered.content = merged.text;
4197
4202
  }
4203
+ // The referenced message's file/media resources arrive as key+name only. A
4204
+ // read-isolated agent can't call the Lark resource API itself (bots.json
4205
+ // creds are deny-read), so download the bytes HERE — via the bot client
4206
+ // registered above — into this bot's OWN attachment bucket
4207
+ // (attachments/<appId>/<messageId>/, read-allowed by its carve-out; sandbox
4208
+ // denies file *reads*, not writes). Surface the local paths so the agent can
4209
+ // actually open the file instead of only seeing its key.
4210
+ if (rendered.resources?.length) {
4211
+ const { downloadResources } = await import('./core/session-manager.js');
4212
+ const { attachments, needLogin } = await downloadResources(appId, messageId, rendered.resources);
4213
+ rendered.attachments = attachments;
4214
+ if (needLogin)
4215
+ rendered.needLogin = true;
4216
+ }
4198
4217
  console.log(JSON.stringify(rendered, null, 2));
4199
4218
  }
4200
4219
  catch (err) {