@sixb/core 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/dist/actions/index.d.ts +2 -2
  2. package/dist/actions/index.d.ts.map +1 -1
  3. package/dist/actions/index.js +17 -18
  4. package/dist/actions/index.js.map +1 -1
  5. package/dist/actions/read-facade.d.ts +10 -2
  6. package/dist/actions/read-facade.d.ts.map +1 -1
  7. package/dist/actions/types/context.d.ts +45 -2
  8. package/dist/actions/types/context.d.ts.map +1 -1
  9. package/dist/actions/worker.js +4 -4
  10. package/dist/actions/worker.js.map +1 -1
  11. package/dist/agents/context-compaction.d.ts +40 -0
  12. package/dist/agents/context-compaction.d.ts.map +1 -0
  13. package/dist/agents/ids.d.ts +2 -0
  14. package/dist/agents/ids.d.ts.map +1 -1
  15. package/dist/agents/index.d.ts +6 -5
  16. package/dist/agents/index.d.ts.map +1 -1
  17. package/dist/agents/index.js +42 -37
  18. package/dist/agents/index.js.map +1 -1
  19. package/dist/agents/streams.d.ts +17 -1
  20. package/dist/agents/streams.d.ts.map +1 -1
  21. package/dist/agents/streams.js +4 -2
  22. package/dist/agents/streams.js.map +1 -1
  23. package/dist/agents/types.d.ts +11 -0
  24. package/dist/agents/types.d.ts.map +1 -1
  25. package/dist/agents/validation.d.ts +1 -1
  26. package/dist/agents/validation.d.ts.map +1 -1
  27. package/dist/auth/index.js +7 -3
  28. package/dist/auth/index.js.map +1 -1
  29. package/dist/authorization/index.js +6 -2
  30. package/dist/authorization/index.js.map +1 -1
  31. package/dist/bootstrap/index.js +30 -31
  32. package/dist/bootstrap/index.js.map +1 -1
  33. package/dist/{chunk-d6y2wsfg.js → chunk-1q02e95s.js} +12 -7
  34. package/dist/{chunk-d6y2wsfg.js.map → chunk-1q02e95s.js.map} +4 -3
  35. package/dist/{chunk-c6cfqydk.js → chunk-4h947jd8.js} +1 -1
  36. package/dist/{chunk-gqdd7508.js → chunk-4rh2m6zg.js} +1 -1
  37. package/dist/{chunk-f1cyvnrk.js → chunk-6d5xdj1q.js} +259 -9
  38. package/dist/chunk-6d5xdj1q.js.map +14 -0
  39. package/dist/{chunk-fmx1sz2h.js → chunk-72q2y8hn.js} +3 -3
  40. package/dist/{chunk-fmx1sz2h.js.map → chunk-72q2y8hn.js.map} +3 -3
  41. package/dist/{chunk-ttba8x6z.js → chunk-78c6xvyr.js} +68 -3
  42. package/dist/chunk-78c6xvyr.js.map +15 -0
  43. package/dist/{chunk-wb4051cx.js → chunk-819wnjz8.js} +11 -5
  44. package/dist/chunk-819wnjz8.js.map +12 -0
  45. package/dist/{chunk-177ed2mp.js → chunk-84h6qhmp.js} +233 -97
  46. package/dist/{chunk-177ed2mp.js.map → chunk-84h6qhmp.js.map} +9 -9
  47. package/dist/{chunk-pxtrxm3p.js → chunk-a09jx26t.js} +1 -1
  48. package/dist/{chunk-bv41fmjn.js → chunk-am6eczah.js} +59 -22
  49. package/dist/{chunk-bv41fmjn.js.map → chunk-am6eczah.js.map} +8 -7
  50. package/dist/{chunk-zpw39qhj.js → chunk-dm72y8wt.js} +25 -2
  51. package/dist/chunk-dm72y8wt.js.map +10 -0
  52. package/dist/{chunk-kqxgf6kv.js → chunk-drjqm1aa.js} +16 -1
  53. package/dist/{chunk-kqxgf6kv.js.map → chunk-drjqm1aa.js.map} +3 -3
  54. package/dist/chunk-dysw7nsm.js.map +1 -1
  55. package/dist/{chunk-4p9rh7jj.js → chunk-ea73pzk7.js} +1 -1
  56. package/dist/{chunk-4aw0jwk0.js → chunk-f6erf2vv.js} +1 -1
  57. package/dist/{chunk-4z3n1dzt.js → chunk-f83ka50g.js} +131 -25
  58. package/dist/chunk-f83ka50g.js.map +23 -0
  59. package/dist/{chunk-c8bw2b6c.js → chunk-gadsm794.js} +2 -2
  60. package/dist/{chunk-1ywq4hzk.js → chunk-h6h91mfy.js} +8 -10
  61. package/dist/{chunk-1ywq4hzk.js.map → chunk-h6h91mfy.js.map} +2 -2
  62. package/dist/{chunk-n5x5y80a.js → chunk-nzw7sm3b.js} +2 -2
  63. package/dist/{chunk-63te770v.js → chunk-qewtks41.js} +8 -8
  64. package/dist/{chunk-63te770v.js.map → chunk-qewtks41.js.map} +2 -2
  65. package/dist/{chunk-261ag4t4.js → chunk-r0rry8dn.js} +3 -3
  66. package/dist/{chunk-88ppkr54.js → chunk-rte5sm3z.js} +26 -2
  67. package/dist/chunk-rte5sm3z.js.map +12 -0
  68. package/dist/chunk-t0jjkep3.js.map +1 -1
  69. package/dist/{chunk-ettb0cy4.js → chunk-tbv03sx2.js} +59 -29
  70. package/dist/{chunk-ettb0cy4.js.map → chunk-tbv03sx2.js.map} +5 -5
  71. package/dist/{chunk-d2adj15j.js → chunk-tkdscva6.js} +1 -1
  72. package/dist/{chunk-xmggaxg4.js → chunk-v0egge8b.js} +201 -38
  73. package/dist/{chunk-xmggaxg4.js.map → chunk-v0egge8b.js.map} +8 -6
  74. package/dist/{chunk-z8j83gzd.js → chunk-x2yw73hy.js} +1 -1
  75. package/dist/{chunk-qer6am8w.js → chunk-xdf9yswn.js} +1 -1
  76. package/dist/{chunk-3rsf30p4.js → chunk-z3ga9q5m.js} +18 -21
  77. package/dist/{chunk-3rsf30p4.js.map → chunk-z3ga9q5m.js.map} +4 -5
  78. package/dist/{chunk-km4rkj4t.js → chunk-zp2v2rv6.js} +3 -3
  79. package/dist/execution/agent.js +26 -27
  80. package/dist/execution/agent.js.map +1 -1
  81. package/dist/execution/primitive.js +26 -27
  82. package/dist/execution/primitive.js.map +2 -2
  83. package/dist/execution/request.js +27 -28
  84. package/dist/execution/request.js.map +2 -2
  85. package/dist/http/index.js +1 -1
  86. package/dist/index.d.ts +6 -5
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +54 -55
  89. package/dist/index.js.map +1 -1
  90. package/dist/lake-storage/types.d.ts +2 -1
  91. package/dist/lake-storage/types.d.ts.map +1 -1
  92. package/dist/materializer/index.js +15 -16
  93. package/dist/materializer/index.js.map +1 -1
  94. package/dist/models/index.d.ts +40 -0
  95. package/dist/models/index.d.ts.map +1 -0
  96. package/dist/objects/execution.d.ts +6 -1
  97. package/dist/objects/execution.d.ts.map +1 -1
  98. package/dist/objects/index.js +19 -20
  99. package/dist/objects/index.js.map +1 -1
  100. package/dist/objects/link/endpoints.d.ts.map +1 -1
  101. package/dist/objects/query/executor.d.ts +1 -0
  102. package/dist/objects/query/executor.d.ts.map +1 -1
  103. package/dist/objects/query/explain.d.ts +1 -0
  104. package/dist/objects/query/explain.d.ts.map +1 -1
  105. package/dist/objects/query/index.d.ts +3 -1
  106. package/dist/objects/query/index.d.ts.map +1 -1
  107. package/dist/objects/query/index.js +30 -5
  108. package/dist/objects/query/index.js.map +1 -1
  109. package/dist/objects/query/ir.d.ts +14 -1
  110. package/dist/objects/query/ir.d.ts.map +1 -1
  111. package/dist/objects/query/links.d.ts +25 -0
  112. package/dist/objects/query/links.d.ts.map +1 -0
  113. package/dist/objects/query/normalize.d.ts.map +1 -1
  114. package/dist/objects/query/planner.d.ts.map +1 -1
  115. package/dist/objects/query/validate.d.ts +1 -0
  116. package/dist/objects/query/validate.d.ts.map +1 -1
  117. package/dist/ontology/internal.d.ts +1 -1
  118. package/dist/ontology/internal.d.ts.map +1 -1
  119. package/dist/ontology/internal.js +14 -6
  120. package/dist/ontology/internal.js.map +3 -3
  121. package/dist/ontology/json-schema.d.ts +10 -0
  122. package/dist/ontology/json-schema.d.ts.map +1 -1
  123. package/dist/pipelines/index.js +15 -16
  124. package/dist/pipelines/index.js.map +1 -1
  125. package/dist/projections/builders.d.ts +33 -4
  126. package/dist/projections/builders.d.ts.map +1 -1
  127. package/dist/projections/index.d.ts +1 -1
  128. package/dist/projections/index.d.ts.map +1 -1
  129. package/dist/projections/internal.js +15 -16
  130. package/dist/projections/internal.js.map +1 -1
  131. package/dist/projections/run-dispatch.d.ts +1 -0
  132. package/dist/projections/run-dispatch.d.ts.map +1 -1
  133. package/dist/projections/types.d.ts +12 -9
  134. package/dist/projections/types.d.ts.map +1 -1
  135. package/dist/projections/validation.d.ts +6 -5
  136. package/dist/projections/validation.d.ts.map +1 -1
  137. package/dist/query.d.ts +2 -1
  138. package/dist/query.d.ts.map +1 -1
  139. package/dist/query.js +2 -2
  140. package/dist/runtime/create.d.ts +3 -0
  141. package/dist/runtime/create.d.ts.map +1 -1
  142. package/dist/runtime/definitions.d.ts +3 -0
  143. package/dist/runtime/definitions.d.ts.map +1 -1
  144. package/dist/runtime/host.d.ts +2 -0
  145. package/dist/runtime/host.d.ts.map +1 -1
  146. package/dist/runtime/resolve-definitions.d.ts +2 -0
  147. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  148. package/dist/storage/agents/in-memory.d.ts +4 -0
  149. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  150. package/dist/storage/agents/provider.js +9 -5
  151. package/dist/storage/agents/provider.js.map +1 -1
  152. package/dist/storage/agents/types.d.ts +5 -0
  153. package/dist/storage/agents/types.d.ts.map +1 -1
  154. package/dist/storage/ai-cost/provider.js +1 -1
  155. package/dist/storage/ai-usage/in-memory.d.ts +2 -1
  156. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
  157. package/dist/storage/ai-usage/index.d.ts +1 -1
  158. package/dist/storage/ai-usage/index.d.ts.map +1 -1
  159. package/dist/storage/ai-usage/types.d.ts +6 -0
  160. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  161. package/dist/storage/index.d.ts +3 -2
  162. package/dist/storage/index.d.ts.map +1 -1
  163. package/dist/storage/index.js +19 -14
  164. package/dist/storage/index.js.map +1 -1
  165. package/dist/storage/objects/in-memory.d.ts +6 -3
  166. package/dist/storage/objects/in-memory.d.ts.map +1 -1
  167. package/dist/storage/objects/index.d.ts +3 -1
  168. package/dist/storage/objects/index.d.ts.map +1 -1
  169. package/dist/storage/objects/keys.d.ts +16 -0
  170. package/dist/storage/objects/keys.d.ts.map +1 -0
  171. package/dist/storage/objects/types.d.ts +33 -6
  172. package/dist/storage/objects/types.d.ts.map +1 -1
  173. package/dist/storage/ontology/provider.js +1 -1
  174. package/dist/storage/workflow-runs/provider.js +9 -5
  175. package/dist/storage/workflow-runs/provider.js.map +1 -1
  176. package/dist/syncs/index.js +15 -16
  177. package/dist/syncs/index.js.map +1 -1
  178. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  179. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  180. package/dist/testing/effective-storage-contract.d.ts +1 -1
  181. package/dist/testing/effective-storage-contract.d.ts.map +1 -1
  182. package/dist/testing/index.js +455 -40
  183. package/dist/testing/index.js.map +7 -7
  184. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  185. package/dist/testing/object-query-contract.d.ts +1 -1
  186. package/dist/testing/object-query-contract.d.ts.map +1 -1
  187. package/dist/webhooks/internal.js +13 -14
  188. package/dist/webhooks/internal.js.map +2 -2
  189. package/dist/workflows/index.js +27 -28
  190. package/dist/workflows/index.js.map +1 -1
  191. package/package.json +1 -1
  192. package/src/actions/index.ts +10 -1
  193. package/src/actions/read-facade.ts +125 -3
  194. package/src/actions/types/context.ts +69 -2
  195. package/src/agents/builders.ts +3 -3
  196. package/src/agents/context-compaction.ts +261 -0
  197. package/src/agents/ids.ts +5 -0
  198. package/src/agents/index.ts +18 -9
  199. package/src/agents/streams.ts +56 -0
  200. package/src/agents/types.ts +12 -0
  201. package/src/agents/validation.ts +39 -5
  202. package/src/http/api-routes.ts +7 -7
  203. package/src/index.ts +19 -0
  204. package/src/lake-storage/types.ts +2 -1
  205. package/src/materializer/telemetry/append.ts +33 -16
  206. package/src/models/index.ts +71 -0
  207. package/src/objects/execution.ts +20 -0
  208. package/src/objects/link/endpoints.ts +2 -1
  209. package/src/objects/query/executor.ts +42 -11
  210. package/src/objects/query/explain.ts +11 -0
  211. package/src/objects/query/index.ts +6 -0
  212. package/src/objects/query/ir.ts +16 -0
  213. package/src/objects/query/links.ts +308 -0
  214. package/src/objects/query/normalize.ts +40 -1
  215. package/src/objects/query/planner.ts +5 -0
  216. package/src/objects/query/validate.ts +58 -2
  217. package/src/ontology/internal.ts +1 -1
  218. package/src/ontology/json-schema.ts +27 -5
  219. package/src/projections/builders.ts +220 -15
  220. package/src/projections/index.ts +1 -0
  221. package/src/projections/ownership.ts +5 -5
  222. package/src/projections/registry.ts +9 -3
  223. package/src/projections/revision.ts +31 -5
  224. package/src/projections/run-dispatch.ts +10 -1
  225. package/src/projections/types.ts +13 -9
  226. package/src/projections/validation.ts +61 -19
  227. package/src/query.ts +2 -0
  228. package/src/runtime/create.ts +4 -0
  229. package/src/runtime/definitions.ts +3 -0
  230. package/src/runtime/host.ts +2 -0
  231. package/src/runtime/resolve-definitions.ts +28 -0
  232. package/src/storage/agents/in-memory.ts +15 -0
  233. package/src/storage/agents/types.ts +5 -0
  234. package/src/storage/ai-usage/in-memory.ts +23 -0
  235. package/src/storage/ai-usage/index.ts +1 -0
  236. package/src/storage/ai-usage/types.ts +10 -0
  237. package/src/storage/index.ts +11 -0
  238. package/src/storage/objects/in-memory.ts +103 -16
  239. package/src/storage/objects/index.ts +9 -0
  240. package/src/storage/objects/keys.ts +36 -0
  241. package/src/storage/objects/types.ts +34 -6
  242. package/src/storage/ontology/provider-header-validation.ts +2 -2
  243. package/src/storage/timeseries/store.ts +6 -6
  244. package/src/testing/agent-storage-contract.ts +12 -0
  245. package/src/testing/ai-usage-storage-contract.ts +35 -0
  246. package/src/testing/effective-storage-contract.ts +194 -4
  247. package/src/testing/lake-storage-contract.ts +56 -0
  248. package/src/testing/object-query-contract.ts +208 -1
  249. package/dist/agents/prompt.d.ts +0 -21
  250. package/dist/agents/prompt.d.ts.map +0 -1
  251. package/dist/chunk-4z3n1dzt.js.map +0 -23
  252. package/dist/chunk-6wetht33.js +0 -89
  253. package/dist/chunk-6wetht33.js.map +0 -10
  254. package/dist/chunk-88ppkr54.js.map +0 -12
  255. package/dist/chunk-f1cyvnrk.js.map +0 -13
  256. package/dist/chunk-ttba8x6z.js.map +0 -15
  257. package/dist/chunk-wb4051cx.js.map +0 -12
  258. package/dist/chunk-zpw39qhj.js.map +0 -10
  259. package/src/agents/prompt.ts +0 -85
  260. /package/dist/{chunk-c6cfqydk.js.map → chunk-4h947jd8.js.map} +0 -0
  261. /package/dist/{chunk-gqdd7508.js.map → chunk-4rh2m6zg.js.map} +0 -0
  262. /package/dist/{chunk-pxtrxm3p.js.map → chunk-a09jx26t.js.map} +0 -0
  263. /package/dist/{chunk-4p9rh7jj.js.map → chunk-ea73pzk7.js.map} +0 -0
  264. /package/dist/{chunk-4aw0jwk0.js.map → chunk-f6erf2vv.js.map} +0 -0
  265. /package/dist/{chunk-c8bw2b6c.js.map → chunk-gadsm794.js.map} +0 -0
  266. /package/dist/{chunk-n5x5y80a.js.map → chunk-nzw7sm3b.js.map} +0 -0
  267. /package/dist/{chunk-261ag4t4.js.map → chunk-r0rry8dn.js.map} +0 -0
  268. /package/dist/{chunk-d2adj15j.js.map → chunk-tkdscva6.js.map} +0 -0
  269. /package/dist/{chunk-z8j83gzd.js.map → chunk-x2yw73hy.js.map} +0 -0
  270. /package/dist/{chunk-qer6am8w.js.map → chunk-xdf9yswn.js.map} +0 -0
  271. /package/dist/{chunk-km4rkj4t.js.map → chunk-zp2v2rv6.js.map} +0 -0
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/actions/errors.ts", "../src/actions/validation.ts", "../src/objects/action/errors.ts", "../src/actions/run-dispatch.ts", "../src/actions/run-id.ts", "../src/actions/request.ts"],
3
+ "sources": ["../src/actions/errors.ts", "../src/actions/validation.ts", "../src/runtime/errors.ts", "../src/objects/action/errors.ts", "../src/actions/run-dispatch.ts", "../src/actions/run-id.ts", "../src/actions/request.ts"],
4
4
  "sourcesContent": [
5
5
  "export class ActionDefinitionError extends Error {\n readonly name = \"ActionDefinitionError\"\n}\n\nexport class ActionEditCommitError extends Error {\n readonly name = \"ActionEditCommitError\"\n}\n\nexport function missingActionMutationMessage(actionId: string): string {\n return `Action \"${actionId}\" must declare .writeback(...) or .edits(...).`\n}\n\nexport function effectsWithoutEditsMessage(actionId: string): string {\n return `Action \"${actionId}\" cannot declare .effects(...) without .edits(...).`\n}\n",
6
6
  "import type { JsonValue } from \"../json\"\nimport { type SchemaOrRef, type ValueType, validateSchemaOrRefValue } from \"../ontology\"\nimport { OntologyValidationError } from \"../ontology/errors\"\nimport type { ObjectTypeWithPropertyTokens } from \"../ontology/tokens\"\nimport type { Schema } from \"../ontology/types\"\nimport { coerceSchemaValueToTyped, normalizeSchemaValue } from \"../ontology/validation\"\nimport type { ActionRunParams } from \"../storage/action-runs\"\nimport { ActionDefinitionError } from \"./errors\"\nimport type {\n ActionDefinition,\n ActionParamsConfig,\n ActionSubject,\n GlobalActionDefinition,\n ObjectActionDefinition,\n} from \"./types\"\n\ninterface ActionValidationRuntime {\n readonly ontology: {\n getValueTypesById(): ReadonlyMap<string, ValueType>\n resolveObjectType(objectTypeId: string): ObjectTypeWithPropertyTokens\n }\n readonly actionRegistry: {\n listForType(objectType: ObjectTypeWithPropertyTokens): readonly ObjectActionDefinition[]\n }\n}\n\nexport function assertNonEmpty(value: string, field: string): void {\n if (!value.trim()) {\n throw new ActionDefinitionError(`Action ${field} must not be empty.`)\n }\n}\n\nexport function isActionDefinition(value: unknown): value is ActionDefinition {\n const binding = (value as { binding?: { kind?: unknown } } | null)?.binding\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { kind?: unknown }).kind === \"action\" &&\n (binding?.kind === \"global\" || binding?.kind === \"object\")\n )\n}\n\nexport function isGlobalActionDefinition(value: ActionDefinition): value is GlobalActionDefinition {\n return value.binding.kind === \"global\"\n}\n\nexport function isObjectActionDefinition(value: ActionDefinition): value is ObjectActionDefinition {\n return value.binding.kind === \"object\"\n}\n\nexport function normalizeActionParams(\n runtime: Pick<ActionValidationRuntime, \"ontology\">,\n paramsConfig: ActionParamsConfig,\n params: Record<string, unknown>,\n pathPrefix: string\n): ActionRunParams {\n const knownParamIds = new Set(Object.keys(paramsConfig))\n const normalized: Record<string, JsonValue> = {}\n\n for (const paramId of Object.keys(params)) {\n if (!knownParamIds.has(paramId)) {\n throw new OntologyValidationError(`Unknown param '${paramId}' for action '${pathPrefix}'`)\n }\n }\n\n for (const [paramId, paramDef] of Object.entries(paramsConfig)) {\n const value = params[paramId]\n\n if (value === undefined) {\n if (paramDef.required) {\n throw new OntologyValidationError(\n `Missing required param '${paramId}' for action '${pathPrefix}'`\n )\n }\n continue\n }\n\n if (value === null) {\n if (!paramDef.nullable) {\n throw new OntologyValidationError(\n `[Sixb] Action param ${pathPrefix}.${paramId} cannot be null`\n )\n }\n normalized[paramId] = null\n continue\n }\n\n validateSchemaOrRefValue(\n paramDef.schema,\n value,\n `${pathPrefix}.${paramId}`,\n runtime.ontology.getValueTypesById()\n )\n\n normalized[paramId] = normalizeSchemaOrRefValue(\n paramDef.schema,\n value,\n `${pathPrefix}.${paramId}`,\n runtime.ontology.getValueTypesById()\n )\n }\n\n return normalized\n}\n\n/**\n * Re-hydrate stored action params for the handler-facing surface. Params are\n * normalized to JSON (e.g. `date`/`timestamp` -> ISO string) for storage; action\n * handler types promise `Date` for those, so this converts them back before the\n * handler runs. `objectRef` params pass through unchanged.\n */\nexport function coerceActionParamsToTyped(\n paramsConfig: ActionParamsConfig,\n params: Record<string, unknown>,\n valueTypesById: ReadonlyMap<string, ValueType>\n): Record<string, unknown> {\n const coerced: Record<string, unknown> = { ...params }\n\n for (const [paramId, paramDef] of Object.entries(paramsConfig)) {\n const value = params[paramId]\n if (value === undefined) continue\n\n const schema = paramDef.schema\n if (typeof schema === \"object\" && schema !== null && schema.type === \"objectRef\") {\n continue\n }\n\n coerced[paramId] = coerceSchemaValueToTyped(schema as Schema, value, valueTypesById)\n }\n\n return coerced\n}\n\nexport function validateActionSubject(action: ActionDefinition, subject: ActionSubject): void {\n if (isGlobalActionDefinition(action) && subject.kind !== \"none\") {\n throw new OntologyValidationError(`Action '${action.id}' does not accept an object subject.`)\n }\n}\n\nexport function resolveObjectActionSubject(params: {\n readonly runtime: ActionValidationRuntime\n readonly action: ObjectActionDefinition\n readonly subject: ActionSubject\n}): ObjectTypeWithPropertyTokens {\n const { runtime, action, subject } = params\n\n if (subject.kind !== \"object\") {\n throw new OntologyValidationError(`Action '${action.id}' requires an object subject.`)\n }\n\n const objectType = runtime.ontology.resolveObjectType(subject.objectTypeId)\n if (!actionAppliesToObjectType(runtime, action, objectType)) {\n throw new OntologyValidationError(\n `Action '${action.id}' is not valid for object type '${objectType.id}'.`\n )\n }\n\n return objectType\n}\n\nfunction actionAppliesToObjectType(\n runtime: Pick<ActionValidationRuntime, \"actionRegistry\">,\n action: ObjectActionDefinition,\n objectType: ObjectTypeWithPropertyTokens\n): boolean {\n return runtime.actionRegistry\n .listForType(objectType)\n .some((candidate) => candidate.id === action.id)\n}\n\nfunction normalizeSchemaOrRefValue(\n schema: SchemaOrRef,\n value: unknown,\n path: string,\n valueTypesById: ReadonlyMap<string, ValueType>\n): JsonValue {\n if (typeof schema === \"object\" && schema !== null && schema.type === \"objectRef\") {\n const refValue = value as { objectTypeId: string; primaryId: string }\n return {\n objectTypeId: refValue.objectTypeId,\n primaryId: refValue.primaryId,\n }\n }\n\n return normalizeSchemaValue(schema as Schema, value, path, valueTypesById)\n}\n",
7
+ "/**\n * Thrown for runtime setup, lifecycle, and internal invariant failures\n * that are not validation errors (e.g., duplicate registrations, missing\n * bootstrap resources, failed event appends, module load failures).\n */\nexport class RuntimeError extends Error {\n readonly name = \"RuntimeError\"\n}\n",
7
8
  "import type { ActionSubject } from \"../../actions\"\nimport type { ActionRunFailure } from \"../../storage\"\n\nexport class ActionValidationError extends Error {\n readonly name = \"ActionValidationError\"\n readonly actionId: string\n readonly subject: ActionSubject\n readonly primaryId?: string\n\n constructor(message: string, params: { actionId: string; subject: ActionSubject }) {\n super(message)\n this.actionId = params.actionId\n this.subject = params.subject\n this.primaryId = params.subject.kind === \"object\" ? params.subject.primaryId : undefined\n }\n}\n\nexport class ActionRunFailedError extends Error {\n readonly name = \"ActionRunFailedError\"\n readonly runId: string\n readonly actionId: string\n readonly subject: ActionSubject\n readonly objectTypeId?: string\n readonly primaryId?: string\n readonly error: ActionRunFailure\n readonly finishedAt: string\n\n constructor(payload: {\n runId: string\n actionId: string\n subject: ActionSubject\n error: ActionRunFailure\n finishedAt: string\n }) {\n super(payload.error.message)\n this.runId = payload.runId\n this.actionId = payload.actionId\n this.subject = payload.subject\n this.objectTypeId = payload.subject.kind === \"object\" ? payload.subject.objectTypeId : undefined\n this.primaryId = payload.subject.kind === \"object\" ? payload.subject.primaryId : undefined\n this.error = payload.error\n this.finishedAt = payload.finishedAt\n }\n}\n\nexport class ActionRunTimeoutError extends Error {\n readonly name = \"ActionRunTimeoutError\"\n readonly runId: string\n readonly timeoutMs: number\n\n constructor(params: { runId: string; timeoutMs: number }) {\n super(`Action run '${params.runId}' did not finish within ${params.timeoutMs}ms.`)\n this.runId = params.runId\n this.timeoutMs = params.timeoutMs\n }\n}\n",
8
9
  "import { randomUUID } from \"node:crypto\"\nimport { reportRunFailure } from \"../error-reporting/capability\"\nimport { createSixbError, toSixbFailure } from \"../errors/internal\"\nimport type { DomainEventLog } from \"../events\"\nimport type { Queues } from \"../queues\"\nimport type {\n ActionRunFailure,\n ActionRunParams,\n ActionRunRecord,\n CreateExecutionInput,\n Storage,\n} from \"../storage\"\nimport {\n ACTION_RUN_FAILURE_CODES,\n ActionRunError,\n actionRunParamsEqual,\n actionSubjectsEqual,\n} from \"../storage\"\nimport { parseActionRunFailure } from \"../storage/action-runs/failure\"\nimport type { RequestActionResult } from \"./request\"\nimport { createActionRunId, createActionRunIdempotencyKey } from \"./run-id\"\nimport type { ActionSubject } from \"./types\"\n\ninterface DispatchActionRunInput {\n readonly errorReporterHost: object\n readonly projectId: string\n readonly storage: Storage\n readonly queue: Queues[\"actions\"]\n readonly events: DomainEventLog\n readonly actionId: string\n readonly subject: ActionSubject\n readonly params: ActionRunParams\n readonly runId?: string\n readonly createExecution: (executionId: string, runId: string) => Promise<CreateExecutionInput>\n}\n\ninterface PreparedActionRun {\n readonly runId: string\n readonly idempotencyKey: string\n}\n\ntype PersistedActionRun =\n | { readonly publish: false; readonly run: ActionRunRecord }\n | {\n readonly publish: true\n readonly run: ActionRunRecord\n readonly execution: CreateExecutionInput\n readonly queuedAt: Date\n readonly created: boolean\n }\n\n/** Persist an Action execution and run before publishing its queue job. */\nexport async function dispatchActionRun(\n input: DispatchActionRunInput\n): Promise<RequestActionResult> {\n const request = prepareActionRun(input)\n const persisted = await persistActionRun(input, request)\n if (!persisted.publish) return existingActionRunResult(persisted.run)\n return publishActionRun(input, persisted)\n}\n\nfunction prepareActionRun(input: DispatchActionRunInput): PreparedActionRun {\n const runId = createActionRunId(input.runId)\n return {\n runId,\n idempotencyKey: createActionRunIdempotencyKey(input.projectId, runId),\n }\n}\n\nasync function persistActionRun(\n input: DispatchActionRunInput,\n request: PreparedActionRun\n): Promise<PersistedActionRun> {\n const actionRuns = requireActionRunStorage(input.storage)\n const existing = await actionRuns.getById({ projectId: input.projectId, id: request.runId })\n if (existing) return reuseActionRun(input, existing)\n\n const execution = await input.createExecution(`exec_${randomUUID()}`, request.runId)\n const queuedAt = new Date()\n try {\n return await input.storage.transaction(\n async (tx): Promise<PersistedActionRun> => {\n const transactionalRuns = requireActionRunStorage(tx)\n const raced = await transactionalRuns.getById({\n projectId: input.projectId,\n id: request.runId,\n })\n if (raced) {\n assertExistingRunMatchesRequest(raced, input)\n return { publish: false, run: raced }\n }\n\n await tx.executions.create(execution)\n const run = await transactionalRuns.queue({\n projectId: input.projectId,\n id: request.runId,\n executionId: execution.id,\n actionId: input.actionId,\n subject: input.subject,\n params: input.params,\n idempotencyKey: request.idempotencyKey,\n queuedAt,\n })\n return { publish: true, run, execution, queuedAt, created: true }\n },\n { isolation: \"serializable\" }\n )\n } catch (error) {\n if (!(error instanceof ActionRunError)) throw error\n const raced = await actionRuns.getById({ projectId: input.projectId, id: request.runId })\n if (!raced) throw error\n assertExistingRunMatchesRequest(raced, input)\n return { publish: false, run: raced }\n }\n}\n\nasync function reuseActionRun(\n input: DispatchActionRunInput,\n existing: ActionRunRecord\n): Promise<PersistedActionRun> {\n assertExistingRunMatchesRequest(existing, input)\n if (!isRetryableEnqueueFailure(existing)) return { publish: false, run: existing }\n\n const execution = await input.storage.executions.getById({\n projectId: input.projectId,\n id: existing.executionId,\n })\n if (!execution) {\n throw new ActionRunError(\n `[Sixb] Execution '${existing.executionId}' for Action run '${existing.id}' was not found.`\n )\n }\n\n const queuedAt = new Date()\n const run = await requireActionRunStorage(input.storage).queue({\n projectId: input.projectId,\n id: existing.id,\n executionId: existing.executionId,\n actionId: existing.actionId,\n subject: existing.subject,\n params: existing.params,\n idempotencyKey: existing.idempotencyKey,\n queuedAt,\n })\n return { publish: true, run, execution, queuedAt, created: false }\n}\n\nasync function publishActionRun(\n input: DispatchActionRunInput,\n persisted: Extract<PersistedActionRun, { readonly publish: true }>\n): Promise<RequestActionResult> {\n let job: Awaited<ReturnType<Queues[\"actions\"][\"enqueue\"]>>[number] | undefined\n try {\n const jobs = await input.queue.enqueue({\n projectId: input.projectId,\n jobs: [\n {\n id: persisted.run.id,\n type: \"action.run.requested\",\n payload: {\n runId: persisted.run.id,\n },\n },\n ],\n })\n job = jobs[0]\n } catch (error) {\n await failActionRunPublication(input, persisted.run, error)\n throw error\n }\n\n await input.events.emit(\n {\n events: [\n {\n type: \"action.requested\",\n payload: {\n actionId: persisted.run.actionId,\n subject: persisted.run.subject,\n params: persisted.run.params,\n runId: persisted.run.id,\n },\n },\n ],\n correlationId: persisted.execution.correlationId,\n },\n { source: \"Sixb\" }\n )\n\n return {\n runId: persisted.run.id,\n queuedAt: persisted.queuedAt.toISOString(),\n ...(job?.id ? { jobId: job.id } : {}),\n created: persisted.created,\n }\n}\n\nasync function failActionRunPublication(\n input: DispatchActionRunInput,\n run: ActionRunRecord,\n error: unknown\n): Promise<void> {\n const failedAt = new Date()\n const failure = toActionRunFailure(error, run, failedAt)\n await requireActionRunStorage(input.storage).finish({\n projectId: input.projectId,\n id: run.id,\n status: \"failed\",\n finishedAt: failedAt,\n error: failure,\n })\n reportRunFailure(input.errorReporterHost, error, {\n projectId: input.projectId,\n runKind: \"action\",\n run: { runId: run.id, actionId: run.actionId },\n failure,\n })\n}\n\nfunction requireActionRunStorage(storage: Storage): NonNullable<Storage[\"actionRuns\"]> {\n if (!storage.actionRuns) {\n throw new ActionRunError(\"[Sixb] Action run storage is not configured.\")\n }\n return storage.actionRuns\n}\n\nfunction assertExistingRunMatchesRequest(\n existing: ActionRunRecord,\n request: Pick<DispatchActionRunInput, \"actionId\" | \"subject\" | \"params\">\n): void {\n if (\n existing.actionId !== request.actionId ||\n !actionSubjectsEqual(existing.subject, request.subject) ||\n !actionRunParamsEqual(existing.params, request.params)\n ) {\n throw new ActionRunError(\n `[Sixb] Action run '${existing.id}' already exists with a different request payload.`\n )\n }\n}\n\nfunction isRetryableEnqueueFailure(record: ActionRunRecord): boolean {\n return (\n record.status === \"failed\" && record.phase === \"enqueue\" && record.error?.retryable === true\n )\n}\n\nfunction existingActionRunResult(existing: ActionRunRecord): RequestActionResult {\n return {\n runId: existing.id,\n queuedAt: existing.queuedAt.toISOString(),\n created: false,\n }\n}\n\nfunction toActionRunFailure(\n error: unknown,\n run: ActionRunRecord,\n at: Date\n): ActionRunFailure<\"enqueue\"> {\n const enqueueError = createSixbError(\n \"queue.enqueue_failed\",\n `[Sixb] Could not enqueue Action run '${run.id}'.`,\n {\n cause: error,\n details: { actionId: run.actionId, runId: run.id, phase: \"enqueue\" },\n }\n )\n return parseActionRunFailure(\n toSixbFailure(enqueueError, {\n allowedCodes: ACTION_RUN_FAILURE_CODES,\n at,\n }),\n \"enqueue\"\n )\n}\n",
9
10
  "import { randomUUID } from \"node:crypto\"\nimport { OntologyValidationError } from \"../ontology/errors\"\n\nexport function createActionRunId(runId: string | undefined): string {\n if (runId !== undefined) {\n if (!runId.trim()) {\n throw new OntologyValidationError(\"[Sixb] Action run id must not be empty\")\n }\n return runId\n }\n\n return `act_${randomUUID()}`\n}\n\nexport function createActionRunIdempotencyKey(projectId: string, runId: string): string {\n return `action:${projectId}:${runId}`\n}\n",
10
11
  "import { assertAuthorized } from \"../authorization\"\nimport {\n createPrimitiveExecutionRecord,\n ensureExecutionRecord,\n executionRecordInputFromRuntime,\n} from \"../execution/durable\"\nimport type { ExecutionContext } from \"../execution/types\"\nimport { ActionRunTimeoutError } from \"../objects/action/errors\"\nimport { OntologyValidationError } from \"../ontology/errors\"\nimport type { ObjectTypeWithPropertyTokens } from \"../ontology/tokens\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport {\n ActionRunError,\n type ActionRunRecord,\n type ActionRunStorage,\n isTerminalActionRun,\n} from \"../storage\"\nimport { dispatchActionRun } from \"./run-dispatch\"\nimport { createActionRunId } from \"./run-id\"\nimport type { ActionDefinition, ActionSubject } from \"./types\"\nimport {\n isObjectActionDefinition,\n normalizeActionParams,\n resolveObjectActionSubject,\n validateActionSubject,\n} from \"./validation\"\n\nexport interface RequestActionResult {\n readonly runId: string\n readonly queuedAt: string\n readonly jobId?: string\n readonly created: boolean\n}\n\nexport interface RequestActionOptions {\n readonly runId?: string\n readonly signal?: AbortSignal\n}\n\nexport interface RequestActionAndWaitOptions extends RequestActionOptions {\n readonly timeoutMs?: number\n readonly onRequested?: (runId: string) => void | Promise<void>\n}\n\nexport interface RequestActionInput {\n readonly actionId: string\n readonly subject?: ActionSubject\n readonly params?: Record<string, unknown>\n readonly runId?: string\n readonly signal?: AbortSignal\n}\n\nexport interface RequestActionAndWaitInput extends RequestActionInput {\n readonly timeoutMs?: number\n readonly onRequested?: (runId: string) => void | Promise<void>\n}\n\nexport interface WaitForActionRunInput {\n readonly runId: string\n readonly timeoutMs?: number\n readonly signal?: AbortSignal\n}\n\nconst DEFAULT_ACTION_WAIT_TIMEOUT_MS = 60_000\nconst DEFAULT_ACTION_WAIT_POLL_MS = 1_000\n\nfunction clearTimer(timer: ReturnType<typeof setTimeout> | undefined): void {\n if (timer) {\n clearTimeout(timer)\n }\n}\n\nfunction getActionDefinition(runtime: SixbRuntimeContext, actionId: string): ActionDefinition {\n const action = runtime.actionRegistry.getById(actionId)\n if (!action) {\n throw new OntologyValidationError(`Unknown action '${actionId}'`)\n }\n return action\n}\n\nexport async function requestAction(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n input: RequestActionInput\n): Promise<RequestActionResult> {\n requireActionRunStorage(runtime)\n const action = getActionDefinition(runtime, input.actionId)\n const actionId = action.id\n const rawParams: Record<string, unknown> = input.params ?? {}\n const subject: ActionSubject = input.subject ?? { kind: \"none\" }\n\n assertAuthorized(runtime, { kind: \"action.apply\", actionId })\n if (action.binding.kind === \"object\") {\n // Object actions also require visibility of the subject's object type.\n assertAuthorized(runtime, { kind: \"object.view\", objectTypeId: action.binding.objectType.id })\n }\n\n validateActionSubject(action, subject)\n\n let pathPrefix = action.id\n let objectType: ObjectTypeWithPropertyTokens | null = null\n\n if (isObjectActionDefinition(action)) {\n objectType = resolveObjectActionSubject({ runtime, action, subject })\n pathPrefix = `${objectType.id}.${action.id}`\n }\n\n const actionParams = normalizeActionParams(runtime, action.params, rawParams, pathPrefix)\n\n return dispatchActionRun({\n errorReporterHost: runtime,\n projectId: runtime.projectId,\n storage: runtime.storage,\n queue: runtime.queues.actions,\n events: runtime.events,\n actionId,\n subject,\n params: actionParams,\n runId: input.runId,\n createExecution: async (executionId, runId) => {\n const caller = await ensureExecutionRecord(\n runtime.storage.executions,\n executionRecordInputFromRuntime({\n execution,\n runtimeAuthorization: runtime.runtimeAuthorization,\n })\n )\n return createPrimitiveExecutionRecord({\n id: executionId,\n primitive: { kind: \"action\", id: actionId, runId },\n origin: { type: \"execution\", parent: caller },\n })\n },\n })\n}\n\nexport async function requestActionAndWait(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n input: RequestActionAndWaitInput\n): Promise<ActionRunRecord> {\n const runId = createActionRunId(input.runId)\n\n await requestAction(runtime, execution, {\n ...input,\n runId,\n })\n await input.onRequested?.(runId)\n\n return waitForActionRun(runtime, {\n runId,\n timeoutMs: input.timeoutMs,\n signal: input.signal,\n })\n}\n\nexport async function waitForActionRun(\n runtime: SixbRuntimeContext,\n input: WaitForActionRunInput\n): Promise<ActionRunRecord> {\n const actionRuns = requireActionRunStorage(runtime)\n const timeoutMs = input.timeoutMs ?? DEFAULT_ACTION_WAIT_TIMEOUT_MS\n const signal = input.signal\n const startedAt = Date.now()\n\n if (signal?.aborted) {\n throw signal.reason ?? new Error(\"aborted\")\n }\n\n return new Promise<ActionRunRecord>((resolve, reject) => {\n let timer: ReturnType<typeof setTimeout> | undefined\n let pollTimer: ReturnType<typeof setTimeout> | undefined\n let unsubscribe: (() => void) | undefined\n let settled = false\n let checking = false\n\n const releaseSubscription = (release: (() => void) | undefined) => {\n if (!release) return\n try {\n release()\n } catch (error) {\n console.error(\"[Sixb] Failed to release action run wait subscription:\", error)\n }\n }\n\n const cleanup = () => {\n if (settled) return\n settled = true\n clearTimer(timer)\n clearTimer(pollTimer)\n signal?.removeEventListener(\"abort\", onAbort)\n releaseSubscription(unsubscribe)\n }\n\n const rejectWith = (error: unknown) => {\n cleanup()\n reject(error)\n }\n\n const schedulePoll = () => {\n if (!settled && !pollTimer) {\n pollTimer = setTimeout(() => {\n pollTimer = undefined\n void check()\n }, DEFAULT_ACTION_WAIT_POLL_MS)\n }\n }\n\n const check = async () => {\n if (settled || checking) {\n return\n }\n checking = true\n try {\n const record = await actionRuns.getById({\n projectId: runtime.projectId,\n id: input.runId,\n })\n if (record && isTerminalActionRun(record)) {\n cleanup()\n resolve(record)\n return\n }\n schedulePoll()\n } catch (error) {\n rejectWith(error)\n } finally {\n checking = false\n }\n }\n\n const onAbort = () => {\n rejectWith(signal?.reason ?? new Error(\"aborted\"))\n }\n\n timer = setTimeout(\n () => {\n rejectWith(new ActionRunTimeoutError({ runId: input.runId, timeoutMs }))\n },\n Math.max(0, timeoutMs - (Date.now() - startedAt))\n )\n\n if (signal) {\n signal.addEventListener(\"abort\", onAbort, { once: true })\n }\n\n runtime.events\n .subscribe({ types: [\"action.completed\", \"action.failed\"] }, (events) => {\n if (\n events.some(\n (event) =>\n (event.type === \"action.completed\" || event.type === \"action.failed\") &&\n event.payload.runId === input.runId\n )\n ) {\n void check()\n }\n })\n .then((unsubscribeEvents) => {\n // Timeout or abort can settle the wait before the asynchronous subscription resolves.\n // `cleanup()` had no handle to release in that case, so release the late handle here.\n if (settled) {\n releaseSubscription(unsubscribeEvents)\n return\n }\n unsubscribe = unsubscribeEvents\n void check()\n })\n .catch((error: unknown) => {\n if (settled) {\n console.error(\"[Sixb] Action run wait subscription failed after the wait settled:\", error)\n return\n }\n rejectWith(error)\n })\n })\n}\n\nfunction requireActionRunStorage(runtime: SixbRuntimeContext): ActionRunStorage {\n const actionRuns = runtime.storage.actionRuns\n if (!actionRuns) {\n throw new ActionRunError(\"[Sixb] Action run storage is not configured.\")\n }\n return actionRuns\n}\n"
11
12
  ],
