@wirecat/cli-core 0.325.0 → 0.327.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 (164) hide show
  1. package/README.md +6 -5
  2. package/dist/cli/bot/admins.js +2 -2
  3. package/dist/cli/bot/admins.js.map +1 -1
  4. package/dist/cli/bot/api.js +1 -1
  5. package/dist/cli/bot/api.js.map +1 -1
  6. package/dist/cli/bot/command.js +3 -3
  7. package/dist/cli/bot/command.js.map +1 -1
  8. package/dist/cli/bot/mcp.d.ts +0 -3
  9. package/dist/cli/bot/mcp.d.ts.map +1 -1
  10. package/dist/cli/bot/mcp.js +7 -20
  11. package/dist/cli/bot/mcp.js.map +1 -1
  12. package/dist/cli/bot/messages.d.ts.map +1 -1
  13. package/dist/cli/bot/messages.js +7 -7
  14. package/dist/cli/bot/messages.js.map +1 -1
  15. package/dist/cli/bot/moderation.d.ts.map +1 -1
  16. package/dist/cli/bot/moderation.js +3 -3
  17. package/dist/cli/bot/moderation.js.map +1 -1
  18. package/dist/cli/bot/port.d.ts +10 -4
  19. package/dist/cli/bot/port.d.ts.map +1 -1
  20. package/dist/cli/bot/setup.js +3 -3
  21. package/dist/cli/bot/setup.js.map +1 -1
  22. package/dist/cli/bot/store.js +1 -1
  23. package/dist/cli/bot/store.js.map +1 -1
  24. package/dist/cli/commands-command.js +1 -1
  25. package/dist/cli/commands-command.js.map +1 -1
  26. package/dist/cli/config-command.d.ts.map +1 -1
  27. package/dist/cli/config-command.js +1 -1
  28. package/dist/cli/config-command.js.map +1 -1
  29. package/dist/cli/context.d.ts +13 -0
  30. package/dist/cli/context.d.ts.map +1 -1
  31. package/dist/cli/context.js +6 -2
  32. package/dist/cli/context.js.map +1 -1
  33. package/dist/cli/effects.d.ts +4 -2
  34. package/dist/cli/effects.d.ts.map +1 -1
  35. package/dist/cli/effects.js +6 -3
  36. package/dist/cli/effects.js.map +1 -1
  37. package/dist/cli/index.d.ts +3 -4
  38. package/dist/cli/index.d.ts.map +1 -1
  39. package/dist/cli/index.js +2 -3
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/cli/meeting-preparation-command.js +1 -1
  42. package/dist/cli/meeting-preparation-command.js.map +1 -1
  43. package/dist/cli/messenger/account-sessions-command.js +1 -1
  44. package/dist/cli/messenger/account-sessions-command.js.map +1 -1
  45. package/dist/cli/messenger/archive-commands.js +1 -1
  46. package/dist/cli/messenger/archive-commands.js.map +1 -1
  47. package/dist/cli/messenger/ask.d.ts +1 -1
  48. package/dist/cli/messenger/ask.d.ts.map +1 -1
  49. package/dist/cli/messenger/ask.js +3 -1
  50. package/dist/cli/messenger/ask.js.map +1 -1
  51. package/dist/cli/messenger/complete-command.js +1 -1
  52. package/dist/cli/messenger/complete-command.js.map +1 -1
  53. package/dist/cli/messenger/doctor-command.js +1 -1
  54. package/dist/cli/messenger/doctor-command.js.map +1 -1
  55. package/dist/cli/messenger/flood-command.js +1 -1
  56. package/dist/cli/messenger/flood-command.js.map +1 -1
  57. package/dist/cli/messenger/mcp-command.js +1 -1
  58. package/dist/cli/messenger/mcp-command.js.map +1 -1
  59. package/dist/cli/messenger/messages-delete-command.d.ts +1 -1
  60. package/dist/cli/messenger/messages-delete-command.d.ts.map +1 -1
  61. package/dist/cli/messenger/messages-delete-command.js +10 -5
  62. package/dist/cli/messenger/messages-delete-command.js.map +1 -1
  63. package/dist/cli/messenger/models-command.d.ts.map +1 -1
  64. package/dist/cli/messenger/models-command.js +2 -2
  65. package/dist/cli/messenger/models-command.js.map +1 -1
  66. package/dist/cli/messenger/records-command.d.ts.map +1 -1
  67. package/dist/cli/messenger/records-command.js +5 -5
  68. package/dist/cli/messenger/records-command.js.map +1 -1
  69. package/dist/cli/messenger/replies-command.js +1 -1
  70. package/dist/cli/messenger/replies-command.js.map +1 -1
  71. package/dist/cli/messenger/schedule-command.js +1 -1
  72. package/dist/cli/messenger/schedule-command.js.map +1 -1
  73. package/dist/cli/messenger/serve-relay.d.ts +5 -0
  74. package/dist/cli/messenger/serve-relay.d.ts.map +1 -1
  75. package/dist/cli/messenger/serve-relay.js +38 -33
  76. package/dist/cli/messenger/serve-relay.js.map +1 -1
  77. package/dist/cli/messenger/server-command.js +1 -1
  78. package/dist/cli/messenger/server-command.js.map +1 -1
  79. package/dist/cli/messenger/topics-command.d.ts.map +1 -1
  80. package/dist/cli/messenger/topics-command.js +2 -2
  81. package/dist/cli/messenger/topics-command.js.map +1 -1
  82. package/dist/cli/program.js +5 -1
  83. package/dist/cli/program.js.map +1 -1
  84. package/dist/cli/runs/command.d.ts.map +1 -1
  85. package/dist/cli/runs/command.js +1 -1
  86. package/dist/cli/runs/command.js.map +1 -1
  87. package/dist/cli/skill-command.d.ts.map +1 -1
  88. package/dist/cli/skill-command.js +2 -1
  89. package/dist/cli/skill-command.js.map +1 -1
  90. package/dist/cli/upgrade-command.js +1 -1
  91. package/dist/cli/upgrade-command.js.map +1 -1
  92. package/dist/mcp/agent.d.ts +68 -0
  93. package/dist/mcp/agent.d.ts.map +1 -0
  94. package/dist/mcp/agent.js +201 -0
  95. package/dist/mcp/agent.js.map +1 -0
  96. package/dist/mcp/bot/server.d.ts +11 -20
  97. package/dist/mcp/bot/server.d.ts.map +1 -1
  98. package/dist/mcp/bot/server.js +39 -82
  99. package/dist/mcp/bot/server.js.map +1 -1
  100. package/dist/mcp/index.d.ts +2 -1
  101. package/dist/mcp/index.d.ts.map +1 -1
  102. package/dist/mcp/index.js +2 -1
  103. package/dist/mcp/index.js.map +1 -1
  104. package/dist/output.d.ts +3 -1
  105. package/dist/output.d.ts.map +1 -1
  106. package/dist/output.js +5 -2
  107. package/dist/output.js.map +1 -1
  108. package/dist/services/searches.d.ts +1 -1
  109. package/dist/services/searches.d.ts.map +1 -1
  110. package/dist/store/document-transfer/digest.d.ts +2 -0
  111. package/dist/store/document-transfer/digest.d.ts.map +1 -0
  112. package/dist/store/document-transfer/digest.js +3 -0
  113. package/dist/store/document-transfer/digest.js.map +1 -0
  114. package/dist/store/document-transfer/index.d.ts +7 -0
  115. package/dist/store/document-transfer/index.d.ts.map +1 -0
  116. package/dist/store/document-transfer/index.js +115 -0
  117. package/dist/store/document-transfer/index.js.map +1 -0
  118. package/dist/store/document-transfer/model.d.ts +69 -0
  119. package/dist/store/document-transfer/model.d.ts.map +1 -0
  120. package/dist/store/document-transfer/model.js +2 -0
  121. package/dist/store/document-transfer/model.js.map +1 -0
  122. package/dist/store/index.d.ts +2 -0
  123. package/dist/store/index.d.ts.map +1 -1
  124. package/dist/store/index.js +1 -0
  125. package/dist/store/index.js.map +1 -1
  126. package/dist/store/sqlite/document-transfer/apply.d.ts +4 -0
  127. package/dist/store/sqlite/document-transfer/apply.d.ts.map +1 -0
  128. package/dist/store/sqlite/document-transfer/apply.js +179 -0
  129. package/dist/store/sqlite/document-transfer/apply.js.map +1 -0
  130. package/dist/store/sqlite/document-transfer/people.d.ts +10 -0
  131. package/dist/store/sqlite/document-transfer/people.d.ts.map +1 -0
  132. package/dist/store/sqlite/document-transfer/people.js +75 -0
  133. package/dist/store/sqlite/document-transfer/people.js.map +1 -0
  134. package/dist/store/sqlite/document-transfer/plan.d.ts +12 -0
  135. package/dist/store/sqlite/document-transfer/plan.d.ts.map +1 -0
  136. package/dist/store/sqlite/document-transfer/plan.js +195 -0
  137. package/dist/store/sqlite/document-transfer/plan.js.map +1 -0
  138. package/dist/store/sqlite/document-transfer/snapshot.d.ts +10 -0
  139. package/dist/store/sqlite/document-transfer/snapshot.d.ts.map +1 -0
  140. package/dist/store/sqlite/document-transfer/snapshot.js +183 -0
  141. package/dist/store/sqlite/document-transfer/snapshot.js.map +1 -0
  142. package/dist/store/sqlite/manifest.d.ts.map +1 -1
  143. package/dist/store/sqlite/manifest.js +1 -0
  144. package/dist/store/sqlite/manifest.js.map +1 -1
  145. package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
  146. package/dist/store/sqlite/migrations.generated.js +6 -0
  147. package/dist/store/sqlite/migrations.generated.js.map +1 -1
  148. package/dist/store/sqlite/schema/document-index-pending.d.ts +40 -0
  149. package/dist/store/sqlite/schema/document-index-pending.d.ts.map +1 -0
  150. package/dist/store/sqlite/schema/document-index-pending.js +6 -0
  151. package/dist/store/sqlite/schema/document-index-pending.js.map +1 -0
  152. package/dist/store/sqlite/schema/document-transfers.d.ts +104 -0
  153. package/dist/store/sqlite/schema/document-transfers.d.ts.map +1 -0
  154. package/dist/store/sqlite/schema/document-transfers.js +10 -0
  155. package/dist/store/sqlite/schema/document-transfers.js.map +1 -0
  156. package/dist/store/sqlite/schema.d.ts +2 -39
  157. package/dist/store/sqlite/schema.d.ts.map +1 -1
  158. package/dist/store/sqlite/schema.js +2 -4
  159. package/dist/store/sqlite/schema.js.map +1 -1
  160. package/package.json +3 -3
  161. package/dist/mcp/bot/tools.d.ts +0 -49
  162. package/dist/mcp/bot/tools.d.ts.map +0 -1
  163. package/dist/mcp/bot/tools.js +0 -244
  164. package/dist/mcp/bot/tools.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade-command.js","sourceRoot":"","sources":["../../src/cli/upgrade-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrade-command.js","sourceRoot":"","sources":["../../src/cli/upgrade-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAuD,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACpH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAQ/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAgB,EAChB,WAAmB,EACnB,UAAgD,EACvC,EAAE,CACX,eAAe,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;KACpF,WAAW,CAAC,WAAW,GAAG,CAAC,OAAO,iEAAiE,CAAC;KACpG,MAAM,CAAC,SAAS,EAAE,yDAAyD,CAAC;KAC5E,MAAM,CAAC,KAAK,WAA0B,EAAE,KAAK,EAAuB;IACnE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAC5B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CACnD,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,EAClF,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CACjF,CAAA;IACD,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IACrG,IAAI,MAAM,KAAK,aAAa;QAAE,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;SAChF,IAAI,MAAM,KAAK,YAAY;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAA;SACzF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GACV,MAAM,CAAC,SAAS,KAAK,UAAU;YAC7B,CAAC,CAAC,8DAA8D;YAChE,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK;gBAC1B,CAAC,CAAC,oDAAoD,WAAW,WAAW;gBAC5E,CAAC,CAAC,mBAAmB,GAAG,CAAC,OAAO,oCAAoC,CAAA;QAC1E,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CACX,0BAA0B,OAAO,eAAe,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,KAAK;YAC7E,KAAK,GAAG,CAAC,OAAO,IAAI,OAAO,mBAAmB,CACjD,CAAA;IACH,CAAC;IACD,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AAC5F,CAAC,CAAC,CAAA;AAEN,MAAM,cAAc,GAAG,CACrB,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAwB,EACtD,EAAE,KAAK,EAAE,OAAO,EAAiD,EACzD,EAAE;IACV,MAAM,GAAG,GACP,SAAS,KAAK,MAAM;QAClB,CAAC,CAAC,iGAAiG,KAAK,CAAC,CAAC,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;QACxI,CAAC,CAAC,EAAE,CAAA;IACR,OAAO,aAAa,SAAS,SAAS,MAAM,GAAG,GAAG,QAAQ,OAAO,oBAAoB,CAAA;AACvF,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,MAA4B,EAAU,EAAE;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,EAAE,CAAA;IACrE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,OAAO,GACX,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,8BAA8B,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpG,CAAC,CAAC,EAAE,CAAA;QACR,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,OAAO,EAAE,CAAA;IAC/F,CAAC;IACD,IAAI,IAAI;QAAE,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,CAAA;IACtD,OAAO,MAAM,CAAC,MAAM,KAAK,IAAI;QAC3B,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,OAAO,sBAAsB;QACpD,CAAC,CAAC,MAAM,CAAC,KAAK;YACZ,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,sBAAsB,MAAM,CAAC,OAAO,EAAE;YACnE,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,OAAO,gBAAgB,CAAA;AACpD,CAAC,CAAA"}
