@specific.dev/cli 0.1.127 → 0.1.128

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 (67) 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 +58 -19
  64. package/package.json +1 -1
  65. /package/dist/admin/_next/static/{tWkoycW-NhVqIuvprR9OV → RI2b-FbUxlHXeowkJKNZM}/_buildManifest.js +0 -0
  66. /package/dist/admin/_next/static/{tWkoycW-NhVqIuvprR9OV → RI2b-FbUxlHXeowkJKNZM}/_clientMiddlewareManifest.json +0 -0
  67. /package/dist/admin/_next/static/{tWkoycW-NhVqIuvprR9OV → RI2b-FbUxlHXeowkJKNZM}/_ssgManifest.js +0 -0
package/dist/cli.js CHANGED
@@ -371941,38 +371941,77 @@ var TunnelClientImpl = class extends EventEmitter2 {
371941
371941
  const remote = net7.connect({ host: this.tunnelHost, port: this.info.port });
371942
371942
  remote.setKeepAlive(true, 3e4);
371943
371943
  this.pool.add(remote);
371944
+ let active = false;
371945
+ let errored = false;
371944
371946
  remote.once("data", (firstChunk) => {
371945
371947
  this.pool.delete(remote);
371948
+ active = true;
371946
371949
  this.pipeToLocal(remote, firstChunk);
371947
371950
  });
371948
- let errored = false;
371949
371951
  remote.on("error", (err) => {
371950
371952
  errored = true;
371951
371953
  this.emit("error", err);
371952
371954
  });
371953
- remote.on("close", () => this.onIdleClose(remote, errored));
371955
+ remote.on("close", () => {
371956
+ if (this.closed)
371957
+ return;
371958
+ if (active) {
371959
+ this.fillPool();
371960
+ return;
371961
+ }
371962
+ this.pool.delete(remote);
371963
+ if (errored && this.pool.size === 0) {
371964
+ this.reconnect();
371965
+ } else {
371966
+ this.fillPool();
371967
+ }
371968
+ });
371954
371969
  }
371955
371970
  pipeToLocal(remote, firstChunk) {
371971
+ let buffered = firstChunk;
371972
+ const HEADER_END = Buffer.from("\r\n\r\n");
371973
+ const MAX_HEADER_BYTES = 64 * 1024;
371974
+ const flush = (end) => {
371975
+ const headers = buffered.subarray(0, end + HEADER_END.length);
371976
+ const body = buffered.subarray(end + HEADER_END.length);
371977
+ const rewritten = this.rewriteDevOriginHeaders(headers);
371978
+ const request2 = body.length > 0 ? Buffer.concat([rewritten, body]) : rewritten;
371979
+ this.openLocal(remote, request2);
371980
+ };
371981
+ const initial = buffered.indexOf(HEADER_END);
371982
+ if (initial !== -1) {
371983
+ flush(initial);
371984
+ return;
371985
+ }
371986
+ const onData = (chunk) => {
371987
+ buffered = Buffer.concat([buffered, chunk]);
371988
+ const end = buffered.indexOf(HEADER_END);
371989
+ if (end !== -1) {
371990
+ remote.off("data", onData);
371991
+ flush(end);
371992
+ } else if (buffered.length > MAX_HEADER_BYTES) {
371993
+ remote.off("data", onData);
371994
+ remote.destroy();
371995
+ }
371996
+ };
371997
+ remote.on("data", onData);
371998
+ }
371999
+ openLocal(remote, request2) {
371956
372000
  const local = net7.connect({ host: "127.0.0.1", port: this.localPort }, () => {
371957
- local.write(firstChunk);
372001
+ local.write(request2);
371958
372002
  remote.pipe(local);
371959
372003
  local.pipe(remote);
371960
372004
  });
371961
372005
  local.on("error", () => remote.destroy());
371962
- remote.on("close", () => {
371963
- if (!this.closed)
371964
- this.fillPool();
371965
- });
371966
372006
  }
371967
- onIdleClose(remote, errored) {
371968
- if (!this.pool.delete(remote) || this.closed)
371969
- return;
371970
- if (errored) {
371971
- if (this.pool.size === 0)
371972
- this.reconnect();
371973
- } else {
371974
- this.fillPool();
371975
- }
372007
+ rewriteDevOriginHeaders(headers) {
372008
+ const target = `localhost:${this.localPort}`;
372009
+ const text = headers.toString("latin1");
372010
+ let out = text.replace(/^Host:[^\r\n]*\r\n/im, `Host: ${target}\r
372011
+ `);
372012
+ out = out.replace(/^Origin:[^\r\n]*\r\n/im, `Origin: http://${target}\r
372013
+ `);
372014
+ return Buffer.from(out, "latin1");
371976
372015
  }
371977
372016
  async reconnect() {
371978
372017
  this.emit("close");
@@ -373675,7 +373714,7 @@ function trackEvent(event, properties) {
373675
373714
  event,
373676
373715
  properties: {
373677
373716
  ...properties,
373678
- cli_version: "0.1.127",
373717
+ cli_version: "0.1.128",
373679
373718
  platform: process.platform,
373680
373719
  node_version: process.version,
373681
373720
  project_id: getProjectId()
@@ -377781,7 +377820,7 @@ function compareVersions(a, b) {
377781
377820
  return 0;
377782
377821
  }
377783
377822
  async function checkForUpdate() {
377784
- const currentVersion = "0.1.127";
377823
+ const currentVersion = "0.1.128";
377785
377824
  const response = await fetch(`${BINARIES_BASE_URL}/latest?t=${Date.now()}`);
377786
377825
  if (!response.ok) {
377787
377826
  throw new Error(`Failed to check for updates: HTTP ${response.status}`);
@@ -378051,7 +378090,7 @@ async function projectListCommand() {
378051
378090
  var program = new Command();
378052
378091
  var env = "production";
378053
378092
  var envLabel = env !== "production" ? `[${env.toUpperCase()}] ` : "";
378054
- program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.127").enablePositionalOptions();
378093
+ program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.128").enablePositionalOptions();
378055
378094
  program.command("init").description("Initialize project for use with a coding agent").option("--agent <name...>", "Agents to configure (cursor, claude, codex, other)").addHelpText("after", `
378056
378095
  Examples:
378057
378096
  $ specific init
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@specific.dev/cli",
3
- "version": "0.1.127",
3
+ "version": "0.1.128",
4
4
  "description": "CLI for Specific infrastructure-as-code",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",