indusagi-coding-agent 0.2.3 → 0.2.5

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 (260) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/LICENSE +661 -0
  3. package/README.md +95 -1
  4. package/dist/entry.js +3205 -1585
  5. package/dist/guardrails.js +47 -515
  6. package/dist/index.js +3232 -1671
  7. package/package.json +8 -7
  8. package/dist/types/addons/addons.test.d.ts +0 -21
  9. package/dist/types/addons/contract.d.ts +0 -640
  10. package/dist/types/addons/dispatch/event-dispatcher.d.ts +0 -140
  11. package/dist/types/addons/dispatch/index.d.ts +0 -23
  12. package/dist/types/addons/dispatch/tool-interceptor.d.ts +0 -128
  13. package/dist/types/addons/host.d.ts +0 -246
  14. package/dist/types/addons/index.d.ts +0 -51
  15. package/dist/types/addons/manifest.d.ts +0 -56
  16. package/dist/types/addons/sandbox.d.ts +0 -103
  17. package/dist/types/addons/surface.d.ts +0 -42
  18. package/dist/types/boot/auth-vault.d.ts +0 -29
  19. package/dist/types/boot/boot.d.ts +0 -26
  20. package/dist/types/boot/boot.test.d.ts +0 -15
  21. package/dist/types/boot/contract.d.ts +0 -236
  22. package/dist/types/boot/index.d.ts +0 -20
  23. package/dist/types/boot/invocation.d.ts +0 -40
  24. package/dist/types/boot/invocation.test.d.ts +0 -8
  25. package/dist/types/boot/runners/addon-wiring.d.ts +0 -103
  26. package/dist/types/boot/runners/addon-wiring.test.d.ts +0 -19
  27. package/dist/types/boot/runners/checkpoint.d.ts +0 -133
  28. package/dist/types/boot/runners/checkpoint.test.d.ts +0 -12
  29. package/dist/types/boot/runners/delegate-runner.d.ts +0 -89
  30. package/dist/types/boot/runners/delegate-runner.test.d.ts +0 -13
  31. package/dist/types/boot/runners/index.d.ts +0 -13
  32. package/dist/types/boot/runners/link-runner.d.ts +0 -20
  33. package/dist/types/boot/runners/memdir.d.ts +0 -103
  34. package/dist/types/boot/runners/memdir.test.d.ts +0 -12
  35. package/dist/types/boot/runners/oneshot-runner.d.ts +0 -19
  36. package/dist/types/boot/runners/read-state.d.ts +0 -82
  37. package/dist/types/boot/runners/read-state.test.d.ts +0 -10
  38. package/dist/types/boot/runners/registry.d.ts +0 -30
  39. package/dist/types/boot/runners/repl-runner.d.ts +0 -19
  40. package/dist/types/boot/runners/session-persist.test.d.ts +0 -10
  41. package/dist/types/boot/runners/session.d.ts +0 -65
  42. package/dist/types/boot/runners/session.test.d.ts +0 -10
  43. package/dist/types/boot/stages.d.ts +0 -92
  44. package/dist/types/boot/upgrade/apply.d.ts +0 -45
  45. package/dist/types/boot/upgrade/index.d.ts +0 -13
  46. package/dist/types/boot/upgrade/upgrades.d.ts +0 -126
  47. package/dist/types/briefing/briefing.test.d.ts +0 -15
  48. package/dist/types/briefing/compose.d.ts +0 -37
  49. package/dist/types/briefing/context-docs.d.ts +0 -38
  50. package/dist/types/briefing/context-docs.test.d.ts +0 -18
  51. package/dist/types/briefing/contract.d.ts +0 -686
  52. package/dist/types/briefing/index.d.ts +0 -29
  53. package/dist/types/briefing/macros.d.ts +0 -206
  54. package/dist/types/briefing/skills.d.ts +0 -67
  55. package/dist/types/capability-deck/bridge-ledger/index.d.ts +0 -25
  56. package/dist/types/capability-deck/bridge-ledger/key.d.ts +0 -65
  57. package/dist/types/capability-deck/bridge-ledger/ledger.d.ts +0 -129
  58. package/dist/types/capability-deck/bridge-ledger/network.d.ts +0 -115
  59. package/dist/types/capability-deck/builtin-bridge.d.ts +0 -114
  60. package/dist/types/capability-deck/capability-deck.test.d.ts +0 -18
  61. package/dist/types/capability-deck/cards/bg-process-card.d.ts +0 -99
  62. package/dist/types/capability-deck/cards/index.d.ts +0 -37
  63. package/dist/types/capability-deck/cards/memory-card.d.ts +0 -68
  64. package/dist/types/capability-deck/cards/plan-file.d.ts +0 -56
  65. package/dist/types/capability-deck/cards/plan-tools.d.ts +0 -97
  66. package/dist/types/capability-deck/cards/plan-tools.test.d.ts +0 -9
  67. package/dist/types/capability-deck/cards/saas-card.d.ts +0 -78
  68. package/dist/types/capability-deck/cards/task-card.d.ts +0 -106
  69. package/dist/types/capability-deck/cards/todo-card.d.ts +0 -78
  70. package/dist/types/capability-deck/cards/workflow-card.d.ts +0 -55
  71. package/dist/types/capability-deck/cards/workflow-card.test.d.ts +0 -12
  72. package/dist/types/capability-deck/checkpoint.int.test.d.ts +0 -25
  73. package/dist/types/capability-deck/contract.d.ts +0 -317
  74. package/dist/types/capability-deck/index.d.ts +0 -46
  75. package/dist/types/capability-deck/manifest.d.ts +0 -60
  76. package/dist/types/capability-deck/provision.d.ts +0 -76
  77. package/dist/types/capability-deck/read-edit-gate.int.test.d.ts +0 -21
  78. package/dist/types/channels/channels.test.d.ts +0 -15
  79. package/dist/types/channels/contract.d.ts +0 -489
  80. package/dist/types/channels/framer.d.ts +0 -49
  81. package/dist/types/channels/index.d.ts +0 -24
  82. package/dist/types/channels/link/dialog.d.ts +0 -138
  83. package/dist/types/channels/link/driver.d.ts +0 -81
  84. package/dist/types/channels/link/index.d.ts +0 -13
  85. package/dist/types/channels/link/server.d.ts +0 -70
  86. package/dist/types/channels/oneshot.d.ts +0 -37
  87. package/dist/types/channels/ops.d.ts +0 -89
  88. package/dist/types/channels/session-ops.d.ts +0 -80
  89. package/dist/types/conductor/bash-guard.d.ts +0 -106
  90. package/dist/types/conductor/bash-guard.test.d.ts +0 -17
  91. package/dist/types/conductor/catalog/catalog.d.ts +0 -87
  92. package/dist/types/conductor/catalog/index.d.ts +0 -14
  93. package/dist/types/conductor/catalog/matcher.d.ts +0 -47
  94. package/dist/types/conductor/conductor.d.ts +0 -189
  95. package/dist/types/conductor/conductor.test.d.ts +0 -10
  96. package/dist/types/conductor/contract.d.ts +0 -774
  97. package/dist/types/conductor/diagnostics.d.ts +0 -183
  98. package/dist/types/conductor/diagnostics.test.d.ts +0 -10
  99. package/dist/types/conductor/index.d.ts +0 -26
  100. package/dist/types/conductor/permission-gate.integration.test.d.ts +0 -22
  101. package/dist/types/conductor/permission-wiring.test.d.ts +0 -14
  102. package/dist/types/conductor/permissions.d.ts +0 -217
  103. package/dist/types/conductor/permissions.test.d.ts +0 -12
  104. package/dist/types/conductor/plan-mode.integration.test.d.ts +0 -23
  105. package/dist/types/conductor/post-edit-diagnostics.test.d.ts +0 -13
  106. package/dist/types/conductor/signal-hub/hub.d.ts +0 -83
  107. package/dist/types/conductor/signal-hub/index.d.ts +0 -19
  108. package/dist/types/conductor/signal-hub/translate.d.ts +0 -77
  109. package/dist/types/conductor/skill-parse/index.d.ts +0 -10
  110. package/dist/types/conductor/skill-parse/parse.d.ts +0 -67
  111. package/dist/types/conductor/submit.test.d.ts +0 -28
  112. package/dist/types/conductor/transcript-store/index.d.ts +0 -16
  113. package/dist/types/conductor/transcript-store/serialize.d.ts +0 -106
  114. package/dist/types/conductor/transcript-store/serialize.test.d.ts +0 -10
  115. package/dist/types/conductor/transcript-store/store.d.ts +0 -188
  116. package/dist/types/console/components/AgentsView.d.ts +0 -41
  117. package/dist/types/console/components/BackgroundAgents.d.ts +0 -63
  118. package/dist/types/console/components/BackgroundAgents.test.d.ts +0 -8
  119. package/dist/types/console/components/Banner.d.ts +0 -110
  120. package/dist/types/console/components/Composer.d.ts +0 -37
  121. package/dist/types/console/components/StatusBar.d.ts +0 -42
  122. package/dist/types/console/components/TerminalConsole.d.ts +0 -32
  123. package/dist/types/console/components/WorkingIndicator.d.ts +0 -44
  124. package/dist/types/console/components/WorkingIndicator.test.d.ts +0 -9
  125. package/dist/types/console/components/banner-sweep.d.ts +0 -55
  126. package/dist/types/console/components/banner.test.d.ts +0 -9
  127. package/dist/types/console/components/welcome.d.ts +0 -115
  128. package/dist/types/console/components/welcome.test.d.ts +0 -9
  129. package/dist/types/console/console.test.d.ts +0 -19
  130. package/dist/types/console/contract.d.ts +0 -598
  131. package/dist/types/console/index.d.ts +0 -34
  132. package/dist/types/console/input/complete.d.ts +0 -120
  133. package/dist/types/console/input/dir-reader.d.ts +0 -28
  134. package/dist/types/console/input/index.d.ts +0 -24
  135. package/dist/types/console/input/input.test.d.ts +0 -14
  136. package/dist/types/console/input/keymap.d.ts +0 -193
  137. package/dist/types/console/input/paste.d.ts +0 -131
  138. package/dist/types/console/mount.d.ts +0 -53
  139. package/dist/types/console/overlays/approval-queue.d.ts +0 -71
  140. package/dist/types/console/overlays/approval.d.ts +0 -104
  141. package/dist/types/console/overlays/approval.test.d.ts +0 -17
  142. package/dist/types/console/overlays/auth.d.ts +0 -31
  143. package/dist/types/console/overlays/boards.d.ts +0 -55
  144. package/dist/types/console/overlays/host.d.ts +0 -45
  145. package/dist/types/console/overlays/index.d.ts +0 -15
  146. package/dist/types/console/overlays/pickers.d.ts +0 -37
  147. package/dist/types/console/overlays/sessions.d.ts +0 -29
  148. package/dist/types/console/reducer.d.ts +0 -51
  149. package/dist/types/console/slash/builtins.d.ts +0 -33
  150. package/dist/types/console/slash/commands/dynamic.d.ts +0 -57
  151. package/dist/types/console/slash/commands/dynamic.test.d.ts +0 -9
  152. package/dist/types/console/slash/commands/integrations.d.ts +0 -28
  153. package/dist/types/console/slash/commands/integrations.test.d.ts +0 -18
  154. package/dist/types/console/slash/commands/shared.d.ts +0 -72
  155. package/dist/types/console/slash/commands/transcript.d.ts +0 -24
  156. package/dist/types/console/slash/commands/transcript.test.d.ts +0 -10
  157. package/dist/types/console/slash/commands/workbench.d.ts +0 -21
  158. package/dist/types/console/slash/commands/workbench.test.d.ts +0 -10
  159. package/dist/types/console/slash/index.d.ts +0 -34
  160. package/dist/types/console/slash/registry.d.ts +0 -90
  161. package/dist/types/console/slash/resolve.d.ts +0 -109
  162. package/dist/types/console/slash/slash.test.d.ts +0 -18
  163. package/dist/types/console/startup.d.ts +0 -119
  164. package/dist/types/console/theme/adapter.d.ts +0 -79
  165. package/dist/types/console/theme/index.d.ts +0 -18
  166. package/dist/types/console/theme/palette.d.ts +0 -77
  167. package/dist/types/console/theme/resolve.d.ts +0 -45
  168. package/dist/types/console/theme/theme.test.d.ts +0 -16
  169. package/dist/types/console/theme/tokens.d.ts +0 -62
  170. package/dist/types/entry.d.ts +0 -17
  171. package/dist/types/guardrails.d.ts +0 -33
  172. package/dist/types/index.d.ts +0 -24
  173. package/dist/types/insight/channel.d.ts +0 -45
  174. package/dist/types/insight/contract.d.ts +0 -411
  175. package/dist/types/insight/index.d.ts +0 -26
  176. package/dist/types/insight/insight.test.d.ts +0 -17
  177. package/dist/types/insight/recorder.d.ts +0 -63
  178. package/dist/types/insight/redaction.d.ts +0 -44
  179. package/dist/types/insight/replay.d.ts +0 -77
  180. package/dist/types/insight/sampling.d.ts +0 -84
  181. package/dist/types/insight/serialize.d.ts +0 -54
  182. package/dist/types/insight/sinks/console.d.ts +0 -36
  183. package/dist/types/insight/sinks/file.d.ts +0 -37
  184. package/dist/types/insight/sinks/index.d.ts +0 -16
  185. package/dist/types/insight/sinks/stream.d.ts +0 -53
  186. package/dist/types/kit/clipboard-image.d.ts +0 -40
  187. package/dist/types/kit/external-editor.d.ts +0 -35
  188. package/dist/types/kit/image.d.ts +0 -102
  189. package/dist/types/kit/index.d.ts +0 -29
  190. package/dist/types/kit/kit.test.d.ts +0 -13
  191. package/dist/types/kit/shell.d.ts +0 -50
  192. package/dist/types/kit/tool-fetch.d.ts +0 -165
  193. package/dist/types/launch/catalog.d.ts +0 -51
  194. package/dist/types/launch/contract.d.ts +0 -387
  195. package/dist/types/launch/credentials.d.ts +0 -112
  196. package/dist/types/launch/index.d.ts +0 -28
  197. package/dist/types/launch/invocation/attachments.d.ts +0 -72
  198. package/dist/types/launch/invocation/flags.d.ts +0 -59
  199. package/dist/types/launch/invocation/index.d.ts +0 -23
  200. package/dist/types/launch/invocation/read.d.ts +0 -52
  201. package/dist/types/launch/invocation/usage.d.ts +0 -25
  202. package/dist/types/launch/launch.test.d.ts +0 -20
  203. package/dist/types/launch/oauth.d.ts +0 -101
  204. package/dist/types/launch/packages.d.ts +0 -75
  205. package/dist/types/launch/packages.test.d.ts +0 -15
  206. package/dist/types/launch/pickers.d.ts +0 -97
  207. package/dist/types/runtime-bridge/bridges/_drive.d.ts +0 -74
  208. package/dist/types/runtime-bridge/bridges/builtins.d.ts +0 -77
  209. package/dist/types/runtime-bridge/bridges/claude-cli.d.ts +0 -37
  210. package/dist/types/runtime-bridge/bridges/codex-cli.d.ts +0 -27
  211. package/dist/types/runtime-bridge/bridges/index.d.ts +0 -15
  212. package/dist/types/runtime-bridge/bridges/indusagi-cli.d.ts +0 -36
  213. package/dist/types/runtime-bridge/broker.d.ts +0 -182
  214. package/dist/types/runtime-bridge/contract.d.ts +0 -436
  215. package/dist/types/runtime-bridge/index.d.ts +0 -21
  216. package/dist/types/runtime-bridge/runtime-bridge.test.d.ts +0 -17
  217. package/dist/types/runtime-bridge/sink.d.ts +0 -59
  218. package/dist/types/sessions/contract.d.ts +0 -79
  219. package/dist/types/sessions/index.d.ts +0 -11
  220. package/dist/types/sessions/library.d.ts +0 -95
  221. package/dist/types/sessions/sessions.test.d.ts +0 -11
  222. package/dist/types/settings/contract.d.ts +0 -175
  223. package/dist/types/settings/index.d.ts +0 -13
  224. package/dist/types/settings/manager.d.ts +0 -109
  225. package/dist/types/settings/settings.test.d.ts +0 -16
  226. package/dist/types/transcript-export/index.d.ts +0 -20
  227. package/dist/types/transcript-export/publish.d.ts +0 -81
  228. package/dist/types/transcript-export/sgr.d.ts +0 -90
  229. package/dist/types/transcript-export/template.d.ts +0 -64
  230. package/dist/types/transcript-export/theme-bridge.d.ts +0 -99
  231. package/dist/types/transcript-export/transcript-export.test.d.ts +0 -16
  232. package/dist/types/window-budget/budget/estimate.d.ts +0 -47
  233. package/dist/types/window-budget/budget/gate.d.ts +0 -37
  234. package/dist/types/window-budget/budget/index.d.ts +0 -14
  235. package/dist/types/window-budget/budget/slice.d.ts +0 -38
  236. package/dist/types/window-budget/condenser.d.ts +0 -73
  237. package/dist/types/window-budget/contract.d.ts +0 -182
  238. package/dist/types/window-budget/index.d.ts +0 -17
  239. package/dist/types/window-budget/microcompact.d.ts +0 -68
  240. package/dist/types/window-budget/microcompact.test.d.ts +0 -16
  241. package/dist/types/window-budget/rehydrate.d.ts +0 -56
  242. package/dist/types/window-budget/summarize/condense.d.ts +0 -70
  243. package/dist/types/window-budget/summarize/index.d.ts +0 -12
  244. package/dist/types/window-budget/summarize/prompt.d.ts +0 -56
  245. package/dist/types/window-budget/window-budget.test.d.ts +0 -18
  246. package/dist/types/workflow-engine/agent-runner.d.ts +0 -105
  247. package/dist/types/workflow-engine/agent-runner.test.d.ts +0 -8
  248. package/dist/types/workflow-engine/display.d.ts +0 -148
  249. package/dist/types/workflow-engine/display.test.d.ts +0 -1
  250. package/dist/types/workflow-engine/engine.d.ts +0 -183
  251. package/dist/types/workflow-engine/engine.test.d.ts +0 -1
  252. package/dist/types/workflow-engine/index.d.ts +0 -21
  253. package/dist/types/workflow-engine/parse.d.ts +0 -64
  254. package/dist/types/workflow-engine/parse.test.d.ts +0 -1
  255. package/dist/types/workflow-engine/structured-output.d.ts +0 -51
  256. package/dist/types/workflow-engine/structured-output.test.d.ts +0 -1
  257. package/dist/types/workspace/brand.d.ts +0 -26
  258. package/dist/types/workspace/index.d.ts +0 -11
  259. package/dist/types/workspace/locator.d.ts +0 -50
  260. package/dist/types/workspace/runtime-detect.d.ts +0 -56
