@selvajs/platform 0.13.0 → 0.14.1

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 (35) hide show
  1. package/dist/config.d.ts +7 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js.map +1 -1
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -7
  7. package/dist/index.js.map +1 -1
  8. package/dist/metrics/interface.d.ts +83 -0
  9. package/dist/metrics/interface.d.ts.map +1 -0
  10. package/dist/metrics/interface.js +9 -0
  11. package/dist/metrics/interface.js.map +1 -0
  12. package/dist/testing/index.d.ts +2 -0
  13. package/dist/testing/index.d.ts.map +1 -1
  14. package/dist/testing/index.js +1 -0
  15. package/dist/testing/index.js.map +1 -1
  16. package/dist/testing/suites/authProviderSuite.d.ts +0 -9
  17. package/dist/testing/suites/authProviderSuite.d.ts.map +1 -1
  18. package/dist/testing/suites/authProviderSuite.js +1 -15
  19. package/dist/testing/suites/authProviderSuite.js.map +1 -1
  20. package/dist/testing/suites/projectStoreSuite.d.ts +0 -6
  21. package/dist/testing/suites/projectStoreSuite.d.ts.map +1 -1
  22. package/dist/testing/suites/projectStoreSuite.js +1 -6
  23. package/dist/testing/suites/projectStoreSuite.js.map +1 -1
  24. package/dist/testing/suites/solveMetricSinkSuite.d.ts +39 -0
  25. package/dist/testing/suites/solveMetricSinkSuite.d.ts.map +1 -0
  26. package/dist/testing/suites/solveMetricSinkSuite.js +89 -0
  27. package/dist/testing/suites/solveMetricSinkSuite.js.map +1 -0
  28. package/package.json +2 -2
  29. package/src/config.ts +7 -0
  30. package/src/index.ts +7 -21
  31. package/src/metrics/interface.ts +86 -0
  32. package/src/testing/index.ts +6 -0
  33. package/src/testing/suites/authProviderSuite.ts +1 -18
  34. package/src/testing/suites/projectStoreSuite.ts +1 -6
  35. package/src/testing/suites/solveMetricSinkSuite.ts +135 -0
package/dist/config.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { IAuthProvider } from './auth/interface.js';
2
2
  import type { IDataProvider } from './data/interface.js';
3
3
  import type { IStorageProvider } from './storage/interface.js';
4
4
  import type { IEventSink } from './events/interface.js';
5
+ import type { ISolveMetricSink } from './metrics/interface.js';
5
6
  import type { IBindingResolver } from './bindings/interface.js';
6
7
  /**
7
8
  * - `single`: one org per deployment. Setup creates it; `ctx.actingOrgId`
@@ -63,6 +64,12 @@ export interface SelvaConfig {
63
64
  storage: IStorageProvider;
64
65
  /** Optional. Defaults to `NoopEventSink`. */
65
66
  events?: IEventSink;
