silas 0.1.0 → 0.2.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.
Files changed (3) hide show
  1. package/README.md +7 -8
  2. package/dist/cli.js +88 -91
  3. package/package.json +3 -4
package/README.md CHANGED
@@ -58,7 +58,7 @@ silas cache clear -y # Delete all cached data
58
58
  Start the Model Context Protocol server for integration with Claude and other AI assistants:
59
59
 
60
60
  ```bash
61
- silas serve
61
+ silas mcp
62
62
  ```
63
63
 
64
64
  ## Supported Ecosystems
@@ -71,14 +71,13 @@ silas serve
71
71
 
72
72
  ## Configuration
73
73
 
74
- Configuration is stored at `~/.config/shelf/config.yaml`:
74
+ Configuration is stored at `~/.config/silas/config.json`:
75
75
 
76
- ```yaml
77
- cache:
78
- maxSizeGb: 10
79
-
80
- agent:
81
- type: claude-code # or: codex, aider, goose, custom
76
+ ```json
77
+ {
78
+ "cache_max_gb": 10,
79
+ "agent": "claude-code"
80
+ }
82
81
  ```
83
82
 
84
83
  ## License
package/dist/cli.js CHANGED
@@ -39469,55 +39469,6 @@ var require_public_api = __commonJS((exports) => {
39469
39469
  exports.stringify = stringify;
39470
39470
  });
39471
39471
 
39472
- // node_modules/yaml/dist/index.js
39473
- var composer, Document, Schema, errors, Alias, identity4, Pair, Scalar, YAMLMap, YAMLSeq, cst, lexer, lineCounter, parser, publicApi, visit, $Composer, $Document, $Schema, $YAMLError, $YAMLParseError, $YAMLWarning, $Alias, $isAlias, $isCollection, $isDocument, $isMap, $isNode, $isPair, $isScalar, $isSeq, $Pair, $Scalar, $YAMLMap, $YAMLSeq, $Lexer, $LineCounter, $Parser, $parse, $parseAllDocuments, $parseDocument, $stringify, $visit, $visitAsync;
39474
- var init_dist = __esm(() => {
39475
- composer = require_composer();
39476
- Document = require_Document();
39477
- Schema = require_Schema();
39478
- errors = require_errors();
39479
- Alias = require_Alias();
39480
- identity4 = require_identity();
39481
- Pair = require_Pair();
39482
- Scalar = require_Scalar();
39483
- YAMLMap = require_YAMLMap();
39484
- YAMLSeq = require_YAMLSeq();
39485
- cst = require_cst();
39486
- lexer = require_lexer();
39487
- lineCounter = require_line_counter();
39488
- parser = require_parser2();
39489
- publicApi = require_public_api();
39490
- visit = require_visit();
39491
- $Composer = composer.Composer;
39492
- $Document = Document.Document;
39493
- $Schema = Schema.Schema;
39494
- $YAMLError = errors.YAMLError;
39495
- $YAMLParseError = errors.YAMLParseError;
39496
- $YAMLWarning = errors.YAMLWarning;
39497
- $Alias = Alias.Alias;
39498
- $isAlias = identity4.isAlias;
39499
- $isCollection = identity4.isCollection;
39500
- $isDocument = identity4.isDocument;
39501
- $isMap = identity4.isMap;
39502
- $isNode = identity4.isNode;
39503
- $isPair = identity4.isPair;
39504
- $isScalar = identity4.isScalar;
39505
- $isSeq = identity4.isSeq;
39506
- $Pair = Pair.Pair;
39507
- $Scalar = Scalar.Scalar;
39508
- $YAMLMap = YAMLMap.YAMLMap;
39509
- $YAMLSeq = YAMLSeq.YAMLSeq;
39510
- $Lexer = lexer.Lexer;
39511
- $LineCounter = lineCounter.LineCounter;
39512
- $Parser = parser.Parser;
39513
- $parse = publicApi.parse;
39514
- $parseAllDocuments = publicApi.parseAllDocuments;
39515
- $parseDocument = publicApi.parseDocument;
39516
- $stringify = publicApi.stringify;
39517
- $visit = visit.visit;
39518
- $visitAsync = visit.visitAsync;
39519
- });
39520
-
39521
39472
  // node_modules/effect/dist/esm/Secret.js
39522
39473
  var fromString4;
39523
39474
  var init_Secret = __esm(() => {
@@ -70318,7 +70269,7 @@ var init_errors2 = __esm(() => {
70318
70269
  });
70319
70270
 
70320
70271
  // src/config/config.ts
70321
- var Agent, LogLevel, ConfigFile, ShelfConfigSchema, parseEnvAgent = (value6) => {
70272
+ var Agent, LogLevel, ConfigFile, SilasConfigSchema, parseEnvAgent = (value6) => {
70322
70273
  if (!value6)
70323
70274
  return;
70324
70275
  const valid = ["claude-code", "codex", "aider", "goose", "custom"];
@@ -70328,17 +70279,17 @@ var Agent, LogLevel, ConfigFile, ShelfConfigSchema, parseEnvAgent = (value6) =>
70328
70279
  return;
70329
70280
  const valid = ["debug", "info", "warn", "error"];
70330
70281
  return valid.includes(value6) ? value6 : undefined;
70331
- }, parseYaml = (schema) => (content) => exports_Effect.gen(function* () {
70282
+ }, parseJson2 = (schema) => (content) => exports_Effect.gen(function* () {
70332
70283
  const parsed = yield* exports_Effect.try({
70333
- try: () => $parse(content),
70334
- catch: (e) => new Error(`YAML parse error: ${e}`)
70284
+ try: () => JSON.parse(content),
70285
+ catch: (e) => new Error(`JSON parse error: ${e}`)
70335
70286
  });
70336
70287
  return yield* exports_Schema.decodeUnknown(schema)(parsed ?? {}).pipe(exports_Effect.mapError((e) => new Error(`Schema validation error: ${e}`)));
70337
70288
  }), loadConfigFile = (fs, configPath) => fs.exists(configPath).pipe(exports_Effect.flatMap((exists4) => {
70338
70289
  if (!exists4) {
70339
70290
  return exports_Effect.logDebug("No config file found, using defaults", { configPath }).pipe(exports_Effect.map(() => ({})));
70340
70291
  }
70341
- return fs.readFileString(configPath).pipe(exports_Effect.flatMap(parseYaml(ConfigFile)));
70292
+ return fs.readFileString(configPath).pipe(exports_Effect.flatMap(parseJson2(ConfigFile)));
70342
70293
  }), exports_Effect.tapError((e) => exports_Effect.logWarning("Failed to parse config file, using defaults", {
70343
70294
  configPath,
70344
70295
  error: String(e)
@@ -70347,15 +70298,14 @@ var Agent, LogLevel, ConfigFile, ShelfConfigSchema, parseEnvAgent = (value6) =>
70347
70298
  const xdgConfigHome = process.env["XDG_CONFIG_HOME"];
70348
70299
  const xdgCacheHome = process.env["XDG_CACHE_HOME"];
70349
70300
  const xdgStateHome = process.env["XDG_STATE_HOME"];
70350
- const configDir = xdgConfigHome ? pathService.join(xdgConfigHome, "shelf") : pathService.join(homeDir, ".config", "shelf");
70351
- const cacheDir = xdgCacheHome ? pathService.join(xdgCacheHome, "shelf") : pathService.join(homeDir, ".cache", "shelf");
70352
- const stateDir = xdgStateHome ? pathService.join(xdgStateHome, "shelf") : pathService.join(homeDir, ".local", "state", "shelf");
70301
+ const configDir = xdgConfigHome ? pathService.join(xdgConfigHome, "silas") : pathService.join(homeDir, ".config", "silas");
70302
+ const cacheDir = xdgCacheHome ? pathService.join(xdgCacheHome, "silas") : pathService.join(homeDir, ".cache", "silas");
70303
+ const stateDir = xdgStateHome ? pathService.join(xdgStateHome, "silas") : pathService.join(homeDir, ".local", "state", "silas");
70353
70304
  return { configDir, cacheDir, stateDir };
70354
70305
  }, Config2;
70355
70306
  var init_config3 = __esm(() => {
70356
70307
  init_esm3();
70357
70308
  init_esm4();
70358
- init_dist();
70359
70309
  init_errors2();
70360
70310
  Agent = exports_Schema.Literal("claude-code", "codex", "aider", "goose", "custom");
70361
70311
  LogLevel = exports_Schema.Literal("debug", "info", "warn", "error");
@@ -70367,10 +70317,10 @@ var init_config3 = __esm(() => {
70367
70317
  cache_max_gb: exports_Schema.optional(exports_Schema.Number),
70368
70318
  log_level: exports_Schema.optional(LogLevel)
70369
70319
  });
70370
- ShelfConfigSchema = exports_Schema.Struct({
70320
+ SilasConfigSchema = exports_Schema.Struct({
70371
70321
  agent: Agent,
70372
70322
  model: exports_Schema.String,
70373
- customCommand: exports_Schema.optional(exports_Schema.String),
70323
+ customCommand: exports_Schema.UndefinedOr(exports_Schema.String),
70374
70324
  timeout: exports_Schema.Number,
70375
70325
  cacheMaxGb: exports_Schema.Number,
70376
70326
  logLevel: LogLevel,
@@ -70378,18 +70328,18 @@ var init_config3 = __esm(() => {
70378
70328
  cacheDir: exports_Schema.String,
70379
70329
  stateDir: exports_Schema.String
70380
70330
  });
70381
- Config2 = class Config2 extends exports_Context.Tag("@shelf/Config")() {
70331
+ Config2 = class Config2 extends exports_Context.Tag("@silas/Config")() {
70382
70332
  static layer = exports_Layer.effect(Config2, exports_Effect.gen(function* () {
70383
70333
  const fs = yield* exports_FileSystem.FileSystem;
70384
70334
  const path4 = yield* exports_Path.Path;
70385
70335
  const { configDir, cacheDir, stateDir } = getDirectories(path4);
70386
- const configPath = path4.join(configDir, "config.yaml");
70336
+ const configPath = path4.join(configDir, "config.json");
70387
70337
  const fileConfig = yield* loadConfigFile(fs, configPath);
70388
- const envAgent = process.env["SHELF_AGENT"];
70389
- const envModel = process.env["SHELF_MODEL"];
70390
- const envTimeout = process.env["SHELF_TIMEOUT"];
70391
- const envCacheMaxGb = process.env["SHELF_CACHE_MAX_GB"];
70392
- const envLogLevel = process.env["SHELF_LOG_LEVEL"];
70338
+ const envAgent = process.env["SILAS_AGENT"];
70339
+ const envModel = process.env["SILAS_MODEL"];
70340
+ const envTimeout = process.env["SILAS_TIMEOUT"];
70341
+ const envCacheMaxGb = process.env["SILAS_CACHE_MAX_GB"];
70342
+ const envLogLevel = process.env["SILAS_LOG_LEVEL"];
70393
70343
  const agent = parseEnvAgent(envAgent) ?? fileConfig.agent ?? "claude-code";
70394
70344
  const model = envModel ?? fileConfig.model ?? "claude-sonnet-4-20250514";
70395
70345
  const customCommand = fileConfig.custom_command;
@@ -70407,7 +70357,7 @@ var init_config3 = __esm(() => {
70407
70357
  cacheDir,
70408
70358
  stateDir
70409
70359
  };
70410
- const validated = yield* exports_Schema.decodeUnknown(ShelfConfigSchema)(candidate).pipe(exports_Effect.mapError((e) => ConfigError.make({
70360
+ const validated = yield* exports_Schema.decodeUnknown(SilasConfigSchema)(candidate).pipe(exports_Effect.mapError((e) => ConfigError.make({
70411
70361
  message: `Invalid configuration: ${e}`
70412
70362
  })));
70413
70363
  return Config2.of(validated);
@@ -70419,9 +70369,9 @@ var init_config3 = __esm(() => {
70419
70369
  timeout: 10,
70420
70370
  cacheMaxGb: 1,
70421
70371
  logLevel: "debug",
70422
- configDir: "/tmp/shelf/config",
70423
- cacheDir: "/tmp/shelf/cache",
70424
- stateDir: "/tmp/shelf/state",
70372
+ configDir: "/tmp/silas/config",
70373
+ cacheDir: "/tmp/silas/cache",
70374
+ stateDir: "/tmp/silas/state",
70425
70375
  ...overrides
70426
70376
  }));
70427
70377
  };
@@ -70434,7 +70384,7 @@ var RequestId, currentRequestId, withRequestId = (effect3) => exports_Effect.gen
70434
70384
  });
70435
70385
  var init_request_id = __esm(() => {
70436
70386
  init_esm3();
70437
- RequestId = class RequestId extends exports_Context.Tag("@shelf/RequestId")() {
70387
+ RequestId = class RequestId extends exports_Context.Tag("@silas/RequestId")() {
70438
70388
  static generate = exports_Effect.try({
70439
70389
  try: () => {
70440
70390
  const bytes = new Uint8Array(4);
@@ -70460,7 +70410,7 @@ var levelPriority, writeLogEntry = (fs, logsDir, getLogFile, entry) => fs.makeDi
70460
70410
  const line4 = JSON.stringify(entry) + `
