fly-to-moon 0.1.13 → 0.1.15

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 (3) hide show
  1. package/README.md +42 -19
  2. package/dist/cli.mjs +14 -8
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -29,31 +29,48 @@ fttm is an autonomous coding agent orchestrator — each iteration makes one sma
29
29
 
30
30
  ## Quick Start
31
31
 
32
+ ### Install
33
+
32
34
  ```sh
33
- $ fttm "reduce complexity of the codebase without changing functionality"
34
- # have a good sleep
35
+ npm install -g fly-to-moon
35
36
  ```
36
37
 
38
+ ### Update
39
+
40
+ ```sh
41
+ npm install -g fly-to-moon@latest
42
+ ```
43
+
44
+ Or force reinstall:
45
+
37
46
  ```sh
38
- $ fttm "reduce complexity of the codebase without changing functionality" \
39
- --max-iterations 10 \
40
- --max-tokens 5000000
41
- # have a good nap
47
+ npm install -g fly-to-moon@latest --force
42
48
  ```
43
49
 
44
- ### OpenCode with Specific Model
50
+ ### OpenCode
45
51
 
46
52
  ```sh
47
- $ fttm "implement a new feature" \
53
+ fttm "your task here" \
48
54
  --agent opencode \
49
55
  --model minimax-cn-coding-plan/MiniMax-M2.7
50
- # foreground mode, model displayed in UI
56
+ ```
57
+
58
+ ### Claude Code
59
+
60
+ ```sh
61
+ fttm "your task here" --agent claude
62
+ ```
63
+
64
+ ### Codex
65
+
66
+ ```sh
67
+ fttm "your task here" --agent codex
51
68
  ```
52
69
 
53
70
  ### Background/Daemon Mode
54
71
 
55
72
  ```sh
56
- $ fttm "implement a new feature" \
73
+ fttm "your task here" \
57
74
  --agent opencode \
58
75
  --model minimax-cn-coding-plan/MiniMax-M2.7 \
59
76
  --max-iterations 50 \
@@ -61,22 +78,28 @@ $ fttm "implement a new feature" \
61
78
  # runs in background, returns immediately to terminal
62
79
  ```
63
80
 
64
- Run `fttm` from inside a Git repository with a clean working tree. If you are starting from a plain directory, run `git init` first.
65
- `fttm` supports macOS, Linux, and Windows.
81
+ ### Skills
66
82
 
67
- ## Install
68
-
69
- **npm**
83
+ Install the `fttm` skill for interactive command generation:
70
84
 
71
85
  ```sh
72
- npm install -g fly-to-moon
86
+ npx skills add evoerax/fly-to-the-moon --skill fttm
73
87
  ```
74
88
 
75
- **From source**
89
+ Then use it:
90
+
91
+ ```
92
+ fttm skill -> interactive fttm command builder
93
+ ```
94
+
95
+ Run `fttm` from inside a Git repository with a clean working tree. If you are starting from a plain directory, run `git init` first.
96
+ `fttm` supports macOS, Linux, and Windows.
97
+
98
+ ## Install (From source)
76
99
 
77
100
  ```sh
78
- git clone https://github.com/YOUR_USERNAME/fttm.git
79
- cd fttm
101
+ git clone https://github.com/evoerax/fly-to-the-moon.git
102
+ cd fly-to-the-moon
80
103
  npm install
81
104
  npm run build
82
105
  npm link
package/dist/cli.mjs CHANGED
@@ -259,11 +259,10 @@ function writeSchemaFile(schemaPath) {
259
259
  writeFileSync(schemaPath, JSON.stringify(AGENT_OUTPUT_SCHEMA, null, 2), "utf-8");
260
260
  }
261
261
  function ensureRunMetadataIgnored(cwd) {
262
- const ftmDir = join(cwd, ".fttm");
263
- const gitignorePath = join(ftmDir, ".gitignore");
264
- if (existsSync(gitignorePath)) return;
265
- mkdirSync(ftmDir, { recursive: true });
266
- writeFileSync(gitignorePath, "*\n", "utf-8");
262
+ const excludePath = join(cwd, ".git", "info", "exclude");
263
+ if (existsSync(excludePath)) return;
264
+ mkdirSync(join(cwd, ".git", "info"), { recursive: true });
265
+ writeFileSync(excludePath, ".fttm/runs/\n", "utf-8");
267
266
  }
268
267
  function setupRun(runId, prompt, baseCommit, cwd) {
269
268
  ensureRunMetadataIgnored(cwd);
@@ -860,16 +859,18 @@ var ClaudeAgent = class {
860
859
  name = "claude";
861
860
  bin;
862
861
  platform;
862
+ model;
863
863
  constructor(binOrDeps = {}) {
864
864
  const deps = typeof binOrDeps === "string" ? { bin: binOrDeps } : binOrDeps;
865
865
  this.bin = deps.bin ?? "claude";
866
866
  this.platform = deps.platform ?? process.platform;
867
+ this.model = deps.model;
867
868
  }
868
869
  run(prompt, cwd, options) {
869
870
  const { onUsage, onMessage, signal, logPath } = options ?? {};
870
871
  return new Promise((resolve, reject) => {
871
872
  const logStream = logPath ? createWriteStream(logPath) : null;
872
- const child = spawn(this.bin, [
873
+ const args = [
873
874
  "-p",
874
875
  prompt,
875
876
  "--verbose",
@@ -878,7 +879,9 @@ var ClaudeAgent = class {
878
879
  "--json-schema",
879
880
  JSON.stringify(AGENT_OUTPUT_SCHEMA),
880
881
  "--dangerously-skip-permissions"
881
- ], {
882
+ ];
883
+ if (this.model) args.push("--model", this.model);
884
+ const child = spawn(this.bin, args, {
882
885
  cwd,
883
886
  shell: shouldUseWindowsShell$2(this.bin, this.platform),
884
887
  stdio: [
@@ -2089,7 +2092,10 @@ function withTimeoutSignal(signal, timeoutMs) {
2089
2092
  //#region src/core/agents/factory.ts
2090
2093
  function createAgent(name, runInfo, pathOverride, model) {
2091
2094
  switch (name) {
2092
- case "claude": return new ClaudeAgent(pathOverride);
2095
+ case "claude": return new ClaudeAgent({
2096
+ bin: pathOverride,
2097
+ model
2098
+ });
2093
2099
  case "codex": return new CodexAgent(runInfo.schemaPath, pathOverride);
2094
2100
  case "opencode": return new OpenCodeAgent({
2095
2101
  bin: pathOverride,
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "fly-to-moon",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "description": "Humans fly to space. AI does the work. — Fly to the moon, fly to Mars",
5
5
  "type": "module",
6
6
  "bin": {
7
- "fly-to-moon": "dist/cli.mjs"
7
+ "fttm": "dist/cli.mjs"
8
8
  },
9
9
  "scripts": {
10
10
  "build": "tsdown",