@@ -0,0 +1,68 @@
1
+ import { type CommandInfo } from "@wirecat/cli-base/commands";
2
+ import { type ErrorObject } from "@wirecat/cli-base/standards";
3
+ import * as v from "valibot";
4
+ import type { RunOptions } from "../cli/program.js";
5
+ import type { MessengerAdapter } from "../ports/messenger.js";
6
+ import { type Level, type PermissionKey } from "../sends/permissions.js";
7
+ /** The CLI's own `run` — a fresh program on every call — and its command tree as `commands --json` describes it. */
8
+ export interface AgentProgram {
9
+ run: (argv: string[], environment: RunOptions) => Promise<number>;
10
+ commands: readonly CommandInfo[];
11
+ }
12
+ export interface AgentContext {
13
+ profile: string;
14
+ env?: NodeJS.ProcessEnv;
15
+ /** The levels in force now, this server's stricter ones included; read on every call. */
16
+ levels?: () => Readonly<Record<PermissionKey, Level>>;
17
+ /** This server's own stricter levels, `key=level`, which the command's guard applies too. */
18
+ overrides?: readonly string[];
19
+ /** The key a CLI's own command is checked against, when `keyForCommand` does not know it. */
20
+ keyOf?: (path: readonly string[]) => PermissionKey | null | undefined;
21
+ /** The server's one open connection. The command borrows it: it cannot close it, and never opens its own. */
22
+ connection?: () => Promise<MessengerAdapter>;
23
+ }
24
+ export type AgentAnswer = {
25
+ result: unknown;
26
+ } | {
27
+ error: ErrorObject;
28
+ };
29
+ /** One command an agent may run: its path under the server's root, and its arguments as a schema. */
30
+ export interface AgentTool {
31
+ command: string;
32
+ /** From the program's root: `["bot", "messages", "send"]`. */
33
+ path: readonly string[];
34
+ title: string;
35
+ description: string;
36
+ writes: boolean;
37
+ input: v.ObjectSchema<v.ObjectEntries, undefined>;
38
+ }
39
+ export interface CatalogueOptions {
40
+ /** The subtree a server is built from: `["bot"]` for the bot server. */
41
+ root?: readonly string[];
42
+ /** Subtrees under the root left out: the personal server leaves out `["bot"]`. */
43
+ exclude?: readonly (readonly string[])[];
44
+ /** The profile's levels when the server starts: what they refuse is not offered. */
45
+ levels?: Readonly<Record<PermissionKey, Level>>;
46
+ keyOf?: (path: readonly string[]) => PermissionKey | null | undefined;
47
+ /** Arguments left out of every tool, by name. */
48
+ omit?: readonly string[];
49
+ /** Offer `offline` on commands that read the messenger: answer from the copy on this machine. */
50
+ offline?: boolean;
51
+ }
52
+ /**
53
+ * One tool per command an agent may run under `root` (NEED-1411): every leaf command, except one marked
54
+ * `mcp: false` (on itself or a group above it), one with a `lifetime` — an agent call must return — and one the
55
+ * profile's levels refuse. Its input is the command's arguments and options in snake_case, typed as far as the
56
+ * command tree and the shared flag vocabulary say; an option marked `mcp: false` is left out.
57
+ */
58
+ export declare const toolsFromCommands: (commands: readonly CommandInfo[], options?: CatalogueOptions) => AgentTool[];
59
+ /**
60
+ * Runs one command for an agent through the CLI itself, in this process: the same parsing, guard, answer and
61
+ * error as on the command line. The answer comes back as the object the command rendered, and a failure as the
62
+ * error object the CLI would print. A write at level `ask` goes ahead (NEED-773); the server's stricter levels
63
+ * apply, to the check before the run and to the command's own guard. With `connection`, the command borrows the
64
+ * server's open connection and never opens one of its own. Which commands are offered is the catalogue's
65
+ * decision (`toolsFromCommands`); this runs what it is handed, except a command that never returns.
66
+ */
67
+ export declare const runCommandForAgent: (program: AgentProgram, path: readonly string[], input: Record<string, unknown>, ctx: AgentContext) => Promise<AgentAnswer>;
68
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/mcp/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,WAAW,EAA4B,MAAM,4BAA4B,CAAA;AAC1G,OAAO,EAAE,KAAK,WAAW,EAAsB,MAAM,6BAA6B,CAAA;AAClF,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAiB,KAAK,KAAK,EAAY,KAAK,aAAa,EAAsB,MAAM,yBAAyB,CAAA;AAErH,oHAAoH;AACpH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACjE,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAA;IACrD,6FAA6F;IAC7F,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B,6FAA6F;IAC7F,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,aAAa,GAAG,IAAI,GAAG,SAAS,CAAA;IACrE,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAC7C;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAAA;AAEtE,qGAAqG;AACrG,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,8DAA8D;IAC9D,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,kFAAkF;IAClF,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAA;IACxC,oFAAoF;IACpF,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAA;IAC/C,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,aAAa,GAAG,IAAI,GAAG,SAAS,CAAA;IACrE,iDAAiD;IACjD,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,iGAAiG;IACjG,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAqHD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,aAAc,SAAS,WAAW,EAAE,YAAW,gBAAgB,KAAQ,SAAS,EAqB7G,CAAA;AAqBD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,YACpB,YAAY,QACf,SAAS,MAAM,EAAE,SAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OACzB,YAAY,KAChB,OAAO,CAAC,WAAW,CA+CrB,CAAA"}
@@ -0,0 +1,201 @@
1
+ import { Readable } from "node:stream";
2
+ import { CliError, captureStreams, errorObjectOf } from "@wirecat/cli-base";
3
+ import { flatten } from "@wirecat/cli-base/commands";
4
+ import { VOCABULARY, writes } from "@wirecat/cli-base/standards";
5
+ import * as v from "valibot";
6
+ import { lentConnection } from "../cli/messenger/serve-relay.js";
7
+ import { keyForCommand, levelFor, readKeysForCommand } from "../sends/permissions.js";
8
+ const TYPES = new Map(VOCABULARY.flags.map((flag) => [flag.name, flag.type]));
9
+ const snake = (name) => name.replaceAll("-", "_");
10
+ const longOf = (option) => option.flags.match(/--[a-z0-9][a-z0-9-]*/)?.[0];
11
+ const text = (description) => v.pipe(v.string(), v.minLength(1),
12
+ // `-` alone reads stdin, which is the MCP transport.
13
+ v.regex(/^(?!-$)[\s\S]+$/, "a value, and not only -"), v.description(description));
14
+ const optionKind = (option, long) => {
15
+ if (!option.takes_value)
16
+ return "switch";
17
+ if (option.choices)
18
+ return "text";
19
+ const type = TYPES.get(long);
20
+ if (type === "count" || type === "number" || type === "list")
21
+ return type;
22
+ return /\.\.\.[>\]]/.test(option.flags) ? "variadic" : "text";
23
+ };
24
+ const optionField = (option, long) => {
25
+ const kind = optionKind(option, long);
26
+ const about = option.description;
27
+ const schema = kind === "switch"
28
+ ? v.pipe(v.boolean(), v.description(about))
29
+ : option.choices
30
+ ? v.pipe(v.picklist(option.choices), v.description(about))
31
+ : kind === "count"
32
+ ? v.pipe(v.number(), v.integer(), v.minValue(1), v.description(about))
33
+ : kind === "number"
34
+ ? v.pipe(v.number(), v.description(about))
35
+ : kind === "list" || kind === "variadic"
36
+ ? v.pipe(v.array(text("one value")), v.minLength(1), v.description(about))
37
+ : text(about);
38
+ return {
39
+ name: snake(long.slice(2)),
40
+ required: option.mandatory,
41
+ schema,
42
+ positional: false,
43
+ argv: (value) => {
44
+ if (kind === "switch")
45
+ return value === true ? [long] : [];
46
+ if (kind === "variadic")
47
+ return value.map((one) => `${long}=${String(one)}`);
48
+ if (kind === "list")
49
+ return [`${long}=${value.map(String).join(",")}`];
50
+ return [`${long}=${String(value)}`];
51
+ },
52
+ };
53
+ };
54
+ const argumentField = (argument) => {
55
+ const one = argument.choices
56
+ ? v.pipe(v.picklist(argument.choices), v.description(argument.description))
57
+ : text(argument.description || argument.name);
58
+ return {
59
+ name: snake(argument.name),
60
+ required: argument.required,
61
+ schema: argument.variadic ? v.pipe(v.array(one), v.minLength(argument.required ? 1 : 0)) : one,
62
+ positional: true,
63
+ argv: (value) => (Array.isArray(value) ? value.map(String) : [String(value)]),
64
+ };
65
+ };
66
+ const OFFLINE = {
67
+ name: "offline",
68
+ required: false,
69
+ schema: v.pipe(v.boolean(), v.description("answer from the copy on this machine only")),
70
+ positional: false,
71
+ argv: (value) => (value === true ? ["--offline"] : []),
72
+ };
73
+ const fieldsOf = (info, { omit = [], offline = false }) => {
74
+ const fields = info.arguments.map(argumentField);
75
+ for (const option of info.options) {
76
+ const long = longOf(option);
77
+ if (!long || option.mcp === false)
78
+ continue;
79
+ fields.push(optionField(option, long));
80
+ }
81
+ if (offline && info.effects?.remote === "read")
82
+ fields.push(OFFLINE);
83
+ return fields.filter((field) => !omit.includes(field.name));
84
+ };
85
+ const schemaOf = (fields) => v.object(Object.fromEntries(fields.map((field) => [field.name, field.required ? field.schema : v.optional(field.schema)])));
86
+ const startsWith = (path, prefix) => prefix.every((word, at) => path[at] === word);
87
+ /** Why the profile refuses this command now, or nothing. */
88
+ const refusal = (info, levels, keyOf) => {
89
+ const key = keyOf?.(info.path) ?? keyForCommand(info.path);
90
+ const level = key ? levelFor(levels, key).level : "allow";
91
+ if (level === "deny")
92
+ return `the profile denies ${key}`;
93
+ if (level === "readonly" && writes(info.effects))
94
+ return `${key} is readonly in this profile`;
95
+ const denied = readKeysForCommand(info.path).find((read) => levelFor(levels, read).level === "deny");
96
+ return denied ? `the profile denies ${denied}` : undefined;
97
+ };
98
+ /**
99
+ * One tool per command an agent may run under `root` (NEED-1411): every leaf command, except one marked
100
+ * `mcp: false` (on itself or a group above it), one with a `lifetime` — an agent call must return — and one the
101
+ * profile's levels refuse. Its input is the command's arguments and options in snake_case, typed as far as the
102
+ * command tree and the shared flag vocabulary say; an option marked `mcp: false` is left out.
103
+ */
104
+ export const toolsFromCommands = (commands, options = {}) => {
105
+ const { root = [], exclude = [], levels, keyOf } = options;
106
+ return flatten(commands)
107
+ .filter((info) => info.commands.length === 0 &&
108
+ info.path.length > root.length &&
109
+ startsWith(info.path, root) &&
110
+ !exclude.some((skipped) => startsWith(info.path.slice(root.length), skipped)) &&
111
+ info.mcp !== false &&
112
+ info.lifetime === undefined &&
113
+ (levels === undefined || refusal(info, levels, keyOf) === undefined))
114
+ .map((info) => ({
115
+ command: info.path.slice(root.length).join(" "),
116
+ path: info.path,
117
+ title: info.summary ?? info.description,
118
+ description: info.description,
119
+ writes: writes(info.effects),
120
+ input: schemaOf(fieldsOf(info, options)),
121
+ }));
122
+ };
123
+ const argvOf = (info, input, profile) => {
124
+ const fields = fieldsOf(info, { offline: true });
125
+ const known = new Map(fields.map((field) => [field.name, field]));
126
+ for (const name of Object.keys(input))
127
+ if (!known.has(name))
128
+ throw new CliError("validation_error", `${info.path.join(" ")}: no argument "${name}"`);
129
+ const options = [];
130
+ const positionals = [];
131
+ for (const field of fields) {
132
+ const value = input[field.name];
133
+ if (value === undefined) {
134
+ if (field.required)
135
+ throw new CliError("validation_error", `${info.path.join(" ")}: "${field.name}" is required`);
136
+ continue;
137
+ }
138
+ for (const token of field.argv(value))
139
+ (field.positional ? positionals : options).push(token);
140
+ }
141
+ // Values never reach commander as tokens of their own, and positionals come after `--`: no value becomes a flag.
142
+ return [profile, ...info.path, ...options, "--json", ...(positionals.length > 0 ? ["--", ...positionals] : [])];
143
+ };
144
+ /**
145
+ * Runs one command for an agent through the CLI itself, in this process: the same parsing, guard, answer and
146
+ * error as on the command line. The answer comes back as the object the command rendered, and a failure as the
147
+ * error object the CLI would print. A write at level `ask` goes ahead (NEED-773); the server's stricter levels
148
+ * apply, to the check before the run and to the command's own guard. With `connection`, the command borrows the
149
+ * server's open connection and never opens one of its own. Which commands are offered is the catalogue's
150
+ * decision (`toolsFromCommands`); this runs what it is handed, except a command that never returns.
151
+ */
152
+ export const runCommandForAgent = async (program, path, input, ctx) => {
153
+ try {
154
+ const info = flatten(program.commands).find((one) => one.path.length === path.length && startsWith(one.path, path));
155
+ if (!info || info.commands.length > 0)
156
+ throw new CliError("validation_error", `no command "${path.join(" ")}" to run`);
157
+ if (info.lifetime)
158
+ throw new CliError("validation_error", `"${path.join(" ")}" runs until it is stopped; an agent call must return`);
159
+ const levels = ctx.levels?.();
160
+ const refused = levels && refusal(info, levels, ctx.keyOf);
161
+ if (refused)
162
+ throw new CliError("permission_error", `${path.join(" ")}: ${refused}`, { sent: false });
163
+ const argv = argvOf(info, input, ctx.profile);
164
+ const borrowed = ctx.connection ? lentConnection(await ctx.connection()) : undefined;
165
+ let answered = false;
166
+ let result;
167
+ let failure;
168
+ const streams = captureStreams();
169
+ const code = await program.run(argv, {
170
+ streams,
171
+ tty: false,
172
+ ...(ctx.env ? { env: ctx.env } : {}),
173
+ stdin: Readable.from([]),
174
+ answer: () => null,
175
+ agent: {
176
+ result: (value) => {
177
+ answered = true;
178
+ result = value;
179
+ },
180
+ failure: (object) => {
181
+ failure = object;
182
+ },
183
+ ...(ctx.overrides?.length ? { overrides: ctx.overrides } : {}),
184
+ },
185
+ ...(borrowed ? { relayed: { profile: ctx.profile, cwd: process.cwd(), connection: () => borrowed } } : {}),
186
+ });
187
+ if (failure)
188
+ return { error: failure };
189
+ if (answered)
190
+ return { result };
191
+ if (code !== 0)
192
+ throw new CliError("invalid_response", `the command exited with ${code} and said nothing`);
193
+ if (streams.stdout.length > 0)
194
+ throw new CliError("invalid_response", "the command printed its answer instead of handing it over — the CLI's run must pass its whole environment on");
195
+ return { result: null };
196
+ }
197
+ catch (error) {
198
+ return { error: errorObjectOf(error) };
199
+ }
200
+ };
201
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/mcp/agent.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,25 @@
1
1
  import { McpServer } from "@modelcontextprotocol/server";