12
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,8BAA8B,MAAM;AAAA,EACtC,OAAO;AAClB;AAAA;AAEO,MAAM,8BAA8B,MAAM;AAAA,EACtC,OAAO;AAClB;AAEO,SAAS,4BAA4B,CAAC,UAA0B;AAAA,EACrE,OAAO,WAAW;AAAA;AAGb,SAAS,0BAA0B,CAAC,UAA0B;AAAA,EACnE,OAAO,WAAW;AAAA;;;ACab,SAAS,cAAc,CAAC,OAAe,OAAqB;AAAA,EACjE,IAAI,CAAC,MAAM,KAAK,GAAG;AAAA,IACjB,MAAM,IAAI,sBAAsB,UAAU,0BAA0B;AAAA,EACtE;AAAA;AAGK,SAAS,kBAAkB,CAAC,OAA2C;AAAA,EAC5E,MAAM,UAAW,OAAmD;AAAA,EACpE,OACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA6B,SAAS,aACtC,SAAS,SAAS,YAAY,SAAS,SAAS;AAAA;AAI9C,SAAS,wBAAwB,CAAC,OAA0D;AAAA,EACjG,OAAO,MAAM,QAAQ,SAAS;AAAA;AAGzB,SAAS,wBAAwB,CAAC,OAA0D;AAAA,EACjG,OAAO,MAAM,QAAQ,SAAS;AAAA;AAGzB,SAAS,qBAAqB,CACnC,SACA,cACA,QACA,YACiB;AAAA,EACjB,MAAM,gBAAgB,IAAI,IAAI,OAAO,KAAK,YAAY,CAAC;AAAA,EACvD,MAAM,aAAwC,CAAC;AAAA,EAE/C,WAAW,WAAW,OAAO,KAAK,MAAM,GAAG;AAAA,IACzC,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG;AAAA,MAC/B,MAAM,IAAI,wBAAwB,kBAAkB,wBAAwB,aAAa;AAAA,IAC3F;AAAA,EACF;AAAA,EAEA,YAAY,SAAS,aAAa,OAAO,QAAQ,YAAY,GAAG;AAAA,IAC9D,MAAM,QAAQ,OAAO;AAAA,IAErB,IAAI,UAAU,WAAW;AAAA,MACvB,IAAI,SAAS,UAAU;AAAA,QACrB,MAAM,IAAI,wBACR,2BAA2B,wBAAwB,aACrD;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IAEA,IAAI,UAAU,MAAM;AAAA,MAClB,IAAI,CAAC,SAAS,UAAU;AAAA,QACtB,MAAM,IAAI,wBACR,uBAAuB,cAAc,wBACvC;AAAA,MACF;AAAA,MACA,WAAW,WAAW;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,yBACE,SAAS,QACT,OACA,GAAG,cAAc,WACjB,QAAQ,SAAS,kBAAkB,CACrC;AAAA,IAEA,WAAW,WAAW,0BACpB,SAAS,QACT,OACA,GAAG,cAAc,WACjB,QAAQ,SAAS,kBAAkB,CACrC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AASF,SAAS,yBAAyB,CACvC,cACA,QACA,gBACyB;AAAA,EACzB,MAAM,UAAmC,KAAK,OAAO;AAAA,EAErD,YAAY,SAAS,aAAa,OAAO,QAAQ,YAAY,GAAG;AAAA,IAC9D,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,UAAU;AAAA,MAAW;AAAA,IAEzB,MAAM,SAAS,SAAS;AAAA,IACxB,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,SAAS,aAAa;AAAA,MAChF;AAAA,IACF;AAAA,IAEA,QAAQ,WAAW,yBAAyB,QAAkB,OAAO,cAAc;AAAA,EACrF;AAAA,EAEA,OAAO;AAAA;AAGF,SAAS,qBAAqB,CAAC,QAA0B,SAA8B;AAAA,EAC5F,IAAI,yBAAyB,MAAM,KAAK,QAAQ,SAAS,QAAQ;AAAA,IAC/D,MAAM,IAAI,wBAAwB,WAAW,OAAO,wCAAwC;AAAA,EAC9F;AAAA;AAGK,SAAS,0BAA0B,CAAC,QAIV;AAAA,EAC/B,QAAQ,SAAS,QAAQ,YAAY;AAAA,EAErC,IAAI,QAAQ,SAAS,UAAU;AAAA,IAC7B,MAAM,IAAI,wBAAwB,WAAW,OAAO,iCAAiC;AAAA,EACvF;AAAA,EAEA,MAAM,aAAa,QAAQ,SAAS,kBAAkB,QAAQ,YAAY;AAAA,EAC1E,IAAI,CAAC,0BAA0B,SAAS,QAAQ,UAAU,GAAG;AAAA,IAC3D,MAAM,IAAI,wBACR,WAAW,OAAO,qCAAqC,WAAW,MACpE;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,yBAAyB,CAChC,SACA,QACA,YACS;AAAA,EACT,OAAO,QAAQ,eACZ,YAAY,UAAU,EACtB,KAAK,CAAC,cAAc,UAAU,OAAO,OAAO,EAAE;AAAA;AAGnD,SAAS,yBAAyB,CAChC,QACA,OACA,MACA,gBACW;AAAA,EACX,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,SAAS,aAAa;AAAA,IAChF,MAAM,WAAW;AAAA,IACjB,OAAO;AAAA,MACL,cAAc,SAAS;AAAA,MACvB,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,OAAO,qBAAqB,QAAkB,OAAO,MAAM,cAAc;AAAA;;;ACrLpE,MAAM,8BAA8B,MAAM;AAAA,EACtC,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EAET,WAAW,CAAC,SAAiB,QAAsD;AAAA,IACjF,MAAM,OAAO;AAAA,IACb,KAAK,WAAW,OAAO;AAAA,IACvB,KAAK,UAAU,OAAO;AAAA,IACtB,KAAK,YAAY,OAAO,QAAQ,SAAS,WAAW,OAAO,QAAQ,YAAY;AAAA;AAEnF;AAAA;AAEO,MAAM,6BAA6B,MAAM;AAAA,EACrC,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,WAAW,CAAC,SAMT;AAAA,IACD,MAAM,QAAQ,MAAM,OAAO;AAAA,IAC3B,KAAK,QAAQ,QAAQ;AAAA,IACrB,KAAK,WAAW,QAAQ;AAAA,IACxB,KAAK,UAAU,QAAQ;AAAA,IACvB,KAAK,eAAe,QAAQ,QAAQ,SAAS,WAAW,QAAQ,QAAQ,eAAe;AAAA,IACvF,KAAK,YAAY,QAAQ,QAAQ,SAAS,WAAW,QAAQ,QAAQ,YAAY;AAAA,IACjF,KAAK,QAAQ,QAAQ;AAAA,IACrB,KAAK,aAAa,QAAQ;AAAA;AAE9B;AAAA;AAEO,MAAM,8BAA8B,MAAM;AAAA,EACtC,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EAET,WAAW,CAAC,QAA8C;AAAA,IACxD,MAAM,eAAe,OAAO,gCAAgC,OAAO,cAAc;AAAA,IACjF,KAAK,QAAQ,OAAO;AAAA,IACpB,KAAK,YAAY,OAAO;AAAA;AAE5B;;;ACvDA,uBAAS;;;ACAT;AAGO,SAAS,iBAAiB,CAAC,OAAmC;AAAA,EACnE,IAAI,UAAU,WAAW;AAAA,IACvB,IAAI,CAAC,MAAM,KAAK,GAAG;AAAA,MACjB,MAAM,IAAI,wBAAwB,wCAAwC;AAAA,IAC5E;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,OAAO,WAAW;AAAA;AAGpB,SAAS,6BAA6B,CAAC,WAAmB,OAAuB;AAAA,EACtF,OAAO,UAAU,aAAa;AAAA;;;ADqChC,eAAsB,iBAAiB,CACrC,OAC8B;AAAA,EAC9B,MAAM,UAAU,iBAAiB,KAAK;AAAA,EACtC,MAAM,YAAY,MAAM,iBAAiB,OAAO,OAAO;AAAA,EACvD,IAAI,CAAC,UAAU;AAAA,IAAS,OAAO,wBAAwB,UAAU,GAAG;AAAA,EACpE,OAAO,iBAAiB,OAAO,SAAS;AAAA;AAG1C,SAAS,gBAAgB,CAAC,OAAkD;AAAA,EAC1E,MAAM,QAAQ,kBAAkB,MAAM,KAAK;AAAA,EAC3C,OAAO;AAAA,IACL;AAAA,IACA,gBAAgB,8BAA8B,MAAM,WAAW,KAAK;AAAA,EACtE;AAAA;AAGF,eAAe,gBAAgB,CAC7B,OACA,SAC6B;AAAA,EAC7B,MAAM,aAAa,wBAAwB,MAAM,OAAO;AAAA,EACxD,MAAM,WAAW,MAAM,WAAW,QAAQ,EAAE,WAAW,MAAM,WAAW,IAAI,QAAQ,MAAM,CAAC;AAAA,EAC3F,IAAI;AAAA,IAAU,OAAO,eAAe,OAAO,QAAQ;AAAA,EAEnD,MAAM,YAAY,MAAM,MAAM,gBAAgB,QAAQ,YAAW,KAAK,QAAQ,KAAK;AAAA,EACnF,MAAM,WAAW,IAAI;AAAA,EACrB,IAAI;AAAA,IACF,OAAO,MAAM,MAAM,QAAQ,YACzB,OAAO,OAAoC;AAAA,MACzC,MAAM,oBAAoB,wBAAwB,EAAE;AAAA,MACpD,MAAM,QAAQ,MAAM,kBAAkB,QAAQ;AAAA,QAC5C,WAAW,MAAM;AAAA,QACjB,IAAI,QAAQ;AAAA,MACd,CAAC;AAAA,MACD,IAAI,OAAO;AAAA,QACT,gCAAgC,OAAO,KAAK;AAAA,QAC5C,OAAO,EAAE,SAAS,OAAO,KAAK,MAAM;AAAA,MACtC;AAAA,MAEA,MAAM,GAAG,WAAW,OAAO,SAAS;AAAA,MACpC,MAAM,MAAM,MAAM,kBAAkB,MAAM;AAAA,QACxC,WAAW,MAAM;AAAA,QACjB,IAAI,QAAQ;AAAA,QACZ,aAAa,UAAU;AAAA,QACvB,UAAU,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,QACf,QAAQ,MAAM;AAAA,QACd,gBAAgB,QAAQ;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,MACD,OAAO,EAAE,SAAS,MAAM,KAAK,WAAW,UAAU,SAAS,KAAK;AAAA,OAElE,EAAE,WAAW,eAAe,CAC9B;AAAA,IACA,OAAO,OAAO;AAAA,IACd,IAAI,EAAE,iBAAiB;AAAA,MAAiB,MAAM;AAAA,IAC9C,MAAM,QAAQ,MAAM,WAAW,QAAQ,EAAE,WAAW,MAAM,WAAW,IAAI,QAAQ,MAAM,CAAC;AAAA,IACxF,IAAI,CAAC;AAAA,MAAO,MAAM;AAAA,IAClB,gCAAgC,OAAO,KAAK;AAAA,IAC5C,OAAO,EAAE,SAAS,OAAO,KAAK,MAAM;AAAA;AAAA;AAIxC,eAAe,cAAc,CAC3B,OACA,UAC6B;AAAA,EAC7B,gCAAgC,UAAU,KAAK;AAAA,EAC/C,IAAI,CAAC,0BAA0B,QAAQ;AAAA,IAAG,OAAO,EAAE,SAAS,OAAO,KAAK,SAAS;AAAA,EAEjF,MAAM,YAAY,MAAM,MAAM,QAAQ,WAAW,QAAQ;AAAA,IACvD,WAAW,MAAM;AAAA,IACjB,IAAI,SAAS;AAAA,EACf,CAAC;AAAA,EACD,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,IAAI,eACR,qBAAqB,SAAS,gCAAgC,SAAS,oBACzE;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,MAAM,MAAM,wBAAwB,MAAM,OAAO,EAAE,MAAM;AAAA,IAC7D,WAAW,MAAM;AAAA,IACjB,IAAI,SAAS;AAAA,IACb,aAAa,SAAS;AAAA,IACtB,UAAU,SAAS;AAAA,IACnB,SAAS,SAAS;AAAA,IAClB,QAAQ,SAAS;AAAA,IACjB,gBAAgB,SAAS;AAAA,IACzB;AAAA,EACF,CAAC;AAAA,EACD,OAAO,EAAE,SAAS,MAAM,KAAK,WAAW,UAAU,SAAS,MAAM;AAAA;AAGnE,eAAe,gBAAgB,CAC7B,OACA,WAC8B;AAAA,EAC9B,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,OAAO,MAAM,MAAM,MAAM,QAAQ;AAAA,MACrC,WAAW,MAAM;AAAA,MACjB,MAAM;AAAA,QACJ;AAAA,UACE,IAAI,UAAU,IAAI;AAAA,UAClB,MAAM;AAAA,UACN,SAAS;AAAA,YACP,OAAO,UAAU,IAAI;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IACD,MAAM,KAAK;AAAA,IACX,OAAO,OAAO;AAAA,IACd,MAAM,yBAAyB,OAAO,UAAU,KAAK,KAAK;AAAA,IAC1D,MAAM;AAAA;AAAA,EAGR,MAAM,MAAM,OAAO,KACjB;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP,UAAU,UAAU,IAAI;AAAA,UACxB,SAAS,UAAU,IAAI;AAAA,UACvB,QAAQ,UAAU,IAAI;AAAA,UACtB,OAAO,UAAU,IAAI;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe,UAAU,UAAU;AAAA,EACrC,GACA,EAAE,QAAQ,OAAO,CACnB;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,UAAU,IAAI;AAAA,IACrB,UAAU,UAAU,SAAS,YAAY;AAAA,OACrC,KAAK,KAAK,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC;AAAA,IACnC,SAAS,UAAU;AAAA,EACrB;AAAA;AAGF,eAAe,wBAAwB,CACrC,OACA,KACA,OACe;AAAA,EACf,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,UAAU,mBAAmB,OAAO,KAAK,QAAQ;AAAA,EACvD,MAAM,wBAAwB,MAAM,OAAO,EAAE,OAAO;AAAA,IAClD,WAAW,MAAM;AAAA,IACjB,IAAI,IAAI;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,OAAO;AAAA,EACT,CAAC;AAAA,EACD,iBAAiB,MAAM,mBAAmB,OAAO;AAAA,IAC/C,WAAW,MAAM;AAAA,IACjB,SAAS;AAAA,IACT,KAAK,EAAE,OAAO,IAAI,IAAI,UAAU,IAAI,SAAS;AAAA,IAC7C;AAAA,EACF,CAAC;AAAA;AAGH,SAAS,uBAAuB,CAAC,SAAsD;AAAA,EACrF,IAAI,CAAC,QAAQ,YAAY;AAAA,IACvB,MAAM,IAAI,eAAe,8CAA8C;AAAA,EACzE;AAAA,EACA,OAAO,QAAQ;AAAA;AAGjB,SAAS,+BAA+B,CACtC,UACA,SACM;AAAA,EACN,IACE,SAAS,aAAa,QAAQ,YAC9B,CAAC,oBAAoB,SAAS,SAAS,QAAQ,OAAO,KACtD,CAAC,qBAAqB,SAAS,QAAQ,QAAQ,MAAM,GACrD;AAAA,IACA,MAAM,IAAI,eACR,sBAAsB,SAAS,sDACjC;AAAA,EACF;AAAA;AAGF,SAAS,yBAAyB,CAAC,QAAkC;AAAA,EACnE,OACE,OAAO,WAAW,YAAY,OAAO,UAAU,aAAa,OAAO,OAAO,cAAc;AAAA;AAI5F,SAAS,uBAAuB,CAAC,UAAgD;AAAA,EAC/E,OAAO;AAAA,IACL,OAAO,SAAS;AAAA,IAChB,UAAU,SAAS,SAAS,YAAY;AAAA,IACxC,SAAS;AAAA,EACX;AAAA;AAGF,SAAS,kBAAkB,CACzB,OACA,KACA,IAC6B;AAAA,EAC7B,MAAM,eAAe,gBACnB,wBACA,wCAAwC,IAAI,QAC5C;AAAA,IACE,OAAO;AAAA,IACP,SAAS,EAAE,UAAU,IAAI,UAAU,OAAO,IAAI,IAAI,OAAO,UAAU;AAAA,EACrE,CACF;AAAA,EACA,OAAO,sBACL,cAAc,cAAc;AAAA,IAC1B,cAAc;AAAA,IACd;AAAA,EACF,CAAC,GACD,SACF;AAAA;;;AEnNF,IAAM,iCAAiC;AACvC,IAAM,8BAA8B;AAEpC,SAAS,UAAU,CAAC,OAAwD;AAAA,EAC1E,IAAI,OAAO;AAAA,IACT,aAAa,KAAK;AAAA,EACpB;AAAA;AAGF,SAAS,mBAAmB,CAAC,SAA6B,UAAoC;AAAA,EAC5F,MAAM,SAAS,QAAQ,eAAe,QAAQ,QAAQ;AAAA,EACtD,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,IAAI,wBAAwB,mBAAmB,WAAW;AAAA,EAClE;AAAA,EACA,OAAO;AAAA;AAGT,eAAsB,aAAa,CACjC,SACA,WACA,OAC8B;AAAA,EAC9B,yBAAwB,OAAO;AAAA,EAC/B,MAAM,SAAS,oBAAoB,SAAS,MAAM,QAAQ;AAAA,EAC1D,MAAM,WAAW,OAAO;AAAA,EACxB,MAAM,YAAqC,MAAM,UAAU,CAAC;AAAA,EAC5D,MAAM,UAAyB,MAAM,WAAW,EAAE,MAAM,OAAO;AAAA,EAE/D,iBAAiB,SAAS,EAAE,MAAM,gBAAgB,SAAS,CAAC;AAAA,EAC5D,IAAI,OAAO,QAAQ,SAAS,UAAU;AAAA,IAEpC,iBAAiB,SAAS,EAAE,MAAM,eAAe,cAAc,OAAO,QAAQ,WAAW,GAAG,CAAC;AAAA,EAC/F;AAAA,EAEA,sBAAsB,QAAQ,OAAO;AAAA,EAErC,IAAI,aAAa,OAAO;AAAA,EACxB,IAAI,aAAkD;AAAA,EAEtD,IAAI,yBAAyB,MAAM,GAAG;AAAA,IACpC,aAAa,2BAA2B,EAAE,SAAS,QAAQ,QAAQ,CAAC;AAAA,IACpE,aAAa,GAAG,WAAW,MAAM,OAAO;AAAA,EAC1C;AAAA,EAEA,MAAM,eAAe,sBAAsB,SAAS,OAAO,QAAQ,WAAW,UAAU;AAAA,EAExF,OAAO,kBAAkB;AAAA,IACvB,mBAAmB;AAAA,IACnB,WAAW,QAAQ;AAAA,IACnB,SAAS,QAAQ;AAAA,IACjB,OAAO,QAAQ,OAAO;AAAA,IACtB,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,MAAM;AAAA,IACb,iBAAiB,OAAO,aAAa,UAAU;AAAA,MAC7C,MAAM,SAAS,MAAM,sBACnB,QAAQ,QAAQ,YAChB,gCAAgC;AAAA,QAC9B;AAAA,QACA,sBAAsB,QAAQ;AAAA,MAChC,CAAC,CACH;AAAA,MACA,OAAO,+BAA+B;AAAA,QACpC,IAAI;AAAA,QACJ,WAAW,EAAE,MAAM,UAAU,IAAI,UAAU,MAAM;AAAA,QACjD,QAAQ,EAAE,MAAM,aAAa,QAAQ,OAAO;AAAA,MAC9C,CAAC;AAAA;AAAA,EAEL,CAAC;AAAA;AAGH,eAAsB,oBAAoB,CACxC,SACA,WACA,OAC0B;AAAA,EAC1B,MAAM,QAAQ,kBAAkB,MAAM,KAAK;AAAA,EAE3C,MAAM,cAAc,SAAS,WAAW;AAAA,OACnC;AAAA,IACH;AAAA,EACF,CAAC;AAAA,EACD,MAAM,MAAM,cAAc,KAAK;AAAA,EAE/B,OAAO,iBAAiB,SAAS;AAAA,IAC/B;AAAA,IACA,WAAW,MAAM;AAAA,IACjB,QAAQ,MAAM;AAAA,EAChB,CAAC;AAAA;AAGH,eAAsB,gBAAgB,CACpC,SACA,OAC0B;AAAA,EAC1B,MAAM,aAAa,yBAAwB,OAAO;AAAA,EAClD,MAAM,YAAY,MAAM,aAAa;AAAA,EACrC,MAAM,SAAS,MAAM;AAAA,EACrB,MAAM,YAAY,KAAK,IAAI;AAAA,EAE3B,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,OAAO,UAAU,IAAI,MAAM,SAAS;AAAA,EAC5C;AAAA,EAEA,OAAO,IAAI,QAAyB,CAAC,SAAS,WAAW;AAAA,IACvD,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,UAAU;AAAA,IACd,IAAI,WAAW;AAAA,IAEf,MAAM,sBAAsB,CAAC,YAAsC;AAAA,MACjE,IAAI,CAAC;AAAA,QAAS;AAAA,MACd,IAAI;AAAA,QACF,QAAQ;AAAA,QACR,OAAO,OAAO;AAAA,QACd,QAAQ,MAAM,0DAA0D,KAAK;AAAA;AAAA;AAAA,IAIjF,MAAM,UAAU,MAAM;AAAA,MACpB,IAAI;AAAA,QAAS;AAAA,MACb,UAAU;AAAA,MACV,WAAW,KAAK;AAAA,MAChB,WAAW,SAAS;AAAA,MACpB,QAAQ,oBAAoB,SAAS,OAAO;AAAA,MAC5C,oBAAoB,WAAW;AAAA;AAAA,IAGjC,MAAM,aAAa,CAAC,UAAmB;AAAA,MACrC,QAAQ;AAAA,MACR,OAAO,KAAK;AAAA;AAAA,IAGd,MAAM,eAAe,MAAM;AAAA,MACzB,IAAI,CAAC,WAAW,CAAC,WAAW;AAAA,QAC1B,YAAY,WAAW,MAAM;AAAA,UAC3B,YAAY;AAAA,UACP,MAAM;AAAA,WACV,2BAA2B;AAAA,MAChC;AAAA;AAAA,IAGF,MAAM,QAAQ,YAAY;AAAA,MACxB,IAAI,WAAW,UAAU;AAAA,QACvB;AAAA,MACF;AAAA,MACA,WAAW;AAAA,MACX,IAAI;AAAA,QACF,MAAM,SAAS,MAAM,WAAW,QAAQ;AAAA,UACtC,WAAW,QAAQ;AAAA,UACnB,IAAI,MAAM;AAAA,QACZ,CAAC;AAAA,QACD,IAAI,UAAU,oBAAoB,MAAM,GAAG;AAAA,UACzC,QAAQ;AAAA,UACR,QAAQ,MAAM;AAAA,UACd;AAAA,QACF;AAAA,QACA,aAAa;AAAA,QACb,OAAO,OAAO;AAAA,QACd,WAAW,KAAK;AAAA,gBAChB;AAAA,QACA,WAAW;AAAA;AAAA;AAAA,IAIf,MAAM,UAAU,MAAM;AAAA,MACpB,WAAW,QAAQ,UAAU,IAAI,MAAM,SAAS,CAAC;AAAA;AAAA,IAGnD,QAAQ,WACN,MAAM;AAAA,MACJ,WAAW,IAAI,sBAAsB,EAAE,OAAO,MAAM,OAAO,UAAU,CAAC,CAAC;AAAA,OAEzE,KAAK,IAAI,GAAG,aAAa,KAAK,IAAI,IAAI,UAAU,CAClD;AAAA,IAEA,IAAI,QAAQ;AAAA,MACV,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,IAC1D;AAAA,IAEA,QAAQ,OACL,UAAU,EAAE,OAAO,CAAC,oBAAoB,eAAe,EAAE,GAAG,CAAC,WAAW;AAAA,MACvE,IACE,OAAO,KACL,CAAC,WACE,MAAM,SAAS,sBAAsB,MAAM,SAAS,oBACrD,MAAM,QAAQ,UAAU,MAAM,KAClC,GACA;AAAA,QACK,MAAM;AAAA,MACb;AAAA,KACD,EACA,KAAK,CAAC,sBAAsB;AAAA,MAG3B,IAAI,SAAS;AAAA,QACX,oBAAoB,iBAAiB;AAAA,QACrC;AAAA,MACF;AAAA,MACA,cAAc;AAAA,MACT,MAAM;AAAA,KACZ,EACA,MAAM,CAAC,UAAmB;AAAA,MACzB,IAAI,SAAS;AAAA,QACX,QAAQ,MAAM,sEAAsE,KAAK;AAAA,QACzF;AAAA,MACF;AAAA,MACA,WAAW,KAAK;AAAA,KACjB;AAAA,GACJ;AAAA;AAGH,SAAS,wBAAuB,CAAC,SAA+C;AAAA,EAC9E,MAAM,aAAa,QAAQ,QAAQ;AAAA,EACnC,IAAI,CAAC,YAAY;AAAA,IACf,MAAM,IAAI,eAAe,8CAA8C;AAAA,EACzE;AAAA,EACA,OAAO;AAAA;",
13
- "debugId": "482B47AC3A2A70C664756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "863B332A1451A80064756E2164756E21",
14
15
  "names": []