@@ -1,29 +0,0 @@
1
- /**
2
- * Briefing subsystem — public barrel.
3
- *
4
- * Re-exports the FROZEN prompt-and-presentation contract: the declarative
5
- * system-prompt pipeline ({@link BriefingSection} over a {@link BriefingContext},
6
- * composed by `composeBriefing`), the single-pass `$arg` macro model
7
- * ({@link Macro}, {@link MacroScope}, {@link MacroToken}), the Agent-Skills
8
- * capability cards ({@link SkillCard} parsed from a `SKILL.md`), the table-driven
9
- * SGR machine ({@link SgrState}, {@link SgrToken}, {@link SgrMutation}), and the
10
- * HTML-transcript color layer ({@link ExportTheme} behind a {@link ThemeBridge}
11
- * with a {@link LuminanceLut}) plus the publish surface.
12
- *
13
- * Behavior modules land in this barrel as they are written. Currently exported:
14
- * the declarative section composer (`composeBriefing` over `BRIEFING_SECTIONS`),
15
- * the single-pass `$arg` macro scanner + loader (`loadMacros`, `applyMacros`,
16
- * and friends), and the Agent-Skills capability-card loader (`loadSkillCards`,
17
- * `gatherSkillCards`). The SGR painter, theme bridge, and transcript publisher
18
- * are added here as they land. Consumers import the briefing surface from
19
- * `src/briefing` rather than reaching into individual modules.
20
- */
21
- export type { BriefingContext, BriefingSection, Briefing, BriefingInputs, SubagentBrief, ContextDoc, MacroOrigin, Macro, MacroScope, MacroTokenKind, MacroToken, SkillFrontmatter, SkillCard, SkillOutcomeKind, SkillDiagnostic, SkillLoad, SgrState, SgrToken, SgrMutation, ExportTheme, Rgb, LuminanceLut, ThemeMode, ThemeBridge, TranscriptPart, WidgetRender, PublishOptions, ShellSlot, BriefingFaultKind, BriefingFault, AgentState, AgentTool, TextContent, ImageContent, } from "./contract";
22
- export { SKILL_NAME_LIMIT, SKILL_DESCRIPTION_LIMIT, SGR_INITIAL_STATE, FALLBACK_EXPORT_THEME, SHELL_SLOTS, briefingFault, } from "./contract";
23
- export { BRIEFING_SECTIONS, composeBriefing } from "./compose";
24
- export { scanMacroBody, resolveTokens, applyMacros, buildMacroScope, expandInvocation, loadMacros, readMacroFile, splitFrontmatter, } from "./macros";
25
- export type { LoadMacrosOptions, FrontmatterSplit } from "./macros";
26
- export { loadSkillCards, gatherSkillCards, modelInvocableCards, } from "./skills";
27
- export type { SkillRoot } from "./skills";
28
- export { gatherContextDocs } from "./context-docs";
29
- export type { GatherContextDocsOptions } from "./context-docs";
@@ -1,206 +0,0 @@
1
- /**
2
- * Macro loader + single-pass argument-template scanner.
3
- *
4
- * A macro is a named prompt body discovered from a `*.md` file under the user,
5
- * project, or an explicit path root. Invoking `/<name> rest-of-line` resolves
6
- * the body against the line's arguments, substituting the indus argument
7
- * placeholders.
8
- *
9
- * # Indus template format
10
- *
11
- * Indus's own placeholders use a double-curly `{{arg.…}}` form so they stand
12
- * out from ordinary shell-style text and never collide with stray `$` in prose.
13
- * Every placeholder is introduced with `{{arg.`, names one of a small set of
14
- * accessors, and closes with `}}`. Whitespace inside the braces is permitted
15
- * around the accessor and its numeric arguments but not required.
16
- *
17
- * - `{{arg.1}}`, `{{arg.2}}`, … — one positional argument (1-based).
18
- * - `{{arg.all}}` — every positional argument, re-joined
19
- * with single spaces (equivalent to the
20
- * verbatim raw argument string for the
21
- * common case where neither quoting nor
22
- * runs of whitespace matter).
23
- * - `{{arg.slice N L}}` — at most `L` positionals starting at the
24
- * 1-based offset `N`, re-joined with
25
- * single spaces.
26
- * - `{{arg.slice N}}` — positionals from `N` onward (1-based,
27
- * inclusive).
28
- * - `{{arg.rest N}}` — positionals from `N` onward; an alias
29
- * for `{{arg.slice N}}` that reads more
30
- * naturally when "everything after the
31
- * first few" is meant. `N` defaults to
32
- * `2` (i.e. everything after `arg.1`)
33
- * when omitted: `{{arg.rest}}`.
34
- *
35
- * A literal `{{` is written `{{{{` (doubled), so author-controlled body text
36
- * can still contain double-brace runs verbatim when needed.
37
- *
38
- * # Compatibility shim
39
- *
40
- * For backward compatibility with templates authored against the older
41
- * `$arg`-style syntax, a single-pass shim still recognises the legacy forms
42
- * and rewrites them on the fly:
43
- *
44
- * - `$1`, `$2`, … — one positional argument (1-based).
45
- * - `$@` — every positional, re-joined with single spaces.
46
- * - `$ARGUMENTS` — the whole original argument string, verbatim.
47
- * - `${@:N}` — positionals from N onward (1-based, inclusive).
48
- * - `${@:N:L}` — at most L positionals starting at N.
49
- *
50
- * Using any of these legacy forms invokes {@link reportLegacyUsage} so callers
51
- * can surface a deprecation notice in their UI; the expansion still produces
52
- * the expected text so existing macro files keep working.
53
- *
54
- * # Implementation discipline
55
- *
56
- * Substitution is **one left-to-right scan**, not a sequence of regex passes:
57
- * {@link scanMacroBody} walks the body character by character, emitting a flat
58
- * {@link MacroToken} stream (literal runs interleaved with positional / all /
59
- * slice references), and {@link applyMacros} resolves that stream against a
60
- * {@link MacroScope} and concatenates. A single scan means a character produced
61
- * by expanding one token can never be re-interpreted as the start of another —
62
- * the classic multi-pass footgun — and the tokenization is reusable (cache the
63
- * tokens, resolve many times).
64
- *
65
- * Loading mirrors the same discipline: {@link loadMacros} walks a directory's
66
- * direct `*.md` children (non-recursively, the slash-macro convention), splits
67
- * off optional YAML-ish frontmatter, derives a one-line description, and
68
- * returns {@link Macro}s tagged with their {@link MacroOrigin}.
69
- */
70
- import type { Macro, MacroOrigin, MacroScope, MacroToken } from "./contract";
71
- /** Install (or clear) the legacy-syntax reporter; used by hosts for warnings. */
72
- export declare function setLegacyMacroReporter(fn: ((kind: string, source: string) => void) | undefined): void;
73
- /**
74
- * Scan a macro body into a flat {@link MacroToken} stream in a single
75
- * left-to-right pass.
76
- *
77
- * The scanner accumulates ordinary characters into a pending literal run and
78
- * flushes that run whenever it recognises a placeholder. Placeholders use the
79
- * indus `{{arg.…}}` form by default and the compatibility `$arg` form via the
80
- * shim; see the module JSDoc for the full grammar.
81
- *
82
- * Any apparent placeholder that fails to parse (e.g. `${foo}`, a dangling `$`
83
- * at end of input, or a stray `{{` that does not open `{{arg.`) is treated as
84
- * literal text so the body survives untouched. The returned stream merges
85
- * adjacent literal characters into a single token.
86
- *
87
- * @param body the macro body text to tokenize
88
- * @returns the ordered token stream; resolve it with {@link applyMacros}
89
- */
90
- export declare function scanMacroBody(body: string): MacroToken[];
91
- /**
92
- * Build the argument environment a macro body resolves against from the raw
93
- * text that followed the command name.
94
- *
95
- * `raw` is kept verbatim; `args` is the whitespace-split positional vector;
96
- * `all` is the positionals re-joined with single spaces (the `{{arg.all}}`
97
- * expansion). The split is quote-aware: single- or double-quoted runs become
98
- * one argument with their surrounding quotes removed, so
99
- * `deploy "the staging box"` yields two args.
100
- *
101
- * @param raw the verbatim argument text following the command name
102
- * @returns a {@link MacroScope} ready for {@link applyMacros}
103
- */
104
- export declare function buildMacroScope(raw: string): MacroScope;
105
- /**
106
- * Resolve a token stream against a {@link MacroScope} and concatenate to the
107
- * expanded text.
108
- *
109
- * Each token contributes its resolved text:
110
- *
111
- * - `literal` → its verbatim run.
112
- * - `positional` → the matching `args[index - 1]`, or empty when out of range.
113
- * - `all` → the full `scope.all` string.
114
- * - `slice` → `args` from the 1-based `start` for up to `length`,
115
- * re-joined with single spaces; out-of-range or zero-length slices yield
116
- * empty.
117
- *
118
- * Because resolution happens after the single scan, expanded argument text is
119
- * inserted as-is and is never re-scanned for further placeholders.
120
- *
121
- * @param tokens a stream from {@link scanMacroBody}
122
- * @param scope the argument environment to resolve against
123
- * @returns the fully expanded macro text
124
- */
125
- export declare function resolveTokens(tokens: readonly MacroToken[], scope: MacroScope): string;
126
- /**
127
- * Expand a macro body against a raw argument line in one shot: scan, then
128
- * resolve.
129
- *
130
- * Convenience over {@link scanMacroBody} + {@link buildMacroScope} +
131
- * {@link resolveTokens} for callers that do not retain the token stream.
132
- *
133
- * @param body the macro body containing indus or legacy placeholders
134
- * @param raw the verbatim argument text following the command name
135
- * @returns the expanded text
136
- */
137
- export declare function applyMacros(body: string, raw: string): string;
138
- /**
139
- * Expand an invocation line of the form `/<name> rest…` against a set of
140
- * loaded macros.
141
- *
142
- * If the line opens with `/` and names a known macro, the macro's body is
143
- * expanded against the remainder of the line. Otherwise the line is returned
144
- * unchanged — ordinary user turns pass straight through.
145
- *
146
- * @param line the raw input line
147
- * @param macros the macros to resolve against (later entries do not override
148
- * earlier ones; the first match by name wins)
149
- * @returns the expanded text, or the original line when no macro matches
150
- */
151
- export declare function expandInvocation(line: string, macros: readonly Macro[]): string;
152
- /** Options for {@link loadMacros}. */
153
- export interface LoadMacrosOptions {
154
- /** Where the directory's macros are tagged as having come from. */
155
- readonly origin?: MacroOrigin;
156
- /** A label for the source, woven into derived descriptions (e.g. `"project"`). */
157
- readonly label?: string;
158
- }
159
- /**
160
- * Load the macros defined by the direct `*.md` children of a directory.
161
- *
162
- * Non-recursive by design: slash macros live as flat files in their root, unlike
163
- * skills which nest. A missing directory yields an empty list (a perfectly normal
164
- * "no user macros configured" case); a present-but-unreadable file raises a
165
- * `macro_invalid` {@link briefingFault} via {@link readMacroFile}.
166
- *
167
- * @param dir the directory to scan for `*.md` macro files
168
- * @param opts origin tag and source label for the produced macros
169
- * @returns the loaded macros, in directory order, deduped by name (first wins)
170
- */
171
- export declare function loadMacros(dir: string, opts?: LoadMacrosOptions): Macro[];
172
- /**
173
- * Read and parse a single macro file into a {@link Macro}.
174
- *
175
- * The macro `name` is the file's basename without its `.md` suffix. Optional
176
- * leading frontmatter (a `---` fenced block) supplies a `description`; absent
177
- * that, a description is derived from the first non-blank body line, capped and
178
- * suffixed with the source `label`.
179
- *
180
- * @param path absolute path of the macro file
181
- * @param origin origin tag to stamp on the macro
182
- * @param label source label used when deriving a description
183
- * @returns the parsed macro
184
- * @throws a `macro_invalid` {@link briefingFault} when the file cannot be read
185
- */
186
- export declare function readMacroFile(path: string, origin: MacroOrigin, label: string): Macro;
187
- /** A parsed frontmatter block plus the body that followed it. */
188
- export interface FrontmatterSplit {
189
- /** Flat key/value pairs read from the leading `---` block (empty when absent). */
190
- readonly frontmatter: Record<string, unknown>;
191
- /** The document body after the closing fence (or the whole text when absent). */
192
- readonly body: string;
193
- }
194
- /**
195
- * Split a leading `---`-fenced frontmatter block off a markdown document.
196
- *
197
- * Recognises a block only when the very first line is exactly `---` and a later
198
- * line is exactly `---`. Inside, each `key: value` line becomes a flat string
199
- * entry (a small subset of YAML — enough for the `name`/`description`/`license`
200
- * keys these documents carry). When no well-formed block leads the text, the
201
- * frontmatter is empty and the body is the whole input.
202
- *
203
- * @param text the raw document text
204
- * @returns the parsed `{ frontmatter, body }`
205
- */
206
- export declare function splitFrontmatter(text: string): FrontmatterSplit;
@@ -1,67 +0,0 @@
1
- /**
2
- * Capability-card loader — `SKILL.md` discovery, validation, and parsing.
3
- *
4
- * A capability card is *documentation the model reads*: a markdown file in the
5
- * Agent-Skills format whose frontmatter names a skill and one-line-describes when
6
- * it applies, with a body of on-demand instructions. The model decides from the
7
- * `description` whether a task matches, then loads the file's `location` to read
8
- * the full body. This module turns a set of directory roots into validated
9
- * {@link SkillCard}s plus a diagnostic stream.
10
- *
11
- * Discovery follows the format's two shapes, with a generic directory walk rather
12
- * than a special-cased recursion:
13
- *
14
- * - At a *root* level, a direct `*.md` child is a single-file skill.
15
- * - In any *subdirectory*, a `SKILL.md` file is a packaged skill whose name is
16
- * expected to match its enclosing directory.
17
- *
18
- * The walk yields candidate file descriptors; a separate validation stage turns
19
- * each candidate into one {@link SkillDiagnostic} (and, on success, one
20
- * {@link SkillCard}). Validation prose and field policy are the briefing's own;
21
- * only the *format* (frontmatter keys, the ≤64 / ≤1024 limits, lowercase-hyphen
22
- * names) is the shared public spec. Names are deduped across roots — the first
23
- * card to claim a name wins and later claimants are reported as collisions.
24
- */
25
- import type { MacroOrigin, SkillCard, SkillLoad } from "./contract";
26
- /** One root directory to load skill cards from, with its origin tag. */
27
- export interface SkillRoot {
28
- /** The directory to walk. */
29
- readonly dir: string;
30
- /** How cards discovered under this root are tagged. */
31
- readonly origin: MacroOrigin;
32
- }
33
- /**
34
- * Load and validate the capability cards under one directory root.
35
- *
36
- * Walks the root for candidates, parses each, and accumulates the diagnostics.
37
- * Name deduplication is *not* applied here (a single root rarely collides with
38
- * itself in a way worth reporting); use {@link gatherSkillCards} to merge several
39
- * roots with collision reporting. Symlink cycles within the root are broken by
40
- * realpath tracking.
41
- *
42
- * @param dir the root directory to scan
43
- * @param origin the origin tag for cards found here
44
- * @returns the cards and diagnostics produced from this root
45
- */
46
- export declare function loadSkillCards(dir: string, origin?: MacroOrigin): SkillLoad;
47
- /**
48
- * Load and merge capability cards from several roots, deduping by name.
49
- *
50
- * Roots are processed in order; the first card to claim a name wins, and any
51
- * later card with the same name is dropped with a `collision` diagnostic (its
52
- * own per-root `loaded` line is rewritten to the collision outcome). The merged
53
- * card list is the deduped survivors, in discovery order.
54
- *
55
- * @param roots the roots to load, in precedence order (earliest wins)
56
- * @returns the merged cards and the combined diagnostic stream
57
- */
58
- export declare function gatherSkillCards(roots: readonly SkillRoot[]): SkillLoad;
59
- /**
60
- * Filter cards down to those the model may auto-invoke (i.e. that are not marked
61
- * `disable-model-invocation`). The hidden cards remain available as explicit
62
- * commands but do not appear in the briefing's skill block.
63
- *
64
- * @param cards the full card set
65
- * @returns the subset eligible for model invocation
66
- */
67
- export declare function modelInvocableCards(cards: readonly SkillCard[]): SkillCard[];
@@ -1,25 +0,0 @@
1
- /**
2
- * Bridge-ledger — public barrel for event-sourced MCP tool enrollment.
3
- *
4
- * Three concerns, one import site:
5
- *
6
- * - **Keys** (`./key`) — content-addressed and ULID {@link BridgeKey} minting,
7
- * so re-enrolling the same external tool is an idempotent upsert.
8
- * - **Ledger** (`./ledger`) — the immutable {@link BridgeLedger} value and its
9
- * pure transitions: {@link enrollBridgeCard} (upsert), {@link retire} /
10
- * {@link withdrawServer} (splice), each returning a new ledger folded by the
11
- * contract's {@link reduceLedger}.
12
- * - **Network** (`./network`) — {@link attachBridgeCapabilities}, which mounts
13
- * external MCP servers through the framework's `mountProtocolBridge`, adapts
14
- * the returned `ToolBox` into {@link Capability} objects + {@link
15
- * CapabilityCard}s, and enrolls them into a ledger.
16
- *
17
- * The frozen shapes ({@link BridgeKey}, {@link BridgeEntry}, {@link
18
- * LedgerSnapshot}, {@link reduceLedger}) continue to live in the deck contract;
19
- * this module re-exports the behavior that operates on them.
20
- */
21
- export { qualifyBridgeName, bridgeContentKey, bridgeUlidKey, } from "./key";
22
- export type { BridgeLedger, EnrollRequest } from "./ledger";
23
- export { emptyBridgeLedger, bridgeLedgerFromLog, enrollBridgeCard, retire, withdrawServer, liveCapabilities, liveCapabilitiesForServer, } from "./ledger";
24
- export type { AttachResult } from "./network";
25
- export { attachBridgeCapabilities, detachBridge, bridgeBoxToCapabilities, bridgeCapabilityCard, bridgeConfig, } from "./network";
@@ -1,65 +0,0 @@
1
- /**
2
- * Bridge-key minting — stable identifiers for enrolled MCP capabilities.
3
- *
4
- * An enrolled bridge capability needs a key that is *the same* across sessions
5
- * for the same external tool, so re-enrolling is an idempotent upsert rather
6
- * than an accumulating duplicate. The catalog already settled this policy in the
7
- * contract: a {@link BridgeKey} is "a content hash of the qualified
8
- * `<server>__<tool>` name (and its schema) or a fresh ULID" — keyed by the
9
- * capability's *identity*, never by a working-directory digest.
10
- *
11
- * This module implements both halves of that policy and nothing else:
12
- *
13
- * - {@link bridgeContentKey} — the default. A deterministic digest of the
14
- * qualified name plus the canonicalized parameter schema. Two enrollments of
15
- * the same remote tool (same name, same schema) collapse to one key, so the
16
- * ledger upsert is naturally idempotent and the live set never duplicates a
17
- * tool just because a server reconnected.
18
- * - {@link bridgeUlidKey} — an opt-in, monotonic, time-sortable ULID for the
19
- * rare case a caller wants every enrollment to be a distinct event (e.g. an
20
- * ephemeral, per-invocation graft) rather than a deduplicated identity.
21
- *
22
- * Both return a branded {@link BridgeKey}; neither touches the filesystem, the
23
- * clock-as-state, or any shared mutable value.
24
- */
25
- import type { TSchema } from "@sinclair/typebox";
26
- import { type BridgeKey } from "../contract";
27
- /**
28
- * The qualified, collision-free name the model sees for a remote tool —
29
- * `"<server>__<tool>"`, using the framework's bridge {@link QUALIFIER}.
30
- *
31
- * The protocol bridge already stamps this exact form onto each grafted tool's
32
- * descriptor; we recompute it here only so a key can be minted *before* a
33
- * descriptor is in hand (e.g. from a {@link RemoteToolRef}-shaped pair).
34
- *
35
- * @param server the owning MCP server's id
36
- * @param tool the remote tool's own (unqualified) name
37
- */
38
- export declare function qualifyBridgeName(server: string, tool: string): string;
39
- /**
40
- * Mint a content-addressed {@link BridgeKey} from a remote tool's identity.
41
- *
42
- * The digest is taken over the qualified `<server>__<tool>` name and the
43
- * canonicalized parameter schema, so the key is a pure function of *what the
44
- * tool is*. Enrolling the same tool twice yields the same key — the ledger
45
- * upsert deduplicates it — while a tool whose schema changed yields a new key,
46
- * correctly surfacing it as a distinct capability.
47
- *
48
- * @param server the owning MCP server's id
49
- * @param tool the remote tool's own (unqualified) name
50
- * @param parameters the tool's parameter schema (TypeBox or raw JSON Schema)
51
- */
52
- export declare function bridgeContentKey(server: string, tool: string, parameters?: TSchema | Record<string, unknown>): BridgeKey;
53
- /**
54
- * Mint a fresh, time-sortable {@link BridgeKey} as a ULID.
55
- *
56
- * Use when each enrollment must be a *distinct* event rather than a deduplicated
57
- * identity — for instance an ephemeral, per-invocation graft, or when two
58
- * differently-configured connections to the same server should each get their
59
- * own live entry. The ULID is monotonic within a process so ordering is stable.
60
- *
61
- * @param monotonic when true (default) use the process-monotonic generator so
62
- * keys minted in the same millisecond remain strictly increasing; pass false
63
- * for a plain, independent ULID.
64
- */
65
- export declare function bridgeUlidKey(monotonic?: boolean): BridgeKey;
@@ -1,129 +0,0 @@
1
- /**
2
- * The immutable bridge ledger — event-sourced enrollment of MCP capabilities.
3
- *
4
- * MCP tools are grafted in and pulled out over a session's life: a server
5
- * connects and contributes a handful of tools, another disconnects, the same
6
- * server reconnects after a hot-reload. Rather than mutate a shared module-level
7
- * array of live tools (which makes "who's enrolled right now" a function of call
8
- * order and hides every past change), enrollment here is an **append-only event
9
- * log** folded into a **derived snapshot**.
10
- *
11
- * - {@link BridgeLedger} is a plain immutable value: the ordered
12
- * {@link BridgeEntry} log, its already-folded {@link LedgerSnapshot}, and the
13
- * next sequence number to stamp.
14
- * - Every mutation ({@link enrollBridgeCard}, {@link retire},
15
- * {@link withdrawServer}) returns a *new* ledger; the input is never touched.
16
- * `enroll` is an upsert (re-enrolling a key replaces its entry), `retire` is
17
- * a splice (the keyed entry is removed from the live view).
18
- * - The live view is produced solely by the contract's pure
19
- * {@link reduceLedger} fold, so the snapshot can never drift from the log.
20
- *
21
- * The log is the source of truth; the snapshot is a cache of its fold. Because
22
- * both live on the value, callers read `ledger.snapshot.live` directly and never
23
- * re-reduce by hand.
24
- */
25
- import { type AnyCapability, type BridgeEntry, type BridgeKey, type LedgerSnapshot } from "../contract";
26
- /**
27
- * An immutable, event-sourced view of MCP tool enrollment.
28
- *
29
- * Holds the append-only {@link BridgeEntry} log, the {@link LedgerSnapshot} that
30
- * is its current fold, and the sequence number the next appended entry will
31
- * carry. Treat every instance as frozen: the enroll/retire/withdraw helpers
32
- * derive a new ledger rather than editing this one in place.
33
- */
34
- export interface BridgeLedger {
35
- /** The append-only enrollment event log, in append order. */
36
- readonly log: readonly BridgeEntry[];
37
- /** The current fold of {@link log} — the live capabilities and per-server counts. */
38
- readonly snapshot: LedgerSnapshot;
39
- /** The sequence number the next appended {@link BridgeEntry} will carry. */
40
- readonly nextSeq: number;
41
- }
42
- /**
43
- * The fields an enrollment supplies; the ledger stamps `op`, `seq`, and `at`.
44
- *
45
- * A caller names the capability, the owning server, and optionally a pre-minted
46
- * {@link BridgeKey}; when the key is omitted it is content-addressed from the
47
- * capability's identity so re-enrolling the same tool is idempotent.
48
- */
49
- export interface EnrollRequest {
50
- /** The grafted capability to enroll (its `name` is the qualified tool name). */
51
- readonly capability: AnyCapability;
52
- /** Id of the external MCP server that owns the capability. */
53
- readonly server: string;
54
- /**
55
- * Optional explicit key. When omitted, a content key is derived from the
56
- * capability's qualified name and parameter schema so the enrollment upserts
57
- * any prior entry for the same tool instead of duplicating it.
58
- */
59
- readonly key?: BridgeKey;
60
- }
61
- /** An empty ledger: no events, an empty live view, sequence numbering at 1. */
62
- export declare function emptyBridgeLedger(): BridgeLedger;
63
- /**
64
- * Rebuild a ledger value from a persisted event log.
65
- *
66
- * The log is authoritative, so a ledger is fully reconstructable from it: fold
67
- * it for the snapshot and resume sequence numbering one past its high-water
68
- * mark. Use when rehydrating enrollment state across a restart.
69
- *
70
- * @param log the persisted append-only entries, in any order (sorted on fold)
71
- */
72
- export declare function bridgeLedgerFromLog(log: readonly BridgeEntry[]): BridgeLedger;
73
- /**
74
- * Append an `enroll` event and return the resulting ledger.
75
- *
76
- * The graft is an **upsert**: the appended entry carries a {@link BridgeKey}, and
77
- * because {@link reduceLedger} lets a later sequence win on a repeated key, a
78
- * re-enrollment of the same tool transparently replaces its prior live entry
79
- * rather than duplicating it. The input ledger is not mutated.
80
- *
81
- * @param ledger the current ledger (left untouched)
82
- * @param req the capability + server to enroll, with an optional explicit key
83
- * @param at enrollment timestamp; defaults to now (ISO-8601)
84
- */
85
- export declare function enrollBridgeCard(ledger: BridgeLedger, req: EnrollRequest, at?: string): BridgeLedger;
86
- /**
87
- * Append a `retire` event for one capability and return the resulting ledger.
88
- *
89
- * The withdrawal is a **splice**: the appended `retire` entry names the key, and
90
- * the fold drops that key from the live view. Retiring an unknown or
91
- * already-retired key is a harmless no-op in the live set (the event is still
92
- * recorded for the audit trail). The input ledger is not mutated.
93
- *
94
- * @param ledger the current ledger (left untouched)
95
- * @param key the stable key of the capability to withdraw
96
- * @param server the owning server id, recorded on the event
97
- * @param at retirement timestamp; defaults to now (ISO-8601)
98
- */
99
- export declare function retire(ledger: BridgeLedger, key: BridgeKey, server: string, at?: string): BridgeLedger;
100
- /**
101
- * Retire every capability a given server currently has live, in one batch.
102
- *
103
- * Appends one `retire` event per live key owned by the server — the disconnect
104
- * counterpart to grafting a whole server's tool set. Servers with nothing live
105
- * yield the ledger unchanged. The input ledger is not mutated.
106
- *
107
- * @param ledger the current ledger (left untouched)
108
- * @param server the server whose live capabilities should all be withdrawn
109
- * @param at retirement timestamp applied to every event; defaults to now
110
- */
111
- export declare function withdrawServer(ledger: BridgeLedger, server: string, at?: string): BridgeLedger;
112
- /**
113
- * Read the live capabilities a single server currently contributes.
114
- *
115
- * Pure projection over the snapshot; the per-key→server association is recovered
116
- * from the log (each live key's last-touching server). Handy for status panels
117
- * and for {@link withdrawServer}'s batch retirement.
118
- *
119
- * @param ledger the ledger to read
120
- * @param server the server id to filter by
121
- */
122
- export declare function liveCapabilitiesForServer(ledger: BridgeLedger, server: string): AnyCapability[];
123
- /**
124
- * The flat list of every live capability, in stable iteration order.
125
- *
126
- * What a deck assembler grafts onto the static catalog before handing the
127
- * conductor its `options.tools`.
128
- */
129
- export declare function liveCapabilities(ledger: BridgeLedger): AnyCapability[];
@@ -1,115 +0,0 @@
1
- /**
2
- * The bridge network — mounting external MCP servers into the ledger.
3
- *
4
- * This is the side-effecting half of bridge enrollment. The framework's
5
- * {@link mountProtocolBridge} does the protocol work: it connects every
6
- * configured server, lists each ready endpoint's tools, and hands back a single
7
- * {@link ToolBox} whose `descriptors()` advertise every grafted remote tool
8
- * under its qualified `"<server>__<tool>"` name and whose `runner` routes a call
9
- * back across the owning endpoint.
10
- *
11
- * What this module adds on top:
12
- *
13
- * - **Adaptation.** A {@link ToolBox} speaks the runtime's descriptor/runner
14
- * contract; the conductor and catalog speak {@link Capability} (the
15
- * framework `AgentTool`). {@link bridgeBoxToCapabilities} bridges the two,
16
- * wrapping each descriptor + the shared runner into an `AgentTool` whose
17
- * `execute` invokes the runner and projects its opaque outcome onto an
18
- * {@link AgentToolResult}.
19
- * - **Enrollment.** {@link attachBridgeCapabilities} folds those adapted
20
- * capabilities into a {@link BridgeLedger} as `enroll` events, returning the
21
- * new ledger, the live fleet (for teardown), and the typed status — never
22
- * mutating a shared array.
23
- * - **Cataloging.** {@link bridgeCapabilityCard} re-presents a grafted
24
- * capability as a {@link CapabilityCard}, so dynamic MCP tools surface in
25
- * help/introspection beside the static catalog rows.
26
- *
27
- * Failure isolation comes for free from the fleet: a server that faulted on
28
- * connect contributes no descriptors and is simply absent from the enrollment.
29
- */
30
- import { type AnyCapability, type CapabilityCard, type DeckFault } from "../contract";
31
- import { type BridgeConfig, type ServerConfig, type ServerFleet, type FleetStatus } from "indusagi/interop";
32
- import type { ToolBox } from "indusagi/runtime";
33
- import { type BridgeLedger } from "./ledger";
34
- /**
35
- * Adapt every tool a mounted {@link ToolBox} advertises into a list of
36
- * {@link Capability} objects the conductor and ledger consume.
37
- *
38
- * Each box descriptor becomes one `AgentTool`: its qualified name, description,
39
- * and parameter schema are carried verbatim, and its `execute` defers to the
40
- * box's shared `runner` — passing the abort signal through and projecting the
41
- * outcome with {@link projectOutcome}. The runner already knows how to route a
42
- * call by name back to the owning endpoint, so the wrapper stays a thin shim.
43
- *
44
- * @param box the tool box returned by {@link mountProtocolBridge}
45
- */
46
- export declare function bridgeBoxToCapabilities(box: ToolBox): AnyCapability[];
47
- /**
48
- * Re-present a grafted bridge capability as a {@link CapabilityCard}.
49
- *
50
- * Lets dynamic MCP tools appear in the same catalog/help surface as the static
51
- * cards: the card's `build` simply returns the already-live capability (the
52
- * graft happened at mount time, so there is nothing further to construct). The
53
- * owning server id is recovered from the qualified name for the title.
54
- *
55
- * @param capability a capability produced by {@link bridgeBoxToCapabilities}
56
- */
57
- export declare function bridgeCapabilityCard(capability: AnyCapability): CapabilityCard;
58
- /**
59
- * The outcome of attaching one or more MCP servers to a ledger.
60
- *
61
- * Bundles the new {@link BridgeLedger} (with every reachable tool enrolled), the
62
- * live {@link ServerFleet} the caller owns and must eventually tear down, the
63
- * aggregate {@link FleetStatus} for rendering, the count of tools grafted, and a
64
- * non-fatal {@link DeckFault} when the mount itself failed wholesale.
65
- */
66
- export interface AttachResult {
67
- /** The ledger after enrolling every grafted capability. */
68
- readonly ledger: BridgeLedger;
69
- /** The running fleet of endpoints; caller closes it via {@link detachBridge}. */
70
- readonly fleet?: ServerFleet;
71
- /** Aggregate per-server health, when a fleet came up. */
72
- readonly status?: FleetStatus;
73
- /** How many remote tools were enrolled. */
74
- readonly enrolled: number;
75
- /** A wholesale-mount fault, when connecting the bridge threw. */
76
- readonly fault?: DeckFault;
77
- }
78
- /**
79
- * Mount external MCP servers and enroll their tools into the bridge ledger.
80
- *
81
- * Connects every server in `config` through {@link mountProtocolBridge}, adapts
82
- * the resulting box into capabilities, and folds each one into `ledger` as an
83
- * `enroll` event — yielding a *new* ledger (the input is untouched). The live
84
- * fleet is returned so the caller can read status and later tear it down; a
85
- * faulted server simply contributes no tools and is reflected in the status.
86
- *
87
- * A wholesale failure (the mount call itself rejecting) is caught and reported
88
- * as a `bridge` {@link DeckFault} on the result rather than thrown, so a bad MCP
89
- * configuration degrades the deck instead of sinking session bootstrap.
90
- *
91
- * @param ledger the ledger to enroll into (left untouched)
92
- * @param config the set of MCP servers to connect and graft
93
- */
94
- export declare function attachBridgeCapabilities(ledger: BridgeLedger, config: BridgeConfig): Promise<AttachResult>;
95
- /**
96
- * Detach one or more servers: retire their ledger entries and close the fleet.
97
- *
98
- * Withdraws every named server's live capabilities from `ledger` (or, when no
99
- * names are given, every server present in the fleet status) and gracefully
100
- * tears the fleet down. Returns the new ledger; the fleet is no longer usable
101
- * after this resolves. The teardown is best-effort — a close that throws is
102
- * swallowed so ledger withdrawal still completes.
103
- *
104
- * @param ledger the current ledger (left untouched)
105
- * @param fleet the live fleet to close
106
- * @param servers optional subset of server ids to detach; defaults to all
107
- */
108
- export declare function detachBridge(ledger: BridgeLedger, fleet: ServerFleet, servers?: readonly string[]): Promise<BridgeLedger>;
109
- /**
110
- * Convenience: turn a flat list of MCP server descriptions into the
111
- * {@link BridgeConfig} {@link attachBridgeCapabilities} expects.
112
- *
113
- * @param servers the per-server transport configurations, in declaration order
114
- */
115
- export declare function bridgeConfig(servers: readonly ServerConfig[]): BridgeConfig;