2
- import { type Streams } from "@wirecat/cli-base";
3
2
  import type { BotMessenger } from "../../cli/bot/port.js";
4
3
  import type { Settings } from "../../cli/settings.js";
5
- import { type BotTool } from "./tools.js";
6
- /** The CLI's own `run`, which cli-core cannot import: each tool is one run of a bot command. */
7
- export type RunBotCommand = (argv: string[], environment: {
8
- streams: Streams;
9
- tty: false;
10
- env: NodeJS.ProcessEnv;
11
- answer?: (question: string) => string | null;
12
- }) => Promise<number>;
4
+ import type { Level, PermissionKey } from "../../sends/permissions.js";
5
+ import { type AgentProgram } from "../agent.js";
6
+ /** The CLI's own `run`, which cli-core cannot import. It must pass the whole environment it is given on. */
7
+ export type RunBotCommand = AgentProgram["run"];
13
8
  export interface BotServerOptions {
14
9
  bot: BotMessenger;
15
- /**
16
- * The mounted `bot` command at these words, and whether it (or a group above it) takes a flag —
17
- * a tool is offered only when its command is there.
18
- */
19
- commandAt: (words: readonly string[]) => {
20
- accepts: (flag: string) => boolean;
21
- } | undefined;
10
+ /** The CLI's `run` and its whole command tree; the tools are the commands under `bot`. */
11
+ program: AgentProgram;
22
12
  settings: Pick<Settings, "profile" | "permissions" | "readOtherBots">;
13
+ /** The levels in force now, read before every call; `settings.permissions` when unset. */
14
+ levels?: () => Readonly<Record<PermissionKey, Level>>;
15
+ /** The key a CLI's own bot command is guarded by, from its full path, when `keyForCommand` does not know it. */
16
+ keyOf?: (path: readonly string[]) => PermissionKey | null | undefined;
23
17
  env: NodeJS.ProcessEnv;
24
- run: RunBotCommand;
25
- /** The CLI's own tools, beside the shared ones; one with the same words replaces the shared one. */
26
- tools?: readonly BotTool[];
27
18
  skill?: URL;
28
19
  }
