@classytic/arc 2.8.1 → 2.8.4

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 (107) hide show
  1. package/README.md +22 -1
  2. package/dist/{ResourceRegistry-Dtcojmu8.mjs → ResourceRegistry-Dq3_zBQP.mjs} +5 -5
  3. package/dist/adapters/index.d.mts +2 -2
  4. package/dist/audit/index.d.mts +1 -1
  5. package/dist/audit/index.mjs +1 -1
  6. package/dist/audit/mongodb.d.mts +1 -1
  7. package/dist/audit/mongodb.mjs +1 -1
  8. package/dist/auth/index.d.mts +4 -4
  9. package/dist/auth/redis-session.d.mts +1 -1
  10. package/dist/cache/index.d.mts +2 -2
  11. package/dist/cli/commands/describe.mjs +1 -1
  12. package/dist/cli/commands/docs.mjs +2 -2
  13. package/dist/cli/commands/generate.mjs +1 -1
  14. package/dist/cli/commands/init.mjs +10 -10
  15. package/dist/cli/commands/introspect.mjs +3 -3
  16. package/dist/core/index.d.mts +3 -3
  17. package/dist/core/index.mjs +4 -4
  18. package/dist/{core-CrLDuqoT.mjs → core-DKSwNSXf.mjs} +1 -1
  19. package/dist/{createApp-p2OThysU.mjs → createApp-BOYjBgdI.mjs} +16 -7
  20. package/dist/{defineResource-CqeUltrW.mjs → defineResource-Bb_Bdhtw.mjs} +42 -27
  21. package/dist/docs/index.d.mts +2 -2
  22. package/dist/docs/index.mjs +1 -1
  23. package/dist/dynamic/index.d.mts +2 -2
  24. package/dist/dynamic/index.mjs +1 -1
  25. package/dist/{errorHandler-DJ7OAB2V.d.mts → errorHandler-CdZDavNH.d.mts} +2 -2
  26. package/dist/{eventPlugin-Cdjwo0Gv.d.mts → eventPlugin-CVxlE6De.d.mts} +1 -1
  27. package/dist/events/index.d.mts +3 -3
  28. package/dist/events/index.mjs +1 -1
  29. package/dist/events/transports/redis-stream-entry.d.mts +1 -1
  30. package/dist/events/transports/redis-stream-entry.mjs +3 -1
  31. package/dist/events/transports/redis.d.mts +1 -1
  32. package/dist/factory/index.d.mts +1 -1
  33. package/dist/factory/index.mjs +2 -152
  34. package/dist/hooks/index.d.mts +1 -1
  35. package/dist/idempotency/index.d.mts +3 -3
  36. package/dist/idempotency/mongodb.d.mts +1 -1
  37. package/dist/idempotency/mongodb.mjs +18 -6
  38. package/dist/idempotency/redis.d.mts +1 -1
  39. package/dist/idempotency/redis.mjs +10 -1
  40. package/dist/{index-0zj73o2U.d.mts → index-BgmMdpm8.d.mts} +1 -1
  41. package/dist/{index-CBru2y5Y.d.mts → index-CSkeivBx.d.mts} +3 -3
  42. package/dist/{index-DadoLP51.d.mts → index-CpTSDqmD.d.mts} +26 -4
  43. package/dist/index.d.mts +7 -7
  44. package/dist/index.mjs +3 -3
  45. package/dist/integrations/event-gateway.d.mts +1 -1
  46. package/dist/integrations/event-gateway.mjs +1 -1
  47. package/dist/integrations/index.d.mts +1 -1
  48. package/dist/integrations/mcp/index.d.mts +51 -3
  49. package/dist/integrations/mcp/index.mjs +78 -19
  50. package/dist/integrations/mcp/testing.d.mts +1 -1
  51. package/dist/integrations/mcp/testing.mjs +1 -1
  52. package/dist/{interface-CS6d7HiB.d.mts → interface-BVuMfeVv.d.mts} +47 -18
  53. package/dist/loadResources-Bksk8ydA.mjs +154 -0
  54. package/dist/{mongodb-B1eVtFhw.d.mts → mongodb-B8U2xaLj.d.mts} +1 -1
  55. package/dist/{mongodb-NShVZDMr.d.mts → mongodb-X7LbEjTN.d.mts} +10 -1
  56. package/dist/{openapi-q6rNKfZy.mjs → openapi-CYCuekCn.mjs} +2 -2
  57. package/dist/org/index.d.mts +2 -2
  58. package/dist/permissions/index.d.mts +3 -3
  59. package/dist/plugins/index.d.mts +5 -5
  60. package/dist/plugins/index.mjs +7 -7
  61. package/dist/plugins/tracing-entry.d.mts +1 -1
  62. package/dist/plugins/tracing-entry.mjs +1 -1
  63. package/dist/policies/index.d.mts +1 -1
  64. package/dist/presets/index.d.mts +1 -1
  65. package/dist/presets/index.mjs +1 -1
  66. package/dist/presets/multiTenant.d.mts +1 -1
  67. package/dist/{presets-BFrGvvjL.mjs → presets-C2xgzW6x.mjs} +10 -18
  68. package/dist/{queryCachePlugin-BCFVXnxK.d.mts → queryCachePlugin-CnTZZTC5.d.mts} +1 -1
  69. package/dist/{redis-stream-BgrYzpeq.d.mts → redis-stream-D54N5oXs.d.mts} +1 -1
  70. package/dist/{redis-Bunu3qWg.d.mts → redis-z3sFr1UP.d.mts} +1 -1
  71. package/dist/registry/index.d.mts +1 -1
  72. package/dist/registry/index.mjs +1 -1
  73. package/dist/{resourceToTools-DNNWnZtx.mjs → resourceToTools-O_HwWXFa.mjs} +1 -1
  74. package/dist/rpc/index.d.mts +1 -1
  75. package/dist/scope/index.d.mts +2 -2
  76. package/dist/testing/index.d.mts +2 -2
  77. package/dist/testing/index.mjs +1 -1
  78. package/dist/types/index.d.mts +4 -4
  79. package/dist/{types-BlOuKTPw.d.mts → types-Bg2X42_m.d.mts} +30 -9
  80. package/dist/{types-BoaZHr-2.d.mts → types-CVC4HOKi.d.mts} +1 -1
  81. package/dist/{types-D3b7hA00.d.mts → types-CcG4avic.d.mts} +1 -1
  82. package/dist/utils/index.d.mts +43 -5
  83. package/dist/utils/index.mjs +3 -3
  84. package/dist/{utils-7sJ8X83I.mjs → utils-yYT3HDXt.mjs} +65 -1
  85. package/package.json +8 -8
  86. package/skills/arc/SKILL.md +101 -6
  87. package/skills/arc/references/mcp.md +37 -0
  88. /package/dist/{EventTransport-CLXJUzyT.d.mts → EventTransport-CinyO7zQ.d.mts} +0 -0
  89. /package/dist/{caching-CHH-iHs3.mjs → caching-CjybdRwx.mjs} +0 -0
  90. /package/dist/{circuitBreaker-BGVoB1hD.d.mts → circuitBreaker-CvXkjfrW.d.mts} +0 -0
  91. /package/dist/{elevation-UJO3-NvX.d.mts → elevation-s5ykdNHr.d.mts} +0 -0
  92. /package/dist/{errorHandler-Cw34h_om.mjs → errorHandler-mzqk4cGl.mjs} +0 -0
  93. /package/dist/{errors-BI8kEKsO.d.mts → errors-Bmn3eZT6.d.mts} +0 -0
  94. /package/dist/{eventPlugin-XijlQmlL.mjs → eventPlugin-D91S2YF4.mjs} +0 -0
  95. /package/dist/{externalPaths-BQ8QijNH.d.mts → externalPaths-Bapitwvd.d.mts} +0 -0
  96. /package/dist/{fields-DoeDgh2b.d.mts → fields-DC4So2M2.d.mts} +0 -0
  97. /package/dist/{interface-CkkWm5uR.d.mts → interface-B-pe8fhj.d.mts} +0 -0
  98. /package/dist/{interface-bpoLKKqx.d.mts → interface-DplgQO2e.d.mts} +0 -0
  99. /package/dist/{metrics-DuhiSEZI.mjs → metrics-TuOmguhi.mjs} +0 -0
  100. /package/dist/{mongodb-5Ff3w8jy.mjs → mongodb-B5O6xaW1.mjs} +0 -0
  101. /package/dist/{pluralize-BneOJkpi.mjs → pluralize-A0tWEl1K.mjs} +0 -0
  102. /package/dist/{replyHelpers-CXtJDAZ0.mjs → replyHelpers-BLojtuvR.mjs} +0 -0
  103. /package/dist/{sessionManager-BkzVU8h2.d.mts → sessionManager-D-oNWHz3.d.mts} +0 -0
  104. /package/dist/{sse-CD5Hghpu.mjs → sse-CJpt7LGI.mjs} +0 -0
  105. /package/dist/{tracing-xqXzWeaf.d.mts → tracing-DxjKk7eW.d.mts} +0 -0
  106. /package/dist/{types-CN6JvmYz.d.mts → types-C72d3NDn.d.mts} +0 -0
  107. /package/dist/{versioning-CPU_5Xfs.mjs → versioning-Cm8qoFDg.mjs} +0 -0
