@mccaskie-labs/workbench-config 0.1.22 → 0.1.23

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @mccaskie-labs/workbench-config
2
2
 
3
+ ## 0.1.23
4
+
5
+ ### Patch Changes
6
+
7
+ - Probes for the sign-in kit. `email`: `email.account.kit-clean`, `email.account.sign-in-code`, `email.hook.unsigned-refused`, `email.hook.signed-refused-action` and `email.brand.logo-public`. `database`: `database.plain-error`.
8
+
3
9
  ## 0.1.22
4
10
 
5
11
  ### Patch Changes
@@ -202,6 +202,14 @@
202
202
  "expect": "pass",
203
203
  "cost_hint_usd": 0,
204
204
  "note": "vendor_settings_apply check_only reports that both databases match the baseline, the Send Email hook included"
205
+ },
206
+ {
207
+ "id": "database.plain-error",
208
+ "half": "runtime",
209
+ "expect": "pass",
210
+ "smoke": true,
211
+ "cost_hint_usd": 0,
212
+ "note": "plainError and plainAuthError (workbench-supabase) turn a raw database error and an email_exists auth error into plain words that name the app and never say whether an account exists"
205
213
  }
206
214
  ]
207
215
  }
@@ -57,6 +57,11 @@
57
57
  { "id": "email.send.dev-key-recipient-refused", "half": "runtime", "expect": "refused_as_expected", "refusal": "recipient_not_allowed", "cost_hint_usd": 0 },
58
58
  { "id": "email.send.sender-not-allowed", "half": "runtime", "expect": "refused_as_expected", "refusal": "sender_not_allowed", "cost_hint_usd": 0 },
59
59
  { "id": "email.capture-refused-in-staging", "half": "runtime", "expect": "pass", "cost_hint_usd": 0, "note": "createMailer with transport capture and WORKBENCH_ENV=staging throws invalid_config" },
60
- { "id": "email.send.new-sender", "half": "runtime", "expect": "pass", "cost_hint_usd": 0.00035, "note": "Runs after the Control drill's gw_sender_add step; skipped without it" }
60
+ { "id": "email.send.new-sender", "half": "runtime", "expect": "pass", "cost_hint_usd": 0.00035, "note": "Runs after the Control drill's gw_sender_add step; skipped without it" },
61
+ { "id": "email.account.kit-clean", "half": "runtime", "expect": "pass", "smoke": true, "cost_hint_usd": 0, "note": "emailKitProblems over the app's catalogue (ACCOUNT_EMAILS), strings and brand.json returns []; runs in the Worker and sends nothing" },
62
+ { "id": "email.account.sign-in-code", "half": "runtime", "expect": "pass", "cost_hint_usd": 0.00035, "note": "renderTemplate account_sign_in_code with the app's brand.json, sent to Robert through the Gateway; check the logo, colours and code, and that there is no link. Not in the daily smoke run" },
63
+ { "id": "email.hook.unsigned-refused", "half": "runtime", "expect": "refused_as_expected", "refusal": "unauthorised", "smoke": true, "cost_hint_usd": 0, "note": "POST /auth/send-email from outside with no signature answers 401, not a sign-in redirect: proves the Access path bypass and the handler. Needs no secret" },
64
+ { "id": "email.hook.signed-refused-action", "half": "runtime", "expect": "refused_as_expected", "refusal": "refused", "cost_hint_usd": 0, "note": "A request signed with SEND_EMAIL_HOOK_SECRET for email_action_type recovery answers 422 and sends nothing; skipped while the Worker has no hook secret" },
65
+ { "id": "email.brand.logo-public", "half": "runtime", "expect": "pass", "smoke": true, "cost_hint_usd": 0, "note": "GET brand.json's logo.url from outside with no sign-in answers 200 with an image content type" }
61
66
  ]
62
67
  }
@@ -1,4 +1,4 @@
1
- export declare const MANIFEST_VERSION: "2216125e22d4";
1
+ export declare const MANIFEST_VERSION: "7f14dfc78268";
2
2
  export declare const capabilities: {
3
3
  readonly ai: {
4
4
  readonly $schema: "./schema.json";
@@ -563,6 +563,13 @@ export declare const capabilities: {
563
563
  readonly expect: "pass";
564
564
  readonly cost_hint_usd: 0;
565
565
  readonly note: "vendor_settings_apply check_only reports that both databases match the baseline, the Send Email hook included";
566
+ }, {
567
+ readonly id: "database.plain-error";
568
+ readonly half: "runtime";
569
+ readonly expect: "pass";
570
+ readonly smoke: true;
571
+ readonly cost_hint_usd: 0;
572
+ readonly note: "plainError and plainAuthError (workbench-supabase) turn a raw database error and an email_exists auth error into plain words that name the app and never say whether an account exists";
566
573
  }];
567
574
  };