29
- export declare const botToolName: (command: string, words: readonly string[]) => string;
30
20
  export declare const createBotServer: (options: BotServerOptions) => {
31
21
  build: () => McpServer;
22
+ tools: import("../agent.js").AgentTool[];
32
23
  offered: string[];
33
24
  };
34
25
  /** Serves until the client closes stdin or the process is told to stop; returning lets the process exit. */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/bot/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAwC,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAGtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAIzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAKrD,OAAO,EAAa,KAAK,OAAO,EAAgD,MAAM,YAAY,CAAA;AAElG,gGAAgG;AAChG,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,EAAE;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,KAAK,CAAA;IACV,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;CAC7C,KACE,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,YAAY,CAAA;IACjB;;;OAGG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK;QAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;KAAE,GAAG,SAAS,CAAA;IAC3F,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,aAAa,GAAG,eAAe,CAAC,CAAA;IACrE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,GAAG,EAAE,aAAa,CAAA;IAClB,oGAAoG;IACpG,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAA;CACZ;AAED,eAAO,MAAM,WAAW,YAAa,MAAM,SAAS,SAAS,MAAM,EAAE,KAAG,MACd,CAAA;AAqD1D,eAAO,MAAM,eAAe,YAAa,gBAAgB;iBAgCrC,SAAS;;CA0D5B,CAAA;AAED,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,YAAmB,gBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAAG,OAAO,CAAC,IAAI,CAUhH,CAAA"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/bot/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAM7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAoB,KAAK,YAAY,EAAyC,MAAM,aAAa,CAAA;AAMxG,4GAA4G;AAC5G,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,YAAY,CAAA;IACjB,0FAA0F;IAC1F,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,aAAa,GAAG,eAAe,CAAC,CAAA;IACrE,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAA;IACrD,gHAAgH;IAChH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,aAAa,GAAG,IAAI,GAAG,SAAS,CAAA;IACrE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,GAAG,CAAA;CACZ;AAUD,eAAO,MAAM,eAAe,YAAa,gBAAgB;iBA8BrC,SAAS;;;CAsD5B,CAAA;AAED,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,YAAmB,gBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAAG,OAAO,CAAC,IAAI,CAUhH,CAAA"}
