@heychunky/core 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/admin/apps.d.ts +50 -0
  2. package/dist/admin/apps.d.ts.map +1 -1
  3. package/dist/admin/apps.js +69 -2
  4. package/dist/admin/apps.js.map +1 -1
  5. package/dist/admin/index.d.ts +2 -0
  6. package/dist/admin/index.d.ts.map +1 -1
  7. package/dist/admin/index.js +2 -0
  8. package/dist/admin/index.js.map +1 -1
  9. package/dist/admin/migrations.d.ts +19 -0
  10. package/dist/admin/migrations.d.ts.map +1 -1
  11. package/dist/admin/migrations.js +27 -0
  12. package/dist/admin/migrations.js.map +1 -1
  13. package/dist/admin/orgs.d.ts +142 -0
  14. package/dist/admin/orgs.d.ts.map +1 -0
  15. package/dist/admin/orgs.js +166 -0
  16. package/dist/admin/orgs.js.map +1 -0
  17. package/dist/admin/provision.d.ts +10 -0
  18. package/dist/admin/provision.d.ts.map +1 -1
  19. package/dist/admin/provision.js +1 -1
  20. package/dist/admin/provision.js.map +1 -1
  21. package/dist/admin/register.d.ts +98 -0
  22. package/dist/admin/register.d.ts.map +1 -0
  23. package/dist/admin/register.js +191 -0
  24. package/dist/admin/register.js.map +1 -0
  25. package/dist/admin/run.d.ts.map +1 -1
  26. package/dist/admin/run.js +14 -1
  27. package/dist/admin/run.js.map +1 -1
  28. package/dist/admin/services/github.d.ts.map +1 -1
  29. package/dist/admin/services/github.js +15 -1
  30. package/dist/admin/services/github.js.map +1 -1
  31. package/dist/admin/services/vercel.d.ts +2 -0
  32. package/dist/admin/services/vercel.d.ts.map +1 -1
  33. package/dist/admin/services/vercel.js.map +1 -1
  34. package/dist/admin/users.d.ts +34 -0
  35. package/dist/admin/users.d.ts.map +1 -1
  36. package/dist/admin/users.js +45 -3
  37. package/dist/admin/users.js.map +1 -1
  38. package/dist/registry.d.ts +40 -0
  39. package/dist/registry.d.ts.map +1 -1
  40. package/dist/registry.js +27 -0
  41. package/dist/registry.js.map +1 -1
  42. package/dist/services/db.d.ts +16 -0
  43. package/dist/services/db.d.ts.map +1 -1
  44. package/dist/services/db.js +27 -22
  45. package/dist/services/db.js.map +1 -1
  46. package/package.json +3 -2
  47. package/register/0001-baseline/01-invite-requests.sql +11 -0
  48. package/register/0001-baseline/02-invite-requests-email-key.sql +1 -0
  49. package/register/0001-baseline/03-login-codes.sql +12 -0
  50. package/register/0001-baseline/04-login-codes-email-idx.sql +1 -0
  51. package/register/0001-baseline/05-notifications.sql +11 -0
  52. package/register/0001-baseline/06-notifications-unread-idx.sql +1 -0
  53. package/register/0001-baseline/07-users.sql +13 -0
  54. package/register/0001-baseline/08-users-email-key.sql +1 -0
  55. package/register/0001-baseline/09-users-one-superadmin.sql +1 -0
  56. package/register/0001-baseline/10-users-username-unique.sql +1 -0
  57. package/register/0001-baseline/11-api-tokens.sql +13 -0
  58. package/register/0001-baseline/12-apps.sql +14 -0
  59. package/register/0001-baseline/13-apps-name-key.sql +1 -0
  60. package/register/0001-baseline/14-apps-owner-idx.sql +1 -0
  61. package/register/0001-baseline/15-contexts.sql +9 -0
  62. package/register/0001-baseline/16-credit-ledger.sql +10 -0
  63. package/register/0001-baseline/17-credit-ledger-user.sql +1 -0
  64. package/register/0001-baseline/18-runs.sql +16 -0
  65. package/register/0001-baseline/19-sessions.sql +10 -0
  66. package/register/0001-baseline/20-sessions-user-idx.sql +1 -0
  67. package/register/0001-baseline/21-app-chunks.sql +7 -0
  68. package/register/0001-baseline/22-context-members.sql +10 -0
  69. package/register/0002-orgs/01-orgs.sql +14 -0
  70. package/register/0002-orgs/02-orgs-name-key.sql +1 -0
  71. package/register/0002-orgs/03-org-members.sql +10 -0
  72. package/register/0002-orgs/04-org-members-user-idx.sql +1 -0
  73. package/register/0002-orgs/05-apps-org-id.sql +1 -0
  74. package/register/0002-orgs/06-apps-org-idx.sql +1 -0
  75. package/register/0002-orgs/07-apps-org-name-key.sql +1 -0
  76. package/register/0002-orgs/08-credit-ledger-org-id.sql +1 -0
  77. package/register/0002-orgs/09-credit-ledger-org-idx.sql +1 -0
  78. package/register/0002-orgs/10-api-tokens-org-id.sql +1 -0
  79. package/register/0002-orgs/11-api-tokens-created-by.sql +1 -0
  80. package/register/0002-orgs/12-backfill-personal-orgs.sql +15 -0
  81. package/register/0002-orgs/13-backfill-org-members.sql +12 -0
  82. package/register/0002-orgs/14-backfill-apps-org.sql +14 -0
  83. package/register/0002-orgs/15-backfill-credit-ledger-org.sql +11 -0
  84. package/register/0002-orgs/16-backfill-api-tokens-org.sql +12 -0
  85. package/register/README.md +73 -0
