@voidlabs.gg/voidshift 0.4.5 → 0.4.6
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 +15 -2
- package/dist/loader.d.ts +1 -1
- package/dist/loader.js +4 -0
- package/dist/tool.d.ts +2 -0
- package/dist/tool.js +3 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -127,9 +127,18 @@ vsf memory status # the vault and where recall is on
|
|
|
127
127
|
vsf memory search WORDS # notes recall would bring up
|
|
128
128
|
vsf memory try "a prompt" # exactly what recall would add to that prompt
|
|
129
129
|
vsf memory check # notes missing from INDEX.md, broken links
|
|
130
|
+
vsf memory sync # pull and push the vault through its git remote
|
|
130
131
|
vsf memory on | off # turn recall on or off
|
|
131
132
|
```
|
|
132
133
|
|
|
134
|
+
To share the vault between machines, make it a git repository with a remote
|
|
135
|
+
named `origin` (any host; a private repository). `vsf memory sync` commits new
|
|
136
|
+
notes, rebases onto the remote and pushes. It also runs in the background from
|
|
137
|
+
the recall hook when the last sync is over ten minutes old, and the agents
|
|
138
|
+
runner syncs before and after every run. When a note changed on both sides,
|
|
139
|
+
the remote's version stays and this machine's copy is saved beside it as
|
|
140
|
+
`note.conflict-<machine>-<time>.md`, so nothing is lost.
|
|
141
|
+
|
|
133
142
|
Setup creates a vault at `~/memory` or uses one you already have. Codex asks you
|
|
134
143
|
to trust the recall hook once: run `/hooks` in Codex.
|
|
135
144
|
|
|
@@ -180,8 +189,12 @@ pnpm test
|
|
|
180
189
|
node packages/cli/src/main.ts
|
|
181
190
|
```
|
|
182
191
|
|
|
183
|
-
Node 22.18 or newer runs the TypeScript sources directly.
|
|
184
|
-
|
|
192
|
+
Node 22.18 or newer runs the TypeScript sources directly. Each package
|
|
193
|
+
releases on its own: bump its `package.json` and push `agents-v0.5.0` (or
|
|
194
|
+
`cli-v`, `memory-v`, `awake-v`), and CI publishes only that package. A plain
|
|
195
|
+
`v*` tag publishes all four at one version. Tools declare the CLI contract
|
|
196
|
+
they were built for; a CLI that is too old refuses to load them and says to
|
|
197
|
+
run `vsf update`.
|
|
185
198
|
|
|
186
199
|
## License
|
|
187
200
|
|
package/dist/loader.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ToolEntry } from './registry.ts';
|
|
2
|
-
import type
|
|
2
|
+
import { type Tool } from './tool.ts';
|
|
3
3
|
export declare function locate(entry: ToolEntry, configDir: string): string | null;
|
|
4
4
|
export declare function npm(args: string[]): boolean;
|
|
5
5
|
export declare function fetchTool(entry: ToolEntry, configDir: string): boolean;
|
package/dist/loader.js
CHANGED
|
@@ -10,6 +10,7 @@ import { spawnSync } from 'node:child_process';
|
|
|
10
10
|
import { existsSync } from 'node:fs';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
12
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
13
|
+
import { CONTRACT } from "./tool.js";
|
|
13
14
|
// Inside the monorepo, tools load straight from source. Installed copies
|
|
14
15
|
// live under <configDir>/tools, one npm prefix shared by every tool.
|
|
15
16
|
function sourcePath(entry) {
|
|
@@ -47,5 +48,8 @@ export async function loadTool(entry, configDir) {
|
|
|
47
48
|
if (!path)
|
|
48
49
|
throw new Error(`could not download ${entry.pkg}. Check your connection and run vsf setup again.`);
|
|
49
50
|
const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(path).href)));
|
|
51
|
+
const contract = mod.default.contract ?? 1;
|
|
52
|
+
if (contract > CONTRACT)
|
|
53
|
+
throw new Error(`${entry.name} needs a newer vsf (it uses tool contract ${contract}, this vsf knows ${CONTRACT}). Run vsf update.`);
|
|
50
54
|
return mod.default;
|
|
51
55
|
}
|
package/dist/tool.d.ts
CHANGED
|
@@ -37,9 +37,11 @@ export interface ToolContext {
|
|
|
37
37
|
ui: Ui;
|
|
38
38
|
}
|
|
39
39
|
export type ToolCommand = (args: string[], ctx: ToolContext) => Promise<number>;
|
|
40
|
+
export declare const CONTRACT = 1;
|
|
40
41
|
export interface Tool {
|
|
41
42
|
name: string;
|
|
42
43
|
summary: string;
|
|
44
|
+
contract?: number;
|
|
43
45
|
install(ctx: ToolContext): Promise<void>;
|
|
44
46
|
uninstall(ctx: ToolContext): Promise<void>;
|
|
45
47
|
checks(ctx: ToolContext): Promise<Check[]>;
|
package/dist/tool.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// The contract every voidshift tool implements. The CLI owns discovery,
|
|
2
2
|
// install and reporting; a tool only knows how to set itself up, take
|
|
3
3
|
// itself down, say whether it is healthy, and run its own subcommands.
|
|
4
|
-
|
|
4
|
+
// The version of this contract. A tool built for a newer one may call things
|
|
5
|
+
// this CLI does not have, so it is not loaded; tools without the field are 1.
|
|
6
|
+
export const CONTRACT = 1;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voidlabs.gg/voidshift",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"description": "One CLI for the Void dev tools: keep your Mac awake, run agents in the background, shared skills and memory for Claude Code and Codex.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|