@noodleseed/one 0.169.0 → 0.171.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 (189) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +6 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/capabilities.d.ts +19 -0
  5. package/dist/commands/capabilities.d.ts.map +1 -0
  6. package/dist/commands/capabilities.js +128 -0
  7. package/dist/commands/capabilities.js.map +1 -0
  8. package/dist/commands/catalog.d.ts.map +1 -1
  9. package/dist/commands/catalog.js +2 -1
  10. package/dist/commands/catalog.js.map +1 -1
  11. package/dist/commands/whatsapp-ops.d.ts +13 -0
  12. package/dist/commands/whatsapp-ops.d.ts.map +1 -0
  13. package/dist/commands/whatsapp-ops.js +244 -0
  14. package/dist/commands/whatsapp-ops.js.map +1 -0
  15. package/dist/commands/whatsapp-output.d.ts +3 -0
  16. package/dist/commands/whatsapp-output.d.ts.map +1 -0
  17. package/dist/commands/whatsapp-output.js +70 -0
  18. package/dist/commands/whatsapp-output.js.map +1 -0
  19. package/dist/dev.js +2 -0
  20. package/dist/dev.js.map +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/plugin-mode/plugin-operation-contract.d.ts +3 -3
  26. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +8 -0
  27. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +1 -0
  28. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +2 -2
  29. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +5 -0
  30. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +3 -2
  31. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +6 -0
  32. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  33. package/node_modules/@noodle-borg/app-audit/dist/audit-embedded-assistant.js +2 -0
  34. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-configuration.js +2 -1
  35. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-interactive.d.ts +1 -0
  36. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-interactive.js +4 -1
  37. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-model-context.js +9 -4
  38. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-turn-context.d.ts +16 -0
  39. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-turn-context.js +19 -0
  40. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-coordinator.d.ts +145 -0
  41. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-coordinator.js +378 -0
  42. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-inbox.js +160 -0
  43. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-provider-blocks.d.ts +18 -0
  44. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-provider-blocks.js +69 -0
  45. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-spend.js +82 -0
  46. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-store.d.ts +42 -0
  47. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-store.js +76 -0
  48. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-types.d.ts +134 -0
  49. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-types.js +72 -0
  50. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-work.d.ts +20 -0
  51. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-work.js +221 -0
  52. package/node_modules/@noodle-borg/assistant-gateway/dist/messaging-tool-dispatch.d.ts +15 -0
  53. package/node_modules/@noodle-borg/assistant-gateway/dist/messaging-tool-dispatch.js +34 -0
  54. package/node_modules/@noodle-borg/assistant-gateway/dist/model-request.d.ts +19 -1
  55. package/node_modules/@noodle-borg/assistant-gateway/dist/model-request.js +22 -6
  56. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.d.ts +7 -0
  57. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.js +7 -0
  58. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant-appearance-store.js +83 -0
  59. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant-elevation.js +151 -0
  60. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant-interaction-writes.js +45 -0
  61. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant-interactions.js +340 -0
  62. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.js +439 -0
  63. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-channel-store.js +102 -0
  64. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-continuity-store.js +159 -0
  65. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-elevation-store.js +110 -0
  66. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-embed-store.js +134 -0
  67. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres.js +11 -0
  68. package/node_modules/@noodle-borg/assistant-gateway/dist/public-surface.d.ts +8 -0
  69. package/node_modules/@noodle-borg/assistant-gateway/dist/public-surface.js +23 -0
  70. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +19 -4
  71. package/node_modules/@noodle-borg/authoring/dist/assistant.js +51 -20
  72. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +2 -1
  73. package/node_modules/@noodle-borg/authoring/dist/index.js +2 -1
  74. package/node_modules/@noodle-borg/authoring/dist/load-authored.js +1 -1
  75. package/node_modules/@noodle-borg/authoring/dist/recording.d.ts +2 -1
  76. package/node_modules/@noodle-borg/authoring/dist/recording.js +29 -1
  77. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +3 -0
  78. package/node_modules/@noodle-borg/authoring/dist/server.js +5 -1
  79. package/node_modules/@noodle-borg/authoring/dist/web-capabilities.d.ts +17 -0
  80. package/node_modules/@noodle-borg/authoring/dist/web-capabilities.js +15 -0
  81. package/node_modules/@noodle-borg/authoring/package.json +1 -0
  82. package/node_modules/@noodle-borg/capabilities/dist/index.js +7 -0
  83. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-channels.js +121 -0
  84. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.js +102 -0
  85. package/node_modules/@noodle-borg/cli-catalog/dist/index.js +1 -0
  86. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js +3 -0
  87. package/node_modules/@noodle-borg/compiler/dist/artifact/config.js +1 -1
  88. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +2 -0
  89. package/node_modules/@noodle-borg/compiler/dist/artifact/version.d.ts +2 -1
  90. package/node_modules/@noodle-borg/compiler/dist/artifact/version.js +2 -1
  91. package/node_modules/@noodle-borg/compiler/dist/compile.js +2 -0
  92. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
  93. package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.js +18 -3
  94. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +106 -12
  95. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +60 -29
  96. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts +1 -0
  97. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.js +19 -0
  98. package/node_modules/@noodle-borg/compiler/dist/web-capabilities.js +55 -0
  99. package/node_modules/@noodle-borg/compiler/package.json +1 -0
  100. package/node_modules/@noodle-borg/connector-http/dist/ssrf.js +5 -0
  101. package/node_modules/@noodle-borg/knowledge-crawl/dist/bounded-body.js +38 -0
  102. package/node_modules/@noodle-borg/knowledge-crawl/dist/first-party.js +2 -3
  103. package/node_modules/@noodle-borg/knowledge-crawl/dist/html-text.js +10 -2
  104. package/node_modules/@noodle-borg/knowledge-crawl/dist/index.d.ts +1 -0
  105. package/node_modules/@noodle-borg/knowledge-crawl/dist/index.js +1 -0
  106. package/node_modules/@noodle-borg/knowledge-crawl/dist/page-reader.d.ts +26 -0
  107. package/node_modules/@noodle-borg/knowledge-crawl/dist/page-reader.js +127 -0
  108. package/node_modules/@noodle-borg/knowledge-crawl/dist/robots.js +48 -23
  109. package/node_modules/@noodle-borg/knowledge-crawl/package.json +1 -0
  110. package/node_modules/@noodle-borg/managed-capabilities/dist/budget.d.ts +29 -0
  111. package/node_modules/@noodle-borg/managed-capabilities/dist/budget.js +124 -0
  112. package/node_modules/@noodle-borg/managed-capabilities/dist/contracts.d.ts +212 -0
  113. package/node_modules/@noodle-borg/managed-capabilities/dist/contracts.js +113 -0
  114. package/node_modules/@noodle-borg/managed-capabilities/dist/errors.d.ts +8 -0
  115. package/node_modules/@noodle-borg/managed-capabilities/dist/errors.js +21 -0
  116. package/node_modules/@noodle-borg/managed-capabilities/dist/executor.d.ts +26 -0
  117. package/node_modules/@noodle-borg/managed-capabilities/dist/executor.js +156 -0
  118. package/node_modules/@noodle-borg/managed-capabilities/dist/limits.d.ts +15 -0
  119. package/node_modules/@noodle-borg/managed-capabilities/dist/limits.js +15 -0
  120. package/node_modules/@noodle-borg/managed-capabilities/dist/operator-contracts.d.ts +159 -0
  121. package/node_modules/@noodle-borg/managed-capabilities/dist/operator-contracts.js +69 -0
  122. package/node_modules/@noodle-borg/managed-capabilities/dist/operator-route.d.ts +5 -0
  123. package/node_modules/@noodle-borg/managed-capabilities/dist/operator-route.js +160 -0
  124. package/node_modules/@noodle-borg/managed-capabilities/dist/policy-store.d.ts +34 -0
  125. package/node_modules/@noodle-borg/managed-capabilities/dist/policy-store.js +61 -0
  126. package/node_modules/@noodle-borg/managed-capabilities/dist/portable.d.ts +10 -0
  127. package/node_modules/@noodle-borg/managed-capabilities/dist/portable.js +10 -0
  128. package/node_modules/@noodle-borg/managed-capabilities/dist/service.d.ts +83 -0
  129. package/node_modules/@noodle-borg/managed-capabilities/dist/service.js +139 -0
  130. package/node_modules/@noodle-borg/managed-capabilities/dist/urls.d.ts +3 -0
  131. package/node_modules/@noodle-borg/managed-capabilities/dist/urls.js +30 -0
  132. package/node_modules/@noodle-borg/managed-capabilities/package.json +49 -0
  133. package/node_modules/@noodle-borg/module/dist/contract.d.ts +11 -0
  134. package/node_modules/@noodle-borg/module-audit/dist/index.js +37 -0
  135. package/node_modules/@noodle-borg/module-audit/dist/postgres-audit.js +126 -0
  136. package/node_modules/@noodle-borg/module-audit/dist/route.js +66 -0
  137. package/node_modules/@noodle-borg/runtime/dist/confirmation.js +29 -0
  138. package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +2 -0
  139. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +3 -0
  140. package/node_modules/@noodle-borg/runtime/dist/execute.js +6 -1
  141. package/node_modules/@noodle-borg/runtime/dist/index.d.ts +2 -1
  142. package/node_modules/@noodle-borg/runtime/dist/index.js +2 -1
  143. package/node_modules/@noodle-borg/runtime/dist/interactive.js +10 -1
  144. package/node_modules/@noodle-borg/runtime/dist/managed-origins.js +8 -4
  145. package/node_modules/@noodle-borg/runtime/dist/operation-execution.js +3 -0
  146. package/node_modules/@noodle-borg/runtime/dist/postgres-state-handles.js +311 -0
  147. package/node_modules/@noodle-borg/runtime/dist/postgres.js +4 -0
  148. package/node_modules/@noodle-borg/runtime/dist/result-meta.d.ts +2 -0
  149. package/node_modules/@noodle-borg/runtime/dist/result-meta.js +6 -0
  150. package/node_modules/@noodle-borg/runtime/dist/result.d.ts +4 -0
  151. package/node_modules/@noodle-borg/runtime/dist/web-capabilities.d.ts +71 -0
  152. package/node_modules/@noodle-borg/runtime/dist/web-capabilities.js +41 -0
  153. package/node_modules/@noodle-borg/runtime/package.json +1 -0
  154. package/node_modules/@noodle-borg/service/dist/assistant-composition.js +18 -0
  155. package/node_modules/@noodle-borg/service/dist/build-info.js +5 -2
  156. package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-coordinator.js +7 -0
  157. package/node_modules/@noodle-borg/service/dist/channels/360dialog.js +233 -0
  158. package/node_modules/@noodle-borg/service/dist/channels/cipher.js +37 -0
  159. package/node_modules/@noodle-borg/service/dist/channels/composition.js +37 -0
  160. package/node_modules/@noodle-borg/service/dist/channels/inference-guard.js +53 -0
  161. package/node_modules/@noodle-borg/service/dist/channels/runtime.js +337 -0
  162. package/node_modules/@noodle-borg/service/dist/channels/worker-loop.js +50 -0
  163. package/node_modules/@noodle-borg/service/dist/local-options.d.ts +1 -0
  164. package/node_modules/@noodle-borg/service/dist/local-web-capabilities.js +13 -0
  165. package/node_modules/@noodle-borg/service/dist/mcp-protocol-runtime.js +21 -0
  166. package/node_modules/@noodle-borg/service/dist/modules/route-dispatch.js +13 -0
  167. package/node_modules/@noodle-borg/service/dist/registry-compile.js +3 -0
  168. package/node_modules/@noodle-borg/service/dist/registry-types.d.ts +1 -0
  169. package/node_modules/@noodle-borg/service/dist/registry.js +3 -0
  170. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +66 -35
  171. package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js +7 -4
  172. package/node_modules/@noodle-borg/service/dist/routes/assistant-model-binding.js +6 -2
  173. package/node_modules/@noodle-borg/service/dist/routes/business-information-channels.js +14 -1
  174. package/node_modules/@noodle-borg/service/dist/routes/whatsapp.js +238 -0
  175. package/node_modules/@noodle-borg/service/dist/serve-local.js +14 -0
  176. package/node_modules/@noodle-borg/service/dist/serve-resource-auth.js +10 -0
  177. package/node_modules/@noodle-borg/service/dist/service.js +37 -33
  178. package/node_modules/@noodle-borg/service/dist/web-capabilities.js +39 -0
  179. package/node_modules/@noodle-borg/service/package.json +3 -1
  180. package/node_modules/@noodle-borg/wire-contracts/dist/application-channels.d.ts +33 -0
  181. package/node_modules/@noodle-borg/wire-contracts/dist/application-channels.js +9 -0
  182. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +2 -0
  183. package/node_modules/@noodle-borg/wire-contracts/dist/index.js +2 -0
  184. package/node_modules/@noodle-borg/wire-contracts/dist/service-info.d.ts +2 -0
  185. package/node_modules/@noodle-borg/wire-contracts/dist/service-info.js +10 -2
  186. package/node_modules/@noodle-borg/wire-contracts/dist/whatsapp.d.ts +426 -0
  187. package/node_modules/@noodle-borg/wire-contracts/dist/whatsapp.js +213 -0
  188. package/node_modules/@noodle-borg/wire-contracts/package.json +1 -0
  189. package/package.json +3 -2
