@specific.dev/cli 0.1.39 → 0.1.40

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 (33) hide show
  1. package/dist/admin/404/index.html +1 -1
  2. package/dist/admin/404.html +1 -1
  3. package/dist/admin/__next.__PAGE__.txt +1 -1
  4. package/dist/admin/__next._full.txt +1 -1
  5. package/dist/admin/__next._head.txt +1 -1
  6. package/dist/admin/__next._index.txt +1 -1
  7. package/dist/admin/__next._tree.txt +1 -1
  8. package/dist/admin/_next/static/chunks/{4b5ae5ebb2087f0d.js → 9054c84ba21a4c14.js} +1 -1
  9. package/dist/admin/_next/static/chunks/{0afa5e999b6c353a.js → dde2c8e6322d1671.js} +1 -1
  10. package/dist/admin/_next/static/chunks/{turbopack-e5185af8e7c716ca.js → turbopack-22b7312525502d51.js} +1 -1
  11. package/dist/admin/_not-found/__next._full.txt +1 -1
  12. package/dist/admin/_not-found/__next._head.txt +1 -1
  13. package/dist/admin/_not-found/__next._index.txt +1 -1
  14. package/dist/admin/_not-found/__next._not-found.__PAGE__.txt +1 -1
  15. package/dist/admin/_not-found/__next._not-found.txt +1 -1
  16. package/dist/admin/_not-found/__next._tree.txt +1 -1
  17. package/dist/admin/_not-found/index.html +1 -1
  18. package/dist/admin/_not-found/index.txt +1 -1
  19. package/dist/admin/databases/__next._full.txt +1 -1
  20. package/dist/admin/databases/__next._head.txt +1 -1
  21. package/dist/admin/databases/__next._index.txt +1 -1
  22. package/dist/admin/databases/__next._tree.txt +1 -1
  23. package/dist/admin/databases/__next.databases.__PAGE__.txt +1 -1
  24. package/dist/admin/databases/__next.databases.txt +1 -1
  25. package/dist/admin/databases/index.html +1 -1
  26. package/dist/admin/databases/index.txt +1 -1
  27. package/dist/admin/index.html +1 -1
  28. package/dist/admin/index.txt +1 -1
  29. package/dist/cli.js +30 -41
  30. package/package.json +1 -1
  31. /package/dist/admin/_next/static/{cNL40bpv360RCjyOls7vD → WKOmsOUhTOkoASmeDtlS1}/_buildManifest.js +0 -0
  32. /package/dist/admin/_next/static/{cNL40bpv360RCjyOls7vD → WKOmsOUhTOkoASmeDtlS1}/_clientMiddlewareManifest.json +0 -0
  33. /package/dist/admin/_next/static/{cNL40bpv360RCjyOls7vD → WKOmsOUhTOkoASmeDtlS1}/_ssgManifest.js +0 -0
@@ -11,7 +11,7 @@ f:I[68027,[],"default"]
11
11
  :HL["/_next/static/chunks/5ff94899b8b7a03a.css","style"]
12
12
  :HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
13
13
  :HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