@@ -1 +1 @@
1
- {"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../src/admin/services/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAoB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,WAAW,EAA0C,MAAM,yBAAyB,CAAC;AAErG,MAAM,IAAI,GAAG,wBAAwB,CAAC;AA8CtC,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,MAAM,KAAK,GAAgB,EAAE,KAAK,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAEjC,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE,CAC1B,CAAC,MAAM,OAAO,CAAgC,GAAG,IAAI,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE9F;;;;;;;OAOG;IACH,KAAK,UAAU,WAAW,CAAC,GAAW;QACpC,OAAO,WAAW,CAAC,GAAG,EAAE,MAAM,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACH,IAAI,IAA+B,CAAC;IACpC,KAAK,UAAU,MAAM;QACnB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,MAAM,OAAO,CAChC,GAAG,IAAI,yBAAyB,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,IAAI,SAAS,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH;;;;;;;;;;;;OAYG;IACH,KAAK,UAAU,aAAa,CAC1B,IAAY,EACZ,OAAqD,EAAE;QAEvD,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,OAAO,CAAgB,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBACvF,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM;gBACpB,IAAI,EAAE;oBACJ,IAAI;oBACJ,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;oBACnE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7E;aACF,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0EAA0E;YAC1E,qEAAqE;YACrE,yEAAyE;YACzE,yEAAyE;YACzE,qEAAqE;YACrE,iDAAiD;YACjD,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAChF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,IAAI,mDAAmD;oBAC/E,IAAI,GAAG,4DAA4D,CACtE,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,EAAE,SAAiB,EAAE,MAAe,EAAE,EAAE,CAC3D,CAAC,MAAM,OAAO,CACZ,GAAG,IAAI,gBAAgB,SAAS,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzF;;;;;;;;OAQG;IACH,KAAK,UAAU,MAAM,CACnB,SAAiB,EAAE,GAAW,EAAE,KAAa,EAAE,KAAY,EAC3D,OAAiD,EAAE;QAEnD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,uEAAuE;QACvE,+DAA+D;QAC/D,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAC5B,QAAQ,IAAI,KAAK;YACf,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,MAAM;YACnF,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACzE,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnG,IAAI,CAAC,CAAC,EAAE;gBAAE,MAAM,OAAO,CAAC,GAAG,IAAI,gBAAgB,SAAS,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,IAAI,iBAAiB,SAAS,OAAO,IAAI,EAAE,EAAE;YAC5D,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM;YACpB,IAAI,EAAE;gBACJ,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;gBAC1D,GAAG,CAAC,QAAQ,IAAI,KAAK;oBACnB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBAC5B,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC;aAC3D;SACF,CAAC,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,MAAM,cAAc,GAAG,KAAK,EAAE,SAAiB,EAAE,MAAe,EAAE,EAAE,CAClE,CAAC,MAAM,OAAO,CACZ,GAAG,IAAI,gBAAgB,SAAS,WAAW,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAClF,CAAC,CAAC,OAAO,CAAC;IAEb;;;;;;OAMG;IACH,KAAK,UAAU,SAAS,CACtB,SAAiB,EAAE,MAAc,EAAE,MAAe,EAAE,mBAA4B;QAEhF,MAAM,OAAO,GAAG,CAAC,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACzF,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,OAAO,MAAM,OAAO,CAClB,GAAG,IAAI,iBAAiB,SAAS,WAAW,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC/E;YACE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM;YACpB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;SAChF,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,UAAU,YAAY,CAAC,MAAc;QACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,GAAG,IAAI,eAAe,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAC7D,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QACvF,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;QACzE,kEAAkE;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,UAAU,MAAM,CACnB,IAAY,EACZ,IAAuF;QAEvF,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,MAAM,OAAO,CAClB,GAAG,IAAI,mBAAmB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,EAC7F;YACE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM;YACpB,IAAI,EAAE;gBACJ,IAAI;gBACJ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;aACxD;SACF,CACF,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,MAAM,OAAO,GAAG,KAAK,EAAE,SAAiB,EAAE,YAAoB,EAAE,MAAe,EAAE,EAAE,CACjF,MAAM,OAAO,CACX,GAAG,IAAI,iBAAiB,SAAS,YAAY,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC/F,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CACzB,CAAC;IAEJ,MAAM,OAAO,GAAG,CAAC,IAA+B,EAAE,IAAmB,EAAE,EAAE,CACvE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;IAE7D,MAAM,kBAAkB,GAAG,KAAK,EAAE,SAAiB,EAAE,MAAe,EAAE,EAAE,CACtE,CAAC,MAAM,OAAO,CACZ,GAAG,IAAI,gBAAgB,SAAS,uBAAuB,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAC9F,CAAC,CAAC,YAAY,CAAC;IAElB;;;;;;;;;;OAUG;IACH,KAAK,UAAU,uBAAuB,CACpC,SAAiB,EAAE,IAAY,EAAE,MAAe,EAAE,aAA6B;QAE/E,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,MAAM,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACzF,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChF,OAAO,MAAM,OAAO,CAClB,GAAG,IAAI,gBAAgB,SAAS,wBAAwB,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,EACzE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,OAAO,CAClB,GAAG,IAAI,gBAAgB,SAAS,uBAAuB,IAAI,EAAE,EAC7D,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,UAAU,aAAa,CAC1B,SAAiB,EAAE,MAA0B,EAAE,IAAyB;QAExE,IAAI,CAAC,IAAI,EAAE,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,uBAAuB,CAAC,CAAC;QACtG,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,CAAC,GAAG,IAAI,gBAAgB,SAAS,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO;QACL,QAAQ;QACR,WAAW;QACX,aAAa;QACb,MAAM;QACN,aAAa;QACb,cAAc;QACd,SAAS;QACT,YAAY;QACZ,MAAM;QACN,OAAO;QACP,OAAO;QACP,kBAAkB;QAClB,uBAAuB;QACvB,MAAM;QACN,WAAW,EAAE,KAAK,EAAE,SAAkB,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CACnD,CAAC,MAAM,OAAO,CACZ,GAAG,IAAI,yBAAyB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW;QAEzG,KAAK,CAAC,MAAM;YACV,OAAO,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBAChC,MAAM,CAAC,GAAG,MAAM,QAAQ,EAAE,CAAC;gBAC3B,OAAO,GAAG,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,MAAM;YACV,OAAO,WAAW,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACtC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,MAAM,OAAO,CAE/B,GAAG,IAAI,yBAAyB,EAAE,CAAC,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;gBAC/D,OAAO;oBACL,QAAQ,EAAE,QAAiB;oBAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC1E,GAAG,EAAE,KAAK;wBACR,CAAC,CAAC;4BACE,mCAAmC,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;4BACxE,yCAAyC;4BACzC,8CAA8C;4BAC9C,8CAA8C;yBAC/C;wBACH,CAAC,CAAC,CAAC,kCAAkC,CAAC;oBACxC,KAAK,EAAE;wBACL,UAAU,CAAC,CAAC,IAAI,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;wBAChF,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;wBAC/F,2EAA2E;qBAC5E;iBACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../src/admin/services/vercel.ts"],"names":[],"mappings":"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"}
@@ -13,11 +13,25 @@
13
13
  */
