fourmis-agents-sdk 0.3.0 → 0.4.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 (102) hide show
  1. package/dist/agent-loop.d.ts +21 -3
  2. package/dist/agent-loop.d.ts.map +1 -1
  3. package/dist/agent-loop.js +294 -90
  4. package/dist/agents/index.js +2798 -1857
  5. package/dist/agents/task-manager.js +15 -0
  6. package/dist/agents/tools.d.ts.map +1 -1
  7. package/dist/agents/tools.js +2798 -1857
  8. package/dist/agents/types.d.ts +4 -0
  9. package/dist/agents/types.d.ts.map +1 -1
  10. package/dist/api.d.ts +8 -5
  11. package/dist/api.d.ts.map +1 -1
  12. package/dist/api.js +2394 -886
  13. package/dist/auth/gemini-oauth.js +15 -0
  14. package/dist/auth/login-openai.js +15 -0
  15. package/dist/auth/openai-oauth.js +15 -0
  16. package/dist/hooks.d.ts +19 -1
  17. package/dist/hooks.d.ts.map +1 -1
  18. package/dist/hooks.js +42 -2
  19. package/dist/index.d.ts +10 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +2407 -887
  22. package/dist/mcp/client.d.ts +7 -0
  23. package/dist/mcp/client.d.ts.map +1 -1
  24. package/dist/mcp/client.js +146 -12
  25. package/dist/mcp/index.js +146 -12
  26. package/dist/mcp/server.js +15 -0
  27. package/dist/mcp/types.d.ts +19 -1
  28. package/dist/mcp/types.d.ts.map +1 -1
  29. package/dist/memory/index.js +15 -0
  30. package/dist/memory/memory-handler.js +15 -0
  31. package/dist/permissions.d.ts.map +1 -1
  32. package/dist/permissions.js +22 -3
  33. package/dist/providers/anthropic.d.ts.map +1 -1
  34. package/dist/providers/anthropic.js +56 -2
  35. package/dist/providers/gemini.js +15 -0
  36. package/dist/providers/openai.js +15 -0
  37. package/dist/providers/registry.js +56 -2
  38. package/dist/providers/types.d.ts +4 -1
  39. package/dist/providers/types.d.ts.map +1 -1
  40. package/dist/query.d.ts +21 -2
  41. package/dist/query.d.ts.map +1 -1
  42. package/dist/query.js +84 -1
  43. package/dist/settings.js +15 -0
  44. package/dist/skills/frontmatter.d.ts +15 -0
  45. package/dist/skills/frontmatter.d.ts.map +1 -0
  46. package/dist/skills/frontmatter.js +66 -0
  47. package/dist/skills/index.d.ts +8 -0
  48. package/dist/skills/index.d.ts.map +1 -0
  49. package/dist/skills/index.js +326 -0
  50. package/dist/skills/skills.d.ts +94 -0
  51. package/dist/skills/skills.d.ts.map +1 -0
  52. package/dist/skills/skills.js +324 -0
  53. package/dist/tools/ask-user-question.d.ts +7 -0
  54. package/dist/tools/ask-user-question.d.ts.map +1 -0
  55. package/dist/tools/ask-user-question.js +63 -0
  56. package/dist/tools/bash.d.ts.map +1 -1
  57. package/dist/tools/bash.js +62 -2
  58. package/dist/tools/config.d.ts +7 -0
  59. package/dist/tools/config.d.ts.map +1 -0
  60. package/dist/tools/config.js +129 -0
  61. package/dist/tools/edit.js +15 -0
  62. package/dist/tools/exit-plan-mode.d.ts +7 -0
  63. package/dist/tools/exit-plan-mode.d.ts.map +1 -0
  64. package/dist/tools/exit-plan-mode.js +49 -0
  65. package/dist/tools/glob.js +15 -0
  66. package/dist/tools/grep.js +15 -0
  67. package/dist/tools/index.d.ts +7 -0
  68. package/dist/tools/index.d.ts.map +1 -1
  69. package/dist/tools/index.js +521 -9
  70. package/dist/tools/mcp-resources.js +15 -0
  71. package/dist/tools/notebook-edit.d.ts +7 -0
  72. package/dist/tools/notebook-edit.d.ts.map +1 -0
  73. package/dist/tools/notebook-edit.js +98 -0
  74. package/dist/tools/presets.d.ts +2 -1
  75. package/dist/tools/presets.d.ts.map +1 -1
  76. package/dist/tools/presets.js +37 -4
  77. package/dist/tools/read.d.ts.map +1 -1
  78. package/dist/tools/read.js +27 -1
  79. package/dist/tools/registry.d.ts +2 -0
  80. package/dist/tools/registry.d.ts.map +1 -1
  81. package/dist/tools/registry.js +25 -0
  82. package/dist/tools/todo-write.d.ts +7 -0
  83. package/dist/tools/todo-write.d.ts.map +1 -0
  84. package/dist/tools/todo-write.js +84 -0
  85. package/dist/tools/web-fetch.d.ts +6 -0
  86. package/dist/tools/web-fetch.d.ts.map +1 -0
  87. package/dist/tools/web-fetch.js +100 -0
  88. package/dist/tools/web-search.d.ts +7 -0
  89. package/dist/tools/web-search.d.ts.map +1 -0
  90. package/dist/tools/web-search.js +93 -0
  91. package/dist/tools/write.js +15 -0
  92. package/dist/types.d.ts +360 -42
  93. package/dist/types.d.ts.map +1 -1
  94. package/dist/types.js +15 -0
  95. package/dist/utils/cost.js +15 -0
  96. package/dist/utils/session-store.d.ts +1 -1
  97. package/dist/utils/session-store.d.ts.map +1 -1
  98. package/dist/utils/session-store.js +64 -2
  99. package/dist/utils/system-prompt.d.ts +4 -0
  100. package/dist/utils/system-prompt.d.ts.map +1 -1
  101. package/dist/utils/system-prompt.js +326 -6
  102. package/package.json +4 -2