67
+ /**
68
+ * Optional. Records per-solve timing (wall time of the Rhino.Compute solve
69
+ * call). Defaults to `NoopSolveMetricSink`, which discards every metric.
70
+ * Supply a real sink to persist or aggregate solve durations.
71
+ */
72
+ solveMetrics?: ISolveMetricSink;
66
73
  /**
67
74
  * Optional. Resolves values for inputs marked as `source.kind === 'server'`
68
75
  * in the schema. Defaults to `NoopBindingResolver`, which returns nothing
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC7B,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IAC1B,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,yEAAyE;IACzE,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB;;;OAGG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB,gEAAgE;IAChE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,6CAA6C;IAC7C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,WAAW,CAAC;AAE1F,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,UAAU,GAAG,OAAO,CAElF;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAC3B,MAAM,EAAE,WAAW,GAAG,kBAAkB,GACtC,WAAW,GAAG,kBAAkB,CAElC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC7B,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IAC1B,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,yEAAyE;IACzE,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB;;;OAGG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB,gEAAgE;IAChE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,6CAA6C;IAC7C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,WAAW,CAAC;AAE1F,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,UAAU,GAAG,OAAO,CAElF;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAC3B,MAAM,EAAE,WAAW,GAAG,kBAAkB,GACtC,WAAW,GAAG,kBAAkB,CAElC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAiFA,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAC,MAAmB,EAAE,IAAsB;IACxE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAC3B,MAAwC;IAExC,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAwFA,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAC,MAAmB,EAAE,IAAsB;IACxE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAC3B,MAAwC;IAExC,OAAO,MAAM,CAAC;AACf,CAAC"}
package/dist/index.d.ts CHANGED
@@ -45,6 +45,8 @@ export { canView, canSolve, canEdit, canManage, canEditProjectSettings, canChang
45
45
  export type { DomainEvent, DomainEventType, IEventSink } from './events/interface.js';
46
46
  export { actorFrom, NoopEventSink } from './events/interface.js';
47
47
  export type { AuditEventRow, AuditCursor, AuditQueryFilters, AuditQueryResult, IAuditQuery } from './events/audit.js';
48
+ export type { ISolveMetricSink, SolveMetric, SolveFailureKind } from './metrics/interface.js';
49
+ export { NoopSolveMetricSink } from './metrics/interface.js';
48
50
  export type { IBindingResolver } from './bindings/interface.js';
49
51
  export { NoopBindingResolver } from './bindings/interface.js';
50
52
  export type { AuditUpdate, AuditSoftDelete } from './utils/audit.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,10 +1,4 @@
1
- // ============================================================================
2
- // @selvajs/platform — public API
3
- // ============================================================================
4
- // This file IS the contract. Every symbol below is part of the published API
5
- // and removing or changing one is a breaking change. Add a symbol here only
6
- // when you intend to commit to it long-term; otherwise keep it internal to
7
- // its module.
1
+ // @selvajs/platform — published API contract. Every symbol here is breaking-change-protected.
8
2
  export { PlatformPermissionSchema, ALL_PLATFORM_PERMISSIONS } from './permissions/types.js';
9
3
  export { emptyProfile } from './userProfile/types.js';
10
4
  export { OrgRoleSchema, OrgPermissionSchema, SlugSchema, CreateOrgSchema, UpdateOrgSchema, ALL_ORG_PERMISSIONS, DEFAULT_ORG_PERMISSIONS, OWNER_ADMIN_ONLY_PERMISSIONS, MEMBER_ASSIGNABLE_PERMISSIONS } from './organizations/schemas.js';
@@ -20,6 +14,7 @@ export { isPlatformServer, isOrgServer } from './computeServer/types.js';
20
14
  export { serversVisibleTo, defaultServerIdFor, resolveServerForOrg, findServerById, platformServers, orgServersFor } from './computeServer/utils.js';
21
15
  export { canView, canSolve, canEdit, canManage, canEditProjectSettings, canChangeVisibilityToPublic, canEditDefinition, canReclaim, canCreateProject, checkOwnerRemoval, withAdminBypass } from './access/rules.js';
22
16
  export { actorFrom, NoopEventSink } from './events/interface.js';
17
+ export { NoopSolveMetricSink } from './metrics/interface.js';
23
18
  export { NoopBindingResolver } from './bindings/interface.js';
24
19
  export { auditUpdate, auditSoftDelete } from './utils/audit.js';
25
20
  export { SYSTEM_CONTEXT, hasPermission } from './context.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,cAAc;AAkBd,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAQ5F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAatD,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,MAAM,4BAA4B,CAAC;AAcpC,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACN,0BAA0B,EAC1B,gCAAgC,EAChC,MAAM,+BAA+B,CAAC;AAevC,OAAO,EACN,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,UAAU,EACV,UAAU,EACV,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAMrE,OAAO,EACN,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,sBAAsB,EACtB,MAAM,oBAAoB,CAAC;AAiB5B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,MAAM,0BAA0B,CAAC;AAclC,OAAO,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAajE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM9D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMhE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AASrE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAgB9F,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAM5F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAWtD,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,MAAM,4BAA4B,CAAC;AAUpC,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EACN,0BAA0B,EAC1B,gCAAgC,EAChC,MAAM,+BAA+B,CAAC;AAavC,OAAO,EACN,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,UAAU,EACV,UAAU,EACV,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAMrE,OAAO,EACN,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,sBAAsB,EACtB,MAAM,oBAAoB,CAAC;AAiB5B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,MAAM,0BAA0B,CAAC;AAclC,OAAO,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAajE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAM7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM9D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMhE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AASrE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,83 @@
1
+ import type { RequestContext } from '../context.js';
2
+ /**
3
+ * Why a solve did not produce a usable result. `ok` means the solve completed
4
+ * (it may still carry Grasshopper runtime errors — see `errorCount`). The
5
+ * failure kinds mirror the distinct branches the compute route already
6
+ * distinguishes, so the recorded reason matches the HTTP status the client saw.
7
+ */
8
+ export type SolveFailureKind =
9
+ /** Solve completed; the response was returned to the client. */
10
+ 'ok'
11
+ /** Scheduler deadline exceeded (HTTP 504). */
12
+ | 'timeout'
13
+ /** Client disconnected mid-solve; the request signal aborted (HTTP 499). */
14
+ | 'client_abort'
15
+ /** Rejected by the per-key rate limiter before solving (HTTP 429). */
16
+ | 'rate_limited'
17
+ /** Share-link solve cap reached before solving (HTTP 429). */
18
+ | 'share_cap'
19
+ /** Result exceeded the response size limit (HTTP 413). */
20
+ | 'too_large'
21
+ /** Compute server unreachable or the solve threw for any other reason. */
22
+ | 'compute_error';
23
+ /**
24
+ * One solve's timing and outcome, recorded once per solve attempt — including
25
+ * attempts rejected before `scheduler.solve()` runs (rate limit, share cap).
26
+ *
27
+ * `durationMs` is wall time around the Rhino.Compute solve call only — it
28
+ * excludes definition loading, auth, schema work, and result serialization. It
29
+ * is 0 for attempts rejected before the solve started.
30
+ */
31
+ export interface SolveMetric {
32
+ /** Definition the solve ran against. `local:<guid>` or a remote URL. */
33
+ definitionUrl: string;
34
+ /**
35
+ * Local definition id (the `local:` guid), or null for remote-URL solves.
36
+ * Stored alongside `definitionUrl` so timings join to the definition record.
37
+ */
38
+ definitionId: string | null;
39
+ /**
40
+ * The exact version solved, or null for remote-URL solves (and for local
41
+ * attempts rejected before the version resolved). Lets you compare timings
42
+ * across versions of the same definition.
43
+ */
44
+ versionId: string | null;
45
+ /** Channel solved, mirroring the compute request. */
46
+ channel: 'live' | 'draft';
47
+ /** Org whose compute pool served the solve, or null for remote definitions. */
48
+ orgId: string | null;
49
+ /** Wall-clock duration of `scheduler.solve()` in milliseconds. 0 if never started. */
50
+ durationMs: number;
51
+ /** Whether the solve completed and returned a result. */
52
+ ok: boolean;
53
+ /** Why the solve did not return a result; `'ok'` when it did. */
54
+ failureKind: SolveFailureKind;
55
+ /**
56
+ * Count of Grasshopper runtime errors in the solve response. A solve can be
57
+ * `ok` yet still report component-level errors — this is distinct from
58
+ * `failureKind`. 0 when the solve never returned a response.
59
+ */
60
+ errorCount: number;
61
+ /** Count of Grasshopper runtime warnings in the solve response. */
62
+ warningCount: number;
63
+ }
64
+ /**
65
+ * Sink for per-solve timing telemetry. Called once per solve attempt from the
66
+ * compute route, AFTER the solve resolves or rejects.
67
+ *
68
+ * MUST NOT throw — recording is best-effort and sits on the hot path of every
69
+ * solve. Implementations catch and log their own failures; the only side
70
+ * effect visible to the caller is a fulfilled promise. MAY be fire-and-forget.
71
+ */
72
+ export interface ISolveMetricSink {
73
+ record(ctx: RequestContext, metric: SolveMetric): Promise<void>;
74
+ }
75
+ /**
76
+ * Default `ISolveMetricSink` — discards every metric. Used when
77
+ * `SelvaConfig.solveMetrics` is omitted. Swap in a real sink to persist or
78
+ * aggregate solve timings.
79
+ */
80
+ export declare class NoopSolveMetricSink implements ISolveMetricSink {
81
+ record(_ctx: RequestContext, _metric: SolveMetric): Promise<void>;
82
+ }
83
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/metrics/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB;AAC3B,gEAAgE;AAC9D,IAAI;AACN,8CAA8C;GAC5C,SAAS;AACX,4EAA4E;GAC1E,cAAc;AAChB,sEAAsE;GACpE,cAAc;AAChB,8DAA8D;GAC5D,WAAW;AACb,0DAA0D;GACxD,WAAW;AACb,0EAA0E;GACxE,eAAe,CAAC;AAEnB;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC3B,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qDAAqD;IACrD,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,EAAE,EAAE,OAAO,CAAC;IACZ,iEAAiE;IACjE,WAAW,EAAE,gBAAgB,CAAC;IAC9B;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,gBAAgB;IACrD,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CACvE"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Default `ISolveMetricSink` — discards every metric. Used when
3
+ * `SelvaConfig.solveMetrics` is omitted. Swap in a real sink to persist or
4
+ * aggregate solve timings.
5
+ */
6
+ export class NoopSolveMetricSink {
7
+ async record(_ctx, _metric) { }
8
+ }
9
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/metrics/interface.ts"],"names":[],"mappings":"AA8EA;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAC/B,KAAK,CAAC,MAAM,CAAC,IAAoB,EAAE,OAAoB,IAAkB,CAAC;CAC1E"}
@@ -20,6 +20,8 @@ export { runShareLinkStoreConformance } from './suites/shareLinkStoreSuite.js';
20
20
  export type { ShareLinkStoreConformanceOptions, ShareLinkTestScope } from './suites/shareLinkStoreSuite.js';