14
14
  import type { Register } from "./master.ts";
15
15
  export type Role = "superadmin" | "developer";
16
+ /**
17
+ * The plans an account can be on.
18
+ *
19
+ * The vocabulary lives here because this file owns the column. What each plan
20
+ * actually buys — price, credits, seats — is the app's catalogue, which reads
21
+ * these keys rather than declaring its own: two lists would drift, and the one
22
+ * that drifted would be the one nobody checked against the database.
23
+ *
24
+ * `super` is not for sale. It is what runs the factory.
25
+ */
26
+ export declare const PLAN_KEYS: readonly ["free", "pro", "team", "enterprise", "super"];
27
+ export type PlanKey = (typeof PLAN_KEYS)[number];
16
28
  export interface User {
17
29
  id: string;
18
30
  email: string;
19
31
  name: string | null;
20
32
  role: Role;
33
+ /** Null until somebody is put on one, which `planFor` reads as free. */
34
+ plan: PlanKey | null;
21
35
  created_at: string;
22
36
  }
23
37
  /**
@@ -55,4 +69,24 @@ export declare function inviteUser(invite: {
55
69
  }, register: Register): Promise<User>;
56
70
  /** Everyone with an account. Never their sessions or codes. */
57
71
  export declare function listUsers(register: Register): Promise<User[]>;
