@contractspec/lib.contracts 1.44.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 (528) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/dist/_virtual/rolldown_runtime.js +37 -0
  4. package/dist/app-config/app-config.feature.d.ts +12 -0
  5. package/dist/app-config/app-config.feature.js +54 -0
  6. package/dist/app-config/branding.d.ts +55 -0
  7. package/dist/app-config/branding.js +0 -0
  8. package/dist/app-config/contracts.d.ts +245 -0
  9. package/dist/app-config/contracts.js +395 -0
  10. package/dist/app-config/docs/app-config.docblock.d.ts +6 -0
  11. package/dist/app-config/docs/app-config.docblock.js +21 -0
  12. package/dist/app-config/events.d.ts +122 -0
  13. package/dist/app-config/events.js +174 -0
  14. package/dist/app-config/index.d.ts +9 -0
  15. package/dist/app-config/index.js +8 -0
  16. package/dist/app-config/lifecycle-contracts.d.ts +273 -0
  17. package/dist/app-config/lifecycle-contracts.js +440 -0
  18. package/dist/app-config/lifecycle.d.ts +27 -0
  19. package/dist/app-config/lifecycle.js +0 -0
  20. package/dist/app-config/runtime.d.ts +120 -0
  21. package/dist/app-config/runtime.js +617 -0
  22. package/dist/app-config/spec.d.ts +173 -0
  23. package/dist/app-config/spec.js +36 -0
  24. package/dist/app-config/validation.d.ts +49 -0
  25. package/dist/app-config/validation.js +538 -0
  26. package/dist/capabilities/capabilities.d.ts +48 -0
  27. package/dist/capabilities/capabilities.js +50 -0
  28. package/dist/capabilities/docs/capabilities.docblock.d.ts +6 -0
  29. package/dist/capabilities/docs/capabilities.docblock.js +21 -0
  30. package/dist/capabilities/index.d.ts +3 -0
  31. package/dist/capabilities/index.js +4 -0
  32. package/dist/capabilities/openbanking.d.ts +10 -0
  33. package/dist/capabilities/openbanking.js +92 -0
  34. package/dist/client/index.d.ts +6 -0
  35. package/dist/client/index.js +9 -0
  36. package/dist/client/react/drivers/rn-reusables.d.ts +22 -0
  37. package/dist/client/react/drivers/rn-reusables.js +21 -0
  38. package/dist/client/react/drivers/shadcn.d.ts +12 -0
  39. package/dist/client/react/drivers/shadcn.js +11 -0
  40. package/dist/client/react/feature-render.d.ts +23 -0
  41. package/dist/client/react/feature-render.js +44 -0
  42. package/dist/client/react/form-render.d.ts +92 -0
  43. package/dist/client/react/form-render.js +298 -0
  44. package/dist/client/react/index.d.ts +5 -0
  45. package/dist/client/react/index.js +8 -0
  46. package/dist/contract-registry/index.d.ts +3 -0
  47. package/dist/contract-registry/index.js +3 -0
  48. package/dist/contract-registry/schemas.d.ts +124 -0
  49. package/dist/contract-registry/schemas.js +61 -0
  50. package/dist/contract-registry/types.d.ts +46 -0
  51. package/dist/contract-registry/types.js +0 -0
  52. package/dist/data-views/data-views.d.ts +5 -0
  53. package/dist/data-views/data-views.js +4 -0
  54. package/dist/data-views/docs/data-views.docblock.d.ts +6 -0
  55. package/dist/data-views/docs/data-views.docblock.js +21 -0
  56. package/dist/data-views/index.d.ts +4 -0
  57. package/dist/data-views/index.js +4 -0
  58. package/dist/data-views/query-generator.d.ts +40 -0
  59. package/dist/data-views/query-generator.js +48 -0
  60. package/dist/data-views/registry.d.ts +51 -0
  61. package/dist/data-views/registry.js +82 -0
  62. package/dist/data-views/runtime.d.ts +28 -0
  63. package/dist/data-views/runtime.js +39 -0
  64. package/dist/data-views/spec.d.ts +32 -0
  65. package/dist/data-views/spec.js +10 -0
  66. package/dist/data-views/types.d.ts +157 -0
  67. package/dist/data-views/types.js +0 -0
  68. package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts +6 -0
  69. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +17 -0
  70. package/dist/docs/index.d.ts +6 -0
  71. package/dist/docs/index.js +29 -0
  72. package/dist/docs/meta.docs.d.ts +6 -0
  73. package/dist/docs/meta.docs.js +29 -0
  74. package/dist/docs/presentations.d.ts +33 -0
  75. package/dist/docs/presentations.js +64 -0
  76. package/dist/docs/registry.d.ts +23 -0
  77. package/dist/docs/registry.js +51 -0
  78. package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts +6 -0
  79. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +81 -0
  80. package/dist/docs/tech/contracts/README.docblock.d.ts +6 -0
  81. package/dist/docs/tech/contracts/README.docblock.js +21 -0
  82. package/dist/docs/tech/contracts/create-subscription.docblock.d.ts +6 -0
  83. package/dist/docs/tech/contracts/create-subscription.docblock.js +21 -0
  84. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts +6 -0
  85. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +21 -0
  86. package/dist/docs/tech/contracts/migrations.docblock.d.ts +6 -0
  87. package/dist/docs/tech/contracts/migrations.docblock.js +21 -0
  88. package/dist/docs/tech/contracts/openapi-export.docblock.d.ts +6 -0
  89. package/dist/docs/tech/contracts/openapi-export.docblock.js +58 -0
  90. package/dist/docs/tech/contracts/openapi-import.docblock.d.ts +6 -0
  91. package/dist/docs/tech/contracts/openapi-import.docblock.js +65 -0
  92. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts +6 -0
  93. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +21 -0
  94. package/dist/docs/tech/contracts/overlays.docblock.d.ts +6 -0
  95. package/dist/docs/tech/contracts/overlays.docblock.js +21 -0
  96. package/dist/docs/tech/contracts/tests.docblock.d.ts +6 -0
  97. package/dist/docs/tech/contracts/tests.docblock.js +21 -0
  98. package/dist/docs/tech/contracts/themes.docblock.d.ts +6 -0
  99. package/dist/docs/tech/contracts/themes.docblock.js +21 -0
  100. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts +6 -0
  101. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +21 -0
  102. package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts +6 -0
  103. package/dist/docs/tech/lifecycle-stage-system.docblock.js +17 -0
  104. package/dist/docs/tech/llm/llm-integration.docblock.d.ts +7 -0
  105. package/dist/docs/tech/llm/llm-integration.docblock.js +358 -0
  106. package/dist/docs/tech/mcp-endpoints.docblock.d.ts +6 -0
  107. package/dist/docs/tech/mcp-endpoints.docblock.js +38 -0
  108. package/dist/docs/tech/presentation-runtime.docblock.d.ts +6 -0
  109. package/dist/docs/tech/presentation-runtime.docblock.js +17 -0
  110. package/dist/docs/tech/schema/README.docblock.d.ts +6 -0
  111. package/dist/docs/tech/schema/README.docblock.js +21 -0
  112. package/dist/docs/tech/studio/learning-events.docblock.d.ts +6 -0
  113. package/dist/docs/tech/studio/learning-events.docblock.js +49 -0
  114. package/dist/docs/tech/studio/learning-journeys.docblock.d.ts +6 -0
  115. package/dist/docs/tech/studio/learning-journeys.docblock.js +80 -0
  116. package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts +6 -0
  117. package/dist/docs/tech/studio/platform-admin-panel.docblock.js +85 -0
  118. package/dist/docs/tech/studio/project-access-teams.docblock.d.ts +6 -0
  119. package/dist/docs/tech/studio/project-access-teams.docblock.js +46 -0
  120. package/dist/docs/tech/studio/project-routing.docblock.d.ts +6 -0
  121. package/dist/docs/tech/studio/project-routing.docblock.js +68 -0
  122. package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts +6 -0
  123. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +41 -0
  124. package/dist/docs/tech/studio/team-invitations.docblock.d.ts +6 -0
  125. package/dist/docs/tech/studio/team-invitations.docblock.js +70 -0
  126. package/dist/docs/tech/studio/workspace-ops.docblock.d.ts +6 -0
  127. package/dist/docs/tech/studio/workspace-ops.docblock.js +48 -0
  128. package/dist/docs/tech/studio/workspaces.docblock.d.ts +6 -0
  129. package/dist/docs/tech/studio/workspaces.docblock.js +63 -0
  130. package/dist/docs/tech/telemetry-ingest.docblock.d.ts +6 -0
  131. package/dist/docs/tech/telemetry-ingest.docblock.js +156 -0
  132. package/dist/docs/tech/templates/runtime.docblock.d.ts +6 -0
  133. package/dist/docs/tech/templates/runtime.docblock.js +21 -0
  134. package/dist/docs/tech/vscode-extension.docblock.d.ts +6 -0
  135. package/dist/docs/tech/vscode-extension.docblock.js +102 -0
  136. package/dist/docs/tech-contracts.docs.d.ts +6 -0
  137. package/dist/docs/tech-contracts.docs.js +96 -0
  138. package/dist/docs/types.d.ts +41 -0
  139. package/dist/docs/types.js +0 -0
  140. package/dist/events.d.ts +47 -0
  141. package/dist/events.js +19 -0
  142. package/dist/experiments/docs/experiments.docblock.d.ts +6 -0
  143. package/dist/experiments/docs/experiments.docblock.js +21 -0
  144. package/dist/experiments/evaluator.d.ts +37 -0
  145. package/dist/experiments/evaluator.js +101 -0
  146. package/dist/experiments/spec-resolver.d.ts +17 -0
  147. package/dist/experiments/spec-resolver.js +0 -0
  148. package/dist/experiments/spec.d.ts +82 -0
  149. package/dist/experiments/spec.js +33 -0
  150. package/dist/features/index.d.ts +5 -0
  151. package/dist/features/index.js +5 -0
  152. package/dist/features/install.d.ts +22 -0
  153. package/dist/features/install.js +36 -0
  154. package/dist/features/registry.d.ts +26 -0
  155. package/dist/features/registry.js +49 -0
  156. package/dist/features/types.d.ts +88 -0
  157. package/dist/features/types.js +0 -0
  158. package/dist/features/validation.d.ts +8 -0
  159. package/dist/features/validation.js +14 -0
  160. package/dist/forms/docs/forms.docblock.d.ts +6 -0
  161. package/dist/forms/docs/forms.docblock.js +21 -0
  162. package/dist/forms/forms.d.ts +266 -0
  163. package/dist/forms/forms.js +146 -0
  164. package/dist/forms/index.d.ts +2 -0
  165. package/dist/forms/index.js +3 -0
  166. package/dist/index.d.ts +147 -0
  167. package/dist/index.js +121 -0
  168. package/dist/install.d.ts +77 -0
  169. package/dist/install.js +40 -0
  170. package/dist/integrations/binding.d.ts +17 -0
  171. package/dist/integrations/binding.js +0 -0
  172. package/dist/integrations/connection.d.ts +51 -0
  173. package/dist/integrations/connection.js +0 -0
  174. package/dist/integrations/docs/integrations.docblock.d.ts +6 -0
  175. package/dist/integrations/docs/integrations.docblock.js +94 -0
  176. package/dist/integrations/health.d.ts +21 -0
  177. package/dist/integrations/health.js +69 -0
  178. package/dist/integrations/index.d.ts +34 -0
  179. package/dist/integrations/index.js +23 -0
  180. package/dist/integrations/integrations.feature.d.ts +12 -0
  181. package/dist/integrations/integrations.feature.js +60 -0
  182. package/dist/integrations/openbanking/contracts/accounts.d.ts +289 -0
  183. package/dist/integrations/openbanking/contracts/accounts.js +236 -0
  184. package/dist/integrations/openbanking/contracts/balances.d.ts +165 -0
  185. package/dist/integrations/openbanking/contracts/balances.js +166 -0
  186. package/dist/integrations/openbanking/contracts/index.d.ts +10 -0
  187. package/dist/integrations/openbanking/contracts/index.js +12 -0
  188. package/dist/integrations/openbanking/contracts/transactions.d.ts +213 -0
  189. package/dist/integrations/openbanking/contracts/transactions.js +217 -0
  190. package/dist/integrations/openbanking/guards.d.ts +12 -0
  191. package/dist/integrations/openbanking/guards.js +33 -0
  192. package/dist/integrations/openbanking/models.d.ts +228 -0
  193. package/dist/integrations/openbanking/models.js +240 -0
  194. package/dist/integrations/openbanking/openbanking.feature.d.ts +12 -0
  195. package/dist/integrations/openbanking/openbanking.feature.js +69 -0
  196. package/dist/integrations/openbanking/telemetry.d.ts +15 -0
  197. package/dist/integrations/openbanking/telemetry.js +39 -0
  198. package/dist/integrations/operations.d.ts +437 -0
  199. package/dist/integrations/operations.js +392 -0
  200. package/dist/integrations/providers/calendar.d.ts +78 -0
  201. package/dist/integrations/providers/calendar.js +0 -0
  202. package/dist/integrations/providers/elevenlabs.d.ts +7 -0
  203. package/dist/integrations/providers/elevenlabs.js +55 -0
  204. package/dist/integrations/providers/email.d.ts +86 -0
  205. package/dist/integrations/providers/email.js +0 -0
  206. package/dist/integrations/providers/embedding.d.ts +24 -0
  207. package/dist/integrations/providers/embedding.js +0 -0
  208. package/dist/integrations/providers/gcs-storage.d.ts +7 -0
  209. package/dist/integrations/providers/gcs-storage.js +78 -0
  210. package/dist/integrations/providers/gmail.d.ts +7 -0
  211. package/dist/integrations/providers/gmail.js +90 -0
  212. package/dist/integrations/providers/google-calendar.d.ts +7 -0
  213. package/dist/integrations/providers/google-calendar.js +69 -0
  214. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +20 -0
  215. package/dist/integrations/providers/impls/elevenlabs-voice.js +95 -0
  216. package/dist/integrations/providers/impls/gcs-storage.d.ts +24 -0
  217. package/dist/integrations/providers/impls/gcs-storage.js +88 -0
  218. package/dist/integrations/providers/impls/gmail-inbound.d.ts +26 -0
  219. package/dist/integrations/providers/impls/gmail-inbound.js +200 -0
  220. package/dist/integrations/providers/impls/gmail-outbound.d.ts +18 -0
  221. package/dist/integrations/providers/impls/gmail-outbound.js +105 -0
  222. package/dist/integrations/providers/impls/google-calendar.d.ts +23 -0
  223. package/dist/integrations/providers/impls/google-calendar.js +154 -0
  224. package/dist/integrations/providers/impls/index.d.ts +15 -0
  225. package/dist/integrations/providers/impls/index.js +16 -0
  226. package/dist/integrations/providers/impls/mistral-embedding.d.ts +23 -0
  227. package/dist/integrations/providers/impls/mistral-embedding.js +41 -0
  228. package/dist/integrations/providers/impls/mistral-llm.d.ts +31 -0
  229. package/dist/integrations/providers/impls/mistral-llm.js +247 -0
  230. package/dist/integrations/providers/impls/postmark-email.d.ts +19 -0
  231. package/dist/integrations/providers/impls/postmark-email.js +55 -0
  232. package/dist/integrations/providers/impls/powens-client.d.ts +124 -0
  233. package/dist/integrations/providers/impls/powens-client.js +171 -0
  234. package/dist/integrations/providers/impls/powens-openbanking.d.ts +27 -0
  235. package/dist/integrations/providers/impls/powens-openbanking.js +218 -0
  236. package/dist/integrations/providers/impls/provider-factory.d.ts +26 -0
  237. package/dist/integrations/providers/impls/provider-factory.js +145 -0
  238. package/dist/integrations/providers/impls/qdrant-vector.d.ts +24 -0
  239. package/dist/integrations/providers/impls/qdrant-vector.js +69 -0
  240. package/dist/integrations/providers/impls/stripe-payments.d.ts +28 -0
  241. package/dist/integrations/providers/impls/stripe-payments.js +202 -0
  242. package/dist/integrations/providers/impls/twilio-sms.d.ts +20 -0
  243. package/dist/integrations/providers/impls/twilio-sms.js +58 -0
  244. package/dist/integrations/providers/index.d.ts +22 -0
  245. package/dist/integrations/providers/index.js +13 -0
  246. package/dist/integrations/providers/llm.d.ts +82 -0
  247. package/dist/integrations/providers/llm.js +0 -0
  248. package/dist/integrations/providers/mistral.d.ts +7 -0
  249. package/dist/integrations/providers/mistral.js +71 -0
  250. package/dist/integrations/providers/openbanking.d.ts +128 -0
  251. package/dist/integrations/providers/openbanking.js +0 -0
  252. package/dist/integrations/providers/payments.d.ts +109 -0
  253. package/dist/integrations/providers/payments.js +0 -0
  254. package/dist/integrations/providers/postmark.d.ts +7 -0
  255. package/dist/integrations/providers/postmark.js +71 -0
  256. package/dist/integrations/providers/powens.d.ts +7 -0
  257. package/dist/integrations/providers/powens.js +119 -0
  258. package/dist/integrations/providers/qdrant.d.ts +7 -0
  259. package/dist/integrations/providers/qdrant.js +76 -0
  260. package/dist/integrations/providers/registry.d.ts +11 -0
  261. package/dist/integrations/providers/registry.js +34 -0
  262. package/dist/integrations/providers/sms.d.ts +34 -0
  263. package/dist/integrations/providers/sms.js +0 -0
  264. package/dist/integrations/providers/storage.d.ts +60 -0
  265. package/dist/integrations/providers/storage.js +0 -0
  266. package/dist/integrations/providers/stripe.d.ts +7 -0
  267. package/dist/integrations/providers/stripe.js +86 -0
  268. package/dist/integrations/providers/twilio-sms.d.ts +7 -0
  269. package/dist/integrations/providers/twilio-sms.js +64 -0
  270. package/dist/integrations/providers/vector-store.d.ts +43 -0
  271. package/dist/integrations/providers/vector-store.js +0 -0
  272. package/dist/integrations/providers/voice.d.ts +34 -0
  273. package/dist/integrations/providers/voice.js +0 -0
  274. package/dist/integrations/runtime.d.ts +99 -0
  275. package/dist/integrations/runtime.js +186 -0
  276. package/dist/integrations/secrets/aws-secret-manager.d.ts +31 -0
  277. package/dist/integrations/secrets/aws-secret-manager.js +231 -0
  278. package/dist/integrations/secrets/env-secret-provider.d.ts +31 -0
  279. package/dist/integrations/secrets/env-secret-provider.js +81 -0
  280. package/dist/integrations/secrets/gcp-secret-manager.d.ts +32 -0
  281. package/dist/integrations/secrets/gcp-secret-manager.js +229 -0
  282. package/dist/integrations/secrets/index.d.ts +7 -0
  283. package/dist/integrations/secrets/index.js +8 -0
  284. package/dist/integrations/secrets/manager.d.ts +47 -0
  285. package/dist/integrations/secrets/manager.js +103 -0
  286. package/dist/integrations/secrets/provider.d.ts +52 -0
  287. package/dist/integrations/secrets/provider.js +58 -0
  288. package/dist/integrations/secrets/scaleway-secret-manager.d.ts +38 -0
  289. package/dist/integrations/secrets/scaleway-secret-manager.js +247 -0
  290. package/dist/integrations/secrets-types.d.ts +17 -0
  291. package/dist/integrations/secrets-types.js +0 -0
  292. package/dist/integrations/spec.d.ts +75 -0
  293. package/dist/integrations/spec.js +39 -0
  294. package/dist/jobs/define-job.d.ts +18 -0
  295. package/dist/jobs/define-job.js +16 -0
  296. package/dist/jobs/gcp-cloud-tasks.d.ts +41 -0
  297. package/dist/jobs/gcp-cloud-tasks.js +53 -0
  298. package/dist/jobs/gcp-pubsub.d.ts +25 -0
  299. package/dist/jobs/gcp-pubsub.js +39 -0
  300. package/dist/jobs/handlers/gmail-sync-handler.d.ts +9 -0
  301. package/dist/jobs/handlers/gmail-sync-handler.js +9 -0
  302. package/dist/jobs/handlers/index.d.ts +9 -0
  303. package/dist/jobs/handlers/index.js +12 -0
  304. package/dist/jobs/handlers/ping-handler.d.ts +10 -0
  305. package/dist/jobs/handlers/ping-handler.js +15 -0
  306. package/dist/jobs/handlers/storage-document-handler.d.ts +12 -0
  307. package/dist/jobs/handlers/storage-document-handler.js +14 -0
  308. package/dist/jobs/index.d.ts +3 -0
  309. package/dist/jobs/index.js +4 -0
  310. package/dist/jobs/memory-queue.d.ts +18 -0
  311. package/dist/jobs/memory-queue.js +71 -0
  312. package/dist/jobs/queue.d.ts +131 -0
  313. package/dist/jobs/queue.js +33 -0
  314. package/dist/jobs/scaleway-sqs-queue.d.ts +30 -0
  315. package/dist/jobs/scaleway-sqs-queue.js +153 -0
  316. package/dist/jsonschema.d.ts +27 -0
  317. package/dist/jsonschema.js +32 -0
  318. package/dist/knowledge/binding.d.ts +25 -0
  319. package/dist/knowledge/binding.js +0 -0
  320. package/dist/knowledge/docs/knowledge.docblock.d.ts +6 -0
  321. package/dist/knowledge/docs/knowledge.docblock.js +21 -0
  322. package/dist/knowledge/index.d.ts +11 -0
  323. package/dist/knowledge/index.js +10 -0
  324. package/dist/knowledge/ingestion/document-processor.d.ts +24 -0
  325. package/dist/knowledge/ingestion/document-processor.js +54 -0
  326. package/dist/knowledge/ingestion/embedding-service.d.ts +12 -0
  327. package/dist/knowledge/ingestion/embedding-service.js +25 -0
  328. package/dist/knowledge/ingestion/gmail-adapter.d.ts +18 -0
  329. package/dist/knowledge/ingestion/gmail-adapter.js +51 -0
  330. package/dist/knowledge/ingestion/index.d.ts +6 -0
  331. package/dist/knowledge/ingestion/index.js +7 -0
  332. package/dist/knowledge/ingestion/storage-adapter.d.ts +15 -0
  333. package/dist/knowledge/ingestion/storage-adapter.js +26 -0
  334. package/dist/knowledge/ingestion/vector-indexer.d.ts +18 -0
  335. package/dist/knowledge/ingestion/vector-indexer.js +32 -0
  336. package/dist/knowledge/knowledge.feature.d.ts +12 -0
  337. package/dist/knowledge/knowledge.feature.js +61 -0
  338. package/dist/knowledge/operations.d.ts +318 -0
  339. package/dist/knowledge/operations.js +321 -0
  340. package/dist/knowledge/query/index.d.ts +2 -0
  341. package/dist/knowledge/query/index.js +3 -0
  342. package/dist/knowledge/query/service.d.ts +29 -0
  343. package/dist/knowledge/query/service.js +65 -0
  344. package/dist/knowledge/runtime.d.ts +32 -0
  345. package/dist/knowledge/runtime.js +49 -0
  346. package/dist/knowledge/source.d.ts +32 -0
  347. package/dist/knowledge/source.js +0 -0
  348. package/dist/knowledge/spaces/email-threads.d.ts +7 -0
  349. package/dist/knowledge/spaces/email-threads.js +37 -0
  350. package/dist/knowledge/spaces/financial-docs.d.ts +7 -0
  351. package/dist/knowledge/spaces/financial-docs.js +37 -0
  352. package/dist/knowledge/spaces/financial-overview.d.ts +7 -0
  353. package/dist/knowledge/spaces/financial-overview.js +41 -0
  354. package/dist/knowledge/spaces/index.d.ts +7 -0
  355. package/dist/knowledge/spaces/index.js +8 -0
  356. package/dist/knowledge/spaces/product-canon.d.ts +7 -0
  357. package/dist/knowledge/spaces/product-canon.js +37 -0
  358. package/dist/knowledge/spaces/support-faq.d.ts +7 -0
  359. package/dist/knowledge/spaces/support-faq.js +40 -0
  360. package/dist/knowledge/spaces/uploaded-docs.d.ts +7 -0
  361. package/dist/knowledge/spaces/uploaded-docs.js +37 -0
  362. package/dist/knowledge/spec.d.ts +48 -0
  363. package/dist/knowledge/spec.js +39 -0
  364. package/dist/llm/exporters.d.ts +70 -0
  365. package/dist/llm/exporters.js +542 -0
  366. package/dist/llm/index.d.ts +4 -0
  367. package/dist/llm/index.js +4 -0
  368. package/dist/llm/prompts.d.ts +52 -0
  369. package/dist/llm/prompts.js +410 -0
  370. package/dist/llm/types.d.ts +215 -0
  371. package/dist/llm/types.js +0 -0
  372. package/dist/markdown.d.ts +22 -0
  373. package/dist/markdown.js +119 -0
  374. package/dist/migrations.d.ts +52 -0
  375. package/dist/migrations.js +33 -0
  376. package/dist/model-registry.d.ts +13 -0
  377. package/dist/model-registry.js +33 -0
  378. package/dist/onboarding-base.d.ts +138 -0
  379. package/dist/onboarding-base.js +195 -0
  380. package/dist/openapi.d.ts +31 -0
  381. package/dist/openapi.js +75 -0
  382. package/dist/operations/index.d.ts +3 -0
  383. package/dist/operations/index.js +4 -0
  384. package/dist/operations/operation.d.ts +186 -0
  385. package/dist/operations/operation.js +35 -0
  386. package/dist/operations/registry.d.ts +103 -0
  387. package/dist/operations/registry.js +252 -0
  388. package/dist/ownership.d.ts +84 -0
  389. package/dist/ownership.js +38 -0
  390. package/dist/policy/docs/policy.docblock.d.ts +6 -0
  391. package/dist/policy/docs/policy.docblock.js +21 -0
  392. package/dist/policy/engine.d.ts +40 -0
  393. package/dist/policy/engine.js +223 -0
  394. package/dist/policy/index.d.ts +5 -0
  395. package/dist/policy/index.js +5 -0
  396. package/dist/policy/opa-adapter.d.ts +45 -0
  397. package/dist/policy/opa-adapter.js +71 -0
  398. package/dist/policy/registry.d.ts +9 -0
  399. package/dist/policy/registry.js +11 -0
  400. package/dist/policy/spec.d.ts +103 -0
  401. package/dist/policy/spec.js +0 -0
  402. package/dist/presentations/docs/presentations-conventions.docblock.d.ts +6 -0
  403. package/dist/presentations/docs/presentations-conventions.docblock.js +21 -0
  404. package/dist/presentations/index.d.ts +4 -0
  405. package/dist/presentations/index.js +5 -0
  406. package/dist/presentations/presentations.d.ts +50 -0
  407. package/dist/presentations/presentations.js +7 -0
  408. package/dist/presentations/registry.d.ts +10 -0
  409. package/dist/presentations/registry.js +12 -0
  410. package/dist/presentations/transform-engine.d.ts +66 -0
  411. package/dist/presentations/transform-engine.js +282 -0
  412. package/dist/prompt.d.ts +60 -0
  413. package/dist/prompt.js +10 -0
  414. package/dist/promptRegistry.d.ts +15 -0
  415. package/dist/promptRegistry.js +34 -0
  416. package/dist/regenerator/adapters.d.ts +19 -0
  417. package/dist/regenerator/adapters.js +0 -0
  418. package/dist/regenerator/docs/regenerator.docblock.d.ts +6 -0
  419. package/dist/regenerator/docs/regenerator.docblock.js +21 -0
  420. package/dist/regenerator/executor.d.ts +70 -0
  421. package/dist/regenerator/executor.js +86 -0
  422. package/dist/regenerator/index.d.ts +7 -0
  423. package/dist/regenerator/index.js +6 -0
  424. package/dist/regenerator/service.d.ts +33 -0
  425. package/dist/regenerator/service.js +93 -0
  426. package/dist/regenerator/sinks.d.ts +26 -0
  427. package/dist/regenerator/sinks.js +32 -0
  428. package/dist/regenerator/types.d.ts +107 -0
  429. package/dist/regenerator/types.js +0 -0
  430. package/dist/regenerator/utils.d.ts +9 -0
  431. package/dist/regenerator/utils.js +51 -0
  432. package/dist/registry-utils.d.ts +106 -0
  433. package/dist/registry-utils.js +122 -0
  434. package/dist/registry.d.ts +31 -0
  435. package/dist/registry.js +61 -0
  436. package/dist/resources.d.ts +64 -0
  437. package/dist/resources.js +50 -0
  438. package/dist/schema-to-markdown.d.ts +54 -0
  439. package/dist/schema-to-markdown.js +217 -0
  440. package/dist/server/contracts-adapter-hydration.d.ts +15 -0
  441. package/dist/server/contracts-adapter-hydration.js +41 -0
  442. package/dist/server/contracts-adapter-input.d.ts +9 -0
  443. package/dist/server/contracts-adapter-input.js +83 -0
  444. package/dist/server/graphql-pothos.d.ts +31 -0
  445. package/dist/server/graphql-pothos.js +134 -0
  446. package/dist/server/index.d.ts +9 -0
  447. package/dist/server/index.js +10 -0
  448. package/dist/server/mcp/createMcpServer.d.ts +15 -0
  449. package/dist/server/mcp/createMcpServer.js +27 -0
  450. package/dist/server/mcp/mcpTypes.d.ts +27 -0
  451. package/dist/server/mcp/mcpTypes.js +0 -0
  452. package/dist/server/mcp/registerPresentations.d.ts +7 -0
  453. package/dist/server/mcp/registerPresentations.js +63 -0
  454. package/dist/server/mcp/registerPrompts.d.ts +8 -0
  455. package/dist/server/mcp/registerPrompts.js +37 -0
  456. package/dist/server/mcp/registerResources.d.ts +8 -0
  457. package/dist/server/mcp/registerResources.js +35 -0
  458. package/dist/server/mcp/registerTools.d.ts +8 -0
  459. package/dist/server/mcp/registerTools.js +22 -0
  460. package/dist/server/provider-mcp.d.ts +2 -0
  461. package/dist/server/provider-mcp.js +3 -0
  462. package/dist/server/rest-elysia.d.ts +40 -0
  463. package/dist/server/rest-elysia.js +20 -0
  464. package/dist/server/rest-express.d.ts +16 -0
  465. package/dist/server/rest-express.js +36 -0
  466. package/dist/server/rest-generic.d.ts +32 -0
  467. package/dist/server/rest-generic.js +124 -0
  468. package/dist/server/rest-next-app.d.ts +35 -0
  469. package/dist/server/rest-next-app.js +38 -0
  470. package/dist/server/rest-next-mcp.d.ts +11 -0
  471. package/dist/server/rest-next-mcp.js +45 -0
  472. package/dist/server/rest-next-pages.d.ts +9 -0
  473. package/dist/server/rest-next-pages.js +22 -0
  474. package/dist/telemetry/anomaly.d.ts +27 -0
  475. package/dist/telemetry/anomaly.js +48 -0
  476. package/dist/telemetry/docs/telemetry.docblock.d.ts +6 -0
  477. package/dist/telemetry/docs/telemetry.docblock.js +21 -0
  478. package/dist/telemetry/index.d.ts +4 -0
  479. package/dist/telemetry/index.js +5 -0
  480. package/dist/telemetry/spec.d.ts +91 -0
  481. package/dist/telemetry/spec.js +69 -0
  482. package/dist/telemetry/tracker.d.ts +51 -0
  483. package/dist/telemetry/tracker.js +76 -0
  484. package/dist/tests/index.d.ts +3 -0
  485. package/dist/tests/index.js +4 -0
  486. package/dist/tests/runner.d.ts +43 -0
  487. package/dist/tests/runner.js +150 -0
  488. package/dist/tests/spec.d.ts +81 -0
  489. package/dist/tests/spec.js +33 -0
  490. package/dist/themes.d.ts +53 -0
  491. package/dist/themes.js +39 -0
  492. package/dist/translations/catalog.d.ts +28 -0
  493. package/dist/translations/catalog.js +0 -0
  494. package/dist/translations/tenant.d.ts +15 -0
  495. package/dist/translations/tenant.js +0 -0
  496. package/dist/types.d.ts +92 -0
  497. package/dist/types.js +0 -0
  498. package/dist/workflow/adapters/db-adapter.d.ts +46 -0
  499. package/dist/workflow/adapters/db-adapter.js +83 -0
  500. package/dist/workflow/adapters/file-adapter.d.ts +14 -0
  501. package/dist/workflow/adapters/file-adapter.js +11 -0
  502. package/dist/workflow/adapters/index.d.ts +4 -0
  503. package/dist/workflow/adapters/index.js +5 -0
  504. package/dist/workflow/adapters/memory-store.d.ts +18 -0
  505. package/dist/workflow/adapters/memory-store.js +58 -0
  506. package/dist/workflow/expression.d.ts +9 -0
  507. package/dist/workflow/expression.js +99 -0
  508. package/dist/workflow/index.d.ts +10 -0
  509. package/dist/workflow/index.js +9 -0
  510. package/dist/workflow/overview.docblock.d.ts +6 -0
  511. package/dist/workflow/overview.docblock.js +21 -0
  512. package/dist/workflow/runner.d.ts +75 -0
  513. package/dist/workflow/runner.js +337 -0
  514. package/dist/workflow/sla-monitor.d.ts +20 -0
  515. package/dist/workflow/sla-monitor.js +47 -0
  516. package/dist/workflow/spec.d.ts +106 -0
  517. package/dist/workflow/spec.js +55 -0
  518. package/dist/workflow/state.d.ts +35 -0
  519. package/dist/workflow/state.js +0 -0
  520. package/dist/workflow/validation.d.ts +29 -0
  521. package/dist/workflow/validation.js +176 -0
  522. package/dist/workspace-config/contractsrc-schema.d.ts +862 -0
  523. package/dist/workspace-config/contractsrc-schema.js +281 -0
  524. package/dist/workspace-config/index.d.ts +2 -0
  525. package/dist/workspace-config/index.js +3 -0
  526. package/dist/workspace-config/workspace-config.docblock.d.ts +6 -0
  527. package/dist/workspace-config/workspace-config.docblock.js +45 -0
  528. package/package.json +598 -0
