theslopmachine 0.3.0 → 0.3.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/MANUAL.md CHANGED
@@ -1,22 +1,22 @@
1
- # SlopMachine Manual
1
+ # theslopmachine manual
2
2
 
3
3
  ## What it is
4
4
 
5
- SlopMachine installs a workflow-owner agent, a developer agent, and the supporting skills/templates needed to run the delivery workflow inside OpenCode.
5
+ theslopmachine installs a workflow-owner agent, a developer agent, and the supporting skills/templates needed to run the delivery workflow inside OpenCode.
6
6
 
7
7
  ## Install
8
8
 
9
9
  Run:
10
10
 
11
11
  ```bash
12
- slopmachine install
12
+ slopmachine setup
13
13
  ```
14
14
 
15
15
  This installs:
16
16
 
17
17
  - agents into `~/.config/opencode/agents/`
18
18
  - skills into `~/.agents/skills/`
19
- - SlopMachine-owned files into `~/slopmachine/`
19
+ - theslopmachine-owned files into `~/slopmachine/`
20
20
  - merged plugin/MCP config into `~/.config/opencode/opencode.json`
21
21
 
22
22
  ## Start a project
@@ -58,6 +58,6 @@ slopmachine init -o
58
58
 
59
59
  ## Important notes
60
60
 
61
- - SlopMachine depends on OpenCode, Beads, git, python3, and Docker being available.
61
+ - theslopmachine depends on OpenCode, Beads, git, python3, and Docker being available.
62
62
  - The workflow-owner agent uses mandatory skills for specific phases; skipping them is considered a workflow failure.
63
63
  - Submission packaging collects the final docs, reports, screenshots, session export, trajectory, and cleaned repo into the required final structure.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # SlopMachine 0.3
1
+ # theslopmachine 0.3
2
2
 
3
- Installer package for the SlopMachine workflow owner, developer agent, required skills, templates, and local support files.
3
+ Installer package for the theslopmachine workflow owner, developer agent, required skills, templates, and local support files.
4
4
 
5
5
  ## Planned commands
6
6
 
7
- - `slopmachine install`
7
+ - `slopmachine setup`
8
8
  - `slopmachine init`
9
9
  - `slopmachine init -o` to bootstrap the project and immediately open OpenCode inside `repo/`
10
10
 
@@ -20,4 +20,4 @@ See `MANUAL.md` for a short usage guide and workflow summary.
20
20
 
21
21
  ## Status
22
22
 
23
- This package workspace is being built from the current local SlopMachine v3 setup without modifying the live installation on this machine.
23
+ This package workspace is being built from the current local theslopmachine setup without modifying the live installation on this machine.
package/RELEASE.md CHANGED
@@ -11,7 +11,7 @@ node ./bin/slopmachine.js --help
11
11
  2. Test install into an isolated fake home:
12
12
 
13
13
  ```bash
14
- SLOPMACHINE_HOME="$(pwd)/.tmp-home" SLOPMACHINE_NONINTERACTIVE=1 SLOPMACHINE_PLUGIN_BOOTSTRAP=0 node ./bin/slopmachine.js install
14
+ SLOPMACHINE_HOME="$(pwd)/.tmp-home" SLOPMACHINE_NONINTERACTIVE=1 SLOPMACHINE_PLUGIN_BOOTSTRAP=0 node ./bin/slopmachine.js setup
15
15
  ```
16
16
 
17
17
  3. Test init into an isolated temp project:
@@ -41,13 +41,13 @@ npm pack
41
41
  This should produce a tarball such as:
42
42
 
43
43
  ```bash
44
- slopmachine-0.3.0.tgz
44
+ theslopmachine-0.3.0.tgz
45
45
  ```
46
46
 
47
47
  ## Inspect package contents
48
48
 
49
49
  ```bash
50
- tar -tzf slopmachine-0.3.0.tgz
50
+ tar -tzf theslopmachine-0.3.0.tgz
51
51
  ```
52
52
 
53
53
  Check that the tarball includes:
@@ -77,5 +77,5 @@ npm publish --dry-run
77
77
  ## Versioning
78
78
 
79
79
  - bump `package.json` version before each release
80
- - keep the visual product name as `SlopMachine`
80
+ - keep the CLI command as `slopmachine`
81
81
  - keep the npm package name as `slopmachine`