70461
70411
  `;
70462
70412
  return fs.writeFileString(logFile, line4, { flag: "a" });
70463
- }), exports_Effect.catchAll((e) => exports_Effect.sync(() => console.error(`[shelf:logger] Failed to write log: ${e}`)))), pruneOldLogs = (fs, pathService, logsDir, cutoffDays) => fs.exists(logsDir).pipe(exports_Effect.flatMap((exists4) => {
70413
+ }), exports_Effect.catchAll((e) => exports_Effect.sync(() => console.error(`[silas:logger] Failed to write log: ${e}`)))), pruneOldLogs = (fs, pathService, logsDir, cutoffDays) => fs.exists(logsDir).pipe(exports_Effect.flatMap((exists4) => {
70464
70414
  if (!exists4)
70465
70415
  return exports_Effect.void;
70466
70416
  return fs.readDirectory(logsDir).pipe(exports_Effect.flatMap((files) => {
@@ -70472,7 +70422,7 @@ var levelPriority, writeLogEntry = (fs, logsDir, getLogFile, entry) => fs.makeDi
70472
70422
  }).map((file6) => fs.remove(pathService.join(logsDir, file6)));
70473
70423
  return exports_Effect.all(removeEffects, { concurrency: "unbounded" });
70474
70424
  }), exports_Effect.asVoid);
70475
- }), exports_Effect.tapError((e) => exports_Effect.sync(() => console.error(`[shelf:logger] Failed to prune old logs: ${e}`))), exports_Effect.catchAll(() => exports_Effect.void)), Logger;
70425
+ }), exports_Effect.tapError((e) => exports_Effect.sync(() => console.error(`[silas:logger] Failed to prune old logs: ${e}`))), exports_Effect.catchAll(() => exports_Effect.void)), Logger;
70476
70426
  var init_logger2 = __esm(() => {
70477
70427
  init_esm3();
70478
70428
  init_esm4();
@@ -70484,7 +70434,7 @@ var init_logger2 = __esm(() => {
70484
70434
  warn: 2,
70485
70435
  error: 3
70486
70436
  };
70487
- Logger = class Logger extends exports_Context.Tag("@shelf/Logger")() {
70437
+ Logger = class Logger extends exports_Context.Tag("@silas/Logger")() {
70488
70438
  static layer = exports_Layer.effect(Logger, exports_Effect.gen(function* () {
70489
70439
  const config2 = yield* Config2;
70490
70440
  const fs = yield* exports_FileSystem.FileSystem;
@@ -70509,7 +70459,7 @@ var init_logger2 = __esm(() => {
70509
70459
  ...fields
70510
70460
  };
70511
70461
  yield* writeLogEntry(fs, logsDir, getLogFile, entry);
70512
- const stderrLine = `[shelf:${requestId}] ${message}`;
70462
+ const stderrLine = `[silas:${requestId}] ${message}`;
70513
70463
  yield* exports_Effect.sync(() => console.error(stderrLine));
70514
70464
  });
70515
70465
  yield* pruneOldLogs(fs, path4, logsDir, 30);
@@ -70643,7 +70593,7 @@ var init_git = __esm(() => {
70643
70593
  init_errors2();
70644
70594
  init_spawn();
70645
70595
  init_logger2();
70646
- Git = class Git extends exports_Context.Tag("@shelf/Git")() {
70596
+ Git = class Git extends exports_Context.Tag("@silas/Git")() {
70647
70597
  static layer = exports_Layer.effect(Git, exports_Effect.gen(function* () {
70648
70598
  const config2 = yield* Config2;
70649
70599
  const pathService = yield* exports_Path.Path;
@@ -70726,7 +70676,7 @@ var init_lock = __esm(() => {
70726
70676
  init_config3();
70727
70677
  init_errors2();
70728
70678
  init_logger2();
70729
- Lock = class Lock extends exports_Context.Tag("@shelf/Lock")() {
70679
+ Lock = class Lock extends exports_Context.Tag("@silas/Lock")() {
70730
70680
  static layer = exports_Layer.effect(Lock, exports_Effect.gen(function* () {
70731
70681
  const config2 = yield* Config2;
70732
70682
  const pathService = yield* exports_Path.Path;
@@ -70810,7 +70760,7 @@ var init_checkout = __esm(() => {
70810
70760
  branch: exports_Schema.optional(exports_Schema.String)
70811
70761
  });
70812
70762
  CheckoutMetaFromJson = exports_Schema.parseJson(CheckoutMeta);
70813
- Checkout = class Checkout extends exports_Context.Tag("@shelf/Checkout")() {
70763
+ Checkout = class Checkout extends exports_Context.Tag("@silas/Checkout")() {
70814
70764
  static layer = exports_Layer.effect(Checkout, exports_Effect.gen(function* () {
70815
70765
  const config2 = yield* Config2;
70816
70766
  const fs = yield* exports_FileSystem.FileSystem;
@@ -70937,7 +70887,7 @@ var init_cache2 = __esm(() => {
70937
70887
  init_cache_meta();
70938
70888
  init_spawn();
70939
70889
  init_logger2();
70940
- Cache = class Cache extends exports_Context.Tag("@shelf/Cache")() {
70890
+ Cache = class Cache extends exports_Context.Tag("@silas/Cache")() {
70941
70891
  static layer = exports_Layer.effect(Cache, exports_Effect.gen(function* () {
70942
70892
  const config2 = yield* Config2;
70943
70893
  const fs = yield* exports_FileSystem.FileSystem;
@@ -71080,7 +71030,7 @@ var init_ref_resolver = __esm(() => {
71080
71030
  init_git();
71081
71031
  init_errors2();
71082
71032
  init_logger2();
71083
- RefResolver = class RefResolver extends exports_Context.Tag("@shelf/RefResolver")() {
71033
+ RefResolver = class RefResolver extends exports_Context.Tag("@silas/RefResolver")() {
71084
71034
  static layer = exports_Layer.effect(RefResolver, exports_Effect.gen(function* () {
71085
71035
  const git = yield* Git;
71086
71036
  const logger3 = yield* Logger;
@@ -71295,7 +71245,7 @@ var init_pypi = __esm(() => {
71295
71245
  var resolveCargo = (packageName, version) => {
71296
71246
  const url2 = `https://crates.io/api/v1/crates/${packageName}`;
