@haven_ai/connect 0.0.0-dev.202610071649.8f72409 → 0.0.0-dev.202610071809.5460535
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 +7 -6
- package/dist/cli.cjs +10 -10
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +10 -10
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +10 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -385,8 +385,8 @@ and the API key travels beside it in a header.
|
|
|
385
385
|
|
|
386
386
|
`superseded_agent_ids` lists the other agent directories on this machine. A
|
|
387
387
|
re-run mints a NEW agent, and without `--replace` retires nothing, so those
|
|
388
|
-
older agents still hold live API and signing keys —
|
|
389
|
-
agent page if you meant to replace them. Empty on a clean first run; an empty
|
|
388
|
+
older agents still hold live API and signing keys — use **Remove agent…** on the
|
|
389
|
+
Haven agent page for each if you meant to replace them. Empty on a clean first run; an empty
|
|
390
390
|
list here is not a guarantee, since a scan that cannot read the credential root
|
|
391
391
|
also yields one rather than failing a completed setup.
|
|
392
392
|
|
|
@@ -539,8 +539,9 @@ already-configured machine behaves as follows (characterized in
|
|
|
539
539
|
[Running several agents in one runtime](#running-several-agents-in-one-runtime).
|
|
540
540
|
- **The previous agent is not revoked by a re-run — with or without
|
|
541
541
|
`--replace`.** Local retirement is local: its authority remains whatever
|
|
542
|
-
its on-chain rules and the Haven agent page say.
|
|
543
|
-
|
|
542
|
+
its on-chain rules and the Haven agent page say. Use **Remove agent…** on
|
|
543
|
+
the Haven agent page for agents you no longer use (or the superseded-agents
|
|
544
|
+
revoke on the setup screen). Connect never calls revoke — that
|
|
544
545
|
route is owner-authenticated, and an agent credential revoking a sibling
|
|
545
546
|
agent would be an agent editing its own authority.
|
|
546
547
|
- **A re-run never overwrites an existing credential file.** A write that would
|
|
@@ -689,8 +690,8 @@ terminal and refuses everywhere else, so a `superseded` directory now means
|
|
|
689
690
|
someone chose it — a `--replace` whose install failed, an older connector, or
|
|
690
691
|
a directory this scan could not classify. A superseded directory
|
|
691
692
|
whose key is still live is a FAILING check naming the agent id, with the
|
|
692
|
-
repair spelled out:
|
|
693
|
-
directory. An already-revoked one reports as informational; an unreachable
|
|
693
|
+
repair spelled out: use **Remove agent…** on the Haven agent page, then remove
|
|
694
|
+
the directory. An already-revoked one reports as informational; an unreachable
|
|
694
695
|
probe is a note, never a verdict. Connect never revokes or deletes
|
|
695
696
|
credentials itself — it reports, you decide. The setup completion output
|
|
696
697
|
names superseded agents the moment they are created, for the same reason.
|
package/dist/cli.cjs
CHANGED
|
@@ -620,9 +620,9 @@ var init_runtime_manifest = __esm({
|
|
|
620
620
|
mcpPackage: "@haven_ai/mcp",
|
|
621
621
|
mcpVersion: mcp.MCP_VERSION,
|
|
622
622
|
sdkPackage: "@haven_ai/sdk",
|
|
623
|
-
sdkVersion: "0.0.0-dev.
|
|
623
|
+
sdkVersion: "0.0.0-dev.202610071809.5460535",
|
|
624
624
|
signerPackage: "@haven_ai/signer",
|
|
625
|
-
signerVersion: "0.0.0-dev.
|
|
625
|
+
signerVersion: "0.0.0-dev.202610071809.5460535",
|
|
626
626
|
// Sourced from the SDK, never a literal (#1161). This field read '20.0.0'
|
|
627
627
|
// while every package's `engines` said `>=24` and the docs said `>=24.0.0`,
|
|
628
628
|
// so the guard that was supposed to enforce the floor waved Node v23 through
|
|
@@ -3418,7 +3418,7 @@ async function promptWiringCollisionResolution(collision, agentName, io) {
|
|
|
3418
3418
|
io.write(`Setting up "${agentName}" on the bare haven / haven-signer pair would replace that wiring.
|
|
3419
3419
|
`);
|
|
3420
3420
|
io.write(" r) replace \u2014 re-point haven / haven-signer at the new agent and retire the previous directory locally\n");
|
|
3421
|
-
io.write(" (tombstoned, local key files removed; you still
|
|
3421
|
+
io.write(" (tombstoned, local key files removed; you still use Remove agent\u2026 on the Haven agent page)\n");
|
|
3422
3422
|
io.write(` a) alongside \u2014 install as a named agent (suggested: ${collision.suggestedServerName}) with its own
|
|
3423
3423
|
`);
|
|
3424
3424
|
io.write(` haven-<name> / haven-signer-<name> pair, leaving the current wiring untouched
|
|
@@ -4028,7 +4028,7 @@ async function executeConnect(options, deps, trace) {
|
|
|
4028
4028
|
if (supersededAgentsRetiredLocally === true) {
|
|
4029
4029
|
log("");
|
|
4030
4030
|
log(
|
|
4031
|
-
`Replaced: previous agent(s) ${supersededIds(replacing)} are retired on this machine but NOT revoked \u2014
|
|
4031
|
+
`Replaced: previous agent(s) ${supersededIds(replacing)} are retired on this machine but NOT revoked \u2014 use Remove agent\u2026 on the Haven agent page for each (it ends their live budgets), then restart EVERY long-lived host (gateways, TUI workers, editors): each holds the MCP wiring snapshot from its own start time, and the tombstone speaks only when a stale host next probes the old path.`
|
|
4032
4032
|
);
|
|
4033
4033
|
} else if (supersededAgentIds.length > 0) {
|
|
4034
4034
|
log("");
|
|
@@ -4036,7 +4036,7 @@ async function executeConnect(options, deps, trace) {
|
|
|
4036
4036
|
`Heads-up: this setup created a NEW agent. Your previous agent(s) \u2014 ${supersededAgentIds.join(", ")} \u2014 still exist with their own keys, and any host that was already running keeps acting as them.`
|
|
4037
4037
|
);
|
|
4038
4038
|
log(
|
|
4039
|
-
`If you meant to replace them:
|
|
4039
|
+
`If you meant to replace them: use Remove agent\u2026 on the Haven agent page for each (it ends their live budgets), then restart EVERY long-lived host (gateways, TUI workers, editors) \u2014 each holds the MCP wiring snapshot from its own start time, so after repeated setups each can be stuck on a DIFFERENT old agent. Then remove their directories under ~/.haven/agents (or ${RERUN_HINT} --tombstone <dir> to leave a diagnostic in their place). Run ${RERUN_HINT} --doctor to check whether their keys are still live.`
|
|
4040
4040
|
);
|
|
4041
4041
|
}
|
|
4042
4042
|
} catch {
|
|
@@ -4201,7 +4201,7 @@ async function resolveWiringCollision(collision, agentName, options, deps) {
|
|
|
4201
4201
|
}
|
|
4202
4202
|
throw new ConnectError(
|
|
4203
4203
|
"wiring_collision",
|
|
4204
|
-
`This machine is already wired to a Haven agent with a live key (${supersededIds(collision)}), and setting up "${agentName}" on the bare haven / haven-signer pair would replace that wiring. Nothing was written and the Haven setup token is still unused. If you are an AI agent running this command: do NOT add a flag yourself \u2014 relay this to your user and stop. Your user decides: REPLACE the existing wiring (re-run the same command with --replace added, which re-points the pair at the new agent and retires the previous directory locally \u2014 they still
|
|
4204
|
+
`This machine is already wired to a Haven agent with a live key (${supersededIds(collision)}), and setting up "${agentName}" on the bare haven / haven-signer pair would replace that wiring. Nothing was written and the Haven setup token is still unused. If you are an AI agent running this command: do NOT add a flag yourself \u2014 relay this to your user and stop. Your user decides: REPLACE the existing wiring (re-run the same command with --replace added, which re-points the pair at the new agent and retires the previous directory locally \u2014 they still use Remove agent\u2026 on the Haven agent page to end the old agent\u2019s budgets), or install ALONGSIDE it (re-run with --name <slug> added, e.g. --name ${collision.suggestedServerName}, which gives the new agent its own haven-<slug> / haven-signer-<slug> pair). Re-run only with the flag your user chooses.`,
|
|
4205
4205
|
"relay_wiring_collision_to_user",
|
|
4206
4206
|
{ supersededAgentIds: collision.superseded.map((e) => e.agentId), suggestedServerName: collision.suggestedServerName }
|
|
4207
4207
|
);
|
|
@@ -4499,7 +4499,7 @@ var init_runtime = __esm({
|
|
|
4499
4499
|
init_tombstone();
|
|
4500
4500
|
init_local_mcp_runtime();
|
|
4501
4501
|
init_runtime_manifest();
|
|
4502
|
-
CONNECTOR_VERSION = "0.0.0-dev.
|
|
4502
|
+
CONNECTOR_VERSION = "0.0.0-dev.202610071809.5460535";
|
|
4503
4503
|
CONNECTOR_CLIENT_IDENTITY = `@haven_ai/connect/${CONNECTOR_VERSION}`;
|
|
4504
4504
|
CONNECT_OUTCOME_SCHEMA_VERSION = 1;
|
|
4505
4505
|
failureOutcomesByError = /* @__PURE__ */ new WeakMap();
|
|
@@ -5543,9 +5543,9 @@ async function runDoctor(input, deps = {}) {
|
|
|
5543
5543
|
level: supersededLevel,
|
|
5544
5544
|
detail: supersededLevel === "failed" ? `${otherEntries.length} other credential dir(s) found \u2014 ${parts.join("; ")}. A host started before your latest setup keeps authenticating (and spending) as the old agent.` : supersededLevel === "advisory" ? `${otherEntries.length} other credential dir(s) found \u2014 ${parts.join("; ")}. Runtime '${input2.runtime}' has no config file the connector can read, so which of these agents are wired cannot be verified from this machine: a live key here may be an agent you use deliberately, or one a host started before your latest setup is still spending as.` : `${otherEntries.length} other credential dir(s) found \u2014 ${parts.join("; ")}.`,
|
|
5545
5545
|
...supersededLevel === "failed" ? {
|
|
5546
|
-
repair: `
|
|
5546
|
+
repair: `Use Remove agent\u2026 on the Haven agent page for ${supersededLive.join(", ")} (it ends each one\u2019s live budgets), then remove the old director(y/ies) under ~/.haven/agents. Connect never revokes or deletes for you.`
|
|
5547
5547
|
} : supersededLevel === "advisory" ? {
|
|
5548
|
-
repair: `Check ${supersededLive.join(", ")} on the Haven agent page:
|
|
5548
|
+
repair: `Check ${supersededLive.join(", ")} on the Haven agent page: use Remove agent\u2026 on the ones you no longer use, then remove their director(y/ies) under ~/.haven/agents. Connect never revokes or deletes for you.`
|
|
5549
5549
|
} : {}
|
|
5550
5550
|
});
|
|
5551
5551
|
}
|
|
@@ -5952,7 +5952,7 @@ function helpText() {
|
|
|
5952
5952
|
" --replace When this machine is already wired to a different Haven agent on the bare",
|
|
5953
5953
|
" haven / haven-signer pair, re-point that pair at the new agent and retire the",
|
|
5954
5954
|
" previous agent directory locally (tombstoned, local key files removed).",
|
|
5955
|
-
" Nothing is revoked \u2014
|
|
5955
|
+
" Nothing is revoked \u2014 use Remove agent\u2026 on the Haven agent page. Without",
|
|
5956
5956
|
" this flag a non-interactive run REFUSES such a collision (wiring_collision)",
|
|
5957
5957
|
" and an interactive terminal is asked; --name installs alongside instead.",
|
|
5958
5958
|
" --name <slug> Wiring slug for a NAMED agent: writes haven-<slug> / haven-signer-<slug>",
|