@@ -1,89 +1,46 @@
1
1
  import { McpServer } from "@modelcontextprotocol/server";
2
2
  import { serveStdio } from "@modelcontextprotocol/server/stdio";
3
- import { CliError, captureStreams, isCliError } from "@wirecat/cli-base";
3
+ import { mcpErrorResult } from "@wirecat/cli-base";
4
4
  import { skillResource } from "@wirecat/cli-base/skill";
5
5
  import * as v from "valibot";
6
6
  import { itemOf } from "../../cli/envelope.js";
7
- import { skipFlagFor } from "../../cli/messenger/ask.js";
8
7
  import { wholeList } from "../../cli/messenger/chat-answers.js";
9
- import { keyForCommand, levelFor } from "../../sends/permissions.js";
8
+ import { runCommandForAgent, toolsFromCommands } from "../agent.js";
10
9
  import { registerCommands } from "../surface.js";
10
+ import { agentJson } from "../text.js";
11
11
  import { answered } from "../tool.js";
12
12
  import { botInstructions } from "./instructions.js";
13
- import { BOT_TOOLS, withAcross } from "./tools.js";
14
- export const botToolName = (command, words) => `${command}_bot_${words.join("_").replaceAll("-", "_")}`;
15
- const parsed = (text) => {
16
- if (text.trim() === "")
17
- return null;
18
- try {
19
- return JSON.parse(text);
20
- }
21
- catch {
22
- return text
23
- .split("\n")
24
- .filter((line) => line.trim() !== "")
25
- .map((line) => JSON.parse(line));
26
- }
27
- };
28
- /** A command's `--json` answer is already an envelope; anything else — a CLI's own tool — is wrapped as one. */
29
- const body = (words, value) => Array.isArray(value)
30
- ? wholeList(["bot", ...words].join(" "), value)
13
+ /** A command's `--json` answer is already an envelope; a bare list or value is wrapped as one. */
14
+ const body = (command, value) => Array.isArray(value)
15
+ ? wholeList(`bot ${command}`, value)
31
16
  : value !== null && typeof value === "object" && ("item" in value || "items" in value)
