nimblybase 0.1.0 → 0.1.2

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 (3) hide show
  1. package/README.md +1 -0
  2. package/dist/index.js +13 -11
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -5,6 +5,7 @@ The NimblyBase command line. Projects, keys and backends from a terminal.
5
5
  ```bash
6
6
  npx nimblybase login
7
7
  npx nimblybase create "My App"
8
+ npx nimblybase describe
8
9
  npx nimblybase keys create "local dev"
9
10
  ```
10
11
 
package/dist/index.js CHANGED
@@ -169,6 +169,7 @@ USAGE
169
169
  GETTING STARTED
170
170
  login Sign in with an access token from the dashboard
171
171
  init [name] Create or explicitly choose a project for this repo
172
+ describe Show what the linked project's backend can do
172
173
  architect [requirements] Inspect this repo and propose a reviewable architecture
173
174
  whoami Who you are, where, and which project is linked
174
175
  create <name> Create a project and link this directory to it
@@ -348,7 +349,7 @@ function when(iso) {
348
349
 
349
350
  // src/api.ts
350
351
  var DEFAULT_API_URL = "https://api-uat.nimblybase.com";
351
- var VERSION = "0.1.0";
352
+ var VERSION = "0.1.2";
352
353
  function dashboardUrl(api) {
353
354
  const match = /^https:\/\/api(-[a-z0-9]+)?\.(.+)$/.exec(api);
354
355
  return match ? `https://app${match[1] ?? ""}.${match[2]}` : null;
@@ -2746,7 +2747,8 @@ function proposeArchitecture(repository, capabilities) {
2746
2747
  continue;
2747
2748
  }
2748
2749
  const capability = byId.get(serviceId);
2749
- if (!capability?.available) {
2750
+ const configurable = capability?.supported === true && (capability.state === "not_enabled" || capability.state === "not_configured");
2751
+ if (!capability?.available && !configurable) {
2750
2752
  services.push({
2751
2753
  id: serviceId,
2752
2754
  decision: "unavailable",
@@ -2759,7 +2761,7 @@ function proposeArchitecture(repository, capabilities) {
2759
2761
  }
2760
2762
  services.push({
2761
2763
  id: serviceId,
2762
- decision: repository.runtime.kind === "external-server" && feature.id === "functions" ? "external" : "use",
2764
+ decision: repository.runtime.kind === "external-server" && feature.id === "functions" ? "external" : configurable ? "configure" : "use",
2763
2765
  reason: `${feature.evidence.join("; ")}. ${capability.reason}`,
2764
2766
  actions: FEATURE_ACTIONS[featureId]
2765
2767
  });
@@ -3786,16 +3788,16 @@ var MAX_FILES2 = 2e3;
3786
3788
  var MAX_READ_BYTES = 256 * 1024;
3787
3789
  var MAX_TOTAL_READ_BYTES = 4 * 1024 * 1024;
3788
3790
  var FEATURE_PATTERNS = {
3789
- auth: /\b(auth|login|log-in|signin|sign-in|signup|sign-up|session|passport|clerk|auth0)\b/i,
3790
- storage: /\b(upload|attachment|bucket|object storage|s3|r2|multer|media)\b/i,
3791
- realtime: /\b(realtime|real-time|websocket|socket\.io|chat room|live update)\b/i,
3792
- vectors: /\b(vector|embedding|semantic search|rag|retrieval augmented)\b/i,
3793
- functions: /\b(webhook|edge function|api route|http handler|express|fastify|hono)\b/i,
3794
- schedules: /\b(cron|schedule|scheduled|periodic)\b/i,
3791
+ auth: /\b(auth(?:entication|enticated|orization|orized)?|log-?ins?|sign-?ins?|sign-?ups?|sessions?|user accounts?|passport|clerk|auth0)\b/i,
3792
+ storage: /\b(uploads?|attachments?|buckets?|object storage|file (?:uploads?|attachments?|storage)|s3|r2|multer|media)\b/i,
3793
+ realtime: /\b(real[ -]?time|websockets?|socket\.io|chat rooms?|live updates?)\b/i,
3794
+ vectors: /\b(vectors?|embeddings?|semantic search(?:es)?|rag|retrieval augmented)\b/i,
3795
+ functions: /\b(webhooks?|edge functions?|api routes?|http handlers?|express|fastify|hono)\b/i,
3796
+ schedules: /\b(crons?|schedules?|scheduled|periodic)\b/i,
3795
3797
  ai: /\b(openai|anthropic|workers ai|language model|llm|chatbot|ai sdk)\b/i,
3796
3798
  cache: /\b(redis|cache|memoiz)\w*/i,
3797
- jobs: /\b(queue|background job|worker job|bullmq|celery|sidekiq)\b/i,
3798
- crawler: /\b(crawl|crawler|scrape|playwright|puppeteer|browser automation)\b/i
3799
+ jobs: /\b(queues?|background jobs?|worker jobs?|bullmq|celery|sidekiq)\b/i,
3800
+ crawler: /\b(crawls?|crawlers?|scrapes?|playwright|puppeteer|browser automation)\b/i
3799
3801
  };
3800
3802
  async function architect(flags, ...words) {
3801
3803
  const root = resolve4(flags.dir ?? ".");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nimblybase",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "The NimblyBase command line - projects, keys and backends from a terminal.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {