substrate-ai 0.1.24 → 0.1.26

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.
@@ -0,0 +1,17 @@
1
+ #!/bin/bash
2
+ # Substrate AI — persistent status line
3
+ # Receives JSON on stdin with session metadata
4
+
5
+ input=$(cat)
6
+
7
+ MODEL=$(echo "$input" | jq -r '.model.display_name // "Claude"' 2>/dev/null)
8
+ PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' 2>/dev/null | cut -d. -f1)
9
+ COST=$(echo "$input" | jq -r '.session.cost // "0.00"' 2>/dev/null)
10
+ BRANCH=$(echo "$input" | jq -r '.git.branch // ""' 2>/dev/null)
11
+
12
+ BRANCH_PART=""
13
+ if [ -n "$BRANCH" ]; then
14
+ BRANCH_PART=" | $BRANCH"
15
+ fi
16
+
17
+ echo "⚡ substrate-ai | $MODEL | ctx ${PCT}% | \$${COST}${BRANCH_PART}"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "substrate-ai",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
4
4
  "description": "Substrate — multi-agent orchestration daemon for AI coding agents",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -58,6 +58,8 @@ phases:
58
58
  source: "step:planning-step-2-frs"
59
59
  - placeholder: technology_constraints
60
60
  source: "decision:analysis.technology-constraints"
61
+ - placeholder: concept
62
+ source: "param:concept"
61
63
  critique: true
62
64
  - name: ux-design
63
65
  description: UX discovery, design system, and user journey mapping (optional — runs when uxDesign is true)
@@ -36,6 +36,7 @@ Building on the vision analysis above, define the **scope**: core features, succ
36
36
  - Extract explicit technology preferences or exclusions stated in the concept
37
37
  - Cloud platform choices (e.g., "GCP", "AWS"), programming language mandates (e.g., "Kotlin/JVM", "Node.js excluded"), framework preferences, infrastructure choices
38
38
  - If the concept has a "Technology Constraints" section, extract ALL items from it into this field
39
+ - **Preserve the FULL scope of the user's restriction** — if the user says a technology is "not the right choice" for the backend, do NOT narrow it to a specific subsystem (e.g., "excluded from critical path only"). The exclusion applies to ALL backend services unless the user explicitly limits the scope.
39
40
  - Include ONLY preferences explicitly stated by the user — do not infer or add your own
40
41
  - If none are stated in the concept, emit an empty array
41
42
 
@@ -14,6 +14,9 @@
14
14
  ### Technology Constraints (from Analysis Phase)
15
15
  {{technology_constraints}}
16
16
 
17
+ ### Original Concept (user's exact words)
18
+ {{concept}}
19
+
17
20
  ---
18
21
 
19
22
  ## Mission
@@ -32,7 +35,9 @@ Complete the PRD by defining **non-functional requirements**, **tech stack**, **
32
35
  - Key-value pairs mapping technology concerns to specific choices
33
36
  - Use real, current technologies — do not fabricate frameworks
34
37
  - Cover at minimum: language, framework, database, testing
35
- - **MUST honor stated technology constraints** — if the analysis specifies a cloud platform, language, or framework preference, use it. Do not substitute alternatives unless the constraint is technically impossible for the requirements.
38
+ - **MUST honor stated technology constraints** — if the analysis or original concept specifies a cloud platform, language, or framework preference, use it. Do not substitute alternatives unless the constraint is technically impossible for the requirements.
39
+ - **When the original concept and the analysis disagree on the scope of a technology restriction, the original concept wins.** For example, if the concept says "JavaScript is not the right choice for backend" but the analysis narrowed it to "excluded from critical path only," honor the concept's broader restriction.
40
+ - If a technology constraint discourages or excludes a language or runtime (e.g., "JavaScript/Node.js is almost certainly not the right choice"), do NOT use that language or any of its variants (including TypeScript on Node.js) for ANY backend service. This is a blanket backend exclusion, not a path-specific one.
36
41
  - If you must deviate from a stated constraint, explicitly note the deviation and rationale
37
42
 
38
43
  3. **Build the domain model:**
@@ -42,6 +47,12 @@ Complete the PRD by defining **non-functional requirements**, **tech stack**, **
42
47
 
43
48
  4. **Define out-of-scope items** to prevent scope creep — what this product explicitly does NOT do.
44
49
 
50
+ ## Pre-Output Checklist
51
+
52
+ Before emitting your output, verify:
53
+ - [ ] The `language` field in `tech_stack` matches the technology constraints. If a constraint says to evaluate Go, Kotlin/JVM, or Rust (and NOT JavaScript/Node.js), then `language` MUST be one of those — not TypeScript, not JavaScript, not Node.js.
54
+ - [ ] The example below is a FORMAT example only — do not copy its technology choices. Choose technologies based on the constraints above.
55
+
45
56
  ## Output Contract
46
57
 
47
58
  Emit ONLY this YAML block as your final output — no other text.
@@ -56,10 +67,10 @@ non_functional_requirements:
56
67
  - description: "All user data encrypted at rest using AES-256"
57
68
  category: "security"
58
69
  tech_stack:
59
- language: "TypeScript"
60
- framework: "Node.js CLI with Commander"
61
- database: "SQLite via better-sqlite3"
62
- testing: "Vitest"
70
+ language: "Kotlin 2.0 on JVM 21"
71
+ framework: "Ktor with coroutines"
72
+ database: "PostgreSQL 16 via Exposed ORM"
73
+ testing: "Kotest with Testcontainers"
63
74
  domain_model:
64
75
  Habit:
65
76
  attributes: ["name", "frequency", "created_at"]