attio-mcp 1.1.0 → 1.1.2

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 (100) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +3 -2
  3. package/dist/api/operations/search.d.ts +5 -2
  4. package/dist/api/operations/search.d.ts.map +1 -1
  5. package/dist/api/operations/search.js +469 -9
  6. package/dist/api/operations/search.js.map +1 -1
  7. package/dist/cli.js +1 -1
  8. package/dist/cli.js.map +1 -1
  9. package/dist/handlers/tool-configs/openai/index.d.ts +2 -2
  10. package/dist/handlers/tool-configs/openai/index.d.ts.map +1 -1
  11. package/dist/handlers/tool-configs/openai/index.js +13 -2
  12. package/dist/handlers/tool-configs/openai/index.js.map +1 -1
  13. package/dist/handlers/tool-configs/universal/core/crud-operations.d.ts.map +1 -1
  14. package/dist/handlers/tool-configs/universal/core/crud-operations.js +22 -3
  15. package/dist/handlers/tool-configs/universal/core/crud-operations.js.map +1 -1
  16. package/dist/handlers/tool-configs/universal/index.d.ts +4 -18
  17. package/dist/handlers/tool-configs/universal/index.d.ts.map +1 -1
  18. package/dist/handlers/tool-configs/universal/index.js +25 -5
  19. package/dist/handlers/tool-configs/universal/index.js.map +1 -1
  20. package/dist/handlers/tools/registry.d.ts +3 -10
  21. package/dist/handlers/tools/registry.d.ts.map +1 -1
  22. package/dist/objects/deals/index.d.ts +1 -0
  23. package/dist/objects/deals/index.d.ts.map +1 -1
  24. package/dist/objects/deals/index.js +2 -0
  25. package/dist/objects/deals/index.js.map +1 -1
  26. package/dist/objects/deals/search.d.ts +16 -0
  27. package/dist/objects/deals/search.d.ts.map +1 -0
  28. package/dist/objects/deals/search.js +59 -0
  29. package/dist/objects/deals/search.js.map +1 -0
  30. package/dist/prompts/handlers.d.ts +1 -1
  31. package/dist/prompts/handlers.d.ts.map +1 -1
  32. package/dist/prompts/handlers.js +8 -9
  33. package/dist/prompts/handlers.js.map +1 -1
  34. package/dist/prompts/v1/utils/token-metadata.d.ts +3 -3
  35. package/dist/prompts/v1/utils/token-metadata.d.ts.map +1 -1
  36. package/dist/prompts/v1/utils/token-metadata.js +7 -7
  37. package/dist/prompts/v1/utils/token-metadata.js.map +1 -1
  38. package/dist/prompts/v1/utils/validation.d.ts +1 -1
  39. package/dist/prompts/v1/utils/validation.d.ts.map +1 -1
  40. package/dist/prompts/v1/utils/validation.js +2 -2
  41. package/dist/prompts/v1/utils/validation.js.map +1 -1
  42. package/dist/server/createServer.d.ts +2 -2
  43. package/dist/server/createServer.d.ts.map +1 -1
  44. package/dist/server/createServer.js +3 -3
  45. package/dist/server/createServer.js.map +1 -1
  46. package/dist/services/CachingService.d.ts +57 -0
  47. package/dist/services/CachingService.d.ts.map +1 -1
  48. package/dist/services/CachingService.js +112 -0
  49. package/dist/services/CachingService.js.map +1 -1
  50. package/dist/services/UniversalSearchService.d.ts +0 -12
  51. package/dist/services/UniversalSearchService.d.ts.map +1 -1
  52. package/dist/services/UniversalSearchService.js +19 -133
  53. package/dist/services/UniversalSearchService.js.map +1 -1
  54. package/dist/services/search-strategies/CompanySearchStrategy.d.ts.map +1 -1
  55. package/dist/services/search-strategies/CompanySearchStrategy.js +13 -11
  56. package/dist/services/search-strategies/CompanySearchStrategy.js.map +1 -1
  57. package/dist/services/search-strategies/DealSearchStrategy.d.ts +38 -0
  58. package/dist/services/search-strategies/DealSearchStrategy.d.ts.map +1 -0
  59. package/dist/services/search-strategies/DealSearchStrategy.js +119 -0
  60. package/dist/services/search-strategies/DealSearchStrategy.js.map +1 -0
  61. package/dist/services/search-strategies/NoteSearchStrategy.d.ts +62 -0
  62. package/dist/services/search-strategies/NoteSearchStrategy.d.ts.map +1 -0
  63. package/dist/services/search-strategies/NoteSearchStrategy.js +224 -0
  64. package/dist/services/search-strategies/NoteSearchStrategy.js.map +1 -0
  65. package/dist/services/search-strategies/PeopleSearchStrategy.d.ts.map +1 -1
  66. package/dist/services/search-strategies/PeopleSearchStrategy.js +13 -15
  67. package/dist/services/search-strategies/PeopleSearchStrategy.js.map +1 -1
  68. package/dist/services/search-strategies/index.d.ts +2 -0
  69. package/dist/services/search-strategies/index.d.ts.map +1 -1
  70. package/dist/services/search-strategies/index.js +2 -0
  71. package/dist/services/search-strategies/index.js.map +1 -1
  72. package/dist/services/search-strategies/interfaces.d.ts +6 -0
  73. package/dist/services/search-strategies/interfaces.d.ts.map +1 -1
  74. package/dist/services/search-utilities/SearchScorer.d.ts +4 -0
  75. package/dist/services/search-utilities/SearchScorer.d.ts.map +1 -0
  76. package/dist/services/search-utilities/SearchScorer.js +243 -0
  77. package/dist/services/search-utilities/SearchScorer.js.map +1 -0
  78. package/dist/services/search-utilities/SearchUtilities.d.ts +5 -0
  79. package/dist/services/search-utilities/SearchUtilities.d.ts.map +1 -1
  80. package/dist/services/search-utilities/SearchUtilities.js +20 -0
  81. package/dist/services/search-utilities/SearchUtilities.js.map +1 -1
  82. package/dist/smithery.d.ts +5 -2
  83. package/dist/smithery.d.ts.map +1 -1
  84. package/dist/smithery.js +20 -2
  85. package/dist/smithery.js.map +1 -1
  86. package/dist/utils/mcp-discovery.d.ts.map +1 -1
  87. package/dist/utils/mcp-discovery.js +19 -1
  88. package/dist/utils/mcp-discovery.js.map +1 -1
  89. package/dist/utils/token-count.d.ts +3 -3
  90. package/dist/utils/token-count.d.ts.map +1 -1
  91. package/dist/utils/token-count.js +48 -8
  92. package/dist/utils/token-count.js.map +1 -1
  93. package/dist/utils/token-footprint-analyzer.d.ts +2 -2
  94. package/dist/utils/token-footprint-analyzer.d.ts.map +1 -1
  95. package/dist/utils/token-footprint-analyzer.js +10 -10
  96. package/dist/utils/token-footprint-analyzer.js.map +1 -1
  97. package/dist/utils/validation/phone-validation.d.ts.map +1 -1
  98. package/dist/utils/validation/phone-validation.js +3 -4
  99. package/dist/utils/validation/phone-validation.js.map +1 -1
  100. package/package.json +5 -2
