@mcp-abap-adt/llm-agent-server-libs 26.0.0 → 28.0.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 (158) hide show
  1. package/dist/builders/controller-skill-pipeline-builder.d.ts +6 -5
  2. package/dist/builders/controller-skill-pipeline-builder.d.ts.map +1 -1
  3. package/dist/builders/controller-skill-pipeline-builder.js +49 -54
  4. package/dist/builders/controller-skill-pipeline-builder.js.map +1 -1
  5. package/dist/factories/controller-factory.d.ts +13 -10
  6. package/dist/factories/controller-factory.d.ts.map +1 -1
  7. package/dist/factories/controller-factory.js +33 -12
  8. package/dist/factories/controller-factory.js.map +1 -1
  9. package/dist/generated/version.d.ts +1 -1
  10. package/dist/generated/version.js +1 -1
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +2 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/pipelines/controller-subagents.d.ts +11 -0
  16. package/dist/pipelines/controller-subagents.d.ts.map +1 -0
  17. package/dist/pipelines/controller-subagents.js +77 -0
  18. package/dist/pipelines/controller-subagents.js.map +1 -0
  19. package/dist/pipelines/controller.d.ts +11 -10
  20. package/dist/pipelines/controller.d.ts.map +1 -1
  21. package/dist/pipelines/controller.js +14 -65
  22. package/dist/pipelines/controller.js.map +1 -1
  23. package/dist/pipelines/coordinator-resolvers.d.ts +6 -11
  24. package/dist/pipelines/coordinator-resolvers.d.ts.map +1 -1
  25. package/dist/pipelines/coordinator-resolvers.js +7 -17
  26. package/dist/pipelines/coordinator-resolvers.js.map +1 -1
  27. package/dist/pipelines/dag.d.ts +9 -9
  28. package/dist/pipelines/dag.d.ts.map +1 -1
  29. package/dist/pipelines/dag.js +11 -22
  30. package/dist/pipelines/dag.js.map +1 -1
  31. package/dist/pipelines/flat.d.ts +4 -7
  32. package/dist/pipelines/flat.d.ts.map +1 -1
  33. package/dist/pipelines/flat.js +3 -8
  34. package/dist/pipelines/flat.js.map +1 -1
  35. package/dist/pipelines/linear.d.ts +8 -10
  36. package/dist/pipelines/linear.d.ts.map +1 -1
  37. package/dist/pipelines/linear.js +18 -11
  38. package/dist/pipelines/linear.js.map +1 -1
  39. package/dist/pipelines/parsers.d.ts +0 -3
  40. package/dist/pipelines/parsers.d.ts.map +1 -1
  41. package/dist/pipelines/parsers.js +4 -19
  42. package/dist/pipelines/parsers.js.map +1 -1
  43. package/dist/pipelines/server-context.d.ts +0 -5
  44. package/dist/pipelines/server-context.d.ts.map +1 -1
  45. package/dist/pipelines/server-context.js.map +1 -1
  46. package/dist/pipelines/stepper.d.ts +5 -4
  47. package/dist/pipelines/stepper.d.ts.map +1 -1
  48. package/dist/pipelines/stepper.js +5 -4
  49. package/dist/pipelines/stepper.js.map +1 -1
  50. package/dist/smart-agent/build-dag-coordinator-deps.d.ts +11 -22
  51. package/dist/smart-agent/build-dag-coordinator-deps.d.ts.map +1 -1
  52. package/dist/smart-agent/build-dag-coordinator-deps.js +21 -78
  53. package/dist/smart-agent/build-dag-coordinator-deps.js.map +1 -1
  54. package/dist/smart-agent/build-stepper-root.d.ts.map +1 -1
  55. package/dist/smart-agent/build-stepper-root.js +0 -1
  56. package/dist/smart-agent/build-stepper-root.js.map +1 -1
  57. package/dist/smart-agent/config-validator.d.ts +8 -1
  58. package/dist/smart-agent/config-validator.d.ts.map +1 -1
  59. package/dist/smart-agent/config-validator.js +200 -62
  60. package/dist/smart-agent/config-validator.js.map +1 -1
  61. package/dist/smart-agent/config.d.ts +7 -7
  62. package/dist/smart-agent/config.d.ts.map +1 -1
  63. package/dist/smart-agent/config.js +24 -11
  64. package/dist/smart-agent/config.js.map +1 -1
  65. package/dist/smart-agent/controller/types.d.ts +22 -15
  66. package/dist/smart-agent/controller/types.d.ts.map +1 -1
  67. package/dist/smart-agent/controller/types.js.map +1 -1
  68. package/dist/smart-agent/http/config-route-handler.d.ts +2 -0
  69. package/dist/smart-agent/http/config-route-handler.d.ts.map +1 -1
  70. package/dist/smart-agent/http/config-route-handler.js +20 -0
  71. package/dist/smart-agent/http/config-route-handler.js.map +1 -1
  72. package/dist/smart-agent/llm/role-llm-resolver.d.ts +23 -11
  73. package/dist/smart-agent/llm/role-llm-resolver.d.ts.map +1 -1
  74. package/dist/smart-agent/llm/role-llm-resolver.js +65 -37
  75. package/dist/smart-agent/llm/role-llm-resolver.js.map +1 -1
  76. package/dist/smart-agent/llm-config-map.d.ts +9 -1
  77. package/dist/smart-agent/llm-config-map.d.ts.map +1 -1
  78. package/dist/smart-agent/llm-config-map.js +27 -5
  79. package/dist/smart-agent/llm-config-map.js.map +1 -1
  80. package/dist/smart-agent/pipeline-settings.d.ts +50 -0
  81. package/dist/smart-agent/pipeline-settings.d.ts.map +1 -0
  82. package/dist/smart-agent/pipeline-settings.js +174 -0
  83. package/dist/smart-agent/pipeline-settings.js.map +1 -0
  84. package/dist/smart-agent/pipeline.d.ts +3 -63
  85. package/dist/smart-agent/pipeline.d.ts.map +1 -1
  86. package/dist/smart-agent/pipeline.js +3 -2
  87. package/dist/smart-agent/pipeline.js.map +1 -1
  88. package/dist/smart-agent/rag-config.d.ts +155 -0
  89. package/dist/smart-agent/rag-config.d.ts.map +1 -0
  90. package/dist/smart-agent/rag-config.js +62 -0
  91. package/dist/smart-agent/rag-config.js.map +1 -0
  92. package/dist/smart-agent/resolve-agent-embedder.d.ts +11 -10
  93. package/dist/smart-agent/resolve-agent-embedder.d.ts.map +1 -1
  94. package/dist/smart-agent/resolve-agent-embedder.js +37 -36
  95. package/dist/smart-agent/resolve-agent-embedder.js.map +1 -1
  96. package/dist/smart-agent/resolve-config-sections.d.ts +1 -1
  97. package/dist/smart-agent/resolve-config-sections.d.ts.map +1 -1
  98. package/dist/smart-agent/resolve-config-sections.js +124 -30
  99. package/dist/smart-agent/resolve-config-sections.js.map +1 -1
  100. package/dist/smart-agent/select-pipeline-plugin.d.ts +8 -0
  101. package/dist/smart-agent/select-pipeline-plugin.d.ts.map +1 -0
  102. package/dist/smart-agent/select-pipeline-plugin.js +26 -0
  103. package/dist/smart-agent/select-pipeline-plugin.js.map +1 -0
  104. package/dist/smart-agent/session-lifecycle/index.d.ts +38 -4
  105. package/dist/smart-agent/session-lifecycle/index.d.ts.map +1 -1
  106. package/dist/smart-agent/session-lifecycle/index.js +11 -1
  107. package/dist/smart-agent/session-lifecycle/index.js.map +1 -1
  108. package/dist/smart-agent/session-lifecycle/session-rag-registry.d.ts +39 -0
  109. package/dist/smart-agent/session-lifecycle/session-rag-registry.d.ts.map +1 -0
  110. package/dist/smart-agent/session-lifecycle/session-rag-registry.js +109 -0
  111. package/dist/smart-agent/session-lifecycle/session-rag-registry.js.map +1 -0
  112. package/dist/smart-agent/skill-plugins-config.d.ts +3 -2
  113. package/dist/smart-agent/skill-plugins-config.d.ts.map +1 -1
  114. package/dist/smart-agent/skill-plugins-config.js +12 -1
  115. package/dist/smart-agent/skill-plugins-config.js.map +1 -1
  116. package/dist/smart-agent/skill-plugins-host-factory.d.ts +9 -0
  117. package/dist/smart-agent/skill-plugins-host-factory.d.ts.map +1 -1
  118. package/dist/smart-agent/skill-plugins-host-factory.js +12 -6
  119. package/dist/smart-agent/skill-plugins-host-factory.js.map +1 -1
  120. package/dist/smart-agent/smart-server.d.ts +90 -78
  121. package/dist/smart-agent/smart-server.d.ts.map +1 -1
  122. package/dist/smart-agent/smart-server.js +201 -152
  123. package/dist/smart-agent/smart-server.js.map +1 -1
  124. package/dist/smart-agent/worker-llm.d.ts +18 -0
  125. package/dist/smart-agent/worker-llm.d.ts.map +1 -0
  126. package/dist/smart-agent/worker-llm.js +59 -0
  127. package/dist/smart-agent/worker-llm.js.map +1 -0
  128. package/dist/smart-agent/workers/worker-registry.d.ts +6 -14
  129. package/dist/smart-agent/workers/worker-registry.d.ts.map +1 -1
  130. package/dist/smart-agent/workers/worker-registry.js +2 -11
  131. package/dist/smart-agent/workers/worker-registry.js.map +1 -1
  132. package/dist/smart-agent/yaml-loader.d.ts +1 -1
  133. package/dist/smart-agent/yaml-loader.d.ts.map +1 -1
  134. package/dist/smart-agent/yaml-loader.js +20 -17
  135. package/dist/smart-agent/yaml-loader.js.map +1 -1
  136. package/package.json +9 -8
  137. package/dist/smart-agent/mcp/mcp-content.d.ts +0 -19
  138. package/dist/smart-agent/mcp/mcp-content.d.ts.map +0 -1
  139. package/dist/smart-agent/mcp/mcp-content.js +0 -31
  140. package/dist/smart-agent/mcp/mcp-content.js.map +0 -1
  141. package/dist/smart-agent/mcp/require-mcp-timeout.d.ts +0 -20
  142. package/dist/smart-agent/mcp/require-mcp-timeout.d.ts.map +0 -1
  143. package/dist/smart-agent/mcp/require-mcp-timeout.js +0 -23
  144. package/dist/smart-agent/mcp/require-mcp-timeout.js.map +0 -1
  145. package/dist/smart-agent/mcp-readiness-monitor.d.ts +0 -38
  146. package/dist/smart-agent/mcp-readiness-monitor.d.ts.map +0 -1
  147. package/dist/smart-agent/mcp-readiness-monitor.js +0 -81
  148. package/dist/smart-agent/mcp-readiness-monitor.js.map +0 -1
  149. package/dist/smart-agent/mcp-readiness-registry.d.ts +0 -37
  150. package/dist/smart-agent/mcp-readiness-registry.d.ts.map +0 -1
  151. package/dist/smart-agent/mcp-readiness-registry.js +0 -55
  152. package/dist/smart-agent/mcp-readiness-registry.js.map +0 -1
  153. package/dist/smart-agent/skill-plugins-config.test.d.ts +0 -2
  154. package/dist/smart-agent/skill-plugins-config.test.d.ts.map +0 -1
  155. package/dist/smart-agent/skill-plugins-config.test.js.map +0 -1
  156. package/dist/smart-agent/skill-plugins-host-factory.test.d.ts +0 -2
  157. package/dist/smart-agent/skill-plugins-host-factory.test.d.ts.map +0 -1
  158. package/dist/smart-agent/skill-plugins-host-factory.test.js.map +0 -1