@@ -2,6 +2,7 @@ import { InMemoryDailyCounterStore } from '@noodle-borg/admission-limits/portabl
2
2
  import { InMemoryAssistantAppearanceSettingsStore, InMemoryAssistantStore, } from '@noodle-borg/assistant-gateway/portable';
3
3
  import { allowAllGate, InMemoryControlPlaneStore } from '@noodle-borg/control-plane/portable';
4
4
  import { dispatchKnowledgeRequest } from '@noodle-borg/knowledge-operations/portable';
5
+ import { capabilityOperatorRoute } from '@noodle-borg/managed-capabilities';
5
6
  import { OPENAI_APPS_CHALLENGE_PATH } from '@noodle-borg/module';
6
7
  import { applySecurityHeaders, createMcpRouter, enforceHttps, noopLogger, sendJson, } from '@noodle-borg/transport-http';
7
8
  import { AnonymousConsumerLimiter, createAdmissionGate } from './admission.js';
@@ -10,9 +11,11 @@ import { createApplicationServingRuntime } from './application-runtime-target.js
10
11
  import { createArchivePreflight } from './archive-preflight.js';
11
12
  import { ArchiveSweeper, resolveArchiveRetentionDays } from './archive-sweeper.js';
12
13
  import { serveLocalAsset } from './assets.js';