15
16
  }
@@ -11,7 +11,7 @@ import {
11
11
  SyncValidationError,
12
12
  createConnectorCodedError,
13
13
  getConnectorExecutionSourceResolver
14
- } from "./chunk-km4rkj4t.js";
14
+ } from "./chunk-zp2v2rv6.js";
15
15
  import {
16
16
  isConnectorDefinition,
17
17
  isOAuthConnectorAdapter
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  formatObjectQueryExplanation,
4
4
  normalizeObjectQuery
5
- } from "./chunk-88ppkr54.js";
5
+ } from "./chunk-rte5sm3z.js";
6
6
  import {
7
7
  OntologyValidationError
8
8
  } from "./chunk-dktq02ne.js";
@@ -4,11 +4,18 @@ import {
4
4
  ObjectQueryPlanningError,
5
5
  ObjectQueryValidationError,
6
6
  normalizeObjectQuery
7
- } from "./chunk-88ppkr54.js";
7
+ } from "./chunk-rte5sm3z.js";
8
8
  import {
9
9
  compareQueryScalarValues,
10
+ linkBatchKey,
11
+ objectBatchKey,
12
+ objectLinkCursor,
10
13
  queryScalarValuesEqual
11
- } from "./chunk-6wetht33.js";
14
+ } from "./chunk-v0egge8b.js";
15
+ import {
16
+ assertAuthorized,
17
+ isAllowed
18
+ } from "./chunk-f83ka50g.js";
12
19
  import {
13
20
  validatePropertyValue,
14
21
  validateSchemaValue
@@ -20,12 +27,13 @@ import {
20
27
  formatUnknownObjectTypeMessage
21
28
  } from "./chunk-dktq02ne.js";
22
29
  import {
23
- assertAuthorized
24
- } from "./chunk-4z3n1dzt.js";
30
+ stableJsonStringify
31
+ } from "./chunk-t8t39h7v.js";
25
32
  // src/objects/query/planner.ts