71297
71247
  return fetchRegistry(url2, packageName, "cargo", CargoRegistryResponseSchema, {
71298
- "User-Agent": "shelf/1.0"
71248
+ "User-Agent": "silas/1.0"
71299
71249
  }).pipe(exports_Effect.flatMap((data) => {
71300
71250
  const resolvedVersion = version ?? data.crate?.newest_version;
71301
71251
  if (!resolvedVersion) {
@@ -71500,7 +71450,7 @@ var init_package_resolver = __esm(() => {
71500
71450
  init_esm3();
71501
71451
  init_resolvers();
71502
71452
  ECOSYSTEMS = ["npm", "pypi", "cargo", "go", "rubygems"];
71503
- PackageResolver = class PackageResolver extends exports_Context.Tag("@shelf/PackageResolver")() {
71453
+ PackageResolver = class PackageResolver extends exports_Context.Tag("@silas/PackageResolver")() {
71504
71454
  static layer = exports_Layer.succeed(PackageResolver, PackageResolver.of({
71505
71455
  resolve: exports_Effect.fn("PackageResolver.resolve")(function* (ecosystem, packageName, version) {
71506
71456
  return yield* resolvers[ecosystem](packageName, version);
@@ -71613,7 +71563,7 @@ var init_agent = __esm(() => {
71613
71563
  init_config3();
71614
71564
  init_errors2();
71615
71565
  init_spawn();
71616
- Agent2 = class Agent2 extends exports_Context.Tag("@shelf/Agent")() {
71566
+ Agent2 = class Agent2 extends exports_Context.Tag("@silas/Agent")() {
71617
71567
  static layer = exports_Layer.effect(Agent2, exports_Effect.gen(function* () {
71618
71568
  const config2 = yield* Config2;
71619
71569
  const invoke = exports_Effect.fn("Agent.invoke")(function* (workingDir, context8) {
@@ -100624,7 +100574,7 @@ var init_mcp2 = __esm(() => {
100624
100574
  init_ask();
100625
100575
  init_request_id();
100626
100576
  server = new McpServer({
100627
- name: "shelf",
100577
+ name: "silas",
100628
100578
  version: "0.1.0"
100629
100579
  });
100630
100580
  server.tool("ask_library", `Answer questions about a published library by fetching and analyzing its source code, documentation, and API.
@@ -100751,7 +100701,7 @@ Be specific. For large repositories, mention which part of the codebase you're i
100751
100701
  try: () => server.connect(transport),
100752
100702
  catch: (error51) => new Error(`Failed to connect MCP server: ${error51}`)
100753
100703
  });
100754
- yield* exports_Console.error("shelf MCP server started");
100704
+ yield* exports_Console.error("silas MCP server started");
100755
100705
  });
100756
100706
  if (false) {}
100757
100707
  });
@@ -100816,9 +100766,56 @@ init_Ref();
100816
100766
  // node_modules/@effect/cli/dist/esm/internal/files.js
100817
100767
  init_FileSystem();
100818
100768
  init_Effect();
100819
- init_dist();
100820
100769
  var Ini = __toESM(require_ini(), 1);
100821
100770
  var Toml = __toESM(require_toml(), 1);
100771
+
100772
+ // node_modules/yaml/dist/index.js
100773
+ var composer = require_composer();
100774
+ var Document = require_Document();
100775
+ var Schema = require_Schema();
100776
+ var errors = require_errors();
100777
+ var Alias = require_Alias();
100778
+ var identity4 = require_identity();
100779
+ var Pair = require_Pair();
100780
+ var Scalar = require_Scalar();
100781
+ var YAMLMap = require_YAMLMap();
100782
+ var YAMLSeq = require_YAMLSeq();
100783
+ var cst = require_cst();
100784
+ var lexer = require_lexer();
100785
+ var lineCounter = require_line_counter();
100786
+ var parser = require_parser2();
100787
+ var publicApi = require_public_api();
100788
+ var visit = require_visit();
100789
+ var $Composer = composer.Composer;
100790
+ var $Document = Document.Document;
100791
+ var $Schema = Schema.Schema;
100792
+ var $YAMLError = errors.YAMLError;
100793
+ var $YAMLParseError = errors.YAMLParseError;
100794
+ var $YAMLWarning = errors.YAMLWarning;
100795
+ var $Alias = Alias.Alias;
100796
+ var $isAlias = identity4.isAlias;
100797
+ var $isCollection = identity4.isCollection;
100798
+ var $isDocument = identity4.isDocument;
100799
+ var $isMap = identity4.isMap;
100800
+ var $isNode = identity4.isNode;
100801
+ var $isPair = identity4.isPair;
100802
+ var $isScalar = identity4.isScalar;
100803
+ var $isSeq = identity4.isSeq;
100804
+ var $Pair = Pair.Pair;
100805
+ var $Scalar = Scalar.Scalar;
100806
+ var $YAMLMap = YAMLMap.YAMLMap;
100807
+ var $YAMLSeq = YAMLSeq.YAMLSeq;
100808
+ var $Lexer = lexer.Lexer;
100809
+ var $LineCounter = lineCounter.LineCounter;
100810
+ var $Parser = parser.Parser;
100811
+ var $parse = publicApi.parse;
100812
+ var $parseAllDocuments = publicApi.parseAllDocuments;
100813
+ var $parseDocument = publicApi.parseDocument;
100814
+ var $stringify = publicApi.stringify;
100815
+ var $visit = visit.visit;
100816
+ var $visitAsync = visit.visitAsync;
100817
+
100818
+ // node_modules/@effect/cli/dist/esm/internal/files.js
100822
100819
  var fileParsers = {
100823
100820
  json: (content) => JSON.parse(content),
100824
100821
  yaml: (content) => $parse(content),
@@ -107930,16 +107927,16 @@ var cacheClearCommand = exports_Command.make("clear", { yes: yesOpt }, ({ yes })
107930
107927
  yield* exports_Console.log("Cache cleared");
107931
107928
  })).pipe(exports_Command.withDescription("Delete all cached data"));
107932
107929
  var cacheCommand = exports_Command.make("cache").pipe(exports_Command.withSubcommands([cacheStatusCommand, cachePruneCommand, cacheClearCommand]), exports_Command.withDescription("Manage the local cache"));
107933
- var serveCommand = exports_Command.make("serve", {}, () => exports_Effect.gen(function* () {
107934
- const mcp = yield* exports_Effect.tryPromise({
107930
+ var mcpCommand = exports_Command.make("mcp", {}, () => exports_Effect.gen(function* () {
107931
+ const mcpModule = yield* exports_Effect.tryPromise({
107935
107932
  try: () => Promise.resolve().then(() => (init_mcp2(), exports_mcp)),
107936
107933
  catch: (error51) => ValidationError.make({
107937
107934
  message: `Failed to load MCP module: ${error51}`
107938
107935
  })
107939
107936
  });
107940
- yield* mcp.startServer;
107937
+ yield* mcpModule.startServer;
107941
107938
  })).pipe(exports_Command.withDescription("Start the MCP server"));
107942
- var mainCommand = exports_Command.make("silas").pipe(exports_Command.withSubcommands([askCommand, resolveCommand, cacheCommand, serveCommand]), exports_Command.withDescription("Answer questions about library source code"));
107939
+ var mainCommand = exports_Command.make("silas").pipe(exports_Command.withSubcommands([askCommand, resolveCommand, cacheCommand, mcpCommand]), exports_Command.withDescription("Answer questions about library source code"));
107943
107940
  var cli = exports_Command.run(mainCommand, {
107944
107941
  name: "silas",
107945
107942
  version: "0.1.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "silas",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "CLI and MCP server for answering questions about library source code",
5
5
  "author": "David Turnbull",
6
6
  "license": "MIT",
@@ -25,7 +25,7 @@
25
25
  "prepare": "effect-language-service patch",
26
26
  "typecheck": "tsc --noEmit",
27
27
  "test": "bun test",
28
- "shelf": "bun src/cli.ts",
28
+ "silas": "bun src/cli.ts",
29
29
  "build": "bun build src/cli.ts --target=node --outdir=dist --entry-naming=[name].js && bun run build:shebang",
30
30
  "build:shebang": "echo '#!/usr/bin/env node' | cat - dist/cli.js > dist/cli.tmp && mv dist/cli.tmp dist/cli.js",
31
31
  "prepublishOnly": "bun run build"
@@ -45,7 +45,6 @@
45
45
  "@effect/rpc": "latest",
46
46
  "@effect/sql": "latest",
47
47
  "@modelcontextprotocol/sdk": "^1.25.1",
48
- "effect": "latest",
49
- "yaml": "^2.8.2"
48
+ "effect": "latest"
50
49
  }
51
50
  }