@agentvault/claude-bridge 0.7.13 → 0.7.15
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/dist/index.js +56 -10
- package/dist/service/backend.d.ts +3 -0
- package/dist/service/backend.d.ts.map +1 -1
- package/dist/service/launchd.d.ts +3 -0
- package/dist/service/launchd.d.ts.map +1 -1
- package/dist/service/subcommand.d.ts.map +1 -1
- package/dist/service/systemd.d.ts +3 -0
- package/dist/service/systemd.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -267,6 +267,11 @@ var init_launchd = __esm({
|
|
|
267
267
|
this.deps.exec("sleep", ["0.25"]);
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
|
+
/** #837: restart in place. Same kickstart install ends with, WITHOUT
|
|
271
|
+
* rewriting the plist — so env baked at the original install survives. */
|
|
272
|
+
restart(label) {
|
|
273
|
+
this.deps.exec("launchctl", ["kickstart", "-k", `${this.domain()}/${label}`]);
|
|
274
|
+
}
|
|
270
275
|
uninstall(label) {
|
|
271
276
|
this.deps.exec("launchctl", ["bootout", `${this.domain()}/${label}`]);
|
|
272
277
|
const path2 = this.plistPath(label);
|
|
@@ -331,6 +336,11 @@ var init_systemd = __esm({
|
|
|
331
336
|
this.deps.exec("systemctl", ["--user", "enable", `${spec.label}.service`]);
|
|
332
337
|
this.deps.exec("systemctl", ["--user", "restart", `${spec.label}.service`]);
|
|
333
338
|
}
|
|
339
|
+
/** #837: restart in place, without daemon-reload or rewriting the unit —
|
|
340
|
+
* so env written at the original install survives. */
|
|
341
|
+
restart(label) {
|
|
342
|
+
this.deps.exec("systemctl", ["--user", "restart", `${label}.service`]);
|
|
343
|
+
}
|
|
334
344
|
uninstall(label) {
|
|
335
345
|
this.deps.exec("systemctl", ["--user", "disable", "--now", `${label}.service`]);
|
|
336
346
|
this.deps.exec("loginctl", ["disable-linger", this.deps.user]);
|
|
@@ -389,12 +399,41 @@ var subcommand_exports = {};
|
|
|
389
399
|
__export(subcommand_exports, {
|
|
390
400
|
maybeRunServiceSubcommand: () => maybeRunServiceSubcommand
|
|
391
401
|
});
|
|
402
|
+
function requireAgentName(env) {
|
|
403
|
+
const name = env.AV_AGENT_NAME?.trim();
|
|
404
|
+
if (!name) {
|
|
405
|
+
throw new Error(
|
|
406
|
+
"AV_AGENT_NAME is required \u2014 it names WHICH agent's service to act on. Re-run as: AV_AGENT_NAME=<agent-name> agentvault-claude-bridge <subcommand>"
|
|
407
|
+
);
|
|
408
|
+
}
|
|
409
|
+
return name;
|
|
410
|
+
}
|
|
392
411
|
function labelFor(env) {
|
|
393
|
-
return `dev.agentvault.bridge-${slugify2(env
|
|
412
|
+
return `dev.agentvault.bridge-${slugify2(requireAgentName(env))}`;
|
|
413
|
+
}
|
|
414
|
+
function legacyLabelFor(env) {
|
|
415
|
+
return `com.agentvault.claude-bridge.${slugify2(requireAgentName(env))}`;
|
|
416
|
+
}
|
|
417
|
+
function resolveLabel(backend, env) {
|
|
418
|
+
const current = labelFor(env);
|
|
419
|
+
if (backend.status(current).loaded) return current;
|
|
420
|
+
const legacy = legacyLabelFor(env);
|
|
421
|
+
if (backend.status(legacy).loaded) return legacy;
|
|
422
|
+
return current;
|
|
394
423
|
}
|
|
395
424
|
function maybeRunServiceSubcommand(argv, env, deps) {
|
|
396
425
|
const cmd = argv[2];
|
|
397
|
-
if (!cmd
|
|
426
|
+
if (!cmd) return false;
|
|
427
|
+
if (!SERVICE_CMDS.has(cmd)) {
|
|
428
|
+
const looksLikeToken = cmd.startsWith("av_tok_");
|
|
429
|
+
const looksLikeFlag = cmd.startsWith("-");
|
|
430
|
+
if (!looksLikeToken && !looksLikeFlag) {
|
|
431
|
+
throw new Error(
|
|
432
|
+
`unknown subcommand: ${cmd} \u2014 expected one of ${[...SERVICE_CMDS].join(", ")}, an invite token, or no argument at all`
|
|
433
|
+
);
|
|
434
|
+
}
|
|
435
|
+
return false;
|
|
436
|
+
}
|
|
398
437
|
const backend = deps?.backend ?? selectBackend(process.platform);
|
|
399
438
|
const entrypoint = deps?.entrypoint ?? process.argv[1];
|
|
400
439
|
const log = deps?.log ?? ((m6) => console.error("[bridge] " + m6));
|
|
@@ -416,17 +455,23 @@ function maybeRunServiceSubcommand(argv, env, deps) {
|
|
|
416
455
|
});
|
|
417
456
|
backend.install(spec);
|
|
418
457
|
log(`installed service ${spec.label} \u2014 logs: ${spec.logOut}`);
|
|
419
|
-
log(
|
|
458
|
+
log(
|
|
459
|
+
`check it with: AV_AGENT_NAME=${cfg.agentName} agentvault-claude-bridge status`
|
|
460
|
+
);
|
|
420
461
|
} else if (cmd === "uninstall") {
|
|
421
|
-
const label =
|
|
462
|
+
const label = resolveLabel(backend, env);
|
|
422
463
|
backend.uninstall(label);
|
|
423
464
|
log(`uninstalled service ${label}`);
|
|
465
|
+
} else if (cmd === "restart") {
|
|
466
|
+
const label = resolveLabel(backend, env);
|
|
467
|
+
backend.restart(label);
|
|
468
|
+
log(`restarted service ${label}`);
|
|
424
469
|
} else if (cmd === "status") {
|
|
425
|
-
const label =
|
|
470
|
+
const label = resolveLabel(backend, env);
|
|
426
471
|
const st = backend.status(label);
|
|
427
472
|
log(`${label}: ${st.loaded ? "loaded" : "not loaded"}`);
|
|
428
473
|
} else if (cmd === "logs") {
|
|
429
|
-
const label =
|
|
474
|
+
const label = resolveLabel(backend, env);
|
|
430
475
|
log(`logs for ${label} are at <dataDir>/logs/bridge.log (tail -f it)`);
|
|
431
476
|
}
|
|
432
477
|
} catch (e7) {
|
|
@@ -442,7 +487,7 @@ var init_subcommand = __esm({
|
|
|
442
487
|
init_config();
|
|
443
488
|
init_spec();
|
|
444
489
|
init_backend();
|
|
445
|
-
SERVICE_CMDS = /* @__PURE__ */ new Set(["install", "uninstall", "status", "logs"]);
|
|
490
|
+
SERVICE_CMDS = /* @__PURE__ */ new Set(["install", "uninstall", "restart", "status", "logs"]);
|
|
446
491
|
}
|
|
447
492
|
});
|
|
448
493
|
|
|
@@ -69927,7 +69972,8 @@ ${messageText}`;
|
|
|
69927
69972
|
const candidateCount = candidates.filter(Boolean).length;
|
|
69928
69973
|
const joined = await joinWithFirstMatchingKp(welcomeBytes, candidates);
|
|
69929
69974
|
if (!joined) {
|
|
69930
|
-
console.error(`[SecureChannel] No matching KeyPackage found for Welcome \u2014 cannot join group ${groupId?.slice(0, 8)}. The Welcome is encrypted to a published KP's public key; none of our ${candidateCount} candidate bundle(s) decrypted it.
|
|
69975
|
+
console.error(`[SecureChannel] No matching KeyPackage found for Welcome \u2014 cannot join group ${groupId?.slice(0, 8)}. The Welcome is encrypted to a published KP's public key; none of our ${candidateCount} candidate bundle(s) decrypted it. Requesting a re-Welcome with a fresh KeyPackage.`);
|
|
69976
|
+
if (groupId) void this._requestWelcomeSelfHeal(groupId);
|
|
69931
69977
|
return;
|
|
69932
69978
|
}
|
|
69933
69979
|
const mgr = joined.mgr;
|
|
@@ -134411,7 +134457,7 @@ async function main() {
|
|
|
134411
134457
|
"[bridge] warning: passing the invite token on the command line is visible to other local users via 'ps'. Prefer: AV_INVITE_TOKEN=\u2026 npx @agentvault/claude-bridge"
|
|
134412
134458
|
);
|
|
134413
134459
|
}
|
|
134414
|
-
logLine(`[bridge] version: ${true ? "0.7.
|
|
134460
|
+
logLine(`[bridge] version: ${true ? "0.7.15" : "dev"}`);
|
|
134415
134461
|
logLine(`[bridge] data dir: ${cfg.dataDir} (${cfg.dataDirSource})`);
|
|
134416
134462
|
logLine(`[bridge] workspace: ${cfg.workspaceDir} \xB7 permissions: ${cfg.permissionMode} \xB7 enclave dir fenced`);
|
|
134417
134463
|
if (cfg.armRoom) {
|
|
@@ -134443,7 +134489,7 @@ async function main() {
|
|
|
134443
134489
|
// its default would render "@agentvault/agentvault@0.7.x" — the wrong
|
|
134444
134490
|
// package name attached to the bridge's version number, which is worse
|
|
134445
134491
|
// than either alone.
|
|
134446
|
-
clientVersion: `@agentvault/claude-bridge@${true ? "0.7.
|
|
134492
|
+
clientVersion: `@agentvault/claude-bridge@${true ? "0.7.15" : "dev"}`
|
|
134447
134493
|
});
|
|
134448
134494
|
const agentSystemPrompt = cfg.systemPrompt ?? `You are ${cfg.agentName}, an AI agent on AgentVault. You talk with your owner in 1:1 direct messages and collaborate with other agents in shared rooms. That is your identity \u2014 introduce yourself by that name and do not claim to be any other agent. To speak, call the say tool. In a 1:1 with your owner, reply to what they say. In a room you see every message \u2014 call say only when you have something worth adding, and otherwise stay silent. Keep messages concise.`;
|
|
134449
134495
|
const deviceJwt = () => {
|
|
@@ -2,6 +2,9 @@ import type { ServiceSpec } from "./spec.js";
|
|
|
2
2
|
export interface ServiceBackend {
|
|
3
3
|
install(spec: ServiceSpec): void;
|
|
4
4
|
uninstall(label: string): void;
|
|
5
|
+
/** Restart an ALREADY-INSTALLED service without touching its spec (#837).
|
|
6
|
+
* Distinct from install, which re-bakes the plist from the current shell. */
|
|
7
|
+
restart(label: string): void;
|
|
5
8
|
status(label: string): {
|
|
6
9
|
loaded: boolean;
|
|
7
10
|
detail: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/service/backend.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACnC;AAED,wBAAgB,WAAW,IAAI,WAAW,CAoBzC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,cAAc,CAU3F"}
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/service/backend.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;kFAC8E;IAC9E,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACnC;AAED,wBAAgB,WAAW,IAAI,WAAW,CAoBzC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,cAAc,CAU3F"}
|
|
@@ -9,6 +9,9 @@ export declare class LaunchdBackend implements ServiceBackend {
|
|
|
9
9
|
private domain;
|
|
10
10
|
install(spec: ServiceSpec): void;
|
|
11
11
|
private waitUntilGone;
|
|
12
|
+
/** #837: restart in place. Same kickstart install ends with, WITHOUT
|
|
13
|
+
* rewriting the plist — so env baked at the original install survives. */
|
|
14
|
+
restart(label: string): void;
|
|
12
15
|
uninstall(label: string): void;
|
|
13
16
|
status(label: string): {
|
|
14
17
|
loaded: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launchd.d.ts","sourceRoot":"","sources":["../../src/service/launchd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUhE,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAkC5D;AAED,qBAAa,cAAe,YAAW,cAAc;IACvC,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,WAAW;IAErC,OAAO,CAAC,SAAS;IAGjB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IA2BhC,OAAO,CAAC,aAAa;IAOrB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAI3D"}
|
|
1
|
+
{"version":3,"file":"launchd.d.ts","sourceRoot":"","sources":["../../src/service/launchd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUhE,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAkC5D;AAED,qBAAa,cAAe,YAAW,cAAc;IACvC,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,WAAW;IAErC,OAAO,CAAC,SAAS;IAGjB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IA2BhC,OAAO,CAAC,aAAa;IAOrB;+EAC2E;IAC3E,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAI3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subcommand.d.ts","sourceRoot":"","sources":["../../src/service/subcommand.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"subcommand.d.ts","sourceRoot":"","sources":["../../src/service/subcommand.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B;AAuDD;;uFAEuF;AACvF,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAsFT"}
|
|
@@ -10,6 +10,9 @@ export declare class SystemdBackend implements ServiceBackend {
|
|
|
10
10
|
constructor(deps: BackendDeps);
|
|
11
11
|
private unitPath;
|
|
12
12
|
install(spec: ServiceSpec): void;
|
|
13
|
+
/** #837: restart in place, without daemon-reload or rewriting the unit —
|
|
14
|
+
* so env written at the original install survives. */
|
|
15
|
+
restart(label: string): void;
|
|
13
16
|
uninstall(label: string): void;
|
|
14
17
|
status(label: string): {
|
|
15
18
|
loaded: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemd.d.ts","sourceRoot":"","sources":["../../src/service/systemd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBhE;;;sFAGsF;AACtF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAsB3D;AAED,qBAAa,cAAe,YAAW,cAAc;IACvC,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,WAAW;IAErC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAoBhC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ9B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAQ3D"}
|
|
1
|
+
{"version":3,"file":"systemd.d.ts","sourceRoot":"","sources":["../../src/service/systemd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBhE;;;sFAGsF;AACtF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAsB3D;AAED,qBAAa,cAAe,YAAW,cAAc;IACvC,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,WAAW;IAErC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAoBhC;2DACuD;IACvD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ9B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAQ3D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentvault/claude-bridge",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.15",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AgentVault Claude Bridge — daemon for bridging a Claude agent into secure E2E-encrypted AgentVault 1:1 direct messages and rooms.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"build": "npm --prefix ../plugin run build && tsc --emitDeclarationOnly && node build.mjs",
|
|
27
27
|
"start": "node dist/index.js",
|
|
28
28
|
"test": "vitest run",
|
|
29
|
+
"typecheck": "tsc -p tsconfig.test.json",
|
|
29
30
|
"prepublishOnly": "npm run build"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|