26
33
  var DEFAULT_MAX_FALLBACK_ROWS = 1000;
27
34
  var fallbackNodeKinds = new Set([
28
35
  "start",
36
+ "refs",
29
37
  "filter",
30
38
  "sort",
31
39
  "limit",
@@ -122,6 +130,8 @@ function collectNodeProviderIssues(query, path, capabilities, issues) {
122
130
  addIssue(issues, path, "include_subtypes_not_supported", "Provider does not support start.includeSubtypes expansion");
123
131
  }
124
132
  return;
133
+ case "refs":
134
+ return;
125
135
  case "filter":
126
136
  collectPredicateProviderIssues(query.predicate, `${path}.predicate`, capabilities, issues);
127
137
  collectNodeProviderIssues(query.input, `${path}.input`, capabilities, issues);
@@ -269,6 +279,7 @@ function collectFallbackNodeIssues(query, path, issues) {
269
279
  }
270
280
  switch (query.kind) {
271
281
  case "start":
282
+ case "refs":
272
283
  return;
273
284
  case "filter":
274
285
  case "limit":
@@ -301,6 +312,7 @@ function hasExplicitResultBound(query) {
301
312
  switch (query.kind) {
302
313
  case "limit":
303
314
  case "page":
315
+ case "refs":
304
316
  return true;
305
317
  case "start":
306
318
  return false;
@@ -317,6 +329,7 @@ function addIssue(issues, path, code, message) {
317
329
  // src/objects/query/validate.ts
318
330
  var DEFAULT_MAX_LIMIT = 1000;
319
331
  var DEFAULT_MAX_PAGE_SIZE = 1000;
332
+ var DEFAULT_MAX_REFS = 1000;
320
333
  function validateObjectQuery(query, options) {
321
334
  const normalized = options.normalize === false ? query : normalizeObjectQuery(query);
322
335
  const ctx = createValidationContext(options);
@@ -345,6 +358,7 @@ function createValidationContext(options) {
345
358
  valueTypesById: options.ontology.getValueTypesById(),
346
359
  maxLimit: options.maxLimit ?? DEFAULT_MAX_LIMIT,
347
360
  maxPageSize: options.maxPageSize ?? DEFAULT_MAX_PAGE_SIZE,
361
+ maxRefs: options.maxRefs ?? DEFAULT_MAX_REFS,
348
362
  issues: [],
349
363
  touchedObjectTypeIds: new Set
350
364
  };
@@ -360,6 +374,8 @@ function dispatchQueryNode(query, path, ctx) {
360
374
  switch (query.kind) {
361
375
  case "start":
362
376
  return validateStart(query.objectTypeId, query.includeSubtypes, path, ctx);
377
+ case "refs":
378
+ return validateRefs(query.refs, path, ctx);
363
379
  case "filter": {
364
380
  const input = validateQueryNode(query.input, `${path}.input`, ctx);
365
381
  const predicate = validatePredicate(query.predicate, input.result, `${path}.predicate`, ctx);
@@ -419,6 +435,32 @@ function dispatchQueryNode(query, path, ctx) {
419
435
  }
420
436
  }
421
437
  }
438
+ function validateRefs(refs, path, ctx) {
439
+ if (refs.length === 0) {
440
+ addIssue2(ctx, `${path}.refs`, "empty_refs", "refs must include at least one object reference");
441
+ }
442
+ if (refs.length > ctx.maxRefs) {
443
+ addIssue2(ctx, `${path}.refs`, "too_many_refs", `refs must include at most ${ctx.maxRefs} object references`);
444
+ }
445
+ const objectTypeIds = new Set;
446
+ refs.forEach((ref, index) => {
447
+ const refPath = `${path}.refs[${index}]`;
448
+ if (!ref.objectTypeId) {
449
+ addIssue2(ctx, `${refPath}.objectTypeId`, "missing_object_type", "objectTypeId is required");
450
+ } else if (!ctx.ontology.getObjectTypeById(ref.objectTypeId)) {
451
+ addIssue2(ctx, `${refPath}.objectTypeId`, "unknown_object_type", formatUnknownObjectTypeMessage(ref.objectTypeId));
452
+ } else {
453
+ objectTypeIds.add(ref.objectTypeId);
454
+ }
455
+ if (!ref.primaryId) {
456
+ addIssue2(ctx, `${refPath}.primaryId`, "missing_primary_id", "primaryId is required");
457
+ }
458
+ });
459
+ return {
460
+ result: { objectTypeIds: [...objectTypeIds] },
461
+ query: { kind: "refs", refs: refs.map((ref) => ({ ...ref })) }
462
+ };
463
+ }
422
464
  function validateStart(objectTypeId, includeSubtypes, path, ctx) {
423
465
  if (!objectTypeId) {
424
466
  addIssue2(ctx, path, "missing_object_type", "start.objectTypeId is required");
@@ -984,6 +1026,7 @@ async function executeObjectQuery(input, options) {
984
1026
  ontology: options.ontology,
985
1027
  maxLimit: options.maxLimit,
986
1028
  maxPageSize: options.maxPageSize,
1029
+ maxRefs: options.maxRefs,
987
1030
  normalize: false
988
1031
  });
989
1032
  assertQueryViewable(validated, options);
@@ -1036,6 +1079,7 @@ async function countObjects(input, options) {
1036
1079
  ontology: options.ontology,
1037
1080
  maxLimit: options.maxLimit,
1038
1081
  maxPageSize: options.maxPageSize,
1082
+ maxRefs: options.maxRefs,
1039
1083
  normalize: false
1040
1084
  });
1041
1085
  assertQueryViewable(validated, options);
@@ -1089,6 +1133,7 @@ async function existsObjects(input, options) {
1089
1133
  ontology: options.ontology,
1090
1134
  maxLimit: options.maxLimit,
1091
1135
  maxPageSize: options.maxPageSize,
1136
+ maxRefs: options.maxRefs,
1092
1137
  normalize: false
1093
1138
  });
1094
1139
  assertQueryViewable(validated, options);
@@ -1142,6 +1187,7 @@ async function facetObjects(input, options) {
1142
1187
  ontology: options.ontology,
1143
1188
  maxLimit: options.maxLimit,
1144
1189
  maxPageSize: options.maxPageSize,
1190
+ maxRefs: options.maxRefs,
1145
1191
  normalize: false
1146
1192
  });
1147
1193
  assertQueryViewable(validated, options);
@@ -1222,6 +1268,7 @@ function resolveExpansions(query, ctx) {
1222
1268
  };
1223
1269
  }
1224
1270
  case "start":
1271
+ case "refs":
1225
1272
  return query;
1226
1273
  case "set":
1227
1274
  return {
@@ -1305,6 +1352,8 @@ function expandIncludeSubtypes(query, ontology) {
1305
1352
  inputs: objectTypeIds.map((objectTypeId) => ({ kind: "start", objectTypeId }))
1306
1353
  };
1307
1354
  }
1355
+ case "refs":
1356
+ return query;
1308
1357
  case "filter":
1309
1358
  case "text":
1310
1359
  case "vector":
@@ -1336,6 +1385,8 @@ async function evaluateFallbackQuery(projectId, query, options, maxRows) {
1336
1385
  switch (query.kind) {
1337
1386
  case "start":
1338
1387
  return evaluateFallbackStart(projectId, query, options, maxRows);
1388
+ case "refs":
1389
+ return evaluateFallbackRefs(projectId, query, options);
1339
1390
  case "filter": {
1340
1391
  const input = await evaluateFallbackQuery(projectId, query.input, options, maxRows);
1341
1392
  return completeFallbackEvaluation(input.entries.filter((entry) => matchesPredicate(entry.row, query.predicate)));
@@ -1397,6 +1448,16 @@ async function evaluateFallbackQuery(projectId, query, options, maxRows) {
1397
1448
  throw new ObjectQueryExecutionError("fallback_node_not_supported", `Fallback execution does not support query node '${query.kind}'`);
1398
1449
  }
1399
1450
  }
1451
+ async function evaluateFallbackRefs(projectId, query, options) {
1452
+ const rows = await options.storage.getByPrimaryIdBatch({
1453
+ projectId,
1454
+ items: query.refs
1455
+ });
1456
+ return completeFallbackEvaluation(query.refs.flatMap((ref, order) => {
1457
+ const row = rows.get(objectBatchKey(ref.objectTypeId, ref.primaryId));
1458
+ return row ? [{ row, order }] : [];
1459
+ }));
1460
+ }
1400
1461
  async function hydrateExpansions(projectId, parents, expansions, options) {
1401
1462
  if (expansions.length === 0) {
1402
1463
  return parents.map((parent) => ({ ...parent }));
@@ -1436,7 +1497,7 @@ async function collectOutgoingEdges(projectId, parents, expansion, options) {
1436
1497
  }))
1437
1498
  });
1438
1499
  return parents.map((parent) => {
1439
- const links = linksByKey.get(`${parent.objectTypeId}:${parent.primaryId}:${expansion.linkId}`);
1500
+ const links = linksByKey.get(linkBatchKey(parent.objectTypeId, parent.primaryId, expansion.linkId));
1440
1501
  if (!links)
1441
1502
  return [];
1442
1503
  return links.map((link) => ({
@@ -1572,7 +1633,7 @@ function toLinkValue(rows, cardinality) {
1572
1633
  return rows;
1573
1634
  }
1574
1635
  function targetKey(objectTypeId, id) {
1575
- return `${objectTypeId}:${id}`;
1636
+ return objectBatchKey(objectTypeId, id);
1576
1637
  }
1577
1638
  async function evaluateFallbackStart(projectId, query, options, maxRows) {
1578
1639
  const objectTypeIds = query.includeSubtypes ? [query.objectTypeId, ...options.ontology.listSubTypes(query.objectTypeId)] : [query.objectTypeId];
@@ -1769,7 +1830,7 @@ function facetValueSortKey(value) {
1769
1830
  return JSON.stringify(value) ?? String(value);
1770
1831
  }
1771
1832
  function rowIdentityKey(row) {
1772
- return `${row.objectTypeId}:${row.primaryId}`;
1833
+ return objectBatchKey(row.objectTypeId, row.primaryId);
1773
1834
  }
1774
1835
  function encodePageOffset(offset) {
1775
1836
  return `${PAGE_TOKEN_PREFIX}${offset}`;
@@ -1796,12 +1857,14 @@ function explainObjectQuery(query, options = {}) {
1796
1857
  ontology: options.ontology,
1797
1858
  maxLimit: options.maxLimit,
1798
1859
  maxPageSize: options.maxPageSize,
1860
+ maxRefs: options.maxRefs,
1799
1861
  normalize: false
1800
1862
  }) : [];
1801
1863
  const result = options.ontology && issues.length === 0 ? validateObjectQuery(normalizedQuery, {
1802
1864
  ontology: options.ontology,
1803
1865
  maxLimit: options.maxLimit,
1804
1866
  maxPageSize: options.maxPageSize,
1867
+ maxRefs: options.maxRefs,
1805
1868
  normalize: false
1806
1869
  }).result : undefined;
1807
1870
  return {
@@ -1826,6 +1889,14 @@ function buildExplainNode(query, path) {
1826
1889
  },
1827
1890
  children: []
1828
1891
  };
1892
+ case "refs":
1893
+ return {
1894
+ path,
1895
+ kind: query.kind,
1896
+ summary: `refs ${query.refs.length}`,
1897
+ details: { refs: query.refs },
1898
+ children: []
1899
+ };
1829
1900
  case "filter":
1830
1901
  return {
1831
1902
  path,
@@ -1943,6 +2014,185 @@ function summarizeSortField(field) {
1943
2014
  return `relevance ${field.direction ?? "desc"}`;
1944
2015
  return `${field.propertyId} ${field.direction ?? "asc"}`;
1945
2016
  }
1946
- export { planObjectQuery, validateObjectQuery, collectObjectQueryValidationIssues, resolveObjectQueryResultShape, executeObjectQuery, countObjects, existsObjects, facetObjects, explainObjectQuery };
2017
+ // src/objects/query/links.ts
2018
+ import { createHash } from "crypto";
2019
+ var MAX_LINK_QUERY_OBJECTS = 1000;
2020
+ var MAX_LINK_PAGE_SIZE = 1000;
2021
+ var DEFAULT_LINK_PAGE_SIZE = 100;
2022
+ var LINK_PAGE_TOKEN_PREFIX = "link:v1:";
2023
+ async function executeObjectQueryLinks(input, options) {
2024
+ const direction = input.direction ?? "both";
2025
+ if (direction !== "outgoing" && direction !== "incoming" && direction !== "both") {
2026
+ throw new ObjectQueryExecutionError("invalid_link_direction", "direction must be 'outgoing', 'incoming', or 'both'", "$.direction");
2027
+ }
2028
+ if (input.linkId !== undefined && input.linkId.length === 0) {
2029
+ throw new ObjectQueryExecutionError("invalid_link_id", "linkId must not be empty", "$.linkId");
2030
+ }
2031
+ const pageSize = input.pageSize ?? DEFAULT_LINK_PAGE_SIZE;
2032
+ if (!Number.isInteger(pageSize) || pageSize <= 0 || pageSize > MAX_LINK_PAGE_SIZE) {
2033
+ throw new ObjectQueryExecutionError("invalid_link_page_size", `pageSize must be an integer between 1 and ${MAX_LINK_PAGE_SIZE}`, "$.pageSize");
2034
+ }
2035
+ const validated = validateObjectQuery(normalizeObjectQuery(input.query), {
2036
+ ontology: options.ontology,
2037
+ maxLimit: options.maxLimit,
2038
+ maxPageSize: options.maxPageSize,
2039
+ maxRefs: options.maxRefs,
2040
+ normalize: false
2041
+ });
2042
+ assertLinkSelectorShape(validated.query);
2043
+ const selectorQuery = validated.query;
2044
+ const pageScope = linkPageScope(input.projectId, selectorQuery, direction, input.linkId);
2045
+ const cursor = decodeLinkPageToken(input.pageToken, pageScope);
2046
+ const boundedSelector = selectorQuery.kind === "page" ? selectorQuery : { kind: "limit", limit: MAX_LINK_QUERY_OBJECTS + 1, input: selectorQuery };
2047
+ const selection = await executeObjectQuery({
2048
+ projectId: input.projectId,
2049
+ query: boundedSelector,
2050
+ includeTotal: false
2051
+ }, {
2052
+ ...options,
2053
+ maxLimit: Math.max(options.maxLimit ?? 1000, MAX_LINK_QUERY_OBJECTS + 1)
2054
+ });
2055
+ if (selection.objects.length > MAX_LINK_QUERY_OBJECTS) {
2056
+ throw new ObjectQueryExecutionError("link_query_object_limit_exceeded", `Link query selected more than ${MAX_LINK_QUERY_OBJECTS} objects; add a limit or page node`, "$.query");
2057
+ }
2058
+ const selected = selection.objects;
2059
+ if (selected.length === 0) {
2060
+ return { objects: [], links: [], hasMore: false };
2061
+ }
2062
+ const endpointObjectTypeIds = visibleEndpointTypeIds(options);
2063
+ const page = await options.storage.queryLinks({
2064
+ projectId: input.projectId,
2065
+ objectRefs: selected.map((row) => ({
2066
+ objectTypeId: row.objectTypeId,
2067
+ primaryId: row.primaryId
2068
+ })),
2069
+ direction,
2070
+ ...input.linkId === undefined ? {} : { linkId: input.linkId },
2071
+ ...endpointObjectTypeIds === undefined ? {} : { endpointObjectTypeIds },
2072
+ ...cursor === undefined ? {} : { after: cursor },
2073
+ limit: pageSize
2074
+ });
2075
+ const lastLink = page.links.at(-1);
2076
+ let nextPageToken;
2077
+ if (page.hasMore) {
2078
+ if (!lastLink) {
2079
+ throw new Error("[Sixb] Object storage returned hasMore for an empty link page.");
2080
+ }
2081
+ nextPageToken = encodeLinkPageToken(objectLinkCursor(lastLink), pageScope);
2082
+ }
2083
+ const objects = input.includeObjects ? await hydrateLinkQueryObjects(input.projectId, selected, page.links, options.storage) : [];
2084
+ return {
2085
+ objects,
2086
+ links: page.links,
2087
+ hasMore: page.hasMore,
2088
+ ...nextPageToken ? { nextPageToken } : {}
2089
+ };
2090
+ }
2091
+ function assertLinkSelectorShape(query, path = "$.query", root = true) {
2092
+ switch (query.kind) {
2093
+ case "project":
2094
+ case "expand":
2095
+ throw new ObjectQueryExecutionError("link_selector_output_shape_not_supported", `Link selectors do not support '${query.kind}' nodes; remove output shaping from the selector`, path);
2096
+ case "page":
2097
+ if (!root) {
2098
+ throw new ObjectQueryExecutionError("link_selector_page_must_be_root", "A page node in a link selector must be the outermost node", path);
2099
+ }
2100
+ assertLinkSelectorShape(query.input, `${path}.input`, false);
2101
+ return;
2102
+ case "start":
2103
+ case "refs":
2104
+ return;
2105
+ case "set": {
2106
+ for (const [index, input] of query.inputs.entries()) {
2107
+ assertLinkSelectorShape(input, `${path}.inputs[${index}]`, false);
2108
+ }
2109
+ return;
2110
+ }
2111
+ case "filter":
2112
+ case "text":
2113
+ case "vector":
2114
+ case "traverse":
2115
+ case "sort":
2116
+ case "limit":
2117
+ assertLinkSelectorShape(query.input, `${path}.input`, false);
2118
+ return;
2119
+ }
2120
+ }
2121
+ function visibleEndpointTypeIds(options) {
2122
+ if (!options.authorization)
2123
+ return;
2124
+ return options.ontology.listObjectTypes().filter((objectType) => isAllowed(options.authorization, { kind: "object.view", objectTypeId: objectType.id })).map((objectType) => objectType.id);
2125
+ }
2126
+ function objectIdentity(objectTypeId, primaryId) {
2127
+ return objectBatchKey(objectTypeId, primaryId);
2128
+ }
2129
+ function linkPageScope(projectId, query, direction, linkId) {
2130
+ return createHash("sha256").update(stableJsonStringify({
2131
+ projectId,
2132
+ query,
2133
+ direction,
2134
+ linkId: linkId ?? null
2135
+ })).digest("base64url");
2136
+ }
2137
+ function encodeLinkPageToken(cursor, scope) {
2138
+ const payload = { version: 1, scope, cursor };
2139
+ return `${LINK_PAGE_TOKEN_PREFIX}${Buffer.from(JSON.stringify(payload)).toString("base64url")}`;
2140
+ }
2141
+ function decodeLinkPageToken(token, expectedScope) {
2142
+ if (token === undefined)
2143
+ return;
2144
+ try {
2145
+ if (!token.startsWith(LINK_PAGE_TOKEN_PREFIX))
2146
+ throw new Error("invalid prefix");
2147
+ const value = JSON.parse(Buffer.from(token.slice(LINK_PAGE_TOKEN_PREFIX.length), "base64url").toString("utf8"));
2148
+ if (!isPlainObject2(value) || value.version !== 1 || typeof value.scope !== "string" || !isObjectLinkCursor(value.cursor)) {
2149
+ throw new Error("invalid cursor");
2150
+ }
2151
+ if (value.scope !== expectedScope) {
2152
+ throw new Error("cursor scope mismatch");
2153
+ }
2154
+ return value.cursor;
2155
+ } catch {
2156
+ throw new ObjectQueryExecutionError("invalid_link_page_token", "pageToken is not a valid object-links cursor", "$.pageToken");
2157
+ }
2158
+ }
2159
+ function isObjectLinkCursor(value) {
2160
+ return Array.isArray(value) && value.length === 5 && value.every((part) => typeof part === "string");
2161
+ }
2162
+ function isPlainObject2(value) {
2163
+ return typeof value === "object" && value !== null && !Array.isArray(value);
2164
+ }
2165
+ async function hydrateLinkQueryObjects(projectId, selected, links, storage) {
2166
+ const byIdentity = new Map(selected.map((row) => [objectIdentity(row.objectTypeId, row.primaryId), row]));
2167
+ const orderedIdentities = selected.map((row) => objectIdentity(row.objectTypeId, row.primaryId));
2168
+ const seenIdentities = new Set(orderedIdentities);
2169
+ const missingRefs = [];
2170
+ for (const link of links) {
2171
+ for (const ref of [
2172
+ { objectTypeId: link.sourceTypeId, primaryId: link.sourceId },
2173
+ { objectTypeId: link.targetTypeId, primaryId: link.targetId }
2174
+ ]) {
2175
+ const identity = objectIdentity(ref.objectTypeId, ref.primaryId);
2176
+ if (seenIdentities.has(identity))
2177
+ continue;
2178
+ seenIdentities.add(identity);
2179
+ orderedIdentities.push(identity);
2180
+ missingRefs.push(ref);
2181
+ }
2182
+ }
2183
+ if (missingRefs.length > 0) {
2184
+ const hydrated = await storage.getByPrimaryIdBatch({ projectId, items: missingRefs });
2185
+ for (const ref of missingRefs) {
2186
+ const row = hydrated.get(objectBatchKey(ref.objectTypeId, ref.primaryId));
2187
+ if (row)
2188
+ byIdentity.set(objectIdentity(ref.objectTypeId, ref.primaryId), row);
2189
+ }
2190
+ }
2191
+ return orderedIdentities.flatMap((identity) => {
2192
+ const row = byIdentity.get(identity);
2193
+ return row ? [row] : [];
2194
+ });
2195
+ }
2196
+ export { planObjectQuery, validateObjectQuery, collectObjectQueryValidationIssues, resolveObjectQueryResultShape, executeObjectQuery, countObjects, existsObjects, facetObjects, explainObjectQuery, executeObjectQueryLinks };
1947
2197
 
1948
- //# debugId=99CC14ED40CC1D8E64756E2164756E21
2198
+ //# debugId=6AF3162EF872D1D064756E2164756E21