package/package.json CHANGED
@@ -1,25 +1,25 @@
1
1
  {
2
- "name": "theslopmachine",
3
- "version": "0.3.0",
4
- "description": "SlopMachine installer and project bootstrap CLI",
5
- "license": "MIT",
6
- "type": "module",
7
- "bin": {
8
- "slopmachine": "bin/slopmachine.js"
9
- },
10
- "scripts": {
11
- "start": "node ./bin/slopmachine.js",
12
- "check": "node ./bin/slopmachine.js --help"
13
- },
14
- "engines": {
15
- "node": ">=18"
16
- },
17
- "files": [
18
- "bin",
19
- "src",
20
- "assets",
21
- "README.md",
22
- "RELEASE.md",
23
- "MANUAL.md"
24
- ]
2
+ "name": "theslopmachine",
3
+ "version": "0.3.2",
4
+ "description": "SlopMachine installer and project bootstrap CLI",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "bin": {
8
+ "slopmachine": "bin/slopmachine.js"
9
+ },
10
+ "scripts": {
11
+ "start": "node ./bin/slopmachine.js",
12
+ "check": "node ./bin/slopmachine.js --help"
13
+ },
14
+ "engines": {
15
+ "node": ">=18"
16
+ },
17
+ "files": [
18
+ "bin",
19
+ "src",
20
+ "assets",
21
+ "README.md",
22
+ "RELEASE.md",
23
+ "MANUAL.md"
24
+ ]
25
25
  }
package/src/cli.js CHANGED
@@ -2,10 +2,10 @@ import { runInit } from './init.js'
2
2
  import { runInstall } from './install.js'
3
3
 