@@ -11,22 +11,27 @@ mode: smart
11
11
 
12
12
  llm:
13
13
  provider: deepseek # deepseek | openai | anthropic | sap-ai-sdk | ollama
14
- apiKey: \${DEEPSEEK_API_KEY} # not required for ollama / sap-ai-sdk
14
+ # No secret here: your composition root holds the credential. To use an account
15
+ # other than its default, name it: credentialRef: <NAME>
15
16
  model: deepseek-chat
16
17
  temperature: 0.7
17
18
  classifierTemperature: 0.1
18
19
 
19
20
  rag:
20
- type: in-memory # in-memory | qdrant | hana-vector | pg-vector
21
- embedder: ollama # Embedder to use: ollama | openai | sap-ai-core | <custom>
22
- url: http://localhost:11434
23
- model: bge-m3
24
- # resourceGroup: default # SAP AI Core resource group (sap-ai-core embedder)
25
- # scenario: orchestration # SAP AI Core scenario: orchestration (default) | foundation-models
26
- # collectionName: llm-agent # Collection/table name (qdrant | hana-vector | pg-vector)
27
- dedupThreshold: 0.92
28
- vectorWeight: 0.7 # Semantic similarity weight (0..1)
29
- keywordWeight: 0.3 # Lexical matching weight (0..1)
21
+ store: # the vector store: its own address and account
22
+ type: in-memory # in-memory | qdrant | hana-vector | pg-vector
23
+ # collectionName: llm-agent # qdrant (default llm-agent) | hana-vector | pg-vector (required)
24
+ # credentialRef: QDRANT # the store's account, resolved by your composition root
25
+ dedupThreshold: 0.92 # in-memory only
26
+ vectorWeight: 0.7 # in-memory only: semantic similarity weight (0..1)
27
+ keywordWeight: 0.3 # in-memory only: lexical matching weight (0..1)
28
+ embedder: # omit for a keyword-only in-memory store
29
+ provider: ollama # ollama | openai | sap-ai-core | <custom>
30
+ url: http://localhost:11434
31
+ model: bge-m3
32
+ # resourceGroup: default # SAP AI Core resource group (sap-ai-core)
33
+ # scenario: orchestration # SAP AI Core scenario: orchestration (default) | foundation-models
34
+ # credentialRef: AICORE # the embedder's own account
30
35
 
