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.
- package/README.md +1 -0
- package/dist/index.js +13 -11
- package/package.json +1 -1
package/README.md
CHANGED
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.
|
|
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
|
-
|
|
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|
|
|
3790
|
-
storage: /\b(
|
|
3791
|
-
realtime: /\b(
|
|
3792
|
-
vectors: /\b(
|
|
3793
|
-
functions: /\b(
|
|
3794
|
-
schedules: /\b(
|
|
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(
|
|
3798
|
-
crawler: /\b(
|
|
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 ?? ".");
|