@factiii/stack 0.1.34 → 0.1.35
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 +441 -441
- package/bin/stack +46 -0
- package/dist/cli/fix.js +10 -10
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +20 -7
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/scan.d.ts.map +1 -1
- package/dist/cli/scan.js +14 -22
- package/dist/cli/scan.js.map +1 -1
- package/dist/generators/generate-stack-yml.d.ts +1 -1
- package/dist/generators/generate-stack-yml.d.ts.map +1 -1
- package/dist/generators/generate-stack-yml.js +96 -69
- package/dist/generators/generate-stack-yml.js.map +1 -1
- package/dist/plugins/addons/openclaw/index.d.ts +45 -0
- package/dist/plugins/addons/openclaw/index.d.ts.map +1 -0
- package/dist/plugins/addons/openclaw/index.js +107 -0
- package/dist/plugins/addons/openclaw/index.js.map +1 -0
- package/dist/plugins/addons/openclaw/scanfix/setup.d.ts +19 -0
- package/dist/plugins/addons/openclaw/scanfix/setup.d.ts.map +1 -0
- package/dist/plugins/addons/openclaw/scanfix/setup.js +441 -0
- package/dist/plugins/addons/openclaw/scanfix/setup.js.map +1 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +8 -0
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/pipelines/aws/index.js +15 -15
- package/dist/plugins/pipelines/aws/prod.js +7 -7
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts +3 -1
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.js +17 -7
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.d.ts +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.js +27 -73
- package/dist/plugins/pipelines/aws/scanfix/credentials.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/db-replication.d.ts +1 -4
- package/dist/plugins/pipelines/aws/scanfix/db-replication.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/db-replication.js +9 -39
- package/dist/plugins/pipelines/aws/scanfix/db-replication.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.d.ts +1 -0
- package/dist/plugins/pipelines/aws/scanfix/ec2.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.js +61 -110
- package/dist/plugins/pipelines/aws/scanfix/ec2.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ecr.d.ts +1 -0
- package/dist/plugins/pipelines/aws/scanfix/ecr.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ecr.js +25 -34
- package/dist/plugins/pipelines/aws/scanfix/ecr.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/iam.d.ts +1 -0
- package/dist/plugins/pipelines/aws/scanfix/iam.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/iam.js +35 -44
- package/dist/plugins/pipelines/aws/scanfix/iam.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/rds.d.ts +1 -0
- package/dist/plugins/pipelines/aws/scanfix/rds.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/rds.js +39 -104
- package/dist/plugins/pipelines/aws/scanfix/rds.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/s3.d.ts +1 -0
- package/dist/plugins/pipelines/aws/scanfix/s3.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/s3.js +44 -53
- package/dist/plugins/pipelines/aws/scanfix/s3.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/security-groups.d.ts +1 -0
- package/dist/plugins/pipelines/aws/scanfix/security-groups.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/security-groups.js +80 -79
- package/dist/plugins/pipelines/aws/scanfix/security-groups.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ses.d.ts +1 -0
- package/dist/plugins/pipelines/aws/scanfix/ses.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ses.js +28 -50
- package/dist/plugins/pipelines/aws/scanfix/ses.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ssh-bridge.d.ts +17 -0
- package/dist/plugins/pipelines/aws/scanfix/ssh-bridge.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/ssh-bridge.js +180 -0
- package/dist/plugins/pipelines/aws/scanfix/ssh-bridge.js.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/vpc.d.ts +1 -0
- package/dist/plugins/pipelines/aws/scanfix/vpc.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/vpc.js +93 -94
- package/dist/plugins/pipelines/aws/scanfix/vpc.js.map +1 -1
- package/dist/plugins/pipelines/aws/utils/aws-helpers.d.ts +101 -28
- package/dist/plugins/pipelines/aws/utils/aws-helpers.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/utils/aws-helpers.js +428 -76
- package/dist/plugins/pipelines/aws/utils/aws-helpers.js.map +1 -1
- package/dist/plugins/pipelines/factiii/index.d.ts +11 -1
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/index.js +183 -33
- package/dist/plugins/pipelines/factiii/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.js +4 -4
- package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js +68 -8
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -1
- package/dist/plugins/servers/mac/index.js +13 -13
- package/dist/plugins/servers/mac/staging.js +4 -4
- package/dist/scanfix/fixes/certbot.js +1 -1
- package/dist/scripts/validate-example-values.d.ts +1 -1
- package/dist/scripts/validate-example-values.js +6 -6
- package/dist/utils/config-helpers.d.ts +3 -0
- package/dist/utils/config-helpers.d.ts.map +1 -1
- package/dist/utils/config-helpers.js.map +1 -1
- package/dist/utils/secret-prompts.d.ts +5 -2
- package/dist/utils/secret-prompts.d.ts.map +1 -1
- package/dist/utils/secret-prompts.js +55 -32
- package/dist/utils/secret-prompts.js.map +1 -1
- package/dist/utils/template-generator.js +71 -71
- package/package.json +8 -1
|
@@ -111,10 +111,10 @@ function generateFactiiiYmlTemplate(plugins = null) {
|
|
|
111
111
|
// ============================================================
|
|
112
112
|
// RESERVED CONFIG FIELDS
|
|
113
113
|
// ============================================================
|
|
114
|
-
name: '
|
|
114
|
+
name: 'EXAMPLE_your-repo-name',
|
|
115
115
|
config_version: '0.1.0',
|
|
116
|
-
github_repo: '
|
|
117
|
-
ssl_email: '
|
|
116
|
+
github_repo: 'EXAMPLE_username/repo-name',
|
|
117
|
+
ssl_email: 'EXAMPLE_admin@yourdomain.com',
|
|
118
118
|
pipeline: 'factiii', // Pipeline plugin (e.g., factiii for GitHub Actions)
|
|
119
119
|
// Ansible Vault configuration (for secrets)
|
|
120
120
|
ansible: {
|
|
@@ -126,22 +126,22 @@ function generateFactiiiYmlTemplate(plugins = null) {
|
|
|
126
126
|
// ============================================================
|
|
127
127
|
staging: {
|
|
128
128
|
server: 'mac', // Server OS type (mac, ubuntu, windows, amazon-linux)
|
|
129
|
-
domain: '
|
|
129
|
+
domain: 'EXAMPLE_staging.yourdomain.com', // Used for nginx AND SSH
|
|
130
130
|
env_file: '.env.staging',
|
|
131
131
|
},
|
|
132
132
|
prod: {
|
|
133
133
|
server: 'ubuntu', // Server OS type
|
|
134
134
|
pipeline: 'aws', // Use AWS pipeline for deployment
|
|
135
|
-
domain: '
|
|
135
|
+
domain: 'EXAMPLE_yourdomain.com', // Used for nginx AND SSH
|
|
136
136
|
// AWS-specific config (when server: aws)
|
|
137
137
|
config: 'free-tier', // Options: ec2, free-tier, standard, enterprise
|
|
138
|
-
access_key_id: '
|
|
138
|
+
access_key_id: 'EXAMPLE_AKIAXXXXXXXX',
|
|
139
139
|
region: 'us-east-1',
|
|
140
140
|
// Plugin configs for this environment
|
|
141
141
|
plugins: {
|
|
142
142
|
ecr: {
|
|
143
|
-
ecr_registry: '
|
|
144
|
-
ecr_repository: '
|
|
143
|
+
ecr_registry: 'EXAMPLE_123456789012.dkr.ecr.us-east-1.amazonaws.com',
|
|
144
|
+
ecr_repository: 'EXAMPLE_repo-name',
|
|
145
145
|
},
|
|
146
146
|
},
|
|
147
147
|
},
|
|
@@ -157,43 +157,43 @@ function generateFactiiiYmlTemplate(plugins = null) {
|
|
|
157
157
|
noRefs: true,
|
|
158
158
|
});
|
|
159
159
|
// Add helpful comments after YAML generation
|
|
160
|
-
const comments = `
|
|
161
|
-
# ============================================================
|
|
162
|
-
# ADDITIONAL ENVIRONMENTS
|
|
163
|
-
# ============================================================
|
|
164
|
-
# You can add as many environments as needed (staging2, prod2, qa, demo, etc.)
|
|
165
|
-
# Each environment must specify a 'server' plugin and can have server-specific configs.
|
|
166
|
-
#
|
|
167
|
-
# Example - Additional staging environment:
|
|
168
|
-
# staging2:
|
|
169
|
-
# server: mac
|
|
170
|
-
# domain: staging2.yourdomain.com
|
|
171
|
-
# env_file: .env.staging2
|
|
172
|
-
#
|
|
173
|
-
# Example - Additional prod environment:
|
|
174
|
-
# prod2:
|
|
175
|
-
# server: ubuntu
|
|
176
|
-
# pipeline: aws
|
|
177
|
-
# domain: app2.yourdomain.com
|
|
178
|
-
# config: free-tier
|
|
179
|
-
# access_key_id:
|
|
180
|
-
# region: us-west-2
|
|
181
|
-
|
|
182
|
-
# ============================================================
|
|
183
|
-
# ENVIRONMENT OPTIONS
|
|
184
|
-
# ============================================================
|
|
185
|
-
# All environments support these optional fields:
|
|
186
|
-
# ssh_user: ubuntu # Override SSH user (defaults to stackAuto.yml ssh_user)
|
|
187
|
-
# env_file: .env.{environment} # Override env file name
|
|
188
|
-
|
|
189
|
-
# ============================================================
|
|
190
|
-
# CONTAINER EXCLUSIONS
|
|
191
|
-
# ============================================================
|
|
192
|
-
# Exclude Docker containers from unmanaged container cleanup
|
|
193
|
-
# Uncomment and add container names to keep them running:
|
|
194
|
-
# container_exclusions:
|
|
195
|
-
# - factiii_postgres
|
|
196
|
-
# - legacy_container
|
|
160
|
+
const comments = `
|
|
161
|
+
# ============================================================
|
|
162
|
+
# ADDITIONAL ENVIRONMENTS
|
|
163
|
+
# ============================================================
|
|
164
|
+
# You can add as many environments as needed (staging2, prod2, qa, demo, etc.)
|
|
165
|
+
# Each environment must specify a 'server' plugin and can have server-specific configs.
|
|
166
|
+
#
|
|
167
|
+
# Example - Additional staging environment:
|
|
168
|
+
# staging2:
|
|
169
|
+
# server: mac
|
|
170
|
+
# domain: staging2.yourdomain.com
|
|
171
|
+
# env_file: .env.staging2
|
|
172
|
+
#
|
|
173
|
+
# Example - Additional prod environment:
|
|
174
|
+
# prod2:
|
|
175
|
+
# server: ubuntu
|
|
176
|
+
# pipeline: aws
|
|
177
|
+
# domain: app2.yourdomain.com
|
|
178
|
+
# config: free-tier
|
|
179
|
+
# access_key_id: EXAMPLE_AKIAXXXXXXXX
|
|
180
|
+
# region: us-west-2
|
|
181
|
+
|
|
182
|
+
# ============================================================
|
|
183
|
+
# ENVIRONMENT OPTIONS
|
|
184
|
+
# ============================================================
|
|
185
|
+
# All environments support these optional fields:
|
|
186
|
+
# ssh_user: ubuntu # Override SSH user (defaults to stackAuto.yml ssh_user)
|
|
187
|
+
# env_file: .env.{environment} # Override env file name
|
|
188
|
+
|
|
189
|
+
# ============================================================
|
|
190
|
+
# CONTAINER EXCLUSIONS
|
|
191
|
+
# ============================================================
|
|
192
|
+
# Exclude Docker containers from unmanaged container cleanup
|
|
193
|
+
# Uncomment and add container names to keep them running:
|
|
194
|
+
# container_exclusions:
|
|
195
|
+
# - factiii_postgres
|
|
196
|
+
# - legacy_container
|
|
197
197
|
`;
|
|
198
198
|
return yamlContent + comments;
|
|
199
199
|
}
|
|
@@ -212,20 +212,28 @@ function generateFactiiiYml(rootDir, options = {}) {
|
|
|
212
212
|
// Write file
|
|
213
213
|
fs.writeFileSync(outputPath, content);
|
|
214
214
|
console.log('[OK] Created ' + config_files_js_1.STACK_CONFIG_FILENAME);
|
|
215
|
-
console.log('
|
|
216
|
-
console.log('
|
|
217
|
-
console.log('
|
|
218
|
-
console.log('
|
|
219
|
-
console.log('
|
|
220
|
-
console.log('
|
|
221
|
-
console.log(' [ ]
|
|
222
|
-
console.log('
|
|
223
|
-
console.log('
|
|
224
|
-
console.log('
|
|
225
|
-
console.log(' [ ] npx stack
|
|
226
|
-
console.log('
|
|
215
|
+
console.log('');
|
|
216
|
+
console.log(' This is the configuration file for everything.');
|
|
217
|
+
console.log('');
|
|
218
|
+
console.log('NEXT STEPS:');
|
|
219
|
+
console.log('');
|
|
220
|
+
console.log(' 1. Update this file:');
|
|
221
|
+
console.log(' [ ] Replace all EXAMPLE_ values in ' + config_files_js_1.STACK_CONFIG_FILENAME);
|
|
222
|
+
console.log(' (ssl_email, staging.domain, prod.domain)');
|
|
223
|
+
console.log('');
|
|
224
|
+
console.log(' 2. Set up secrets:');
|
|
225
|
+
console.log(' [ ] npx stack init (vault + SSH keys + credentials)');
|
|
226
|
+
console.log('');
|
|
227
|
+
console.log(' 3. Scan for issues:');
|
|
228
|
+
console.log(' [ ] npx stack scan (read-only check - changes nothing)');
|
|
229
|
+
console.log('');
|
|
230
|
+
console.log(' 4. Auto-fix issues:');
|
|
231
|
+
console.log(' [ ] npx stack fix (installs tools, creates configs)');
|
|
232
|
+
console.log('');
|
|
233
|
+
console.log(' 5. Deploy:');
|
|
227
234
|
console.log(' [ ] npx stack deploy --staging --dry-run (preview)');
|
|
228
|
-
console.log(' [ ] npx stack deploy --staging (deploy)
|
|
235
|
+
console.log(' [ ] npx stack deploy --staging (deploy)');
|
|
236
|
+
console.log('');
|
|
229
237
|
return true;
|
|
230
238
|
}
|
|
231
239
|
/**
|
|
@@ -275,7 +283,7 @@ function detectServerOS() {
|
|
|
275
283
|
/**
|
|
276
284
|
* Generate a smart stack.yml by auto-detecting project configuration.
|
|
277
285
|
* Auto-detects: name, github_repo, pipeline, staging/prod, frameworks.
|
|
278
|
-
* Uses
|
|
286
|
+
* Uses EXAMPLE_ prefix for values that cannot be auto-detected (domains, ssl_email).
|
|
279
287
|
*/
|
|
280
288
|
function generateSmartStackYml(rootDir) {
|
|
281
289
|
const outputPath = path.join(rootDir, config_files_js_1.STACK_CONFIG_FILENAME);
|
|
@@ -290,7 +298,7 @@ function generateSmartStackYml(rootDir) {
|
|
|
290
298
|
const dirName = path.basename(rootDir);
|
|
291
299
|
const name = (pkgName ?? dirName).replace(/[^a-z0-9-]/gi, '-').toLowerCase();
|
|
292
300
|
// Detect github repo
|
|
293
|
-
const githubRepo = detectGithubRepo(rootDir) ?? '
|
|
301
|
+
const githubRepo = detectGithubRepo(rootDir) ?? 'EXAMPLE_username/' + name;
|
|
294
302
|
// Detect server OS for staging
|
|
295
303
|
const devOS = detectServerOS();
|
|
296
304
|
const stagingServer = devOS === 'windows' ? 'ubuntu' : devOS;
|
|
@@ -298,8 +306,8 @@ function generateSmartStackYml(rootDir) {
|
|
|
298
306
|
const config = {
|
|
299
307
|
name,
|
|
300
308
|
config_version: '0.1.0',
|
|
301
|
-
github_repo: githubRepo.startsWith('
|
|
302
|
-
ssl_email: '
|
|
309
|
+
github_repo: githubRepo.startsWith('EXAMPLE_') ? githubRepo : githubRepo,
|
|
310
|
+
ssl_email: 'EXAMPLE_admin@yourdomain.com',
|
|
303
311
|
pipeline: 'factiii',
|
|
304
312
|
ansible: {
|
|
305
313
|
vault_path: 'group_vars/all/vault.yml',
|
|
@@ -307,12 +315,12 @@ function generateSmartStackYml(rootDir) {
|
|
|
307
315
|
},
|
|
308
316
|
staging: {
|
|
309
317
|
server: stagingServer,
|
|
310
|
-
domain: '
|
|
318
|
+
domain: 'EXAMPLE_staging.yourdomain.com',
|
|
311
319
|
env_file: '.env.staging',
|
|
312
320
|
},
|
|
313
321
|
prod: {
|
|
314
322
|
server: 'ubuntu',
|
|
315
|
-
domain: '
|
|
323
|
+
domain: 'EXAMPLE_yourdomain.com',
|
|
316
324
|
env_file: '.env.prod',
|
|
317
325
|
},
|
|
318
326
|
};
|
|
@@ -329,7 +337,7 @@ function generateSmartStackYml(rootDir) {
|
|
|
329
337
|
// Build YAML content with comments
|
|
330
338
|
const sections = [];
|
|
331
339
|
sections.push('# Generated by @factiii/stack');
|
|
332
|
-
sections.push('# Replace all
|
|
340
|
+
sections.push('# Replace all EXAMPLE_ values with your actual configuration');
|
|
333
341
|
sections.push('');
|
|
334
342
|
// Dump main config
|
|
335
343
|
sections.push(js_yaml_1.default.dump(config, { lineWidth: -1, noRefs: true }).trim());
|
|
@@ -343,10 +351,29 @@ function generateSmartStackYml(rootDir) {
|
|
|
343
351
|
sections.push('# ============================================================');
|
|
344
352
|
sections.push('# NEXT STEPS');
|
|
345
353
|
sections.push('# ============================================================');
|
|
346
|
-
sections.push('#
|
|
347
|
-
sections.push('#
|
|
348
|
-
sections.push('#
|
|
349
|
-
sections.push('#
|
|
354
|
+
sections.push('#');
|
|
355
|
+
sections.push('# 1. UPDATE THIS FILE');
|
|
356
|
+
sections.push('# Replace all values marked EXAMPLE_ with your actual values:');
|
|
357
|
+
sections.push('# - ssl_email: your real email for SSL certificates');
|
|
358
|
+
sections.push('# - staging.domain: your staging domain');
|
|
359
|
+
sections.push('# - prod.domain: your production domain');
|
|
360
|
+
sections.push('#');
|
|
361
|
+
sections.push('# 2. SET UP SECRETS');
|
|
362
|
+
sections.push('# npx stack init -> creates vault, prompts for SSH keys & credentials');
|
|
363
|
+
sections.push('#');
|
|
364
|
+
sections.push('# 3. SCAN FOR ISSUES');
|
|
365
|
+
sections.push('# npx stack scan -> checks everything, reports what is missing (changes nothing)');
|
|
366
|
+
sections.push('#');
|
|
367
|
+
sections.push('# 4. AUTO-FIX ISSUES');
|
|
368
|
+
sections.push('# npx stack fix -> installs tools, creates config files, fixes what it can');
|
|
369
|
+
sections.push('# (does NOT touch docker/nginx - those are handled by deploy)');
|
|
370
|
+
sections.push('#');
|
|
371
|
+
sections.push('# 5. DEPLOY');
|
|
372
|
+
sections.push('# npx stack deploy --staging --dry-run -> preview what will happen');
|
|
373
|
+
sections.push('# npx stack deploy --staging -> deploy to staging');
|
|
374
|
+
sections.push('# npx stack deploy --prod -> deploy to production');
|
|
375
|
+
sections.push('#');
|
|
376
|
+
sections.push('# ============================================================');
|
|
350
377
|
sections.push('');
|
|
351
378
|
const finalContent = sections.join('\n');
|
|
352
379
|
fs.writeFileSync(outputPath, finalContent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-stack-yml.js","sourceRoot":"","sources":["../../src/generators/generate-stack-yml.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EH,gEAsGC;AAKD,
|
|
1
|
+
{"version":3,"file":"generate-stack-yml.js","sourceRoot":"","sources":["../../src/generators/generate-stack-yml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw Addon
|
|
3
|
+
*
|
|
4
|
+
* Automates the setup of OpenClaw (autonomous AI agent) running inside
|
|
5
|
+
* a Tart VM on macOS with a local LLM via Ollama.
|
|
6
|
+
*
|
|
7
|
+
* ============================================================
|
|
8
|
+
* USAGE
|
|
9
|
+
* ============================================================
|
|
10
|
+
*
|
|
11
|
+
* Enable in stack.yml (shared across team):
|
|
12
|
+
*
|
|
13
|
+
* openclaw:
|
|
14
|
+
* model: qwen2.5-coder:7b # Ollama model (must support tool calling)
|
|
15
|
+
*
|
|
16
|
+
* Or in stack.local.yml (per-developer, gitignored):
|
|
17
|
+
*
|
|
18
|
+
* openclaw:
|
|
19
|
+
* model: qwen2.5-coder:7b
|
|
20
|
+
*
|
|
21
|
+
* Then run:
|
|
22
|
+
* npx stack scan --dev # See what's missing
|
|
23
|
+
* npx stack fix --dev # Install Tart, Ollama, model, OpenClaw
|
|
24
|
+
* ============================================================
|
|
25
|
+
*/
|
|
26
|
+
import type { FactiiiConfig, Fix } from '../../../types/index.js';
|
|
27
|
+
declare class OpenClawAddon {
|
|
28
|
+
static readonly id = "openclaw";
|
|
29
|
+
static readonly name = "OpenClaw";
|
|
30
|
+
static readonly category: 'addon';
|
|
31
|
+
static readonly version = "1.0.0";
|
|
32
|
+
static readonly requiredEnvVars: string[];
|
|
33
|
+
static readonly configSchema: Record<string, unknown>;
|
|
34
|
+
static readonly autoConfigSchema: Record<string, string>;
|
|
35
|
+
/**
|
|
36
|
+
* Determine if this addon should be loaded.
|
|
37
|
+
* Loads if openclaw config exists in stack.yml or stack.local.yml.
|
|
38
|
+
*/
|
|
39
|
+
static shouldLoad(_rootDir: string, config: FactiiiConfig): Promise<boolean>;
|
|
40
|
+
static readonly fixes: Fix[];
|
|
41
|
+
private _config;
|
|
42
|
+
constructor(config: FactiiiConfig);
|
|
43
|
+
}
|
|
44
|
+
export default OpenClawAddon;
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/addons/openclaw/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAKlE,cAAM,aAAa;IAKjB,MAAM,CAAC,QAAQ,CAAC,EAAE,cAAc;IAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc;IAClC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAW;IAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAElC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAM;IAE/C,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEnD;IAEF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE9D;;;OAGG;WACU,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBlF,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAE1B;IAMF,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,aAAa;CAGlC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OpenClaw Addon
|
|
4
|
+
*
|
|
5
|
+
* Automates the setup of OpenClaw (autonomous AI agent) running inside
|
|
6
|
+
* a Tart VM on macOS with a local LLM via Ollama.
|
|
7
|
+
*
|
|
8
|
+
* ============================================================
|
|
9
|
+
* USAGE
|
|
10
|
+
* ============================================================
|
|
11
|
+
*
|
|
12
|
+
* Enable in stack.yml (shared across team):
|
|
13
|
+
*
|
|
14
|
+
* openclaw:
|
|
15
|
+
* model: qwen2.5-coder:7b # Ollama model (must support tool calling)
|
|
16
|
+
*
|
|
17
|
+
* Or in stack.local.yml (per-developer, gitignored):
|
|
18
|
+
*
|
|
19
|
+
* openclaw:
|
|
20
|
+
* model: qwen2.5-coder:7b
|
|
21
|
+
*
|
|
22
|
+
* Then run:
|
|
23
|
+
* npx stack scan --dev # See what's missing
|
|
24
|
+
* npx stack fix --dev # Install Tart, Ollama, model, OpenClaw
|
|
25
|
+
* ============================================================
|
|
26
|
+
*/
|
|
27
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
30
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
31
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
32
|
+
}
|
|
33
|
+
Object.defineProperty(o, k2, desc);
|
|
34
|
+
}) : (function(o, m, k, k2) {
|
|
35
|
+
if (k2 === undefined) k2 = k;
|
|
36
|
+
o[k2] = m[k];
|
|
37
|
+
}));
|
|
38
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
39
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
40
|
+
}) : function(o, v) {
|
|
41
|
+
o["default"] = v;
|
|
42
|
+
});
|
|
43
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
44
|
+
var ownKeys = function(o) {
|
|
45
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
46
|
+
var ar = [];
|
|
47
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
48
|
+
return ar;
|
|
49
|
+
};
|
|
50
|
+
return ownKeys(o);
|
|
51
|
+
};
|
|
52
|
+
return function (mod) {
|
|
53
|
+
if (mod && mod.__esModule) return mod;
|
|
54
|
+
var result = {};
|
|
55
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
56
|
+
__setModuleDefault(result, mod);
|
|
57
|
+
return result;
|
|
58
|
+
};
|
|
59
|
+
})();
|
|
60
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
+
// Import scanfix array
|
|
62
|
+
const setup_js_1 = require("./scanfix/setup.js");
|
|
63
|
+
class OpenClawAddon {
|
|
64
|
+
// ============================================================
|
|
65
|
+
// STATIC METADATA
|
|
66
|
+
// ============================================================
|
|
67
|
+
static id = 'openclaw';
|
|
68
|
+
static name = 'OpenClaw';
|
|
69
|
+
static category = 'addon';
|
|
70
|
+
static version = '1.0.0';
|
|
71
|
+
static requiredEnvVars = [];
|
|
72
|
+
static configSchema = {
|
|
73
|
+
// openclaw.model - Ollama model name (must support tool calling)
|
|
74
|
+
};
|
|
75
|
+
static autoConfigSchema = {};
|
|
76
|
+
/**
|
|
77
|
+
* Determine if this addon should be loaded.
|
|
78
|
+
* Loads if openclaw config exists in stack.yml or stack.local.yml.
|
|
79
|
+
*/
|
|
80
|
+
static async shouldLoad(_rootDir, config) {
|
|
81
|
+
if (config.openclaw)
|
|
82
|
+
return true;
|
|
83
|
+
try {
|
|
84
|
+
const { loadLocalConfig } = await Promise.resolve().then(() => __importStar(require('../../../utils/config-helpers.js')));
|
|
85
|
+
const localConfig = loadLocalConfig(_rootDir);
|
|
86
|
+
return !!localConfig.openclaw;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// ============================================================
|
|
93
|
+
// FIXES - All issues this addon can detect and resolve
|
|
94
|
+
// ============================================================
|
|
95
|
+
static fixes = [
|
|
96
|
+
...setup_js_1.openclawFixes,
|
|
97
|
+
];
|
|
98
|
+
// ============================================================
|
|
99
|
+
// INSTANCE METHODS
|
|
100
|
+
// ============================================================
|
|
101
|
+
_config;
|
|
102
|
+
constructor(config) {
|
|
103
|
+
this._config = config;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.default = OpenClawAddon;
|
|
107
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/addons/openclaw/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIH,uBAAuB;AACvB,iDAAmD;AAEnD,MAAM,aAAa;IACjB,+DAA+D;IAC/D,kBAAkB;IAClB,+DAA+D;IAE/D,MAAM,CAAU,EAAE,GAAG,UAAU,CAAC;IAChC,MAAM,CAAU,IAAI,GAAG,UAAU,CAAC;IAClC,MAAM,CAAU,QAAQ,GAAY,OAAO,CAAC;IAC5C,MAAM,CAAU,OAAO,GAAG,OAAO,CAAC;IAElC,MAAM,CAAU,eAAe,GAAa,EAAE,CAAC;IAE/C,MAAM,CAAU,YAAY,GAA4B;IACtD,iEAAiE;KAClE,CAAC;IAEF,MAAM,CAAU,gBAAgB,GAA2B,EAAE,CAAC;IAE9D;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAqB;QAC7D,IAAK,MAAkC,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,kCAAkC,GAAC,CAAC;YAC7E,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC9C,OAAO,CAAC,CAAE,WAAuC,CAAC,QAAQ,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,uDAAuD;IACvD,+DAA+D;IAE/D,MAAM,CAAU,KAAK,GAAU;QAC7B,GAAG,wBAAa;KACjB,CAAC;IAEF,+DAA+D;IAC/D,mBAAmB;IACnB,+DAA+D;IAEvD,OAAO,CAAgB;IAE/B,YAAY,MAAqB;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;;AAGH,kBAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw Addon Scanfixes
|
|
3
|
+
*
|
|
4
|
+
* Automates the full chain for running OpenClaw (autonomous AI agent)
|
|
5
|
+
* inside a Tart VM with a local LLM via Ollama:
|
|
6
|
+
*
|
|
7
|
+
* 1. Install Tart on the host Mac
|
|
8
|
+
* 2. Ensure a Tart VM exists and is running
|
|
9
|
+
* 3. SSH into the VM to install Ollama
|
|
10
|
+
* 4. Pull a compatible model (must support tool calling)
|
|
11
|
+
* 5. Install OpenClaw inside the VM
|
|
12
|
+
* 6. Configure OpenClaw to use the local Ollama model
|
|
13
|
+
*
|
|
14
|
+
* OpenClaw and Ollama run INSIDE the Tart VM, not on the host.
|
|
15
|
+
* The host only needs Tart installed.
|
|
16
|
+
*/
|
|
17
|
+
import type { Fix } from '../../../../types/index.js';
|
|
18
|
+
export declare const openclawFixes: Fix[];
|
|
19
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/openclaw/scanfix/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,GAAG,EAA2B,MAAM,4BAA4B,CAAC;AA0L/E,eAAO,MAAM,aAAa,EAAE,GAAG,EAwO9B,CAAC"}
|