@sulala/agent 0.1.6 → 0.1.7

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 (173) hide show
  1. package/README.md +3 -2
  2. package/context/airtable.md +35 -0
  3. package/context/asana.md +37 -0
  4. package/context/bluesky.md +26 -91
  5. package/context/calendar.md +63 -0
  6. package/context/country-info.md +13 -0
  7. package/context/create-skill.md +128 -0
  8. package/context/discord.md +30 -0
  9. package/context/docs.md +29 -0
  10. package/context/drive.md +49 -0
  11. package/context/dropbox.md +39 -0
  12. package/context/facebook.md +47 -0
  13. package/context/fetch-form-api.md +16 -0
  14. package/context/figma.md +30 -0
  15. package/context/github.md +58 -0
  16. package/context/gmail.md +52 -0
  17. package/context/google.md +28 -0
  18. package/context/hellohub.md +29 -0
  19. package/context/jira.md +46 -0
  20. package/context/linear.md +40 -0
  21. package/context/notion.md +45 -0
  22. package/context/portal-integrations.md +42 -0
  23. package/context/post-to-x.md +50 -0
  24. package/context/sheets.md +47 -0
  25. package/context/slack.md +48 -0
  26. package/context/slides.md +35 -0
  27. package/context/stripe.md +38 -0
  28. package/context/tes.md +7 -0
  29. package/context/test.md +7 -0
  30. package/context/zoom.md +28 -0
  31. package/dist/agent/google/calendar.d.ts +2 -0
  32. package/dist/agent/google/calendar.d.ts.map +1 -0
  33. package/dist/agent/google/calendar.js +119 -0
  34. package/dist/agent/google/calendar.js.map +1 -0
  35. package/dist/agent/google/drive.d.ts +2 -0
  36. package/dist/agent/google/drive.d.ts.map +1 -0
  37. package/dist/agent/google/drive.js +51 -0
  38. package/dist/agent/google/drive.js.map +1 -0
  39. package/dist/agent/google/get-token.d.ts +7 -0
  40. package/dist/agent/google/get-token.d.ts.map +1 -0
  41. package/dist/agent/google/get-token.js +37 -0
  42. package/dist/agent/google/get-token.js.map +1 -0
  43. package/dist/agent/google/gmail.d.ts +2 -0
  44. package/dist/agent/google/gmail.d.ts.map +1 -0
  45. package/dist/agent/google/gmail.js +138 -0
  46. package/dist/agent/google/gmail.js.map +1 -0
  47. package/dist/agent/google/index.d.ts +2 -0
  48. package/dist/agent/google/index.d.ts.map +1 -0
  49. package/dist/agent/google/index.js +13 -0
  50. package/dist/agent/google/index.js.map +1 -0
  51. package/dist/agent/loop.d.ts +8 -0
  52. package/dist/agent/loop.d.ts.map +1 -1
  53. package/dist/agent/loop.js +226 -40
  54. package/dist/agent/loop.js.map +1 -1
  55. package/dist/agent/memory.d.ts +21 -0
  56. package/dist/agent/memory.d.ts.map +1 -0
  57. package/dist/agent/memory.js +33 -0
  58. package/dist/agent/memory.js.map +1 -0
  59. package/dist/agent/pending-actions.d.ts +21 -0
  60. package/dist/agent/pending-actions.d.ts.map +1 -0
  61. package/dist/agent/pending-actions.js +65 -0
  62. package/dist/agent/pending-actions.js.map +1 -0
  63. package/dist/agent/pi-runner.d.ts +27 -0
  64. package/dist/agent/pi-runner.d.ts.map +1 -0
  65. package/dist/agent/pi-runner.js +300 -0
  66. package/dist/agent/pi-runner.js.map +1 -0
  67. package/dist/agent/skill-generate.d.ts +63 -0
  68. package/dist/agent/skill-generate.d.ts.map +1 -0
  69. package/dist/agent/skill-generate.js +128 -0
  70. package/dist/agent/skill-generate.js.map +1 -0
  71. package/dist/agent/skill-install.d.ts.map +1 -1
  72. package/dist/agent/skill-install.js +80 -31
  73. package/dist/agent/skill-install.js.map +1 -1
  74. package/dist/agent/skill-templates.d.ts +17 -0
  75. package/dist/agent/skill-templates.d.ts.map +1 -0
  76. package/dist/agent/skill-templates.js +26 -0
  77. package/dist/agent/skill-templates.js.map +1 -0
  78. package/dist/agent/skills-config.d.ts +24 -2
  79. package/dist/agent/skills-config.d.ts.map +1 -1
  80. package/dist/agent/skills-config.js +107 -8
  81. package/dist/agent/skills-config.js.map +1 -1
  82. package/dist/agent/skills-watcher.js +1 -1
  83. package/dist/agent/skills.d.ts +9 -3
  84. package/dist/agent/skills.d.ts.map +1 -1
  85. package/dist/agent/skills.js +104 -9
  86. package/dist/agent/skills.js.map +1 -1
  87. package/dist/agent/tools.d.ts +25 -3
  88. package/dist/agent/tools.d.ts.map +1 -1
  89. package/dist/agent/tools.integrations.test.d.ts +2 -0
  90. package/dist/agent/tools.integrations.test.d.ts.map +1 -0
  91. package/dist/agent/tools.integrations.test.js +269 -0
  92. package/dist/agent/tools.integrations.test.js.map +1 -0
  93. package/dist/agent/tools.js +692 -39
  94. package/dist/agent/tools.js.map +1 -1
  95. package/dist/ai/orchestrator.d.ts +4 -1
  96. package/dist/ai/orchestrator.d.ts.map +1 -1
  97. package/dist/ai/orchestrator.js +246 -14
  98. package/dist/ai/orchestrator.js.map +1 -1
  99. package/dist/ai/pricing.d.ts +6 -0
  100. package/dist/ai/pricing.d.ts.map +1 -0
  101. package/dist/ai/pricing.js +39 -0
  102. package/dist/ai/pricing.js.map +1 -0
  103. package/dist/channels/discord.d.ts +15 -0
  104. package/dist/channels/discord.d.ts.map +1 -0
  105. package/dist/channels/discord.js +55 -0
  106. package/dist/channels/discord.js.map +1 -0
  107. package/dist/channels/stripe.d.ts +15 -0
  108. package/dist/channels/stripe.d.ts.map +1 -0
  109. package/dist/channels/stripe.js +58 -0
  110. package/dist/channels/stripe.js.map +1 -0
  111. package/dist/channels/telegram.d.ts +60 -0
  112. package/dist/channels/telegram.d.ts.map +1 -0
  113. package/dist/channels/telegram.js +562 -0
  114. package/dist/channels/telegram.js.map +1 -0
  115. package/dist/cli.js +66 -8
  116. package/dist/cli.js.map +1 -1
  117. package/dist/config.d.ts +14 -0
  118. package/dist/config.d.ts.map +1 -1
  119. package/dist/config.js +85 -1
  120. package/dist/config.js.map +1 -1
  121. package/dist/db/index.d.ts +83 -0
  122. package/dist/db/index.d.ts.map +1 -1
  123. package/dist/db/index.js +174 -2
  124. package/dist/db/index.js.map +1 -1
  125. package/dist/db/schema.sql +35 -0
  126. package/dist/gateway/server.d.ts.map +1 -1
  127. package/dist/gateway/server.js +1219 -27
  128. package/dist/gateway/server.js.map +1 -1
  129. package/dist/index.js +149 -6
  130. package/dist/index.js.map +1 -1
  131. package/dist/ollama-setup.d.ts +27 -0
  132. package/dist/ollama-setup.d.ts.map +1 -0
  133. package/dist/ollama-setup.js +191 -0
  134. package/dist/ollama-setup.js.map +1 -0
  135. package/dist/onboard-env.d.ts +1 -1
  136. package/dist/onboard-env.d.ts.map +1 -1
  137. package/dist/onboard-env.js +2 -0
  138. package/dist/onboard-env.js.map +1 -1
  139. package/dist/onboard.d.ts +3 -1
  140. package/dist/onboard.d.ts.map +1 -1
  141. package/dist/onboard.js +7 -2
  142. package/dist/onboard.js.map +1 -1
  143. package/dist/plugins/index.d.ts +10 -0
  144. package/dist/plugins/index.d.ts.map +1 -1
  145. package/dist/plugins/index.js +32 -0
  146. package/dist/plugins/index.js.map +1 -1
  147. package/dist/redact.d.ts +15 -0
  148. package/dist/redact.d.ts.map +1 -0
  149. package/dist/redact.js +56 -0
  150. package/dist/redact.js.map +1 -0
  151. package/dist/scheduler/cron.d.ts +21 -0
  152. package/dist/scheduler/cron.d.ts.map +1 -1
  153. package/dist/scheduler/cron.js +60 -0
  154. package/dist/scheduler/cron.js.map +1 -1
  155. package/dist/system-capabilities.d.ts +11 -0
  156. package/dist/system-capabilities.d.ts.map +1 -0
  157. package/dist/system-capabilities.js +109 -0
  158. package/dist/system-capabilities.js.map +1 -0
  159. package/dist/types.d.ts +62 -3
  160. package/dist/types.d.ts.map +1 -1
  161. package/dist/watcher/index.d.ts +2 -0
  162. package/dist/watcher/index.d.ts.map +1 -1
  163. package/dist/watcher/index.js +31 -1
  164. package/dist/watcher/index.js.map +1 -1
  165. package/dist/workspace-automations.d.ts +16 -0
  166. package/dist/workspace-automations.d.ts.map +1 -0
  167. package/dist/workspace-automations.js +133 -0
  168. package/dist/workspace-automations.js.map +1 -0
  169. package/package.json +19 -3
  170. package/registry/bluesky.md +12 -89
  171. package/registry/skills-registry.json +6 -0
  172. package/src/db/schema.sql +35 -0
  173. package/src/index.ts +159 -6