@@ -1,5 +1,20 @@
1
1
  // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
2
4
  var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
3
18
  var __export = (target, all) => {
4
19
  for (var name in all)
5
20
  __defProp(target, name, {
@@ -267,6 +282,44 @@ class AnthropicAdapter {
267
282
  max_tokens: maxTokens,
268
283
  stream: true
269
284
  };
285
+ if (request.thinking) {
286
+ switch (request.thinking.type) {
287
+ case "adaptive":
288
+ params.thinking = { type: "adaptive" };
289
+ break;
290
+ case "disabled":
291
+ params.thinking = { type: "disabled" };
292
+ break;
293
+ case "enabled":
294
+ params.thinking = {
295
+ type: "enabled",
296
+ budget_tokens: request.thinking.budgetTokens
297
+ };
298
+ break;
299
+ }
300
+ } else if (request.thinkingBudget !== undefined) {
301
+ if (request.thinkingBudget <= 0) {
302
+ params.thinking = { type: "disabled" };
303
+ } else {
304
+ params.thinking = {
305
+ type: "enabled",
306
+ budget_tokens: Math.max(1024, request.thinkingBudget)
307
+ };
308
+ }
309
+ }
310
+ const outputConfig = {};
311
+ if (request.effort) {
312
+ outputConfig.effort = request.effort;
313
+ }
314
+ if (request.outputFormat?.type === "json_schema") {
315
+ outputConfig.format = {
316
+ type: "json_schema",
317
+ schema: request.outputFormat.schema
318
+ };
319
+ }
320
+ if (Object.keys(outputConfig).length > 0) {
321
+ params.output_config = outputConfig;
322
+ }
270
323
  if (this.oauthMode) {
271
324
  const systemBlocks = [
272
325
  { type: "text", text: "You are Claude Code, Anthropic's official CLI for Claude." }
@@ -391,11 +444,12 @@ class AnthropicAdapter {
391
444
  switch (feature) {
392
445
  case "streaming":
393
446
  case "tool_calling":
394
- case "image_input":
395
- case "pdf_input":
396
447
  case "thinking":
397
448
  case "structured_output":
398
449
  return true;
450
+ case "image_input":
451
+ case "pdf_input":
452
+ return false;
399
453
  default:
400
454
  return false;
401
455
  }
@@ -1,5 +1,20 @@
1
1
  // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
2
4
  var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
3
18
  var __export = (target, all) => {
4
19
  for (var name in all)
5
20
  __defProp(target, name, {
@@ -1,5 +1,20 @@
1
1
  // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
2
4
  var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
3
18
  var __export = (target, all) => {
4
19
  for (var name in all)
5
20
  __defProp(target, name, {
@@ -1,5 +1,20 @@
1
1
  // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
2
4
  var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
3
18
  var __export = (target, all) => {
4
19
  for (var name in all)
5
20
  __defProp(target, name, {
@@ -646,6 +661,44 @@ class AnthropicAdapter {
646
661
  max_tokens: maxTokens,
647
662
  stream: true
648
663
  };
664
+ if (request.thinking) {
665
+ switch (request.thinking.type) {
666
+ case "adaptive":
667
+ params.thinking = { type: "adaptive" };
668
+ break;
669
+ case "disabled":
670
+ params.thinking = { type: "disabled" };
671
+ break;
672
+ case "enabled":
673
+ params.thinking = {
674
+ type: "enabled",
675
+ budget_tokens: request.thinking.budgetTokens
676
+ };
677
+ break;
678
+ }
679
+ } else if (request.thinkingBudget !== undefined) {
680
+ if (request.thinkingBudget <= 0) {
681
+ params.thinking = { type: "disabled" };
682
+ } else {
683
+ params.thinking = {
684
+ type: "enabled",
685
+ budget_tokens: Math.max(1024, request.thinkingBudget)
686
+ };
687
+ }
688
+ }
689
+ const outputConfig = {};
690
+ if (request.effort) {
691
+ outputConfig.effort = request.effort;
692
+ }
693
+ if (request.outputFormat?.type === "json_schema") {
694
+ outputConfig.format = {
695
+ type: "json_schema",
696
+ schema: request.outputFormat.schema
697
+ };
698
+ }
699
+ if (Object.keys(outputConfig).length > 0) {
700
+ params.output_config = outputConfig;
701
+ }
649
702
  if (this.oauthMode) {
650
703
  const systemBlocks = [
651
704
  { type: "text", text: "You are Claude Code, Anthropic's official CLI for Claude." }
@@ -770,11 +823,12 @@ class AnthropicAdapter {
770
823
  switch (feature) {
771
824
  case "streaming":
772
825
  case "tool_calling":
773
- case "image_input":
774
- case "pdf_input":
775
826
  case "thinking":
776
827
  case "structured_output":
777
828
  return true;
829
+ case "image_input":
830
+ case "pdf_input":
831
+ return false;
778
832
  default:
779
833
  return false;
780
834
  }
@@ -2,7 +2,7 @@
2
2
  * Provider adapter interface and related types.
3
3
  * Normalizes all LLM APIs into a common contract.
4
4
  */
5
- import type { TokenUsage } from "../types.js";
5
+ import type { TokenUsage, ThinkingConfig, Effort, OutputFormat } from "../types.js";
6
6
  export type ToolDefinition = {
7
7
  name: string;
8
8
  description: string;
@@ -38,6 +38,9 @@ export type ChatRequest = {
38
38
  maxTokens?: number;
39
39
  temperature?: number;
40
40
  thinkingBudget?: number;
41
+ thinking?: ThinkingConfig;
42
+ effort?: Effort;
43
+ outputFormat?: OutputFormat;
41
44
  signal?: AbortSignal;
42
45
  /**
43
46
  * Provider-specific native tools (e.g. Anthropic's memory_20250818).
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
package/dist/query.d.ts CHANGED
@@ -1,9 +1,28 @@
1
1
  /**
2
2
  * Query class — wraps the agent loop AsyncGenerator with control methods.
3
3
  */
4
- import type { AgentMessage, Query } from "./types.js";
4
+ import type { AgentMessage, Query, PermissionMode, QueryInitializationResult, SlashCommand, AccountInfo, RewindFilesResult, McpSetServersResult, SDKUserMessage } from "./types.js";
5
+ import type { ModelInfo } from "./providers/types.js";
6
+ import type { McpServerConfig, McpServerStatus } from "./mcp/types.js";
7
+ export type QueryControlHandlers = {
8
+ setPermissionMode?: (mode: PermissionMode) => Promise<void>;
9
+ setModel?: (model?: string) => Promise<void>;
10
+ setMaxThinkingTokens?: (maxThinkingTokens: number | null) => Promise<void>;
11
+ initializationResult?: () => Promise<QueryInitializationResult>;
12
+ supportedCommands?: () => Promise<SlashCommand[]>;
13
+ supportedModels?: () => Promise<ModelInfo[]>;
14
+ mcpServerStatus?: () => Promise<McpServerStatus[]>;
15
+ accountInfo?: () => Promise<AccountInfo>;
16
+ rewindFiles?: (userMessageId: string, options?: {
17
+ dryRun?: boolean;
18
+ }) => Promise<RewindFilesResult>;
19
+ reconnectMcpServer?: (serverName: string) => Promise<void>;
20
+ toggleMcpServer?: (serverName: string, enabled: boolean) => Promise<void>;
21
+ setMcpServers?: (servers: Record<string, McpServerConfig>) => Promise<McpSetServersResult>;
22
+ streamInput?: (stream: AsyncIterable<SDKUserMessage>) => Promise<void>;
23
+ };
5
24
  /**
6
25
  * Create a Query that wraps an AsyncGenerator<AgentMessage> with control methods.
7
26
  */
8
- export declare function createQuery(generator: AsyncGenerator<AgentMessage, void, undefined>, abortController: AbortController): Query;
27
+ export declare function createQuery(generator: AsyncGenerator<AgentMessage, void, undefined>, abortController: AbortController, controls?: QueryControlHandlers): Query;
9
28
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtD;;GAEG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC,EACxD,eAAe,EAAE,eAAe,GAC/B,KAAK,CAwBP"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,KAAK,EACL,cAAc,EACd,yBAAyB,EACzB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,oBAAoB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAChE,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAClD,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7C,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpG,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3F,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE,CAAC;AAMF;;GAEG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC,EACxD,eAAe,EAAE,eAAe,EAChC,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,KAAK,CAyFP"}
package/dist/query.js CHANGED
@@ -1,5 +1,20 @@
1
1
  // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
2
4
  var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
3
18
  var __export = (target, all) => {
4
19
  for (var name in all)
5
20
  __defProp(target, name, {
@@ -13,7 +28,10 @@ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
13
28
  var __require = import.meta.require;
14
29
 
15
30
  // src/query.ts
16
- function createQuery(generator, abortController) {
31
+ function unsupported(methodName) {
32
+ return Promise.reject(new Error(`Query.${methodName} is not supported in this runtime yet.`));
33
+ }
34
+ function createQuery(generator, abortController, controls) {
17
35
  const query = {
18
36
  next: generator.next.bind(generator),
19
37
  return: generator.return.bind(generator),
@@ -24,6 +42,71 @@ function createQuery(generator, abortController) {
24
42
  async interrupt() {
25
43
  abortController.abort();
26
44
  },
45
+ async setPermissionMode(mode) {
46
+ if (!controls?.setPermissionMode)
47
+ return unsupported("setPermissionMode");
48
+ await controls.setPermissionMode(mode);
49
+ },
50
+ async setModel(model) {
51
+ if (!controls?.setModel)
52
+ return unsupported("setModel");
53
+ await controls.setModel(model);
54
+ },
55
+ async setMaxThinkingTokens(maxThinkingTokens) {
56
+ if (!controls?.setMaxThinkingTokens)
57
+ return unsupported("setMaxThinkingTokens");
58
+ await controls.setMaxThinkingTokens(maxThinkingTokens);
59
+ },
60
+ async initializationResult() {
61
+ if (!controls?.initializationResult)
62
+ return unsupported("initializationResult");
63
+ return controls.initializationResult();
64
+ },
65
+ async supportedCommands() {
66
+ if (!controls?.supportedCommands)
67
+ return unsupported("supportedCommands");
68
+ return controls.supportedCommands();
69
+ },
70
+ async supportedModels() {
71
+ if (!controls?.supportedModels)
72
+ return unsupported("supportedModels");
73
+ return controls.supportedModels();
74
+ },
75
+ async mcpServerStatus() {
76
+ if (!controls?.mcpServerStatus)
77
+ return unsupported("mcpServerStatus");
78
+ return controls.mcpServerStatus();
79
+ },
80
+ async accountInfo() {
81
+ if (!controls?.accountInfo)
82
+ return unsupported("accountInfo");
83
+ return controls.accountInfo();
84
+ },
85
+ async rewindFiles(userMessageId, options) {
86
+ if (!controls?.rewindFiles)
87
+ return unsupported("rewindFiles");
88
+ return controls.rewindFiles(userMessageId, options);
89
+ },
90
+ async reconnectMcpServer(serverName) {
91
+ if (!controls?.reconnectMcpServer)
92
+ return unsupported("reconnectMcpServer");
93
+ await controls.reconnectMcpServer(serverName);
94
+ },
95
+ async toggleMcpServer(serverName, enabled) {
96
+ if (!controls?.toggleMcpServer)
97
+ return unsupported("toggleMcpServer");
98
+ await controls.toggleMcpServer(serverName, enabled);
99
+ },
100
+ async setMcpServers(servers) {
101
+ if (!controls?.setMcpServers)
102
+ return unsupported("setMcpServers");
103
+ return controls.setMcpServers(servers);
104
+ },
105
+ async streamInput(stream) {
106
+ if (!controls?.streamInput)
107
+ return unsupported("streamInput");
108
+ await controls.streamInput(stream);
109
+ },
27
110
  close() {
28
111
  abortController.abort();
29
112
  generator.return(undefined);
package/dist/settings.js CHANGED
@@ -1,5 +1,20 @@
1
1
  // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
2
4
  var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
3
18
  var __export = (target, all) => {
4
19
  for (var name in all)
5
20
  __defProp(target, name, {
@@ -0,0 +1,15 @@
1
+ /**
2
+ * YAML frontmatter parser for SKILL.md files.
3
+ *
4
+ * Matches the Claude SDK's parsing behavior:
5
+ * - Extracts YAML between `---` delimiters
6
+ * - Handles CRLF and LF line endings
7
+ * - Returns empty object if no frontmatter found
8
+ */
9
+ export type ParsedFrontmatter<T extends Record<string, unknown>> = {
10
+ frontmatter: T;
11
+ body: string;
12
+ };
13
+ export declare function parseFrontmatter<T extends Record<string, unknown> = Record<string, unknown>>(content: string): ParsedFrontmatter<T>;
14
+ export declare function stripFrontmatter(content: string): string;
15
+ //# sourceMappingURL=frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/skills/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACjE,WAAW,EAAE,CAAC,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAwBF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1F,OAAO,EAAE,MAAM,GACd,iBAAiB,CAAC,CAAC,CAAC,CAOtB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,66 @@
1
+ // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
18
+ var __export = (target, all) => {
19
+ for (var name in all)
20
+ __defProp(target, name, {
21
+ get: all[name],
22
+ enumerable: true,
23
+ configurable: true,
24
+ set: (newValue) => all[name] = () => newValue
25
+ });
26
+ };
27
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
28
+ var __require = import.meta.require;
29
+
30
+ // src/skills/frontmatter.ts
31
+ import { parse } from "yaml";
32
+ function normalizeNewlines(value) {
33
+ return value.replace(/\r\n/g, `
34
+ `).replace(/\r/g, `
35
+ `);
36
+ }
37
+ function extractFrontmatter(content) {
38
+ const normalized = normalizeNewlines(content);
39
+ if (!normalized.startsWith("---")) {
40
+ return { yamlString: null, body: normalized };
41
+ }
42
+ const endIndex = normalized.indexOf(`
43
+ ---`, 3);
44
+ if (endIndex === -1) {
45
+ return { yamlString: null, body: normalized };
46
+ }
47
+ return {
48
+ yamlString: normalized.slice(4, endIndex),
49
+ body: normalized.slice(endIndex + 4).trim()
50
+ };
51
+ }
52
+ function parseFrontmatter(content) {
53
+ const { yamlString, body } = extractFrontmatter(content);
54
+ if (!yamlString) {
55
+ return { frontmatter: {}, body };
56
+ }
57
+ const parsed = parse(yamlString);
58
+ return { frontmatter: parsed ?? {}, body };
59
+ }
60
+ function stripFrontmatter(content) {
61
+ return parseFrontmatter(content).body;
62
+ }
63
+ export {
64
+ stripFrontmatter,
65
+ parseFrontmatter
66
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Skills module — SKILL.md discovery, loading, and prompt injection.
3
+ */
4
+ export { loadSkills, loadSkillsFromDir, formatSkillsForPrompt, } from "./skills.js";
5
+ export type { Skill, SkillFrontmatter, SkillDiagnostic, LoadSkillsResult, LoadSkillsFromDirOptions, LoadSkillsOptions, } from "./skills.js";
6
+ export { parseFrontmatter, stripFrontmatter } from "./frontmatter.js";
7
+ export type { ParsedFrontmatter } from "./frontmatter.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}