21
21
  export { runEventSinkConformance, RecordingEventSink } from './suites/eventSinkSuite.js';
22
22
  export type { EventSinkConformanceOptions } from './suites/eventSinkSuite.js';
23
+ export { runSolveMetricSinkConformance } from './suites/solveMetricSinkSuite.js';
24
+ export type { SolveMetricSinkConformanceOptions, RecordedSolveMetric } from './suites/solveMetricSinkSuite.js';
23
25
  export { runPlatformPermissionStoreConformance } from './suites/platformPermissionStoreSuite.js';
24
26
  export type { PlatformPermissionStoreConformanceOptions } from './suites/platformPermissionStoreSuite.js';
25
27
  export { runPlatformProjectGrantStoreConformance } from './suites/platformProjectGrantStoreSuite.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,YAAY,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AAE5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,YAAY,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnG,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,YAAY,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAEhG,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,YAAY,EACX,gCAAgC,EAChC,kBAAkB,EAClB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACzF,YAAY,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AACjG,YAAY,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAE1G,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC;AACrG,YAAY,EAAE,2CAA2C,EAAE,MAAM,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,YAAY,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AAE5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,YAAY,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnG,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,YAAY,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAEhG,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,YAAY,EACX,gCAAgC,EAChC,kBAAkB,EAClB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACzF,YAAY,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EACX,iCAAiC,EACjC,mBAAmB,EACnB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AACjG,YAAY,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAE1G,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC;AACrG,YAAY,EAAE,2CAA2C,EAAE,MAAM,4CAA4C,CAAC"}
@@ -9,6 +9,7 @@ export { runInviteStoreConformance } from './suites/inviteStoreSuite.js';
9
9
  export { runComputeServerStoreConformance } from './suites/computeServerStoreSuite.js';
10
10
  export { runShareLinkStoreConformance } from './suites/shareLinkStoreSuite.js';
11
11
  export { runEventSinkConformance, RecordingEventSink } from './suites/eventSinkSuite.js';
12
+ export { runSolveMetricSinkConformance } from './suites/solveMetricSinkSuite.js';
12
13
  export { runPlatformPermissionStoreConformance } from './suites/platformPermissionStoreSuite.js';
13
14
  export { runPlatformProjectGrantStoreConformance } from './suites/platformProjectGrantStoreSuite.js';
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AAGvF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAM/E,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGzF,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AAGjG,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AAGvF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAM/E,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAMjF,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AAGjG,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC"}
@@ -1,12 +1,3 @@
1
- /**
2
- * Adapter conformance suite for IAuthProvider.
3
- *
4
- * Covers token round-trips, identity verification, password auth (when the
5
- * provider exposes `passwordAuth`), and admin user management.
6
- *
7
- * User-profile state (starring, recent runs, profile mutations) is tested
8
- * separately by `runUserProfileStoreConformance` against `IUserProfileStore`.
9
- */
10
1
  import type { IAuthProvider } from '../../auth/index.js';
