vault-go 0.26.0 → 0.28.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/README.md CHANGED
@@ -148,7 +148,9 @@ Projects and sessions: `vault_go_projects`, `vault_go_project_create`, `vault_go
148
148
 
149
149
  Capture and recall: `vault_go_event`, `vault_go_remember`, `vault_go_forget`, `vault_go_search`, `vault_go_search_index`, `vault_go_retrieve`, `vault_go_observations`, `vault_go_timeline`, `vault_go_context`, `vault_go_file_context`, `vault_go_feed`, `vault_go_memory`, `vault_go_tool_uses`, `vault_go_stats`.
150
150
 
151
- `vault_go_retrieve` lets the central memory engine choose a bounded retrieval path while every explicit retrieval tool remains available. `vault_go_decision_status` reports sanitized rollout/circuit state. Jev and its credential remain in the engine; a healthy deployment does not by itself prove provider availability or decision quality.
151
+ Read tools (`vault_go_search`, `vault_go_search_index`, `vault_go_feed`, `vault_go_retrieve` and query-anchored `vault_go_timeline`) are scoped to the project of the MCP server's working directory when no `projectId` is given; a git worktree maps to its main checkout. Pass `scope: "account"` to search every project of the account. Outside a known project they fall back to the account, and no project is created. Memories marked private stay out of search and feed results unless `includePrivate: true` is set.
152
+
153
+ `vault_go_retrieve` lets the central memory engine choose a bounded retrieval path while every explicit retrieval tool remains available. `vault_go_decision_status` reports sanitized rollout/circuit state. Jev and its credential remain in the engine; a healthy deployment does not by itself prove provider availability or decision quality. `vault_go_decide` sends a caller-authored state plus up to 8 typed questions (`noul`, `choice`, `score`) to the central Jev and returns probabilities; it runs only in `full` rollout, one call at a time, refuses secrets, e-mails, identifiers, URLs and absolute local paths before anything leaves Vault, and persists nothing. The caller still owns the decision.
152
154
 
153
155
  Knowledge bases: `vault_go_knowledge_bases`, `vault_go_knowledge_base`, `vault_go_knowledge_build`, `vault_go_knowledge_rebuild`, `vault_go_knowledge_query`, `vault_go_knowledge_delete`, `vault_go_prime_corpus`, `vault_go_query_corpus`, `vault_go_reprime_corpus`.
154
156
 
@@ -26,8 +26,8 @@ export declare const CAPABILITIES: {
26
26
  }, {
27
27
  readonly upstream: readonly ["automatic retrieval routing", "typed memory decisions"];
28
28
  readonly status: "available";
29
- readonly tools: readonly ["vault_go_retrieve", "vault_go_decision_status"];
30
- readonly requires: "Jev runs only in the central memory engine. Status is sanitized; deployment availability does not prove provider health or decision quality. Explicit retrieval tools remain available.";
29
+ readonly tools: readonly ["vault_go_retrieve", "vault_go_decision_status", "vault_go_decide"];
30
+ readonly requires: "Jev runs only in the central memory engine. Status is sanitized; deployment availability does not prove provider health or decision quality. vault_go_decide forwards caller-authored typed questions only in full rollout and refuses protected content. Explicit retrieval tools remain available.";
31
31
  }, {
32
32
  readonly upstream: readonly ["get_tool_uses"];
33
33
  readonly status: "available";
@@ -142,8 +142,8 @@ export declare function getCapabilities(home: string, cloud: VaultMemoryApi, ver
142
142
  }, {
143
143
  readonly upstream: readonly ["automatic retrieval routing", "typed memory decisions"];
144
144
  readonly status: "available";
145
- readonly tools: readonly ["vault_go_retrieve", "vault_go_decision_status"];
146
- readonly requires: "Jev runs only in the central memory engine. Status is sanitized; deployment availability does not prove provider health or decision quality. Explicit retrieval tools remain available.";
145
+ readonly tools: readonly ["vault_go_retrieve", "vault_go_decision_status", "vault_go_decide"];
146
+ readonly requires: "Jev runs only in the central memory engine. Status is sanitized; deployment availability does not prove provider health or decision quality. vault_go_decide forwards caller-authored typed questions only in full rollout and refuses protected content. Explicit retrieval tools remain available.";
147
147
  }, {
148
148
  readonly upstream: readonly ["get_tool_uses"];
149
149
  readonly status: "available";
@@ -11,7 +11,7 @@ export const CAPABILITIES = {
11
11
  capabilities: [
12
12
  { upstream: ['important_workflow'], status: 'available', tools: ['vault_go_workflow'] },
13
13
  { upstream: ['search', 'get_observations', 'timeline'], status: 'available', tools: ['vault_go_search_index', 'vault_go_observations', 'vault_go_timeline', 'vault_go_feed'], difference: 'Vault uses UUID identifiers. Search accepts an optional query, offset and date ordering; timeline accepts an explicit UUID or resolves an anchor from a query; feed uses stable cursor pagination.' },
14
- { upstream: ['automatic retrieval routing', 'typed memory decisions'], status: 'available', tools: ['vault_go_retrieve', 'vault_go_decision_status'], requires: 'Jev runs only in the central memory engine. Status is sanitized; deployment availability does not prove provider health or decision quality. Explicit retrieval tools remain available.' },
14
+ { upstream: ['automatic retrieval routing', 'typed memory decisions'], status: 'available', tools: ['vault_go_retrieve', 'vault_go_decision_status', 'vault_go_decide'], requires: 'Jev runs only in the central memory engine. Status is sanitized; deployment availability does not prove provider health or decision quality. vault_go_decide forwards caller-authored typed questions only in full rollout and refuses protected content. Explicit retrieval tools remain available.' },
15
15
  { upstream: ['get_tool_uses'], status: 'available', tools: ['vault_go_tool_uses'], requires: 'Verified POST /memory/events/batch contract. Historical output exists only when captured; private fields and secrets are redacted from retrieval.' },
16
16
  { upstream: ['session_start_context', 'multi-project context'], status: 'available', tools: ['vault_go_session_start_context', 'vault_go_context', 'vault_go_file_context', 'vault_go_context_chain', 'vault_go_context_chain_configure'], requires: 'Context chains require explicit local configuration and share one bounded character budget. Native hooks cover Claude, Codex, Grok, Agy and Gemini; OpenCode 1.x remains context-only.' },
17
17
  { upstream: ['smart_search', 'smart_outline', 'smart_unfold'], status: 'available', tools: ['vault_go_smart_search', 'vault_go_smart_outline', 'vault_go_smart_unfold', 'vault_go_smart_languages'], requires: 'Real grammars for all 24 upstream languages plus HTML. Availability is reported per running platform; SCSS has no Linux ARM64 prebuild. Workspace reads and results are bounded.' },
package/dist/cloud.d.ts CHANGED
@@ -26,6 +26,7 @@ export interface VaultMemoryApi {
26
26
  search(input: Record<string, unknown>): Promise<unknown>;
27
27
  retrieve?(input: Record<string, unknown>): Promise<unknown>;
28
28
  decisionStatus?(): Promise<unknown>;
29
+ decide?(input: Record<string, unknown>): Promise<unknown>;
29
30
  searchIndex(input: Record<string, unknown>): Promise<unknown>;
30
31
  observations(ids: string[]): Promise<unknown>;
31
32
  timeline(input: Record<string, unknown>): Promise<unknown>;
@@ -73,6 +74,7 @@ export declare class VaultCloudClient implements VaultMemoryApi {
73
74
  search(input: Record<string, unknown>): Promise<unknown>;
74
75
  retrieve(input: Record<string, unknown>): Promise<unknown>;
75
76
  decisionStatus(): Promise<unknown>;
77
+ decide(input: Record<string, unknown>): Promise<unknown>;
76
78
  searchIndex(input: Record<string, unknown>): Promise<unknown>;
77
79
  observations(ids: string[]): Promise<unknown>;
78
80
  timeline(input: Record<string, unknown>): Promise<unknown>;
package/dist/cloud.js CHANGED
@@ -108,6 +108,9 @@ export class VaultCloudClient {
108
108
  async decisionStatus() {
109
109
  return this.request('/memory/decisions/status');
110
110
  }
111
+ async decide(input) {
112
+ return this.request('/memory/decisions/evaluate', { method: 'POST', body: input });
113
+ }
111
114
  async searchIndex(input) {
112
115
  return this.request('/memory/search/index', { method: 'POST', body: input });
113
116
  }
package/dist/hooks.d.ts CHANGED
@@ -3,6 +3,8 @@ import { type VaultMemoryApi } from "./cloud.js";
3
3
  export declare const HOOK_EVENTS: readonly ["context", "session-init", "observation", "file-context", "summarize"];
4
4
  export type HookEvent = (typeof HOOK_EVENTS)[number];
5
5
  type RecordValue = Record<string, unknown>;
6
+ /** The existing project for a working directory (worktrees map to their main checkout); never creates one. */
7
+ export declare function findWorkspaceProject(cloud: Pick<VaultMemoryApi, "projects">, cwd: string): Promise<RecordValue | undefined>;
6
8
  export declare function normalizeHookInput(adapter: string, value: unknown): RecordValue;
7
9
  export declare function hookOutput(event: HookEvent, context?: string, adapter?: string): RecordValue;
8
10
  export declare function executeHook(adapter: string, event: HookEvent, value: unknown, cloud?: VaultMemoryApi, home?: string, options?: {
package/dist/hooks.js CHANGED
@@ -66,6 +66,19 @@ function projectRoots(workspace) {
66
66
  return fallback;
67
67
  }
68
68
  }
69
+ function matchWorkspaceProject(projects, roots) {
70
+ if (!Array.isArray(projects))
71
+ throw new Error("Resposta de projetos inválida");
72
+ return roots.map((cwd) => projects.find((item) => item &&
73
+ typeof item === "object" &&
74
+ typeof item.rootPath === "string" &&
75
+ Boolean(String(item.rootPath).trim()) &&
76
+ resolvedPath(String(item.rootPath)) === cwd)).find(Boolean);
77
+ }
78
+ /** The existing project for a working directory (worktrees map to their main checkout); never creates one. */
79
+ export async function findWorkspaceProject(cloud, cwd) {
80
+ return matchWorkspaceProject(await cloud.projects(), projectRoots(root(cwd)));
81
+ }
69
82
  function canonicalFile(file, workspace, project) {
70
83
  const absolute = resolve(workspace, file);
71
84
  for (const directory of [workspace, resolvedPath(workspace)]) {
@@ -173,11 +186,7 @@ export async function executeHook(adapter, event, value, cloud = new VaultCloudC
173
186
  const projects = await cloud.projects();
174
187
  if (!Array.isArray(projects))
175
188
  throw new Error("Resposta de projetos inválida");
176
- let project = roots.map((cwd) => projects.find((item) => item &&
177
- typeof item === "object" &&
178
- typeof item.rootPath === "string" &&
179
- Boolean(String(item.rootPath).trim()) &&
180
- resolvedPath(String(item.rootPath)) === cwd)).find(Boolean);
189
+ let project = matchWorkspaceProject(projects, roots);
181
190
  const cwd = project ? resolvedPath(String(project.rootPath)) : roots[0];
182
191
  if (!project && reading)
183
192
  return hookOutput(event, "", adapter);
@@ -10,7 +10,7 @@ export declare function primeKnowledgeAgent(home: string, cloud: VaultMemoryApi,
10
10
  primed: boolean;
11
11
  memoryCount: number;
12
12
  conversationReset: boolean;
13
- engine: "vault-ai-resume" | "claude-subscription" | "openai-subscription" | "openrouter" | "gemini";
13
+ engine: "gemini" | "vault-ai-resume" | "claude-subscription" | "openai-subscription" | "openrouter";
14
14
  model: string;
15
15
  }>;
16
16
  export declare function queryKnowledgeAgent(home: string, cloud: VaultMemoryApi, id: string, question: string, dependencies?: Dependencies): Promise<{
@@ -31,7 +31,7 @@ export declare function queryKnowledgeAgent(home: string, cloud: VaultMemoryApi,
31
31
  title: string;
32
32
  }[];
33
33
  generated: boolean;
34
- engine: "vault-ai-resume" | "claude-subscription" | "openai-subscription" | "openrouter" | "gemini";
34
+ engine: "gemini" | "vault-ai-resume" | "claude-subscription" | "openai-subscription" | "openrouter";
35
35
  model: string;
36
36
  conversationTurns: number;
37
37
  contextTruncated: boolean;
@@ -0,0 +1,13 @@
1
+ import type { VaultMemoryApi } from './cloud.js';
2
+ export type ProjectScope = 'project' | 'account';
3
+ type ScopedInput = Record<string, unknown> & {
4
+ projectId?: string | undefined;
5
+ scope?: ProjectScope | undefined;
6
+ };
7
+ /**
8
+ * Why: MCP reads used to span every project of the account, so an agent in one
9
+ * repository received memories from unrelated clients. Reads now default to the
10
+ * project of the MCP server's working directory; `scope: "account"` widens them.
11
+ */
12
+ export declare function createProjectScope(cloud: VaultMemoryApi, cwd?: () => string): (input: ScopedInput) => Promise<Record<string, unknown>>;
13
+ export {};
@@ -0,0 +1,22 @@
1
+ import { findWorkspaceProject } from './hooks.js';
2
+ const CACHE_MS = 60_000;
3
+ /**
4
+ * Why: MCP reads used to span every project of the account, so an agent in one
5
+ * repository received memories from unrelated clients. Reads now default to the
6
+ * project of the MCP server's working directory; `scope: "account"` widens them.
7
+ */
8
+ export function createProjectScope(cloud, cwd = () => process.cwd()) {
9
+ let cached;
10
+ return async (input) => {
11
+ const { scope = 'project', ...rest } = input;
12
+ if (rest.projectId || scope === 'account')
13
+ return rest;
14
+ const workspace = cwd();
15
+ if (!cached || cached.cwd !== workspace || Date.now() - cached.at > CACHE_MS) {
16
+ const project = await findWorkspaceProject(cloud, workspace);
17
+ cached = { cwd: workspace, at: Date.now(), projectId: typeof project?.id === 'string' ? project.id : undefined };
18
+ }
19
+ // Outside a known project there is nothing narrower to scope to.
20
+ return cached.projectId ? { ...rest, projectId: cached.projectId } : rest;
21
+ };
22
+ }
package/dist/server.js CHANGED
@@ -9,6 +9,7 @@ import { registerCrystalTools } from './crystal-tools.js';
9
9
  import { registerModeIntegrations } from './mode-integrations.js';
10
10
  import { registerKnowledgeAgentTools } from './knowledge-tools.js';
11
11
  import { redact } from './hooks.js';
12
+ import { createProjectScope } from './project-scope.js';
12
13
  import { VaultCloudClient } from './cloud.js';
13
14
  import { getStatus, vaultHome } from './config.js';
14
15
  import { createPrivateBackup, restorePrivateBackup } from './backup.js';
@@ -172,12 +173,23 @@ export function createVaultGoServer(home = vaultHome(), cloud = new VaultCloudCl
172
173
  inputSchema: { id: uuid },
173
174
  annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true },
174
175
  }, async ({ id }) => run(() => cloud.forget(id)));
176
+ const scoped = createProjectScope(cloud);
177
+ const scope = z
178
+ .enum(['project', 'account'])
179
+ .default('project')
180
+ .describe('project (padrão): só o projeto do diretório atual quando projectId não é informado; account: todos os projetos da conta.');
181
+ const includePrivate = z
182
+ .boolean()
183
+ .default(false)
184
+ .describe('Inclui memórias marcadas como privadas (por padrão ficam de fora).');
175
185
  server.registerTool('vault_go_search', {
176
186
  title: 'Pesquisar no Vault',
177
187
  description: 'Pesquisa memórias persistidas na plataforma Vault.',
178
188
  inputSchema: {
179
189
  query: z.string().trim().max(1_000).default(''),
180
190
  projectId: uuid.optional(),
191
+ scope,
192
+ includePrivate,
181
193
  kind: z.string().trim().max(100).optional(),
182
194
  memoryType: z.string().trim().max(100).optional(),
183
195
  platformSource: z.string().trim().max(100).optional(),
@@ -190,23 +202,24 @@ export function createVaultGoServer(home = vaultHome(), cloud = new VaultCloudCl
190
202
  orderBy: z.enum(['date_asc', 'date_desc']).optional(),
191
203
  },
192
204
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
193
- }, async (input) => run(() => cloud.search(input)));
205
+ }, async (input) => run(async () => cloud.search(await scoped(input))));
194
206
  server.registerTool('vault_go_retrieve', {
195
207
  title: 'Recuperação automática do Vault',
196
208
  description: 'Delega ao motor central a escolha tipada entre busca, contexto de arquivo, linha do tempo, base de conhecimento, grafo ou nenhum resultado. Falhas usam busca determinística.',
197
209
  inputSchema: {
198
210
  query: z.string().trim().min(1).max(1_000),
199
211
  projectId: uuid.optional(),
212
+ scope,
200
213
  files: z.array(z.string().trim().min(1).max(2_000)).max(50).default([]),
201
214
  knowledgeBaseId: uuid.optional(),
202
215
  limit: z.number().int().min(1).max(200).default(20),
203
216
  maxChars: z.number().int().min(1_000).max(100_000).optional(),
204
217
  },
205
218
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
206
- }, async (input) => run(() => {
219
+ }, async (input) => run(async () => {
207
220
  if (!cloud.retrieve)
208
221
  throw new Error('Native retrieval is unavailable on this deployment.');
209
- return cloud.retrieve(input);
222
+ return cloud.retrieve(await scoped(input));
210
223
  }));
211
224
  server.registerTool('vault_go_decision_status', {
212
225
  title: 'Status da camada de decisão',
@@ -218,12 +231,48 @@ export function createVaultGoServer(home = vaultHome(), cloud = new VaultCloudCl
218
231
  throw new Error('Decision status is unavailable on this deployment.');
219
232
  return cloud.decisionStatus();
220
233
  }));
234
+ const decisionText = (max) => z.string().trim().min(1).max(max);
235
+ const decisionQuestion = z.discriminatedUnion('type', [
236
+ z.object({
237
+ type: z.literal('noul'),
238
+ instructions: decisionText(2_000),
239
+ criteria: z.object({ true: decisionText(500), false: decisionText(500) }).strict().optional(),
240
+ }).strict(),
241
+ z.object({
242
+ type: z.literal('choice'),
243
+ instructions: decisionText(2_000),
244
+ criteria: z.record(z.string().regex(/^[a-z0-9][a-z0-9_-]{0,47}$/), decisionText(500))
245
+ .refine((options) => Object.keys(options).length >= 2 && Object.keys(options).length <= 32, 'choice needs 2 to 32 options'),
246
+ }).strict(),
247
+ z.object({
248
+ type: z.literal('score'),
249
+ instructions: decisionText(2_000),
250
+ criteria: z.array(decisionText(500)).min(2).max(10),
251
+ }).strict(),
252
+ ]);
253
+ server.registerTool('vault_go_decide', {
254
+ title: 'Decidir com o Jev',
255
+ description: 'Envia ao Jev central um estado e até 8 perguntas tipadas (noul = probabilidade de sim; choice = uma opção entre 2–32; score = nível entre 2–10) e retorna respostas com probabilidades. '
256
+ + 'Exige rollout full. Segredos, e-mails, UUIDs, URLs e caminhos locais absolutos são recusados antes de sair do Vault. Nada é persistido; a decisão final continua sendo de quem chama.',
257
+ inputSchema: {
258
+ state: z.union([z.string().trim().min(1), z.record(z.string(), z.unknown()), z.array(z.unknown()).min(1)]),
259
+ questions: z.record(z.string().regex(/^[a-z][a-z0-9_]{0,47}$/), decisionQuestion)
260
+ .refine((questions) => Object.keys(questions).length >= 1 && Object.keys(questions).length <= 8, 'questions must contain 1 to 8 entries'),
261
+ },
262
+ annotations: { readOnlyHint: true, idempotentHint: false, openWorldHint: true },
263
+ }, async (input) => run(() => {
264
+ if (!cloud.decide)
265
+ throw new Error('Jev decisions are unavailable on this deployment.');
266
+ return cloud.decide(input);
267
+ }));
221
268
  server.registerTool('vault_go_search_index', {
222
269
  title: 'Pesquisar índice compacto',
223
270
  description: 'Primeira camada de recuperação: retorna metadados, trechos e custo estimado sem carregar o conteúdo completo.',
224
271
  inputSchema: {
225
272
  query: z.string().trim().max(1_000).default(''),
226
273
  projectId: uuid.optional(),
274
+ scope,
275
+ includePrivate,
227
276
  kind: z.string().trim().max(100).optional(),
228
277
  memoryType: z.string().trim().max(100).optional(),
229
278
  platformSource: z.string().trim().max(100).optional(),
@@ -236,7 +285,7 @@ export function createVaultGoServer(home = vaultHome(), cloud = new VaultCloudCl
236
285
  orderBy: z.enum(['date_asc', 'date_desc']).optional(),
237
286
  },
238
287
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
239
- }, async (input) => run(() => cloud.searchIndex(input)));
288
+ }, async (input) => run(async () => cloud.searchIndex(await scoped(input))));
240
289
  server.registerTool('vault_go_observations', {
241
290
  title: 'Carregar observações por ID',
242
291
  description: 'Terceira camada de recuperação: carrega em lote somente as observações escolhidas no índice ou na linha do tempo.',
@@ -252,15 +301,18 @@ export function createVaultGoServer(home = vaultHome(), cloud = new VaultCloudCl
252
301
  anchorId: uuid.optional(),
253
302
  query: z.string().trim().min(1).max(1_000).optional(),
254
303
  projectId: uuid.optional(),
304
+ scope,
255
305
  platformSource: z.string().trim().min(1).max(100).optional(),
256
306
  before: z.number().int().min(0).max(100).default(5),
257
307
  after: z.number().int().min(0).max(100).default(5),
258
308
  },
259
309
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
260
- }, async (input) => run(() => {
310
+ }, async (input) => run(async () => {
261
311
  if (Boolean(input.anchorId) === Boolean(input.query))
262
312
  throw new Error('Informe exatamente anchorId ou query.');
263
- return cloud.timeline(input);
313
+ // An anchor already identifies its project; only query anchors are scoped.
314
+ const { scope: _scope, ...anchored } = input;
315
+ return cloud.timeline(input.anchorId ? anchored : await scoped(input));
264
316
  }));
265
317
  server.registerTool('vault_go_context', {
266
318
  title: 'Montar contexto',
@@ -295,6 +347,8 @@ export function createVaultGoServer(home = vaultHome(), cloud = new VaultCloudCl
295
347
  description: 'Lista memórias recentes com paginação estável por cursor.',
296
348
  inputSchema: {
297
349
  projectId: uuid.optional(),
350
+ scope,
351
+ includePrivate,
298
352
  kind: z.string().trim().max(100).optional(),
299
353
  memoryType: z.string().trim().max(100).optional(),
300
354
  platformSource: z.string().trim().max(100).optional(),
@@ -302,7 +356,7 @@ export function createVaultGoServer(home = vaultHome(), cloud = new VaultCloudCl
302
356
  limit: z.number().int().min(1).max(100).default(20),
303
357
  },
304
358
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
305
- }, async (input) => run(() => cloud.feed(input)));
359
+ }, async (input) => run(async () => cloud.feed(await scoped(input))));
306
360
  server.registerTool('vault_go_knowledge_bases', {
307
361
  title: 'Listar bases de conhecimento',
308
362
  description: 'Lista bases filtradas e persistidas na plataforma Vault.',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vault-go",
3
- "version": "0.26.0",
3
+ "version": "0.28.0",
4
4
  "description": "MCP server and installer for Vault Memory: search, capture, and use account memory across AI clients.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -84,7 +84,9 @@
84
84
  "dist/mcp-clients.js",
85
85
  "dist/mcp-clients.d.ts",
86
86
  "dist/mcp-result.js",
87
+ "dist/project-scope.js",
87
88
  "dist/mcp-result.d.ts",
89
+ "dist/project-scope.d.ts",
88
90
  "dist/parity-tools.js",
89
91
  "dist/parity-tools.d.ts",
90
92
  "dist/capabilities.js",
@@ -133,7 +135,7 @@
133
135
  ],
134
136
  "scripts": {
135
137
  "clean": "bun -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
136
- "build": "bun run clean && tsc -p tsconfig.json",
138
+ "build": "bun run clean && tsc -p tsconfig.build.json",
137
139
  "typecheck": "tsc -p tsconfig.json --noEmit",
138
140
  "test": "bun run build && bun test src",
139
141
  "pack:check": "npm pack --dry-run",