@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 +4 -0
- package/package.json +1 -1
- package/src/self-awareness.js +32 -0
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
package/src/self-awareness.js
CHANGED
|
@@ -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([
|