14
+ import { assistantRouteDependencies } from './assistant-composition.js';
13
15
  import { resolveBuildInfo, serviceInfoPayload } from './build-info.js';
14
16
  import { createBusinessInformationRuntime, resolvePrivateInstallationDefinition, } from './business-information-runtime.js';
15
17
  import { serviceCapabilityReport } from './capabilities.js';
18
+ import { createWhatsAppRuntime } from './channels/composition.js';
16
19
  import { rejectIncompatibleCli } from './client-compatibility.js';
17
20
  import { createDataPlaneMembershipAuthorizer } from './data-plane-membership.js';
18
21
  import { DEVELOPER_MCP_PATH, handleDeveloperMcpRequest } from './developer-mcp/mount.js';
@@ -49,6 +52,7 @@ import { dispatchProtectedResourceMetadata } from './routes/protected-resource-m
49
52
  import { dispatchResourceReads } from './routes/resource-read-dispatch.js';
50
53
  import { handleRollback } from './routes/rollback.js';
51
54
  import { createServicePrincipalDispatcher } from './routes/service-principals-dispatch.js';
55
+ import { dispatchWhatsAppRoutes } from './routes/whatsapp.js';
52
56
  import { servicePrincipalDataPlaneHooks } from './service-principal-data-plane.js';
