@growthub/cli 0.9.3 → 0.9.5
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/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/growthub.config.json +112 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/package.json +1 -1
- package/assets/worker-kits/growthub-agency-portal-starter-v1/bundles/growthub-agency-portal-starter-v1.json +1 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/kit.json +2 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/package.json +1 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/SKILL.md +35 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/.env.example +41 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/README.md +38 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/settings/integrations/route.js +13 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/route.js +91 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css +912 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/layout.jsx +14 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/page.jsx +23 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/integrations/page.jsx +105 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-builder.jsx +680 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/growthub.config.json +53 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/jsconfig.json +8 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/auth/index.js +21 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/env.js +28 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/integrations/growthub-connection-normalizer.js +95 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/integrations/index.js +198 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/payments/index.js +13 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/persistence/index.js +13 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/persistence/postgres.js +16 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/persistence/provider-managed.js +16 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/persistence/qstash-kv.js +16 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/domain/integrations.js +185 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/domain/portal.js +150 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-config.js +232 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/next.config.js +10 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package-lock.json +976 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package.json +17 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/postcss.config.mjs +3 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/vercel.json +5 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/bundles/growthub-custom-workspace-starter-v1.json +13 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/docs/adapter-contracts.md +86 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/docs/vercel-serverless-deployment.md +46 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/growthub.config.json +49 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/helpers/check-self-improving-health.sh +60 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/helpers/promote-capability.mjs +37 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/helpers/propose-capability.mjs +38 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/kit.json +45 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/templates/deployment-handoff.md +61 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/templates/supabase-setup-plan.md +26 -0
- package/dist/index.js +2903 -1596
- package/package.json +2 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import "./globals.css";
|
|
2
|
+
const metadata = {
|
|
3
|
+
title: "Growthub Workspace",
|
|
4
|
+
description: "Configurable governed workspace dashboard builder."
|
|
5
|
+
};
|
|
6
|
+
function RootLayout({ children }) {
|
|
7
|
+
return <html lang="en">
|
|
8
|
+
<body>{children}</body>
|
|
9
|
+
</html>;
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
RootLayout as default,
|
|
13
|
+
metadata
|
|
14
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import workspaceConfig from "../growthub.config.json";
|
|
2
|
+
import { readAdapterConfig } from "@/lib/adapters/env";
|
|
3
|
+
import { describeIntegrationAdapter } from "@/lib/adapters/integrations";
|
|
4
|
+
import { describePersistenceMode } from "@/lib/workspace-config";
|
|
5
|
+
import WorkspaceBuilder from "./workspace-builder.jsx";
|
|
6
|
+
|
|
7
|
+
function Home() {
|
|
8
|
+
const adapterConfig = readAdapterConfig();
|
|
9
|
+
const integrationAdapter = describeIntegrationAdapter();
|
|
10
|
+
const persistence = describePersistenceMode();
|
|
11
|
+
return (
|
|
12
|
+
<WorkspaceBuilder
|
|
13
|
+
initialConfig={workspaceConfig}
|
|
14
|
+
adapterConfig={adapterConfig}
|
|
15
|
+
integrationAdapter={integrationAdapter}
|
|
16
|
+
persistence={persistence}
|
|
17
|
+
/>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
Home as default
|
|
23
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { readAdapterConfig } from "@/lib/adapters/env";
|
|
2
|
+
import { describeIntegrationAdapter, listAgencyPortalIntegrations } from "@/lib/adapters/integrations";
|
|
3
|
+
import { groupIntegrationsByLane } from "@/lib/domain/integrations";
|
|
4
|
+
import { buildPortalWorkspace } from "@/lib/domain/portal";
|
|
5
|
+
import { describeAuthAdapter } from "@/lib/adapters/auth";
|
|
6
|
+
import { describePaymentAdapter } from "@/lib/adapters/payments";
|
|
7
|
+
import { describePersistenceAdapter } from "@/lib/adapters/persistence";
|
|
8
|
+
import Link from "next/link";
|
|
9
|
+
async function IntegrationsSettingsPage() {
|
|
10
|
+
const config = readAdapterConfig();
|
|
11
|
+
const adapter = describeIntegrationAdapter();
|
|
12
|
+
const grouped = groupIntegrationsByLane(await listAgencyPortalIntegrations());
|
|
13
|
+
const workspace = buildPortalWorkspace({
|
|
14
|
+
config,
|
|
15
|
+
integrations: grouped,
|
|
16
|
+
adapters: {
|
|
17
|
+
persistence: describePersistenceAdapter(),
|
|
18
|
+
auth: describeAuthAdapter(),
|
|
19
|
+
payments: describePaymentAdapter(),
|
|
20
|
+
integrations: adapter
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const rows = [
|
|
24
|
+
...grouped.dataSources.map((item) => ({ ...item, primitiveGroup: "data-source" })),
|
|
25
|
+
...grouped.workspaceIntegrations.map((item) => ({ ...item, primitiveGroup: "workspace-integration" }))
|
|
26
|
+
];
|
|
27
|
+
return <main className="shell">
|
|
28
|
+
<aside className="sidebar">
|
|
29
|
+
<div className="brand">
|
|
30
|
+
<span className="brand-mark">{workspace.identity.mark}</span>
|
|
31
|
+
<span>{workspace.identity.label}</span>
|
|
32
|
+
</div>
|
|
33
|
+
<nav className="nav">
|
|
34
|
+
{workspace.navigation.map((item) => <Link className={item.href === "/settings/integrations" ? "active" : ""} key={item.href} href={item.href.startsWith("#") ? `/${item.href}` : item.href}>
|
|
35
|
+
{item.label}
|
|
36
|
+
</Link>)}
|
|
37
|
+
</nav>
|
|
38
|
+
<div className="sidebar-footer">
|
|
39
|
+
<span className="status-dot" />
|
|
40
|
+
{adapter.authority}
|
|
41
|
+
</div>
|
|
42
|
+
</aside>
|
|
43
|
+
<section className="main">
|
|
44
|
+
<div className="utility-bar">
|
|
45
|
+
<div>
|
|
46
|
+
<strong>{adapter.label}</strong>
|
|
47
|
+
<span>{workspace.identity.primitiveContract}</span>
|
|
48
|
+
</div>
|
|
49
|
+
<div className="utility-actions">
|
|
50
|
+
<span className="pill">{adapter.id}</span>
|
|
51
|
+
<span className="pill">{adapter.authority}</span>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
<section className="primitive-grid summary" aria-label="Integration adapter primitives">
|
|
55
|
+
<article className="primitive-card">
|
|
56
|
+
<div className="primitive-card-top">
|
|
57
|
+
<p className="card-label">Authority</p>
|
|
58
|
+
<span className="status runtime-derived">{adapter.authority}</span>
|
|
59
|
+
</div>
|
|
60
|
+
<strong>{adapter.id}</strong>
|
|
61
|
+
<div className="primitive-meta">
|
|
62
|
+
{adapter.requiredEnv.map((key) => <code key={key}>{key}</code>)}
|
|
63
|
+
</div>
|
|
64
|
+
</article>
|
|
65
|
+
<article className="primitive-card">
|
|
66
|
+
<div className="primitive-card-top">
|
|
67
|
+
<p className="card-label">Data-source primitives</p>
|
|
68
|
+
<span className="status runtime-derived">{grouped.dataSources.length}</span>
|
|
69
|
+
</div>
|
|
70
|
+
<strong>{grouped.dataSources.filter((item) => item.isConnected).length}/{grouped.dataSources.length}</strong>
|
|
71
|
+
<div className="primitive-meta"><span>{config.reportingAdapter || "reporting-adapter"}</span></div>
|
|
72
|
+
</article>
|
|
73
|
+
<article className="primitive-card">
|
|
74
|
+
<div className="primitive-card-top">
|
|
75
|
+
<p className="card-label">Workspace primitives</p>
|
|
76
|
+
<span className="status runtime-derived">{grouped.workspaceIntegrations.length}</span>
|
|
77
|
+
</div>
|
|
78
|
+
<strong>{grouped.workspaceIntegrations.filter((item) => item.isConnected).length}/{grouped.workspaceIntegrations.length}</strong>
|
|
79
|
+
<div className="primitive-meta"><span>{config.integrationAdapter}</span></div>
|
|
80
|
+
</article>
|
|
81
|
+
</section>
|
|
82
|
+
<section className="integration-board">
|
|
83
|
+
{rows.map((item) => <article className="integration-card" key={item.id}>
|
|
84
|
+
<div className="integration-card-top">
|
|
85
|
+
<div className="provider-mark">{item.icon || item.label.slice(0, 1)}</div>
|
|
86
|
+
<div>
|
|
87
|
+
<strong>{item.label}</strong>
|
|
88
|
+
<p>{item.provider} / {item.objectType} / {item.primitiveGroup}</p>
|
|
89
|
+
</div>
|
|
90
|
+
<span className={`status ${item.status}`}>{item.status}</span>
|
|
91
|
+
</div>
|
|
92
|
+
<div className="integration-card-meta">
|
|
93
|
+
<span>{item.authPath}</span>
|
|
94
|
+
<span>{item.setupMode}</span>
|
|
95
|
+
<span>{item.authType}</span>
|
|
96
|
+
{item.secretEnvName ? <span>{item.secretEnvName}</span> : null}
|
|
97
|
+
</div>
|
|
98
|
+
</article>)}
|
|
99
|
+
</section>
|
|
100
|
+
</section>
|
|
101
|
+
</main>;
|
|
102
|
+
}
|
|
103
|
+
export {
|
|
104
|
+
IntegrationsSettingsPage as default
|
|
105
|
+
};
|