@specific.dev/cli 0.1.131 → 0.1.133
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/admin/404/index.html +1 -1
- package/dist/admin/404.html +1 -1
- package/dist/admin/__next.!KGRlZmF1bHQp.__PAGE__.txt +1 -1
- package/dist/admin/__next.!KGRlZmF1bHQp.txt +1 -1
- package/dist/admin/__next._full.txt +1 -1
- package/dist/admin/__next._head.txt +1 -1
- package/dist/admin/__next._index.txt +1 -1
- package/dist/admin/__next._tree.txt +1 -1
- package/dist/admin/_not-found/__next._full.txt +1 -1
- package/dist/admin/_not-found/__next._head.txt +1 -1
- package/dist/admin/_not-found/__next._index.txt +1 -1
- package/dist/admin/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/admin/_not-found/__next._not-found.txt +1 -1
- package/dist/admin/_not-found/__next._tree.txt +1 -1
- package/dist/admin/_not-found/index.html +1 -1
- package/dist/admin/_not-found/index.txt +1 -1
- package/dist/admin/databases/__next.!KGRlZmF1bHQp.databases.__PAGE__.txt +1 -1
- package/dist/admin/databases/__next.!KGRlZmF1bHQp.databases.txt +1 -1
- package/dist/admin/databases/__next.!KGRlZmF1bHQp.txt +1 -1
- package/dist/admin/databases/__next._full.txt +1 -1
- package/dist/admin/databases/__next._head.txt +1 -1
- package/dist/admin/databases/__next._index.txt +1 -1
- package/dist/admin/databases/__next._tree.txt +1 -1
- package/dist/admin/databases/index.html +1 -1
- package/dist/admin/databases/index.txt +1 -1
- package/dist/admin/fullscreen/__next._full.txt +1 -1
- package/dist/admin/fullscreen/__next._head.txt +1 -1
- package/dist/admin/fullscreen/__next._index.txt +1 -1
- package/dist/admin/fullscreen/__next._tree.txt +1 -1
- package/dist/admin/fullscreen/__next.fullscreen.__PAGE__.txt +1 -1
- package/dist/admin/fullscreen/__next.fullscreen.txt +1 -1
- package/dist/admin/fullscreen/databases/__next._full.txt +1 -1
- package/dist/admin/fullscreen/databases/__next._head.txt +1 -1
- package/dist/admin/fullscreen/databases/__next._index.txt +1 -1
- package/dist/admin/fullscreen/databases/__next._tree.txt +1 -1
- package/dist/admin/fullscreen/databases/__next.fullscreen.databases.__PAGE__.txt +1 -1
- package/dist/admin/fullscreen/databases/__next.fullscreen.databases.txt +1 -1
- package/dist/admin/fullscreen/databases/__next.fullscreen.txt +1 -1
- package/dist/admin/fullscreen/databases/index.html +1 -1
- package/dist/admin/fullscreen/databases/index.txt +1 -1
- package/dist/admin/fullscreen/index.html +1 -1
- package/dist/admin/fullscreen/index.txt +1 -1
- package/dist/admin/index.html +1 -1
- package/dist/admin/index.txt +1 -1
- package/dist/admin/mail/__next.!KGRlZmF1bHQp.mail.__PAGE__.txt +1 -1
- package/dist/admin/mail/__next.!KGRlZmF1bHQp.mail.txt +1 -1
- package/dist/admin/mail/__next.!KGRlZmF1bHQp.txt +1 -1
- package/dist/admin/mail/__next._full.txt +1 -1
- package/dist/admin/mail/__next._head.txt +1 -1
- package/dist/admin/mail/__next._index.txt +1 -1
- package/dist/admin/mail/__next._tree.txt +1 -1
- package/dist/admin/mail/index.html +1 -1
- package/dist/admin/mail/index.txt +1 -1
- package/dist/admin/workflows/__next.!KGRlZmF1bHQp.txt +1 -1
- package/dist/admin/workflows/__next.!KGRlZmF1bHQp.workflows.__PAGE__.txt +1 -1
- package/dist/admin/workflows/__next.!KGRlZmF1bHQp.workflows.txt +1 -1
- package/dist/admin/workflows/__next._full.txt +1 -1
- package/dist/admin/workflows/__next._head.txt +1 -1
- package/dist/admin/workflows/__next._index.txt +1 -1
- package/dist/admin/workflows/__next._tree.txt +1 -1
- package/dist/admin/workflows/index.html +1 -1
- package/dist/admin/workflows/index.txt +1 -1
- package/dist/cli.js +46 -36
- package/package.json +1 -1
- /package/dist/admin/_next/static/{q_hKQQIovTI9Xqr5JEBj3 → k4CkHzJBOS7_uNab7bdAE}/_buildManifest.js +0 -0
- /package/dist/admin/_next/static/{q_hKQQIovTI9Xqr5JEBj3 → k4CkHzJBOS7_uNab7bdAE}/_clientMiddlewareManifest.json +0 -0
- /package/dist/admin/_next/static/{q_hKQQIovTI9Xqr5JEBj3 → k4CkHzJBOS7_uNab7bdAE}/_ssgManifest.js +0 -0
package/dist/cli.js
CHANGED
|
@@ -373693,7 +373693,7 @@ function trackEvent(event, properties) {
|
|
|
373693
373693
|
event,
|
|
373694
373694
|
properties: {
|
|
373695
373695
|
...properties,
|
|
373696
|
-
cli_version: "0.1.
|
|
373696
|
+
cli_version: "0.1.133",
|
|
373697
373697
|
platform: process.platform,
|
|
373698
373698
|
node_version: process.version,
|
|
373699
373699
|
project_id: getProjectId()
|
|
@@ -377799,7 +377799,7 @@ function compareVersions(a, b) {
|
|
|
377799
377799
|
return 0;
|
|
377800
377800
|
}
|
|
377801
377801
|
async function checkForUpdate() {
|
|
377802
|
-
const currentVersion = "0.1.
|
|
377802
|
+
const currentVersion = "0.1.133";
|
|
377803
377803
|
const response = await fetch(`${BINARIES_BASE_URL}/latest?t=${Date.now()}`);
|
|
377804
377804
|
if (!response.ok) {
|
|
377805
377805
|
throw new Error(`Failed to check for updates: HTTP ${response.status}`);
|
|
@@ -378066,48 +378066,58 @@ async function projectListCommand() {
|
|
|
378066
378066
|
}
|
|
378067
378067
|
|
|
378068
378068
|
// src/commands/status.tsx
|
|
378069
|
-
|
|
378070
|
-
|
|
378071
|
-
|
|
378072
|
-
|
|
378073
|
-
|
|
378074
|
-
|
|
378075
|
-
|
|
378076
|
-
|
|
378077
|
-
|
|
378078
|
-
|
|
378079
|
-
return;
|
|
378080
|
-
|
|
378081
|
-
|
|
378082
|
-
|
|
378083
|
-
|
|
378084
|
-
|
|
378085
|
-
|
|
378086
|
-
|
|
378087
|
-
|
|
378088
|
-
|
|
378089
|
-
|
|
378090
|
-
|
|
378091
|
-
|
|
378092
|
-
|
|
378093
|
-
|
|
378094
|
-
|
|
378095
|
-
|
|
378096
|
-
|
|
378069
|
+
import React12, { useState as useState11, useEffect as useEffect11 } from "react";
|
|
378070
|
+
import { render as render10, Text as Text12, Box as Box11 } from "ink";
|
|
378071
|
+
import Spinner7 from "ink-spinner";
|
|
378072
|
+
function statusColor(s) {
|
|
378073
|
+
switch (s) {
|
|
378074
|
+
case "active":
|
|
378075
|
+
return "green";
|
|
378076
|
+
case "deploying":
|
|
378077
|
+
return "yellow";
|
|
378078
|
+
case "failed":
|
|
378079
|
+
return "red";
|
|
378080
|
+
case "none":
|
|
378081
|
+
return "gray";
|
|
378082
|
+
}
|
|
378083
|
+
}
|
|
378084
|
+
function StatusUI() {
|
|
378085
|
+
const [state, setState] = useState11({ phase: "loading" });
|
|
378086
|
+
useEffect11(() => {
|
|
378087
|
+
(async () => {
|
|
378088
|
+
try {
|
|
378089
|
+
const projectId = readProjectId();
|
|
378090
|
+
const token = await getValidAccessToken();
|
|
378091
|
+
const client2 = new SpecificClient({ accessToken: token });
|
|
378092
|
+
const status2 = await client2.getProjectStatus(projectId);
|
|
378093
|
+
setState({ phase: "success", status: status2 });
|
|
378094
|
+
} catch (err) {
|
|
378095
|
+
setState({
|
|
378096
|
+
phase: "error",
|
|
378097
|
+
error: err instanceof Error ? err.message : String(err)
|
|
378098
|
+
});
|
|
378097
378099
|
}
|
|
378098
|
-
}
|
|
378099
|
-
}
|
|
378100
|
-
|
|
378101
|
-
|
|
378102
|
-
process.exit(1);
|
|
378100
|
+
})();
|
|
378101
|
+
}, []);
|
|
378102
|
+
if (state.phase === "loading") {
|
|
378103
|
+
return /* @__PURE__ */ React12.createElement(Box11, null, /* @__PURE__ */ React12.createElement(Text12, { color: "blue" }, /* @__PURE__ */ React12.createElement(Spinner7, { type: "dots" })), /* @__PURE__ */ React12.createElement(Text12, null, " Loading project status..."));
|
|
378103
378104
|
}
|
|
378105
|
+
if (state.phase === "error") {
|
|
378106
|
+
process.exitCode = 1;
|
|
378107
|
+
return /* @__PURE__ */ React12.createElement(Text12, { color: "red" }, "Failed to get status: ", state.error);
|
|
378108
|
+
}
|
|
378109
|
+
const status = state.status;
|
|
378110
|
+
return /* @__PURE__ */ React12.createElement(Box11, { flexDirection: "column", gap: 1 }, /* @__PURE__ */ React12.createElement(Text12, null, /* @__PURE__ */ React12.createElement(Text12, { bold: true }, status.name), /* @__PURE__ */ React12.createElement(Text12, { dimColor: true }, " (", status.id, ")")), status.environments.length === 0 ? /* @__PURE__ */ React12.createElement(Text12, { dimColor: true }, "No environments found.") : status.environments.map((env2) => /* @__PURE__ */ React12.createElement(Box11, { key: env2.id, flexDirection: "column" }, /* @__PURE__ */ React12.createElement(Text12, null, /* @__PURE__ */ React12.createElement(Text12, { bold: true, color: "cyan" }, env2.name), /* @__PURE__ */ React12.createElement(Text12, { dimColor: true }, " (", env2.id, ")")), /* @__PURE__ */ React12.createElement(Text12, null, " ", "Status: ", /* @__PURE__ */ React12.createElement(Text12, { color: statusColor(env2.status), bold: true }, env2.status)), /* @__PURE__ */ React12.createElement(Text12, null, " ", "Active deployment:", " ", env2.activeDeployment ? /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(Text12, { color: "green" }, env2.activeDeployment.id), /* @__PURE__ */ React12.createElement(Text12, { dimColor: true }, " (", env2.activeDeployment.state, ")")) : /* @__PURE__ */ React12.createElement(Text12, { dimColor: true }, "none")), env2.inProgressDeployment && /* @__PURE__ */ React12.createElement(Text12, null, " ", "In progress:", " ", /* @__PURE__ */ React12.createElement(Text12, { color: "yellow" }, env2.inProgressDeployment.id), /* @__PURE__ */ React12.createElement(Text12, { dimColor: true }, " (", env2.inProgressDeployment.state, ")")), env2.publicUrls && Object.keys(env2.publicUrls).length > 0 && /* @__PURE__ */ React12.createElement(Box11, { flexDirection: "column" }, /* @__PURE__ */ React12.createElement(Text12, null, " ", "Public URLs:"), Object.entries(env2.publicUrls).map(([serviceName, url]) => /* @__PURE__ */ React12.createElement(Text12, { key: serviceName }, " - ", /* @__PURE__ */ React12.createElement(Text12, { color: "cyan" }, serviceName), ": ", /* @__PURE__ */ React12.createElement(Text12, { color: "blue" }, url)))))));
|
|
378111
|
+
}
|
|
378112
|
+
function statusCommand() {
|
|
378113
|
+
render10(/* @__PURE__ */ React12.createElement(StatusUI, null));
|
|
378104
378114
|
}
|
|
378105
378115
|
|
|
378106
378116
|
// src/cli-program.tsx
|
|
378107
378117
|
var program = new Command();
|
|
378108
378118
|
var env = "production";
|
|
378109
378119
|
var envLabel = env !== "production" ? `[${env.toUpperCase()}] ` : "";
|
|
378110
|
-
program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.
|
|
378120
|
+
program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.133").enablePositionalOptions();
|
|
378111
378121
|
program.command("init").description("Initialize project for use with a coding agent").option("--agent <name...>", "Agents to configure (cursor, claude, codex, other)").addHelpText("after", `
|
|
378112
378122
|
Examples:
|
|
378113
378123
|
$ specific init
|
package/package.json
CHANGED
/package/dist/admin/_next/static/{q_hKQQIovTI9Xqr5JEBj3 → k4CkHzJBOS7_uNab7bdAE}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
/package/dist/admin/_next/static/{q_hKQQIovTI9Xqr5JEBj3 → k4CkHzJBOS7_uNab7bdAE}/_ssgManifest.js
RENAMED
|
File without changes
|