@hwip/cli 0.0.1 → 0.1.0
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/LICENSE +190 -0
- package/NOTICE +11 -0
- package/README.md +1979 -0
- package/dist/agent-list.d.ts +76 -0
- package/dist/agent-list.js +102 -0
- package/dist/agent-read.d.ts +105 -0
- package/dist/agent-read.js +309 -0
- package/dist/agent-rules-fetch.d.ts +51 -0
- package/dist/agent-rules-fetch.js +275 -0
- package/dist/agent-rules.default.d.ts +30 -0
- package/dist/agent-rules.default.js +292 -0
- package/dist/agent-session.d.ts +23 -0
- package/dist/agent-session.js +44 -0
- package/dist/agent-state.d.ts +84 -0
- package/dist/agent-state.js +188 -0
- package/dist/agent-target.d.ts +60 -0
- package/dist/agent-target.js +81 -0
- package/dist/agents.d.ts +31 -0
- package/dist/agents.js +75 -0
- package/dist/api.d.ts +28 -0
- package/dist/api.js +76 -0
- package/dist/args.d.ts +74 -0
- package/dist/args.js +254 -0
- package/dist/ask-context-attach.d.ts +73 -0
- package/dist/ask-context-attach.js +151 -0
- package/dist/ask-context-screen.d.ts +21 -0
- package/dist/ask-context-screen.js +49 -0
- package/dist/ask-context-switch.d.ts +31 -0
- package/dist/ask-context-switch.js +74 -0
- package/dist/ask-context.d.ts +84 -0
- package/dist/ask-context.js +172 -0
- package/dist/ask-pending.d.ts +47 -0
- package/dist/ask-pending.js +221 -0
- package/dist/ask-seal.d.ts +120 -0
- package/dist/ask-seal.js +179 -0
- package/dist/ask.d.ts +107 -0
- package/dist/ask.js +551 -0
- package/dist/blocked-prompt-seal.d.ts +35 -0
- package/dist/blocked-prompt-seal.js +89 -0
- package/dist/blocked-prompt.d.ts +57 -0
- package/dist/blocked-prompt.js +181 -0
- package/dist/channel.d.ts +67 -0
- package/dist/channel.js +136 -0
- package/dist/check-update.d.ts +28 -0
- package/dist/check-update.js +153 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +813 -0
- package/dist/codex-config.d.ts +24 -0
- package/dist/codex-config.js +169 -0
- package/dist/codex-transcript.d.ts +59 -0
- package/dist/codex-transcript.js +373 -0
- package/dist/command-refusal.d.ts +56 -0
- package/dist/command-refusal.js +127 -0
- package/dist/command-scan.d.ts +46 -0
- package/dist/command-scan.js +154 -0
- package/dist/command-seal.d.ts +57 -0
- package/dist/command-seal.js +88 -0
- package/dist/command-seq.d.ts +30 -0
- package/dist/command-seq.js +150 -0
- package/dist/config.d.ts +156 -0
- package/dist/config.js +392 -0
- package/dist/core-sections.d.ts +18 -0
- package/dist/core-sections.js +28 -0
- package/dist/crypto.d.ts +278 -0
- package/dist/crypto.js +698 -0
- package/dist/desktop-notify.d.ts +33 -0
- package/dist/desktop-notify.js +49 -0
- package/dist/device-directory.d.ts +36 -0
- package/dist/device-directory.js +97 -0
- package/dist/device-presence.d.ts +17 -0
- package/dist/device-presence.js +62 -0
- package/dist/downloads.d.ts +29 -0
- package/dist/downloads.js +106 -0
- package/dist/errors.d.ts +12 -0
- package/dist/errors.js +28 -0
- package/dist/file-crypto.d.ts +94 -0
- package/dist/file-crypto.js +272 -0
- package/dist/file-view-budget.d.ts +15 -0
- package/dist/file-view-budget.js +34 -0
- package/dist/file-view-switch.d.ts +28 -0
- package/dist/file-view-switch.js +122 -0
- package/dist/file-view.d.ts +108 -0
- package/dist/file-view.js +327 -0
- package/dist/gate.d.ts +141 -0
- package/dist/gate.js +336 -0
- package/dist/gemini-transcript.d.ts +32 -0
- package/dist/gemini-transcript.js +189 -0
- package/dist/http-failure.d.ts +98 -0
- package/dist/http-failure.js +349 -0
- package/dist/hwip-core.generated.d.ts +7 -0
- package/dist/hwip-core.generated.js +14 -0
- package/dist/hwip-hook.d.ts +77 -0
- package/dist/hwip-hook.js +340 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +14 -0
- package/dist/input-sequencer.d.ts +65 -0
- package/dist/input-sequencer.js +142 -0
- package/dist/insecure-url.d.ts +16 -0
- package/dist/insecure-url.js +76 -0
- package/dist/installer.d.ts +96 -0
- package/dist/installer.js +850 -0
- package/dist/inventory-offload.d.ts +49 -0
- package/dist/inventory-offload.js +209 -0
- package/dist/inventory-worker.d.ts +2 -0
- package/dist/inventory-worker.js +27 -0
- package/dist/jsonc-doc.d.ts +106 -0
- package/dist/jsonc-doc.js +354 -0
- package/dist/keep-awake.d.ts +32 -0
- package/dist/keep-awake.js +46 -0
- package/dist/key-changes.d.ts +48 -0
- package/dist/key-changes.js +140 -0
- package/dist/lan-auth.d.ts +140 -0
- package/dist/lan-auth.js +217 -0
- package/dist/lan-endpoint.d.ts +41 -0
- package/dist/lan-endpoint.js +115 -0
- package/dist/lan-receiver.d.ts +122 -0
- package/dist/lan-receiver.js +510 -0
- package/dist/lan-sender.d.ts +76 -0
- package/dist/lan-sender.js +184 -0
- package/dist/lan-transfer.d.ts +36 -0
- package/dist/lan-transfer.js +54 -0
- package/dist/listener-device-id.d.ts +20 -0
- package/dist/listener-device-id.js +133 -0
- package/dist/listener-log.d.ts +4 -0
- package/dist/listener-log.js +23 -0
- package/dist/listener-process.d.ts +200 -0
- package/dist/listener-process.js +470 -0
- package/dist/listener-service.d.ts +225 -0
- package/dist/listener-service.js +682 -0
- package/dist/listener-worktree-cleanup.d.ts +27 -0
- package/dist/listener-worktree-cleanup.js +62 -0
- package/dist/listener.d.ts +1325 -0
- package/dist/listener.js +5680 -0
- package/dist/login-address.d.ts +25 -0
- package/dist/login-address.js +97 -0
- package/dist/login-page.d.ts +29 -0
- package/dist/login-page.js +93 -0
- package/dist/login.d.ts +98 -0
- package/dist/login.js +388 -0
- package/dist/mcp-command.d.ts +45 -0
- package/dist/mcp-command.js +50 -0
- package/dist/mcp.d.ts +19 -0
- package/dist/mcp.js +29 -0
- package/dist/node-support.d.ts +19 -0
- package/dist/node-support.js +38 -0
- package/dist/notify-failure.d.ts +57 -0
- package/dist/notify-failure.js +150 -0
- package/dist/opencode-transcript.d.ts +139 -0
- package/dist/opencode-transcript.js +390 -0
- package/dist/optional-features.d.ts +6 -0
- package/dist/optional-features.js +19 -0
- package/dist/pane-fit.d.ts +40 -0
- package/dist/pane-fit.js +119 -0
- package/dist/peer-key.d.ts +33 -0
- package/dist/peer-key.js +34 -0
- package/dist/pi-transcript.d.ts +26 -0
- package/dist/pi-transcript.js +255 -0
- package/dist/presence.d.ts +14 -0
- package/dist/presence.js +124 -0
- package/dist/private-files.d.ts +51 -0
- package/dist/private-files.js +218 -0
- package/dist/project-switch.d.ts +19 -0
- package/dist/project-switch.js +60 -0
- package/dist/redact.d.ts +10 -0
- package/dist/redact.js +21 -0
- package/dist/remote-agents.d.ts +410 -0
- package/dist/remote-agents.js +1218 -0
- package/dist/remote-hook.d.ts +12 -0
- package/dist/remote-hook.js +196 -0
- package/dist/replace-file.d.ts +50 -0
- package/dist/replace-file.js +328 -0
- package/dist/schedule-command.d.ts +35 -0
- package/dist/schedule-command.js +260 -0
- package/dist/schedule-launch.d.ts +15 -0
- package/dist/schedule-launch.js +24 -0
- package/dist/schedule-ready.d.ts +44 -0
- package/dist/schedule-ready.js +71 -0
- package/dist/schedule-remote.d.ts +77 -0
- package/dist/schedule-remote.js +167 -0
- package/dist/schedule-runner.d.ts +89 -0
- package/dist/schedule-runner.js +452 -0
- package/dist/schedule.d.ts +149 -0
- package/dist/schedule.js +428 -0
- package/dist/secret-mask.d.ts +29 -0
- package/dist/secret-mask.js +245 -0
- package/dist/self-register.d.ts +45 -0
- package/dist/self-register.js +67 -0
- package/dist/send.d.ts +56 -0
- package/dist/send.js +104 -0
- package/dist/session-diff.d.ts +161 -0
- package/dist/session-diff.js +445 -0
- package/dist/session-registry.d.ts +143 -0
- package/dist/session-registry.js +216 -0
- package/dist/sessions-report.d.ts +59 -0
- package/dist/sessions-report.js +99 -0
- package/dist/shell-audit.d.ts +34 -0
- package/dist/shell-audit.js +47 -0
- package/dist/subagent-transcripts.d.ts +167 -0
- package/dist/subagent-transcripts.js +437 -0
- package/dist/subscriber-trust.d.ts +128 -0
- package/dist/subscriber-trust.js +397 -0
- package/dist/templates.d.ts +105 -0
- package/dist/templates.js +871 -0
- package/dist/tmux-install.d.ts +44 -0
- package/dist/tmux-install.js +65 -0
- package/dist/tmux-liveness.d.ts +45 -0
- package/dist/tmux-liveness.js +71 -0
- package/dist/tmux-pane.d.ts +55 -0
- package/dist/tmux-pane.js +126 -0
- package/dist/tmux-socket.d.ts +20 -0
- package/dist/tmux-socket.js +292 -0
- package/dist/todo-fold.d.ts +31 -0
- package/dist/todo-fold.js +102 -0
- package/dist/transcript-tail.d.ts +312 -0
- package/dist/transcript-tail.js +718 -0
- package/dist/trust-command.d.ts +49 -0
- package/dist/trust-command.js +200 -0
- package/dist/trust-lock.d.ts +26 -0
- package/dist/trust-lock.js +94 -0
- package/dist/trust-pins.d.ts +37 -0
- package/dist/trust-pins.js +82 -0
- package/dist/turn-recorder-wire.d.ts +70 -0
- package/dist/turn-recorder-wire.js +165 -0
- package/dist/turn-recorder.d.ts +190 -0
- package/dist/turn-recorder.js +695 -0
- package/dist/turn-ring.d.ts +93 -0
- package/dist/turn-ring.js +418 -0
- package/dist/turn-watch.d.ts +177 -0
- package/dist/turn-watch.js +630 -0
- package/dist/types.d.ts +63 -0
- package/dist/types.js +2 -0
- package/dist/uninstall.d.ts +55 -0
- package/dist/uninstall.js +507 -0
- package/dist/usage.d.ts +17 -0
- package/dist/usage.js +421 -0
- package/dist/verify.d.ts +47 -0
- package/dist/verify.js +396 -0
- package/dist/worktree.d.ts +144 -0
- package/dist/worktree.js +310 -0
- package/dist/wrapper.d.ts +254 -0
- package/dist/wrapper.js +704 -0
- package/dist/ws-url.d.ts +109 -0
- package/dist/ws-url.js +202 -0
- package/package.json +78 -10
- package/bin/hwip.js +0 -3
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleCheckUpdate = exports.cachedUpdateNotice = exports.installedMcpServerVersion = exports.isNewer = exports.UPDATE_HINT = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const os_1 = require("os");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const private_files_js_1 = require("./private-files.js");
|
|
8
|
+
const config_js_1 = require("./config.js");
|
|
9
|
+
const args_js_1 = require("./args.js");
|
|
10
|
+
// Compares installed versions against the npm registry. Pure read-only —
|
|
11
|
+
// never installs anything; just tells the user if a newer release exists.
|
|
12
|
+
const PACKAGES = ['@hwip/cli', '@hwip/mcp-server'];
|
|
13
|
+
/**
|
|
14
|
+
* How to update. A global install is what `hwip` on PATH runs — `npx @hwip/cli
|
|
15
|
+
* install` only re-ran setup from a fresh download and left it as it was —
|
|
16
|
+
* and the daemon keeps the old build until it restarts.
|
|
17
|
+
*/
|
|
18
|
+
exports.UPDATE_HINT = 'npm i -g @hwip/cli — the next `hwip cc` restarts the listener on it (or run: hwip listener --restart)';
|
|
19
|
+
/** Fetch the `latest` dist-tag version for a package from the npm registry. */
|
|
20
|
+
const fetchLatest = async (pkg, timeoutMs = 10_000) => {
|
|
21
|
+
try {
|
|
22
|
+
const res = await fetch(`https://registry.npmjs.org/${pkg}/latest`, {
|
|
23
|
+
headers: { Accept: 'application/json' },
|
|
24
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
25
|
+
});
|
|
26
|
+
if (!res.ok)
|
|
27
|
+
return null;
|
|
28
|
+
const json = await res.json();
|
|
29
|
+
return json.version ?? null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
/** Semver-ish compare: returns true when `latest` is strictly newer than `current`. */
|
|
36
|
+
const isNewer = (latest, current) => {
|
|
37
|
+
const norm = (v) => v.replace(/^v/, '').split('-')[0].split('.').map((n) => parseInt(n, 10) || 0);
|
|
38
|
+
const [a, b] = [norm(latest), norm(current)];
|
|
39
|
+
for (let i = 0; i < 3; i++) {
|
|
40
|
+
if ((a[i] ?? 0) > (b[i] ?? 0))
|
|
41
|
+
return true;
|
|
42
|
+
if ((a[i] ?? 0) < (b[i] ?? 0))
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
};
|
|
47
|
+
exports.isNewer = isNewer;
|
|
48
|
+
/**
|
|
49
|
+
* The mcp-server version this CLI will actually run. It ships as a dependency
|
|
50
|
+
* (see mcp.ts), so it is pinned at install time — no longer "whatever npx
|
|
51
|
+
* fetched last". Returns null on a broken install rather than throwing; the
|
|
52
|
+
* report degrades to "latest is vX" the way it always did for this package.
|
|
53
|
+
*/
|
|
54
|
+
const installedMcpServerVersion = () => {
|
|
55
|
+
try {
|
|
56
|
+
const pkg = JSON.parse((0, fs_1.readFileSync)(require.resolve('@hwip/mcp-server/package.json'), 'utf-8'));
|
|
57
|
+
return pkg.version ?? null;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
exports.installedMcpServerVersion = installedMcpServerVersion;
|
|
64
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
65
|
+
const updateCacheFile = () => (0, path_1.join)((0, os_1.homedir)(), '.hwip', 'update-check.json');
|
|
66
|
+
const readUpdateCache = (file) => {
|
|
67
|
+
try {
|
|
68
|
+
const data = JSON.parse((0, fs_1.readFileSync)(file, 'utf-8'));
|
|
69
|
+
return typeof data.checkedAt === 'number' ? { checkedAt: data.checkedAt, latest: data.latest ?? null } : null;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const writeUpdateCache = (file, cache) => {
|
|
76
|
+
try {
|
|
77
|
+
(0, private_files_js_1.mkdirHandedBack)((0, path_1.dirname)(file));
|
|
78
|
+
(0, fs_1.writeFileSync)(file, JSON.stringify(cache) + '\n');
|
|
79
|
+
(0, private_files_js_1.handBackToSudoUser)(file);
|
|
80
|
+
}
|
|
81
|
+
catch { /* a notice is not worth failing over */ }
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* One line for `hwip cc` when a newer CLI is out, or undefined. Asks npm at
|
|
85
|
+
* most once a day, briefly, and remembers the answer; an offline day keeps
|
|
86
|
+
* the last known version rather than asking again on every launch.
|
|
87
|
+
*/
|
|
88
|
+
const cachedUpdateNotice = async (deps = {}) => {
|
|
89
|
+
const now = (deps.now ?? Date.now)();
|
|
90
|
+
const file = deps.file ?? updateCacheFile();
|
|
91
|
+
// CI and anyone who opts out never reach the registry from `hwip cc`.
|
|
92
|
+
const env = deps.env ?? process.env;
|
|
93
|
+
if (env.CI || env.HWIP_NO_UPDATE_CHECK)
|
|
94
|
+
return undefined;
|
|
95
|
+
let cache = readUpdateCache(file);
|
|
96
|
+
// A checkedAt in the future (clock skew, a hand-edited file) counts as stale.
|
|
97
|
+
if (!cache || now - cache.checkedAt >= DAY_MS || cache.checkedAt > now) {
|
|
98
|
+
const latest = await (deps.latest ?? (() => fetchLatest('@hwip/cli', 1_500)))();
|
|
99
|
+
cache = { checkedAt: now, latest: latest ?? cache?.latest ?? null };
|
|
100
|
+
writeUpdateCache(file, cache);
|
|
101
|
+
}
|
|
102
|
+
if (!cache.latest || !(0, exports.isNewer)(cache.latest, config_js_1.VERSION))
|
|
103
|
+
return undefined;
|
|
104
|
+
return `hwip: v${cache.latest} is out (this is v${config_js_1.VERSION}). Update: ${exports.UPDATE_HINT}`;
|
|
105
|
+
};
|
|
106
|
+
exports.cachedUpdateNotice = cachedUpdateNotice;
|
|
107
|
+
const handleCheckUpdate = async (args) => {
|
|
108
|
+
const isJson = (0, args_js_1.flagOn)(args, 'json');
|
|
109
|
+
// Both installed versions are knowable: the CLI's from its own
|
|
110
|
+
// package.json, and mcp-server's because `hwip mcp` runs it in-process,
|
|
111
|
+
// which makes it a dependency rather than an npx download of unknown age.
|
|
112
|
+
// Two unrelated registry round-trips — awaiting them one after the other
|
|
113
|
+
// doubled the command's wall time for nothing.
|
|
114
|
+
const latestVersions = await Promise.all(PACKAGES.map((pkg) => fetchLatest(pkg)));
|
|
115
|
+
// A fresh answer is as good as the daily one `hwip cc` would fetch.
|
|
116
|
+
if (latestVersions[0])
|
|
117
|
+
writeUpdateCache(updateCacheFile(), { checkedAt: Date.now(), latest: latestVersions[0] });
|
|
118
|
+
const results = PACKAGES.map((pkg, i) => {
|
|
119
|
+
const latest = latestVersions[i];
|
|
120
|
+
const current = pkg === '@hwip/cli' ? config_js_1.VERSION : (0, exports.installedMcpServerVersion)();
|
|
121
|
+
return { pkg, current, latest, outdated: !!(latest && current && (0, exports.isNewer)(latest, current)) };
|
|
122
|
+
});
|
|
123
|
+
if (isJson) {
|
|
124
|
+
console.log(JSON.stringify({ results }, null, 2));
|
|
125
|
+
return 0;
|
|
126
|
+
}
|
|
127
|
+
console.log('\n Hwip — update check\n');
|
|
128
|
+
let anyOutdated = false;
|
|
129
|
+
for (const r of results) {
|
|
130
|
+
if (!r.latest) {
|
|
131
|
+
console.log(` ? ${r.pkg}: could not reach npm registry`);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
if (r.current === null) {
|
|
135
|
+
console.log(` • ${r.pkg}: latest is v${r.latest}`);
|
|
136
|
+
}
|
|
137
|
+
else if (r.outdated) {
|
|
138
|
+
anyOutdated = true;
|
|
139
|
+
console.log(` ⬆ ${r.pkg}: v${r.current} → v${r.latest} (update available)`);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
console.log(` ✓ ${r.pkg}: v${r.current} (up to date)`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (anyOutdated) {
|
|
146
|
+
console.log(`\n Update with: ${exports.UPDATE_HINT}\n`);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
console.log('');
|
|
150
|
+
}
|
|
151
|
+
return 0;
|
|
152
|
+
};
|
|
153
|
+
exports.handleCheckUpdate = handleCheckUpdate;
|
package/dist/cli.d.ts
ADDED