@ouro.bot/cli 0.1.0-alpha.433 → 0.1.0-alpha.435
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
|
@@ -6,7 +6,7 @@ Ouroboros is a TypeScript harness for daemon-managed agents that live in externa
|
|
|
6
6
|
|
|
7
7
|
## What The Runtime Looks Like
|
|
8
8
|
|
|
9
|
-
- `npx ouro.bot` is the bootstrap path.
|
|
9
|
+
- `npx ouro.bot@latest` is the supported bootstrap path.
|
|
10
10
|
- `ouro` is the installed day-to-day command.
|
|
11
11
|
- `ouro up` starts the daemon from the installed production version, syncs the launcher, installs workflow helpers, and reconciles stale runtime state.
|
|
12
12
|
- `ouro dev` starts the daemon from a local repo build. It auto-builds from source, disables launchd auto-restart (so the installed daemon doesn't respawn underneath you), persists the repo path in `~/.ouro-cli/dev-config.json` for next time, and force-restarts the daemon. If you run `ouro dev` from inside the repo, it detects the CWD automatically. Run `ouro up` to return to production mode (this also cleans up `dev-config.json`).
|
|
@@ -142,15 +142,15 @@ For a clean smoke test, run from outside the repo:
|
|
|
142
142
|
|
|
143
143
|
```bash
|
|
144
144
|
cd ~
|
|
145
|
-
npx ouro.bot -v
|
|
146
|
-
npx ouro.bot up
|
|
145
|
+
npx ouro.bot@latest -v
|
|
146
|
+
npx ouro.bot@latest up
|
|
147
147
|
ouro -v
|
|
148
148
|
ouro status
|
|
149
149
|
```
|
|
150
150
|
|
|
151
151
|
Expected shape:
|
|
152
152
|
|
|
153
|
-
- `npx ouro.bot` and `ouro` report the same version.
|
|
153
|
+
- `npx ouro.bot@latest` and `ouro` report the same version.
|
|
154
154
|
- `ouro status` shows the daemon overview plus discovered agents, senses, and workers.
|
|
155
155
|
|
|
156
156
|
### Work On The Harness
|
|
@@ -209,7 +209,7 @@ ouro hook <event> --agent <name> # fire a lifecycle hook (SessionStart,
|
|
|
209
209
|
|
|
210
210
|
## Setting Up On Another Machine
|
|
211
211
|
|
|
212
|
-
To clone an existing agent onto a new machine (macOS, Linux, or Windows via WSL2), see **[docs/cross-machine-setup.md](docs/cross-machine-setup.md)**. The short version is bundle plus vault: `npx ouro.bot`, open the home deck, choose clone, enter the bundle's git remote URL, unlock the agent vault, refresh/verify credentials, and start with `ouro up`.
|
|
212
|
+
To clone an existing agent onto a new machine (macOS, Linux, or Windows via WSL2), see **[docs/cross-machine-setup.md](docs/cross-machine-setup.md)**. The short version is bundle plus vault: `npx ouro.bot@latest`, open the home deck, choose clone, enter the bundle's git remote URL, unlock the agent vault, refresh/verify credentials, and start with `ouro up`.
|
|
213
213
|
|
|
214
214
|
## The Agent's Inner Life
|
|
215
215
|
|
package/changelog.json
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
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.435",
|
|
6
|
+
"changes": [
|
|
7
|
+
"Structured agent-vault items like `providers/*` and `runtime/*` now take a direct Bitwarden `bw get item` lookup fast path before falling back to filtered search, so connect, auth, and runtime-config reads spend less time holding the vault lane for work that already has an exact item name.",
|
|
8
|
+
"The Bitwarden store only trusts that fast path on an exact name match and still falls back to the older filtered search on fuzzy hits, missing items, or malformed direct responses, so the speedup lands without weakening correctness or duplicate protection.",
|
|
9
|
+
"Hermetic built-runtime coverage now understands the newer direct item lookup path too, so the connect bay, startup provider checks, and vault-backed runtime reads are tested against the same Bitwarden command shape the shipped CLI now uses."
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"version": "0.1.0-alpha.434",
|
|
14
|
+
"changes": [
|
|
15
|
+
"The supported bootstrap command is now explicitly `npx ouro.bot@latest` across the wrapper hints, operator docs, architecture docs, and runtime fallback messages, so humans are steered onto the channel that actually lands on the current published runtime.",
|
|
16
|
+
"Release smoke now verifies the live `ouro.bot@latest` bootstrap path end to end instead of only checking that the wrapper package resolves, so a stale bootstrap channel cannot slip through publish unnoticed.",
|
|
17
|
+
"This release closes the installed-product gap found during dogfood after the CLI human-surface overhaul: `npx ouro.bot@latest` now reproduces the current runtime truth in docs, smoke coverage, and real-world operator instructions."
|
|
18
|
+
]
|
|
19
|
+
},
|
|
4
20
|
{
|
|
5
21
|
"version": "0.1.0-alpha.433",
|
|
6
22
|
"changes": [
|
|
@@ -3917,7 +3917,7 @@ async function runOuroCli(args, deps = (0, cli_defaults_1.createDefaultOuroCliDe
|
|
|
3917
3917
|
/* v8 ignore next 2 -- unreachable after exec replaces process @preserve */
|
|
3918
3918
|
return "";
|
|
3919
3919
|
}
|
|
3920
|
-
const message = "no installed version found. run: npx ouro.bot";
|
|
3920
|
+
const message = "no installed version found. run: npx ouro.bot@latest";
|
|
3921
3921
|
deps.writeStdout(message);
|
|
3922
3922
|
return message;
|
|
3923
3923
|
}
|
|
@@ -53,7 +53,7 @@ fi
|
|
|
53
53
|
# Fall back to installed version
|
|
54
54
|
ENTRY="$HOME/.ouro-cli/CurrentVersion/node_modules/@ouro.bot/cli/dist/heart/daemon/ouro-entry.js"
|
|
55
55
|
if [ ! -e "$ENTRY" ]; then
|
|
56
|
-
echo "ouro not installed. Run: npx ouro.bot" >&2
|
|
56
|
+
echo "ouro not installed. Run: npx ouro.bot@latest" >&2
|
|
57
57
|
exit 1
|
|
58
58
|
fi
|
|
59
59
|
exec node "$ENTRY" "$@"
|
|
@@ -131,6 +131,16 @@ function isBwConfigLogoutRequired(err) {
|
|
|
131
131
|
const message = err.message.toLowerCase();
|
|
132
132
|
return message.includes("logout") && message.includes("required");
|
|
133
133
|
}
|
|
134
|
+
function shouldPreferExactItemLookup(domain) {
|
|
135
|
+
return domain.includes("/");
|
|
136
|
+
}
|
|
137
|
+
function isBwDirectLookupFallbackError(err) {
|
|
138
|
+
const message = err.message.toLowerCase();
|
|
139
|
+
return (message.includes("bw cli error: not found") ||
|
|
140
|
+
message.includes("bw cli error: item not found") ||
|
|
141
|
+
message.includes("invalid json from bw get item") ||
|
|
142
|
+
message.includes("invalid item from bw get item"));
|
|
143
|
+
}
|
|
134
144
|
// ---------------------------------------------------------------------------
|
|
135
145
|
// Cross-process bw CLI lock
|
|
136
146
|
// ---------------------------------------------------------------------------
|
|
@@ -671,6 +681,19 @@ class BitwardenCredentialStore {
|
|
|
671
681
|
}
|
|
672
682
|
// --- Private ---
|
|
673
683
|
async findItemByDomain(domain, session) {
|
|
684
|
+
if (shouldPreferExactItemLookup(domain)) {
|
|
685
|
+
try {
|
|
686
|
+
const stdout = await execBw(["get", "item", domain], session, this.appDataDir);
|
|
687
|
+
const item = parseBwItem(stdout, "bw get item");
|
|
688
|
+
if (item.name === domain)
|
|
689
|
+
return item;
|
|
690
|
+
}
|
|
691
|
+
catch (error) {
|
|
692
|
+
const err = error;
|
|
693
|
+
if (!isBwDirectLookupFallbackError(err))
|
|
694
|
+
throw err;
|
|
695
|
+
}
|
|
696
|
+
}
|
|
674
697
|
const stdout = await execBw(["list", "items", "--search", domain], session, this.appDataDir);
|
|
675
698
|
const items = parseBwItems(stdout, "bw list items --search");
|
|
676
699
|
// Find exact match by name
|