31
36
  mcp:
32
37
  # type: none | http | stdio
@@ -68,17 +73,15 @@ agent:
68
73
  # llm:
69
74
  # main:
70
75
  # provider: deepseek # deepseek | openai | anthropic | sap-ai-sdk
71
- # apiKey: \${DEEPSEEK_API_KEY}
72
76
  # model: deepseek-chat
73
77
  # temperature: 0.7
74
78
  # classifier: # optional; if absent, main config is reused
75
- # provider: deepseek
76
- # apiKey: \${DEEPSEEK_API_KEY}
77
- # model: deepseek-chat
79
+ # provider: openai
80
+ # credentialRef: OPENAI_KEY_CHEAP # a second account, named — resolved by your composition root
81
+ # model: gpt-4o-mini
78
82
  # temperature: 0.1
79
83
  # helper: # optional; if absent, main config is reused
80
84
  # provider: deepseek
81
- # apiKey: \${DEEPSEEK_API_KEY}
82
85
  # model: deepseek-chat
83
86
  # temperature: 0.1
84
87
 
@@ -109,7 +112,7 @@ log: smart-server.log # path to log file; omit for stdout
109
112
 
110
113
  # pipeline: # Optional: select the request pipeline.
111
114
  # name: flat # flat (default) | linear | dag | stepper | controller | controller-weak | <plugin>