53
57
  import { InMemoryAlertRuleStore } from './store/alert-rules.js';
54
58
  import { StdoutAuditSink } from './store/audit.js';
@@ -163,7 +167,12 @@ export function createServiceHandler(registry, options = {}) {
163
167
  });
164
168
  archiveSweeper.maybeSweep();
165
169
  const moduleRouteDeps = {
166
- routes: moduleHost.routes,
170
+ routes: [
171
+ ...moduleHost.routes,
172
+ ...(options.capabilities === undefined
173
+ ? []
174
+ : [capabilityOperatorRoute(options.capabilities)]),
175
+ ],
167
176
  logger,
168
177
  gate,
169
178
  controlPlane,
@@ -175,6 +184,23 @@ export function createServiceHandler(registry, options = {}) {
175
184
  ? {}
176
185
  : { developerGrants: options.developerGrantStore }),
177
186
  };
187
+ const assistantDeps = assistantRouteDependencies(options, {
188
+ registry,
189
+ resolveRuntimeTarget,
190
+ store: assistantStore,
191
+ appearance: assistantAppearance,
192
+ gate,
193
+ controlPlane,
194
+ audit: activeAudit,
195
+ maxBody,
196
+ serviceBase: (request) => options.publicBaseUrl ?? baseFromRequest(request, tls),
197
+ logger,
198
+ });
199
+ const whatsapp = createWhatsAppRuntime(options.whatsapp, assistantDeps, {
200
+ allowance: moduleHost.resolveActivityHistoryAllowance,
201
+ installations: businessInformationStore,
202
+ activity,
203
+ });
178
204
  return (req, res) => {
179
205
  const url = new URL(req.url ?? '/', 'http://localhost');
180
206
  // Liveness/readiness probes: un-gated and **not** HTTPS-enforced — Cloud Run's internal probe is plain
@@ -206,7 +232,7 @@ export function createServiceHandler(registry, options = {}) {
206
232
  // post-deploy smoke can confirm exactly which commit is live. Non-sensitive fields only.
207
233
  if (req.method === 'GET' && url.pathname === '/v1/service/info') {
208
234
  applySecurityHeaders(res, tls);
209
- return sendJson(res, 200, serviceInfoPayload(buildInfo, options.developerMcp === true));
235
+ return sendJson(res, 200, serviceInfoPayload(buildInfo, options.developerMcp === true, whatsapp !== undefined));
210
236
  }
211
237
  if (url.pathname.startsWith('/v1/') && rejectIncompatibleCli(req, res, buildInfo, tls))
212
238
  return;
@@ -279,6 +305,7 @@ export function createServiceHandler(registry, options = {}) {
279
305
  if (businessInformationStore !== undefined &&
280
306
  options.businessInformationEnabled !== false &&
281
307
  dispatchBusinessInformationRoutes(req, res, url, {
308
+ ...(whatsapp ? { readWhatsApp: whatsapp.projection.bind(whatsapp) } : {}),
282
309
  store: businessInformationStore,
283
310
  ...(businessOnboarding ? { businessOnboarding } : {}),
284
311
  activateInstallation,
@@ -324,38 +351,15 @@ export function createServiceHandler(registry, options = {}) {
324
351
  })) {
325
352
  return;
326
353
  }
354
+ if (url.pathname.includes('/channels/whatsapp')) {
355
+ applySecurityHeaders(res, tls);
356
+ if (enforceHttps(req, res, tls))
357
+ return;
358
+ if (dispatchWhatsAppRoutes(req, res, url, whatsapp, options.developerGrantStore))
359
+ return;
360
+ }
327
361
  if (dispatchAssistantRoutes(req, res, url, {
328
- registry,
329
- resolveRuntimeTarget,
330
- store: assistantStore,
331
- appearance: assistantAppearance,
332
- ...(options.publicEmbeds !== undefined ? { publicEmbeds: options.publicEmbeds } : {}),
333
- ...(options.elevations !== undefined ? { elevations: options.elevations } : {}),
334
- ...(options.elevationCoordinator !== undefined
335
- ? { elevationCoordinator: options.elevationCoordinator }
336
- : {}),
337
- ...(options.admissionCounters !== undefined
338
- ? { admissionCounters: options.admissionCounters }
339
- : {}),
340
- ...(options.admissionEnvelope !== undefined
341
- ? { admissionEnvelope: options.admissionEnvelope }
342
- : {}),
343
- gate,
344
- controlPlane,
345
- audit: activeAudit,
346
- maxBody,
347
- serviceBase: (request) => options.publicBaseUrl ?? baseFromRequest(request, tls),
348
- ...(options.assistantModelFetch !== undefined
349
- ? { modelFetch: options.assistantModelFetch }
350
- : {}),
351
- ...(options.managedAssistantModelResolver !== undefined
352
- ? { managedModelResolver: options.managedAssistantModelResolver }
353
- : {}),
354
- ...(options.captureRequestEvent !== undefined
355
- ? { captureRequestEvent: options.captureRequestEvent }
356
- : {}),
357
- ...(options.clock !== undefined ? { clock: options.clock } : {}),
358
- logger,
362
+ ...assistantDeps,
359
363
  applySecurityHeaders,
360
364
  enforceHttps,
361
365
  sendJson,
@@ -0,0 +1,39 @@
1
+ import { CapabilityError } from '@noodle-borg/managed-capabilities';
2
+ import { evaluateToolAuthorization } from '@noodle-borg/protocol';
3
+ import { WebCapabilityConnector } from '@noodle-borg/runtime';
4
+ export function deploymentWebConnector(artifact, tenant, deploymentId, service) {
5
+ if (!artifact.server.capabilities?.length)
6
+ return undefined;
7
+ return new WebCapabilityConnector(artifact.server.capabilities, async (declaration, request, call) => {
8
+ if (service === undefined ||
9
+ deploymentId === undefined ||
10
+ call.execution === undefined ||
11
+ call.capabilityBudget === undefined) {
12
+ throw new CapabilityError('capability_unavailable');
13
+ }
14
+ return service.execute(declaration, request, {
15
+ tenant,
16
+ deploymentId,
17
+ executionId: call.execution.id,
18
+ authorized: evaluateToolAuthorization(declaration.authorization === undefined
19
+ ? undefined
20
+ : {
21
+ ...(declaration.authorization.discovery === 'public'
22
+ ? { discovery: 'public' }
23
+ : {}),
24
+ ...(declaration.authorization.requiredScopes === undefined
25
+ ? {}
26
+ : { requiredScopes: declaration.authorization.requiredScopes }),
27
+ ...(declaration.authorization.allowedRoles === undefined
28
+ ? {}
29
+ : { allowedRoles: declaration.authorization.allowedRoles }),
30
+ }, call.caller).allow,
31
+ anonymous: call.caller === undefined || call.caller.identityKind === 'anonymous',
32
+ ...(call.caller === undefined ? {} : { subject: call.caller.subject }),
33
+ ...(call.publicAdmission === undefined ? {} : { network: call.publicAdmission.network }),
34
+ budget: call.capabilityBudget,
35
+ ...(call.signal === undefined ? {} : { signal: call.signal }),
36
+ });
37
+ });
38
+ }
39
+ //# sourceMappingURL=web-capabilities.js.map
@@ -37,9 +37,10 @@
37
37
  "typecheck": "tsc -p tsconfig.json --noEmit"
38
38
  },
39
39
  "dependencies": {
40
+ "@noodle-borg/managed-capabilities": "0.0.0",
40
41
  "@modelcontextprotocol/sdk": "^1.29.0",
41
42
  "@noodle-borg/admission-limits": "0.0.0",
42
- "@noodle-borg/agent-kit": "0.104.0",
43
+ "@noodle-borg/agent-kit": "0.106.0",
43
44
  "@noodle-borg/app-package": "0.0.0",
44
45
  "@noodle-borg/assistant-gateway": "0.0.0",
45
46
  "@noodle-borg/auth": "0.0.0",
@@ -51,6 +52,7 @@
51
52
  "@noodle-borg/developer-mcp": "0.0.0",
52
53
  "@noodle-borg/external-credential-provider": "0.0.0",
53
54
  "@noodle-borg/knowledge": "0.0.0",
55
+ "@noodle-borg/knowledge-crawl": "0.0.0",
54
56
  "@noodle-borg/knowledge-operations": "0.0.0",
55
57
  "@noodle-borg/module": "0.0.0",
56
58
  "@noodle-borg/module-audit": "0.0.0",
@@ -37,6 +37,17 @@ export declare const ApplicationChannelsProjectionSchema: z.ZodObject<{
37
37
  }, z.core.$strict>>;
38
38
  }, z.core.$strict>>;
39
39
  }, z.core.$strict>;
40
+ whatsapp: z.ZodOptional<z.ZodObject<{
41
+ status: z.ZodEnum<{
42
+ unavailable: "unavailable";
43
+ ready: "ready";
44
+ paused: "paused";
45
+ }>;
46
+ bindingId: z.ZodOptional<z.ZodString>;
47
+ revision: z.ZodOptional<z.ZodNumber>;
48
+ capabilities: z.ZodArray<z.ZodString>;
49
+ reason: z.ZodOptional<z.ZodString>;
50
+ }, z.core.$strict>>;
40
51
  }, z.core.$strict>;
41
52
  export type ApplicationChannelsProjection = z.infer<typeof ApplicationChannelsProjectionSchema>;
42
53
  export declare const ApplicationChannelsResponseSchema: z.ZodObject<{
@@ -79,6 +90,17 @@ export declare const ApplicationChannelsResponseSchema: z.ZodObject<{
79
90
  }, z.core.$strict>>;
80
91
  }, z.core.$strict>>;
81
92
  }, z.core.$strict>;
93
+ whatsapp: z.ZodOptional<z.ZodObject<{
94
+ status: z.ZodEnum<{
95
+ unavailable: "unavailable";
96
+ ready: "ready";
97
+ paused: "paused";
98
+ }>;
99
+ bindingId: z.ZodOptional<z.ZodString>;
100
+ revision: z.ZodOptional<z.ZodNumber>;
101
+ capabilities: z.ZodArray<z.ZodString>;
102
+ reason: z.ZodOptional<z.ZodString>;
103
+ }, z.core.$strict>>;
82
104
  }, z.core.$strict>;
83
105
  }, z.core.$strict>;
84
106
  export declare const ApplicationChannelsClientResponseSchema: z.ZodObject<{
@@ -97,6 +119,17 @@ export declare const ApplicationChannelsClientResponseSchema: z.ZodObject<{
97
119
  url: z.ZodOptional<z.ZodURL>;
98
120
  accessMode: z.ZodOptional<z.ZodString>;
99
121
  }, z.core.$strip>;
122
+ whatsapp: z.ZodOptional<z.ZodObject<{
123
+ status: z.ZodEnum<{
124
+ unavailable: "unavailable";
125
+ ready: "ready";
126
+ paused: "paused";
127
+ }>;
128
+ bindingId: z.ZodOptional<z.ZodString>;
129
+ revision: z.ZodOptional<z.ZodNumber>;
130
+ capabilities: z.ZodArray<z.ZodString>;
131
+ reason: z.ZodOptional<z.ZodString>;
132
+ }, z.core.$strip>>;
100
133
  assistant: z.ZodObject<{
101
134
  status: z.ZodEnum<{
102
135
  unavailable: "unavailable";
@@ -39,6 +39,13 @@ const assistant = z
39
39
  usage: usage.optional(),
40
40
  })
41
41
  .strict();
42
+ const whatsapp = z.strictObject({
43
+ status,
44
+ bindingId: z.string().max(256).optional(),
45
+ revision: z.number().int().positive().optional(),
46
+ capabilities: z.array(z.string().max(256)).max(64),
47
+ reason: z.string().max(200).optional(),
48
+ });
42
49
  export const ApplicationChannelsProjectionSchema = z
43
50
  .object({
44
51
  revision: z.number().int().positive(),
@@ -47,6 +54,7 @@ export const ApplicationChannelsProjectionSchema = z
47
54
  deploymentId: z.string().min(1).max(256).optional(),
48
55
  mcp,
49
56
  assistant,
57
+ whatsapp: whatsapp.optional(),
50
58
  })
51
59
  .strict();
52
60
  export const ApplicationChannelsResponseSchema = z
@@ -57,6 +65,7 @@ export const ApplicationChannelsClientResponseSchema = z
57
65
  ok: z.literal(true),
58
66
  data: ApplicationChannelsProjectionSchema.extend({
59
67
  mcp: mcp.strip(),
68
+ whatsapp: whatsapp.strip().optional(),
60
69
  assistant: assistant
61
70
  .extend({
62
71
  usage: usage
@@ -385,6 +385,7 @@ export declare const configValuesListResponseSchema: z.ZodObject<{
385
385
  }, z.core.$strip>;
386
386
  /** Render a wire-schema failure as one actionable line (first issue, dotted path first). */
387
387
  export declare function formatWireError(error: z.ZodError): string;
388
+ export * from '@noodle-borg/managed-capabilities/contracts';
388
389
  export * from './application-activity.js';
389
390
  export * from './application-connections.js';
390
391
  export * from './application-onboarding.js';
@@ -392,4 +393,5 @@ export * from './billing-catalog.js';
392
393
  export * from './deployment-deletion.js';
393
394
  export * from './operation-coordination.js';
394
395
  export { MIXED_CUSTOMER_AUTH_FEATURE_VERSION, type ServiceInfoClientResponse, type ServiceInfoResponse, serviceInfoClientResponseSchema, serviceInfoResponseSchema, } from './service-info.js';
396
+ export * from './whatsapp.js';
395
397
  //# sourceMappingURL=index.d.ts.map
@@ -224,6 +224,7 @@ export function formatWireError(error) {
224
224
  const path = issue.path.map(String).join('.');
225
225
  return path === '' ? issue.message : `"${path}": ${issue.message}`;
226
226
  }
227
+ export * from '@noodle-borg/managed-capabilities/contracts';
227
228
  export * from './application-activity.js';
228
229
  export * from './application-connections.js';
229
230
  export * from './application-onboarding.js';
@@ -231,4 +232,5 @@ export * from './billing-catalog.js';
231
232
  export * from './deployment-deletion.js';
232
233
  export * from './operation-coordination.js';
233
234
  export { MIXED_CUSTOMER_AUTH_FEATURE_VERSION, serviceInfoClientResponseSchema, serviceInfoResponseSchema, } from './service-info.js';
235
+ export * from './whatsapp.js';
234
236
  //# sourceMappingURL=index.js.map
@@ -7,6 +7,7 @@ export declare const serviceInfoResponseSchema: z.ZodObject<{
7
7
  }, z.core.$strict>>;
8
8
  features: z.ZodObject<{
9
9
  mixedCustomerAuth: z.ZodLiteral<1>;
10
+ whatsapp: z.ZodOptional<z.ZodLiteral<1>>;
10
11
  }, z.core.$strict>;
11
12
  ok: z.ZodLiteral<true>;
12
13
  status: z.ZodLiteral<"ok">;
@@ -25,6 +26,7 @@ export declare const serviceInfoClientResponseSchema: z.ZodObject<{
25
26
  }, z.core.$strip>>;
26
27
  features: z.ZodOptional<z.ZodObject<{
27
28
  mixedCustomerAuth: z.ZodOptional<z.ZodNumber>;
29
+ whatsapp: z.ZodOptional<z.ZodNumber>;
28
30
  }, z.core.$strip>>;
29
31
  ok: z.ZodLiteral<true>;
30
32
  status: z.ZodLiteral<"ok">;
@@ -15,12 +15,20 @@ const buildInfoShape = {
15
15
  export const serviceInfoResponseSchema = z.strictObject({
16
16
  ...buildInfoShape,
17
17
  developerPlugin: z.strictObject({ mcpCapabilityVersion: z.string().min(1) }).optional(),
18
- features: z.strictObject({ mixedCustomerAuth: z.literal(MIXED_CUSTOMER_AUTH_FEATURE_VERSION) }),
18
+ features: z.strictObject({
19
+ mixedCustomerAuth: z.literal(MIXED_CUSTOMER_AUTH_FEATURE_VERSION),
20
+ whatsapp: z.literal(1).optional(),
21
+ }),
19
22
  });
20
23
  /** Older services may omit features; future fields are stripped at each structured metadata layer. */
21
24
  export const serviceInfoClientResponseSchema = z.object({
22
25
  ...buildInfoShape,
23
26
  developerPlugin: z.object({ mcpCapabilityVersion: z.string().min(1) }).optional(),
24
- features: z.object({ mixedCustomerAuth: z.number().int().positive().optional() }).optional(),
27
+ features: z
28
+ .object({
29
+ mixedCustomerAuth: z.number().int().positive().optional(),
30
+ whatsapp: z.number().int().positive().optional(),
31
+ })
32
+ .optional(),
25
33
  });
26
34
  //# sourceMappingURL=service-info.js.map