@@ -430,6 +430,43 @@ const createShape = fieldRulesToZod(resource.schemaOptions.fieldRules, {
430
430
  // → { name: z.string(), price: z.number(), category: z.enum([...]) }
431
431
  ```
432
432
 
433
+ ## AI SDK Bridge (v2.8.4+)
434
+
435
+ Expose AI SDK `tool()` definitions over MCP without duplicating glue. The bridge handles `isAuthenticated` rejection, optional custom guards, `{ error }` → `isError: true` envelope translation, and thrown-error mapping.
436
+
437
+ ```typescript
438
+ import { bridgeToMcp, buildMcpToolsFromBridges, getUserId, hasOrg, type McpBridge } from '@classytic/arc/mcp';
439
+ import { tool } from 'ai';
440
+ import { z } from 'zod';
441
+
442
+ function buildTriggerJobTool(companyId: string) {
443
+ return tool({
444
+ description: 'Start a job.',
445
+ inputSchema: z.object({ phase: z.enum(['investigate', 'fix']) }),
446
+ execute: async ({ phase }) => ({ jobId: `${companyId}-${phase}-${Date.now()}` }),
447
+ });
448
+ }
449
+
450
+ export const triggerJobBridge: McpBridge = {
451
+ name: 'trigger_job',
452
+ description: 'Start a job.',
453
+ inputSchema: { phase: z.enum(['investigate', 'fix']) },
454
+ annotations: { destructiveHint: true },
455
+ buildTool: (ctx) => buildTriggerJobTool(getUserId(ctx) ?? ''),
456
+ guard: (ctx) => (hasOrg(ctx) ? null : 'Organization scope required'),
457
+ };
458
+
459
+ await app.register(mcpPlugin, {
460
+ resources,
461
+ extraTools: buildMcpToolsFromBridges([triggerJobBridge], {
462
+ // Per-environment filtering — read-only deployments hide destructive tools
463
+ exclude: process.env.DEPLOYMENT === 'readonly' ? ['trigger_job'] : [],
464
+ }),
465
+ });
466
+ ```
467
+
468
+ `buildMcpToolsFromBridges` also accepts `{ include: [...] }` for strict allowlists. `buildTool` is called fresh per request — safe for per-tenant dep resolution. `McpBridge.annotations` is the same `ToolAnnotations` shape as `defineTool`.
469
+
433
470
  ## Schema Discovery — MCP Resources
434
471
 
435
472
  Auto-registered for agent discovery:
File without changes