4
4
  function printHelp() {
5
- console.log(`SlopMachine 0.3
5
+ console.log(`theslopmachine 0.3
6
6
 
7
7
  Commands:
8
- install Install SlopMachine into the local user environment
8
+ setup Configure theslopmachine in the local user environment
9
9
  init Run the packaged init script in the current directory (-o opens OpenCode in repo/)
10
10
  help Show this help text`)
11
11
  }
@@ -18,7 +18,7 @@ export async function runCli(args) {
18
18
  return
19
19
  }
20
20
 
21
- if (command === 'install') {
21
+ if (command === 'setup' || command === 'install') {
22
22
  await runInstall()
23
23
  return
24
24
  }
package/src/init.js CHANGED
@@ -2,7 +2,7 @@ import fs from 'node:fs/promises'
2
2
  import path from 'node:path'
3
3
 
4
4
  import { buildPaths } from './constants.js'
5
- import { ensureDir, log, pathExists, runCommand } from './utils.js'
5
+ import { commandExists, ensureDir, log, pathExists, runCommand, warn } from './utils.js'
6
6
 
7
7
  const GITIGNORE_ENTRIES = [
8
8
  '.DS_Store',
@@ -46,11 +46,11 @@ async function assertRequiredFiles(paths) {
46
46
  const agentsTemplate = path.join(paths.slopmachineDir, 'templates', 'AGENTS.md')
47
47
 
48
48
  if (!(await pathExists(beadsScript))) {
49
- throw new Error(`Missing packaged Beads init script at ${beadsScript}. Run slopmachine install first.`)
49
+ throw new Error(`Missing packaged Beads init script at ${beadsScript}. Run slopmachine setup first.`)
50
50
  }
51
51
 
52
52
  if (!(await pathExists(agentsTemplate))) {
53
- throw new Error(`Missing packaged AGENTS template at ${agentsTemplate}. Run slopmachine install first.`)
53
+ throw new Error(`Missing packaged AGENTS template at ${agentsTemplate}. Run slopmachine setup first.`)
54
54
  }
55
55
 
56
56
  return { beadsScript, agentsTemplate }
@@ -145,6 +145,11 @@ async function maybeOpenOpencode(targetPath, openAfterInit) {
145
145
  return
146
146
  }
147
147
 
148
+ if (!(await commandExists('opencode'))) {
149
+ warn('OpenCode is not available in PATH, so the project was initialized but could not be opened automatically. Launch OpenCode manually inside repo/.')
150
+ return
151
+ }
152
+
148
153
  log('Opening OpenCode in repo/')
149
154
  const result = await runCommand('opencode', [], {
150
155
  stdio: 'inherit',
package/src/install.js CHANGED
@@ -39,6 +39,27 @@ async function getCommandVersion(command, args = ['--version']) {
39
39
  return (result.stdout || result.stderr).trim()
40
40
  }
41
41
 
42
+ async function getPythonVersion() {
43
+ const python3Version = await getCommandVersion('python3')
44
+ if (python3Version) {
45
+ return { command: 'python3', version: python3Version }
46
+ }
47
+
48
+ const pythonVersion = await getCommandVersion('python')
49
+ if (pythonVersion) {
50
+ return { command: 'python', version: pythonVersion }
51
+ }
52
+
53
+ if (process.platform === 'win32' && await commandExists('py')) {
54
+ const result = await runCommand('py', ['-3', '--version'])
55
+ if (result.code === 0) {
56
+ return { command: 'py -3', version: (result.stdout || result.stderr).trim() }
57
+ }
58
+ }
59
+
60
+ return null
61
+ }
62
+
42
63
  async function detectPackageManagers() {
43
64
  return {
44
65
  brew: await commandExists('brew'),
@@ -102,6 +123,17 @@ async function tryInstallCoreDependency(name) {
102
123
  }
103
124
 
104
125
  async function ensureDependency({ name, checkCommand, requiredVersion, installable }) {
126
+ if (name === 'python3') {
127
+ const python = await getPythonVersion()
128
+ if (python) {
129
+ log(`${name} detected via ${python.command}: ${python.version}`)
130
+ if (requiredVersion && !python.version.includes(requiredVersion)) {
131
+ warn(`${name} version differs from tested reference ${requiredVersion}`)
132
+ }
133
+ return
134
+ }
135
+ }
136
+
105
137
  const version = await getCommandVersion(checkCommand)
106
138
  if (version) {
107
139
  log(`${name} detected: ${version}`)
@@ -119,7 +151,7 @@ async function ensureDependency({ name, checkCommand, requiredVersion, installab
119
151
 
120
152
  const shouldInstall = await promptYesNo(`Attempt to install ${name} automatically?`, true)
121
153
  if (!shouldInstall) {
122
- warn(`Skipping ${name} installation. Please install it manually before using SlopMachine.`)
154
+ warn(`Skipping ${name} installation. Please install it manually before using theslopmachine.`)
123
155
  return
124
156
  }
125
157
 
@@ -133,7 +165,7 @@ async function checkDocker() {
133
165
  const dockerVersion = await getCommandVersion('docker')
134
166
  const composeVersion = await getCommandVersion('docker', ['compose', 'version'])
135
167
  if (!dockerVersion || !composeVersion) {
136
- warn('Docker and Docker Compose are required for SlopMachine workflows. Please install Docker Desktop or the Docker Engine + Compose plugin and start Docker.')
168
+ warn('Docker and Docker Compose are required for theslopmachine workflows. Please install Docker Desktop or the Docker Engine + Compose plugin and start Docker.')
137
169
  return
138
170
  }
139
171
  log(`docker detected: ${dockerVersion}`)
@@ -141,7 +173,7 @@ async function checkDocker() {
141
173
 
142
174
  const info = await runCommand('docker', ['info'])
143
175
  if (info.code !== 0) {
144
- warn('Docker is installed but does not appear to be running. Start Docker before using SlopMachine.')
176
+ warn('Docker is installed but does not appear to be running. Start Docker before using theslopmachine.')
145
177
  }
146
178
  }
147
179
 
@@ -294,7 +326,7 @@ async function collectApiKeys() {
294
326
 
295
327
  export async function runInstall() {
296
328
  const paths = buildPaths()
297
- log(`Installing SlopMachine into ${paths.home}`)
329
+ log(`Configuring theslopmachine in ${paths.home}`)
298
330
 
299
331
  await ensureDependency({ name: 'git', checkCommand: 'git', installable: true })
300
332
  await ensureDependency({ name: 'python3', checkCommand: 'python3', installable: true })
@@ -311,8 +343,8 @@ export async function runInstall() {
311
343
  const keys = await collectApiKeys()
312
344
  await mergeOpencodeConfig(paths, keys)
313
345
 
314
- log('Installation phase completed.')
315
- console.log('\nSlopMachine install summary')
346
+ log('Setup phase completed.')
347
+ console.log('\ntheslopmachine setup summary')
316
348
  console.log(`- Agents installed: ${agentSummary.installed.length}`)
317
349
  console.log(`- Agents skipped: ${agentSummary.skipped.length}`)
318
350
  console.log(`- Skills installed: ${skillSummary.installed.length}`)
@@ -325,6 +357,6 @@ export async function runInstall() {
325
357
  console.log(`- OpenCode config: ${paths.opencodeConfigPath}`)
326
358
  console.log('\nNext steps')
327
359
  console.log('- Review any warnings above for skipped files or missing external dependencies.')
328
- console.log('- If Docker was reported as stopped, start Docker before using SlopMachine on a real project.')
329
- console.log('- Run `slopmachine init` inside a project directory to bootstrap a new SlopMachine workspace.')
360
+ console.log('- If Docker was reported as stopped, start Docker before using theslopmachine on a real project.')
361
+ console.log('- Run `slopmachine init` inside a project directory to bootstrap a new theslopmachine workspace.')
330
362
  }