@opensaas/stack-cli 0.6.0 → 0.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8UnC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAkB9C"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqVnC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAkB9C"}
@@ -64,12 +64,19 @@ function ensureDir(dirPath) {
64
64
  }
65
65
  }
66
66
  /**
67
- * Get plugin source path (relative to CLI package)
67
+ * Get marketplace source for OpenSaaS Stack plugins
68
68
  */
69
- function getPluginSourcePath() {
70
- // This will be the path to the plugin directory within the installed CLI package
69
+ function getMarketplaceSource() {
70
+ // Try to detect if we're in development (local monorepo)
71
71
  const cliPackageDir = path.dirname(path.dirname(new URL(import.meta.url).pathname));
72
- return path.join(cliPackageDir, 'plugin');
72
+ const potentialMonorepoRoot = path.join(cliPackageDir, '..', '..');
73
+ const marketplacePath = path.join(potentialMonorepoRoot, 'claude-plugins', 'marketplace.json');
74
+ if (fs.existsSync(marketplacePath)) {
75
+ // Development mode - use local marketplace
76
+ return { source: 'local', path: path.join(potentialMonorepoRoot, 'claude-plugins') };
77
+ }
78
+ // Production mode - use GitHub marketplace
79
+ return { source: 'github', path: 'OpenSaasAU/stack' };
73
80
  }
74
81
  /**
75
82
  * Setup Claude Code integration with plugin
@@ -78,18 +85,6 @@ async function setupClaudeCode(cwd, analysis) {
78
85
  const claudeDir = path.join(cwd, '.claude');
79
86
  // Create .claude directory
80
87
  ensureDir(claudeDir);
81
- // Create .mcp.json at project root (project-scoped MCP configuration)
82
- const mcpConfig = {
83
- mcpServers: {
84
- 'opensaas-migration': {
85
- type: 'stdio',
86
- command: 'npx',
87
- args: ['-y', '@opensaas/stack-cli', 'mcp', 'start'],
88
- env: {},
89
- },
90
- },
91
- };
92
- fs.writeFileSync(path.join(cwd, '.mcp.json'), JSON.stringify(mcpConfig, null, 2));
93
88
  // Write project metadata file for the plugin to read
94
89
  const projectMetadata = {
95
90
  projectTypes: analysis.projectTypes,
@@ -99,7 +94,7 @@ async function setupClaudeCode(cwd, analysis) {
99
94
  cwd: analysis.cwd,
100
95
  };
101
96
  fs.writeFileSync(path.join(claudeDir, 'opensaas-project.json'), JSON.stringify(projectMetadata, null, 2));
102
- // Configure Claude Code plugin in settings.json
97
+ // Configure Claude Code marketplace and plugins in settings.json
103
98
  const settingsPath = path.join(claudeDir, 'settings.json');
104
99
  let settings = {};
105
100
  // Read existing settings if they exist
@@ -112,25 +107,22 @@ async function setupClaudeCode(cwd, analysis) {
112
107
  settings = {};
113
108
  }
114
109
  }
115
- // Get the plugin source path
116
- const pluginSource = getPluginSourcePath();
117
- // Add plugin configuration
118
- if (!settings.plugins) {
119
- settings.plugins = {};
110
+ // Get the marketplace source
111
+ const marketplaceSource = getMarketplaceSource();
112
+ // Add marketplace configuration
113
+ if (!settings.extraKnownMarketplaces) {
114
+ settings.extraKnownMarketplaces = {};
120
115
  }
121
- if (!settings.plugins.installed) {
122
- settings.plugins.installed = [];
123
- }
124
- // Check if plugin is already installed
125
- const pluginId = 'opensaas-migration@local';
126
- const isInstalled = settings.plugins.installed.some((p) => typeof p === 'string' ? p === pluginId : p.id === pluginId);
127
- if (!isInstalled) {
128
- settings.plugins.installed.push({
129
- id: pluginId,
130
- source: pluginSource,
131
- enabled: true,
132
- });
116
+ settings.extraKnownMarketplaces['opensaas-stack-marketplace'] = {
117
+ source: marketplaceSource,
118
+ };
119
+ // Add enabled plugins
120
+ if (!settings.enabledPlugins) {
121
+ settings.enabledPlugins = {};
133
122
  }
123
+ // Add migration plugin if not already enabled
124
+ const migrationPluginId = 'opensaas-migration@opensaas-stack-marketplace';
125
+ settings.enabledPlugins[migrationPluginId] = true;
134
126
  // Write settings back
135
127
  fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
136
128
  // Create a simple README explaining the setup
@@ -160,6 +152,12 @@ Claude will guide you through:
160
152
 
161
153
  ## What's Configured
162
154
 
155
+ ### OpenSaaS Stack Marketplace
156
+
157
+ The marketplace provides access to official OpenSaaS plugins:
158
+ - **opensaas-migration**: Migration assistant for converting existing projects
159
+ - **opensaas-stack**: Development tools for building with OpenSaaS Stack
160
+
163
161
  ### OpenSaaS Migration Plugin
164
162
 
165
163
  The migration assistant plugin provides:
@@ -169,13 +167,13 @@ The migration assistant plugin provides:
169
167
 
170
168
  ### MCP Server
171
169
 
172
- The \`.mcp.json\` file configures the OpenSaaS migration MCP server with tools for:
170
+ The migration plugin includes MCP server integration with tools for:
173
171
  - Schema analysis
174
172
  - Interactive migration wizard
175
173
  - Documentation search
176
174
  - Code generation
177
175
 
178
- When you open this project in Claude Code, you may be prompted to approve the MCP server.
176
+ When you open this project in Claude Code, the MCP server will be automatically configured through the plugin.
179
177
 
180
178
  ## Resources
181
179
 
@@ -249,10 +247,10 @@ async function migrateCommand(options) {
249
247
  await setupClaudeCode(cwd, analysis);
250
248
  claudeSpinner.succeed(chalk.green('Claude Code ready'));
251
249
  console.log(chalk.dim(' ├─ Created .claude directory'));
252
- console.log(chalk.dim(' ├─ Installed opensaas-migration plugin'));
250
+ console.log(chalk.dim(' ├─ Added opensaas-stack-marketplace'));
251
+ console.log(chalk.dim(' ├─ Enabled opensaas-migration plugin (with MCP server)'));
253
252
  console.log(chalk.dim(' ├─ Configured .claude/settings.json'));
254
- console.log(chalk.dim(' ├─ Wrote opensaas-project.json (project metadata)'));
255
- console.log(chalk.dim(' └─ Created .mcp.json (MCP server config)'));
253
+ console.log(chalk.dim(' └─ Wrote opensaas-project.json (project metadata)'));
256
254
  }
257
255
  catch (error) {
258
256
  claudeSpinner.fail(chalk.red('Failed to setup Claude Code'));
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AAQrB;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAkB,EAAE,CAAA;IAE/B,mBAAmB;IACnB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAA;IAClE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtB,CAAC;IAED,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACxB,CAAC;IAED,oBAAoB;IACpB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IACtD,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;QACjE,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,IAAI,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,GAAW;IAI5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAEnD,iBAAiB;IACjB,MAAM,UAAU,GAAG,8BAA8B,CAAA;IACjD,MAAM,MAAM,GAAgD,EAAE,CAAA;IAC9D,IAAI,KAAK,CAAA;IAET,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,UAAU,GAAG,IAAI;aACpB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CACxF,CAAC,MAAM,CAAA;QACV,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,mBAAmB;IACnB,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE7D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAI3B,yDAAyD;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnF,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAClE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAA;IAE9F,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,2CAA2C;QAC3C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,EAAE,CAAA;IACtF,CAAC;IAED,2CAA2C;IAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAA;AACvD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,QAAyB;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAE3C,2BAA2B;IAC3B,SAAS,CAAC,SAAS,CAAC,CAAA;IAEpB,qDAAqD;IACrD,MAAM,eAAe,GAAG;QACtB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ;QACvC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;QAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,KAAK;QAClC,GAAG,EAAE,QAAQ,CAAC,GAAG;KAClB,CAAA;IACD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,EAC7C,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CACzC,CAAA;IAED,iEAAiE;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;IAC1D,IAAI,QAAQ,GAWR,EAAE,CAAA;IAEN,uCAAuC;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;YAC3C,QAAQ,GAAG,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAA;IAEhD,gCAAgC;IAChC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QACrC,QAAQ,CAAC,sBAAsB,GAAG,EAAE,CAAA;IACtC,CAAC;IAED,QAAQ,CAAC,sBAAsB,CAAC,4BAA4B,CAAC,GAAG;QAC9D,MAAM,EAAE,iBAAiB;KAC1B,CAAA;IAED,sBAAsB;IACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7B,QAAQ,CAAC,cAAc,GAAG,EAAE,CAAA;IAC9B,CAAC;IAED,8CAA8C;IAC9C,MAAM,iBAAiB,GAAG,+CAA+C,CAAA;IACzE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;IAEjD,sBAAsB;IACtB,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAEjE,8CAA8C;IAC9C,MAAM,aAAa,GAAG;;;;;;uBAMD,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;2BAC5B,QAAQ,CAAC,QAAQ,IAAI,cAAc;yBACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;;EAGnD,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC3C,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACpG,CAAC,CAAC,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CC,CAAA;IAEC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAA;AACpE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,OAAuB;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAEzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAA;IAE/D,8BAA8B;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAA;IAExD,IAAI,YAA2B,CAAA;IAC/B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,YAAY,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAA;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAA;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAA;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAA;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAEpE,yBAAyB;IACzB,MAAM,eAAe,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAA;IAE1D,MAAM,QAAQ,GAAoB;QAChC,YAAY;QACZ,GAAG;KACJ,CAAA;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAA;YACrD,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAA;YACvC,QAAQ,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAA;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAA;QAE9E,qBAAqB;QACrB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;QAC5C,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,UAAU,UAAU,CAAC,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAA;IACrF,CAAC;IAED,2CAA2C;IAC3C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,aAAa,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAA;QAE9D,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YACpC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAA;YAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAA;YACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAA;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAA;YACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAA;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAA;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAA;YAC5D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;IAEpD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAA;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAA;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAA;IAChE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAA;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAA;IAChF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAA;IACtC,OAAO,CAAC,WAAW,CAAC,+CAA+C,CAAC,CAAA;IAEpE,OAAO;SACJ,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,CAAA;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensaas/stack-cli",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "CLI tools for OpenSaas Stack",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -51,7 +51,7 @@
51
51
  "ora": "^9.0.0",
52
52
  "prompts": "^2.4.2",
53
53
  "zod": "^4.1.13",
54
- "@opensaas/stack-core": "0.6.0"
54
+ "@opensaas/stack-core": "0.6.2"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@types/fs-extra": "^11.0.4",
@@ -1,15 +0,0 @@
1
- {
2
- "name": "opensaas-migration",
3
- "description": "OpenSaaS Stack migration assistant with AI-guided configuration, schema analysis, and code generation support",
4
- "version": "1.0.0",
5
- "author": {
6
- "name": "OpenSaaS Team",
7
- "url": "https://github.com/OpenSaasAU/stack"
8
- },
9
- "repository": {
10
- "type": "git",
11
- "url": "https://github.com/OpenSaasAU/stack",
12
- "directory": "packages/cli/plugin"
13
- },
14
- "keywords": ["migration", "opensaas", "prisma", "keystone", "nextjs", "code-generation"]
15
- }
package/plugin/README.md DELETED
@@ -1,112 +0,0 @@
1
- # OpenSaaS Migration Assistant Plugin
2
-
3
- A Claude Code plugin that provides AI-guided migration assistance for converting existing Prisma, KeystoneJS, or Next.js projects to OpenSaaS Stack.
4
-
5
- ## Features
6
-
7
- - **Migration Assistant Agent**: Contextual agent that guides you through the migration process
8
- - **Interactive Commands**: Slash commands for schema analysis, config generation, and validation
9
- - **Migration Skill**: Expert knowledge about migration patterns and best practices
10
- - **MCP Integration**: Works with the OpenSaaS MCP server for advanced tooling
11
-
12
- ## Installation
13
-
14
- This plugin is automatically set up when you run:
15
-
16
- ```bash
17
- npx @opensaas/stack-cli migrate --with-ai
18
- ```
19
-
20
- The CLI will:
21
-
22
- 1. Install this plugin to your project
23
- 2. Create `.claude/opensaas-project.json` with your project metadata
24
- 3. Configure `.claude/settings.json` to enable the plugin
25
- 4. Set up `.mcp.json` for MCP server integration
26
-
27
- ## What's Included
28
-
29
- ### Migration Assistant Agent
30
-
31
- A specialized agent that:
32
-
33
- - Reads your project metadata from `.claude/opensaas-project.json`
34
- - Guides you through the migration wizard
35
- - Explains access control patterns
36
- - Generates `opensaas.config.ts`
37
-
38
- ### Slash Commands
39
-
40
- - `/analyze-schema` - Detailed schema analysis with recommendations
41
- - `/generate-config` - Generate opensaas.config.ts
42
- - `/validate-migration` - Validate generated configuration
43
-
44
- ### Migration Skill
45
-
46
- Expert knowledge including:
47
-
48
- - Access control patterns
49
- - Field type mappings
50
- - Database configuration examples
51
- - Common challenges and solutions
52
-
53
- ## Usage
54
-
55
- Once installed, simply ask Claude:
56
-
57
- ```
58
- Help me migrate to OpenSaaS Stack
59
- ```
60
-
61
- The migration assistant will:
62
-
63
- 1. Read your project details
64
- 2. Start the interactive wizard
65
- 3. Guide you through configuration
66
- 4. Generate your opensaas.config.ts
67
-
68
- ## Project Metadata
69
-
70
- The CLI creates `.claude/opensaas-project.json` with information about your project:
71
-
72
- ```json
73
- {
74
- "projectTypes": ["prisma"],
75
- "provider": "sqlite",
76
- "models": [
77
- { "name": "User", "fieldCount": 5 },
78
- { "name": "Post", "fieldCount": 7 }
79
- ],
80
- "hasAuth": true
81
- }
82
- ```
83
-
84
- The plugin reads this file to provide contextual assistance.
85
-
86
- ## Development
87
-
88
- This plugin is part of the `@opensaas/stack-cli` package and is distributed with it.
89
-
90
- **Directory structure:**
91
-
92
- ```
93
- plugin/
94
- ├── .claude-plugin/
95
- │ └── plugin.json # Plugin manifest
96
- ├── agents/
97
- │ └── migration-assistant.md # Migration agent
98
- ├── commands/
99
- │ ├── analyze-schema.md
100
- │ ├── generate-config.md
101
- │ └── validate-migration.md
102
- ├── skills/
103
- │ └── opensaas-migration/
104
- │ └── SKILL.md
105
- └── README.md
106
- ```
107
-
108
- ## Links
109
-
110
- - [OpenSaaS Stack Documentation](https://stack.opensaas.au/)
111
- - [Migration Guide](https://stack.opensaas.au/guides/migration)
112
- - [GitHub Repository](https://github.com/OpenSaasAU/stack)
@@ -1,150 +0,0 @@
1
- ---
2
- name: migration-assistant
3
- description: OpenSaaS Stack migration expert. Use when helping users migrate from Prisma, KeystoneJS, or Next.js projects to OpenSaaS Stack. Proactively helps with schema analysis, access control configuration, and opensaas.config.ts generation.
4
- model: sonnet
5
- skills: opensaas-migration
6
- ---
7
-
8
- You are the OpenSaaS Stack Migration Assistant, helping users migrate their existing projects to OpenSaaS Stack.
9
-
10
- ## Getting Project Context
11
-
12
- **IMPORTANT**: Before starting, read the project metadata from `.claude/opensaas-project.json` to understand:
13
-
14
- - Project type (Prisma, KeystoneJS, Next.js)
15
- - Database provider
16
- - Detected models and their structure
17
- - Whether authentication is already present
18
-
19
- This file is created by `npx @opensaas/stack-cli migrate --with-ai` and contains essential project information.
20
-
21
- ## Your Role
22
-
23
- Guide the user through a complete migration to OpenSaaS Stack:
24
-
25
- 1. **Analyze** their current project structure
26
- 2. **Explain** what OpenSaaS Stack offers (access control, admin UI, type safety)
27
- 3. **Guide** them through the migration wizard
28
- 4. **Generate** a working `opensaas.config.ts`
29
- 5. **Validate** the generated configuration
30
- 6. **Provide** clear next steps
31
-
32
- ## Available MCP Tools
33
-
34
- ### Schema Analysis
35
-
36
- - `opensaas_introspect_prisma` - Analyze Prisma schema in detail
37
- - `opensaas_introspect_keystone` - Analyze KeystoneJS config
38
-
39
- ### Migration Wizard
40
-
41
- - `opensaas_start_migration` - Start the interactive wizard
42
- - `opensaas_answer_migration` - Answer wizard questions
43
-
44
- ### Documentation
45
-
46
- - `opensaas_search_migration_docs` - Search migration documentation
47
- - `opensaas_get_example` - Get example code patterns
48
-
49
- ### Validation
50
-
51
- - `opensaas_validate_feature` - Validate implementation
52
-
53
- ## Conversation Guidelines
54
-
55
- ### When the user says "help me migrate" or similar:
56
-
57
- 1. **Read project metadata** from `.claude/opensaas-project.json`:
58
-
59
- ```
60
- Use the Read tool to read .claude/opensaas-project.json
61
- ```
62
-
63
- 2. **Acknowledge** their project based on the metadata:
64
-
65
- > "I can see you have a [PROJECT_TYPE] project with [MODEL_COUNT] models. Let me help you migrate to OpenSaaS Stack!"
66
-
67
- 3. **Start the wizard** by calling:
68
-
69
- ```
70
- opensaas_start_migration({ projectType: "[project_type]" })
71
- ```
72
-
73
- 4. **Present questions naturally** - don't mention session IDs or technical details to the user
74
-
75
- 5. **Explain choices** - help them understand what each option means:
76
- - Access control patterns
77
- - Authentication options
78
- - Database configuration
79
-
80
- 6. **Show progress** - let them know how far along they are
81
-
82
- 7. **Generate the config** when complete and explain what was created
83
-
84
- ### When explaining OpenSaaS Stack:
85
-
86
- Highlight these benefits:
87
-
88
- - **Built-in access control** - Secure by default
89
- - **Admin UI** - Auto-generated from your schema
90
- - **Type safety** - Full TypeScript support
91
- - **Prisma integration** - Uses familiar ORM
92
- - **Plugin system** - Easy to extend
93
-
94
- ### When answering questions:
95
-
96
- - Use `opensaas_search_migration_docs` to find accurate information
97
- - Use `opensaas_get_example` to show code patterns
98
- - Be honest if something isn't supported
99
-
100
- ### Tone
101
-
102
- - Be encouraging and helpful
103
- - Explain technical concepts simply
104
- - Celebrate progress ("Great choice!", "Almost there!")
105
- - Don't overwhelm with information
106
-
107
- ## Example Conversation
108
-
109
- **User:** Help me migrate to OpenSaaS Stack
110
-
111
- **You:** Let me check your project details...
112
-
113
- [Read .claude/opensaas-project.json]
114
-
115
- I can see you have a Prisma project with 5 models. OpenSaaS Stack will give you:
116
-
117
- - Automatic admin UI for managing your data
118
- - Built-in access control to secure your API
119
- - Type-safe database operations
120
-
121
- Let me start the migration wizard to configure your project...
122
-
123
- [Call opensaas_start_migration]
124
-
125
- **User:** [answers questions]
126
-
127
- **You:** [Continue through wizard, explain each choice, generate final config]
128
-
129
- ## Error Handling
130
-
131
- If something goes wrong:
132
-
133
- 1. Explain what happened in simple terms
134
- 2. Suggest alternatives or manual steps
135
- 3. Link to documentation for more help
136
-
137
- If `.claude/opensaas-project.json` doesn't exist:
138
-
139
- - Explain that `npx @opensaas/stack-cli migrate --with-ai` should be run first
140
- - Offer to help them run it
141
-
142
- ## After Migration
143
-
144
- Once the config is generated, guide them through:
145
-
146
- 1. Installing dependencies
147
- 2. Running `opensaas generate`
148
- 3. Running `prisma db push`
149
- 4. Starting their dev server
150
- 5. Visiting the admin UI
@@ -1,34 +0,0 @@
1
- ---
2
- description: Analyze the current project schema and provide a detailed breakdown
3
- ---
4
-
5
- Analyze the current project schema and provide a detailed breakdown.
6
-
7
- ## Instructions
8
-
9
- 1. Read `.claude/opensaas-project.json` to determine the project type
10
- 2. Use `opensaas_introspect_prisma` or `opensaas_introspect_keystone` based on project type
11
- 3. Present the results in a clear, organized format
12
- 4. Highlight:
13
- - All models and their fields
14
- - Relationships between models
15
- - Potential access control patterns
16
- - Any issues or warnings
17
-
18
- ## Output Format
19
-
20
- Present like this:
21
-
22
- ### Models Summary
23
-
24
- | Model | Fields | Has Relations | Suggested Access |
25
- | ----- | ------ | ------------- | ---------------- |
26
- | ... | ... | ... | ... |
27
-
28
- ### Detailed Analysis
29
-
30
- [For each model, show fields and relationships]
31
-
32
- ### Recommendations
33
-
34
- [Based on the schema, suggest access control patterns]
@@ -1,33 +0,0 @@
1
- ---
2
- description: Generate the opensaas.config.ts file for this project
3
- ---
4
-
5
- Generate the opensaas.config.ts file for this project.
6
-
7
- ## Instructions
8
-
9
- 1. Read `.claude/opensaas-project.json` to get project details
10
- 2. If migration wizard hasn't been started, start it:
11
-
12
- ```
13
- opensaas_start_migration({ projectType: "<project_type>" })
14
- ```
15
-
16
- 3. Guide the user through any remaining questions
17
-
18
- 4. When complete, display:
19
- - The generated config file
20
- - Dependencies to install
21
- - Next steps to run
22
-
23
- 5. Offer to explain any part of the generated config
24
-
25
- ## Quick Mode
26
-
27
- If the user wants defaults, use these answers based on the project metadata:
28
-
29
- - preserve_database: true
30
- - db_provider: [from project metadata]
31
- - enable_auth: [from project metadata]
32
- - default_access: "public-read-auth-write"
33
- - admin_base_path: "/admin"
@@ -1,34 +0,0 @@
1
- ---
2
- description: Validate the generated opensaas.config.ts file
3
- ---
4
-
5
- Validate the generated opensaas.config.ts file.
6
-
7
- ## Instructions
8
-
9
- 1. Check if opensaas.config.ts exists in the project root
10
-
11
- 2. If it exists, verify:
12
- - Syntax is valid TypeScript
13
- - All imports are correct
14
- - Database config is complete
15
- - Lists match original schema
16
-
17
- 3. Try running:
18
-
19
- ```bash
20
- npx @opensaas/stack-cli generate
21
- ```
22
-
23
- 4. Report any errors and suggest fixes
24
-
25
- 5. If validation passes, confirm next steps:
26
- - `npx prisma generate`
27
- - `npx prisma db push`
28
- - `pnpm dev`
29
-
30
- ## Common Issues
31
-
32
- - Missing dependencies → suggest `pnpm add ...`
33
- - Database URL not set → remind about .env file
34
- - Type errors → suggest specific fixes
@@ -1,192 +0,0 @@
1
- ---
2
- name: opensaas-migration
3
- description: Expert knowledge for migrating projects to OpenSaaS Stack. Use when discussing migration strategies, access control patterns, or OpenSaaS Stack configuration best practices.
4
- ---
5
-
6
- # OpenSaaS Stack Migration
7
-
8
- Expert guidance for migrating existing projects to OpenSaaS Stack.
9
-
10
- ## When to Use This Skill
11
-
12
- Use this skill when:
13
-
14
- - Planning a migration from Prisma, KeystoneJS, or Next.js
15
- - Designing access control patterns
16
- - Configuring `opensaas.config.ts`
17
- - Troubleshooting migration issues
18
- - Explaining OpenSaaS Stack concepts
19
-
20
- ## Migration Process
21
-
22
- ### 1. Schema Analysis
23
-
24
- **Prisma Projects:**
25
-
26
- - Analyze existing `schema.prisma`
27
- - Identify models, fields, and relationships
28
- - Note any Prisma-specific features used
29
-
30
- **KeystoneJS Projects:**
31
-
32
- - Review list definitions
33
- - Map KeystoneJS fields to OpenSaaS fields
34
- - Identify access control patterns
35
-
36
- ### 2. Access Control Design
37
-
38
- **Common Patterns:**
39
-
40
- ```typescript
41
- // Public read, authenticated write
42
- operation: {
43
- query: () => true,
44
- create: ({ session }) => !!session?.userId,
45
- update: ({ session }) => !!session?.userId,
46
- delete: ({ session }) => !!session?.userId,
47
- }
48
-
49
- // Author-only access
50
- operation: {
51
- query: () => true,
52
- update: ({ session, item }) => item.authorId === session?.userId,
53
- delete: ({ session, item }) => item.authorId === session?.userId,
54
- }
55
-
56
- // Admin-only
57
- operation: {
58
- query: ({ session }) => session?.role === 'admin',
59
- create: ({ session }) => session?.role === 'admin',
60
- update: ({ session }) => session?.role === 'admin',
61
- delete: ({ session }) => session?.role === 'admin',
62
- }
63
-
64
- // Filter-based access
65
- operation: {
66
- query: ({ session }) => ({
67
- where: { authorId: { equals: session?.userId } }
68
- }),
69
- }
70
- ```
71
-
72
- ### 3. Field Mapping
73
-
74
- **Prisma to OpenSaaS:**
75
-
76
- | Prisma Type | OpenSaaS Field |
77
- | ----------- | ------------------------------ |
78
- | `String` | `text()` |
79
- | `Int` | `integer()` |
80
- | `Boolean` | `checkbox()` |
81
- | `DateTime` | `timestamp()` |
82
- | `Enum` | `select({ options: [...] })` |
83
- | `Relation` | `relationship({ ref: '...' })` |
84
-
85
- **KeystoneJS to OpenSaaS:**
86
-
87
- | KeystoneJS Field | OpenSaaS Field |
88
- | ---------------- | ---------------- |
89
- | `text` | `text()` |
90
- | `integer` | `integer()` |
91
- | `checkbox` | `checkbox()` |
92
- | `timestamp` | `timestamp()` |
93
- | `select` | `select()` |
94
- | `relationship` | `relationship()` |
95
- | `password` | `password()` |
96
-
97
- ### 4. Database Configuration
98
-
99
- **SQLite (Development):**
100
-
101
- ```typescript
102
- import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3'
103
- import Database from 'better-sqlite3'
104
-
105
- export default config({
106
- db: {
107
- provider: 'sqlite',
108
- url: process.env.DATABASE_URL || 'file:./dev.db',
109
- prismaClientConstructor: (PrismaClient) => {
110
- const db = new Database(process.env.DATABASE_URL || './dev.db')
111
- const adapter = new PrismaBetterSQLite3(db)
112
- return new PrismaClient({ adapter })
113
- },
114
- },
115
- })
116
- ```
117
-
118
- **PostgreSQL (Production):**
119
-
120
- ```typescript
121
- import { PrismaPg } from '@prisma/adapter-pg'
122
- import pg from 'pg'
123
-
124
- export default config({
125
- db: {
126
- provider: 'postgresql',
127
- url: process.env.DATABASE_URL,
128
- prismaClientConstructor: (PrismaClient) => {
129
- const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL })
130
- const adapter = new PrismaPg(pool)
131
- return new PrismaClient({ adapter })
132
- },
133
- },
134
- })
135
- ```
136
-
137
- ## Common Migration Challenges
138
-
139
- ### Challenge: Preserving Existing Data
140
-
141
- **Solution:**
142
-
143
- - Use `opensaas generate` to create Prisma schema
144
- - Use `prisma db push` instead of migrations for existing databases
145
- - Never use `prisma migrate dev` with existing data
146
-
147
- ### Challenge: Complex Access Control
148
-
149
- **Solution:**
150
-
151
- - Start with simple boolean access control
152
- - Iterate to filter-based access as needed
153
- - Use field-level access for sensitive data
154
-
155
- ### Challenge: Custom Field Types
156
-
157
- **Solution:**
158
-
159
- - Create custom field builders extending `BaseFieldConfig`
160
- - Implement `getZodSchema`, `getPrismaType`, `getTypeScriptType`
161
- - Register UI components for admin interface
162
-
163
- ## Migration Checklist
164
-
165
- - [ ] Analyze existing schema
166
- - [ ] Design access control patterns
167
- - [ ] Create `opensaas.config.ts`
168
- - [ ] Configure database adapter
169
- - [ ] Run `opensaas generate`
170
- - [ ] Run `prisma generate`
171
- - [ ] Run `prisma db push`
172
- - [ ] Test access control
173
- - [ ] Verify admin UI
174
- - [ ] Update application code to use context
175
- - [ ] Test all CRUD operations
176
- - [ ] Deploy to production
177
-
178
- ## Best Practices
179
-
180
- 1. **Start Simple**: Begin with basic access control, refine later
181
- 2. **Test Access Control**: Verify permissions work as expected
182
- 3. **Use Context Everywhere**: Replace direct Prisma calls with `context.db`
183
- 4. **Leverage Plugins**: Use `@opensaas/stack-auth` for authentication
184
- 5. **Version Control**: Commit `opensaas.config.ts` to git
185
- 6. **Document Decisions**: Comment complex access control logic
186
-
187
- ## Resources
188
-
189
- - [OpenSaaS Stack Documentation](https://stack.opensaas.au/)
190
- - [Migration Guide](https://stack.opensaas.au/guides/migration)
191
- - [Access Control Guide](https://stack.opensaas.au/core-concepts/access-control)
192
- - [Field Types](https://stack.opensaas.au/core-concepts/field-types)