72
+ /** Refused because the plan named is not one that exists. */
73
+ export declare class UnknownPlanError extends Error {
74
+ constructor(plan: string);
75
+ }
76
+ /**
77
+ * Put an account on a plan.
78
+ *
79
+ * Plans are assigned, never self-served — the same reason accounts are. What a
80
+ * plan changes is how much of the factory's money somebody may spend, so it is
81
+ * a decision taken by a person rather than a form filled in by one.
82
+ *
83
+ * The key is checked against `PLAN_KEYS` rather than left to the column,
84
+ * because Postgres will happily store `enterprize` and every limit check
85
+ * downstream would then read it as the free plan — a typo becoming a silent
86
+ * downgrade rather than an error.
87
+ *
88
+ * An address with no account throws, rather than reporting nothing changed. A
89
+ * plan set on a user who does not exist is always a mistake worth hearing.
90
+ */
91
+ export declare function setPlan(email: string, plan: string, register: Register): Promise<User>;
58
92
  //# sourceMappingURL=users.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/admin/users.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,IAAI,GAAG,YAAY,GAAG,WAAW,CAAC;AAE9C,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAM3B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,KAAK,EAAE,MAAM;CAI1B;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,EACjE,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAMnE"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/admin/users.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,IAAI,GAAG,YAAY,GAAG,WAAW,CAAC;AAE9C;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,yDAA0D,CAAC;AAEjF,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,wEAAwE;IACxE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAM3B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,KAAK,EAAE,MAAM;CAI1B;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,EACjE,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAMnE;AAED,6DAA6D;AAC7D,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,IAAI,EAAE,MAAM;CAIzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -1,3 +1,14 @@
1
+ /**
2
+ * The plans an account can be on.
3
+ *
4
+ * The vocabulary lives here because this file owns the column. What each plan
5
+ * actually buys — price, credits, seats — is the app's catalogue, which reads
6
+ * these keys rather than declaring its own: two lists would drift, and the one
7
+ * that drifted would be the one nobody checked against the database.
8
+ *
9
+ * `super` is not for sale. It is what runs the factory.
10
+ */
11
+ export const PLAN_KEYS = ["free", "pro", "team", "enterprise", "super"];
1
12
  /**
2
13
  * The account an address belongs to, if any.
3
14
  *
@@ -16,7 +27,7 @@
16
27
  * that confirms who does and does not have an account here.
17
28
  */
18
29
  export async function userByEmail(email, register) {
19
- const { rows } = await register.query("select id, email, name, role, created_at from users where lower(email) = lower($1)", [email]);
30
+ const { rows } = await register.query("select id, email, name, role, plan, created_at from users where lower(email) = lower($1)", [email]);
20
31
  return rows[0];
21
32
  }
