docks-kit 0.16.10 → 0.16.11
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/AGENTS.md +1 -1
- package/cli/docs/flags.md +1 -1
- package/cli/docs/install.md +1 -1
- package/cli/src/commands/update.ts +27 -23
- package/cli/src/generated/sotPayload.ts +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -82,7 +82,7 @@ For per-tool SoT layouts (`SoT/.claude/`, `SoT/.codex/`, `SoT/.omp/`), see the m
|
|
|
82
82
|
- **Removed bash engine.** The bash engine was removed after the `bash-engine-final` tag. `DOCKS_KIT_ENGINE=bash` must fail with the removed-engine message; engine bugs are fixed forward in EngineNative.
|
|
83
83
|
- **Effect 4 CLI stack.** The CLI pins `effect@4.0.0-rc.109` (including `effect/unstable/cli`), `@effect/platform-bun@4.0.0-rc.109` (`BunServices.layer`, `BunRuntime.runMain`), `@effect/vitest@4.0.0-rc.109`, and `vitest@4.1.11` (inside the `@effect/vitest` peer range `>=4.1.0 <5.0.0`; 4.1.11 fixes GHSA-82fw-gwwq-j7x9). `@effect/cli` and `@effect/platform` are removed and must not be reintroduced.
|
|
84
84
|
- **Effect skill routing.** Effect work in this checkout must verify migration and API call shapes against the installed declarations under `node_modules/effect/dist/unstable/cli/`, never from memory or a mutable dist-tag. The `effect-ts-setup`, `effect-ts-port`, and `effect-ts-specialist` skills target Effect 3.x and do not apply.
|
|
85
|
-
- **Targeted syncs.** `./docks-kit sync` accepts positional targets: `claude`, `codex`, `agents`, and `omp`. Use the narrowest target that matches the SoT change (for example, `./docks-kit sync omp` for omp-only config edits); targets can be combined with `--dry-run`, `--skip-bubblewrap` (skip optional bubblewrap bootstrap for the Codex Linux sandbox), `--skip-plugin-refresh` (install missing plugins without refreshing existing caches
|
|
85
|
+
- **Targeted syncs.** `./docks-kit sync` accepts positional targets: `claude`, `codex`, `agents`, and `omp`. Use the narrowest target that matches the SoT change (for example, `./docks-kit sync omp` for omp-only config edits); targets can be combined with `--dry-run`, `--skip-bubblewrap` (skip optional bubblewrap bootstrap for the Codex Linux sandbox), `--skip-plugin-refresh` (install missing plugins without refreshing existing caches), `--reconcile`, `--prune`, and the deploy-time modifiers `--claude-compact-window=<tokens>` / `--claude-permissive` / `--claude-model=<m>` / `--claude-effort=<level>` / `--claude-advisor=<on|off|default>` / `--codex-model=<m>` / `--codex-effort=<level>` (see `CLAUDE.md` § Deploy-time modifiers).
|
|
86
86
|
- **Per-machine harness selection.** `~/.docks-kit/state.json` drives a flag-less sync. A missing file selects `claude`, `codex`, and `agents`; it never selects `omp` implicitly. `sync` never prompts and never writes the selection file. `docks-kit harnesses` is the only command that writes the selection.
|
|
87
87
|
- **Additive by default.** Keys present in deployed config but absent from SoT are preserved on default sync. This protects user-only additions, but means drift accumulates — neither flag-less reset can clean it up. The one exception is the Claude `removed` manifest (`claude::_removed_manifest`), a curated list of unambiguous kit-owned artifacts that `claude::sync_removals` force-prunes on every sync, including the home-relative `~/.local/bin/session-relay` artifact installed outside `~/.claude`; see `CLAUDE.md` § Pruning stale artifacts.
|
|
88
88
|
- **`--reconcile` / `--prune` are the kit-owned reconcile flags.** Orthogonal — `--reconcile` reconciles the settings layer (SoT-declared keys/tables/arrays win; user-only keys and nested objects are preserved; permissions arrays are replaced wholesale by SoT). `--prune` uninstalls kit-managed installations not in the SoT (plugins, marketplaces, and `~/.agents/skills/*` entries tracked in `~/.agents/.kit-managed-skills`). Combine for a full reset to SoT's kit-managed scope. User-only additions outside the kit's scope (custom env vars, mcpServers, manually-installed skills, third-party plugins not declared in SoT) are always preserved. Each tool's per-tool file documents the specific paths and diff recipes.
|
package/cli/docs/flags.md
CHANGED
|
@@ -19,7 +19,7 @@ docks-kit sync claude agents # two
|
|
|
19
19
|
| `--reconcile` | Settings layer reconciled toward SoT (SoT keys win; user-only keys preserved; permissions arrays replaced) |
|
|
20
20
|
| `--prune` | Uninstall kit-managed installs not in SoT: plugins, marketplaces, universal skills |
|
|
21
21
|
| `--skip-bubblewrap` | Skip optional bubblewrap bootstrap (Codex Linux sandbox) |
|
|
22
|
-
| `--skip-plugin-refresh` | Install missing Claude/Codex plugins but skip refresh-only updates
|
|
22
|
+
| `--skip-plugin-refresh` | Install missing Claude/Codex plugins but skip refresh-only updates |
|
|
23
23
|
| `--verbose` / `-v` | Also print no-op confirmations (already in sync, up to date, left as-is); accepted on `sync`, `model`, and `toolchain` |
|
|
24
24
|
|
|
25
25
|
## Environment overrides
|
package/cli/docs/install.md
CHANGED
|
@@ -80,7 +80,7 @@ installer bootstraps Bun when absent. It then runs
|
|
|
80
80
|
## Keeping the kit up to date
|
|
81
81
|
|
|
82
82
|
```
|
|
83
|
-
docks-kit update # autodetect + update +
|
|
83
|
+
docks-kit update # autodetect + update + full sync (refreshes plugins)
|
|
84
84
|
docks-kit update --no-sync # update only
|
|
85
85
|
```
|
|
86
86
|
|
|
@@ -68,11 +68,7 @@ const chainSync = (argv0: string, args: Array<string>): Effect.Effect<void> =>
|
|
|
68
68
|
if (res.error !== undefined || res.status !== 0) process.exit(res.status ?? 1)
|
|
69
69
|
})
|
|
70
70
|
|
|
71
|
-
export const updateSyncArgs = (home: string): Array<string> => [
|
|
72
|
-
p(home, "cli/src/main.ts"),
|
|
73
|
-
"sync",
|
|
74
|
-
"--skip-plugin-refresh"
|
|
75
|
-
]
|
|
71
|
+
export const updateSyncArgs = (home: string): Array<string> => [p(home, "cli/src/main.ts"), "sync"]
|
|
76
72
|
|
|
77
73
|
const readPackageVersion = (home: string): string => {
|
|
78
74
|
try {
|
|
@@ -211,28 +207,33 @@ const updateCheckout = (home: string, skipSync: boolean) =>
|
|
|
211
207
|
if (!pull.ok) return yield* bail(`git pull --ff-only failed (diverged history?):\n${pull.out}`)
|
|
212
208
|
const after = git(home, ["rev-parse", "HEAD"]).out
|
|
213
209
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
210
|
+
// A current kit still syncs: the plugin passes deliver marketplace and
|
|
211
|
+
// plugin updates that move independently of the kit's own version.
|
|
212
|
+
const changed = before !== after
|
|
213
|
+
if (changed) {
|
|
214
|
+
const count = git(home, ["rev-list", "--count", `${before}..${after}`]).out
|
|
215
|
+
yield* Console.log(`Updated ${before.slice(0, 7)}..${after.slice(0, 7)} (${count} commit(s) from ${upstream.out}).`)
|
|
220
216
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
217
|
+
const touched = git(home, ["diff", "--name-only", before, after]).out.split("\n")
|
|
218
|
+
if (touched.includes("bun.lock") || touched.includes("package.json")) {
|
|
219
|
+
const res = spawnUpdate("bun", ["install", "--frozen-lockfile"], { cwd: home, stdio: "inherit" })
|
|
220
|
+
if (res.error !== undefined || res.status !== 0) {
|
|
221
|
+
return yield* bail("dependencies changed but 'bun install --frozen-lockfile' failed - fix that, then run docks-kit sync", 1)
|
|
222
|
+
}
|
|
226
223
|
}
|
|
224
|
+
} else {
|
|
225
|
+
yield* Console.log(`Already at the latest version (${after.slice(0, 7)}, upstream ${upstream.out}).`)
|
|
227
226
|
}
|
|
228
227
|
|
|
229
228
|
if (compiled) {
|
|
230
229
|
return yield* Console.log(
|
|
231
|
-
|
|
230
|
+
changed
|
|
231
|
+
? "This compiled binary still runs the previous version - the checkout launcher will use updated source next time. Run: ./docks-kit sync (rebuild with bash cli/build-binaries.sh to restore the binary fast path)."
|
|
232
|
+
: "This compiled binary cannot chain the sync. Run: ./docks-kit sync"
|
|
232
233
|
)
|
|
233
234
|
}
|
|
234
|
-
if (skipSync) return yield* Console.log("Kit updated. Run: docks-kit sync")
|
|
235
|
-
yield* Console.log("Kit updated - running sync with the new version...")
|
|
235
|
+
if (skipSync) return yield* Console.log(changed ? "Kit updated. Run: docks-kit sync" : "Run: docks-kit sync")
|
|
236
|
+
yield* Console.log(changed ? "Kit updated - running sync with the new version..." : "Syncing to deliver plugin and config updates...")
|
|
236
237
|
return yield* chainSync(process.execPath, updateSyncArgs(home))
|
|
237
238
|
})
|
|
238
239
|
|
|
@@ -267,9 +268,12 @@ const updatePackage = (home: string, skipSync: boolean) =>
|
|
|
267
268
|
}
|
|
268
269
|
const result = packageUpdateResult(beforeVersion, afterVersion, home === updated.home)
|
|
269
270
|
if (result.message !== "") yield* Console.log(result.message)
|
|
270
|
-
if (result.alreadyCurrent)
|
|
271
|
-
|
|
272
|
-
|
|
271
|
+
if (skipSync) return yield* Console.log(result.alreadyCurrent ? "Run: docks-kit sync" : "Kit updated. Run: docks-kit sync")
|
|
272
|
+
yield* Console.log(
|
|
273
|
+
result.alreadyCurrent
|
|
274
|
+
? "Syncing to deliver plugin and config updates..."
|
|
275
|
+
: "Kit updated - running sync with the new version..."
|
|
276
|
+
)
|
|
273
277
|
return yield* chainSync(process.execPath, updateSyncArgs(updated.home))
|
|
274
278
|
})
|
|
275
279
|
|
|
@@ -288,6 +292,6 @@ export const updateCommand = Command.make("update", { noSync }, (config) =>
|
|
|
288
292
|
})
|
|
289
293
|
).pipe(
|
|
290
294
|
Command.withDescription(
|
|
291
|
-
"Self-update the kit: autodetects the install (git checkout -> ff-only pull; bun/npm global -> @latest)
|
|
295
|
+
"Self-update the kit: autodetects the install (git checkout -> ff-only pull; bun/npm global -> @latest), then chains a flag-less sync that also refreshes plugin marketplaces and plugins, even when the kit was already current (--no-sync to skip)."
|
|
292
296
|
)
|
|
293
297
|
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Generated by cli/scripts/generate-sot-payload.ts. DO NOT EDIT.
|
|
2
2
|
// Edit SoT/, notification.mp3, or package.json, then run: bun cli/scripts/generate-sot-payload.ts
|
|
3
3
|
|
|
4
|
-
export const GENERATED_PACKAGE_VERSION = "0.16.
|
|
4
|
+
export const GENERATED_PACKAGE_VERSION = "0.16.11"
|
|
5
5
|
|
|
6
6
|
export const GENERATED_PAYLOAD_TEXT = {
|
|
7
7
|
"SoT/.agents/skills.txt": "# Universal AI-agent skill manifest intentionally empty.\n# Global skill discovery is opt-in: add one <owner>/<repo> slug per line.\n# EngineNative ignores comments and blank lines.\n",
|
package/package.json
CHANGED