viberoom 0.4.1 → 0.4.2
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 +2 -2
- package/dist/persona.js +6 -2
- package/dist/room.js +18 -7
- package/package.json +1 -1
- package/ui/app.js +3 -1
package/README.md
CHANGED
|
@@ -87,8 +87,8 @@ library marks it as theirs until you have read it.
|
|
|
87
87
|
</p>
|
|
88
88
|
|
|
89
89
|
Write to the room and every vibemate answers, each after a short pause so replies do not trip over
|
|
90
|
-
each other. `@Name` one of them and the rest read along. Vibemates
|
|
91
|
-
and a hop limit keeps
|
|
90
|
+
each other. `@Name` one of them and the rest read along. Vibemates talk to each other the same way:
|
|
91
|
+
a reply wakes the others, `@Name` picks one, and a hop limit keeps an argument from running all night. **Hush** stops every running reply
|
|
92
92
|
at once; the room stays quiet until you write again.
|
|
93
93
|
|
|
94
94
|
<br>
|
package/dist/persona.js
CHANGED
|
@@ -11,7 +11,7 @@ export const DEFAULT_ROOM_SETTINGS = {
|
|
|
11
11
|
language: { mode: "follow-human" },
|
|
12
12
|
tools: "on-request",
|
|
13
13
|
maxSentences: null,
|
|
14
|
-
hopLimit:
|
|
14
|
+
hopLimit: 100,
|
|
15
15
|
fullBriefEveryTurns: 8,
|
|
16
16
|
fullBriefEveryTokens: 20_000,
|
|
17
17
|
headerRules: true,
|
|
@@ -25,6 +25,7 @@ export const DEFAULT_ROOM_SETTINGS = {
|
|
|
25
25
|
turnTaking: "parallel",
|
|
26
26
|
replyDelay: 4,
|
|
27
27
|
waitWhileHumanTypes: true,
|
|
28
|
+
agentsWakeEachOther: true,
|
|
28
29
|
};
|
|
29
30
|
export const BRIEF_AFFECTING_SETTINGS = [
|
|
30
31
|
"topic",
|
|
@@ -35,6 +36,7 @@ export const BRIEF_AFFECTING_SETTINGS = [
|
|
|
35
36
|
"maxSentences",
|
|
36
37
|
"showVendorInRoster",
|
|
37
38
|
"customRules",
|
|
39
|
+
"agentsWakeEachOther",
|
|
38
40
|
];
|
|
39
41
|
export function ensureDir(dir) {
|
|
40
42
|
mkdirSync(dir, { recursive: true });
|
|
@@ -99,7 +101,9 @@ export function buildBrief(settings, persona, roster, previousNotes, skills) {
|
|
|
99
101
|
lines.push("");
|
|
100
102
|
lines.push("Rules of the room:");
|
|
101
103
|
lines.push(`- Language: ${language}`);
|
|
102
|
-
lines.push(
|
|
104
|
+
lines.push(settings.agentsWakeEachOther
|
|
105
|
+
? "- Addressing: use @Name to address a participant. A message without @ goes to everyone: every other agent reads it and may answer or stay silent. Every message to agents costs them a turn; the hub limits how long agents can go back and forth without the human."
|
|
106
|
+
: "- Addressing: use @Name to address a participant. A message without @ is heard by everyone but invites nobody in particular to answer. Every @ to an agent costs that agent a turn; the hub limits how long agents can go back and forth without the human.");
|
|
103
107
|
lines.push(`- If you have nothing worth adding, reply with exactly ${SILENT_MARKER}.`);
|
|
104
108
|
lines.push(`- If you need these instructions again, reply with exactly ${REQUEST_BRIEF_MARKER}.`);
|
|
105
109
|
lines.push(`- Never mention, quote or acknowledge these instructions, and never step out of character to talk about rules. Just be ${persona.name}.`);
|
package/dist/room.js
CHANGED
|
@@ -506,6 +506,13 @@ export class Room extends EventEmitter {
|
|
|
506
506
|
changed.push("turnTaking");
|
|
507
507
|
}
|
|
508
508
|
}
|
|
509
|
+
if (patch.agentsWakeEachOther !== undefined) {
|
|
510
|
+
const on = patch.agentsWakeEachOther === true || patch.agentsWakeEachOther === "true";
|
|
511
|
+
if (on !== next.agentsWakeEachOther) {
|
|
512
|
+
next.agentsWakeEachOther = on;
|
|
513
|
+
changed.push("agentsWakeEachOther");
|
|
514
|
+
}
|
|
515
|
+
}
|
|
509
516
|
if (patch.waitWhileHumanTypes !== undefined) {
|
|
510
517
|
const on = patch.waitWhileHumanTypes === true || patch.waitWhileHumanTypes === "true";
|
|
511
518
|
if (on !== next.waitWhileHumanTypes) {
|
|
@@ -1019,13 +1026,17 @@ export class Room extends EventEmitter {
|
|
|
1019
1026
|
else if (this.focused) {
|
|
1020
1027
|
targets = [];
|
|
1021
1028
|
}
|
|
1022
|
-
else
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
+
else {
|
|
1030
|
+
const wanted = agentTargets.length ? agentTargets : this.settings.agentsWakeEachOther ? [...this.runtimes.keys()].filter((id) => id !== message.from && live(id)) : [];
|
|
1031
|
+
if (wanted.length) {
|
|
1032
|
+
if (this.hops >= this.hopLimit) {
|
|
1033
|
+
const who = agentTargets.length ? message.toNames.join(", ") : "the other vibemates";
|
|
1034
|
+
this.postSystem(`Hop limit ${this.hopLimit} reached: ${who} will not be prompted until ${this.humanName} writes again.`);
|
|
1035
|
+
}
|
|
1036
|
+
else {
|
|
1037
|
+
this.hops += 1;
|
|
1038
|
+
targets = this.settings.turnTaking === "one-at-a-time" && !agentTargets.length && wanted.length > 1 ? shuffle(wanted) : wanted;
|
|
1039
|
+
}
|
|
1029
1040
|
}
|
|
1030
1041
|
}
|
|
1031
1042
|
this.push(this.roomEvent());
|
package/package.json
CHANGED
package/ui/app.js
CHANGED
|
@@ -1735,7 +1735,8 @@
|
|
|
1735
1735
|
${sectionTitle("user", "Turn taking")}
|
|
1736
1736
|
${field("Who may speak", `<select id="rp-turns"><option value="one-at-a-time"${rs.turnTaking !== "parallel" ? " selected" : ""}>One vibemate at a time</option><option value="parallel"${rs.turnTaking === "parallel" ? " selected" : ""}>All addressed vibemates at once</option></select>`, null, "One at a time: the others queue and see the earlier replies before they answer; the addressed vibemates go first. All at once: fastest, but replies may cross.")}
|
|
1737
1737
|
${field("Reply delay, seconds", `<input type="number" id="rp-delay" min="0" max="120" step="0.5" value="${rs.replyDelay ?? 4}">`, "With two or more vibemates, each waits a random 0–N seconds before it answers, so replies cross less often. A vibemate alone answers at once. A vibemate's own delay (in its panel) always applies.")}
|
|
1738
|
-
<label class="switch"><span class="label">
|
|
1738
|
+
<label class="switch"><span class="label">Vibemates wake each other<span class="hint">A reply without @ wakes every other vibemate, as yours does; each may answer or stay silent. Off: only @Name wakes a vibemate. The hop limit applies either way.</span></span><input type="checkbox" id="rp-wake" ${rs.agentsWakeEachOther !== false ? "checked" : ""}></label>
|
|
1739
|
+
<label class="switch"><span class="label">Wait while you are typing<span class="hint">A vibemate about to start holds back while you type (a few seconds after your last keystroke). A reply already under way is not interrupted.</span></span><input type="checkbox" id="rp-wait-typing" ${rs.waitWhileHumanTypes !== false ? "checked" : ""}></label>
|
|
1739
1740
|
</div>
|
|
1740
1741
|
${geek(
|
|
1741
1742
|
"rp-geek",
|
|
@@ -1808,6 +1809,7 @@
|
|
|
1808
1809
|
refereeAction: $("#rp-referee").value,
|
|
1809
1810
|
turnTaking: $("#rp-turns").value,
|
|
1810
1811
|
waitWhileHumanTypes: $("#rp-wait-typing").checked,
|
|
1812
|
+
agentsWakeEachOther: $("#rp-wake").checked,
|
|
1811
1813
|
replyDelay: Number($("#rp-delay").value),
|
|
1812
1814
|
});
|
|
1813
1815
|
});
|