22
33
  export class DuplicateUserError extends Error {
@@ -39,7 +50,7 @@ export async function inviteUser(invite, register) {
39
50
  const conn = register;
40
51
  const { rows } = await conn.write(`insert into users (email, name, role) values ($1, $2, $3)
41
52
  on conflict do nothing
42
- returning id, email, name, role, created_at`, [email, invite.name ?? null, invite.role ?? "developer"]);
53
+ returning id, email, name, role, plan, created_at`, [email, invite.name ?? null, invite.role ?? "developer"]);
43
54
  // `on conflict do nothing` returns nothing when the address is taken. Saying
44
55
  // so is better than a second account or a silent no-op.
45
56
  if (!rows.length)
@@ -49,7 +60,38 @@ export async function inviteUser(invite, register) {
49
60
  /** Everyone with an account. Never their sessions or codes. */
50
61
  export async function listUsers(register) {
51
62
  const conn = register;
52
- const { rows } = await conn.query("select id, email, name, role, created_at from users order by created_at");
63
+ const { rows } = await conn.query("select id, email, name, role, plan, created_at from users order by created_at");
53
64
  return rows;
54
65
  }
66
+ /** Refused because the plan named is not one that exists. */
67
+ export class UnknownPlanError extends Error {
68
+ constructor(plan) {
69
+ super(`No such plan: ${plan}. One of ${PLAN_KEYS.join(", ")}.`);
70
+ this.name = "UnknownPlanError";
71
+ }
72
+ }
73
+ /**
74
+ * Put an account on a plan.
75
+ *
76
+ * Plans are assigned, never self-served — the same reason accounts are. What a
77
+ * plan changes is how much of the factory's money somebody may spend, so it is
78
+ * a decision taken by a person rather than a form filled in by one.
79
+ *
80
+ * The key is checked against `PLAN_KEYS` rather than left to the column,
81
+ * because Postgres will happily store `enterprize` and every limit check
82
+ * downstream would then read it as the free plan — a typo becoming a silent
83
+ * downgrade rather than an error.
84
+ *
85
+ * An address with no account throws, rather than reporting nothing changed. A
86
+ * plan set on a user who does not exist is always a mistake worth hearing.
87
+ */
88
+ export async function setPlan(email, plan, register) {
89
+ if (!PLAN_KEYS.includes(plan))
90
+ throw new UnknownPlanError(plan);
91
+ const { rows } = await register.write(`update users set plan = $2 where lower(email) = lower($1)
92
+ returning id, email, name, role, plan, created_at`, [email.trim(), plan]);
93
+ if (!rows.length)
94
+ throw new Error(`No account for ${email.trim()}`);
95
+ return rows[0];
96
+ }
55
97
  //# sourceMappingURL=users.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/admin/users.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,QAAkB;IAElB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,oFAAoF,EACpF,CAAC,KAAK,CAAC,CACR,CAAC;IACF,OAAO,IAAI,CAAC,CAAC,CAAgC,CAAC;AAChD,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,KAAa;QACvB,KAAK,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAiE,EACjE,QAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IAE5E,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B;;iDAE6C,EAC7C,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,CACzD,CAAC;IACF,6EAA6E;IAC7E,wDAAwD;IACxD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC,CAAC,CAAoB,CAAC;AACpC,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAkB;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B,yEAAyE,CAC1E,CAAC;IACF,OAAO,IAAyB,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/admin/users.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAU,CAAC;AAcjF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,QAAkB;IAElB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,0FAA0F,EAC1F,CAAC,KAAK,CAAC,CACR,CAAC;IACF,OAAO,IAAI,CAAC,CAAC,CAAgC,CAAC;AAChD,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,KAAa;QACvB,KAAK,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAiE,EACjE,QAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IAE5E,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B;;uDAEmD,EACnD,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,CACzD,CAAC;IACF,6EAA6E;IAC7E,wDAAwD;IACxD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC,CAAC,CAAoB,CAAC;AACpC,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAkB;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B,+EAA+E,CAChF,CAAC;IACF,OAAO,IAAyB,CAAC;AACnC,CAAC;AAED,6DAA6D;AAC7D,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,IAAY;QACtB,KAAK,CAAC,iBAAiB,IAAI,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,KAAa,EACb,IAAY,EACZ,QAAkB;IAElB,IAAI,CAAE,SAA+B,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC;uDACmD,EACnD,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CACrB,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC,CAAC,CAAoB,CAAC;AACpC,CAAC"}
@@ -22,6 +22,24 @@ export type Gate =
22
22
  * skill file.
23
23
  */
24
24
  | "danger";
25
+ /**
26
+ * What a caller must have paid for. A ladder, not a set — entitlement
27
+ * accumulates, so the check is one comparison rather than a lookup.
28
+ *
29
+ * Distinct from `Tier`, which asks *which credential* an action reaches for.
30
+ * This asks *who is allowed to ask*. The two are unrelated: an `app`-tier read
31
+ * still needs an account behind it.
32
+ */
33
+ export declare const PLAN: {
34
+ /** No account at all. Nothing is stored; nothing is spent. */
35
+ readonly anonymous: 0;
36
+ /** Signed in, paying nothing. */
37
+ readonly basic: 1;
38
+ readonly pro: 2;
39
+ readonly team: 3;
40
+ readonly enterprise: 4;
41
+ };
42
+ export type Plan = (typeof PLAN)[keyof typeof PLAN];
25
43
  /** Which credential an action reaches for. */
26
44
  export type Tier =
27
45
  /** Factory keys. The operator's side. */
@@ -43,9 +61,31 @@ export interface Action {
43
61
  idempotent: boolean;
44
62
  /** True when running it costs money. */
45
63
  spends?: boolean;
64
+ /**
65
+ * The lowest plan that may run this.
66
+ *
67
+ * Optional, and absence means `PLAN.pro` — deny by default. An action added
68
+ * without a thought about entitlement must not become accidentally free, and
69
+ * every action in this file today reaches a factory credential, so `pro` is
70
+ * the honest floor rather than a placeholder.
71
+ *
72
+ * Only something deliberately given away carries a lower value, and the
73
+ * suite checks that such an action spends nothing.
74
+ */
75
+ plan?: Plan;
46
76
  /** One line, for `--help` and the access report. */
47
77
  summary: string;
48
78
  }
79
+ /** The plan an action requires, with the deny-by-default applied. */
80
+ export declare const planOf: (a: Action) => Plan;
81
+ /**
82
+ * Whether a caller may run an action.
83
+ *
84
+ * Enforced twice, like the gate: the CLI refuses before dispatch so a run
85
+ * cannot stop half-done, and the client refuses regardless of what the CLI
86
+ * decided. Calling the Core directly is not a way past a plan.
87
+ */
88
+ export declare const permits: (caller: Plan, a: Action) => boolean;
49
89
  export declare const ACTIONS: Action[];
50
90
  /** Every action for a service, in declaration order. */
51
91
  export declare function actionsFor(service: string): Action[];
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2DAA2D;AAC3D,MAAM,MAAM,IAAI;AACd,mDAAmD;AACjD,MAAM;AACR,mDAAmD;GACjD,SAAS;AACX;;;;;GAKG;GACD,QAAQ,CAAC;AAEb,8CAA8C;AAC9C,MAAM,MAAM,IAAI;AACd,yCAAyC;AACvC,OAAO;AACT,sDAAsD;GACpD,KAAK,CAAC;AAEV,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,eAAO,MAAM,OAAO,EAAE,MAAM,EAgH3B,CAAC;AAEF,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpD;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9E;AAED,gFAAgF;AAChF,wBAAgB,QAAQ,IAAI,MAAM,EAAE,CAEnC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,IAAI,MAAM,EAAE,CAEpC;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAElE"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2DAA2D;AAC3D,MAAM,MAAM,IAAI;AACd,mDAAmD;AACjD,MAAM;AACR,mDAAmD;GACjD,SAAS;AACX;;;;;GAKG;GACD,QAAQ,CAAC;AAEb;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI;IACf,8DAA8D;;IAE9D,iCAAiC;;;;;CAKzB,CAAC;AAEX,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,OAAO,IAAI,CAAC,CAAC;AAEpD,8CAA8C;AAC9C,MAAM,MAAM,IAAI;AACd,yCAAyC;AACvC,OAAO;AACT,sDAAsD;GACpD,KAAK,CAAC;AAEV,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,qEAAqE;AACrE,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,KAAG,IAA0B,CAAC;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,IAAI,EAAE,GAAG,MAAM,KAAG,OAA8B,CAAC;AAEjF,eAAO,MAAM,OAAO,EAAE,MAAM,EAgH3B,CAAC;AAEF,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpD;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9E;AAED,gFAAgF;AAChF,wBAAgB,QAAQ,IAAI,MAAM,EAAE,CAEnC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,IAAI,MAAM,EAAE,CAEpC;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAElE"}
package/dist/registry.js CHANGED
@@ -9,7 +9,34 @@
9
9
  * The gate is data, not a judgement made at runtime. A whole policy you can
10
10
  * read in one file beats one scattered across thirty call sites.
11
11
  */
12
+ /**
13
+ * What a caller must have paid for. A ladder, not a set — entitlement
14
+ * accumulates, so the check is one comparison rather than a lookup.
15
+ *
16
+ * Distinct from `Tier`, which asks *which credential* an action reaches for.
17
+ * This asks *who is allowed to ask*. The two are unrelated: an `app`-tier read
18
+ * still needs an account behind it.
19
+ */
20
+ export const PLAN = {
21
+ /** No account at all. Nothing is stored; nothing is spent. */
22
+ anonymous: 0,
23
+ /** Signed in, paying nothing. */
24
+ basic: 1,
25
+ pro: 2,
26
+ team: 3,
27
+ enterprise: 4,
28
+ };
12
29
  const A = (a) => a;
30
+ /** The plan an action requires, with the deny-by-default applied. */
31
+ export const planOf = (a) => a.plan ?? PLAN.pro;
32
+ /**
33
+ * Whether a caller may run an action.
34
+ *
35
+ * Enforced twice, like the gate: the CLI refuses before dispatch so a run
36
+ * cannot stop half-done, and the client refuses regardless of what the CLI
37
+ * decided. Calling the Core directly is not a way past a plan.
38
+ */
39
+ export const permits = (caller, a) => caller >= planOf(a);
13
40
  export const ACTIONS = [
14
41
  // ─── github ────────────────────────────────────────────────────────────────
15
42
  A({ service: "github", action: "list-repos", tier: "admin", gate: "none", idempotent: true,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,22 @@ export interface Column {
7
7
  type: string;
8
8
  nullable: boolean;
9
9
  }
10
+ /**
11
+ * Reject a statement that is really several.
12
+ *
13
+ * The endpoint runs one query per request. Sent two separated by a semicolon,
14
+ * it runs one of them and answers as though all was well: a `delete` followed
15
+ * by a `delete` reported "1 row affected" while the first one never happened.
16
+ * Silence is the problem — an error would have been fine. Semicolons inside a
17
+ * string literal or a dollar-quoted body are left alone, since those are one
18
+ * statement.
19
+ *
20
+ * At module scope rather than inside `db()` because it is the rule every
21
+ * migration file is written to, and a rule the suite can assert is one that
22
+ * cannot quietly stop being true. The alternative — a second copy of this
23
+ * regular expression in a test — is how the two drift.
24
+ */
25
+ export declare function refuseMultiple(sql: string): void;
10
26
  export declare function db(connectionString: string): {
11
27
  query: (sql: string, params?: unknown[]) => Promise<Rows>;
12
28
  write: (sql: string, params?: unknown[]) => Promise<Rows>;
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,EAAE,CAAC,gBAAgB,EAAE,MAAM;iBAuCf,MAAM,WAAU,OAAO,EAAE,KAAQ,OAAO,CAAC,IAAI,CAAC;iBAoC9C,MAAM,WAAU,OAAO,EAAE,KAAQ,OAAO,CAAC,IAAI,CAAC;cAatD,OAAO,CAAC,MAAM,EAAE,CAAC;mBAOZ,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;EAelD"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAahD;AAED,wBAAgB,EAAE,CAAC,gBAAgB,EAAE,MAAM;iBAuCf,MAAM,WAAU,OAAO,EAAE,KAAQ,OAAO,CAAC,IAAI,CAAC;iBAW9C,MAAM,WAAU,OAAO,EAAE,KAAQ,OAAO,CAAC,IAAI,CAAC;cAatD,OAAO,CAAC,MAAM,EAAE,CAAC;mBAOZ,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;EAelD"}
@@ -18,6 +18,33 @@
18
18
  * `fetch`.
19
19
  */
20
20
  import { errorFor } from "../http/errors.js";
21
+ /**
22
+ * Reject a statement that is really several.
23
+ *
24
+ * The endpoint runs one query per request. Sent two separated by a semicolon,
25
+ * it runs one of them and answers as though all was well: a `delete` followed
26
+ * by a `delete` reported "1 row affected" while the first one never happened.
27
+ * Silence is the problem — an error would have been fine. Semicolons inside a
28
+ * string literal or a dollar-quoted body are left alone, since those are one
29
+ * statement.
30
+ *
31
+ * At module scope rather than inside `db()` because it is the rule every
32
+ * migration file is written to, and a rule the suite can assert is one that
33
+ * cannot quietly stop being true. The alternative — a second copy of this
34
+ * regular expression in a test — is how the two drift.
35
+ */
36
+ export function refuseMultiple(sql) {
37
+ const stripped = sql
38
+ .replace(/\$\$[\s\S]*?\$\$/g, "")
39
+ .replace(/'(?:[^']|'')*'/g, "")
40
+ .replace(/"(?:[^"]|"")*"/g, "")
41
+ .replace(/--[^\n]*/g, "")
42
+ .replace(/\/\*[\s\S]*?\*\//g, "");
43
+ if (/;\s*\S/.test(stripped)) {
44
+ throw new Error("One statement at a time. This runs a single query per request, so a " +
45
+ "second one after a semicolon would be dropped without saying so.");
46
+ }
47
+ }
21
48
  export function db(connectionString) {
22
49
  let host;
23
50
  try {
@@ -59,28 +86,6 @@ export function db(connectionString) {
59
86
  const first = body.results?.[0];
60
87
  return { rows: first?.rows ?? [], rowCount: first?.rowCount ?? 0 };
61
88
  }
62
- /**
63
- * Reject a statement that is really several.
64
- *
65
- * The endpoint runs one query per request. Sent two separated by a
66
- * semicolon, it runs one of them and answers as though all was well: a
67
- * `delete` followed by a `delete` reported "1 row affected" while the first
68
- * one never happened. Silence is the problem — an error would have been
69
- * fine. Semicolons inside a string literal or a dollar-quoted body are left
70
- * alone, since those are one statement.
71
- */
72
- function refuseMultiple(sql) {
73
- const stripped = sql
74
- .replace(/\$\$[\s\S]*?\$\$/g, "")
75
- .replace(/'(?:[^']|'')*'/g, "")
76
- .replace(/"(?:[^"]|"")*"/g, "")
77
- .replace(/--[^\n]*/g, "")
78
- .replace(/\/\*[\s\S]*?\*\//g, "");
79
- if (/;\s*\S/.test(stripped)) {
80
- throw new Error("One statement at a time. This runs a single query per request, so a " +
81
- "second one after a semicolon would be dropped without saying so.");
82
- }
83
- }
84
89
  /** SQL that may change data. Gated in the registry, not here. */
85
90
  async function write(sql, params = []) {
86
91
  refuseMultiple(sql);
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heychunky/core",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "The engine the Chunky CLI, worker and apps run on.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,7 +15,8 @@
15
15
  }
16
16
  },
17
17
  "files": [
18
- "dist"
18
+ "dist",
19
+ "register"
19
20
  ],
20
21
  "scripts": {
21
22
  "build": "rm -rf dist && tsc -p tsconfig.build.json",
@@ -0,0 +1,11 @@
1
+ create table invite_requests (
2
+ id uuid default gen_random_uuid() not null,
3
+ email text not null,
4
+ name text,
5
+ note text,
6
+ created_at timestamptz default now() not null,
7
+ invited_at timestamptz,
8
+ asks integer default 1 not null,
9
+ last_asked_at timestamptz default now() not null,
10
+ constraint invite_requests_pkey PRIMARY KEY (id)
11
+ );
@@ -0,0 +1 @@
1
+ CREATE UNIQUE INDEX invite_requests_email_key ON public.invite_requests USING btree (lower(email));
@@ -0,0 +1,12 @@
1
+ create table login_codes (
2
+ id uuid default gen_random_uuid() not null,
3
+ email text not null,
4
+ kind text not null,
5
+ code_hash text not null,
6
+ expires_at timestamptz not null,
7
+ consumed_at timestamptz,
8
+ attempts integer default 0 not null,
9
+ created_at timestamptz default now() not null,
10
+ constraint login_codes_pkey PRIMARY KEY (id),
11
+ constraint login_codes_kind_check CHECK ((kind = ANY (ARRAY['link'::text, 'pin'::text])))
12
+ );
@@ -0,0 +1 @@
1
+ CREATE INDEX login_codes_email_idx ON public.login_codes USING btree (lower(email), created_at DESC);
@@ -0,0 +1,11 @@
1
+ create table notifications (
2
+ id uuid default gen_random_uuid() not null,
3
+ kind text not null,
4
+ subject text not null,
5
+ detail jsonb,
6
+ created_at timestamptz default now() not null,
7
+ sent_at timestamptz,
8
+ send_error text,
9
+ read_at timestamptz,
10
+ constraint notifications_pkey PRIMARY KEY (id)
11
+ );
@@ -0,0 +1 @@
1
+ CREATE INDEX notifications_unread_idx ON public.notifications USING btree (created_at DESC) WHERE (read_at IS NULL);
@@ -0,0 +1,13 @@
1
+ create table users (
2
+ id uuid default gen_random_uuid() not null,
3
+ email text not null,
4
+ name text,
5
+ role text default 'developer'::text not null,
6
+ created_at timestamptz default now() not null,
7
+ app_limit integer default 3,
8
+ username text,
9
+ plan text default 'free'::text not null,
10
+ constraint users_pkey PRIMARY KEY (id),
11
+ constraint users_app_limit_check CHECK ((app_limit >= 0)),
12
+ constraint users_role_check CHECK ((role = ANY (ARRAY['superadmin'::text, 'developer'::text])))
13
+ );
@@ -0,0 +1 @@
1
+ CREATE UNIQUE INDEX users_email_key ON public.users USING btree (lower(email));
@@ -0,0 +1 @@
1
+ CREATE UNIQUE INDEX users_one_superadmin ON public.users USING btree (role) WHERE (role = 'superadmin'::text);
@@ -0,0 +1 @@
1
+ CREATE UNIQUE INDEX users_username_unique ON public.users USING btree (lower(username));
@@ -0,0 +1,13 @@
1
+ create table api_tokens (
2
+ id uuid default gen_random_uuid() not null,
3
+ user_id uuid not null,
4
+ name text not null,
5
+ token_hash text not null,
6
+ prefix text not null,
7
+ created_at timestamptz default now() not null,
8
+ last_used_at timestamptz,
9
+ revoked_at timestamptz,
10
+ constraint api_tokens_token_hash_key UNIQUE (token_hash),
11
+ constraint api_tokens_pkey PRIMARY KEY (id),
12
+ constraint api_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
13
+ );
@@ -0,0 +1,14 @@
1
+ create table apps (
2
+ id uuid default gen_random_uuid() not null,
3
+ name text not null,
4
+ owner_id uuid not null,
5
+ org text,
6
+ repo text,
7
+ vercel_project text,
8
+ neon_project text,
9
+ created_at timestamptz default now() not null,
10
+ provisioned jsonb,
11
+ theme text,
12
+ constraint apps_pkey PRIMARY KEY (id),
13
+ constraint apps_owner_id_fkey FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE RESTRICT
14
+ );
@@ -0,0 +1 @@
1
+ CREATE UNIQUE INDEX apps_name_key ON public.apps USING btree (lower(name));
@@ -0,0 +1 @@
1
+ CREATE INDEX apps_owner_idx ON public.apps USING btree (owner_id);
@@ -0,0 +1,9 @@
1
+ create table contexts (
2
+ name text not null,
3
+ kind text default 'user'::text not null,
4
+ owner_id uuid not null,
5
+ created_at timestamptz default now() not null,
6
+ constraint contexts_pkey PRIMARY KEY (name),
7
+ constraint contexts_owner_id_fkey FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE,
8
+ constraint contexts_kind_check CHECK ((kind = ANY (ARRAY['user'::text, 'org'::text])))
9
+ );
@@ -0,0 +1,10 @@
1
+ create table credit_ledger (
2
+ id uuid default gen_random_uuid() not null,
3
+ user_id uuid not null,
4
+ delta integer not null,
5
+ reason text not null,
6
+ ref text,
7
+ created_at timestamptz default now() not null,
8
+ constraint credit_ledger_pkey PRIMARY KEY (id),
9
+ constraint credit_ledger_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
10
+ );
@@ -0,0 +1 @@
1
+ CREATE INDEX credit_ledger_user ON public.credit_ledger USING btree (user_id, created_at DESC);
@@ -0,0 +1,16 @@
1
+ create table runs (
2
+ id uuid not null,
3
+ repo text not null,
4
+ app_id uuid,
5
+ operator_id uuid not null,
6
+ source text not null,
7
+ title text,
8
+ steps jsonb default '[]'::jsonb not null,
9
+ cost numeric,
10
+ outcome text default 'running'::text not null,
11
+ created_at timestamptz default now() not null,
12
+ finished_at timestamptz,
13
+ constraint runs_pkey PRIMARY KEY (id),
14
+ constraint runs_app_id_fkey FOREIGN KEY (app_id) REFERENCES apps(id) ON DELETE SET NULL,
15
+ constraint runs_operator_id_fkey FOREIGN KEY (operator_id) REFERENCES users(id)
16
+ );
@@ -0,0 +1,10 @@
1
+ create table sessions (
2
+ id uuid default gen_random_uuid() not null,
3
+ user_id uuid not null,
4
+ token_hash text not null,
5
+ expires_at timestamptz not null,
6
+ created_at timestamptz default now() not null,
7
+ constraint sessions_token_hash_key UNIQUE (token_hash),
8
+ constraint sessions_pkey PRIMARY KEY (id),
9
+ constraint sessions_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
10
+ );
@@ -0,0 +1 @@
1
+ CREATE INDEX sessions_user_idx ON public.sessions USING btree (user_id);