@urateam/core 0.1.3 → 0.1.8
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.
- package/dist/__tests__/audit/audit-e2e.test.d.ts +2 -0
- package/dist/__tests__/audit/audit-e2e.test.d.ts.map +1 -0
- package/dist/__tests__/audit/audit-e2e.test.js +56 -0
- package/dist/__tests__/audit/audit-e2e.test.js.map +1 -0
- package/dist/__tests__/audit/csv.test.d.ts +2 -0
- package/dist/__tests__/audit/csv.test.d.ts.map +1 -0
- package/dist/__tests__/audit/csv.test.js +134 -0
- package/dist/__tests__/audit/csv.test.js.map +1 -0
- package/dist/__tests__/audit/events.test.d.ts +2 -0
- package/dist/__tests__/audit/events.test.d.ts.map +1 -0
- package/dist/__tests__/audit/events.test.js +45 -0
- package/dist/__tests__/audit/events.test.js.map +1 -0
- package/dist/__tests__/audit/policy-events.test.d.ts +2 -0
- package/dist/__tests__/audit/policy-events.test.d.ts.map +1 -0
- package/dist/__tests__/audit/policy-events.test.js +49 -0
- package/dist/__tests__/audit/policy-events.test.js.map +1 -0
- package/dist/__tests__/audit/projection.test.d.ts +2 -0
- package/dist/__tests__/audit/projection.test.d.ts.map +1 -0
- package/dist/__tests__/audit/projection.test.js +76 -0
- package/dist/__tests__/audit/projection.test.js.map +1 -0
- package/dist/__tests__/audit/rbac-events.test.d.ts +2 -0
- package/dist/__tests__/audit/rbac-events.test.d.ts.map +1 -0
- package/dist/__tests__/audit/rbac-events.test.js +56 -0
- package/dist/__tests__/audit/rbac-events.test.js.map +1 -0
- package/dist/__tests__/audit/reader.test.d.ts +2 -0
- package/dist/__tests__/audit/reader.test.d.ts.map +1 -0
- package/dist/__tests__/audit/reader.test.js +133 -0
- package/dist/__tests__/audit/reader.test.js.map +1 -0
- package/dist/__tests__/audit/retention.test.d.ts +2 -0
- package/dist/__tests__/audit/retention.test.d.ts.map +1 -0
- package/dist/__tests__/audit/retention.test.js +48 -0
- package/dist/__tests__/audit/retention.test.js.map +1 -0
- package/dist/__tests__/audit/sso-events.test.d.ts +2 -0
- package/dist/__tests__/audit/sso-events.test.d.ts.map +1 -0
- package/dist/__tests__/audit/sso-events.test.js +49 -0
- package/dist/__tests__/audit/sso-events.test.js.map +1 -0
- package/dist/__tests__/audit/writer.test.d.ts +2 -0
- package/dist/__tests__/audit/writer.test.d.ts.map +1 -0
- package/dist/__tests__/audit/writer.test.js +67 -0
- package/dist/__tests__/audit/writer.test.js.map +1 -0
- package/dist/__tests__/audit-immutability.test.d.ts +2 -0
- package/dist/__tests__/audit-immutability.test.d.ts.map +1 -0
- package/dist/__tests__/audit-immutability.test.js +61 -0
- package/dist/__tests__/audit-immutability.test.js.map +1 -0
- package/dist/__tests__/audit-types.test.d.ts +2 -0
- package/dist/__tests__/audit-types.test.d.ts.map +1 -0
- package/dist/__tests__/audit-types.test.js +35 -0
- package/dist/__tests__/audit-types.test.js.map +1 -0
- package/dist/__tests__/auth/session-store.test.d.ts +2 -0
- package/dist/__tests__/auth/session-store.test.d.ts.map +1 -0
- package/dist/__tests__/auth/session-store.test.js +65 -0
- package/dist/__tests__/auth/session-store.test.js.map +1 -0
- package/dist/__tests__/auth/sso-config.test.d.ts +2 -0
- package/dist/__tests__/auth/sso-config.test.d.ts.map +1 -0
- package/dist/__tests__/auth/sso-config.test.js +75 -0
- package/dist/__tests__/auth/sso-config.test.js.map +1 -0
- package/dist/__tests__/auth/sso-feature-flag.test.d.ts +2 -0
- package/dist/__tests__/auth/sso-feature-flag.test.d.ts.map +1 -0
- package/dist/__tests__/auth/sso-feature-flag.test.js +33 -0
- package/dist/__tests__/auth/sso-feature-flag.test.js.map +1 -0
- package/dist/__tests__/auth/user-role-round-trip.test.d.ts +2 -0
- package/dist/__tests__/auth/user-role-round-trip.test.d.ts.map +1 -0
- package/dist/__tests__/auth/user-role-round-trip.test.js +30 -0
- package/dist/__tests__/auth/user-role-round-trip.test.js.map +1 -0
- package/dist/__tests__/auth/user-store.test.d.ts +2 -0
- package/dist/__tests__/auth/user-store.test.d.ts.map +1 -0
- package/dist/__tests__/auth/user-store.test.js +119 -0
- package/dist/__tests__/auth/user-store.test.js.map +1 -0
- package/dist/__tests__/auth/workos-client.test.d.ts +2 -0
- package/dist/__tests__/auth/workos-client.test.d.ts.map +1 -0
- package/dist/__tests__/auth/workos-client.test.js +17 -0
- package/dist/__tests__/auth/workos-client.test.js.map +1 -0
- package/dist/__tests__/auto-merge.test.js +2 -1
- package/dist/__tests__/auto-merge.test.js.map +1 -1
- package/dist/__tests__/cost/aggregate.test.d.ts +2 -0
- package/dist/__tests__/cost/aggregate.test.d.ts.map +1 -0
- package/dist/__tests__/cost/aggregate.test.js +358 -0
- package/dist/__tests__/cost/aggregate.test.js.map +1 -0
- package/dist/__tests__/cost/csv.test.d.ts +2 -0
- package/dist/__tests__/cost/csv.test.d.ts.map +1 -0
- package/dist/__tests__/cost/csv.test.js +109 -0
- package/dist/__tests__/cost/csv.test.js.map +1 -0
- package/dist/__tests__/cost/per-run.test.d.ts +2 -0
- package/dist/__tests__/cost/per-run.test.d.ts.map +1 -0
- package/dist/__tests__/cost/per-run.test.js +64 -0
- package/dist/__tests__/cost/per-run.test.js.map +1 -0
- package/dist/__tests__/cost/rates.test.d.ts +2 -0
- package/dist/__tests__/cost/rates.test.d.ts.map +1 -0
- package/dist/__tests__/cost/rates.test.js +47 -0
- package/dist/__tests__/cost/rates.test.js.map +1 -0
- package/dist/__tests__/cost/rollup.test.d.ts +2 -0
- package/dist/__tests__/cost/rollup.test.d.ts.map +1 -0
- package/dist/__tests__/cost/rollup.test.js +187 -0
- package/dist/__tests__/cost/rollup.test.js.map +1 -0
- package/dist/__tests__/cost-defensive.test.d.ts +2 -0
- package/dist/__tests__/cost-defensive.test.d.ts.map +1 -0
- package/dist/__tests__/cost-defensive.test.js +123 -0
- package/dist/__tests__/cost-defensive.test.js.map +1 -0
- package/dist/__tests__/cost-integration.test.d.ts +2 -0
- package/dist/__tests__/cost-integration.test.d.ts.map +1 -0
- package/dist/__tests__/cost-integration.test.js +80 -0
- package/dist/__tests__/cost-integration.test.js.map +1 -0
- package/dist/__tests__/cost-license.test.d.ts +2 -0
- package/dist/__tests__/cost-license.test.d.ts.map +1 -0
- package/dist/__tests__/cost-license.test.js +23 -0
- package/dist/__tests__/cost-license.test.js.map +1 -0
- package/dist/__tests__/cost-types.test.d.ts +2 -0
- package/dist/__tests__/cost-types.test.d.ts.map +1 -0
- package/dist/__tests__/cost-types.test.js +65 -0
- package/dist/__tests__/cost-types.test.js.map +1 -0
- package/dist/__tests__/db-audit-schema.test.d.ts +2 -0
- package/dist/__tests__/db-audit-schema.test.d.ts.map +1 -0
- package/dist/__tests__/db-audit-schema.test.js +35 -0
- package/dist/__tests__/db-audit-schema.test.js.map +1 -0
- package/dist/__tests__/db-cost-rollups-schema.test.d.ts +2 -0
- package/dist/__tests__/db-cost-rollups-schema.test.d.ts.map +1 -0
- package/dist/__tests__/db-cost-rollups-schema.test.js +28 -0
- package/dist/__tests__/db-cost-rollups-schema.test.js.map +1 -0
- package/dist/__tests__/db-rbac-schema.test.d.ts +2 -0
- package/dist/__tests__/db-rbac-schema.test.d.ts.map +1 -0
- package/dist/__tests__/db-rbac-schema.test.js +32 -0
- package/dist/__tests__/db-rbac-schema.test.js.map +1 -0
- package/dist/__tests__/db-sso-schema.test.d.ts +2 -0
- package/dist/__tests__/db-sso-schema.test.d.ts.map +1 -0
- package/dist/__tests__/db-sso-schema.test.js +48 -0
- package/dist/__tests__/db-sso-schema.test.js.map +1 -0
- package/dist/__tests__/helpers/license.d.ts +3 -0
- package/dist/__tests__/helpers/license.d.ts.map +1 -0
- package/dist/__tests__/helpers/license.js +74 -0
- package/dist/__tests__/helpers/license.js.map +1 -0
- package/dist/__tests__/license-audit-event.test.d.ts +2 -0
- package/dist/__tests__/license-audit-event.test.d.ts.map +1 -0
- package/dist/__tests__/license-audit-event.test.js +60 -0
- package/dist/__tests__/license-audit-event.test.js.map +1 -0
- package/dist/__tests__/license-end-to-end.test.d.ts +2 -0
- package/dist/__tests__/license-end-to-end.test.d.ts.map +1 -0
- package/dist/__tests__/license-end-to-end.test.js +75 -0
- package/dist/__tests__/license-end-to-end.test.js.map +1 -0
- package/dist/__tests__/license-public-key.test.d.ts +2 -0
- package/dist/__tests__/license-public-key.test.d.ts.map +1 -0
- package/dist/__tests__/license-public-key.test.js +18 -0
- package/dist/__tests__/license-public-key.test.js.map +1 -0
- package/dist/__tests__/license.test.js +195 -32
- package/dist/__tests__/license.test.js.map +1 -1
- package/dist/__tests__/pm-action-audit-events.test.d.ts +2 -0
- package/dist/__tests__/pm-action-audit-events.test.d.ts.map +1 -0
- package/dist/__tests__/pm-action-audit-events.test.js +185 -0
- package/dist/__tests__/pm-action-audit-events.test.js.map +1 -0
- package/dist/__tests__/pm-approvals.test.js +1 -1
- package/dist/__tests__/pm-approvals.test.js.map +1 -1
- package/dist/__tests__/pm-audit-retention-step.test.d.ts +2 -0
- package/dist/__tests__/pm-audit-retention-step.test.d.ts.map +1 -0
- package/dist/__tests__/pm-audit-retention-step.test.js +126 -0
- package/dist/__tests__/pm-audit-retention-step.test.js.map +1 -0
- package/dist/__tests__/pm-budget-alerts.test.d.ts +2 -0
- package/dist/__tests__/pm-budget-alerts.test.d.ts.map +1 -0
- package/dist/__tests__/pm-budget-alerts.test.js +128 -0
- package/dist/__tests__/pm-budget-alerts.test.js.map +1 -0
- package/dist/__tests__/pm-budget-refused-event.test.d.ts +2 -0
- package/dist/__tests__/pm-budget-refused-event.test.d.ts.map +1 -0
- package/dist/__tests__/pm-budget-refused-event.test.js +141 -0
- package/dist/__tests__/pm-budget-refused-event.test.js.map +1 -0
- package/dist/__tests__/pm-budget.test.js +138 -42
- package/dist/__tests__/pm-budget.test.js.map +1 -1
- package/dist/__tests__/pm-cost-rollup-step.test.d.ts +2 -0
- package/dist/__tests__/pm-cost-rollup-step.test.d.ts.map +1 -0
- package/dist/__tests__/pm-cost-rollup-step.test.js +113 -0
- package/dist/__tests__/pm-cost-rollup-step.test.js.map +1 -0
- package/dist/__tests__/pm-scheduler.test.js +48 -21
- package/dist/__tests__/pm-scheduler.test.js.map +1 -1
- package/dist/__tests__/pm-slack.test.js +37 -0
- package/dist/__tests__/pm-slack.test.js.map +1 -1
- package/dist/__tests__/pm-sso-prune-step.test.d.ts +2 -0
- package/dist/__tests__/pm-sso-prune-step.test.d.ts.map +1 -0
- package/dist/__tests__/pm-sso-prune-step.test.js +103 -0
- package/dist/__tests__/pm-sso-prune-step.test.js.map +1 -0
- package/dist/__tests__/pm-types.test.js +130 -1
- package/dist/__tests__/pm-types.test.js.map +1 -1
- package/dist/__tests__/policy/auto-merge-reviewer-gate.test.d.ts +2 -0
- package/dist/__tests__/policy/auto-merge-reviewer-gate.test.d.ts.map +1 -0
- package/dist/__tests__/policy/auto-merge-reviewer-gate.test.js +50 -0
- package/dist/__tests__/policy/auto-merge-reviewer-gate.test.js.map +1 -0
- package/dist/__tests__/policy/cost-gate.test.d.ts +2 -0
- package/dist/__tests__/policy/cost-gate.test.d.ts.map +1 -0
- package/dist/__tests__/policy/cost-gate.test.js +27 -0
- package/dist/__tests__/policy/cost-gate.test.js.map +1 -0
- package/dist/__tests__/policy/evaluate.test.d.ts +2 -0
- package/dist/__tests__/policy/evaluate.test.d.ts.map +1 -0
- package/dist/__tests__/policy/evaluate.test.js +105 -0
- package/dist/__tests__/policy/evaluate.test.js.map +1 -0
- package/dist/__tests__/policy/override.test.d.ts +2 -0
- package/dist/__tests__/policy/override.test.d.ts.map +1 -0
- package/dist/__tests__/policy/override.test.js +26 -0
- package/dist/__tests__/policy/override.test.js.map +1 -0
- package/dist/__tests__/policy/path-gate.test.d.ts +2 -0
- package/dist/__tests__/policy/path-gate.test.d.ts.map +1 -0
- package/dist/__tests__/policy/path-gate.test.js +31 -0
- package/dist/__tests__/policy/path-gate.test.js.map +1 -0
- package/dist/__tests__/policy/pr-reviewer-wiring.test.d.ts +2 -0
- package/dist/__tests__/policy/pr-reviewer-wiring.test.d.ts.map +1 -0
- package/dist/__tests__/policy/pr-reviewer-wiring.test.js +24 -0
- package/dist/__tests__/policy/pr-reviewer-wiring.test.js.map +1 -0
- package/dist/__tests__/policy/reviewer-gate.test.d.ts +2 -0
- package/dist/__tests__/policy/reviewer-gate.test.d.ts.map +1 -0
- package/dist/__tests__/policy/reviewer-gate.test.js +125 -0
- package/dist/__tests__/policy/reviewer-gate.test.js.map +1 -0
- package/dist/__tests__/policy-license.test.d.ts +2 -0
- package/dist/__tests__/policy-license.test.d.ts.map +1 -0
- package/dist/__tests__/policy-license.test.js +31 -0
- package/dist/__tests__/policy-license.test.js.map +1 -0
- package/dist/__tests__/policy-types.test.d.ts +2 -0
- package/dist/__tests__/policy-types.test.d.ts.map +1 -0
- package/dist/__tests__/policy-types.test.js +49 -0
- package/dist/__tests__/policy-types.test.js.map +1 -0
- package/dist/__tests__/ralph-gate.test.js +6 -4
- package/dist/__tests__/ralph-gate.test.js.map +1 -1
- package/dist/__tests__/rbac/bootstrap.test.d.ts +2 -0
- package/dist/__tests__/rbac/bootstrap.test.d.ts.map +1 -0
- package/dist/__tests__/rbac/bootstrap.test.js +62 -0
- package/dist/__tests__/rbac/bootstrap.test.js.map +1 -0
- package/dist/__tests__/rbac/matrix.test.d.ts +2 -0
- package/dist/__tests__/rbac/matrix.test.d.ts.map +1 -0
- package/dist/__tests__/rbac/matrix.test.js +62 -0
- package/dist/__tests__/rbac/matrix.test.js.map +1 -0
- package/dist/__tests__/rbac/user-role-store.test.d.ts +2 -0
- package/dist/__tests__/rbac/user-role-store.test.d.ts.map +1 -0
- package/dist/__tests__/rbac/user-role-store.test.js +78 -0
- package/dist/__tests__/rbac/user-role-store.test.js.map +1 -0
- package/dist/__tests__/rbac-defensive.test.d.ts +2 -0
- package/dist/__tests__/rbac-defensive.test.d.ts.map +1 -0
- package/dist/__tests__/rbac-defensive.test.js +29 -0
- package/dist/__tests__/rbac-defensive.test.js.map +1 -0
- package/dist/__tests__/rbac-integration.test.d.ts +2 -0
- package/dist/__tests__/rbac-integration.test.d.ts.map +1 -0
- package/dist/__tests__/rbac-integration.test.js +58 -0
- package/dist/__tests__/rbac-integration.test.js.map +1 -0
- package/dist/__tests__/rbac-license.test.d.ts +2 -0
- package/dist/__tests__/rbac-license.test.d.ts.map +1 -0
- package/dist/__tests__/rbac-license.test.js +27 -0
- package/dist/__tests__/rbac-license.test.js.map +1 -0
- package/dist/__tests__/reproduce-bec113-pagination-warning.test.js +14 -2
- package/dist/__tests__/reproduce-bec113-pagination-warning.test.js.map +1 -1
- package/dist/__tests__/reproduce-bec62.test.js +10 -3
- package/dist/__tests__/reproduce-bec62.test.js.map +1 -1
- package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.js +24 -4
- package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.js.map +1 -1
- package/dist/__tests__/server.test.js +46 -2
- package/dist/__tests__/server.test.js.map +1 -1
- package/dist/__tests__/sso-license.test.d.ts +2 -0
- package/dist/__tests__/sso-license.test.d.ts.map +1 -0
- package/dist/__tests__/sso-license.test.js +49 -0
- package/dist/__tests__/sso-license.test.js.map +1 -0
- package/dist/__tests__/start-todo.test.js +5 -0
- package/dist/__tests__/start-todo.test.js.map +1 -1
- package/dist/__tests__/webhook-handler.test.js +138 -0
- package/dist/__tests__/webhook-handler.test.js.map +1 -1
- package/dist/audit/config-fingerprint.d.ts +10 -0
- package/dist/audit/config-fingerprint.d.ts.map +1 -0
- package/dist/audit/config-fingerprint.js +20 -0
- package/dist/audit/config-fingerprint.js.map +1 -0
- package/dist/audit/csv.d.ts +8 -0
- package/dist/audit/csv.d.ts.map +1 -0
- package/dist/audit/csv.js +56 -0
- package/dist/audit/csv.js.map +1 -0
- package/dist/audit/events.d.ts +107 -0
- package/dist/audit/events.d.ts.map +1 -0
- package/dist/audit/events.js +221 -0
- package/dist/audit/events.js.map +1 -0
- package/dist/audit/index.d.ts +7 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +7 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/projection.d.ts +38 -0
- package/dist/audit/projection.d.ts.map +1 -0
- package/dist/audit/projection.js +109 -0
- package/dist/audit/projection.js.map +1 -0
- package/dist/audit/reader.d.ts +42 -0
- package/dist/audit/reader.d.ts.map +1 -0
- package/dist/audit/reader.js +243 -0
- package/dist/audit/reader.js.map +1 -0
- package/dist/audit/retention.d.ts +12 -0
- package/dist/audit/retention.d.ts.map +1 -0
- package/dist/audit/retention.js +23 -0
- package/dist/audit/retention.js.map +1 -0
- package/dist/audit/writer.d.ts +26 -0
- package/dist/audit/writer.d.ts.map +1 -0
- package/dist/audit/writer.js +54 -0
- package/dist/audit/writer.js.map +1 -0
- package/dist/auth/index.d.ts +5 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/session-store.d.ts +17 -0
- package/dist/auth/session-store.d.ts.map +1 -0
- package/dist/auth/session-store.js +59 -0
- package/dist/auth/session-store.js.map +1 -0
- package/dist/auth/sso-config.d.ts +14 -0
- package/dist/auth/sso-config.d.ts.map +1 -0
- package/dist/auth/sso-config.js +50 -0
- package/dist/auth/sso-config.js.map +1 -0
- package/dist/auth/user-store.d.ts +33 -0
- package/dist/auth/user-store.d.ts.map +1 -0
- package/dist/auth/user-store.js +71 -0
- package/dist/auth/user-store.js.map +1 -0
- package/dist/auth/workos-client.d.ts +46 -0
- package/dist/auth/workos-client.d.ts.map +1 -0
- package/dist/auth/workos-client.js +66 -0
- package/dist/auth/workos-client.js.map +1 -0
- package/dist/cost/aggregate.d.ts +49 -0
- package/dist/cost/aggregate.d.ts.map +1 -0
- package/dist/cost/aggregate.js +364 -0
- package/dist/cost/aggregate.js.map +1 -0
- package/dist/cost/csv.d.ts +12 -0
- package/dist/cost/csv.d.ts.map +1 -0
- package/dist/cost/csv.js +79 -0
- package/dist/cost/csv.js.map +1 -0
- package/dist/cost/index.d.ts +7 -0
- package/dist/cost/index.d.ts.map +1 -0
- package/dist/cost/index.js +7 -0
- package/dist/cost/index.js.map +1 -0
- package/dist/cost/per-run.d.ts +31 -0
- package/dist/cost/per-run.d.ts.map +1 -0
- package/dist/cost/per-run.js +35 -0
- package/dist/cost/per-run.js.map +1 -0
- package/dist/cost/rates.d.ts +27 -0
- package/dist/cost/rates.d.ts.map +1 -0
- package/dist/cost/rates.js +26 -0
- package/dist/cost/rates.js.map +1 -0
- package/dist/cost/rollup.d.ts +17 -0
- package/dist/cost/rollup.d.ts.map +1 -0
- package/dist/cost/rollup.js +164 -0
- package/dist/cost/rollup.js.map +1 -0
- package/dist/cost/types.d.ts +54 -0
- package/dist/cost/types.d.ts.map +1 -0
- package/dist/cost/types.js +2 -0
- package/dist/cost/types.js.map +1 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +79 -1
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrations/postgres/006_spend_caps.sql +14 -0
- package/dist/db/migrations/postgres/007_audit_events.sql +19 -0
- package/dist/db/migrations/postgres/008_cost_rollups.sql +19 -0
- package/dist/db/migrations/postgres/008_sso.sql +20 -0
- package/dist/db/migrations/sqlite/005_spend_caps.sql +16 -0
- package/dist/db/migrations/sqlite/006_audit_events.sql +19 -0
- package/dist/db/migrations/sqlite/007_cost_rollups.sql +19 -0
- package/dist/db/migrations/sqlite/007_sso.sql +20 -0
- package/dist/db/schema.d.ts +802 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +80 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/license-public-key.d.ts +15 -0
- package/dist/license-public-key.d.ts.map +1 -0
- package/dist/license-public-key.js +15 -0
- package/dist/license-public-key.js.map +1 -0
- package/dist/license.d.ts +30 -5
- package/dist/license.d.ts.map +1 -1
- package/dist/license.js +142 -12
- package/dist/license.js.map +1 -1
- package/dist/pipeline/runner.d.ts +1 -7
- package/dist/pipeline/runner.d.ts.map +1 -1
- package/dist/pipeline/runner.js +168 -21
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/pm/actions/promote.d.ts +3 -0
- package/dist/pm/actions/promote.d.ts.map +1 -1
- package/dist/pm/actions/promote.js +12 -0
- package/dist/pm/actions/promote.js.map +1 -1
- package/dist/pm/actions/resolve-approvals.d.ts.map +1 -1
- package/dist/pm/actions/resolve-approvals.js +16 -0
- package/dist/pm/actions/resolve-approvals.js.map +1 -1
- package/dist/pm/actions/start-todo.d.ts +3 -0
- package/dist/pm/actions/start-todo.d.ts.map +1 -1
- package/dist/pm/actions/start-todo.js +5 -1
- package/dist/pm/actions/start-todo.js.map +1 -1
- package/dist/pm/actions/triage.d.ts +3 -0
- package/dist/pm/actions/triage.d.ts.map +1 -1
- package/dist/pm/actions/triage.js +8 -0
- package/dist/pm/actions/triage.js.map +1 -1
- package/dist/pm/budget-alerts.d.ts +18 -0
- package/dist/pm/budget-alerts.d.ts.map +1 -0
- package/dist/pm/budget-alerts.js +100 -0
- package/dist/pm/budget-alerts.js.map +1 -0
- package/dist/pm/budget.d.ts +28 -5
- package/dist/pm/budget.d.ts.map +1 -1
- package/dist/pm/budget.js +115 -39
- package/dist/pm/budget.js.map +1 -1
- package/dist/pm/scheduler.d.ts +8 -4
- package/dist/pm/scheduler.d.ts.map +1 -1
- package/dist/pm/scheduler.js +128 -5
- package/dist/pm/scheduler.js.map +1 -1
- package/dist/pm/slack.d.ts.map +1 -1
- package/dist/pm/slack.js +11 -0
- package/dist/pm/slack.js.map +1 -1
- package/dist/pm/types.d.ts +36 -0
- package/dist/pm/types.d.ts.map +1 -1
- package/dist/pm/types.js +12 -0
- package/dist/pm/types.js.map +1 -1
- package/dist/policy/cost-gate.d.ts +3 -0
- package/dist/policy/cost-gate.d.ts.map +1 -0
- package/dist/policy/cost-gate.js +11 -0
- package/dist/policy/cost-gate.js.map +1 -0
- package/dist/policy/evaluate.d.ts +32 -0
- package/dist/policy/evaluate.d.ts.map +1 -0
- package/dist/policy/evaluate.js +61 -0
- package/dist/policy/evaluate.js.map +1 -0
- package/dist/policy/index.d.ts +7 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +7 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/override.d.ts +23 -0
- package/dist/policy/override.d.ts.map +1 -0
- package/dist/policy/override.js +26 -0
- package/dist/policy/override.js.map +1 -0
- package/dist/policy/path-gate.d.ts +3 -0
- package/dist/policy/path-gate.d.ts.map +1 -0
- package/dist/policy/path-gate.js +20 -0
- package/dist/policy/path-gate.js.map +1 -0
- package/dist/policy/reviewer-gate.d.ts +45 -0
- package/dist/policy/reviewer-gate.d.ts.map +1 -0
- package/dist/policy/reviewer-gate.js +77 -0
- package/dist/policy/reviewer-gate.js.map +1 -0
- package/dist/policy/types.d.ts +7 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +2 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/rbac/errors.d.ts +7 -0
- package/dist/rbac/errors.d.ts.map +1 -0
- package/dist/rbac/errors.js +13 -0
- package/dist/rbac/errors.js.map +1 -0
- package/dist/rbac/index.d.ts +5 -0
- package/dist/rbac/index.d.ts.map +1 -0
- package/dist/rbac/index.js +5 -0
- package/dist/rbac/index.js.map +1 -0
- package/dist/rbac/matrix.d.ts +35 -0
- package/dist/rbac/matrix.d.ts.map +1 -0
- package/dist/rbac/matrix.js +42 -0
- package/dist/rbac/matrix.js.map +1 -0
- package/dist/rbac/types.d.ts +2 -0
- package/dist/rbac/types.d.ts.map +1 -0
- package/dist/rbac/types.js +2 -0
- package/dist/rbac/types.js.map +1 -0
- package/dist/rbac/user-role-store.d.ts +27 -0
- package/dist/rbac/user-role-store.d.ts.map +1 -0
- package/dist/rbac/user-role-store.js +148 -0
- package/dist/rbac/user-role-store.js.map +1 -0
- package/dist/repo/git.d.ts +9 -0
- package/dist/repo/git.d.ts.map +1 -1
- package/dist/repo/git.js +11 -0
- package/dist/repo/git.js.map +1 -1
- package/dist/repo/github.d.ts +4 -0
- package/dist/repo/github.d.ts.map +1 -1
- package/dist/repo/github.js +27 -0
- package/dist/repo/github.js.map +1 -1
- package/dist/repo/gitlab.d.ts +4 -0
- package/dist/repo/gitlab.d.ts.map +1 -1
- package/dist/repo/gitlab.js +7 -0
- package/dist/repo/gitlab.js.map +1 -1
- package/dist/server.d.ts +6 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +16 -10
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +155 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +83 -0
- package/dist/types.js.map +1 -1
- package/dist/util/glob.d.ts +7 -0
- package/dist/util/glob.d.ts.map +1 -0
- package/dist/util/glob.js +20 -0
- package/dist/util/glob.js.map +1 -0
- package/dist/webhook/handler.d.ts +3 -0
- package/dist/webhook/handler.d.ts.map +1 -1
- package/dist/webhook/handler.js +30 -1
- package/dist/webhook/handler.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,53 +1,216 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { generateKeyPairSync, sign } from "node:crypto";
|
|
3
|
+
import { checkLicense, isFeatureLicensed, _resetLicenseCache, } from "../license.js";
|
|
4
|
+
describe("checkLicense — OSS path", () => {
|
|
4
5
|
beforeEach(() => {
|
|
5
6
|
_resetLicenseCache();
|
|
6
7
|
delete process.env.URATEAM_LICENSE_KEY;
|
|
7
8
|
});
|
|
8
|
-
it("returns
|
|
9
|
+
it("returns oss tier when URATEAM_LICENSE_KEY is unset", () => {
|
|
9
10
|
const status = checkLicense();
|
|
10
11
|
expect(status.licensed).toBe(false);
|
|
11
|
-
expect(status.tier).toBe("
|
|
12
|
+
expect(status.tier).toBe("oss");
|
|
13
|
+
expect(status.invalidReason).toBeUndefined();
|
|
14
|
+
expect(status.features.size).toBe(0);
|
|
12
15
|
});
|
|
13
|
-
it("
|
|
14
|
-
process.env.URATEAM_LICENSE_KEY = "test-key-123";
|
|
15
|
-
const status = checkLicense();
|
|
16
|
-
expect(status.licensed).toBe(true);
|
|
17
|
-
expect(status.tier).toBe("pro");
|
|
18
|
-
});
|
|
19
|
-
it("caches the result", () => {
|
|
16
|
+
it("caches the result for the process lifetime", () => {
|
|
20
17
|
const first = checkLicense();
|
|
21
|
-
process.env.URATEAM_LICENSE_KEY = "
|
|
18
|
+
process.env.URATEAM_LICENSE_KEY = "anything";
|
|
22
19
|
const second = checkLicense();
|
|
23
|
-
expect(second
|
|
20
|
+
expect(second).toBe(first); // same object reference
|
|
24
21
|
});
|
|
25
22
|
});
|
|
26
|
-
describe("isFeatureLicensed", () => {
|
|
23
|
+
describe("isFeatureLicensed — OSS path", () => {
|
|
27
24
|
beforeEach(() => {
|
|
28
25
|
_resetLicenseCache();
|
|
29
26
|
delete process.env.URATEAM_LICENSE_KEY;
|
|
30
27
|
});
|
|
31
|
-
it("returns false for commercial features without key", () => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
});
|
|
46
|
-
it("always returns true for free features regardless of key", () => {
|
|
28
|
+
it("returns false for commercial features without a key", () => {
|
|
29
|
+
for (const feat of [
|
|
30
|
+
"slack-interface",
|
|
31
|
+
"deep-review",
|
|
32
|
+
"conflict-detection",
|
|
33
|
+
"multi-repo",
|
|
34
|
+
"stage-models",
|
|
35
|
+
"advanced-automerge",
|
|
36
|
+
"approval-workflows",
|
|
37
|
+
]) {
|
|
38
|
+
expect(isFeatureLicensed(feat)).toBe(false);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
it("returns true for non-commercial / unknown features", () => {
|
|
47
42
|
expect(isFeatureLicensed("pipeline-runner")).toBe(true);
|
|
48
43
|
expect(isFeatureLicensed("basic-pm")).toBe(true);
|
|
49
|
-
expect(isFeatureLicensed("auto-merge-basic")).toBe(true);
|
|
50
44
|
expect(isFeatureLicensed("unknown-feature")).toBe(true);
|
|
51
45
|
});
|
|
52
46
|
});
|
|
47
|
+
// --- Test helpers: locally generated keypair, used to sign sample JWTs ---
|
|
48
|
+
function b64url(buf) {
|
|
49
|
+
return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
50
|
+
}
|
|
51
|
+
function makeJwt(privateKey, payload) {
|
|
52
|
+
const header = { alg: "EdDSA", typ: "JWT" };
|
|
53
|
+
const headerB64 = b64url(Buffer.from(JSON.stringify(header)));
|
|
54
|
+
const payloadB64 = b64url(Buffer.from(JSON.stringify(payload)));
|
|
55
|
+
const signingInput = `${headerB64}.${payloadB64}`;
|
|
56
|
+
const sig = sign(null, Buffer.from(signingInput), privateKey);
|
|
57
|
+
return `${signingInput}.${b64url(sig)}`;
|
|
58
|
+
}
|
|
59
|
+
describe("checkLicense — JWT validation", () => {
|
|
60
|
+
let publicKeyB64;
|
|
61
|
+
let privateKey;
|
|
62
|
+
let originalPublicKey;
|
|
63
|
+
beforeEach(async () => {
|
|
64
|
+
_resetLicenseCache();
|
|
65
|
+
delete process.env.URATEAM_LICENSE_KEY;
|
|
66
|
+
const { publicKey, privateKey: priv } = generateKeyPairSync("ed25519");
|
|
67
|
+
publicKeyB64 = Buffer.from(publicKey.export({ format: "der", type: "spki" })).toString("base64");
|
|
68
|
+
privateKey = priv;
|
|
69
|
+
const mod = await import("../license-public-key.js");
|
|
70
|
+
originalPublicKey = mod.LICENSE_PUBLIC_KEY_DER_B64;
|
|
71
|
+
Object.defineProperty(mod, "LICENSE_PUBLIC_KEY_DER_B64", {
|
|
72
|
+
value: publicKeyB64,
|
|
73
|
+
writable: true,
|
|
74
|
+
configurable: true,
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
afterEach(async () => {
|
|
78
|
+
if (originalPublicKey !== undefined) {
|
|
79
|
+
const mod = await import("../license-public-key.js");
|
|
80
|
+
Object.defineProperty(mod, "LICENSE_PUBLIC_KEY_DER_B64", {
|
|
81
|
+
value: originalPublicKey,
|
|
82
|
+
writable: true,
|
|
83
|
+
configurable: true,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
const now = () => Math.floor(Date.now() / 1000);
|
|
88
|
+
it("accepts a valid pro JWT", () => {
|
|
89
|
+
process.env.URATEAM_LICENSE_KEY = makeJwt(privateKey, {
|
|
90
|
+
iss: "urateams.com",
|
|
91
|
+
sub: "cust_test",
|
|
92
|
+
tier: "pro",
|
|
93
|
+
seats: 25,
|
|
94
|
+
iat: now(),
|
|
95
|
+
exp: now() + 86_400,
|
|
96
|
+
});
|
|
97
|
+
const status = checkLicense();
|
|
98
|
+
expect(status.licensed).toBe(true);
|
|
99
|
+
expect(status.tier).toBe("pro");
|
|
100
|
+
expect(status.customerId).toBe("cust_test");
|
|
101
|
+
expect(status.seats).toBe(25);
|
|
102
|
+
expect(status.features.has("slack-interface")).toBe(true);
|
|
103
|
+
expect(status.features.has("sso")).toBe(false);
|
|
104
|
+
});
|
|
105
|
+
it("accepts a valid enterprise JWT and unlocks enterprise features", () => {
|
|
106
|
+
process.env.URATEAM_LICENSE_KEY = makeJwt(privateKey, {
|
|
107
|
+
iss: "urateams.com",
|
|
108
|
+
sub: "cust_acme",
|
|
109
|
+
tier: "enterprise",
|
|
110
|
+
seats: null,
|
|
111
|
+
iat: now(),
|
|
112
|
+
exp: now() + 86_400,
|
|
113
|
+
});
|
|
114
|
+
const status = checkLicense();
|
|
115
|
+
expect(status.licensed).toBe(true);
|
|
116
|
+
expect(status.tier).toBe("enterprise");
|
|
117
|
+
expect(status.features.has("sso")).toBe(true);
|
|
118
|
+
expect(status.features.has("audit-log")).toBe(true);
|
|
119
|
+
expect(status.features.has("slack-interface")).toBe(true);
|
|
120
|
+
});
|
|
121
|
+
it("respects an explicit `features` override array in the JWT", () => {
|
|
122
|
+
process.env.URATEAM_LICENSE_KEY = makeJwt(privateKey, {
|
|
123
|
+
iss: "urateams.com",
|
|
124
|
+
sub: "cust_partial",
|
|
125
|
+
tier: "pro",
|
|
126
|
+
seats: 5,
|
|
127
|
+
iat: now(),
|
|
128
|
+
exp: now() + 86_400,
|
|
129
|
+
features: ["slack-interface", "sso"],
|
|
130
|
+
});
|
|
131
|
+
const status = checkLicense();
|
|
132
|
+
expect(status.licensed).toBe(true);
|
|
133
|
+
expect(status.features.has("slack-interface")).toBe(true);
|
|
134
|
+
expect(status.features.has("sso")).toBe(true);
|
|
135
|
+
expect(status.features.has("multi-repo")).toBe(false);
|
|
136
|
+
});
|
|
137
|
+
it("rejects an expired JWT with invalidReason='expired'", () => {
|
|
138
|
+
process.env.URATEAM_LICENSE_KEY = makeJwt(privateKey, {
|
|
139
|
+
iss: "urateams.com",
|
|
140
|
+
sub: "cust_test",
|
|
141
|
+
tier: "pro",
|
|
142
|
+
seats: 25,
|
|
143
|
+
iat: now() - 100_000,
|
|
144
|
+
exp: now() - 1,
|
|
145
|
+
});
|
|
146
|
+
const status = checkLicense();
|
|
147
|
+
expect(status.licensed).toBe(false);
|
|
148
|
+
expect(status.tier).toBe("oss");
|
|
149
|
+
expect(status.invalidReason).toBe("expired");
|
|
150
|
+
});
|
|
151
|
+
it("rejects a wrong-issuer JWT with invalidReason='wrong-issuer'", () => {
|
|
152
|
+
process.env.URATEAM_LICENSE_KEY = makeJwt(privateKey, {
|
|
153
|
+
iss: "evil.dev",
|
|
154
|
+
sub: "cust_test",
|
|
155
|
+
tier: "enterprise",
|
|
156
|
+
seats: null,
|
|
157
|
+
iat: now(),
|
|
158
|
+
exp: now() + 86_400,
|
|
159
|
+
});
|
|
160
|
+
const status = checkLicense();
|
|
161
|
+
expect(status.tier).toBe("oss");
|
|
162
|
+
expect(status.invalidReason).toBe("wrong-issuer");
|
|
163
|
+
});
|
|
164
|
+
it("rejects a JWT signed with the wrong key (bad signature)", () => {
|
|
165
|
+
const { privateKey: otherPriv } = generateKeyPairSync("ed25519");
|
|
166
|
+
process.env.URATEAM_LICENSE_KEY = makeJwt(otherPriv, {
|
|
167
|
+
iss: "urateams.com",
|
|
168
|
+
sub: "cust_test",
|
|
169
|
+
tier: "enterprise",
|
|
170
|
+
seats: null,
|
|
171
|
+
iat: now(),
|
|
172
|
+
exp: now() + 86_400,
|
|
173
|
+
});
|
|
174
|
+
const status = checkLicense();
|
|
175
|
+
expect(status.tier).toBe("oss");
|
|
176
|
+
expect(status.invalidReason).toBe("bad-signature");
|
|
177
|
+
});
|
|
178
|
+
it("rejects a malformed JWT (not three parts) with invalidReason='malformed'", () => {
|
|
179
|
+
process.env.URATEAM_LICENSE_KEY = "this.is-not-a-jwt";
|
|
180
|
+
const status = checkLicense();
|
|
181
|
+
expect(status.tier).toBe("oss");
|
|
182
|
+
expect(status.invalidReason).toBe("malformed");
|
|
183
|
+
});
|
|
184
|
+
it("rejects tokens with non-EdDSA `alg` headers (algorithm confusion guard)", () => {
|
|
185
|
+
// Hand-craft a JWT with a different alg header and any signature.
|
|
186
|
+
// The verifier must reject it before the signature is even checked.
|
|
187
|
+
function craft(headerObj, payloadObj) {
|
|
188
|
+
const header = b64url(Buffer.from(JSON.stringify(headerObj)));
|
|
189
|
+
const payload = b64url(Buffer.from(JSON.stringify(payloadObj)));
|
|
190
|
+
const fakeSig = b64url(Buffer.from("anything"));
|
|
191
|
+
return `${header}.${payload}.${fakeSig}`;
|
|
192
|
+
}
|
|
193
|
+
const validPayload = {
|
|
194
|
+
iss: "urateams.com",
|
|
195
|
+
sub: "cust_attacker",
|
|
196
|
+
tier: "enterprise",
|
|
197
|
+
seats: null,
|
|
198
|
+
iat: Math.floor(Date.now() / 1000),
|
|
199
|
+
exp: Math.floor(Date.now() / 1000) + 86_400,
|
|
200
|
+
};
|
|
201
|
+
// Each of these must be rejected as malformed — never bypass the alg check.
|
|
202
|
+
for (const header of [
|
|
203
|
+
{ alg: "HS256", typ: "JWT" },
|
|
204
|
+
{ alg: "none", typ: "JWT" },
|
|
205
|
+
{ alg: "RS256", typ: "JWT" },
|
|
206
|
+
{ typ: "JWT" }, // missing alg entirely
|
|
207
|
+
]) {
|
|
208
|
+
_resetLicenseCache();
|
|
209
|
+
process.env.URATEAM_LICENSE_KEY = craft(header, validPayload);
|
|
210
|
+
const status = checkLicense();
|
|
211
|
+
expect(status.tier).toBe("oss");
|
|
212
|
+
expect(status.invalidReason).toBe("malformed");
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
});
|
|
53
216
|
//# sourceMappingURL=license.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.test.js","sourceRoot":"","sources":["../../src/__tests__/license.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"license.test.js","sourceRoot":"","sources":["../../src/__tests__/license.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm-action-audit-events.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/pm-action-audit-events.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { createDb } from "../db/client.js";
|
|
3
|
+
import { auditEvents, pmApprovals } from "../db/schema.js";
|
|
4
|
+
import { promoteReadyIssues } from "../pm/actions/promote.js";
|
|
5
|
+
import { triageNewIssues } from "../pm/actions/triage.js";
|
|
6
|
+
import { resolveApprovals } from "../pm/actions/resolve-approvals.js";
|
|
7
|
+
import { installTestProLicense, restoreLicense } from "./helpers/license.js";
|
|
8
|
+
async function getAuditRows(db) {
|
|
9
|
+
return await db.select().from(auditEvents);
|
|
10
|
+
}
|
|
11
|
+
describe("pm action audit events", () => {
|
|
12
|
+
beforeEach(async () => {
|
|
13
|
+
await installTestProLicense("enterprise");
|
|
14
|
+
});
|
|
15
|
+
afterEach(async () => {
|
|
16
|
+
await restoreLicense();
|
|
17
|
+
});
|
|
18
|
+
it("emits pm.issue_promoted when promote.ts moves issue to Todo", async () => {
|
|
19
|
+
const db = await createDb({ connectionString: ":memory:" });
|
|
20
|
+
const linearClient = {
|
|
21
|
+
issues: vi.fn().mockResolvedValue({
|
|
22
|
+
nodes: [
|
|
23
|
+
{
|
|
24
|
+
id: "issue-1",
|
|
25
|
+
identifier: "BEC-101",
|
|
26
|
+
title: "Fix thing",
|
|
27
|
+
description: "desc",
|
|
28
|
+
priority: 1,
|
|
29
|
+
labels: { nodes: [] },
|
|
30
|
+
team: { id: "team-1" },
|
|
31
|
+
url: "https://linear.app/BEC-101",
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
}),
|
|
35
|
+
updateIssue: vi.fn().mockResolvedValue({}),
|
|
36
|
+
createComment: vi.fn().mockResolvedValue({}),
|
|
37
|
+
};
|
|
38
|
+
await promoteReadyIssues({
|
|
39
|
+
linearClient: linearClient,
|
|
40
|
+
teamIds: ["team-1"],
|
|
41
|
+
slotsAvailable: 1,
|
|
42
|
+
checkConflict: vi.fn().mockResolvedValue({
|
|
43
|
+
overlapRisk: "none",
|
|
44
|
+
likelyFiles: [],
|
|
45
|
+
reasoning: "",
|
|
46
|
+
}),
|
|
47
|
+
stateMap: new Map([["team-1:Todo", "state-todo"]]),
|
|
48
|
+
db: db,
|
|
49
|
+
});
|
|
50
|
+
// Give the void-logAuditEvent microtask a chance to flush
|
|
51
|
+
await new Promise((r) => setImmediate(r));
|
|
52
|
+
const rows = await getAuditRows(db);
|
|
53
|
+
const promoted = rows.filter((r) => r.eventType === "pm.issue_promoted");
|
|
54
|
+
expect(promoted).toHaveLength(1);
|
|
55
|
+
expect(promoted[0].issueId).toBe("BEC-101");
|
|
56
|
+
const payload = JSON.parse(promoted[0].payload);
|
|
57
|
+
expect(payload.fromState).toBe("Backlog");
|
|
58
|
+
expect(payload.toState).toBe("Todo");
|
|
59
|
+
});
|
|
60
|
+
it("emits pm.triage_classified after Haiku classifies", async () => {
|
|
61
|
+
const db = await createDb({ connectionString: ":memory:" });
|
|
62
|
+
const linearClient = {
|
|
63
|
+
issues: vi.fn().mockResolvedValue({
|
|
64
|
+
nodes: [
|
|
65
|
+
{
|
|
66
|
+
id: "issue-1",
|
|
67
|
+
identifier: "BEC-202",
|
|
68
|
+
title: "Add feature",
|
|
69
|
+
description: "do the thing",
|
|
70
|
+
labels: { nodes: [] },
|
|
71
|
+
team: { id: "team-1" },
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
}),
|
|
75
|
+
issueLabels: vi.fn().mockResolvedValue({
|
|
76
|
+
nodes: [
|
|
77
|
+
{ id: "lbl-feature", name: "feature" },
|
|
78
|
+
{ id: "lbl-auto", name: "auto-implement" },
|
|
79
|
+
],
|
|
80
|
+
}),
|
|
81
|
+
updateIssue: vi.fn().mockResolvedValue({}),
|
|
82
|
+
createComment: vi.fn().mockResolvedValue({}),
|
|
83
|
+
};
|
|
84
|
+
const callClaude = vi.fn().mockResolvedValue(JSON.stringify({
|
|
85
|
+
priority: 2,
|
|
86
|
+
labels: ["feature"],
|
|
87
|
+
complexity: "small",
|
|
88
|
+
rationale: "Standard feature work",
|
|
89
|
+
acceptanceCriteria: ["a1 integration", "a2 behavior"],
|
|
90
|
+
}));
|
|
91
|
+
await triageNewIssues({
|
|
92
|
+
linearClient: linearClient,
|
|
93
|
+
teamIds: ["team-1"],
|
|
94
|
+
callClaude,
|
|
95
|
+
sanitize: (s) => s,
|
|
96
|
+
stateMap: new Map([["team-1:Backlog", "state-backlog"]]),
|
|
97
|
+
db: db,
|
|
98
|
+
});
|
|
99
|
+
await new Promise((r) => setImmediate(r));
|
|
100
|
+
const rows = await getAuditRows(db);
|
|
101
|
+
const triaged = rows.filter((r) => r.eventType === "pm.triage_classified");
|
|
102
|
+
expect(triaged).toHaveLength(1);
|
|
103
|
+
expect(triaged[0].issueId).toBe("BEC-202");
|
|
104
|
+
const payload = JSON.parse(triaged[0].payload);
|
|
105
|
+
expect(payload.label).toBe("auto-implement");
|
|
106
|
+
expect(payload.rationale).toBe("Standard feature work");
|
|
107
|
+
});
|
|
108
|
+
it("emits pm.issue_deprioritized after approval resolves", async () => {
|
|
109
|
+
const db = await createDb({ connectionString: ":memory:" });
|
|
110
|
+
// Insert a pending approval row
|
|
111
|
+
await db.insert(pmApprovals).values({
|
|
112
|
+
id: "appr-dep-1",
|
|
113
|
+
issueId: "BEC-301",
|
|
114
|
+
action: "deprioritize",
|
|
115
|
+
reason: "stale",
|
|
116
|
+
slackMessageTs: "ts-dep",
|
|
117
|
+
status: "pending",
|
|
118
|
+
});
|
|
119
|
+
const linearClient = {
|
|
120
|
+
searchIssues: vi.fn().mockResolvedValue({ nodes: [{ id: "linear-id-301" }] }),
|
|
121
|
+
updateIssue: vi.fn().mockResolvedValue({}),
|
|
122
|
+
createComment: vi.fn().mockResolvedValue({}),
|
|
123
|
+
};
|
|
124
|
+
const slackNotifier = {
|
|
125
|
+
checkApprovalReactions: vi.fn().mockResolvedValue("approved"),
|
|
126
|
+
postApprovalExpired: vi.fn().mockResolvedValue(undefined),
|
|
127
|
+
};
|
|
128
|
+
await resolveApprovals({
|
|
129
|
+
linearClient: linearClient,
|
|
130
|
+
slackNotifier: slackNotifier,
|
|
131
|
+
db: db,
|
|
132
|
+
teamIds: ["team-1"],
|
|
133
|
+
stateMap: new Map([
|
|
134
|
+
["team-1:Icebox", "state-icebox"],
|
|
135
|
+
["team-1:Canceled", "state-canceled"],
|
|
136
|
+
]),
|
|
137
|
+
});
|
|
138
|
+
await new Promise((r) => setImmediate(r));
|
|
139
|
+
const rows = await getAuditRows(db);
|
|
140
|
+
const dep = rows.filter((r) => r.eventType === "pm.issue_deprioritized");
|
|
141
|
+
expect(dep).toHaveLength(1);
|
|
142
|
+
expect(dep[0].issueId).toBe("BEC-301");
|
|
143
|
+
const payload = JSON.parse(dep[0].payload);
|
|
144
|
+
expect(payload.approvalId).toBe("appr-dep-1");
|
|
145
|
+
});
|
|
146
|
+
it("emits pm.issue_cancelled after approval resolves", async () => {
|
|
147
|
+
const db = await createDb({ connectionString: ":memory:" });
|
|
148
|
+
await db.insert(pmApprovals).values({
|
|
149
|
+
id: "appr-can-1",
|
|
150
|
+
issueId: "BEC-401",
|
|
151
|
+
action: "cancel",
|
|
152
|
+
reason: "abandoned 35 days",
|
|
153
|
+
slackMessageTs: "ts-can",
|
|
154
|
+
status: "pending",
|
|
155
|
+
});
|
|
156
|
+
const linearClient = {
|
|
157
|
+
searchIssues: vi.fn().mockResolvedValue({ nodes: [{ id: "linear-id-401" }] }),
|
|
158
|
+
updateIssue: vi.fn().mockResolvedValue({}),
|
|
159
|
+
createComment: vi.fn().mockResolvedValue({}),
|
|
160
|
+
};
|
|
161
|
+
const slackNotifier = {
|
|
162
|
+
checkApprovalReactions: vi.fn().mockResolvedValue("approved"),
|
|
163
|
+
postApprovalExpired: vi.fn().mockResolvedValue(undefined),
|
|
164
|
+
};
|
|
165
|
+
await resolveApprovals({
|
|
166
|
+
linearClient: linearClient,
|
|
167
|
+
slackNotifier: slackNotifier,
|
|
168
|
+
db: db,
|
|
169
|
+
teamIds: ["team-1"],
|
|
170
|
+
stateMap: new Map([
|
|
171
|
+
["team-1:Icebox", "state-icebox"],
|
|
172
|
+
["team-1:Canceled", "state-canceled"],
|
|
173
|
+
]),
|
|
174
|
+
});
|
|
175
|
+
await new Promise((r) => setImmediate(r));
|
|
176
|
+
const rows = await getAuditRows(db);
|
|
177
|
+
const canc = rows.filter((r) => r.eventType === "pm.issue_cancelled");
|
|
178
|
+
expect(canc).toHaveLength(1);
|
|
179
|
+
expect(canc[0].issueId).toBe("BEC-401");
|
|
180
|
+
const payload = JSON.parse(canc[0].payload);
|
|
181
|
+
expect(payload.approvalId).toBe("appr-can-1");
|
|
182
|
+
expect(payload.reason).toBe("abandoned 35 days");
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
//# sourceMappingURL=pm-action-audit-events.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm-action-audit-events.test.js","sourceRoot":"","sources":["../../src/__tests__/pm-action-audit-events.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pm-approvals.test.js","sourceRoot":"","sources":["../../src/__tests__/pm-approvals.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,SAAS,gBAAgB,CAAC,MAAa;IACrC,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACpD,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC1C,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC5C,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,CAAC,eAAe,EAAE,cAAc,CAAC;IACjC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;CACtC,CAAC,CAAC;AAEH,SAAS,cAAc;IACrB,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACb,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBACX,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"pm-approvals.test.js","sourceRoot":"","sources":["../../src/__tests__/pm-approvals.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm-audit-retention-step.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/pm-audit-retention-step.test.ts"],"names":[],"mappings":""}
|