@@ -30,6 +30,13 @@ function parseFrontmatter(content) {
30
30
  inMetadata = true;
31
31
  continue;
32
32
  }
33
+ const metaInline = line.match(/^metadata:\s*(.*)$/);
34
+ if (metaInline) {
35
+ inMetadata = true;
36
+ if (metaInline[1].trim())
37
+ metaLines.push(metaInline[1]);
38
+ continue;
39
+ }
33
40
  if (inMetadata) {
34
41
  metaLines.push(line);
35
42
  }
@@ -74,6 +81,25 @@ function extractRequiredBins(metadataRaw) {
74
81
  .filter(Boolean);
75
82
  }
76
83
  }
84
+ function extractMetadataExtras(metadataRaw) {
85
+ if (!metadataRaw)
86
+ return {};
87
+ try {
88
+ const jsonStr = metadataRaw.replace(/^\s+/gm, ' ').replace(/\s+/g, ' ');
89
+ const parsed = JSON.parse(jsonStr);
90
+ const s = parsed?.sulala;
91
+ if (!s)
92
+ return {};
93
+ return {
94
+ ...(s.category && typeof s.category === 'string' ? { category: s.category } : {}),
95
+ ...(s.version && typeof s.version === 'string' ? { version: s.version } : {}),
96
+ ...(Array.isArray(s.tags) ? { tags: s.tags.filter((t) => typeof t === 'string' && t.trim().length > 0) } : {}),
97
+ };
98
+ }
99
+ catch {
100
+ return {};
101
+ }
102
+ }
77
103
  function extractRequiredEnv(metadataRaw) {
78
104
  if (!metadataRaw)
79
105
  return [];
@@ -116,10 +142,12 @@ export function getAllRequiredBins(config) {
116
142
  }
117
143
  return [...bins];
118
144
  }