32
17
  ? value
33
18
  : itemOf(value !== null && typeof value === "object" ? value : { value });
34
- /**
35
- * Runs bot commands in this process and returns their `--json` answers. A command never sees a
36
- * terminal: stdin is the MCP transport. Calls are queued — they share the journal, the registry and
37
- * the local copy.
38
- */
39
- const runner = ({ settings, run, env }) => {
40
- let queue = Promise.resolve();
41
- const profile = [settings.profile];
42
- const once = async (words, { options = [], positionals = [] }, answer) => {
43
- const streams = captureStreams();
44
- const argv = [...profile, "bot", ...words, ...options, "--json", "--", ...positionals];
45
- const code = await run(argv, { streams, tty: false, env, ...(answer ? { answer } : {}) });
46
- if (code === 0)
47
- return parsed(streams.stdout.join("\n"));
48
- const error = parsed(streams.stderr.at(-1) ?? "")?.error;
49
- throw new CliError((error?.code ?? "generic_failure"), error?.message ?? `the command exited with ${code}`, error);
50
- };
51
- return (words, invocation, answer) => {
52
- const next = queue.then(() => once(words, invocation, answer));
53
- queue = next.catch(() => undefined);
54
- return next;
55
- };
56
- };
57
19
  export const createBotServer = (options) => {
58
- const { bot, commandAt, settings } = options;
20
+ const { bot, program, settings, env } = options;
59
21
  const command = bot.app.command;
60
- const invoke = runner(options);
61
- const keyOf = (tool) => tool.writes ?? keyForCommand(["bot", ...tool.words]);
62
- const levelOf = (tool) => {
63
- const key = keyOf(tool);
64
- return key ? levelFor(settings.permissions, key).level : "allow";
65
- };
66
- const byName = new Map();
67
- for (const tool of [...BOT_TOOLS, ...(options.tools ?? [])])
68
- byName.set(botToolName(command, tool.words), tool);
69
- // A tool the level would refuse is not offered: an agent is not handed a tool that cannot work.
70
- const offered = [...byName]
71
- .filter(([, tool]) => {
72
- const level = levelOf(tool);
73
- return commandAt(tool.words) !== undefined && level !== "deny" && !(tool.writes && level === "readonly");
74
- })
75
- .map(([name, tool]) => [name, tool.across && settings.readOtherBots ? withAcross(tool) : tool]);
76
- const writes = offered.filter(([, tool]) => tool.writes).map(([, tool]) => tool.words.join(" "));
77
- const kit = { invoke };
22
+ const levels = options.levels ?? (() => settings.permissions);
23
+ const tools = toolsFromCommands(program.commands, {
24
+ root: ["bot"],
25
+ levels: settings.permissions,
26
+ ...(options.keyOf ? { keyOf: options.keyOf } : {}),
27
+ offline: true,
28
+ // Another bot's copy is this bot's to read only where `read_other_bots` says so.
29
+ ...(settings.readOtherBots ? {} : { omit: ["all_bots", "bots"] }),
30
+ });
31
+ const writes = tools.filter((tool) => tool.writes).map((tool) => tool.command);
78
32
  const skill = options.skill ? skillResource(bot.app, options.skill) : undefined;
79
- /** The flag that answers the command's own question for a write at level `ask`, when the command takes it. */
80
- const answerFlag = (tool) => {
81
- const key = keyOf(tool);
82
- const target = commandAt(tool.words);
83
- if (!key || !target || levelOf(tool) !== "ask")
84
- return [];
85
- const flag = skipFlagFor(key);
86
- return target.accepts(flag) ? [flag] : [];
33
+ // One at a time: the commands share the journal, the registry and the local copy.
34
+ let queue = Promise.resolve();
35
+ const invoke = (path, input) => {
36
+ const next = queue.then(() => runCommandForAgent(program, path, input, {
37
+ profile: settings.profile,
38
+ env,
39
+ levels,
40
+ ...(options.keyOf ? { keyOf: options.keyOf } : {}),
41
+ }));
42
+ queue = next.catch(() => undefined);
43
+ return next;
87
44
  };
88
45
  const build = () => {
89
46
  const server = new McpServer({ name: `${command}-bot-${settings.profile}`, version: bot.app.version }, {
@@ -99,18 +56,18 @@ export const createBotServer = (options) => {
99
56
  const { uri, name, title, description, mimeType, read } = skill;
100
57
  server.registerResource(name, uri, { title, description, mimeType }, read);
101
58
  }
102
- const commands = Object.fromEntries(offered.map(([, tool]) => [
103
- tool.words.join(" "),
59
+ const commands = Object.fromEntries(tools.map((tool) => [
60
+ tool.command,
104
61
  {
105
62
  title: tool.title,
106
63
  description: tool.description,
107
- writes: tool.writes !== undefined,
64
+ writes: tool.writes,
108
65
  input: tool.input,
109
- run: async (args, ctx) => {
110
- if (tool.handle)
111
- return answered(body(tool.words, await tool.handle(args, { ...kit, answerFlags: answerFlag(tool) }, ctx)));
112
- const { options: own = [], positionals = [] } = tool.invocation?.(args) ?? {};
113
- return answered(body(tool.words, await invoke(tool.words, { options: [...own, ...answerFlag(tool)], positionals })));
66
+ run: async (args) => {
67
+ const answer = await invoke(tool.path, args);
68
+ return "error" in answer
69
+ ? mcpErrorResult(JSON.parse(agentJson(answer.error)))
70
+ : answered(body(tool.command, answer.result));
114
71
  },
115
72
  },
116
73
  ]));
@@ -121,15 +78,15 @@ export const createBotServer = (options) => {
121
78
  writes: false,
122
79
  input: v.object({}),
123
80
  run: async () => {
124
- const auth = await invoke(["auth", "show"], {}).catch((error) => isCliError(error) ? { error: { code: error.code, message: error.message } } : { error: String(error) });
125
- const shown = auth.item ?? auth;
81
+ const auth = await invoke(["bot", "auth", "show"], {});
82
+ const shown = "error" in auth ? auth.error : (auth.result?.item ?? auth.result);
126
83
  return answered(itemOf({ profile: settings.profile, kind: "bot", auth: shown, writes, permissions: settings.permissions }));
127
84
  },
128
85
  };
129
86
  registerCommands(server, `${command}_bot`, commands);
130
87
  return server;
131
88
  };
132
- return { build, offered: offered.map(([name]) => name) };
89
+ return { build, tools, offered: tools.map((tool) => tool.command) };
133
90
  };
134
91
  /** Serves until the client closes stdin or the process is told to stop; returning lets the process exit. */
135
92
  export const serveBotOverStdio = async (options, note) => {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/bot/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/bot/server.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- export { type BotServerOptions, botToolName, createBotServer, type RunBotCommand } from "./bot/server.js";
1
+ export { type AgentAnswer, type AgentContext, type AgentProgram, type AgentTool, type CatalogueOptions, runCommandForAgent, toolsFromCommands, } from "./agent.js";
2
+ export { type BotServerOptions, createBotServer, type RunBotCommand } from "./bot/server.js";
2
3
  export { revokeAll } from "./http/oauth.js";
3
4
  export { type HttpOptions, MCP_PATH, serveOverHttp } from "./http/serve.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACzG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,KAAK,gBAAgB,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/mcp/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // Apart from the `cli` entry, so a CLI loads the MCP SDK and zod only when it serves MCP.
2
- export { botToolName, createBotServer } from "./bot/server.js";
2
+ export { runCommandForAgent, toolsFromCommands, } from "./agent.js";
3
+ export { createBotServer } from "./bot/server.js";
3
4
  export { revokeAll } from "./http/oauth.js";
4
5
  export { MCP_PATH, serveOverHttp } from "./http/serve.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,EAAyB,WAAW,EAAE,eAAe,EAAsB,MAAM,iBAAiB,CAAA;AACzG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAoB,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,EAML,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAyB,eAAe,EAAsB,MAAM,iBAAiB,CAAA;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAoB,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}