@specific.dev/cli 0.1.136 → 0.1.137

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 (68) hide show
  1. package/dist/admin/404/index.html +1 -1
  2. package/dist/admin/404.html +1 -1
  3. package/dist/admin/__next.!KGRlZmF1bHQp.__PAGE__.txt +1 -1
  4. package/dist/admin/__next.!KGRlZmF1bHQp.txt +1 -1
  5. package/dist/admin/__next._full.txt +1 -1
  6. package/dist/admin/__next._head.txt +1 -1
  7. package/dist/admin/__next._index.txt +1 -1
  8. package/dist/admin/__next._tree.txt +1 -1
  9. package/dist/admin/_not-found/__next._full.txt +1 -1
  10. package/dist/admin/_not-found/__next._head.txt +1 -1
  11. package/dist/admin/_not-found/__next._index.txt +1 -1
  12. package/dist/admin/_not-found/__next._not-found.__PAGE__.txt +1 -1
  13. package/dist/admin/_not-found/__next._not-found.txt +1 -1
  14. package/dist/admin/_not-found/__next._tree.txt +1 -1
  15. package/dist/admin/_not-found/index.html +1 -1
  16. package/dist/admin/_not-found/index.txt +1 -1
  17. package/dist/admin/databases/__next.!KGRlZmF1bHQp.databases.__PAGE__.txt +1 -1
  18. package/dist/admin/databases/__next.!KGRlZmF1bHQp.databases.txt +1 -1
  19. package/dist/admin/databases/__next.!KGRlZmF1bHQp.txt +1 -1
  20. package/dist/admin/databases/__next._full.txt +1 -1
  21. package/dist/admin/databases/__next._head.txt +1 -1
  22. package/dist/admin/databases/__next._index.txt +1 -1
  23. package/dist/admin/databases/__next._tree.txt +1 -1
  24. package/dist/admin/databases/index.html +1 -1
  25. package/dist/admin/databases/index.txt +1 -1
  26. package/dist/admin/fullscreen/__next._full.txt +1 -1
  27. package/dist/admin/fullscreen/__next._head.txt +1 -1
  28. package/dist/admin/fullscreen/__next._index.txt +1 -1
  29. package/dist/admin/fullscreen/__next._tree.txt +1 -1
  30. package/dist/admin/fullscreen/__next.fullscreen.__PAGE__.txt +1 -1
  31. package/dist/admin/fullscreen/__next.fullscreen.txt +1 -1
  32. package/dist/admin/fullscreen/databases/__next._full.txt +1 -1
  33. package/dist/admin/fullscreen/databases/__next._head.txt +1 -1
  34. package/dist/admin/fullscreen/databases/__next._index.txt +1 -1
  35. package/dist/admin/fullscreen/databases/__next._tree.txt +1 -1
  36. package/dist/admin/fullscreen/databases/__next.fullscreen.databases.__PAGE__.txt +1 -1
  37. package/dist/admin/fullscreen/databases/__next.fullscreen.databases.txt +1 -1
  38. package/dist/admin/fullscreen/databases/__next.fullscreen.txt +1 -1
  39. package/dist/admin/fullscreen/databases/index.html +1 -1
  40. package/dist/admin/fullscreen/databases/index.txt +1 -1
  41. package/dist/admin/fullscreen/index.html +1 -1
  42. package/dist/admin/fullscreen/index.txt +1 -1
  43. package/dist/admin/index.html +1 -1
  44. package/dist/admin/index.txt +1 -1
  45. package/dist/admin/mail/__next.!KGRlZmF1bHQp.mail.__PAGE__.txt +1 -1
  46. package/dist/admin/mail/__next.!KGRlZmF1bHQp.mail.txt +1 -1
  47. package/dist/admin/mail/__next.!KGRlZmF1bHQp.txt +1 -1
  48. package/dist/admin/mail/__next._full.txt +1 -1
  49. package/dist/admin/mail/__next._head.txt +1 -1
  50. package/dist/admin/mail/__next._index.txt +1 -1
  51. package/dist/admin/mail/__next._tree.txt +1 -1
  52. package/dist/admin/mail/index.html +1 -1
  53. package/dist/admin/mail/index.txt +1 -1
  54. package/dist/admin/workflows/__next.!KGRlZmF1bHQp.txt +1 -1
  55. package/dist/admin/workflows/__next.!KGRlZmF1bHQp.workflows.__PAGE__.txt +1 -1
  56. package/dist/admin/workflows/__next.!KGRlZmF1bHQp.workflows.txt +1 -1
  57. package/dist/admin/workflows/__next._full.txt +1 -1
  58. package/dist/admin/workflows/__next._head.txt +1 -1
  59. package/dist/admin/workflows/__next._index.txt +1 -1
  60. package/dist/admin/workflows/__next._tree.txt +1 -1
  61. package/dist/admin/workflows/index.html +1 -1
  62. package/dist/admin/workflows/index.txt +1 -1
  63. package/dist/cli.js +7 -4
  64. package/dist/docs/migrations/supabase.md +10 -2
  65. package/package.json +1 -1
  66. /package/dist/admin/_next/static/{6ZZzob2EI7lj4cdEYlqgi → 0eRIjnMtgmLVz8sGgvDtH}/_buildManifest.js +0 -0
  67. /package/dist/admin/_next/static/{6ZZzob2EI7lj4cdEYlqgi → 0eRIjnMtgmLVz8sGgvDtH}/_clientMiddlewareManifest.json +0 -0
  68. /package/dist/admin/_next/static/{6ZZzob2EI7lj4cdEYlqgi → 0eRIjnMtgmLVz8sGgvDtH}/_ssgManifest.js +0 -0