@@ -0,0 +1,15 @@
1
+ import * as z$1 from "zod";
2
+
3
+ //#region src/jobs/handlers/ping-handler.ts
4
+ const PING_JOB_TYPE = "core.ping";
5
+ const PingPayloadSchema = z$1.object({});
6
+ const pingJob = {
7
+ type: PING_JOB_TYPE,
8
+ schema: PingPayloadSchema,
9
+ handler: async (_payload, job) => {
10
+ console.log("[ping] job id=%s attempts=%d", job.id, job.attempts);
11
+ }
12
+ };
13
+
14
+ //#endregion
15
+ export { PING_JOB_TYPE, PingPayloadSchema, pingJob };
@@ -0,0 +1,12 @@
1
+ import { ObjectStorageProvider } from "../../integrations/providers/storage.js";
2
+ import { JobHandler } from "../queue.js";
3
+ import { StorageIngestionAdapter } from "../../knowledge/ingestion/storage-adapter.js";
4
+
5
+ //#region src/jobs/handlers/storage-document-handler.d.ts
6
+ interface StorageDocumentJobPayload {
7
+ bucket: string;
8
+ key: string;
9
+ }
10
+ declare function createStorageDocumentHandler(storage: ObjectStorageProvider, adapter: StorageIngestionAdapter): JobHandler<StorageDocumentJobPayload>;
11
+ //#endregion
12
+ export { StorageDocumentJobPayload, createStorageDocumentHandler };
@@ -0,0 +1,14 @@
1
+ //#region src/jobs/handlers/storage-document-handler.ts
2
+ function createStorageDocumentHandler(storage, adapter) {
3
+ return async (job) => {
4
+ const object = await storage.getObject({
5
+ bucket: job.payload.bucket,
6
+ key: job.payload.key
7
+ });
8
+ if (!object) throw new Error(`Object ${job.payload.bucket}/${job.payload.key} not found`);
9
+ await adapter.ingestObject(object);
10
+ };
11
+ }
12
+
13
+ //#endregion
14
+ export { createStorageDocumentHandler };
@@ -0,0 +1,3 @@
1
+ import { DEFAULT_RETRY_POLICY, EnqueueOptions, Job, JobHandler, JobQueue, JobStatus, JobTypeDef, QueueStats, RetryPolicy, calculateBackoff, defineJobType } from "./queue.js";
2
+ import { DefinedJob, registerDefinedJob } from "./define-job.js";
3
+ export { DEFAULT_RETRY_POLICY, DefinedJob, EnqueueOptions, Job, JobHandler, JobQueue, JobStatus, JobTypeDef, QueueStats, RetryPolicy, calculateBackoff, defineJobType, registerDefinedJob };
@@ -0,0 +1,4 @@
1
+ import { registerDefinedJob } from "./define-job.js";
2
+ import { DEFAULT_RETRY_POLICY, calculateBackoff, defineJobType } from "./queue.js";
3
+
4
+ export { DEFAULT_RETRY_POLICY, calculateBackoff, defineJobType, registerDefinedJob };
@@ -0,0 +1,18 @@
1
+ import { EnqueueOptions, Job, JobHandler, JobQueue } from "./queue.js";
2
+
3
+ //#region src/jobs/memory-queue.d.ts
4
+ declare class MemoryJobQueue implements JobQueue {
5
+ private readonly pollIntervalMs;
6
+ private readonly jobs;
7
+ private readonly handlers;
8
+ private timer?;
9
+ private processing;
10
+ constructor(pollIntervalMs?: number);
11
+ enqueue<TPayload>(jobType: string, payload: TPayload, options?: EnqueueOptions): Promise<Job<TPayload>>;
12
+ register<TPayload, TResult = void>(jobType: string, handler: JobHandler<TPayload, TResult>): void;
13
+ start(): void;
14
+ stop(): Promise<void>;
15
+ private processNext;
16
+ }
17
+ //#endregion
18
+ export { MemoryJobQueue };
@@ -0,0 +1,71 @@
1
+ import { DEFAULT_RETRY_POLICY } from "./queue.js";
2
+ import { randomUUID } from "node:crypto";
3
+
4
+ //#region src/jobs/memory-queue.ts
5
+ var MemoryJobQueue = class {
6
+ jobs = [];
7
+ handlers = /* @__PURE__ */ new Map();
8
+ timer;
9
+ processing = false;
10
+ constructor(pollIntervalMs = 200) {
11
+ this.pollIntervalMs = pollIntervalMs;
12
+ }
13
+ async enqueue(jobType, payload, options = {}) {
14
+ const job = {
15
+ id: randomUUID(),
16
+ type: jobType,
17
+ version: 1,
18
+ payload,
19
+ status: "pending",
20
+ priority: options.priority ?? 0,
21
+ attempts: 0,
22
+ maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY.maxRetries,
23
+ createdAt: /* @__PURE__ */ new Date(),
24
+ updatedAt: /* @__PURE__ */ new Date()
25
+ };
26
+ if (options.delaySeconds) job.updatedAt = new Date(Date.now() + options.delaySeconds * 1e3);
27
+ this.jobs.push(job);
28
+ return job;
29
+ }
30
+ register(jobType, handler) {
31
+ this.handlers.set(jobType, handler);
32
+ }
33
+ start() {
34
+ if (this.timer) return;
35
+ this.timer = setInterval(() => {
36
+ this.processNext();
37
+ }, this.pollIntervalMs);
38
+ }
39
+ async stop() {
40
+ if (this.timer) {
41
+ clearInterval(this.timer);
42
+ this.timer = void 0;
43
+ }
44
+ while (this.processing) await new Promise((resolve) => setTimeout(resolve, 10));
45
+ }
46
+ async processNext() {
47
+ if (this.processing) return;
48
+ const job = this.jobs.find((j) => j.status === "pending" && j.updatedAt <= /* @__PURE__ */ new Date());
49
+ if (!job) return;
50
+ const handler = this.handlers.get(job.type);
51
+ if (!handler) return;
52
+ this.processing = true;
53
+ job.status = "running";
54
+ job.updatedAt = /* @__PURE__ */ new Date();
55
+ job.attempts += 1;
56
+ try {
57
+ await handler(job);
58
+ job.status = "completed";
59
+ job.updatedAt = /* @__PURE__ */ new Date();
60
+ } catch (error) {
61
+ job.status = "failed";
62
+ job.lastError = error instanceof Error ? error.message : "Unknown job error";
63
+ job.updatedAt = /* @__PURE__ */ new Date();
64
+ } finally {
65
+ this.processing = false;
66
+ }
67
+ }
68
+ };
69
+
70
+ //#endregion
71
+ export { MemoryJobQueue };
@@ -0,0 +1,131 @@
1
+ import * as z$1 from "zod";
2
+
3
+ //#region src/jobs/queue.d.ts
4
+
5
+ /**
6
+ * Job status values.
7
+ */
8
+ type JobStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled' | 'dead_letter';
9
+ /**
10
+ * A job in the queue.
11
+ */
12
+ interface Job<TPayload = unknown> {
13
+ id: string;
14
+ type: string;
15
+ version: number;
16
+ payload: TPayload;
17
+ status: JobStatus;
18
+ priority: number;
19
+ attempts: number;
20
+ maxRetries: number;
21
+ createdAt: Date;
22
+ updatedAt: Date;
23
+ scheduledAt?: Date;
24
+ startedAt?: Date;
25
+ completedAt?: Date;
26
+ timeoutAt?: Date;
27
+ lastError?: string;
28
+ dedupeKey?: string;
29
+ tenantId?: string;
30
+ userId?: string;
31
+ traceId?: string;
32
+ metadata?: Record<string, unknown>;
33
+ result?: unknown;
34
+ }
35
+ /**
36
+ * Options for enqueueing a job.
37
+ */
38
+ interface EnqueueOptions {
39
+ /** Delay execution by this many seconds */
40
+ delaySeconds?: number;
41
+ /** Key for deduplication (only one job with this key can be pending) */
42
+ dedupeKey?: string;
43
+ /** Maximum retry attempts (overrides job type default) */
44
+ maxRetries?: number;
45
+ /** Job priority (higher = more urgent) */
46
+ priority?: number;
47
+ /** Timeout in milliseconds */
48
+ timeoutMs?: number;
49
+ /** Tenant context */
50
+ tenantId?: string;
51
+ /** User who enqueued */
52
+ userId?: string;
53
+ /** Trace ID for distributed tracing */
54
+ traceId?: string;
55
+ /** Additional metadata */
56
+ metadata?: Record<string, unknown>;
57
+ }
58
+ /**
59
+ * Job handler function.
60
+ */
61
+ type JobHandler<TPayload = unknown, TResult = void> = (job: Job<TPayload>) => Promise<TResult>;
62
+ /**
63
+ * Job queue interface.
64
+ */
65
+ interface JobQueue {
66
+ /** Enqueue a new job */
67
+ enqueue<TPayload>(jobType: string, payload: TPayload, options?: EnqueueOptions): Promise<Job<TPayload>>;
68
+ /** Register a handler for a job type */
69
+ register<TPayload, TResult = void>(jobType: string, handler: JobHandler<TPayload, TResult>): void;
70
+ /** Start processing jobs */
71
+ start(): void;
72
+ /** Stop processing jobs gracefully */
73
+ stop(): Promise<void>;
74
+ /** Get job by ID */
75
+ getJob?(jobId: string): Promise<Job | null>;
76
+ /** Cancel a pending job */
77
+ cancelJob?(jobId: string): Promise<boolean>;
78
+ /** Get queue stats */
79
+ getStats?(): Promise<QueueStats>;
80
+ }
81
+ /**
82
+ * Queue statistics.
83
+ */
84
+ interface QueueStats {
85
+ pending: number;
86
+ running: number;
87
+ completed: number;
88
+ failed: number;
89
+ deadLetter: number;
90
+ }
91
+ /**
92
+ * Retry policy configuration.
93
+ */
94
+ interface RetryPolicy {
95
+ /** Maximum number of retry attempts */
96
+ maxRetries: number;
97
+ /** Initial backoff in milliseconds */
98
+ initialBackoffMs: number;
99
+ /** Maximum backoff in milliseconds */
100
+ maxBackoffMs: number;
101
+ /** Backoff multiplier (exponential) */
102
+ multiplier: number;
103
+ /** Add jitter to backoff */
104
+ jitter: boolean;
105
+ }
106
+ /**
107
+ * Default retry policy.
108
+ */
109
+ declare const DEFAULT_RETRY_POLICY: RetryPolicy;
110
+ /**
111
+ * Calculate backoff delay for a retry attempt.
112
+ */
113
+ declare function calculateBackoff(attempt: number, policy?: RetryPolicy): number;
114
+ /**
115
+ * Job type definition.
116
+ */
117
+ interface JobTypeDef<TPayload = unknown> {
118
+ type: string;
119
+ version: number;
120
+ payload: z$1.ZodType<TPayload>;
121
+ options?: Partial<RetryPolicy & {
122
+ timeoutMs: number;
123
+ }>;
124
+ description?: string;
125
+ }
126
+ /**
127
+ * Define a typed job type.
128
+ */
129
+ declare function defineJobType<TPayload>(def: JobTypeDef<TPayload>): JobTypeDef<TPayload>;
130
+ //#endregion
131
+ export { DEFAULT_RETRY_POLICY, EnqueueOptions, Job, JobHandler, JobQueue, JobStatus, JobTypeDef, QueueStats, RetryPolicy, calculateBackoff, defineJobType };
@@ -0,0 +1,33 @@
1
+ import "zod";
2
+
3
+ //#region src/jobs/queue.ts
4
+ /**
5
+ * Default retry policy.
6
+ */
7
+ const DEFAULT_RETRY_POLICY = {
8
+ maxRetries: 3,
9
+ initialBackoffMs: 1e3,
10
+ maxBackoffMs: 6e4,
11
+ multiplier: 2,
12
+ jitter: true
13
+ };
14
+ /**
15
+ * Calculate backoff delay for a retry attempt.
16
+ */
17
+ function calculateBackoff(attempt, policy = DEFAULT_RETRY_POLICY) {
18
+ const baseDelay = Math.min(policy.initialBackoffMs * Math.pow(policy.multiplier, attempt - 1), policy.maxBackoffMs);
19
+ if (policy.jitter) {
20
+ const jitterFactor = .8 + Math.random() * .4;
21
+ return Math.floor(baseDelay * jitterFactor);
22
+ }
23
+ return baseDelay;
24
+ }
25
+ /**
26
+ * Define a typed job type.
27
+ */
28
+ function defineJobType(def) {
29
+ return def;
30
+ }
31
+
32
+ //#endregion
33
+ export { DEFAULT_RETRY_POLICY, calculateBackoff, defineJobType };
@@ -0,0 +1,30 @@
1
+ import { EnqueueOptions, Job, JobHandler, JobQueue } from "./queue.js";
2
+
3
+ //#region src/jobs/scaleway-sqs-queue.d.ts
4
+ interface ScalewaySqsQueueConfig {
5
+ queueUrl: string;
6
+ region?: string;
7
+ endpoint?: string;
8
+ waitTimeSeconds?: number;
9
+ maxNumberOfMessages?: number;
10
+ visibilityTimeoutSeconds?: number;
11
+ }
12
+ declare class ScalewaySqsJobQueue implements JobQueue {
13
+ private readonly sqs;
14
+ private readonly queueUrl;
15
+ private readonly waitTimeSeconds;
16
+ private readonly maxNumberOfMessages;
17
+ private readonly visibilityTimeoutSeconds;
18
+ private readonly handlers;
19
+ private running;
20
+ constructor(config: ScalewaySqsQueueConfig);
21
+ enqueue<TPayload>(jobType: string, payload: TPayload, options?: EnqueueOptions): Promise<Job<TPayload>>;
22
+ register<TPayload, TResult = void>(jobType: string, handler: JobHandler<TPayload, TResult>): void;
23
+ start(): void;
24
+ stop(): Promise<void>;
25
+ private pollLoop;
26
+ private deleteMessage;
27
+ private sleep;
28
+ }
29
+ //#endregion
30
+ export { ScalewaySqsJobQueue };
@@ -0,0 +1,153 @@
1
+ import { DEFAULT_RETRY_POLICY } from "./queue.js";
2
+ import { randomUUID } from "crypto";
3
+ import { DeleteMessageCommand, ReceiveMessageCommand, SQSClient, SendMessageCommand } from "@aws-sdk/client-sqs";
4
+
5
+ //#region src/jobs/scaleway-sqs-queue.ts
6
+ var ScalewaySqsJobQueue = class {
7
+ sqs;
8
+ queueUrl;
9
+ waitTimeSeconds;
10
+ maxNumberOfMessages;
11
+ visibilityTimeoutSeconds;
12
+ handlers = /* @__PURE__ */ new Map();
13
+ running = false;
14
+ constructor(config) {
15
+ const accessKeyId = process.env.SCALEWAY_ACCESS_KEY_QUEUE;
16
+ const secretAccessKey = process.env.SCALEWAY_SECRET_KEY_QUEUE;
17
+ if (!accessKeyId || !secretAccessKey) throw new Error("Missing SCALEWAY_ACCESS_KEY_QUEUE / SCALEWAY_SECRET_KEY_QUEUE in env");
18
+ this.sqs = new SQSClient({
19
+ region: config.region ?? process.env.SCALEWAY_REGION ?? "par",
20
+ endpoint: "https://sqs.mnq.fr-par.scaleway.com",
21
+ credentials: {
22
+ accessKeyId,
23
+ secretAccessKey
24
+ }
25
+ });
26
+ this.queueUrl = config.queueUrl;
27
+ this.waitTimeSeconds = config.waitTimeSeconds ?? 20;
28
+ this.maxNumberOfMessages = config.maxNumberOfMessages ?? 5;
29
+ this.visibilityTimeoutSeconds = config.visibilityTimeoutSeconds ?? 60;
30
+ }
31
+ async enqueue(jobType, payload, options = {}) {
32
+ const id = randomUUID();
33
+ const now = /* @__PURE__ */ new Date();
34
+ const envelope = {
35
+ id,
36
+ type: jobType,
37
+ payload
38
+ };
39
+ await this.sqs.send(new SendMessageCommand({
40
+ QueueUrl: this.queueUrl,
41
+ MessageBody: JSON.stringify(envelope),
42
+ DelaySeconds: options.delaySeconds ?? 0
43
+ }));
44
+ return {
45
+ id,
46
+ type: jobType,
47
+ version: 1,
48
+ payload,
49
+ status: "pending",
50
+ priority: options.priority ?? 0,
51
+ attempts: 0,
52
+ maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY.maxRetries,
53
+ createdAt: now,
54
+ updatedAt: now
55
+ };
56
+ }
57
+ register(jobType, handler) {
58
+ if (this.handlers.has(jobType)) throw new Error(`Handler already registered for job type "${jobType}"`);
59
+ this.handlers.set(jobType, handler);
60
+ }
61
+ start() {
62
+ if (this.running) return;
63
+ this.running = true;
64
+ this.pollLoop().catch((err) => {
65
+ console.error("[queue] Fatal error in poll loop", err);
66
+ process.exit(1);
67
+ });
68
+ }
69
+ async stop() {
70
+ this.running = false;
71
+ }
72
+ async pollLoop() {
73
+ console.log("[queue] SQS worker started for queue:", this.queueUrl);
74
+ while (this.running) try {
75
+ const messages = (await this.sqs.send(new ReceiveMessageCommand({
76
+ QueueUrl: this.queueUrl,
77
+ MaxNumberOfMessages: this.maxNumberOfMessages,
78
+ WaitTimeSeconds: this.waitTimeSeconds,
79
+ VisibilityTimeout: this.visibilityTimeoutSeconds,
80
+ MessageSystemAttributeNames: ["ApproximateReceiveCount"]
81
+ }))).Messages ?? [];
82
+ if (messages.length === 0) continue;
83
+ for (const msg of messages) {
84
+ if (!msg.Body || !msg.ReceiptHandle) {
85
+ console.warn("[queue] Message missing Body or ReceiptHandle", msg.MessageId);
86
+ continue;
87
+ }
88
+ let envelope;
89
+ try {
90
+ envelope = JSON.parse(msg.Body);
91
+ } catch (err) {
92
+ console.error(`[queue] Failed to parse message body (id=${msg.MessageId}), deleting`, err);
93
+ await this.deleteMessage(msg.ReceiptHandle);
94
+ continue;
95
+ }
96
+ const handler = this.handlers.get(envelope.type);
97
+ if (!handler) {
98
+ console.error(`[queue] No handler registered for type "${envelope.type}", deleting message`);
99
+ await this.deleteMessage(msg.ReceiptHandle);
100
+ continue;
101
+ }
102
+ const now = /* @__PURE__ */ new Date();
103
+ const attempts = parseInt(msg.Attributes?.ApproximateReceiveCount ?? "1", 10);
104
+ const job = {
105
+ id: envelope.id,
106
+ type: envelope.type,
107
+ version: 1,
108
+ payload: envelope.payload,
109
+ status: "pending",
110
+ priority: 0,
111
+ attempts,
112
+ maxRetries: DEFAULT_RETRY_POLICY.maxRetries,
113
+ createdAt: now,
114
+ updatedAt: now
115
+ };
116
+ job.status = "running";
117
+ job.updatedAt = /* @__PURE__ */ new Date();
118
+ try {
119
+ await handler(job);
120
+ job.status = "completed";
121
+ job.updatedAt = /* @__PURE__ */ new Date();
122
+ await this.deleteMessage(msg.ReceiptHandle);
123
+ } catch (err) {
124
+ job.status = "failed";
125
+ job.lastError = err instanceof Error ? err.message : "Unknown job error";
126
+ job.updatedAt = /* @__PURE__ */ new Date();
127
+ console.error(`[queue] Error while handling job type=${job.type} id=${job.id}`, err);
128
+ }
129
+ }
130
+ } catch (err) {
131
+ if (!!err && typeof err === "object" && "$response" in err) console.error("[queue] Error while polling SQS", err, err.$response);
132
+ else console.error("[queue] Error while polling SQS", err);
133
+ await this.sleep(5e3);
134
+ }
135
+ console.log("[queue] SQS worker stopped");
136
+ }
137
+ async deleteMessage(receiptHandle) {
138
+ try {
139
+ await this.sqs.send(new DeleteMessageCommand({
140
+ QueueUrl: this.queueUrl,
141
+ ReceiptHandle: receiptHandle
142
+ }));
143
+ } catch (err) {
144
+ console.error("[queue] Failed to delete message", err);
145
+ }
146
+ }
147
+ async sleep(ms) {
148
+ await new Promise((resolve) => setTimeout(resolve, ms));
149
+ }
150
+ };
151
+
152
+ //#endregion
153
+ export { ScalewaySqsJobQueue };
@@ -0,0 +1,27 @@
1
+ import { Stability, Tag } from "./ownership.js";
2
+ import { OpKind, OperationSpec } from "./operations/operation.js";
3
+ import "./operations/index.js";
4
+ import { AnySchemaModel } from "@contractspec/lib.schema";
5
+ import z from "zod";
6
+
7
+ //#region src/jsonschema.d.ts
8
+ declare function jsonSchemaForSpec(spec: OperationSpec<AnySchemaModel, AnySchemaModel>): {
9
+ input: z.core.ZodStandardJSONSchemaPayload<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>> | null;
10
+ output: z.core.ZodStandardJSONSchemaPayload<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>> | null;
11
+ meta: {
12
+ name: string;
13
+ version: number;
14
+ kind: OpKind;
15
+ description: string;
16
+ tags: Tag[];
17
+ stability: Stability;
18
+ };
19
+ };
20
+ /** Helper to derive default REST path */
21
+ declare function defaultRestPath(name: string, version: number): string;
22
+ /** Helper to derive default MCP tool name */
23
+ declare function defaultMcpTool(name: string, version: number): string;
24
+ /** Helper to derive default GraphQL field name */
25
+ declare function defaultGqlField(name: string, version: number): string;
26
+ //#endregion
27
+ export { defaultGqlField, defaultMcpTool, defaultRestPath, jsonSchemaForSpec };
@@ -0,0 +1,32 @@
1
+ import z from "zod";
2
+
3
+ //#region src/jsonschema.ts
4
+ function jsonSchemaForSpec(spec) {
5
+ return {
6
+ input: spec.io.input ? z.toJSONSchema(spec.io.input.getZod()) : null,
7
+ output: spec.io.output ? z.toJSONSchema(spec.io.output.getZod()) : null,
8
+ meta: {
9
+ name: spec.meta.key,
10
+ version: spec.meta.version,
11
+ kind: spec.meta.kind,
12
+ description: spec.meta.description,
13
+ tags: spec.meta.tags ?? [],
14
+ stability: spec.meta.stability ?? "stable"
15
+ }
16
+ };
17
+ }
18
+ /** Helper to derive default REST path */
19
+ function defaultRestPath(name, version) {
20
+ return `/${name.replace(/\./g, "/")}/v${version}`;
21
+ }
22
+ /** Helper to derive default MCP tool name */
23
+ function defaultMcpTool(name, version) {
24
+ return `${name}-v${version}`;
25
+ }
26
+ /** Helper to derive default GraphQL field name */
27
+ function defaultGqlField(name, version) {
28
+ return `${name.replace(/\./g, "_")}_v${version}`;
29
+ }
30
+
31
+ //#endregion
32
+ export { defaultGqlField, defaultMcpTool, defaultRestPath, jsonSchemaForSpec };
@@ -0,0 +1,25 @@
1
+ //#region src/knowledge/binding.d.ts
2
+ interface AppKnowledgeBinding {
3
+ /** Which KnowledgeSpace to use. */
4
+ spaceKey: string;
5
+ spaceVersion?: number;
6
+ /** Optional: scope to specific workflows/agents. */
7
+ scope?: {
8
+ workflows?: string[];
9
+ agents?: string[];
10
+ operations?: string[];
11
+ };
12
+ /** Usage constraints. */
13
+ constraints?: {
14
+ /** Max tokens per query. */
15
+ maxTokensPerQuery?: number;
16
+ /** Max queries per minute. */
17
+ maxQueriesPerMinute?: number;
18
+ };
19
+ /** Priority when multiple spaces overlap. */
20
+ priority?: number;
21
+ /** Whether access to the space is required (blocking) or optional. */
22
+ required?: boolean;
23
+ }
24
+ //#endregion
25
+ export { AppKnowledgeBinding };
File without changes
@@ -0,0 +1,6 @@
1
+ import { DocBlock } from "@contractspec/lib.contracts/docs";
2
+
3
+ //#region src/knowledge/docs/knowledge.docblock.d.ts
4
+ declare const tech_contracts_knowledge_DocBlocks: DocBlock[];
5
+ //#endregion
6
+ export { tech_contracts_knowledge_DocBlocks };
@@ -0,0 +1,21 @@
1
+ import { registerDocBlocks } from "../../docs/registry.js";
2
+
3
+ //#region src/knowledge/docs/knowledge.docblock.ts
4
+ const tech_contracts_knowledge_DocBlocks = [{
5
+ id: "docs.tech.contracts.knowledge",
6
+ title: "Knowledge Layer",
7
+ summary: "The knowledge layer turns unstructured inputs (uploads, email threads,",
8
+ kind: "reference",
9
+ visibility: "public",
10
+ route: "/docs/tech/contracts/knowledge",
11
+ tags: [
12
+ "tech",
13
+ "contracts",
14
+ "knowledge"
15
+ ],
16
+ body: "# Knowledge Layer\n\nThe knowledge layer turns unstructured inputs (uploads, email threads,\nnotes) into searchable context for agents and workflows. The Pocket\nFamily Office vertical ships a minimal but production-ready stack that\ncovers ingestion, indexing, querying, and guardrails.\n\n## Knowledge Spaces\n\nKnowledge is organised via `KnowledgeSpaceSpec` definitions under\n`packages/libs/contracts/src/knowledge/spaces`:\n\n- `knowledge.financial-docs` – canonical invoices, bills, and contracts.\n- `knowledge.email-threads` – operational Gmail threads.\n- `knowledge.support-faq` / `knowledge.product-canon` – reusable shared\n spaces available to any vertical.\n\nEach space defines:\n\n- Ownership metadata (domain, owners, stability tags).\n- Retention policy (TTL/archival).\n- Access policy (trust level, automation write permissions).\n- Indexing configuration (embedding model, chunk size, vector DB slot).\n\n## Sources & Bindings\n\n- `KnowledgeSourceConfig` records tenant-specific connections (bucket,\n Gmail labels, sync cadence). Pocket Family Office provides sample\n configs in `knowledge/sources.sample.ts`.\n- `AppKnowledgeBinding` associates spaces with workflows/agents and adds\n per-tenant constraints (rate limits, scopes).\n\nValidation ensures that:\n\n- All referenced spaces exist in the registry.\n- At least one source is configured per binding.\n- External/ephemeral spaces trigger warnings for policy-sensitive flows.\n\n## Ingestion Pipeline\n\nImplemented in `packages/libs/contracts/src/knowledge/ingestion`:\n\n1. **DocumentProcessor** – pluggable MIME extractors producing\n `DocumentFragment`s.\n2. **EmbeddingService** – batches fragments through an `EmbeddingProvider`\n (Mistral in the reference implementation).\n3. **VectorIndexer** – upserts fragments into a `VectorStoreProvider`\n (Qdrant in production, with in-memory implementations for tests).\n4. **Adapters**\n - `GmailIngestionAdapter`: list threads → convert to raw documents →\n index.\n - `StorageIngestionAdapter`: fetch object from storage provider →\n index.\n\nBackground jobs (see `jobs/`) orchestrate ingestion via Cloud Tasks /\nPub/Sub or in-memory workers. Handlers:\n\n- `storage-document-handler` – resolves storage object + indexes.\n- `gmail-sync-handler` – syncs threads based on label/date filters.\n\n## Query Service\n\n`KnowledgeQueryService` performs retrieval-augmented generation:\n\n1. Embed the user query using the configured provider.\n2. Search the vector store for top-k matches.\n3. Compose prompts combining system instructions + contextual snippets.\n4. Invoke the LLM provider (Mistral) and return the answer plus\n references and token usage.\n\nThe service is designed for tooling: workflows can execute it directly\nor through custom operations (see `pfo.summary.generate` contract).\n\n## Guardrails\n\n- Automation can only write to spaces where `automationWritable` is true.\n- Canonical spaces default to high trust; external/ephemeral spaces are\n flagged during validation.\n- Telemetry captures query volumes per tenant + space.\n\n## Extending\n\n1. Define a new `KnowledgeSpaceSpec` with indexing/retention policies.\n2. Add sources pointing to storage providers or APIs.\n3. Register adapters if ingestion requires bespoke logic.\n4. Reference the space in blueprints (`AppKnowledgeBinding`) and update\n workflows/agents accordingly.\n\nThe Pocket Family Office tests (`tests/pocket-family-office.test.ts`)\nshow how to wire the ingestion pipeline, index a document, and run an\nend-to-end knowledge query using in-memory providers.\n## Knowledge Spaces & Guardrails\n\nKnowledge surfaces (`KnowledgeSpaceSpec`) describe curated corpora that agents and workflows can consult. Tenant bindings (`AppKnowledgeBinding`) declare which spaces are active, who can use them, and optional usage constraints.\n\n### Binding recap\n\n- `spaceKey` / `spaceVersion`: pointer to the `KnowledgeSpaceSpec`\n- `scope.workflows` / `scope.agents`: explicit allow-lists for consumers\n- `constraints.maxTokensPerQuery` & `constraints.maxQueriesPerMinute`: throttling knobs for LLM-backed search\n- `required`: mark the binding as blocking (defaults to `true`)\n\nAt runtime, `ResolvedAppConfig.knowledge` contains `ResolvedKnowledge` entries with the bound space, active sources, and the binding metadata above.\n\n### KnowledgeAccessGuard\n\n`KnowledgeAccessGuard` (`@contractspec/lib.contracts/knowledge/runtime`) centralises the access checks that must run before any workflow/agent reads or mutates a knowledge space.\n\n```ts\nimport { KnowledgeAccessGuard } from '@contractspec/lib.contracts/knowledge/runtime';\n\nconst guard = new KnowledgeAccessGuard({\n disallowWriteCategories: ['external', 'ephemeral'], // default\n requireWorkflowBinding: true,\n requireAgentBinding: false,\n});\n\nconst result = guard.checkAccess(resolvedKnowledge, {\n tenantId,\n appId,\n workflowName: 'order-processing',\n operation: 'read', // or 'write' / 'search'\n}, resolvedAppConfig);\n\nif (!result.allowed) {\n throw new Error(result.reason);\n}\n```\n\nKey behaviours:\n\n- **Binding**: rejects access when the space is not present in the resolved tenant config.\n- **Category guardrails**: blocks writes to `external` and `ephemeral` spaces by default; allows reads but emits warnings for `ephemeral`.\n- **Workflow/agent scoping**: when `requireWorkflowBinding` or `requireAgentBinding` is enabled, only explicitly authorised consumers may access the space.\n\nUse the guard inside workflow operations or agent resolvers to guarantee multi-tenant isolation and honour data governance rules.\n\n"
17
+ }];
18
+ registerDocBlocks(tech_contracts_knowledge_DocBlocks);
19
+
20
+ //#endregion
21
+ export { tech_contracts_knowledge_DocBlocks };
@@ -0,0 +1,11 @@
1
+ import { KnowledgeAccessPolicy, KnowledgeCategory, KnowledgeIndexingConfig, KnowledgeRetentionPolicy, KnowledgeSpaceMeta, KnowledgeSpaceRegistry, KnowledgeSpaceSpec, makeKnowledgeSpaceKey } from "./spec.js";
2
+ import { KnowledgeSourceConfig, KnowledgeSourceMeta, KnowledgeSourceType } from "./source.js";
3
+ import { AppKnowledgeBinding } from "./binding.js";
4
+ import { productCanonKnowledgeSpace, registerProductCanonKnowledgeSpace } from "./spaces/product-canon.js";
5
+ import { registerSupportFaqKnowledgeSpace, supportFaqKnowledgeSpace } from "./spaces/support-faq.js";
6
+ import { emailThreadsKnowledgeSpace, registerEmailThreadsKnowledgeSpace } from "./spaces/email-threads.js";
7
+ import { registerUploadedDocsKnowledgeSpace, uploadedDocsKnowledgeSpace } from "./spaces/uploaded-docs.js";
8
+ import { financialDocsKnowledgeSpace, registerFinancialDocsKnowledgeSpace } from "./spaces/financial-docs.js";
9
+ import { financialOverviewKnowledgeSpace, registerFinancialOverviewKnowledgeSpace } from "./spaces/financial-overview.js";
10
+ import "./spaces/index.js";
11
+ export { AppKnowledgeBinding, KnowledgeAccessPolicy, KnowledgeCategory, KnowledgeIndexingConfig, KnowledgeRetentionPolicy, KnowledgeSourceConfig, KnowledgeSourceMeta, KnowledgeSourceType, KnowledgeSpaceMeta, KnowledgeSpaceRegistry, KnowledgeSpaceSpec, emailThreadsKnowledgeSpace, financialDocsKnowledgeSpace, financialOverviewKnowledgeSpace, makeKnowledgeSpaceKey, productCanonKnowledgeSpace, registerEmailThreadsKnowledgeSpace, registerFinancialDocsKnowledgeSpace, registerFinancialOverviewKnowledgeSpace, registerProductCanonKnowledgeSpace, registerSupportFaqKnowledgeSpace, registerUploadedDocsKnowledgeSpace, supportFaqKnowledgeSpace, uploadedDocsKnowledgeSpace };
@@ -0,0 +1,10 @@
1
+ import { KnowledgeSpaceRegistry, makeKnowledgeSpaceKey } from "./spec.js";
2
+ import { productCanonKnowledgeSpace, registerProductCanonKnowledgeSpace } from "./spaces/product-canon.js";
3
+ import { registerSupportFaqKnowledgeSpace, supportFaqKnowledgeSpace } from "./spaces/support-faq.js";
4
+ import { emailThreadsKnowledgeSpace, registerEmailThreadsKnowledgeSpace } from "./spaces/email-threads.js";
5
+ import { registerUploadedDocsKnowledgeSpace, uploadedDocsKnowledgeSpace } from "./spaces/uploaded-docs.js";
6
+ import { financialDocsKnowledgeSpace, registerFinancialDocsKnowledgeSpace } from "./spaces/financial-docs.js";
7
+ import { financialOverviewKnowledgeSpace, registerFinancialOverviewKnowledgeSpace } from "./spaces/financial-overview.js";
8
+ import "./spaces/index.js";
9
+
10
+ export { KnowledgeSpaceRegistry, emailThreadsKnowledgeSpace, financialDocsKnowledgeSpace, financialOverviewKnowledgeSpace, makeKnowledgeSpaceKey, productCanonKnowledgeSpace, registerEmailThreadsKnowledgeSpace, registerFinancialDocsKnowledgeSpace, registerFinancialOverviewKnowledgeSpace, registerProductCanonKnowledgeSpace, registerSupportFaqKnowledgeSpace, registerUploadedDocsKnowledgeSpace, supportFaqKnowledgeSpace, uploadedDocsKnowledgeSpace };