112
- # config: # Opaque per-pipeline dialect (validated by the plugin)
115
+ # config: # The selected pipeline's section (parsed at startup by the server, or by a dynamic plugin's factory)
113
116
  # mode: planned-react # e.g. stepper: cyclic-react | planned-react | deep-stepper
114
117
  # knowledgeSeed: [] # stepper: deployment-supplied tool guidance
115
118
  #
@@ -1 +1 @@
1
- {"version":3,"file":"yaml-loader.js","sourceRoot":"","sources":["../../src/smart-agent/yaml-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAI1C,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqH5B,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAY,EAAE,GAAG,IAAc,EAAW,EAAE,CAC9D,IAAI,CAAC,MAAM,CAAU,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IAC5B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,OAAQ,CAA6B,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,EAAE,GAAG,CAAC,CAAC;AAEV,MAAM,UAAU,cAAc,CAC5B,KAAc,EACd,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,OAAO,CAClB,6BAA6B,EAC7B,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,EAAE,CACnD,CAAC;IACJ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1E,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC7C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/D,CAAC;YACD,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC;SACvB,CAAC,CACH,CAAC;IACJ,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAe,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"yaml-loader.js","sourceRoot":"","sources":["../../src/smart-agent/yaml-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAI1C,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwH5B,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAY,EAAE,GAAG,IAAc,EAAW,EAAE,CAC9D,IAAI,CAAC,MAAM,CAAU,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IAC5B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,OAAQ,CAA6B,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,EAAE,GAAG,CAAC,CAAC;AAEV,MAAM,UAAU,cAAc,CAC5B,KAAc,EACd,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,OAAO,CAClB,6BAA6B,EAC7B,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,EAAE,CACnD,CAAC;IACJ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1E,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC7C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/D,CAAC;YACD,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC;SACvB,CAAC,CACH,CAAC;IACJ,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAe,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/llm-agent-server-libs",
3
- "version": "26.0.0",
3
+ "version": "28.0.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -58,15 +58,16 @@
58
58
  "test": "node --import tsx/esm --test --test-reporter=spec 'src/**/*.test.ts'"
59
59
  },
60
60
  "dependencies": {
61
- "@mcp-abap-adt/llm-agent": "^26.0.0",
62
- "@mcp-abap-adt/llm-agent-libs": "^26.0.0",
63
- "@mcp-abap-adt/llm-agent-mcp": "^26.0.0",
64
- "@mcp-abap-adt/llm-agent-rag": "^26.0.0",
65
61
  "pg": "^8.23.0",
66
- "yaml": "^2.9.0"
62
+ "yaml": "^2.9.1"
67
63
  },
68
64
  "peerDependencies": {
69
- "@mcp-abap-adt/sap-aicore-llm": "^26.0.0"
65
+ "@mcp-abap-adt/interfaces-auth": "^2.1.0",
66
+ "@mcp-abap-adt/llm-agent": "^28.0.0",
67
+ "@mcp-abap-adt/llm-agent-libs": "^28.0.0",
68
+ "@mcp-abap-adt/llm-agent-mcp": "^28.0.0",
69
+ "@mcp-abap-adt/llm-agent-rag": "^28.0.0",
70
+ "@mcp-abap-adt/sap-aicore-llm": "^28.0.0"
70
71
  },
71
72
  "peerDependenciesMeta": {
72
73
  "@mcp-abap-adt/sap-aicore-llm": {
@@ -74,7 +75,7 @@
74
75
  }
75
76
  },
76
77
  "devDependencies": {
77
- "@mcp-abap-adt/sap-aicore-llm": "^26.0.0",
78
+ "@mcp-abap-adt/sap-aicore-llm": "^28.0.0",
78
79
  "@types/pg": "^8.23.1"
79
80
  },
80
81
  "publishConfig": {
@@ -1,19 +0,0 @@
1
- /**
2
- * Convert an MCP `CallToolResult.content` into the text an executor / a surfaced
3
- * error should see.
4
- *
5
- * A standard MCP tool result is an array of content blocks
6
- * (`[{ type: 'text', text: '…' }, …]`), never a bare string — so the historical
7
- * `typeof content === 'string' ? content : JSON.stringify(content)` in the
8
- * bridges fell through to `JSON.stringify` and handed the executor (and any
9
- * downstream surfacing, e.g. the #264 control-failure text) the raw envelope
10
- * `[{"type":"text","text":"…"}]` instead of the text (#267).
11
- *
12
- * This unwraps the CANONICAL text envelope — an array whose blocks are ALL
13
- * `{ type:'text', text }` — and joins the parts. Anything else (a bare string is
14
- * returned as-is; a structured object, or a mixed array with image/resource
15
- * blocks) keeps today's `JSON.stringify` behavior, so no information is lost for
16
- * non-text payloads. Mirrors `extractText` in `http/chat-route-handler.ts`.
17
- */
18
- export declare function mcpContentToText(content: unknown): string;
19
- //# sourceMappingURL=mcp-content.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-content.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/mcp/mcp-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAgBzD"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Convert an MCP `CallToolResult.content` into the text an executor / a surfaced
3
- * error should see.
4
- *
5
- * A standard MCP tool result is an array of content blocks
6
- * (`[{ type: 'text', text: '…' }, …]`), never a bare string — so the historical
7
- * `typeof content === 'string' ? content : JSON.stringify(content)` in the
8
- * bridges fell through to `JSON.stringify` and handed the executor (and any
9
- * downstream surfacing, e.g. the #264 control-failure text) the raw envelope
10
- * `[{"type":"text","text":"…"}]` instead of the text (#267).
11
- *
12
- * This unwraps the CANONICAL text envelope — an array whose blocks are ALL
13
- * `{ type:'text', text }` — and joins the parts. Anything else (a bare string is
14
- * returned as-is; a structured object, or a mixed array with image/resource
15
- * blocks) keeps today's `JSON.stringify` behavior, so no information is lost for
16
- * non-text payloads. Mirrors `extractText` in `http/chat-route-handler.ts`.
17
- */
18
- export function mcpContentToText(content) {
19
- if (typeof content === 'string')
20
- return content;
21
- if (Array.isArray(content) &&
22
- content.length > 0 &&
23
- content.every((b) => typeof b === 'object' &&
24
- b !== null &&
25
- b.type === 'text' &&
26
- typeof b.text === 'string')) {
27
- return content.map((b) => b.text).join('\n');
28
- }
29
- return JSON.stringify(content);
30
- }
31
- //# sourceMappingURL=mcp-content.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-content.js","sourceRoot":"","sources":["../../../src/smart-agent/mcp/mcp-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IACE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACtB,OAAO,CAAC,MAAM,GAAG,CAAC;QAClB,OAAO,CAAC,KAAK,CACX,CAAC,CAAC,EAAuC,EAAE,CACzC,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,KAAK,IAAI;YACT,CAAwB,CAAC,IAAI,KAAK,MAAM;YACzC,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ,CACrD,EACD,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
@@ -1,20 +0,0 @@
1
- /**
2
- * The MCP request timeout for one connection, or a startup failure naming it.
3
- *
4
- * The MCP SDK always arms a timer — `Protocol.request` reads
5
- * `options?.timeout ?? DEFAULT_REQUEST_TIMEOUT_MSEC` — so this is not a knob
6
- * that can be left off. Omitted, its own sixty seconds apply silently, and a
7
- * long-running tool is cut for a reason nobody configured and nobody can see
8
- * in the config file.
9
- *
10
- * No number chosen in here is right either: a catalogue lookup and an ABAP
11
- * write chain differ by orders of magnitude, and deployments exist where
12
- * fifteen minutes is not enough. So the value is the operator's to name, like
13
- * the model, and its absence is loud rather than guessed — the same choice
14
- * this codebase makes for a malformed throttle ceiling.
15
- */
16
- export declare function requireMcpTimeout(cfg: {
17
- name?: string;
18
- timeout?: number;
19
- }): number;
20
- //# sourceMappingURL=require-mcp-timeout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"require-mcp-timeout.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/mcp/require-mcp-timeout.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAQT"}
@@ -1,23 +0,0 @@
1
- /**
2
- * The MCP request timeout for one connection, or a startup failure naming it.
3
- *
4
- * The MCP SDK always arms a timer — `Protocol.request` reads
5
- * `options?.timeout ?? DEFAULT_REQUEST_TIMEOUT_MSEC` — so this is not a knob
6
- * that can be left off. Omitted, its own sixty seconds apply silently, and a
7
- * long-running tool is cut for a reason nobody configured and nobody can see
8
- * in the config file.
9
- *
10
- * No number chosen in here is right either: a catalogue lookup and an ABAP
11
- * write chain differ by orders of magnitude, and deployments exist where
12
- * fifteen minutes is not enough. So the value is the operator's to name, like
13
- * the model, and its absence is loud rather than guessed — the same choice
14
- * this codebase makes for a malformed throttle ceiling.
15
- */
16
- export function requireMcpTimeout(cfg) {
17
- if (typeof cfg.timeout === 'number' && Number.isFinite(cfg.timeout)) {
18
- return cfg.timeout;
19
- }
20
- const which = cfg.name ? ` "${cfg.name}"` : '';
21
- throw new Error(`MCP connection${which} has no 'timeout'. It is required: the MCP SDK applies a 60s timeout of its own when none is given, which silently cuts long-running tools. Set 'mcp.timeout' (milliseconds), and 'mcp.toolTimeouts' for per-tool overrides.`);
22
- }
23
- //# sourceMappingURL=require-mcp-timeout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"require-mcp-timeout.js","sourceRoot":"","sources":["../../../src/smart-agent/mcp/require-mcp-timeout.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAGjC;IACC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,8NAA8N,CACrP,CAAC;AACJ,CAAC"}
@@ -1,38 +0,0 @@
1
- import type { IMcpClient } from '@mcp-abap-adt/llm-agent';
2
- import type { McpReadinessRegistry } from './mcp-readiness-registry.js';
3
- export interface McpReadinessMonitorDeps {
4
- /** Lazily (re)connect a slot's opaque config to a live client. Throws if still
5
- * down. */
6
- connect: (config: unknown) => Promise<IMcpClient>;
7
- /** Called after a GLOBAL slot transitions DOWN→UP, so the server can refresh the
8
- * vectorized tool catalog (toolsRag) over the now-live clients. */
9
- onGlobalRecovered?: () => Promise<void>;
10
- /** Called after a WORKER slot transitions DOWN→UP, so the server can invalidate
11
- * the worker cache (next session rebuild injects the recovered client). */
12
- onWorkerRecovered?: (id: string) => void;
13
- cooldownMs?: number;
14
- intervalMs?: number;
15
- }
16
- /**
17
- * Periodic readiness probe over the SmartServer-owned MCP target registry. Drives
18
- * the `_ready` signal: probes live clients via `healthCheck()` (→ `ping()`, a LIVE
19
- * round-trip — never the cached `listTools()`), and lazily (re)connects DOWN targets
20
- * on a cooldown. `tick()` is one pass; the timer just calls it on an interval so
21
- * tests are deterministic.
22
- */
23
- export declare class McpReadinessMonitor {
24
- private readonly registry;
25
- private readonly deps;
26
- private timer?;
27
- private readonly cooldownMs;
28
- private readonly intervalMs;
29
- constructor(registry: McpReadinessRegistry, deps: McpReadinessMonitorDeps);
30
- isReady(): boolean;
31
- /** One monitoring pass. The timer calls this; tests call it directly (passing an
32
- * explicit `now` for deterministic cooldown). */
33
- tick(now?: number): Promise<void>;
34
- private _fireRecovered;
35
- start(): void;
36
- stop(): void;
37
- }
38
- //# sourceMappingURL=mcp-readiness-monitor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-readiness-monitor.d.ts","sourceRoot":"","sources":["../../src/smart-agent/mcp-readiness-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC;gBACY;IACZ,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAClD;wEACoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC;gFAC4E;IAC5E,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,KAAK,CAAC,CAAiC;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGjB,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,uBAAuB;IAMhD,OAAO,IAAI,OAAO;IAIlB;sDACkD;IAC5C,IAAI,CAAC,GAAG,SAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAsC7B,cAAc;IAQ5B,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;CAIb"}
@@ -1,81 +0,0 @@
1
- /**
2
- * Periodic readiness probe over the SmartServer-owned MCP target registry. Drives
3
- * the `_ready` signal: probes live clients via `healthCheck()` (→ `ping()`, a LIVE
4
- * round-trip — never the cached `listTools()`), and lazily (re)connects DOWN targets
5
- * on a cooldown. `tick()` is one pass; the timer just calls it on an interval so
6
- * tests are deterministic.
7
- */
8
- export class McpReadinessMonitor {
9
- registry;
10
- deps;
11
- timer;
12
- cooldownMs;
13
- intervalMs;
14
- constructor(registry, deps) {
15
- this.registry = registry;
16
- this.deps = deps;
17
- this.cooldownMs = deps.cooldownMs ?? 30000;
18
- this.intervalMs = deps.intervalMs ?? 10000;
19
- }
20
- isReady() {
21
- return this.registry.allHealthy();
22
- }
23
- /** One monitoring pass. The timer calls this; tests call it directly (passing an
24
- * explicit `now` for deterministic cooldown). */
25
- async tick(now = Date.now()) {
26
- for (const slot of this.registry.list()) {
27
- const wasDown = !slot.healthy;
28
- if (slot.client) {
29
- // healthCheck is OPTIONAL on IMcpClient. A client WITHOUT it is ASSUMED
30
- // healthy (per the interface contract) — never marked down on a missing
31
- // probe, else a DI/plugin client without a probe wedges readiness down
32
- // forever with no config to reconnect.
33
- if (typeof slot.client.healthCheck !== 'function') {
34
- this.registry.markHealthy(slot.id, slot.client);
35
- continue;
36
- }
37
- const hc = await slot.client.healthCheck();
38
- if (hc?.ok) {
39
- this.registry.markHealthy(slot.id, slot.client);
40
- if (wasDown)
41
- await this._fireRecovered(slot.id, slot.scope);
42
- continue;
43
- }
44
- this.registry.markDown(slot.id);
45
- // fall through to a reconnect attempt
46
- }
47
- if (!slot.healthy &&
48
- slot.config !== undefined &&
49
- now - slot.lastAttempt >= this.cooldownMs) {
50
- slot.lastAttempt = now;
51
- try {
52
- const client = await this.deps.connect(slot.config);
53
- this.registry.markHealthy(slot.id, client);
54
- if (wasDown)
55
- await this._fireRecovered(slot.id, slot.scope);
56
- }
57
- catch {
58
- this.registry.markDown(slot.id);
59
- }
60
- }
61
- }
62
- }
63
- async _fireRecovered(id, scope) {
64
- if (scope === 'global')
65
- await this.deps.onGlobalRecovered?.();
66
- else
67
- this.deps.onWorkerRecovered?.(id);
68
- }
69
- start() {
70
- if (this.timer)
71
- return;
72
- this.timer = setInterval(() => void this.tick(), this.intervalMs);
73
- this.timer.unref?.();
74
- }
75
- stop() {
76
- if (this.timer)
77
- clearInterval(this.timer);
78
- this.timer = undefined;
79
- }
80
- }
81
- //# sourceMappingURL=mcp-readiness-monitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-readiness-monitor.js","sourceRoot":"","sources":["../../src/smart-agent/mcp-readiness-monitor.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import type { IMcpClient } from '@mcp-abap-adt/llm-agent';
2
- export type ReadinessScope = 'global' | 'worker';
3
- export interface ReadinessSlot {
4
- id: string;
5
- scope: ReadinessScope;
6
- /** Opaque MCP target config (the monitor's `connect` knows how to use it).
7
- * Absent for DI-only live clients that have no reconnect config. */
8
- config?: unknown;
9
- client?: IMcpClient;
10
- healthy: boolean;
11
- lastAttempt: number;
12
- }
13
- /**
14
- * Registry of configured MCP targets driving SmartServer readiness. A target with
15
- * no healthy client ⇒ NOT ready. Built from CONFIG (not from successful connects),
16
- * so a down-at-boot target is a DOWN slot, not a missing one — which is what makes
17
- * "cold-MCP startup → NOT_READY (no throw), recover later" implementable.
18
- */
19
- export declare class McpReadinessRegistry {
20
- private readonly slots;
21
- /** Register a configured target whose client may not be connected yet.
22
- * Idempotent on `id` (the worker setup runs on both the primary build and the
23
- * per-session rebuild — re-`addTarget` with the same id must keep ONE slot). */
24
- addTarget(id: string, config: unknown, scope: ReadinessScope): void;
25
- /** Register an already-live DI client (no lazy connect needed). */
26
- addLiveClient(id: string, client: IMcpClient, scope: ReadinessScope): void;
27
- markHealthy(id: string, client: IMcpClient): void;
28
- markDown(id: string): void;
29
- allHealthy(): boolean;
30
- list(): ReadinessSlot[];
31
- /** Live execution clients for GLOBAL targets — the source of truth `callMcp`
32
- * reads so a monitor-recovered client is used without a restart. Worker targets
33
- * are excluded: worker clients drive readiness + worker INJECTION (the worker
34
- * hoist), not the top-level callMcp. */
35
- liveClients(): IMcpClient[];
36
- }
37
- //# sourceMappingURL=mcp-readiness-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-readiness-registry.d.ts","sourceRoot":"","sources":["../../src/smart-agent/mcp-readiness-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,cAAc,CAAC;IACtB;yEACqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAE1D;;qFAEiF;IACjF,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAKnE,mEAAmE;IACnE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAI1E,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAQjD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK1B,UAAU,IAAI,OAAO;IAKrB,IAAI,IAAI,aAAa,EAAE;IAIvB;;;6CAGyC;IACzC,WAAW,IAAI,UAAU,EAAE;CAO5B"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Registry of configured MCP targets driving SmartServer readiness. A target with
3
- * no healthy client ⇒ NOT ready. Built from CONFIG (not from successful connects),
4
- * so a down-at-boot target is a DOWN slot, not a missing one — which is what makes
5
- * "cold-MCP startup → NOT_READY (no throw), recover later" implementable.
6
- */
7
- export class McpReadinessRegistry {
8
- slots = new Map();
9
- /** Register a configured target whose client may not be connected yet.
10
- * Idempotent on `id` (the worker setup runs on both the primary build and the
11
- * per-session rebuild — re-`addTarget` with the same id must keep ONE slot). */
12
- addTarget(id, config, scope) {
13
- if (this.slots.has(id))
14
- return;
15
- this.slots.set(id, { id, scope, config, healthy: false, lastAttempt: 0 });
16
- }
17
- /** Register an already-live DI client (no lazy connect needed). */
18
- addLiveClient(id, client, scope) {
19
- this.slots.set(id, { id, scope, client, healthy: true, lastAttempt: 0 });
20
- }
21
- markHealthy(id, client) {
22
- const s = this.slots.get(id);
23
- if (s) {
24
- s.client = client;
25
- s.healthy = true;
26
- }
27
- }
28
- markDown(id) {
29
- const s = this.slots.get(id);
30
- if (s)
31
- s.healthy = false;
32
- }
33
- allHealthy() {
34
- for (const s of this.slots.values())
35
- if (!s.healthy)
36
- return false;
37
- return true;
38
- }
39
- list() {
40
- return [...this.slots.values()];
41
- }
42
- /** Live execution clients for GLOBAL targets — the source of truth `callMcp`
43
- * reads so a monitor-recovered client is used without a restart. Worker targets
44
- * are excluded: worker clients drive readiness + worker INJECTION (the worker
45
- * hoist), not the top-level callMcp. */
46
- liveClients() {
47
- const out = [];
48
- for (const s of this.slots.values()) {
49
- if (s.scope === 'global' && s.healthy && s.client)
50
- out.push(s.client);
51
- }
52
- return out;
53
- }
54
- }
55
- //# sourceMappingURL=mcp-readiness-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-readiness-registry.js","sourceRoot":"","sources":["../../src/smart-agent/mcp-readiness-registry.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IACd,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE1D;;qFAEiF;IACjF,SAAS,CAAC,EAAU,EAAE,MAAe,EAAE,KAAqB;QAC1D,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO;QAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,mEAAmE;IACnE,aAAa,CAAC,EAAU,EAAE,MAAkB,EAAE,KAAqB;QACjE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,MAAkB;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC;YACN,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAClB,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC;YAAE,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,CAAC,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IAED;;;6CAGyC;IACzC,WAAW;QACT,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=skill-plugins-config.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-plugins-config.test.d.ts","sourceRoot":"","sources":["../../src/smart-agent/skill-plugins-config.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-plugins-config.test.js","sourceRoot":"","sources":["../../src/smart-agent/skill-plugins-config.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=skill-plugins-host-factory.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-plugins-host-factory.test.d.ts","sourceRoot":"","sources":["../../src/smart-agent/skill-plugins-host-factory.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-plugins-host-factory.test.js","sourceRoot":"","sources":["../../src/smart-agent/skill-plugins-host-factory.test.ts"],"names":[],"mappings":"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"}