- 0:{"P":null,"b":"cNL40bpv360RCjyOls7vD","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/5ff94899b8b7a03a.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/ff1a16fafef87110.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/6aae09c9429b9f24.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/0476153b08658d87.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[]],"S":true}
14
+ 0:{"P":null,"b":"WKOmsOUhTOkoASmeDtlS1","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/5ff94899b8b7a03a.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/ff1a16fafef87110.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/6aae09c9429b9f24.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/0476153b08658d87.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[]],"S":true}
15
15
  6:{}
16
16
  7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
17
17
  c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
package/dist/cli.js CHANGED
@@ -182491,7 +182491,7 @@ function trackEvent(event, properties) {
182491
182491
  event,
182492
182492
  properties: {
182493
182493
  ...properties,
182494
- cli_version: "0.1.39",
182494
+ cli_version: "0.1.40",
182495
182495
  platform: process.platform,
182496
182496
  node_version: process.version,
182497
182497
  project_id: getProjectId()
@@ -190217,53 +190217,42 @@ function DeployUI({ environment, config, skipBuildTest }) {
190217
190217
  useEffect5(() => {
190218
190218
  if (state.phase !== "testing-builds" || !state.projectId) return;
190219
190219
  let cancelled = false;
190220
- async function runBuildTests() {
190220
+ let pollInterval;
190221
+ async function runBuildTestsAndDeploy() {
190221
190222
  const projectDir = process.cwd();
190222
190223
  const builds = config.builds || [];
190223
- if (skipBuildTest || builds.length === 0) {
190224
- writeLog("deploy", skipBuildTest ? "Skipping build tests (--skip-build-test)" : "No builds to test");
190225
- setState((s) => ({ ...s, phase: "creating-tarball" }));
190226
- return;
190227
- }
190228
- writeLog("deploy", `Testing ${builds.length} build(s) locally`);
190229
- try {
190230
- const results = await testAllBuilds(builds, projectDir);
190231
- if (cancelled) return;
190232
- if (!results.allPassed) {
190233
- const failures = results.results.filter((r) => !r.success);
190234
- const errorMsg = failures.map((f) => `Build "${f.buildName}" failed:
190224
+ if (!skipBuildTest && builds.length > 0) {
190225
+ writeLog("deploy", `Testing ${builds.length} build(s) locally`);
190226
+ try {
190227
+ const results = await testAllBuilds(builds, projectDir);
190228
+ if (cancelled) return;
190229
+ if (!results.allPassed) {
190230
+ const failures = results.results.filter((r) => !r.success);
190231
+ const errorMsg = failures.map((f) => `Build "${f.buildName}" failed:
190235
190232
  ${f.output}`).join("\n\n");
190233
+ writeLog("deploy:error", errorMsg);
190234
+ setState({
190235
+ phase: "error",
190236
+ error: `Build test failed:
190237
+ ${errorMsg}`
190238
+ });
190239
+ return;
190240
+ }
190241
+ writeLog("deploy", "All builds passed local testing");
190242
+ } catch (err) {
190243
+ if (cancelled) return;
190244
+ const errorMsg = `Build test failed: ${err instanceof Error ? err.message : String(err)}`;
190236
190245
  writeLog("deploy:error", errorMsg);
190237
190246
  setState({
190238
190247
  phase: "error",
190239
- error: `Build test failed:
190240
- ${errorMsg}`
190248
+ error: errorMsg
190241
190249
  });
190242
190250
  return;
190243
190251
  }
190244
- writeLog("deploy", "All builds passed local testing");
190245
- setState((s) => ({ ...s, phase: "creating-tarball" }));
190246
- } catch (err) {
190247
- if (cancelled) return;
190248
- const errorMsg = `Build test failed: ${err instanceof Error ? err.message : String(err)}`;
190249
- writeLog("deploy:error", errorMsg);
190250
- setState({
190251
- phase: "error",
190252
- error: errorMsg
190253
- });
190252
+ } else {
190253
+ writeLog("deploy", skipBuildTest ? "Skipping build tests (--skip-build-test)" : "No builds to test");
190254
190254
  }
190255
- }
190256
- runBuildTests();
190257
- return () => {
190258
- cancelled = true;
190259
- };
190260
- }, [state.phase, state.projectId, config.builds, skipBuildTest]);
190261
- useEffect5(() => {
190262
- if (state.phase !== "creating-tarball" || !state.projectId) return;
190263
- let cancelled = false;
190264
- let pollInterval;
190265
- async function deploy() {
190266
- const projectDir = process.cwd();
190255
+ setState((s) => ({ ...s, phase: "creating-tarball" }));
190267
190256
  writeLog("deploy", `Starting deployment to "${environment}"`);
190268
190257
  writeLog("deploy", `Project directory: ${projectDir}`);
190269
190258
  const authToken = await getValidAccessToken();
@@ -190404,12 +190393,12 @@ ${errorMsg}`
190404
190393
  pollInterval = setInterval(pollForCompletion, 2e3);
190405
190394
  pollForCompletion();
190406
190395
  }
190407
- deploy();
190396
+ runBuildTestsAndDeploy();
190408
190397
  return () => {
190409
190398
  cancelled = true;
190410
190399
  if (pollInterval) clearInterval(pollInterval);
190411
190400
  };
190412
- }, [state.projectId, environment]);
190401
+ }, [state.projectId, environment, config.builds, skipBuildTest]);
190413
190402
  useEffect5(() => {
190414
190403
  let pollInterval;
190415
190404
  if ((state.phase === "building" || state.phase === "deploying") && state.deployment && state.missingSecrets === void 0 && state.secretValues === void 0 && state.missingConfigs === void 0 && state.configValues === void 0) {
@@ -191291,7 +191280,7 @@ function logoutCommand() {
191291
191280
  var program = new Command();
191292
191281
  var env = "production";
191293
191282
  var envLabel = env !== "production" ? `[${env.toUpperCase()}] ` : "";
191294
- program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.39").enablePositionalOptions();
191283
+ program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.40").enablePositionalOptions();
191295
191284
  program.command("init").description("Initialize project for use with a coding agent").action(initCommand);
191296
191285
  program.command("docs [topic]").description("Fetch LLM-optimized documentation").action(docsCommand);
191297
191286
  program.command("check").description("Validate specific.hcl configuration").action(checkCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@specific.dev/cli",
3
- "version": "0.1.39",
3
+ "version": "0.1.40",
4
4
  "description": "CLI for Specific infrastructure-as-code",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",