568
575
  readonly email: {
@@ -771,6 +778,41 @@ export declare const capabilities: {
771
778
  readonly expect: "pass";
772
779
  readonly cost_hint_usd: 0.00035;
773
780
  readonly note: "Runs after the Control drill's gw_sender_add step; skipped without it";
781
+ }, {
782
+ readonly id: "email.account.kit-clean";
783
+ readonly half: "runtime";
784
+ readonly expect: "pass";
785
+ readonly smoke: true;
786
+ readonly cost_hint_usd: 0;
787
+ readonly note: "emailKitProblems over the app's catalogue (ACCOUNT_EMAILS), strings and brand.json returns []; runs in the Worker and sends nothing";
788
+ }, {
789
+ readonly id: "email.account.sign-in-code";
790
+ readonly half: "runtime";
791
+ readonly expect: "pass";
792
+ readonly cost_hint_usd: 0.00035;
793
+ readonly note: "renderTemplate account_sign_in_code with the app's brand.json, sent to Robert through the Gateway; check the logo, colours and code, and that there is no link. Not in the daily smoke run";
794
+ }, {
795
+ readonly id: "email.hook.unsigned-refused";
796
+ readonly half: "runtime";
797
+ readonly expect: "refused_as_expected";
798
+ readonly refusal: "unauthorised";
799
+ readonly smoke: true;
800
+ readonly cost_hint_usd: 0;
801
+ readonly note: "POST /auth/send-email from outside with no signature answers 401, not a sign-in redirect: proves the Access path bypass and the handler. Needs no secret";
802
+ }, {
803
+ readonly id: "email.hook.signed-refused-action";
804
+ readonly half: "runtime";
805
+ readonly expect: "refused_as_expected";
806
+ readonly refusal: "refused";
807
+ readonly cost_hint_usd: 0;
808
+ readonly note: "A request signed with SEND_EMAIL_HOOK_SECRET for email_action_type recovery answers 422 and sends nothing; skipped while the Worker has no hook secret";
809
+ }, {
810
+ readonly id: "email.brand.logo-public";
811
+ readonly half: "runtime";
812
+ readonly expect: "pass";
813
+ readonly smoke: true;
814
+ readonly cost_hint_usd: 0;
815
+ readonly note: "GET brand.json's logo.url from outside with no sign-in answers 200 with an image content type";
774
816
  }];
775
817
  };
776
818
  readonly "email-inbound": {
@@ -1,6 +1,6 @@
1
1
  // Generated by `npm run capabilities:build` from capabilities/*.json. Do not edit.
2
2
  // check:capabilities fails in Checks when this file is stale.
3
- export const MANIFEST_VERSION = "2216125e22d4";
3
+ export const MANIFEST_VERSION = "7f14dfc78268";
4
4
  export const capabilities = {
5
5
  "ai": {
6
6
  "$schema": "./schema.json",
@@ -810,6 +810,14 @@ export const capabilities = {
810
810
  "expect": "pass",
811
811
  "cost_hint_usd": 0,
812
812
  "note": "vendor_settings_apply check_only reports that both databases match the baseline, the Send Email hook included"
813
+ },
814
+ {
815
+ "id": "database.plain-error",
816
+ "half": "runtime",
817
+ "expect": "pass",
818
+ "smoke": true,
819
+ "cost_hint_usd": 0,
820
+ "note": "plainError and plainAuthError (workbench-supabase) turn a raw database error and an email_exists auth error into plain words that name the app and never say whether an account exists"
813
821
  }
814
822
  ]
815
823
  },
@@ -1073,6 +1081,46 @@ export const capabilities = {
1073
1081
  "expect": "pass",
1074
1082
  "cost_hint_usd": 0.00035,
1075
1083
  "note": "Runs after the Control drill's gw_sender_add step; skipped without it"
1084
+ },
1085
+ {
1086
+ "id": "email.account.kit-clean",
1087
+ "half": "runtime",
1088
+ "expect": "pass",
1089
+ "smoke": true,
1090
+ "cost_hint_usd": 0,
1091
+ "note": "emailKitProblems over the app's catalogue (ACCOUNT_EMAILS), strings and brand.json returns []; runs in the Worker and sends nothing"
1092
+ },
1093
+ {
1094
+ "id": "email.account.sign-in-code",
1095
+ "half": "runtime",
1096
+ "expect": "pass",
1097
+ "cost_hint_usd": 0.00035,
1098
+ "note": "renderTemplate account_sign_in_code with the app's brand.json, sent to Robert through the Gateway; check the logo, colours and code, and that there is no link. Not in the daily smoke run"
1099
+ },
1100
+ {
1101
+ "id": "email.hook.unsigned-refused",
1102
+ "half": "runtime",
1103
+ "expect": "refused_as_expected",
1104
+ "refusal": "unauthorised",
1105
+ "smoke": true,
1106
+ "cost_hint_usd": 0,
1107
+ "note": "POST /auth/send-email from outside with no signature answers 401, not a sign-in redirect: proves the Access path bypass and the handler. Needs no secret"
1108
+ },
1109
+ {
1110
+ "id": "email.hook.signed-refused-action",
1111
+ "half": "runtime",
1112
+ "expect": "refused_as_expected",
1113
+ "refusal": "refused",
1114
+ "cost_hint_usd": 0,
1115
+ "note": "A request signed with SEND_EMAIL_HOOK_SECRET for email_action_type recovery answers 422 and sends nothing; skipped while the Worker has no hook secret"
1116
+ },
1117
+ {
1118
+ "id": "email.brand.logo-public",
1119
+ "half": "runtime",
1120
+ "expect": "pass",
1121
+ "smoke": true,
1122
+ "cost_hint_usd": 0,
1123
+ "note": "GET brand.json's logo.url from outside with no sign-in answers 200 with an image content type"
1076
1124
  }
1077
1125
  ]
1078
1126
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mccaskie-labs/workbench-config",
3
- "version": "0.1.22",
3
+ "version": "0.1.23",
4
4
  "description": "Workbench app configuration: WORKBENCH_ENV, typed variables that fail by name, secrets that are never printed, and the capabilities manifest.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",