@growthub/cli 0.9.9 → 0.9.11

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 (30) hide show
  1. package/README.md +1 -1
  2. package/assets/worker-kits/creative-strategist-v1/kit.json +5 -2
  3. package/assets/worker-kits/growthub-agency-portal-starter-v1/kit.json +4 -1
  4. package/assets/worker-kits/growthub-ai-website-cloner-v1/kit.json +6 -3
  5. package/assets/worker-kits/growthub-creative-video-pipeline-v1/kit.json +4 -1
  6. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/README.md +4 -4
  7. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/integration-entities/route.js +50 -0
  8. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css +980 -1
  9. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/page.jsx +5 -2
  10. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/integrations/page.jsx +4 -5
  11. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-builder.jsx +1686 -68
  12. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/integrations/growthub-connection-normalizer.js +12 -16
  13. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/integrations/index.js +61 -11
  14. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/domain/integrations.js +31 -1
  15. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-schema.js +236 -9
  16. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package-lock.json +10 -64
  17. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package.json +1 -0
  18. package/assets/worker-kits/growthub-custom-workspace-starter-v1/kit.json +5 -2
  19. package/assets/worker-kits/growthub-email-marketing-v1/kit.json +5 -2
  20. package/assets/worker-kits/growthub-geo-seo-v1/kit.json +5 -2
  21. package/assets/worker-kits/growthub-hyperframes-studio-v1/kit.json +5 -2
  22. package/assets/worker-kits/growthub-marketing-skills-v1/kit.json +6 -3
  23. package/assets/worker-kits/growthub-open-higgsfield-studio-v1/kit.json +5 -2
  24. package/assets/worker-kits/growthub-open-montage-studio-v1/kit.json +6 -3
  25. package/assets/worker-kits/growthub-postiz-social-v1/kit.json +5 -2
  26. package/assets/worker-kits/growthub-twenty-crm-v1/kit.json +6 -3
  27. package/assets/worker-kits/growthub-video-use-studio-v1/kit.json +5 -2
  28. package/assets/worker-kits/growthub-zernio-social-v1/kit.json +5 -2
  29. package/dist/index.js +1750 -433
  30. package/package.json +1 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  `@growthub/cli` is the CLI control plane for Growthub Local.
4
4
 
5
- It creates governed **Workspaces** from any source — repo, skill, kit, template, or greenfield. The Workspace is the top-level product object; this CLI is the local executor that creates, customizes, and inspects them.
5
+ It creates governed **Workspaces** from any source — repo, skill, kit, template, or starter. The Workspace is the top-level product object; this CLI is the local executor that creates, customizes, and inspects them.
6
6
 
7
7
  ## Start here: create a governed Workspace
8
8
 
@@ -3,7 +3,7 @@
3
3
  "kit": {
4
4
  "id": "creative-strategist-v1",
5
5
  "version": "1.0.0",
6
- "name": "Growthub Agent Worker Kit Creative Strategist",
6
+ "name": "Growthub Agent Worker Kit \u2014 Creative Strategist",
7
7
  "description": "Frozen Creative Strategist worker kit for exporting a working-directory-ready video creative brief worker.",
8
8
  "type": "worker",
9
9
  "visibility": "public-open-source",
@@ -99,5 +99,8 @@
99
99
  "provenance": {
100
100
  "sourceRepo": "claude-workers",
101
101
  "frozenAt": "2026-04-09T00:00:00.000Z"
102
- }
102
+ },
103
+ "workspaceVisibility": "addon",
104
+ "workspaceCompatible": true,
105
+ "workspaceCategory": "creative-strategy"
103
106
  }
@@ -154,5 +154,8 @@
154
154
  "provenance": {
155
155
  "sourceRepo": "growthub-local",
156
156
  "frozenAt": "2026-04-23T00:00:00.000Z"
157
- }
157
+ },
158
+ "workspaceVisibility": "official",
159
+ "workspaceCompatible": true,
160
+ "workspaceCategory": "workspace-addon"
158
161
  }
@@ -3,8 +3,8 @@
3
3
  "kit": {
4
4
  "id": "growthub-ai-website-cloner-v1",
5
5
  "version": "1.0.0",
6
- "name": "Growthub Agent Worker Kit AI Website Cloner",
7
- "description": "Self-contained local workspace for cloning any website into a clean Next.js 16 + shadcn/ui + Tailwind CSS v4 codebase using AI coding agents. Produces pixel-perfect component clones from a target URL via multi-phase reconnaissance, spec writing, parallel builder dispatch, and visual QA all driven by the ai-website-cloner-template fork.",
6
+ "name": "Growthub Agent Worker Kit \u2014 AI Website Cloner",
7
+ "description": "Self-contained local workspace for cloning any website into a clean Next.js 16 + shadcn/ui + Tailwind CSS v4 codebase using AI coding agents. Produces pixel-perfect component clones from a target URL via multi-phase reconnaissance, spec writing, parallel builder dispatch, and visual QA \u2014 all driven by the ai-website-cloner-template fork.",
8
8
  "type": "worker",
9
9
  "visibility": "public-open-source",
10
10
  "sourceRepo": "growthub-local",
@@ -113,5 +113,8 @@
113
113
  "provenance": {
114
114
  "sourceRepo": "growthub-local",
115
115
  "frozenAt": "2026-04-15T00:00:00.000Z"
116
- }
116
+ },
117
+ "workspaceVisibility": "addon",
118
+ "workspaceCompatible": false,
119
+ "workspaceCategory": "studio"
117
120
  }
