@knowsuchagency/fulcrum 3.2.1 → 3.3.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/bin/fulcrum.js CHANGED
@@ -1710,6 +1710,14 @@ class FulcrumClient {
1710
1710
  params.set("conversationProvider", input.conversationProvider);
1711
1711
  if (input.conversationProjectId)
1712
1712
  params.set("conversationProjectId", input.conversationProjectId);
1713
+ if (input.gmailFrom)
1714
+ params.set("gmailFrom", input.gmailFrom);
1715
+ if (input.gmailTo)
1716
+ params.set("gmailTo", input.gmailTo);
1717
+ if (input.gmailAfter)
1718
+ params.set("gmailAfter", input.gmailAfter);
1719
+ if (input.gmailBefore)
1720
+ params.set("gmailBefore", input.gmailBefore);
1713
1721
  return this.fetch(`/api/search?${params.toString()}`);
1714
1722
  }
1715
1723
  }
@@ -44359,9 +44367,9 @@ var init_registry = __esm(() => {
44359
44367
  },
44360
44368
  {
44361
44369
  name: "search",
44362
- description: "Search across all Fulcrum entities (tasks, projects, messages, events, memories) using full-text search",
44370
+ description: "Search across all Fulcrum entities (tasks, projects, messages, events, memories, gmail) using full-text search",
44363
44371
  category: "core",
44364
- keywords: ["search", "find", "query", "fts", "full-text", "task", "project", "message", "event", "memory", "recall", "knowledge"],
44372
+ keywords: ["search", "find", "query", "fts", "full-text", "task", "project", "message", "event", "memory", "recall", "knowledge", "gmail", "email", "google"],
44365
44373
  defer_loading: false
44366
44374
  },
44367
44375
  {
@@ -46215,7 +46223,7 @@ var init_messaging = __esm(() => {
46215
46223
 
46216
46224
  // cli/src/mcp/tools/search.ts
46217
46225
  var EntityTypeSchema, registerSearchTools = (server, client) => {
46218
- server.tool("search", 'Search across all Fulcrum entities (tasks, projects, messages, calendar events, memories, conversations) using full-text search. Supports boolean operators (AND, OR, NOT), phrase matching ("quoted phrases"), and prefix matching (term*). Returns results ranked by relevance.', {
46226
+ server.tool("search", 'Search across all Fulcrum entities (tasks, projects, messages, calendar events, memories, conversations) using full-text search. Supports boolean operators (AND, OR, NOT), phrase matching ("quoted phrases"), and prefix matching (term*). Returns results ranked by relevance. Gmail search is opt-in: include "gmail" in entities to search Gmail via API (not included in default searches).', {
46219
46227
  query: exports_external.string().describe('FTS5 search query. Supports: AND, OR, NOT operators, "quoted phrases", prefix* matching. Example: "kubernetes deployment" OR k8s'),
46220
46228
  entities: exports_external.optional(exports_external.array(EntityTypeSchema)).describe("Entity types to search. Defaults to all: tasks, projects, messages, events, memories, conversations"),
46221
46229
  limit: exports_external.optional(exports_external.number()).describe("Maximum results per entity type (default: 10)"),
@@ -46228,8 +46236,12 @@ var EntityTypeSchema, registerSearchTools = (server, client) => {
46228
46236
  memoryTags: exports_external.optional(exports_external.array(exports_external.string())).describe("Filter memories by tags"),
46229
46237
  conversationRole: exports_external.optional(exports_external.string()).describe('Filter conversations by role (e.g., "user", "assistant")'),
46230
46238
  conversationProvider: exports_external.optional(exports_external.string()).describe('Filter conversations by provider (e.g., "claude", "opencode")'),
46231
- conversationProjectId: exports_external.optional(exports_external.string()).describe("Filter conversations by project ID")
46232
- }, async ({ query, entities, limit, taskStatus, projectStatus, messageChannel, messageDirection, eventFrom, eventTo, memoryTags, conversationRole, conversationProvider, conversationProjectId }) => {
46239
+ conversationProjectId: exports_external.optional(exports_external.string()).describe("Filter conversations by project ID"),
46240
+ gmailFrom: exports_external.optional(exports_external.string()).describe('Filter Gmail results by sender (e.g., "user@example.com")'),
46241
+ gmailTo: exports_external.optional(exports_external.string()).describe('Filter Gmail results by recipient (e.g., "user@example.com")'),
46242
+ gmailAfter: exports_external.optional(exports_external.string()).describe("Filter Gmail results after this date (YYYY/MM/DD format)"),
46243
+ gmailBefore: exports_external.optional(exports_external.string()).describe("Filter Gmail results before this date (YYYY/MM/DD format)")
46244
+ }, async ({ query, entities, limit, taskStatus, projectStatus, messageChannel, messageDirection, eventFrom, eventTo, memoryTags, conversationRole, conversationProvider, conversationProjectId, gmailFrom, gmailTo, gmailAfter, gmailBefore }) => {
46233
46245
  try {
46234
46246
  const results = await client.search({
46235
46247
  query,
@@ -46244,7 +46256,11 @@ var EntityTypeSchema, registerSearchTools = (server, client) => {
46244
46256
  memoryTags,
46245
46257
  conversationRole,
46246
46258
  conversationProvider,
46247
- conversationProjectId
46259
+ conversationProjectId,
46260
+ gmailFrom,
46261
+ gmailTo,
46262
+ gmailAfter,
46263
+ gmailBefore
46248
46264
  });
46249
46265
  return formatSuccess(results);
46250
46266
  } catch (err) {
@@ -46255,7 +46271,7 @@ var EntityTypeSchema, registerSearchTools = (server, client) => {
46255
46271
  var init_search = __esm(() => {
46256
46272
  init_zod2();
46257
46273
  init_utils();
46258
- EntityTypeSchema = exports_external.enum(["tasks", "projects", "messages", "events", "memories", "conversations"]);
46274
+ EntityTypeSchema = exports_external.enum(["tasks", "projects", "messages", "events", "memories", "conversations", "gmail"]);
46259
46275
  });
46260
46276
 
46261
46277
  // cli/src/mcp/tools/index.ts
@@ -46316,7 +46332,7 @@ async function runMcpServer(urlOverride, portOverride) {
46316
46332
  const client = new FulcrumClient(urlOverride, portOverride);
46317
46333
  const server = new McpServer({
46318
46334
  name: "fulcrum",
46319
- version: "3.2.1"
46335
+ version: "3.3.0"
46320
46336
  });
46321
46337
  registerTools(server, client);
46322
46338
  const transport = new StdioServerTransport;
@@ -48665,7 +48681,7 @@ var marketplace_default = `{
48665
48681
  "name": "fulcrum",
48666
48682
  "source": "./",
48667
48683
  "description": "Task orchestration for Claude Code",
48668
- "version": "3.2.1",
48684
+ "version": "3.3.0",
48669
48685
  "skills": [
48670
48686
  "./skills/fulcrum"
48671
48687
  ],
@@ -49869,7 +49885,7 @@ function compareVersions(v1, v2) {
49869
49885
  var package_default = {
49870
49886
  name: "@knowsuchagency/fulcrum",
49871
49887
  private: true,
49872
- version: "3.2.1",
49888
+ version: "3.3.0",
49873
49889
  description: "Harness Attention. Orchestrate Agents. Ship.",
49874
49890
  license: "PolyForm-Perimeter-1.0.0",
49875
49891
  type: "module",