@ctlflow/fleet 0.1.1 → 0.1.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 CHANGED
@@ -37,6 +37,11 @@ saved history; only `--fresh-history` requests replacement. Read-only commands
37
37
  never start a controller or wake a native session. `fleet test FLEET` checks
38
38
  actual listener/authentication/native readiness without a model turn.
39
39
 
40
+ `fleet enroll FLEET` reviews a stopped registered fleet without starting sessions.
41
+ Use it for additional agents or proposed public names while retaining histories.
42
+ Only the human owner approves the exact roster/code; immutable instance keys and
43
+ workareas remain unchanged. See [enrollment operations](docs/operations.md#enroll-without-starting).
44
+
40
45
  Startup creates no chats. Private owner DMs open on first contact, visible output
41
46
  or native permission request; additional room membership is explicit.
42
47
 
@@ -4187,7 +4187,7 @@ var target = object({ kind: choice("fleet", "agent", "daemon"), fleetId: optiona
4187
4187
  var operationFields = {
4188
4188
  operationId: identifier,
4189
4189
  target,
4190
- action: choice("start", "stop", "reset", "update"),
4190
+ action: choice("enroll", "start", "stop", "reset", "update"),
4191
4191
  expectedRevision: integer(),
4192
4192
  releaseDirectory: optional(releaseDirectory)
4193
4193
  };
@@ -5685,7 +5685,7 @@ fleet daemon start [--name NAME] [--root DIRECTORY]
5685
5685
  fleet daemon status|stop|restart --root DIRECTORY
5686
5686
  fleet remote add NAME --ssh USER@HOST --root DIRECTORY
5687
5687
  fleet [--root DIRECTORY | --remote NAME] add DIRECTORY
5688
- fleet [--root DIRECTORY | --remote NAME] list|show|test|start|stop|remove [FLEET]
5688
+ fleet [--root DIRECTORY | --remote NAME] list|show|test|enroll|start|stop|remove [FLEET]
5689
5689
  fleet [--root DIRECTORY | --remote NAME] start FLEET [--fresh-history] [--operation-id UUID]
5690
5690
  fleet [--root DIRECTORY | --remote NAME] stop FLEET [--operation-id UUID]
5691
5691
  fleet [--root DIRECTORY | --remote NAME] update FLEET [--operation-id UUID] [--release-directory DIRECTORY]
@@ -5734,7 +5734,7 @@ async function run(argv, signal) {
5734
5734
  ...positionals[0] === "daemon" && positionals[1] === "start" ? ["name"] : [],
5735
5735
  ...positionals[0] === "agent" && positionals[1] === "add" ? ["definition"] : [],
5736
5736
  ...positionals[0] === "agent" && positionals[1] === "attach" ? ["context"] : [],
5737
- ...["start", "stop", "update"].includes(positionals[0] ?? "") || positionals[0] === "agent" && ["start", "stop", "update"].includes(positionals[1] ?? "") ? ["operation-id"] : [],
5737
+ ...["enroll", "start", "stop", "update"].includes(positionals[0] ?? "") || positionals[0] === "agent" && ["start", "stop", "update"].includes(positionals[1] ?? "") ? ["operation-id"] : [],
5738
5738
  ...positionals[0] === "update" || positionals[0] === "agent" && positionals[1] === "update" ? ["release-directory"] : [],
5739
5739
  ...positionals[0] === "start" || positionals[0] === "agent" && positionals[1] === "start" ? ["fresh-history"] : [],
5740
5740
  ...positionals[0] === "message" ? ["text", "message-id"] : []
@@ -5852,7 +5852,8 @@ async function run(argv, signal) {
5852
5852
  process.stdout.write(pointer.command + "\n");
5853
5853
  return;
5854
5854
  }
5855
- if (command !== "start" && command !== "stop" && command !== "update") throw new Error(usage);
5855
+ if (command === "enroll" && agentCommand) throw new Error("Use fleet enroll for the stopped whole fleet");
5856
+ if (command !== "enroll" && command !== "start" && command !== "stop" && command !== "update") throw new Error(usage);
5856
5857
  if (command === "update" && remote && !values["release-directory"]) throw new Error("Remote update requires --release-directory with the installed fleetd artifact directory on its computer, or run its installed fleet CLI over SSH");
5857
5858
  const request = {
5858
5859
  operationId: value2(identifier(values["operation-id"] ?? randomUUID3())),
@@ -1,5 +1,26 @@
1
1
  # Fleet operations
2
2
 
3
+ ## Enroll without starting
4
+
5
+ `fleet enroll FLEET` reviews the complete roster of an already registered,
6
+ stopped fleet. It uses the same enrollment and owner-approval flow as start,
7
+ but never starts/resets native sessions or enables message delivery. An active
8
+ fleet or per-agent enrollment target is rejected. Inspect `fleet show FLEET`
9
+ after completion; starting later remains a separate explicit resume.
10
+
11
+ Change an instance's `name` in `runtime.toml` to propose a new registered name.
12
+ Keep its immutable `key`, workarea and saved credentials. The approval page shows
13
+ the old and requested names. Only that active human owner can approve; collision,
14
+ rejection or expiry cannot replace the current name/account. Approved names replace
15
+ old names without aliases. Matrix IDs, grants, rooms and native histories remain
16
+ the same. Existing automatically named owner DMs follow the new display name;
17
+ human conversation titles stay unchanged. No new conversations are created.
18
+
19
+ Local Crossfire profiles and unread cursors use the immutable instance key.
20
+ The owning storage migration moves previously display-name-keyed state once,
21
+ with an identity-checked durable journal, exclusive listener lock checks and no
22
+ history merging, overwrite or alternate runtime reader. Back up before upgrading.
23
+
3
24
  ## Update and deploy
4
25
 
5
26
  Use an exact verified public package release after human consent. Before changing
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@ctlflow/fleet",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "private": false,
5
5
  "publishConfig": { "access": "public" },
6
6
  "type": "module",
7
- "devDependencies": { "@ctlflow/crossfire-test-support": "0.1.1" },
7
+ "devDependencies": { "@ctlflow/crossfire-test-support": "0.1.2" },
8
8
  "bin": { "fleet": "./dist/bin/fleet.mjs" },
9
9
  "files": ["dist/bin", "docs", "README.md"],
10
10
  "exports": { "./executable": "./dist/bin/fleet.mjs", "./package.json": "./package.json" },
11
- "dependencies": { "@ctlflow/fleetd": "0.1.1" },
11
+ "dependencies": { "@ctlflow/fleetd": "0.1.2" },
12
12
  "engines": {
13
13
  "node": ">=26.0.0",
14
14
  "npm": ">=11.17.0"