@@ -0,0 +1,243 @@
1
+ import uFuzzy from '@leeoniya/ufuzzy';
2
+ import { parseQuery } from '../../api/operations/query-parser.js';
3
+ /**
4
+ * Score weights for search relevance ranking
5
+ *
6
+ * Hierarchy (descending):
7
+ * 1. Exact matches (1200-900) - Highest confidence signals
8
+ * 2. Prefix matches (350) - Strong relevance indicators
9
+ * 3. Multi-token matches (250) - All query terms present
10
+ * 4. Fuzzy matches (240 base) - Typo tolerance
11
+ * 5. Single token matches (40-90) - Partial relevance
12
+ *
13
+ * Rationale:
14
+ * - Domain > Email > Phone > Name: Domains are most discriminative (unique per company)
15
+ * - Exact > Prefix > Fuzzy > Token: Match precision determines confidence
16
+ * - 79% ratio (email/domain): Email nearly as strong as domain for identity
17
+ * - 20% ratio (partial/exact): Partial matches indicate relevance but lower confidence
18
+ */
19
+ const SCORE_WEIGHTS = {
20
+ domainExact: 1200, // Highest - exact domain match is strongest identity signal
21
+ domainPartial: 250, // 20% of exact - partial domain match (e.g., "acme" in "acme-corp.com")
22
+ emailExact: 950, // 79% of domain - email nearly as strong as domain for person identity
23
+ phoneExact: 900, // 75% of domain - phone is strong but less unique than domain/email
24
+ nameExact: 600, // 50% of domain - names have more collisions than domains
25
+ namePrefix: 350, // 29% of exact - "John" matching "John Smith" is strong signal
26
+ allTokensInName: 250, // All query tokens present - multi-word match confidence
27
+ tokenInName: 90, // Single token in name - weak signal (e.g., "Smith" is common)
28
+ tokenInDomain: 70, // Single token in domain - slightly weaker than name
29
+ tokenInEmail: 40, // Single token in email - weakest signal (high noise)
30
+ fuzzyBase: 240, // Base score for fuzzy matches (typo tolerance)
31
+ fuzzyStep: 24, // Penalty per character difference in fuzzy match (10% of base)
32
+ };
33
+ function normalizeString(value) {
34
+ return value.toLowerCase().trim();
35
+ }
36
+ function normalizeDomain(value) {
37
+ return normalizeString(value.replace(/^https?:\/\//, '').replace(/^www\./, ''));
38
+ }
39
+ function dedupe(values) {
40
+ return Array.from(new Set(values.filter(Boolean)));
41
+ }
42
+ function collectStrings(value, keys = []) {
43
+ const results = [];
44
+ const pushValue = (candidate) => {
45
+ if (typeof candidate === 'string' && candidate.trim()) {
46
+ results.push(normalizeString(candidate));
47
+ }
48
+ };
49
+ if (!value) {
50
+ return results;
51
+ }
52
+ if (typeof value === 'string') {
53
+ pushValue(value);
54
+ return results;
55
+ }
56
+ if (Array.isArray(value)) {
57
+ value.forEach((item) => {
58
+ if (typeof item === 'string') {
59
+ pushValue(item);
60
+ }
61
+ else if (item && typeof item === 'object') {
62
+ keys.forEach((key) => {
63
+ pushValue(item[key]);
64
+ });
65
+ }
66
+ });
67
+ return results;
68
+ }
69
+ if (value && typeof value === 'object') {
70
+ keys.forEach((key) => {
71
+ pushValue(value[key]);
72
+ });
73
+ }
74
+ return results;
75
+ }
76
+ function extractName(values) {
77
+ const nameValue = values.name;
78
+ if (typeof nameValue === 'string') {
79
+ return normalizeString(nameValue);
80
+ }
81
+ if (Array.isArray(nameValue) && nameValue.length > 0) {
82
+ const first = nameValue[0];
83
+ if (typeof first === 'string') {
84
+ return normalizeString(first);
85
+ }
86
+ if (first && typeof first === 'object') {
87
+ const candidate = first.full_name ??
88
+ first.formatted ??
89
+ first.value;
90
+ if (typeof candidate === 'string') {
91
+ return normalizeString(candidate);
92
+ }
93
+ }
94
+ }
95
+ const fullName = values.full_name;
96
+ if (typeof fullName === 'string') {
97
+ return normalizeString(fullName);
98
+ }
99
+ const titleValue = values.title;
100
+ if (typeof titleValue === 'string') {
101
+ return normalizeString(titleValue);
102
+ }
103
+ return '';
104
+ }
105
+ function extractRecordInfo(record) {
106
+ const values = (record?.values ?? {});
107
+ const name = extractName(values);
108
+ const rawDomains = collectStrings(values.domains, ['domain', 'value']).map(normalizeDomain);
109
+ const websiteValue = values.website;
110
+ if (typeof websiteValue === 'string') {
111
+ rawDomains.push(normalizeDomain(websiteValue));
112
+ }
113
+ const domains = dedupe(rawDomains);
114
+ const emails = dedupe(collectStrings(values.email_addresses, ['email_address', 'value']));
115
+ const phones = dedupe(collectStrings(values.phone_numbers, ['number', 'normalized', 'value']));
116
+ const phoneVariants = new Set();
117
+ phones.forEach((phone) => {
118
+ const digitsOnly = phone.replace(/\D+/g, '');
119
+ phoneVariants.add(phone);
120
+ if (digitsOnly) {
121
+ phoneVariants.add(digitsOnly);
122
+ phoneVariants.add(`+${digitsOnly}`);
123
+ if (digitsOnly.length === 10) {
124
+ phoneVariants.add(`+1${digitsOnly}`);
125
+ }
126
+ if (digitsOnly.length === 11 && digitsOnly.startsWith('1')) {
127
+ phoneVariants.add(`+${digitsOnly}`);
128
+ }
129
+ }
130
+ });
131
+ const haystack = dedupe([name, ...domains, ...emails, ...phones])
132
+ .filter(Boolean)
133
+ .join(' ');
134
+ return {
135
+ name,
136
+ domains,
137
+ emails,
138
+ phones,
139
+ phoneVariants,
140
+ haystack: haystack || name,
141
+ };
142
+ }
143
+ function applyStructuredScoring(candidate, parsed) {
144
+ const { info } = candidate;
145
+ parsed.domains.forEach((domain) => {
146
+ const normalized = normalizeDomain(domain);
147
+ if (info.domains.includes(normalized)) {
148
+ candidate.score += SCORE_WEIGHTS.domainExact;
149
+ }
150
+ else if (info.domains.some((storedDomain) => storedDomain.includes(normalized))) {
151
+ candidate.score += SCORE_WEIGHTS.domainPartial;
152
+ }
153
+ });
154
+ parsed.emails.forEach((email) => {
155
+ const normalized = normalizeString(email);
156
+ if (info.emails.includes(normalized)) {
157
+ candidate.score += SCORE_WEIGHTS.emailExact;
158
+ }
159
+ });
160
+ parsed.phones.forEach((phone) => {
161
+ if (info.phoneVariants.has(phone)) {
162
+ candidate.score += SCORE_WEIGHTS.phoneExact;
163
+ }
164
+ });
165
+ if (parsed.normalizedQuery && info.name === parsed.normalizedQuery) {
166
+ candidate.score += SCORE_WEIGHTS.nameExact;
167
+ }
168
+ else if (parsed.normalizedQuery &&
169
+ info.name.startsWith(parsed.normalizedQuery)) {
170
+ candidate.score += SCORE_WEIGHTS.namePrefix;
171
+ }
172
+ const tokens = parsed.tokens.map((token) => token.toLowerCase());
173
+ if (tokens.length > 0 && tokens.every((token) => info.name.includes(token))) {
174
+ candidate.score += SCORE_WEIGHTS.allTokensInName;
175
+ }
176
+ tokens.forEach((token) => {
177
+ if (info.name.includes(token)) {
178
+ candidate.score += SCORE_WEIGHTS.tokenInName;
179
+ }
180
+ if (info.domains.some((domain) => domain.includes(token))) {
181
+ candidate.score += SCORE_WEIGHTS.tokenInDomain;
182
+ }
183
+ if (info.emails.some((email) => email.includes(token))) {
184
+ candidate.score += SCORE_WEIGHTS.tokenInEmail;
185
+ }
186
+ });
187
+ }
188
+ function applyFuzzyScoring(candidates, parsed) {
189
+ const needle = parsed.normalizedQuery ||
190
+ parsed.tokens.join(' ').toLowerCase() ||
191
+ parsed.domains.join(' ').toLowerCase();
192
+ if (!needle) {
193
+ return;
194
+ }
195
+ const haystack = candidates.map(({ info }) => info.haystack || info.name);
196
+ const uf = new uFuzzy({ unicode: true });
197
+ const searchResult = uf.search(haystack, needle);
198
+ if (!searchResult) {
199
+ return;
200
+ }
201
+ const indices = searchResult[0];
202
+ const order = searchResult[2];
203
+ if (!Array.isArray(indices) || indices.length === 0) {
204
+ return;
205
+ }
206
+ indices.forEach((matchIdx, resultIdx) => {
207
+ if (typeof matchIdx !== 'number' || matchIdx >= candidates.length) {
208
+ return;
209
+ }
210
+ const orderValue = Array.isArray(order) && typeof order[resultIdx] === 'number'
211
+ ? order[resultIdx]
212
+ : resultIdx;
213
+ const bonus = SCORE_WEIGHTS.fuzzyBase -
214
+ SCORE_WEIGHTS.fuzzyStep * Math.min(orderValue, 10);
215
+ candidates[matchIdx].score += Math.max(0, bonus);
216
+ });
217
+ }
218
+ export function scoreAndRank(query, results, parsedInput) {
219
+ const trimmedQuery = query.trim();
220
+ if (!trimmedQuery || results.length <= 1) {
221
+ return results.slice();
222
+ }
223
+ const parsed = parsedInput ?? parseQuery(trimmedQuery);
224
+ const candidates = results.map((record, index) => ({
225
+ record,
226
+ originalIndex: index,
227
+ score: 0,
228
+ info: extractRecordInfo(record),
229
+ }));
230
+ candidates.forEach((candidate) => {
231
+ applyStructuredScoring(candidate, parsed);
232
+ });
233
+ applyFuzzyScoring(candidates, parsed);
234
+ return candidates
235
+ .sort((a, b) => {
236
+ if (b.score !== a.score) {
237
+ return b.score - a.score;
238
+ }
239
+ return a.originalIndex - b.originalIndex;
240
+ })
241
+ .map((candidate) => candidate.record);
242
+ }
243
+ //# sourceMappingURL=SearchScorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchScorer.js","sourceRoot":"","sources":["../../../src/services/search-utilities/SearchScorer.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAe,MAAM,iCAAiC,CAAC;AAmB1E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,aAAa,GAAG;IACpB,WAAW,EAAE,IAAI,EAAE,4DAA4D;IAC/E,aAAa,EAAE,GAAG,EAAE,wEAAwE;IAC5F,UAAU,EAAE,GAAG,EAAE,uEAAuE;IACxF,UAAU,EAAE,GAAG,EAAE,oEAAoE;IACrF,SAAS,EAAE,GAAG,EAAE,0DAA0D;IAC1E,UAAU,EAAE,GAAG,EAAE,+DAA+D;IAChF,eAAe,EAAE,GAAG,EAAE,yDAAyD;IAC/E,WAAW,EAAE,EAAE,EAAE,+DAA+D;IAChF,aAAa,EAAE,EAAE,EAAE,qDAAqD;IACxE,YAAY,EAAE,EAAE,EAAE,sDAAsD;IACxE,SAAS,EAAE,GAAG,EAAE,gDAAgD;IAChE,SAAS,EAAE,EAAE,EAAE,gEAAgE;CACvE,CAAC;AAEX,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,eAAe,CACpB,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CACxD,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,OAAiB,EAAE;IACzD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,SAAS,GAAG,CAAC,SAAkB,EAAE,EAAE;QACvC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBACnB,SAAS,CAAE,IAAgC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,SAAS,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,MAA+B;IAClD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;IAE9B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,SAAS,GACZ,KAAiC,CAAC,SAAS;gBAC3C,KAAiC,CAAC,SAAS;gBAC3C,KAAiC,CAAC,KAAK,CAAC;YAC3C,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAClC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;IAChC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAmB;IAC5C,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAA4B,CAAC;IACjE,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CACxE,eAAe,CAChB,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;IACpC,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAEnC,MAAM,MAAM,GAAG,MAAM,CACnB,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CACnE,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,CACnB,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CACxE,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7C,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,UAAU,EAAE,CAAC;YACf,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9B,aAAa,CAAC,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;YACpC,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBAC7B,aAAa,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,aAAa,CAAC,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;SAC9D,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO;QACL,IAAI;QACJ,OAAO;QACP,MAAM;QACN,MAAM;QACN,aAAa;QACb,QAAQ,EAAE,QAAQ,IAAI,IAAI;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,SAA0B,EAC1B,MAAmB;IAEnB,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAE3B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAChC,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC;QAC/C,CAAC;aAAM,IACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EACtE,CAAC;YACD,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,aAAa,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,UAAU,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,UAAU,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,eAAe,EAAE,CAAC;QACnE,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,SAAS,CAAC;IAC7C,CAAC;SAAM,IACL,MAAM,CAAC,eAAe;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,EAC5C,CAAC;QACD,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,UAAU,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACjE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC5E,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,eAAe,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC;QAC/C,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1D,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,aAAa,CAAC;QACjD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACvD,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,YAAY,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,UAA6B,EAC7B,MAAmB;IAEnB,MAAM,MAAM,GACV,MAAM,CAAC,eAAe;QACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QACrC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,QAAgB,EAAE,SAAiB,EAAE,EAAE;QACtD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YAClE,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GACd,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ;YAC1D,CAAC,CAAE,KAAK,CAAC,SAAS,CAAY;YAC9B,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,KAAK,GACT,aAAa,CAAC,SAAS;YACvB,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACrD,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,OAAY,EACZ,WAAyB;IAEzB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAsB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM;QACN,aAAa,EAAE,KAAK;QACpB,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;KAChC,CAAC,CAAC,CAAC;IAEJ,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC/B,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEtC,OAAO,UAAU;SACd,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;IAC3C,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
@@ -38,6 +38,11 @@ export declare class SearchUtilities {
38
38
  * Helper method to extract field value from a task record for content search
39
39
  */
40
40
  static getTaskFieldValue(task: AttioRecord, field: string): string;
41
+ /**
42
+ * Helper method to extract field value from a note record for content search
43
+ * Issue #888: Support notes search by title and content
44
+ */
45
+ static getNoteFieldValue(note: AttioRecord, field: string): string;
41
46
  /**
42
47
  * Create date filter from timeframe parameters
43
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SearchUtilities.d.ts","sourceRoot":"","sources":["../../../src/services/search-utilities/SearchUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAkBrE;;GAEG;AACH,qBAAa,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,eAAe,CACpB,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EAAE,GACrB,WAAW,EAAE;IAwDhB;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAQhE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAkB1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiBrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAWjC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAoBlE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAoBlE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CACrB,eAAe,EAAE,eAAe,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAuDjC;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACpD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA+B3B"}
1
+ {"version":3,"file":"SearchUtilities.d.ts","sourceRoot":"","sources":["../../../src/services/search-utilities/SearchUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAkBrE;;GAEG;AACH,qBAAa,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,eAAe,CACpB,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EAAE,GACrB,WAAW,EAAE;IAwDhB;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAQhE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAkB1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiBrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAWjC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAoBlE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAoBlE;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAoBlE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CACrB,eAAe,EAAE,eAAe,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAuDjC;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACpD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA+B3B"}
@@ -148,6 +148,26 @@ export class SearchUtilities {
148
148
  }
149
149
  return '';
150
150
  }
151
+ /**
152
+ * Helper method to extract field value from a note record for content search
153
+ * Issue #888: Support notes search by title and content
154
+ */
155
+ static getNoteFieldValue(note, field) {
156
+ const values = note.values;
157
+ if (!values)
158
+ return '';
159
+ const fieldValue = values[field];
160
+ // Handle different field value structures for notes
161
+ if (typeof fieldValue === 'string') {
162
+ return fieldValue;
163
+ }
164
+ else if (fieldValue &&
165
+ typeof fieldValue === 'object' &&
166
+ 'value' in fieldValue) {
167
+ return String(fieldValue.value || '');
168
+ }
169
+ return '';
170
+ }
151
171
  /**
152
172
  * Create date filter from timeframe parameters
153
173
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SearchUtilities.js","sourceRoot":"","sources":["../../../src/services/search-utilities/SearchUtilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchUtilities.js","sourceRoot":"","sources":["../../../src/services/search-utilities/SearchUtilities.ts"],"names":[],"mappings":"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"}
@@ -12,14 +12,17 @@ import { z } from 'zod';
12
12
  export declare const configSchema: z.ZodObject<{
13
13
  ATTIO_API_KEY: z.ZodOptional<z.ZodString>;
14
14
  ATTIO_WORKSPACE_ID: z.ZodOptional<z.ZodString>;
15
+ ATTIO_MCP_TOOL_MODE: z.ZodOptional<z.ZodEnum<["full", "search"]>>;
15
16
  debug: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
16
17
  }, "strip", z.ZodTypeAny, {
17
18
  ATTIO_API_KEY?: string | undefined;
18
19
  debug?: boolean | undefined;
20
+ ATTIO_MCP_TOOL_MODE?: "search" | "full" | undefined;
19
21
  ATTIO_WORKSPACE_ID?: string | undefined;
20
22
  }, {
21
23
  ATTIO_API_KEY?: string | undefined;
22
24
  debug?: boolean | undefined;
25
+ ATTIO_MCP_TOOL_MODE?: "search" | "full" | undefined;
23
26
  ATTIO_WORKSPACE_ID?: string | undefined;
24
27
  }>;
25
28
  /**
@@ -30,7 +33,7 @@ export declare const configSchema: z.ZodObject<{
30
33
  */
31
34
  export default function createServer({ config, }: {
32
35
  config: z.infer<typeof configSchema>;
33
- }): Promise<import("@modelcontextprotocol/sdk/server").Server<{
36
+ }): import("@modelcontextprotocol/sdk/server").Server<{
34
37
  method: string;
35
38
  params?: {
36
39
  [x: string]: unknown;
@@ -52,5 +55,5 @@ export default function createServer({ config, }: {
52
55
  _meta?: {
53
56
  [x: string]: unknown;
54
57
  } | undefined;
55
- }>>;
58
+ }>;
56
59
  //# sourceMappingURL=smithery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"smithery.d.ts","sourceRoot":"","sources":["../src/smithery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;EAOvB,CAAC;AAEH;;;;;GAKG;AACH,wBAA8B,YAAY,CAAC,EACzC,MAAM,GACP,EAAE;IACD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;CACtC;;;;;;;;;;;;;;;;;;;;;;IAmBA"}
1
+ {"version":3,"file":"smithery.d.ts","sourceRoot":"","sources":["../src/smithery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAavB,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,MAAM,GACP,EAAE;IACD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;CACtC;;;;;;;;;;;;;;;;;;;;;;GAgCA"}
package/dist/smithery.js CHANGED
@@ -16,6 +16,10 @@ export const configSchema = z.object({
16
16
  .string()
17
17
  .describe('Optional Attio workspace ID')
18
18
  .optional(),
19
+ ATTIO_MCP_TOOL_MODE: z
20
+ .enum(['full', 'search'])
21
+ .describe('Tool mode: "full" (all 33 tools, requires ChatGPT Developer Mode) or "search" (only search/fetch/health-check for non-Developer Mode users)')
22
+ .optional(),
19
23
  debug: z.boolean().default(false).describe('Enable debug logging').optional(),
20
24
  });
21
25
  /**
@@ -24,16 +28,30 @@ export const configSchema = z.object({
24
28
  * @param config - User-provided configuration (validated against configSchema)
25
29
  * @returns The MCP server instance
26
30
  */
27
- export default async function createServer({ config, }) {
31
+ export default function createServer({ config, }) {
28
32
  // Enable debug logging if requested
29
33
  if (config?.debug) {
30
34
  process.env.MCP_LOG_LEVEL = 'DEBUG';
31
35
  }
32
36
  // Set server mode flag to enable background intervals (performance tracking, etc.)
33
37
  process.env.MCP_SERVER_MODE = 'true';
38
+ // CRITICAL: Tool mode configuration (Issue #869 final fix)
39
+ // Do NOT set environment variables - Smithery manages them at container level
40
+ // If user didn't provide ATTIO_MCP_TOOL_MODE, ensure env var is not set
41
+ // This allows isSearchOnlyMode() to return false (full tool access)
42
+ if (!config?.ATTIO_MCP_TOOL_MODE) {
43
+ delete process.env.ATTIO_MCP_TOOL_MODE;
44
+ }
45
+ else if (config.ATTIO_MCP_TOOL_MODE === 'search') {
46
+ process.env.ATTIO_MCP_TOOL_MODE = 'search';
47
+ }
48
+ else {
49
+ // User explicitly set 'full' mode
50
+ delete process.env.ATTIO_MCP_TOOL_MODE;
51
+ }
34
52
  // Create the MCP server with a context that provides access to config
35
53
  // The API key is only checked when tools are actually invoked
36
- const server = await buildServer({
54
+ const server = buildServer({
37
55
  getApiKey: () => config?.ATTIO_API_KEY || process.env.ATTIO_API_KEY,
38
56
  getWorkspaceId: () => config?.ATTIO_WORKSPACE_ID || process.env.ATTIO_WORKSPACE_ID,
39
57
  });
@@ -1 +1 @@
1
- {"version":3,"file":"smithery.js","sourceRoot":"","sources":["../src/smithery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACnE,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,QAAQ,CAAC,6BAA6B,CAAC;SACvC,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE;CAC9E,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CAAC,EACzC,MAAM,GAGP;IACC,oCAAoC;IACpC,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC;IACtC,CAAC;IAED,mFAAmF;IACnF,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;IAErC,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QACnE,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,EAAE,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB;KAC/D,CAAC,CAAC;IAEH,kEAAkE;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"smithery.js","sourceRoot":"","sources":["../src/smithery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACnE,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,QAAQ,CAAC,6BAA6B,CAAC;SACvC,QAAQ,EAAE;IACb,mBAAmB,EAAE,CAAC;SACnB,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SACxB,QAAQ,CACP,6IAA6I,CAC9I;SACA,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE;CAC9E,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,MAAM,GAGP;IACC,oCAAoC;IACpC,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC;IACtC,CAAC;IAED,mFAAmF;IACnF,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;IAErC,2DAA2D;IAC3D,8EAA8E;IAC9E,wEAAwE;IACxE,oEAAoE;IACpE,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACzC,CAAC;SAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,kCAAkC;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACzC,CAAC;IAED,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,MAAM,GAAG,WAAW,CAAC;QACzB,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QACnE,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,EAAE,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB;KAC/D,CAAC,CAAC;IAEH,kEAAkE;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-discovery.d.ts","sourceRoot":"","sources":["../../src/utils/mcp-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAuBD,wBAAgB,mBAAmB,IAAI,gBAAgB,CAItD;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAU1D"}
1
+ {"version":3,"file":"mcp-discovery.d.ts","sourceRoot":"","sources":["../../src/utils/mcp-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AA6B/D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAwBD,wBAAgB,mBAAmB,IAAI,gBAAgB,CAItD;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAU1D"}
@@ -1,6 +1,23 @@
1
1
  import { TOOL_DEFINITIONS } from '../handlers/tools/registry.js';
2
2
  import { filterAllowedTools } from '../config/tool-mode.js';
3
3
  import { getAllPrompts } from '../prompts/templates/index.js';
4
+ const WRITE_TOOL_PATTERN = /(create|update|delete|remove|add|batch|commit|write)/i;
5
+ function ensureAnnotations(tool) {
6
+ const typedTool = tool;
7
+ const annotations = {
8
+ ...(typedTool.annotations ?? {}),
9
+ };
10
+ if (annotations.readOnlyHint === undefined) {
11
+ annotations.readOnlyHint = !WRITE_TOOL_PATTERN.test(tool.name);
12
+ }
13
+ if (annotations.openWorldHint === undefined) {
14
+ annotations.openWorldHint = true;
15
+ }
16
+ return {
17
+ ...tool,
18
+ annotations,
19
+ };
20
+ }
4
21
  function flattenToolDefinitions() {
5
22
  const allTools = [];
6
23
  for (const toolDefs of Object.values(TOOL_DEFINITIONS)) {
@@ -15,7 +32,8 @@ function flattenToolDefinitions() {
15
32
  allTools.push(...Object.values(toolDefs));
16
33
  }
17
34
  }
18
- return filterAllowedTools(allTools);
35
+ const allowed = filterAllowedTools(allTools);
36
+ return allowed.map((tool) => ensureAnnotations(tool));
19
37
  }
20
38
  export function getToolsListPayload() {
21
39
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-discovery.js","sourceRoot":"","sources":["../../src/utils/mcp-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAkB7D,SAAS,sBAAsB;IAC7B,MAAM,QAAQ,GAAW,EAAE,CAAC;IAE5B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAI,QAAmB,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,GAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAY,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,kBAAkB,CAAC,QAAQ,CAAW,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,KAAK,EAAE,sBAAsB,EAAE;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mcp-discovery.js","sourceRoot":"","sources":["../../src/utils/mcp-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAO7D,MAAM,kBAAkB,GACtB,uDAAuD,CAAC;AAE1D,SAAS,iBAAiB,CAAC,IAAU;IACnC,MAAM,SAAS,GAAG,IAA2B,CAAC;IAC9C,MAAM,WAAW,GAA4B;QAC3C,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC;KACjC,CAAC;IAEF,IAAI,WAAW,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC3C,WAAW,CAAC,YAAY,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,WAAW,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAC5C,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,WAAW;KACJ,CAAC;AACZ,CAAC;AAiBD,SAAS,sBAAsB;IAC7B,MAAM,QAAQ,GAAW,EAAE,CAAC;IAE5B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAI,QAAmB,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,GAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAY,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAW,CAAC;IACvD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,KAAK,EAAE,sBAAsB,EAAE;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
- export declare function countTokens(text: string, model?: string): number;
2
- export declare function countJsonTokens(value: unknown, model?: string): number;
3
- export declare function countStrings(tokens: string[], model?: string): number;
1
+ export declare function countTokens(text: string, model?: string): Promise<number>;
2
+ export declare function countJsonTokens(value: unknown, model?: string): Promise<number>;
3
+ export declare function countStrings(tokens: string[], model?: string): Promise<number>;
4
4
  export declare function getCountModel(): string;
5
5
  //# sourceMappingURL=token-count.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-count.d.ts","sourceRoot":"","sources":["../../src/utils/token-count.ts"],"names":[],"mappings":"AAqDA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
1
+ {"version":3,"file":"token-count.d.ts","sourceRoot":"","sources":["../../src/utils/token-count.ts"],"names":[],"mappings":"AA8FA,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,OAAO,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -1,4 +1,3 @@
1
- import { encoding_for_model, get_encoding, } from '@dqbd/tiktoken';
2
1
  const DEFAULT_MODEL = 'claude-sonnet-4-5';
3
2
  const DEFAULT_ENCODING = 'cl100k_base';
4
3
  const MODEL_TO_ENCODING = {
@@ -13,14 +12,52 @@ const MODEL_TO_ENCODING = {
13
12
  'gpt-4-turbo': DEFAULT_ENCODING,
14
13
  'gpt-3.5-turbo': DEFAULT_ENCODING,
15
14
  };
15
+ /**
16
+ * Cache for loaded tiktoken library (lazy loaded)
17
+ */
18
+ let tiktokenLib = null;
19
+ /**
20
+ * Encoder cache for when tiktoken is available
21
+ */
16
22
  const encoderCache = new Map();
23
+ /**
24
+ * Fallback token estimation (industry standard: ~4 chars per token)
25
+ */
26
+ function estimateTokens(text) {
27
+ return Math.ceil(text.length / 4);
28
+ }
29
+ /**
30
+ * Lazy load tiktoken library (handles WASM bundling issues gracefully)
31
+ */
32
+ async function loadTiktoken() {
33
+ if (tiktokenLib === 'unavailable') {
34
+ return null;
35
+ }
36
+ if (tiktokenLib !== null) {
37
+ return tiktokenLib;
38
+ }
39
+ try {
40
+ tiktokenLib = await import('@dqbd/tiktoken');
41
+ return tiktokenLib;
42
+ }
43
+ catch (error) {
44
+ // Mark as unavailable to avoid repeated import attempts
45
+ tiktokenLib = 'unavailable';
46
+ // Silent fallback - estimation will be used
47
+ return null;
48
+ }
49
+ }
17
50
  function resolveEncoding(model) {
18
51
  return MODEL_TO_ENCODING[model] ?? DEFAULT_ENCODING;
19
52
  }
20
53
  function getModelName(model) {
21
54
  return model?.trim() || process.env.COUNT_MODEL_DEFAULT || DEFAULT_MODEL;
22
55
  }
23
- function getEncoder(model) {
56
+ async function getEncoder(model) {
57
+ const tiktoken = await loadTiktoken();
58
+ if (!tiktoken) {
59
+ return null; // Fallback to estimation
60
+ }
24
61
  const modelName = getModelName(model);
25
62
  const resolvedEncoding = resolveEncoding(modelName);
26
63
  if (encoderCache.has(resolvedEncoding)) {
@@ -28,24 +65,27 @@ function getEncoder(model) {
28
65
  }
29
66
  const encoder = (() => {
30
67
  try {
31
- return encoding_for_model(modelName);
68
+ return tiktoken.encoding_for_model(modelName);
32
69
  }
33
70
  catch {
34
- return get_encoding(resolvedEncoding);
71
+ return tiktoken.get_encoding(resolvedEncoding);
35
72
  }
36
73
  })();
37
74
  encoderCache.set(resolvedEncoding, encoder);
38
75
  return encoder;
39
76
  }
40
- export function countTokens(text, model) {
41
- const encoder = getEncoder(model);
77
+ export async function countTokens(text, model) {
78
+ const encoder = await getEncoder(model);
79
+ if (!encoder) {
80
+ return estimateTokens(text);
81
+ }
42
82
  return encoder.encode(text).length;
43
83
  }
44
- export function countJsonTokens(value, model) {
84
+ export async function countJsonTokens(value, model) {
45
85
  const serialized = JSON.stringify(value);
46
86
  return countTokens(serialized, model);
47
87
  }
48
- export function countStrings(tokens, model) {
88
+ export async function countStrings(tokens, model) {
49
89
  if (!tokens.length) {
50
90
  return 0;
51
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token-count.js","sourceRoot":"","sources":["../../src/utils/token-count.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,YAAY,GAGb,MAAM,gBAAgB,CAAC;AAExB,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,MAAM,gBAAgB,GAAqB,aAAa,CAAC;AAEzD,MAAM,iBAAiB,GAAqC;IAC1D,mBAAmB,EAAE,gBAAgB;IACrC,4BAA4B,EAAE,gBAAgB;IAC9C,4BAA4B,EAAE,gBAAgB;IAC9C,wBAAwB,EAAE,gBAAgB;IAC1C,0BAA0B,EAAE,gBAAgB;IAC5C,yBAAyB,EAAE,gBAAgB;IAC3C,QAAQ,EAAE,gBAAgB;IAC1B,aAAa,EAAE,gBAAgB;IAC/B,aAAa,EAAE,gBAAgB;IAC/B,eAAe,EAAE,gBAAgB;CAClC,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAiD,CAAC;AAE9E,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,aAAa,CAAC;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAEpD,IAAI,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvC,OAAO,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAE,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;QACpB,IAAI,CAAC;YACH,OAAO,kBAAkB,CAAC,SAA0B,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,YAAY,CAAC,gBAAoC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAc;IACtD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,KAAc;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAgB,EAAE,KAAc;IAC3D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"token-count.js","sourceRoot":"","sources":["../../src/utils/token-count.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ export interface AnalyzeOptions {
34
34
  promptsPayload?: PromptsListPayload;
35
35
  model?: string;
36
36
  }
37
- export declare function analyzeBaselineTokenFootprint(options?: AnalyzeOptions): TokenFootprintReport;
37
+ export declare function analyzeBaselineTokenFootprint(options?: AnalyzeOptions): Promise<TokenFootprintReport>;
38
38
  export declare function renderMarkdownReport(report: TokenFootprintReport): string;
39
39
  export interface ReportFilePaths {
40
40
  jsonPath: string;
@@ -42,5 +42,5 @@ export interface ReportFilePaths {
42
42
  }
43
43
  export declare function writeReportFiles(report: TokenFootprintReport, directory?: string): ReportFilePaths;
44
44
  export declare function formatConsoleSummary(report: TokenFootprintReport, maxItems?: number): string;
45
- export declare function buildPromptSummary(prompts: PromptSummary[], heavyThreshold: number, model: string): SectionBreakdown;
45
+ export declare function buildPromptSummary(prompts: PromptSummary[], heavyThreshold: number, model: string): Promise<SectionBreakdown>;
46
46
  //# sourceMappingURL=token-footprint-analyzer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-footprint-analyzer.d.ts","sourceRoot":"","sources":["../../src/utils/token-footprint-analyzer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAGlC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAChB,MAAM,EACN;QACE,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CACF,CAAC;IACF,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,gBAAgB,CAAC;QACxB,OAAO,EAAE,gBAAgB,CAAC;KAC3B,CAAC;IACF,wBAAwB,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;IAClE,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqKD,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,cAAmB,GAC3B,oBAAoB,CA8BtB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CA4DzE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,oBAAoB,EAC5B,SAAS,GAAE,MAAe,GACzB,eAAe,CAUjB;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,GAAE,MAAU,GACnB,MAAM,CA+BR;AAGD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EAAE,EACxB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAElB"}
1
+ {"version":3,"file":"token-footprint-analyzer.d.ts","sourceRoot":"","sources":["../../src/utils/token-footprint-analyzer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAGlC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAChB,MAAM,EACN;QACE,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CACF,CAAC;IACF,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,gBAAgB,CAAC;QACxB,OAAO,EAAE,gBAAgB,CAAC;KAC3B,CAAC;IACF,wBAAwB,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;IAClE,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwKD,wBAAsB,6BAA6B,CACjD,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CA8B/B;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CA4DzE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,oBAAoB,EAC5B,SAAS,GAAE,MAAe,GACzB,eAAe,CAUjB;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,GAAE,MAAU,GACnB,MAAM,CA+BR;AAGD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EAAE,EACxB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAE3B"}