@@ -150,5 +150,8 @@
150
150
  "provenance": {
151
151
  "sourceRepo": "growthub-local",
152
152
  "frozenAt": "2026-04-24T00:00:00.000Z"
153
- }
153
+ },
154
+ "workspaceVisibility": "addon",
155
+ "workspaceCompatible": true,
156
+ "workspaceCategory": "video-pipeline"
154
157
  }
@@ -16,14 +16,14 @@ It intentionally depends on adapter contracts:
16
16
 
17
17
  The Growthub local-first operator shell remains at `../../studio`.
18
18
 
19
- Settings exposes two integration lanes:
19
+ Settings exposes two universal integration lanes:
20
20
 
21
- - Data sources: Windsor AI, Google Sheets blended data, Google Analytics, Shopify, Meta Facebook/Instagram.
22
- - Workspace integrations: Asana, Slack, GoHighLevel, Google Drive, Notion.
21
+ - Data sources.
22
+ - Workspace integrations.
23
23
 
24
24
  The `/settings/integrations` page is part of the official governed workspace app shell. It uses the same light workspace rail, toolbar, and product object model as the dashboard workspace, and it renders Growthub bridge account state without redirecting to or borrowing the agency portal kit.
25
25
 
26
- Use `GROWTHUB_WORKSPACE_INTEGRATION_ADAPTER=growthub-bridge` when the deployed app should read connection state from the Growthub GH app MCP bridge. The reusable primitive is `lib/adapters/integrations/growthub-connection-normalizer.js`; it accepts SDK/profile-style `integrations[]` payloads and GH app MCP `accounts[]` payloads, then emits the same normalized object shape used by `byo-api-key`. Keep provider tokens in the hosted authority layer or named env vars; this app consumes normalized connection metadata only.
26
+ Use `GROWTHUB_WORKSPACE_INTEGRATION_ADAPTER=growthub-bridge` when the deployed app should read connection state from the Growthub GH app MCP bridge. The reusable primitive is `lib/adapters/integrations/growthub-connection-normalizer.js`; it accepts SDK/profile-style `integrations[]` payloads and GH app MCP `accounts[]` payloads, then emits the same normalized object shape used by `byo-api-key`. Keep source credentials in the hosted authority layer or named env vars; this app consumes normalized connection metadata only.
27
27
 
28
28
  For first boot, the bundled app also supports a hybrid path: keep `GROWTHUB_WORKSPACE_INTEGRATION_ADAPTER=growthub-bridge` and set `WINDSOR_API_KEY` locally. That overlays connected state for Windsor AI and Google Sheets blended data without moving the rest of the workspace off the hosted bridge authority path.
29
29
 
@@ -0,0 +1,50 @@
1
+ /**
2
+ * GET /api/workspace/integration-entities?integrationId=<id>
3
+ *
4
+ * Returns NormalizedIntegrationEntity[] for the requested integration when a
5
+ * server-side object resolver can fetch real source objects.
6
+ * This route is server-side only: no source credentials are forwarded to the
7
+ * browser, and no provider queries are executed in the client.
8
+ *
9
+ * Authority invariant (from GOVERNED_WORKSPACE_TOPOLOGY_V1.md):
10
+ * The browser never queries integrations, holds tokens, or resolves
11
+ * entity metadata directly. This route is the only server-side surface
12
+ * that crosses the authority boundary.
13
+ *
14
+ * Response shape:
15
+ * 200 { integrationId: string, entities: NormalizedIntegrationEntity[], source: "resolver", requiresObjectResolver: boolean }
16
+ * 400 { error: string }
17
+ */
18
+ import { NextResponse } from "next/server";
19
+ import { listEntityMetadataForIntegration } from "@/lib/adapters/integrations";
20
+ import { readAdapterConfig } from "@/lib/adapters/env";
21
+
22
+ async function GET(request) {
23
+ const { searchParams } = new URL(request.url);
24
+ const integrationId = searchParams.get("integrationId");
25
+
26
+ if (!integrationId || typeof integrationId !== "string" || !integrationId.trim()) {
27
+ return NextResponse.json(
28
+ { error: "integrationId query parameter is required" },
29
+ { status: 400 }
30
+ );
31
+ }
32
+
33
+ const config = readAdapterConfig();
34
+ const isBridgeMode =
35
+ config.integrationAdapter === "growthub-bridge" &&
36
+ config.growthubBridge?.baseUrl &&
37
+ !!process.env.GROWTHUB_BRIDGE_ACCESS_TOKEN;
38
+
39
+ const entities = await listEntityMetadataForIntegration(integrationId.trim());
40
+
41
+ return NextResponse.json({
42
+ integrationId: integrationId.trim(),
43
+ entities,
44
+ source: entities.length ? "resolver" : "none",
45
+ requiresObjectResolver: entities.length === 0,
46
+ authority: isBridgeMode ? "growthub-bridge" : "local"
47
+ });
48
+ }
49
+
50
+ export { GET };