@ouro.bot/cli 0.1.0-alpha.958 → 0.1.0-alpha.959
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/changelog.json
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_note": "This changelog is maintained as part of the PR/version-bump workflow. Agent-curated, not auto-generated. Agents read this file directly via read_file to understand what changed between versions.",
|
|
3
3
|
"versions": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.1.0-alpha.959",
|
|
6
|
+
"changes": [
|
|
7
|
+
"Butler no longer tells you he \"couldn't verify\" ordinary words like Client or Service: a word only counts as a name when the conversation never uses it as a plain word, and anything his own server tools read this turn counts as checked."
|
|
8
|
+
]
|
|
9
|
+
},
|
|
4
10
|
{
|
|
5
11
|
"version": "0.1.0-alpha.958",
|
|
6
12
|
"changes": [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<?xml version="1.0"?>
|
|
2
2
|
<Container version="2">
|
|
3
3
|
<Name>ouro-butler</Name>
|
|
4
|
-
<Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.
|
|
4
|
+
<Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.959</Repository>
|
|
5
5
|
<Registry>https://github.com/ourostack/ouroboros/pkgs/container/ouroboros-butler</Registry>
|
|
6
6
|
<Network>host</Network>
|
|
7
7
|
<Shell>sh</Shell>
|
|
@@ -106,6 +106,10 @@ const escapeRegExp = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
|
106
106
|
function mentions(haystack, name) {
|
|
107
107
|
return new RegExp(`(?<![\\p{L}\\p{N}])${escapeRegExp(name)}(?![\\p{L}\\p{N}])`, "iu").test(haystack);
|
|
108
108
|
}
|
|
109
|
+
/** Case-sensitive whole word: the text uses this word in lowercase ("the download client"), so it is an ordinary word there, not a name. */
|
|
110
|
+
function usesLowercase(text, name) {
|
|
111
|
+
return new RegExp(`(?<![\\p{L}\\p{N}])${escapeRegExp(name.toLowerCase())}(?![\\p{L}\\p{N}])`, "u").test(text);
|
|
112
|
+
}
|
|
109
113
|
/** Ordinary sentence openers that strict mode still does not take for names. */
|
|
110
114
|
exports.STRICT_OPENERS = new Set("too mock very just same such quite rather really kind sort bit less fairly mostly almost simply much little big small high low hard pure plain cheap hmm hm well okay ok yes yeah sure right also great nice cool done sorry thanks thank perfect fine good alright first second third then now so short quick".split(" "));
|
|
111
115
|
const STRICT_SIGN = /^(?:\s*[,:\u2014\u2013]|\s+(?:if|for)\s)/;
|
|
@@ -155,11 +159,12 @@ function candidateNames(text, strict = false) {
|
|
|
155
159
|
* The one name finder: the runtime check below and the replay gate (which runs this file from the shipped release) both call it.
|
|
156
160
|
* Italic actions are blanked first. `strict` is set when the person asked for names. `prose` adds lowercase names in plain prose,
|
|
157
161
|
* for a reply written before any lookup. `reference` is text whose names count in the reply in any case: a name it holds that the
|
|
158
|
-
* reply typed in lowercase ("eithan" for "Eithan") is still a name.
|
|
162
|
+
* reply typed in lowercase ("eithan" for "Eithan") is still a name, unless the reference itself also uses it as a lowercase word.
|
|
159
163
|
*/
|
|
160
164
|
function namesIn(text, options = {}) {
|
|
161
165
|
const body = text.replace(ITALIC_ACTION, (action) => " ".repeat(action.length));
|
|
162
|
-
const
|
|
166
|
+
const reference = options.reference;
|
|
167
|
+
const referenced = reference ? candidateNames(reference).filter((name) => mentions(body, name) && !usesLowercase(reference, name)) : [];
|
|
163
168
|
const found = [...candidateNames(body, options.strict), ...lowercaseListNames(body), ...(options.prose ? lowercaseProseNames(body) : []), ...referenced];
|
|
164
169
|
return found.filter((name, index) => found.findIndex((other) => other.toLowerCase() === name.toLowerCase()) === index);
|
|
165
170
|
}
|
|
@@ -279,7 +284,7 @@ function sourceGroundingFinding(input) {
|
|
|
279
284
|
: `${named} do not appear in anything you looked up this turn, so they may be made up. check them against the source you read, drop the ones it does not support, or look them up, then settle again.`,
|
|
280
285
|
};
|
|
281
286
|
}
|
|
282
|
-
const unsourced = names.filter((name) => mentions(input.userText, name) && !mentions(lookedUp, name) && claimsSomethingAbout(input.answer, name));
|
|
287
|
+
const unsourced = names.filter((name) => mentions(input.userText, name) && !mentions(lookedUp, name) && !mentions(houseRead, name) && !mentions(otherRead, name) && claimsSomethingAbout(input.answer, name));
|
|
283
288
|
if (answerCue && lookups.length === 0 && unsourced.length > 0) {
|
|
284
289
|
return {
|
|
285
290
|
kind: "unsourced_claim", names: unsourced, lookups: 0,
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ouro.bot/cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.959",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@ouro.bot/cli",
|
|
9
|
-
"version": "0.1.0-alpha.
|
|
9
|
+
"version": "0.1.0-alpha.959",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sdk": "^0.78.0",
|
|
12
12
|
"@azure/identity": "^4.13.0",
|