119
- /** Paths in precedence order: workspace > managed > bundled > extra. */
145
+ /** Paths in precedence order: user (workspace skills) > workspace (agentContextPath) > managed > bundled > extra. */
120
146
  export function getSkillPaths(config) {
121
147
  const out = [];
122
148
  const cwd = process.cwd();
149
+ // User skills: ~/.sulala/workspace/skills/<skill-name>/SKILL.md — safe from project updates
150
+ out.push({ path: config.skillsWorkspaceDir, source: 'user', isWorkspaceDir: true });
123
151
  if (config.agentContextPath?.trim()) {
124
152
  out.push({
125
153
  path: resolve(cwd, config.agentContextPath.trim()),
@@ -136,6 +164,64 @@ export function getSkillPaths(config) {
136
164
  }
137
165
  return out;
138
166
  }
167
+ /** Scan workspace skills dir: <base>/<skill-name>/SKILL.md (directory-per-skill). */
168
+ function scanWorkspaceDirForSkills(base, source) {
169
+ if (!existsSync(base))
170
+ return [];
171
+ const skills = [];
172
+ try {
173
+ const stat = statSync(base);
174
+ if (!stat.isDirectory())
175
+ return [];
176
+ const subdirs = readdirSync(base, { withFileTypes: true })
177
+ .filter((d) => d.isDirectory() && !d.name.startsWith('.'))
178
+ .map((d) => d.name)
179
+ .sort();
180
+ for (const subdir of subdirs) {
181
+ const skillPath = join(base, subdir, 'SKILL.md');
182
+ if (!existsSync(skillPath))
183
+ continue;
184
+ const fullPath = skillPath;
185
+ try {
186
+ const raw = readFileSync(fullPath, 'utf8');
187
+ const { name, description, metadata } = parseFrontmatter(raw);
188
+ if (!name || !description)
189
+ continue;
190
+ const bins = extractRequiredBins(metadata);
191
+ const env = extractRequiredEnv(metadata);
192
+ const extras = extractMetadataExtras(metadata);
193
+ const missing = [];
194
+ for (const b of bins) {
195
+ if (!binAvailable(b))
196
+ missing.push(b);
197
+ }
198
+ const status = bins.length === 0 ? 'unknown' : missing.length === 0 ? 'eligible' : 'blocked';
199
+ const slug = subdir;
200
+ skills.push({
201
+ name,
202
+ description,
203
+ filePath: fullPath,
204
+ slug,
205
+ status,
206
+ source,
207
+ ...(extras.category ? { category: extras.category } : {}),
208
+ ...(extras.version ? { version: extras.version } : {}),
209
+ ...(extras.tags?.length ? { tags: extras.tags } : {}),
210
+ bins: bins.length ? bins : undefined,
211
+ env: env.length ? env : undefined,
212
+ ...(missing.length ? { missing } : {}),
213
+ });
214
+ }
215
+ catch {
216
+ // skip
217
+ }
218
+ }
219
+ }
220
+ catch {
221
+ // skip
222
+ }
223
+ return skills;
224
+ }
139
225
  function scanDirForSkills(base, source) {
140
226
  if (!existsSync(base))
141
227
  return [];
@@ -164,18 +250,24 @@ function scanDirForSkills(base, source) {
164
250
  continue;
165
251
  const bins = extractRequiredBins(metadata);
166
252
  const env = extractRequiredEnv(metadata);
253
+ const extras = extractMetadataExtras(metadata);
167
254
  const missing = [];
168
255
  for (const b of bins) {
169
256
  if (!binAvailable(b))
170
257
  missing.push(b);
171
258
  }
172
259
  const status = bins.length === 0 ? 'unknown' : missing.length === 0 ? 'eligible' : 'blocked';
260
+ const slug = fileName.replace(/\.md$/, '');
173
261
  skills.push({
174
262
  name,
175
263
  description,
176
264
  filePath: fullPath,
265
+ slug,
177
266
  status,
178
267
  source,
268
+ ...(extras.category ? { category: extras.category } : {}),
269
+ ...(extras.version ? { version: extras.version } : {}),
270
+ ...(extras.tags?.length ? { tags: extras.tags } : {}),
179
271
  bins: bins.length ? bins : undefined,
180
272
  env: env.length ? env : undefined,
181
273
  ...(missing.length ? { missing } : {}),
@@ -191,18 +283,21 @@ function scanDirForSkills(base, source) {
191
283
  }
192
284
  return skills;
193
285
  }
194
- /** List skills from all paths with precedence: workspace > managed > bundled > extra. By default filtered by skills.entries.<name>.enabled; set includeDisabled true to return all (e.g. for dashboard). */
286
+ /** List skills from all paths with precedence: user > workspace > managed > bundled > extra. Deduped by slug. By default filtered by skills.entries.<slug>.enabled; set includeDisabled true to return all (e.g. for dashboard). */
195
287
  export function listSkills(config, options) {
196
288
  const paths = getSkillPaths(config);
197
- const byName = new Map();
198
- for (const { path: p, source } of paths) {
199
- for (const s of scanDirForSkills(p, source)) {
200
- if (!byName.has(s.name)) {
201
- if (options?.includeDisabled || isSkillEnabled(s.name))
202
- byName.set(s.name, s);
289
+ const bySlug = new Map();
290
+ for (const { path: p, source, isWorkspaceDir } of paths) {
291
+ const scanned = isWorkspaceDir ? scanWorkspaceDirForSkills(p, source) : scanDirForSkills(p, source);
292
+ for (const s of scanned) {
293
+ const slug = s.slug ?? s.filePath.split(/[/\\]/).pop()?.replace(/\.md$/, '') ?? s.name;
294
+ if (!bySlug.has(slug)) {
295
+ if (options?.includeDisabled || isSkillEnabled(slug)) {
296
+ bySlug.set(slug, { ...s, slug });
297
+ }
203
298
  }
204
299
  }
205
300
  }
206
- return Array.from(byName.values()).sort((a, b) => a.name.localeCompare(b.name));
301
+ return Array.from(bySlug.values()).sort((a, b) => a.name.localeCompare(b.name));
207
302
  }
208
303
  //# sourceMappingURL=skills.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/agent/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/agent/skills.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type PluginToolContext } from '../plugins/index.js';
1
2
  import type { ToolDef } from '../types.js';
2
3
  export declare function getAgentRunDepth(): number;
3
4
  export declare function setAgentRunDepth(d: number): void;
@@ -6,11 +7,32 @@ export declare function getTool(name: string): ToolDef | undefined;
6
7
  export interface ListToolsOptions {
7
8
  allowlist?: string[] | null;
8
9
  profile?: 'full' | 'messaging' | 'coding' | 'minimal';
10
+ /** Context for plugin tool resolution (e.g. sessionId). */
11
+ pluginContext?: PluginToolContext;
12
+ /** When set, apply this skill's allowedTools and readOnly policy. */
13
+ skillSlug?: string;
9
14
  }
10
- /** List tools, optionally filtered by allowlist and profile. */
15
+ /** Re-export for callers that build pluginContext. */
16
+ export type { PluginToolContext } from '../plugins/index.js';
17
+ /** Policy step: filter tools by allowlist and profile. */
18
+ export declare function applyToolPolicyPipeline(tools: ToolDef[], options: {
19
+ allowlist?: string[] | null;
20
+ profile?: 'full' | 'messaging' | 'coding' | 'minimal';
21
+ }): ToolDef[];
22
+ /** List tools: core registry + plugin tools, then policy (allowlist + profile). When skillSlug is set, apply that skill's allowedTools and readOnly. */
11
23
  export declare function listTools(options?: ListToolsOptions): ToolDef[];
12
- /** Execute a tool; throws if tool is unknown or not allowed by current allowlist/profile. */
13
- export declare function executeTool(name: string, args: Record<string, unknown>): Promise<unknown>;
24
+ export interface ExecuteToolOptions {
25
+ toolCallId?: string;
26
+ signal?: AbortSignal;
27
+ /** When set, enforce this skill's allowedTools and readOnly before executing. */
28
+ skillSlug?: string;
29
+ /** When set with agentExecutionPreview, high-risk tools create a pending action instead of running. */
30
+ sessionId?: string;
31
+ /** When true, skip execution-preview gate (used when replaying an approved action). */
32
+ skipApproval?: boolean;
33
+ }
34
+ /** Execute a tool; throws if tool is unknown or not allowed. When execution preview is on and tool is high-risk, returns pending-approval payload instead of running. */
35
+ export declare function executeTool(name: string, args: Record<string, unknown>, opts?: ExecuteToolOptions): Promise<unknown>;
14
36
  /** Built-in: enqueue a task (type + optional payload) */
15
37
  export declare function registerBuiltInTools(enqueueTask: (taskId: string) => void): void;
16
38
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/agent/tools.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAO3C,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEhD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;CACvD;AAED,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,EAAE,CAa/D;AAQD,6FAA6F;AAC7F,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CASzF;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CA6LhF"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/agent/tools.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,aAAa,CAAC;AAO/D,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEhD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEzD;AASD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtD,2DAA2D;IAC3D,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,0DAA0D;AAC1D,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;CAAE,GAC9F,OAAO,EAAE,CAaX;AAED,wJAAwJ;AACxJ,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,EAAE,CA2B/D;AA0BD,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,yKAAyK;AACzK,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CA2vBhF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tools.integrations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.integrations.test.d.ts","sourceRoot":"","sources":["../../src/agent/tools.integrations.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Unit tests for integration tools: Stripe, Discord, list_integrations_connections.
3
+ * Run with: pnpm test tools.integrations
4
+ */
5
+ import { describe, it, expect, beforeAll, afterAll, afterEach, vi } from "vitest";
6
+ import { registerBuiltInTools, getTool } from "./tools.js";
7
+ // Mock channel config so we don't need real keys or DB
8
+ vi.mock("../channels/stripe.js", () => ({
9
+ getEffectiveStripeSecretKey: vi.fn(),
10
+ }));
11
+ vi.mock("../channels/discord.js", () => ({
12
+ getEffectiveDiscordBotToken: vi.fn(),
13
+ }));
14
+ // Mock config for list_integrations_connections (portal vs integrations URL)
15
+ vi.mock("../config.js", () => ({
16
+ config: {
17
+ integrationsUrl: null,
18
+ agentToolAllowlist: null,
19
+ agentToolProfile: "full",
20
+ },
21
+ getPortalGatewayBase: vi.fn(() => null),
22
+ getEffectivePortalApiKey: vi.fn(() => null),
23
+ }));
24
+ const mockFetch = vi.fn();
25
+ describe("integration tools", () => {
26
+ const originalFetch = globalThis.fetch;
27
+ beforeAll(() => {
28
+ globalThis.fetch = mockFetch;
29
+ registerBuiltInTools(() => { });
30
+ });
31
+ afterEach(() => {
32
+ vi.clearAllMocks();
33
+ globalThis.fetch = mockFetch;
34
+ });
35
+ afterAll(() => {
36
+ globalThis.fetch = originalFetch;
37
+ });
38
+ describe("stripe_list_customers", () => {
39
+ it("returns error when Stripe is not configured", async () => {
40
+ const { getEffectiveStripeSecretKey } = await import("../channels/stripe.js");
41
+ getEffectiveStripeSecretKey.mockReturnValue(null);
42
+ const tool = getTool("stripe_list_customers");
43
+ expect(tool).toBeDefined();
44
+ const result = await tool.execute({});
45
+ expect(result).toEqual({
46
+ error: "Stripe is not configured. Add a secret key in Settings → Channels (Stripe) or set STRIPE_SECRET_KEY.",
47
+ });
48
+ });
49
+ it("returns customers when configured and API returns data", async () => {
50
+ const { getEffectiveStripeSecretKey } = await import("../channels/stripe.js");
51
+ getEffectiveStripeSecretKey.mockReturnValue("sk_test_xxx");
52
+ mockFetch.mockResolvedValueOnce({
53
+ status: 200,
54
+ ok: true,
55
+ json: () => Promise.resolve({
56
+ data: [
57
+ { id: "cus_1", email: "a@example.com", name: "Alice" },
58
+ { id: "cus_2", email: "b@example.com", name: "Bob" },
59
+ ],
60
+ }),
61
+ });
62
+ const tool = getTool("stripe_list_customers");
63
+ const result = await tool.execute({});
64
+ expect(result).toEqual({
65
+ customers: [
66
+ { id: "cus_1", email: "a@example.com", name: "Alice" },
67
+ { id: "cus_2", email: "b@example.com", name: "Bob" },
68
+ ],
69
+ count: 2,
70
+ });
71
+ expect(mockFetch).toHaveBeenCalledWith("https://api.stripe.com/v1/customers?limit=10", expect.objectContaining({ headers: { Authorization: "Bearer sk_test_xxx" } }));
72
+ });
73
+ it("returns error on 401", async () => {
74
+ const { getEffectiveStripeSecretKey } = await import("../channels/stripe.js");
75
+ getEffectiveStripeSecretKey.mockReturnValue("sk_bad");
76
+ mockFetch.mockResolvedValueOnce({ status: 401, ok: false });
77
+ const tool = getTool("stripe_list_customers");
78
+ const result = await tool.execute({});
79
+ expect(result).toEqual({ error: "Invalid Stripe secret key (unauthorized)" });
80
+ });
81
+ it("respects limit parameter", async () => {
82
+ const { getEffectiveStripeSecretKey } = await import("../channels/stripe.js");
83
+ getEffectiveStripeSecretKey.mockReturnValue("sk_test");
84
+ mockFetch.mockResolvedValueOnce({ status: 200, ok: true, json: () => Promise.resolve({ data: [] }) });
85
+ const tool = getTool("stripe_list_customers");
86
+ await tool.execute({ limit: 25 });
87
+ expect(mockFetch).toHaveBeenCalledWith("https://api.stripe.com/v1/customers?limit=25", expect.any(Object));
88
+ });
89
+ });
90
+ describe("discord_list_guilds", () => {
91
+ it("returns error when Discord is not configured", async () => {
92
+ const { getEffectiveDiscordBotToken } = await import("../channels/discord.js");
93
+ getEffectiveDiscordBotToken.mockReturnValue(null);
94
+ const tool = getTool("discord_list_guilds");
95
+ const result = await tool.execute({});
96
+ expect(result).toEqual({
97
+ error: "Discord is not configured. Add a bot token in Settings → Channels (Discord) or set DISCORD_BOT_TOKEN.",
98
+ });
99
+ });
100
+ it("returns guilds when configured", async () => {
101
+ const { getEffectiveDiscordBotToken } = await import("../channels/discord.js");
102
+ getEffectiveDiscordBotToken.mockReturnValue("bot_token_xxx");
103
+ mockFetch.mockResolvedValueOnce({
104
+ status: 200,
105
+ ok: true,
106
+ json: () => Promise.resolve([
107
+ { id: "123", name: "My Server" },
108
+ { id: "456", name: "Other Guild" },
109
+ ]),
110
+ });
111
+ const tool = getTool("discord_list_guilds");
112
+ const result = await tool.execute({});
113
+ expect(result).toEqual({
114
+ guilds: [
115
+ { id: "123", name: "My Server" },
116
+ { id: "456", name: "Other Guild" },
117
+ ],
118
+ count: 2,
119
+ });
120
+ expect(mockFetch).toHaveBeenCalledWith("https://discord.com/api/v10/users/@me/guilds", {
121
+ headers: { Authorization: "Bot bot_token_xxx" },
122
+ });
123
+ });
124
+ });
125
+ describe("discord_list_channels", () => {
126
+ it("returns error when Discord is not configured", async () => {
127
+ const { getEffectiveDiscordBotToken } = await import("../channels/discord.js");
128
+ getEffectiveDiscordBotToken.mockReturnValue(null);
129
+ const tool = getTool("discord_list_channels");
130
+ const result = await tool.execute({ guild_id: "123" });
131
+ expect(result).toEqual({
132
+ error: "Discord is not configured. Add a bot token in Settings → Channels (Discord) or set DISCORD_BOT_TOKEN.",
133
+ });
134
+ });
135
+ it("returns error when guild_id is missing", async () => {
136
+ const { getEffectiveDiscordBotToken } = await import("../channels/discord.js");
137
+ getEffectiveDiscordBotToken.mockReturnValue("token");
138
+ const tool = getTool("discord_list_channels");
139
+ const result = await tool.execute({});
140
+ expect(result).toEqual({ error: "guild_id is required" });
141
+ });
142
+ it("returns channels for a guild", async () => {
143
+ const { getEffectiveDiscordBotToken } = await import("../channels/discord.js");
144
+ getEffectiveDiscordBotToken.mockReturnValue("token");
145
+ mockFetch.mockResolvedValueOnce({
146
+ status: 200,
147
+ ok: true,
148
+ json: () => Promise.resolve([
149
+ { id: "ch1", name: "general", type: 0 },
150
+ { id: "ch2", name: "voice", type: 2 },
151
+ ]),
152
+ });
153
+ const tool = getTool("discord_list_channels");
154
+ const result = await tool.execute({ guild_id: "guild_123" });
155
+ expect(result).toEqual({
156
+ channels: [
157
+ { id: "ch1", name: "general", type: 0 },
158
+ { id: "ch2", name: "voice", type: 2 },
159
+ ],
160
+ count: 2,
161
+ });
162
+ expect(mockFetch).toHaveBeenCalledWith("https://discord.com/api/v10/guilds/guild_123/channels", expect.objectContaining({ headers: { Authorization: "Bot token" } }));
163
+ });
164
+ });
165
+ describe("discord_send_message", () => {
166
+ it("returns error when Discord is not configured", async () => {
167
+ const { getEffectiveDiscordBotToken } = await import("../channels/discord.js");
168
+ getEffectiveDiscordBotToken.mockReturnValue(null);
169
+ const tool = getTool("discord_send_message");
170
+ const result = await tool.execute({
171
+ channel_id: "ch1",
172
+ content: "hi",
173
+ });
174
+ expect(result).toEqual({
175
+ error: "Discord is not configured. Add a bot token in Settings → Channels (Discord) or set DISCORD_BOT_TOKEN.",
176
+ });
177
+ });
178
+ it("returns error when channel_id is missing", async () => {
179
+ const { getEffectiveDiscordBotToken } = await import("../channels/discord.js");
180
+ getEffectiveDiscordBotToken.mockReturnValue("token");
181
+ const tool = getTool("discord_send_message");
182
+ const result = await tool.execute({ content: "hi" });
183
+ expect(result).toEqual({ error: "channel_id is required" });
184
+ });
185
+ it("sends message and returns message_id", async () => {
186
+ const { getEffectiveDiscordBotToken } = await import("../channels/discord.js");
187
+ getEffectiveDiscordBotToken.mockReturnValue("token");
188
+ mockFetch.mockResolvedValueOnce({
189
+ status: 200,
190
+ ok: true,
191
+ json: () => Promise.resolve({ id: "msg_123" }),
192
+ });
193
+ const tool = getTool("discord_send_message");
194
+ const result = await tool.execute({
195
+ channel_id: "ch1",
196
+ content: "Hello from test",
197
+ });
198
+ expect(result).toEqual({ ok: true, message_id: "msg_123" });
199
+ expect(mockFetch).toHaveBeenCalledWith("https://discord.com/api/v10/channels/ch1/messages", expect.objectContaining({
200
+ method: "POST",
201
+ headers: { Authorization: "Bot token", "Content-Type": "application/json" },
202
+ body: JSON.stringify({ content: "Hello from test" }),
203
+ }));
204
+ });
205
+ });
206
+ describe("list_integrations_connections", () => {
207
+ it("returns error when Portal and INTEGRATIONS_URL are not set", async () => {
208
+ const { getPortalGatewayBase, getEffectivePortalApiKey } = await import("../config.js");
209
+ getPortalGatewayBase.mockReturnValue(null);
210
+ getEffectivePortalApiKey.mockReturnValue(null);
211
+ const { config } = await import("../config.js");
212
+ config.integrationsUrl = null;
213
+ const tool = getTool("list_integrations_connections");
214
+ const result = await tool.execute({});
215
+ expect(result).toEqual({
216
+ error: "Set PORTAL_GATEWAY_URL + PORTAL_API_KEY (from Portal → API Keys) or INTEGRATIONS_URL",
217
+ });
218
+ });
219
+ it("returns connections when Portal gateway responds", async () => {
220
+ const { getPortalGatewayBase, getEffectivePortalApiKey } = await import("../config.js");
221
+ getPortalGatewayBase.mockReturnValue("https://portal.example.com");
222
+ getEffectivePortalApiKey.mockReturnValue("api_key_xxx");
223
+ mockFetch.mockResolvedValueOnce({
224
+ status: 200,
225
+ ok: true,
226
+ json: () => Promise.resolve({
227
+ connections: [
228
+ { connection_id: "conn_linear_1", provider: "linear" },
229
+ { connection_id: "conn_gmail_1", provider: "gmail" },
230
+ ],
231
+ }),
232
+ });
233
+ const tool = getTool("list_integrations_connections");
234
+ const result = await tool.execute({});
235
+ expect(result).toEqual({
236
+ connections: [
237
+ { id: "conn_linear_1", provider: "linear" },
238
+ { id: "conn_gmail_1", provider: "gmail" },
239
+ ],
240
+ count: 2,
241
+ });
242
+ expect(mockFetch).toHaveBeenCalledWith("https://portal.example.com/connections", {
243
+ headers: { Authorization: "Bearer api_key_xxx" },
244
+ });
245
+ });
246
+ it("filters by provider when given", async () => {
247
+ const { getPortalGatewayBase, getEffectivePortalApiKey } = await import("../config.js");
248
+ getPortalGatewayBase.mockReturnValue("https://portal.example.com");
249
+ getEffectivePortalApiKey.mockReturnValue("key");
250
+ mockFetch.mockResolvedValueOnce({
251
+ status: 200,
252
+ ok: true,
253
+ json: () => Promise.resolve({
254
+ connections: [
255
+ { connection_id: "conn_linear_1", provider: "linear" },
256
+ { connection_id: "conn_gmail_1", provider: "gmail" },
257
+ ],
258
+ }),
259
+ });
260
+ const tool = getTool("list_integrations_connections");
261
+ const result = await tool.execute({ provider: "linear" });
262
+ expect(result).toEqual({
263
+ connections: [{ id: "conn_linear_1", provider: "linear" }],
264
+ count: 1,
265
+ });
266
+ });
267
+ });
268
+ });
269
+ //# sourceMappingURL=tools.integrations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.integrations.test.js","sourceRoot":"","sources":["../../src/agent/tools.integrations.test.ts"],"names":[],"mappings":"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"}