package/dist/cli.js CHANGED
@@ -369718,7 +369718,10 @@ async function saveLocalConfig(name, value) {
369718
369718
  function appendSearchPathToUrl(baseUrl, searchPath) {
369719
369719
  const url = new URL(baseUrl);
369720
369720
  url.searchParams.set("options", `-c search_path=${searchPath},public`);
369721
- return url.toString();
369721
+ const str = url.toString();
369722
+ const queryStart = str.indexOf("?");
369723
+ if (queryStart === -1) return str;
369724
+ return str.slice(0, queryStart) + str.slice(queryStart).replace(/\+/g, "%20");
369722
369725
  }
369723
369726
  var MissingSecretError = class extends Error {
369724
369727
  constructor(secretName) {
@@ -373718,7 +373721,7 @@ function trackEvent(event, properties) {
373718
373721
  event,
373719
373722
  properties: {
373720
373723
  ...properties,
373721
- cli_version: "0.1.136",
373724
+ cli_version: "0.1.137",
373722
373725
  platform: process.platform,
373723
373726
  node_version: process.version,
373724
373727
  project_id: getProjectId()
@@ -377824,7 +377827,7 @@ function compareVersions(a, b) {
377824
377827
  return 0;
377825
377828
  }
377826
377829
  async function checkForUpdate() {
377827
- const currentVersion = "0.1.136";
377830
+ const currentVersion = "0.1.137";
377828
377831
  const response = await fetch(`${BINARIES_BASE_URL}/latest?t=${Date.now()}`);
377829
377832
  if (!response.ok) {
377830
377833
  throw new Error(`Failed to check for updates: HTTP ${response.status}`);
@@ -378339,7 +378342,7 @@ function friendlyErrorMessage(raw) {
378339
378342
  var program = new Command();
378340
378343
  var env = "production";
378341
378344
  var envLabel = env !== "production" ? `[${env.toUpperCase()}] ` : "";
378342
- program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.136").enablePositionalOptions();
378345
+ program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.137").enablePositionalOptions();
378343
378346
  program.command("init").description("Initialize project for use with a coding agent").option("--agent <name...>", "Agents to configure (cursor, claude, codex, other)").addHelpText("after", `
378344
378347
  Examples:
378345
378348
  $ specific init
@@ -45,11 +45,19 @@ Supabase Realtime can be replace with the sync engine available in Specific. See
45
45
 
46
46
  ## Queues
47
47
 
48
- There is currently no equivalent to Supabase Queues available in Specific. It will be coming soon. Tell the user to reach out to fabian@specific.dev if you have a need for this.
48
+ Replace Supabase Queues with a [Temporal](/temporal) workflow engine in Specific. Define a `temporal` block in `specific.hcl` and run a worker service that processes queued work as Temporal workflows or signals. Temporal gives you durable execution, retries, and visibility into queued items via the Temporal Web UI in the admin sidebar.
49
49
 
50
50
  ## Cron
51
51
 
52
- There is currently no equivalent to Supabase Cron available in Specific. It will be coming soon. Tell the user to reach out to fabian@specific.dev if you have a need for this.
52
+ Replace Supabase Cron (pg_cron) with [Temporal Schedules](https://docs.temporal.io/schedules) running on a [Temporal](/temporal) workflow engine in Specific. Define a `temporal` block in `specific.hcl` and have your worker register schedules that trigger workflows at the desired cadence.
53
+
54
+ ## Vector embeddings (pgvector)
55
+
56
+ If the Supabase project uses `pgvector` for AI embeddings or semantic search, the same extension is available on the Neon-backed [Postgres](/postgres) in Specific. Enable it in a migration with `CREATE EXTENSION IF NOT EXISTS vector;` and the existing schema and queries transfer over unchanged.
57
+
58
+ ## Database functions and triggers
59
+
60
+ Supabase projects often define SQL functions and triggers, sometimes invoked from the frontend via PostgREST RPC. The functions and triggers themselves transfer directly since they are standard Postgres. However, calls made from the frontend through PostgREST RPC must be re-implemented as explicit endpoints on the new backend service — the backend then invokes the function over the normal Postgres connection.
53
61
 
54
62
  ## Client-side Changes
55
63
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@specific.dev/cli",
3
- "version": "0.1.136",
3
+ "version": "0.1.137",
4
4
  "description": "CLI for Specific infrastructure-as-code",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",