@tritard/waterbrother 0.16.40 → 0.16.41

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 CHANGED
@@ -304,6 +304,10 @@ Current Telegram behavior:
304
304
  - room administration is owner-only, and only owners/editors can hold the operator lock
305
305
  - `/room` status now shows the active executor surface plus provider/model/runtime identity
306
306
  - repo-first concept resolution now covers Waterbrother itself, Roundtable, Telegram, shared rooms, the gateway, runtime profiles, approvals, and sessions
307
+ - collaboration how-to questions now answer from local state too, including:
308
+ - how to invite a partner
309
+ - how to share the current project
310
+ - how to make a new project
307
311
  - in Telegram groups, Waterbrother only responds when directly targeted: slash commands, `@botname` mentions, or replies to a bot message
308
312
  - in Telegram groups, directly targeted messages are now classified as chat, planning, or execution; explicit execution should use `/run <prompt>`
309
313
  - in Telegram group `chat` or `plan` flows, targeted Waterbrother/project questions are now answered directly from local repo state instead of returning only a generic planner hint
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tritard/waterbrother",
3
- "version": "0.16.40",
3
+ "version": "0.16.41",
4
4
  "description": "Waterbrother: bring-your-own-model coding CLI with local tools, sessions, operator modes, and approval controls",
5
5
  "type": "module",
6
6
  "bin": {
@@ -258,6 +258,9 @@ export function resolveLocalConceptQuestion(text = "", manifest = {}) {
258
258
  const mentionsRoundtable = /\bround[\s-]?table\b/.test(lower);
259
259
  const asksWhatIs = /^(what('| i)?s|what is|tell me about|explain)\b/.test(lower) || /\bwhat is\b/.test(lower);
260
260
  const asksHowToUseRoundtable = mentionsRoundtable && /\b(how do i|how to|add to|join|use|set up|enable|create)\b/.test(lower);
261
+ const asksHowToInvitePartner = /\b(invite|add)\b/.test(lower) && /\b(partner|teammate|teammates|teammember|collaborator|member)\b/.test(lower);
262
+ const asksHowToShareProject = /\b(how do i|how to|share)\b/.test(lower) && /\b(this project|project)\b/.test(lower);
263
+ const asksHowToMakeProject = /\b(how do i|how to|make|create|start)\b/.test(lower) && /\b(new project|project)\b/.test(lower);
261
264
  const sourcesFor = (...keys) => keys.map((key) => manifest.sourceHints?.[key]).filter(Boolean);
262
265
  const withSources = (lines, sources = []) => [
263
266
  ...lines,
@@ -280,6 +283,35 @@ export function resolveLocalConceptQuestion(text = "", manifest = {}) {
280
283
  ], sources);
281
284
  }
282
285
 
286
+ if (asksHowToInvitePartner) {
287
+ const sources = sourcesFor("roundtableDocs", "telegramDocs", "sharedState");
288
+ return withSources([
289
+ "To collaborate with a Telegram partner, there are two separate steps.",
290
+ "First, add the human to the Telegram group/chat itself using normal Telegram controls.",
291
+ "Second, add them to the Waterbrother shared room with `waterbrother room invite <member-id> [owner|editor|observer]` or `/invite <user-id> [owner|editor|observer]`.",
292
+ "Then the invited person accepts with `waterbrother room invite accept <invite-id>` or `/accept-invite <invite-id>`.",
293
+ "If this repo is not shared yet, start with `waterbrother project share`."
294
+ ], sources);
295
+ }
296
+
297
+ if (asksHowToShareProject) {
298
+ const sources = sourcesFor("roundtableDocs", "sharedState");
299
+ return withSources([
300
+ "To share the current project, run `waterbrother project share` in the repo.",
301
+ "In an interactive terminal, Waterbrother will guide room mode, room runtime profile, and the first invite.",
302
+ "After that, use `waterbrother room status`, `waterbrother room invite <member-id> [owner|editor|observer]`, and `waterbrother room mode <chat|plan|execute>` to manage collaboration."
303
+ ], sources);
304
+ }
305
+
306
+ if (asksHowToMakeProject) {
307
+ const sources = sourcesFor("roundtableDocs", "telegramDocs", "readme");
308
+ return withSources([
309
+ "To make a new project from the TUI, use `/new-project <name>`.",
310
+ "That creates a folder on `~/Desktop/<name>`, switches the live session into it, and now asks whether the new project should be shared.",
311
+ "From Telegram, use `/new-project <name>` to create the folder and switch the linked session there. Then use `waterbrother project share` or the TUI sharing prompt if you want collaboration enabled."
312
+ ], sources);
313
+ }
314
+
283
315
  if ((/\bshared project\b/.test(lower) || /\bshared room\b/.test(lower) || /\broom mode\b/.test(lower)) && asksWhatIs) {
284
316
  const sources = sourcesFor("sharedState", "roundtableDocs", "roundtable");
285
317
  return withSources([