the-frame-ai 0.14.0 → 0.15.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "the-frame-ai",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "FRAME — Framework for AI-Assisted Solo Development",
5
5
  "type": "module",
6
6
  "bin": {
package/src/languages.js CHANGED
@@ -74,11 +74,6 @@ const STACK_PRESETS = {
74
74
  rust: { typecheck: 'cargo check', test: 'cargo test', lint: 'cargo clippy', build: 'cargo build' },
75
75
  };
76
76
 
77
- const MODEL_DESCRIPTIONS = {
78
- opus: 'opus — best quality, slower (recommended for architecture/security)',
79
- sonnet: 'sonnet — faster, good for most tasks',
80
- };
81
-
82
77
  export async function promptConfig(defaultConfig, yes = false) {
83
78
  if (!process.stdin.isTTY || yes) return defaultConfig;
84
79
 
@@ -118,16 +113,6 @@ export async function promptConfig(defaultConfig, yes = false) {
118
113
  }
119
114
  }
120
115
 
121
- console.log('\n? Preferred model for agents:\n');
122
- Object.values(MODEL_DESCRIPTIONS).forEach((d, i) => console.log(` ${i + 1}) ${d}`));
123
- const modelAnswer = (await ask(rl, '\n Enter number [1-2] (or press Enter for opus): ')).trim().toLowerCase();
124
- if (modelAnswer === '2' || modelAnswer === 'sonnet') {
125
- config.model = 'sonnet';
126
- console.log('\x1b[32m✓\x1b[0m Model preference: sonnet');
127
- } else {
128
- config.model = 'opus';
129
- }
130
-
131
116
  rl.close();
132
117
  return config;
133
118
  }
@@ -116,6 +116,16 @@ If a task is too large (Files Changed > 3 or Complexity: high) — split it.
116
116
  | `medium` | 3-5 files or touches public APIs |
117
117
  | `high` | 5+ files, touches core logic or routing |
118
118
 
119
+ **Estimate definition:**
120
+
121
+ | Estimate | Criteria |
122
+ |----------|----------|
123
+ | `30min` | Complexity: low, 1-2 files, no new abstractions |
124
+ | `1h` | Complexity: medium, 2-3 files, or new type/interface/schema |
125
+ | `2h` | Complexity: medium, 3 files, external integration or DB change |
126
+
127
+ If a task would need more than 2h — it is not atomic enough. Split it.
128
+
119
129
  For each requirement, identify:
120
130
  - What files need to be created/modified
121
131
  - What tests need to be written
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: researcher
3
- model: sonnet
3
+ model: opus
4
4
  tools:
5
5
  - Read
6
6
  - Write
@@ -16,7 +16,7 @@ description: "Research agent. Analyzes codebase or web for alternatives and cont
16
16
 
17
17
  **Job**: Receive a scoped brief from the orchestrating command (codebase scope or web scope), conduct focused research, return findings as final text.
18
18
 
19
- > **Model**: sonnet (override via `model` in `.frame/config.json`).
19
+ > **Model**: opus.
20
20
  > **NEVER write .planning/STATE.md** — STATE.md is owned by the orchestrating command, not subagents.
21
21
 
22
22
  ## Instructions
@@ -83,6 +83,16 @@ If task too large (>3 files or Complexity: high) — split it.
83
83
  | `medium` | 3–5 files or touches public APIs |
84
84
  | `high` | 5+ files, touches core logic or routing |
85
85
 
86
+ **Estimate definition**:
87
+
88
+ | Estimate | Criteria |
89
+ |----------|----------|
90
+ | `30min` | Complexity: low, 1–2 files, no new abstractions |
91
+ | `1h` | Complexity: medium, 2–3 files, or new type/interface/schema |
92
+ | `2h` | Complexity: medium, 3 files, external integration or DB change |
93
+
94
+ If a task would need more than 2h — it is not atomic. Split it.
95
+
86
96
  Each task gets:
87
97
  - `Acceptance: AC2, AC5` — which ACs it covers
88
98
  - `Findings: ` — empty for feature tasks (used in Mode B)