11
2
  export interface AuthProviderConformanceOptions {
12
3
  /** Name to show in test output (e.g. "LocalAuthProvider"). */
@@ -1 +1 @@
1
- {"version":3,"file":"authProviderSuite.d.ts","sourceRoot":"","sources":["../../../src/testing/suites/authProviderSuite.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,8BAA8B;IAC9C,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,cAAc,EAAE,MACb,OAAO,CAAC;QAAE,QAAQ,EAAE,aAAa,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAChF;QAAE,QAAQ,EAAE,aAAa,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,8BAA8B,GAAG,IAAI,CA0LrF"}
1
+ {"version":3,"file":"authProviderSuite.d.ts","sourceRoot":"","sources":["../../../src/testing/suites/authProviderSuite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,8BAA8B;IAC9C,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,cAAc,EAAE,MACb,OAAO,CAAC;QAAE,QAAQ,EAAE,aAAa,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAChF;QAAE,QAAQ,EAAE,aAAa,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,8BAA8B,GAAG,IAAI,CAiLrF"}
@@ -1,20 +1,10 @@
1
- /**
2
- * Adapter conformance suite for IAuthProvider.
3
- *
4
- * Covers token round-trips, identity verification, password auth (when the
5
- * provider exposes `passwordAuth`), and admin user management.
6
- *
7
- * User-profile state (starring, recent runs, profile mutations) is tested
8
- * separately by `runUserProfileStoreConformance` against `IUserProfileStore`.
9
- */
1
+ // Conformance suite for IAuthProvider: token round-trips, identity, password auth, admin management.
10
2
  import { describe, it, expect } from 'vitest';
11
3
  import { makeUuid } from './helpers.js';
12
4
  export function runAuthProviderConformance(opts) {
13
5
  const { name, createProvider, userManagement = false } = opts;
14
6
  describe(`IAuthProvider conformance: ${name}`, () => {
15
- // ============================================================================
16
7
  // Token round-trips
17
- // ============================================================================
18
8
  it('verifyLogin returns a session token that verifyToken accepts', async () => {
19
9
  const { provider, adminPassword, adminEmail = '' } = await createProvider();
20
10
  const result = await provider.passwordAuth.verifyLogin(adminEmail, adminPassword);
@@ -34,9 +24,7 @@ export function runAuthProviderConformance(opts) {
34
24
  const result = await provider.verifyToken('');
35
25
  expect(result).toBeNull();
36
26
  });
37
- // ============================================================================
38
27
  // Password auth (only runs when passwordAuth is present)
39
- // ============================================================================
40
28
  it('verifyLogin returns success with correct password', async () => {
41
29
  const { provider, adminPassword, adminEmail = '' } = await createProvider();
42
30
  if (!provider.passwordAuth)
@@ -57,9 +45,7 @@ export function runAuthProviderConformance(opts) {
57
45
  const result = await provider.passwordAuth.verifyLogin(adminEmail, 'wrong-password-xyz');
58
46
  expect(result.kind).toBe('failed');
59
47
  });
60
- // ============================================================================
61
48
  // getUser
62
- // ============================================================================
63
49
  it('getUser returns null for unknown id', async () => {
64
50
  const { provider } = await createProvider();
65
51
  // Valid UUID shape but not an actual user — stricter backends (Postgres
@@ -1 +1 @@
1
- {"version":3,"file":"authProviderSuite.js","sourceRoot":"","sources":["../../../src/testing/suites/authProviderSuite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authProviderSuite.js","sourceRoot":"","sources":["../../../src/testing/suites/authProviderSuite.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,3 @@
1
- /**
2
- * Adapter conformance suite for IProjectStore.
3
- *
4
- * Tests project CRUD, project membership management, and access checks to
5
- * ensure all adapters behave identically.
6
- */
7
1
  import type { IProjectStore } from '../../projects/interface.js';
8
2
  import { type SeedUserFn } from './helpers.js';
9
3
  export interface ProjectStoreConformanceOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"projectStoreSuite.d.ts","sourceRoot":"","sources":["../../../src/testing/suites/projectStoreSuite.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAExF,MAAM,WAAW,8BAA8B;IAC9C,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,WAAW,EAAE,MAAM,OAAO,CAAC;QAC1B,KAAK,EAAE,aAAa,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;IACH;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAkCD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,8BAA8B,GAAG,IAAI,CAyTrF"}
1
+ {"version":3,"file":"projectStoreSuite.d.ts","sourceRoot":"","sources":["../../../src/testing/suites/projectStoreSuite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAExF,MAAM,WAAW,8BAA8B;IAC9C,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,WAAW,EAAE,MAAM,OAAO,CAAC;QAC1B,KAAK,EAAE,aAAa,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;IACH;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAkCD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,8BAA8B,GAAG,IAAI,CAyTrF"}
@@ -1,9 +1,4 @@
1
- /**
2
- * Adapter conformance suite for IProjectStore.
3
- *
4
- * Tests project CRUD, project membership management, and access checks to
5
- * ensure all adapters behave identically.
6
- */
1
+ // Conformance suite for IProjectStore: CRUD, membership, access checks across adapters.
7
2
  import { describe, it, expect } from 'vitest';
8
3
  import { makeSeedHelpers, makeUuid, noopSeedUser } from './helpers.js';
9
4
  function project(orgId, ownerId, overrides = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"projectStoreSuite.js","sourceRoot":"","sources":["../../../src/testing/suites/projectStoreSuite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectStoreSuite.js","sourceRoot":"","sources":["../../../src/testing/suites/projectStoreSuite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Adapter conformance suite for the solve-metric-sink contract.
3
+ *
4
+ * Unlike `IEventSink`, an `ISolveMetricSink` is not driven by store mutations —
5
+ * the compute route calls `record()` directly, once per solve attempt. So this
6
+ * suite is a round-trip: hand a `SolveMetric` to the sink, then read the row
7
+ * back through an adapter-supplied `readRows` and assert the persisted shape.
8
+ *
9
+ * It also pins the contract's hard guarantee: `record` MUST NOT throw, even on
10
+ * a backend failure — the compute route depends on that to keep serving the
11
+ * response after a solve.
12
+ */
13
+ import type { ISolveMetricSink, SolveMetric } from '../../index.js';
14
+ /**
15
+ * Adapter's view of a persisted metric, normalized back to the `SolveMetric`
16
+ * shape plus the recorded `actorId`. Implementations map their column names
17
+ * onto these fields so the suite stays storage-agnostic.
18
+ */
19
+ export interface RecordedSolveMetric extends SolveMetric {
20
+ /** The actor the sink derived from the `RequestContext` it was handed. */
21
+ actorId: string;
22
+ }
23
+ export interface SolveMetricSinkConformanceOptions {
24
+ name: string;
25
+ /** Build a fresh sink against the adapter's backend. */
26
+ createSink: () => Promise<ISolveMetricSink> | ISolveMetricSink;
27
+ /** Read every persisted metric back, normalized to `RecordedSolveMetric`. */
28
+ readRows: () => Promise<RecordedSolveMetric[]>;
29
+ /**
30
+ * Build a sink whose backing store is broken so writes fail. Used to prove
31
+ * `record` swallows errors. Omit if the adapter can't simulate a failure;
32
+ * the throw-safety test is skipped when absent.
33
+ */
34
+ createFailingSink?: () => Promise<ISolveMetricSink> | ISolveMetricSink;
35
+ /** Optional per-test cleanup (truncate the metrics table, etc.). */
36
+ cleanup?: () => Promise<void> | void;
37
+ }
38
+ export declare function runSolveMetricSinkConformance(opts: SolveMetricSinkConformanceOptions): void;
39
+ //# sourceMappingURL=solveMetricSinkSuite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solveMetricSinkSuite.d.ts","sourceRoot":"","sources":["../../../src/testing/suites/solveMetricSinkSuite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAEpF;;;;GAIG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACvD,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAiC;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,UAAU,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;IAC/D,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC/C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;IACvE,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrC;AAsBD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iCAAiC,GAAG,IAAI,CAwE3F"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Adapter conformance suite for the solve-metric-sink contract.
3
+ *
4
+ * Unlike `IEventSink`, an `ISolveMetricSink` is not driven by store mutations —
5
+ * the compute route calls `record()` directly, once per solve attempt. So this
6
+ * suite is a round-trip: hand a `SolveMetric` to the sink, then read the row
7
+ * back through an adapter-supplied `readRows` and assert the persisted shape.
8
+ *
9
+ * It also pins the contract's hard guarantee: `record` MUST NOT throw, even on
10
+ * a backend failure — the compute route depends on that to keep serving the
11
+ * response after a solve.
12
+ */
13
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
14
+ function sysCtx(userId) {
15
+ return { userId, platformPermissions: [], orgPermissions: [], system: true };
16
+ }
17
+ function baseMetric(overrides = {}) {
18
+ return {
19
+ definitionUrl: 'local:00000000-0000-0000-0000-0000000000aa',
20
+ definitionId: '00000000-0000-0000-0000-0000000000aa',
21
+ versionId: '00000000-0000-0000-0000-0000000000bb',
22
+ channel: 'live',
23
+ orgId: '00000000-0000-0000-0000-0000000000cc',
24
+ durationMs: 123.5,
25
+ ok: true,
26
+ failureKind: 'ok',
27
+ errorCount: 0,
28
+ warningCount: 0,
29
+ ...overrides
30
+ };
31
+ }
32
+ export function runSolveMetricSinkConformance(opts) {
33
+ const { name, createSink, readRows, createFailingSink, cleanup } = opts;
34
+ describe(`ISolveMetricSink conformance: ${name}`, () => {
35
+ let sink;
36
+ beforeEach(async () => {
37
+ sink = await createSink();
38
+ });
39
+ afterEach(async () => {
40
+ if (cleanup)
41
+ await cleanup();
42
+ });
43
+ it('persists a successful solve with all fields intact', async () => {
44
+ const metric = baseMetric();
45
+ await sink.record(sysCtx('user-1'), metric);
46
+ const rows = await readRows();
47
+ expect(rows).toHaveLength(1);
48
+ expect(rows[0]).toMatchObject({ ...metric, actorId: 'user-1' });
49
+ });
50
+ it('records the actor from the RequestContext', async () => {
51
+ await sink.record(sysCtx('user-xyz'), baseMetric());
52
+ const rows = await readRows();
53
+ expect(rows[0].actorId).toBe('user-xyz');
54
+ });
55
+ it('falls back to "system" when the context has no user id', async () => {
56
+ await sink.record(sysCtx(''), baseMetric());
57
+ const rows = await readRows();
58
+ expect(rows[0].actorId).toBe('system');
59
+ });
60
+ it('persists a failed solve with its failureKind and zero duration', async () => {
61
+ await sink.record(sysCtx('user-1'), baseMetric({ ok: false, failureKind: 'timeout', durationMs: 0 }));
62
+ const rows = await readRows();
63
+ expect(rows[0]).toMatchObject({ ok: false, failureKind: 'timeout', durationMs: 0 });
64
+ });
65
+ it('persists error/warning counts on an otherwise-ok solve', async () => {
66
+ await sink.record(sysCtx('user-1'), baseMetric({ errorCount: 2, warningCount: 5 }));
67
+ const rows = await readRows();
68
+ expect(rows[0]).toMatchObject({ ok: true, errorCount: 2, warningCount: 5 });
69
+ });
70
+ it('persists null definition/version/org for remote-URL solves', async () => {
71
+ await sink.record(sysCtx('user-1'), baseMetric({
72
+ definitionUrl: 'https://example.com/def.gh',
73
+ definitionId: null,
74
+ versionId: null,
75
+ orgId: null
76
+ }));
77
+ const rows = await readRows();
78
+ expect(rows[0]).toMatchObject({ definitionId: null, versionId: null, orgId: null });
79
+ });
80
+ if (createFailingSink) {
81
+ it('does not throw when the backing write fails', async () => {
82
+ const failing = await createFailingSink();
83
+ // The contract: record swallows the failure and resolves.
84
+ await expect(failing.record(sysCtx('user-1'), baseMetric())).resolves.toBeUndefined();
85
+ });
86
+ }
87
+ });
88
+ }
89
+ //# sourceMappingURL=solveMetricSinkSuite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solveMetricSinkSuite.js","sourceRoot":"","sources":["../../../src/testing/suites/solveMetricSinkSuite.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@selvajs/platform",
3
- "version": "0.13.0",
3
+ "version": "0.14.1",
4
4
  "description": "Pure TypeScript interfaces for Selva platform providers (auth, definitions, compute)",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -107,7 +107,7 @@
107
107
  ],
108
108
  "dependencies": {
109
109
  "zod": "^4.3.6",
110
- "@selvajs/schemas": "4.5.0"
110
+ "@selvajs/schemas": "4.6.0"
111
111
  },
112
112
  "peerDependencies": {
113
113
  "sharp": "^0.34.0",
package/src/config.ts CHANGED
@@ -2,6 +2,7 @@ import type { IAuthProvider } from './auth/interface.js';
2
2
  import type { IDataProvider } from './data/interface.js';
3
3
  import type { IStorageProvider } from './storage/interface.js';
4
4
  import type { IEventSink } from './events/interface.js';
5
+ import type { ISolveMetricSink } from './metrics/interface.js';
5
6
  import type { IBindingResolver } from './bindings/interface.js';
6
7
 
7
8
  /**
@@ -67,6 +68,12 @@ export interface SelvaConfig {
67
68
  storage: IStorageProvider;
68
69
  /** Optional. Defaults to `NoopEventSink`. */
69
70
  events?: IEventSink;
71
+ /**
72
+ * Optional. Records per-solve timing (wall time of the Rhino.Compute solve
73
+ * call). Defaults to `NoopSolveMetricSink`, which discards every metric.
74
+ * Supply a real sink to persist or aggregate solve durations.
75
+ */
76
+ solveMetrics?: ISolveMetricSink;
70
77
  /**
71
78
  * Optional. Resolves values for inputs marked as `source.kind === 'server'`
72
79
  * in the schema. Defaults to `NoopBindingResolver`, which returns nothing
package/src/index.ts CHANGED
@@ -1,14 +1,6 @@
1
- // ============================================================================
2
- // @selvajs/platform — public API
3
- // ============================================================================
4
- // This file IS the contract. Every symbol below is part of the published API
5
- // and removing or changing one is a breaking change. Add a symbol here only
6
- // when you intend to commit to it long-term; otherwise keep it internal to
7
- // its module.
1
+ // @selvajs/platform — published API contract. Every symbol here is breaking-change-protected.
8
2
 
9
- // ---------------------------------------------------------------------------
10
3
  // auth
11
- // ---------------------------------------------------------------------------
12
4
  export type { AuthUser, UserManagementResult, LoginResult } from './auth/types.js';
13
5
  export type {
14
6
  IAuthProvider,
@@ -25,16 +17,12 @@ export type { PlatformPermission } from './permissions/types.js';
25
17
  export { PlatformPermissionSchema, ALL_PLATFORM_PERMISSIONS } from './permissions/types.js';
26
18
  export type { IPlatformPermissionStore } from './permissions/interface.js';
27
19
 
28
- // ---------------------------------------------------------------------------
29
20
  // userProfile
30
- // ---------------------------------------------------------------------------
31
21
  export type { IUserProfileStore } from './userProfile/interface.js';
32
22
  export type { UserProfile, RecentRun } from './userProfile/types.js';
33
23
  export { emptyProfile } from './userProfile/types.js';
34
24
 
35
- // ---------------------------------------------------------------------------
36
25
  // organizations
37
- // ---------------------------------------------------------------------------
38
26
  export type { Organization, OrgMember } from './organizations/types.js';
39
27
  export type { IOrgStore } from './organizations/interface.js';
40
28
  export type {
@@ -55,15 +43,11 @@ export {
55
43
  MEMBER_ASSIGNABLE_PERMISSIONS
56
44
  } from './organizations/schemas.js';
57
45
 
58
- // ---------------------------------------------------------------------------
59
46
  // invites
60
- // ---------------------------------------------------------------------------
61
47
  export type { Invite } from './invites/types.js';
62
48
  export type { IInviteStore } from './invites/interface.js';
63
49
 
64
- // ---------------------------------------------------------------------------
65
50
  // projects
66
- // ---------------------------------------------------------------------------
67
51
  export type { Project, ProjectMember } from './projects/types.js';
68
52
  export type { IProjectStore } from './projects/interface.js';
69
53
  export type { ProjectVisibility, ProjectRole } from './projects/schemas.js';
@@ -73,9 +57,7 @@ export {
73
57
  validateProjectFlags
74
58
  } from './projects/schemas.js';
75
59
 
76
- // ---------------------------------------------------------------------------
77
60
  // platformProjects
78
- // ---------------------------------------------------------------------------
79
61
  export type { PlatformProjectGrant, PlatformProjectGranteeType } from './platformProjects/types.js';
80
62
  export type { IPlatformProjectGrantStore } from './platformProjects/interface.js';
81
63
  export {
@@ -83,9 +65,7 @@ export {
83
65
  PlatformProjectGranteeTypeSchema
84
66
  } from './platformProjects/schemas.js';
85
67
 
86
- // ---------------------------------------------------------------------------
87
68
  // definitions
88
- // ---------------------------------------------------------------------------
89
69
  export type {
90
70
  DefinitionFileExt,
91
71
  DefinitionRecord,
@@ -200,6 +180,12 @@ export type {
200
180
  IAuditQuery
201
181
  } from './events/audit.js';
202
182
 
183
+ // ---------------------------------------------------------------------------
184
+ // metrics (per-solve timing telemetry)
185
+ // ---------------------------------------------------------------------------
186
+ export type { ISolveMetricSink, SolveMetric, SolveFailureKind } from './metrics/interface.js';
187
+ export { NoopSolveMetricSink } from './metrics/interface.js';
188
+
203
189
  // ---------------------------------------------------------------------------
204
190
  // bindings (server-side resolver for schema inputs marked `source.kind === 'server'`)
205
191
  // ---------------------------------------------------------------------------
@@ -0,0 +1,86 @@
1
+ import type { RequestContext } from '../context.js';
2
+
3
+ /**
4
+ * Why a solve did not produce a usable result. `ok` means the solve completed
5
+ * (it may still carry Grasshopper runtime errors — see `errorCount`). The
6
+ * failure kinds mirror the distinct branches the compute route already
7
+ * distinguishes, so the recorded reason matches the HTTP status the client saw.
8
+ */
9
+ export type SolveFailureKind =
10
+ /** Solve completed; the response was returned to the client. */
11
+ | 'ok'
12
+ /** Scheduler deadline exceeded (HTTP 504). */
13
+ | 'timeout'
14
+ /** Client disconnected mid-solve; the request signal aborted (HTTP 499). */
15
+ | 'client_abort'
16
+ /** Rejected by the per-key rate limiter before solving (HTTP 429). */
17
+ | 'rate_limited'
18
+ /** Share-link solve cap reached before solving (HTTP 429). */
19
+ | 'share_cap'
20
+ /** Result exceeded the response size limit (HTTP 413). */
21
+ | 'too_large'
22
+ /** Compute server unreachable or the solve threw for any other reason. */
23
+ | 'compute_error';
24
+
25
+ /**
26
+ * One solve's timing and outcome, recorded once per solve attempt — including
27
+ * attempts rejected before `scheduler.solve()` runs (rate limit, share cap).
28
+ *
29
+ * `durationMs` is wall time around the Rhino.Compute solve call only — it
30
+ * excludes definition loading, auth, schema work, and result serialization. It
31
+ * is 0 for attempts rejected before the solve started.
32
+ */
33
+ export interface SolveMetric {
34
+ /** Definition the solve ran against. `local:<guid>` or a remote URL. */
35
+ definitionUrl: string;
36
+ /**
37
+ * Local definition id (the `local:` guid), or null for remote-URL solves.
38
+ * Stored alongside `definitionUrl` so timings join to the definition record.
39
+ */
40
+ definitionId: string | null;
41
+ /**
42
+ * The exact version solved, or null for remote-URL solves (and for local
43
+ * attempts rejected before the version resolved). Lets you compare timings
44
+ * across versions of the same definition.
45
+ */
46
+ versionId: string | null;
47
+ /** Channel solved, mirroring the compute request. */
48
+ channel: 'live' | 'draft';
49
+ /** Org whose compute pool served the solve, or null for remote definitions. */
50
+ orgId: string | null;
51
+ /** Wall-clock duration of `scheduler.solve()` in milliseconds. 0 if never started. */
52
+ durationMs: number;
53
+ /** Whether the solve completed and returned a result. */
54
+ ok: boolean;
55
+ /** Why the solve did not return a result; `'ok'` when it did. */
56
+ failureKind: SolveFailureKind;
57
+ /**
58
+ * Count of Grasshopper runtime errors in the solve response. A solve can be
59
+ * `ok` yet still report component-level errors — this is distinct from
60
+ * `failureKind`. 0 when the solve never returned a response.
61
+ */
62
+ errorCount: number;
63
+ /** Count of Grasshopper runtime warnings in the solve response. */
64
+ warningCount: number;
65
+ }
66
+
67
+ /**
68
+ * Sink for per-solve timing telemetry. Called once per solve attempt from the
69
+ * compute route, AFTER the solve resolves or rejects.
70
+ *
71
+ * MUST NOT throw — recording is best-effort and sits on the hot path of every
72
+ * solve. Implementations catch and log their own failures; the only side
73
+ * effect visible to the caller is a fulfilled promise. MAY be fire-and-forget.
74
+ */
75
+ export interface ISolveMetricSink {
76
+ record(ctx: RequestContext, metric: SolveMetric): Promise<void>;
77
+ }
78
+
79
+ /**
80
+ * Default `ISolveMetricSink` — discards every metric. Used when
81
+ * `SelvaConfig.solveMetrics` is omitted. Swap in a real sink to persist or
82
+ * aggregate solve timings.
83
+ */
84
+ export class NoopSolveMetricSink implements ISolveMetricSink {
85
+ async record(_ctx: RequestContext, _metric: SolveMetric): Promise<void> {}
86
+ }
@@ -34,6 +34,12 @@ export type {
34
34
  export { runEventSinkConformance, RecordingEventSink } from './suites/eventSinkSuite.js';
35
35
  export type { EventSinkConformanceOptions } from './suites/eventSinkSuite.js';
36
36
 
37
+ export { runSolveMetricSinkConformance } from './suites/solveMetricSinkSuite.js';
38
+ export type {
39
+ SolveMetricSinkConformanceOptions,
40
+ RecordedSolveMetric
41
+ } from './suites/solveMetricSinkSuite.js';
42
+
37
43
  export { runPlatformPermissionStoreConformance } from './suites/platformPermissionStoreSuite.js';
38
44
  export type { PlatformPermissionStoreConformanceOptions } from './suites/platformPermissionStoreSuite.js';
39
45
 
@@ -1,12 +1,4 @@
1
- /**
2
- * Adapter conformance suite for IAuthProvider.
3
- *
4
- * Covers token round-trips, identity verification, password auth (when the
5
- * provider exposes `passwordAuth`), and admin user management.
6
- *
7
- * User-profile state (starring, recent runs, profile mutations) is tested
8
- * separately by `runUserProfileStoreConformance` against `IUserProfileStore`.
9
- */
1
+ // Conformance suite for IAuthProvider: token round-trips, identity, password auth, admin management.
10
2
 
11
3
  import { describe, it, expect } from 'vitest';
12
4
  import type { IAuthProvider } from '../../auth/index.js';
@@ -39,10 +31,7 @@ export function runAuthProviderConformance(opts: AuthProviderConformanceOptions)
39
31
  const { name, createProvider, userManagement = false } = opts;
40
32
 
41
33
  describe(`IAuthProvider conformance: ${name}`, () => {
42
- // ============================================================================
43
34
  // Token round-trips
44
- // ============================================================================
45
-
46
35
  it('verifyLogin returns a session token that verifyToken accepts', async () => {
47
36
  const { provider, adminPassword, adminEmail = '' } = await createProvider();
48
37
  const result = await provider.passwordAuth!.verifyLogin(adminEmail, adminPassword);
@@ -64,10 +53,7 @@ export function runAuthProviderConformance(opts: AuthProviderConformanceOptions)
64
53
  expect(result).toBeNull();
65
54
  });
66
55
 
67
- // ============================================================================
68
56
  // Password auth (only runs when passwordAuth is present)
69
- // ============================================================================
70
-
71
57
  it('verifyLogin returns success with correct password', async () => {
72
58
  const { provider, adminPassword, adminEmail = '' } = await createProvider();
73
59
  if (!provider.passwordAuth) return;
@@ -87,10 +73,7 @@ export function runAuthProviderConformance(opts: AuthProviderConformanceOptions)
87
73
  expect(result.kind).toBe('failed');
88
74
  });
89
75
 
90
- // ============================================================================
91
76
  // getUser
92
- // ============================================================================
93
-
94
77
  it('getUser returns null for unknown id', async () => {
95
78
  const { provider } = await createProvider();
96
79
  // Valid UUID shape but not an actual user — stricter backends (Postgres
@@ -1,9 +1,4 @@
1
- /**
2
- * Adapter conformance suite for IProjectStore.
3
- *
4
- * Tests project CRUD, project membership management, and access checks to
5
- * ensure all adapters behave identically.
6
- */
1
+ // Conformance suite for IProjectStore: CRUD, membership, access checks across adapters.
7
2
 
8
3
  import { describe, it, expect } from 'vitest';
9
4
  import type { IProjectStore } from '../../projects/interface.js';
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Adapter conformance suite for the solve-metric-sink contract.
3
+ *
4
+ * Unlike `IEventSink`, an `ISolveMetricSink` is not driven by store mutations —
5
+ * the compute route calls `record()` directly, once per solve attempt. So this
6
+ * suite is a round-trip: hand a `SolveMetric` to the sink, then read the row
7
+ * back through an adapter-supplied `readRows` and assert the persisted shape.
8
+ *
9
+ * It also pins the contract's hard guarantee: `record` MUST NOT throw, even on
10
+ * a backend failure — the compute route depends on that to keep serving the
11
+ * response after a solve.
12
+ */
13
+
14
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
15
+ import type { ISolveMetricSink, SolveMetric, RequestContext } from '../../index.js';
16
+
17
+ /**
18
+ * Adapter's view of a persisted metric, normalized back to the `SolveMetric`
19
+ * shape plus the recorded `actorId`. Implementations map their column names
20
+ * onto these fields so the suite stays storage-agnostic.
21
+ */
22
+ export interface RecordedSolveMetric extends SolveMetric {
23
+ /** The actor the sink derived from the `RequestContext` it was handed. */
24
+ actorId: string;
25
+ }
26
+
27
+ export interface SolveMetricSinkConformanceOptions {
28
+ name: string;
29
+ /** Build a fresh sink against the adapter's backend. */
30
+ createSink: () => Promise<ISolveMetricSink> | ISolveMetricSink;
31
+ /** Read every persisted metric back, normalized to `RecordedSolveMetric`. */
32
+ readRows: () => Promise<RecordedSolveMetric[]>;
33
+ /**
34
+ * Build a sink whose backing store is broken so writes fail. Used to prove
35
+ * `record` swallows errors. Omit if the adapter can't simulate a failure;
36
+ * the throw-safety test is skipped when absent.
37
+ */
38
+ createFailingSink?: () => Promise<ISolveMetricSink> | ISolveMetricSink;
39
+ /** Optional per-test cleanup (truncate the metrics table, etc.). */
40
+ cleanup?: () => Promise<void> | void;
41
+ }
42
+
43
+ function sysCtx(userId: string): RequestContext {
44
+ return { userId, platformPermissions: [], orgPermissions: [], system: true };
45
+ }
46
+
47
+ function baseMetric(overrides: Partial<SolveMetric> = {}): SolveMetric {
48
+ return {
49
+ definitionUrl: 'local:00000000-0000-0000-0000-0000000000aa',
50
+ definitionId: '00000000-0000-0000-0000-0000000000aa',
51
+ versionId: '00000000-0000-0000-0000-0000000000bb',
52
+ channel: 'live',
53
+ orgId: '00000000-0000-0000-0000-0000000000cc',
54
+ durationMs: 123.5,
55
+ ok: true,
56
+ failureKind: 'ok',
57
+ errorCount: 0,
58
+ warningCount: 0,
59
+ ...overrides
60
+ };
61
+ }
62
+
63
+ export function runSolveMetricSinkConformance(opts: SolveMetricSinkConformanceOptions): void {
64
+ const { name, createSink, readRows, createFailingSink, cleanup } = opts;
65
+
66
+ describe(`ISolveMetricSink conformance: ${name}`, () => {
67
+ let sink: ISolveMetricSink;
68
+
69
+ beforeEach(async () => {
70
+ sink = await createSink();
71
+ });
72
+
73
+ afterEach(async () => {
74
+ if (cleanup) await cleanup();
75
+ });
76
+
77
+ it('persists a successful solve with all fields intact', async () => {
78
+ const metric = baseMetric();
79
+ await sink.record(sysCtx('user-1'), metric);
80
+
81
+ const rows = await readRows();
82
+ expect(rows).toHaveLength(1);
83
+ expect(rows[0]).toMatchObject({ ...metric, actorId: 'user-1' });
84
+ });
85
+
86
+ it('records the actor from the RequestContext', async () => {
87
+ await sink.record(sysCtx('user-xyz'), baseMetric());
88
+ const rows = await readRows();
89
+ expect(rows[0].actorId).toBe('user-xyz');
90
+ });
91
+
92
+ it('falls back to "system" when the context has no user id', async () => {
93
+ await sink.record(sysCtx(''), baseMetric());
94
+ const rows = await readRows();
95
+ expect(rows[0].actorId).toBe('system');
96
+ });
97
+
98
+ it('persists a failed solve with its failureKind and zero duration', async () => {
99
+ await sink.record(
100
+ sysCtx('user-1'),
101
+ baseMetric({ ok: false, failureKind: 'timeout', durationMs: 0 })
102
+ );
103
+ const rows = await readRows();
104
+ expect(rows[0]).toMatchObject({ ok: false, failureKind: 'timeout', durationMs: 0 });
105
+ });
106
+
107
+ it('persists error/warning counts on an otherwise-ok solve', async () => {
108
+ await sink.record(sysCtx('user-1'), baseMetric({ errorCount: 2, warningCount: 5 }));
109
+ const rows = await readRows();
110
+ expect(rows[0]).toMatchObject({ ok: true, errorCount: 2, warningCount: 5 });
111
+ });
112
+
113
+ it('persists null definition/version/org for remote-URL solves', async () => {
114
+ await sink.record(
115
+ sysCtx('user-1'),
116
+ baseMetric({
117
+ definitionUrl: 'https://example.com/def.gh',
118
+ definitionId: null,
119
+ versionId: null,
120
+ orgId: null
121
+ })
122
+ );
123
+ const rows = await readRows();
124
+ expect(rows[0]).toMatchObject({ definitionId: null, versionId: null, orgId: null });
125
+ });
126
+
127
+ if (createFailingSink) {
128
+ it('does not throw when the backing write fails', async () => {
129
+ const failing = await createFailingSink();
130
+ // The contract: record swallows the failure and resolves.
131
+ await expect(failing.record(sysCtx('user-1'), baseMetric())).resolves.toBeUndefined();
132
+ });
133
+ }
134
+ });
135
+ }