nativeapptemplate-agent 0.2.2 → 0.2.3
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/AGENTS.md +18 -9
- package/README.md +6 -3
- package/dist/agents/reviewer.d.ts +1 -0
- package/dist/agents/reviewer.d.ts.map +1 -1
- package/dist/agents/reviewer.js +17 -3
- package/dist/agents/reviewer.js.map +1 -1
- package/dist/agents/workers/android.d.ts.map +1 -1
- package/dist/agents/workers/android.js +15 -33
- package/dist/agents/workers/android.js.map +1 -1
- package/dist/agents/workers/copy.d.ts +6 -0
- package/dist/agents/workers/copy.d.ts.map +1 -0
- package/dist/agents/workers/copy.js +32 -0
- package/dist/agents/workers/copy.js.map +1 -0
- package/dist/agents/workers/ios.d.ts.map +1 -1
- package/dist/agents/workers/ios.js +7 -27
- package/dist/agents/workers/ios.js.map +1 -1
- package/dist/agents/workers/rails.d.ts.map +1 -1
- package/dist/agents/workers/rails.js +6 -23
- package/dist/agents/workers/rails.js.map +1 -1
- package/dist/env-bridge.d.ts.map +1 -1
- package/dist/env-bridge.js +3 -2
- package/dist/env-bridge.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +3 -1
- package/dist/mcp.js.map +1 -1
- package/dist/rails-lifecycle.d.ts.map +1 -1
- package/dist/rails-lifecycle.js +16 -0
- package/dist/rails-lifecycle.js.map +1 -1
- package/dist/report/collect.js +16 -2
- package/dist/report/collect.js.map +1 -1
- package/dist/ruby.d.ts.map +1 -1
- package/dist/ruby.js +8 -1
- package/dist/ruby.js.map +1 -1
- package/dist/validation/discover.d.ts.map +1 -1
- package/dist/validation/discover.js +2 -4
- package/dist/validation/discover.js.map +1 -1
- package/dist/validation/ios-destination.d.ts +2 -0
- package/dist/validation/ios-destination.d.ts.map +1 -0
- package/dist/validation/ios-destination.js +7 -0
- package/dist/validation/ios-destination.js.map +1 -0
- package/dist/validation/layer2.d.ts.map +1 -1
- package/dist/validation/layer2.js +7 -7
- package/dist/validation/layer2.js.map +1 -1
- package/dist/validation/stage2-judge.d.ts.map +1 -1
- package/dist/validation/stage2-judge.js +21 -4
- package/dist/validation/stage2-judge.js.map +1 -1
- package/dist/validation/visual-judge.d.ts.map +1 -1
- package/dist/validation/visual-judge.js +22 -3
- package/dist/validation/visual-judge.js.map +1 -1
- package/package.json +1 -1
- package/scripts/ruby/rename.rb +25 -8
package/AGENTS.md
CHANGED
|
@@ -25,14 +25,27 @@ Project-wide instructions for AI coding agents (Claude Code, Codex, etc.). Keep
|
|
|
25
25
|
|
|
26
26
|
- TypeScript `strict: true`; no implicit `any`.
|
|
27
27
|
- Prefer functions over classes — introduce a class only when state + lifecycle justify it (e.g. a long-lived MCP client wrapper). Stateless transforms are functions.
|
|
28
|
-
- Ruby subprocesses: shell out via `
|
|
28
|
+
- Ruby subprocesses: shell out via `spawn("ruby", ["scripts/ruby/<script>.rb"])` from the thin wrapper in `src/ruby.ts` (`runRuby`). Pass structured data as JSON on stdin/stdout, not positional CLI args. Each script must be self-contained and re-entrant.
|
|
29
29
|
- No comments explaining *what* the code does — name things well instead. Reserve comments for non-obvious *why*.
|
|
30
30
|
|
|
31
|
+
## Testing policy
|
|
32
|
+
|
|
33
|
+
Applies to this repo's own code. For generated projects, see Guardrails ("Do not invent tests for the generated code").
|
|
34
|
+
|
|
35
|
+
- **Bug fixes start with a failing test that reproduces the bug. No exceptions.** The fix commit always includes that reproduction test.
|
|
36
|
+
- **Record where each expected value comes from, in the code.** One of: the relevant spec section, a hand calculation, or a known oracle. Never paste in whatever the implementation happened to output as the expected value.
|
|
37
|
+
|
|
38
|
+
# floor(10000 * 31 / 71) = 4366 ← document the basis like this
|
|
39
|
+
|
|
40
|
+
- **See it red at least once before calling it done.** For every new test — especially guards and config checks — deliberately break the target and confirm the test fails. A test that can't fail verifies nothing.
|
|
41
|
+
- **Passing tests alone don't mean done.** Actually run the thing and exercise it.
|
|
42
|
+
- Implementation and tests go in the same commit. "I'll write the tests later" never happens.
|
|
43
|
+
|
|
31
44
|
## Substrate (what the agent operates on)
|
|
32
45
|
|
|
33
46
|
The agent targets BOTH the paid and free (MIT-licensed) editions — the same code path handles both, validated end-to-end. **Test the paid edition first**: the free edition is a strict subset of paid (paid = free + multi-tenancy + invitations + role permissions + org switching), so anything that works on paid works on free, but not vice-versa. Catching paid-only regressions first avoids "free passes, paid breaks" surprises.
|
|
34
47
|
|
|
35
|
-
|
|
48
|
+
The three env vars are required (the workers throw if one is unset; there is no built-in default). Point them at the paid repos first, then at the free repos:
|
|
36
49
|
|
|
37
50
|
- `$NATIVEAPPTEMPLATE_API` — Rails 8.1 API repo (`nativeapptemplateapi`, single repo serves both editions; multi-tenancy + invitations are conditional features)
|
|
38
51
|
- `$NATIVEAPPTEMPLATE_IOS` — SwiftUI iOS repo. Paid: `NativeAppTemplate` (Swift 23,003 LOC, adds org switching, invitations, role permissions). Free: `NativeAppTemplate-Free-iOS` (Swift 15,311 LOC).
|
|
@@ -48,16 +61,12 @@ The renamer's substitution rules (Shop / Shopkeeper / ItemTag / NativeAppTemplat
|
|
|
48
61
|
- `Shopkeeper` → the authenticated user/owner of a Shop
|
|
49
62
|
- `ItemTag` (aka Number Tag) → a queue entry, attached to a Shop
|
|
50
63
|
- **ItemTag has TWO states: `Idled` ↔ `Completed`.** It's a toggle, not a three-state machine. If a user's spec wants three states (e.g. "in-service"), extend the machine rather than assume it.
|
|
51
|
-
- Free edition is single-organization (personal account is transparent). Paid edition adds multi-tenancy, invitations, roles, org switching — all out of scope for the rename pipeline (paid-only concepts aren't in the rename plan), but
|
|
52
|
-
|
|
53
|
-
## Repository state
|
|
54
|
-
|
|
55
|
-
Pre-implementation as of this writing: `src/` and `scripts/ruby/` are empty, and there is no `package.json`. The npm commands below are the target interface — don't try to run them until the scaffolding lands. Check `src/` before assuming.
|
|
64
|
+
- Free edition is single-organization (personal account is transparent). Paid edition adds multi-tenancy, invitations, roles, org switching — all out of scope for the rename pipeline (paid-only concepts aren't in the rename plan), but test against the paid substrates first since paid is a superset of free.
|
|
56
65
|
|
|
57
66
|
## Commands
|
|
58
67
|
|
|
59
68
|
```bash
|
|
60
|
-
# Build & test the agent (run from this repo root
|
|
69
|
+
# Build & test the agent (run from this repo root)
|
|
61
70
|
npm run build
|
|
62
71
|
npm run test
|
|
63
72
|
npm run dev -- "your spec here"
|
|
@@ -139,4 +148,4 @@ Plugin `.mcp.json` pins are load-bearing: `nativeapptemplate-agent@latest` (MCP
|
|
|
139
148
|
- **Don't extend scope beyond the queue / simple-CRUD-SaaS family** during the hackathon week. See `docs/SPEC.md` section 9 for the full non-goals list.
|
|
140
149
|
- **Test the paid edition first.** Free is a strict subset of paid, so running paid first catches regressions that wouldn't surface against free alone. The OSS reproducibility story (judges/contributors with no paid license) lives in the free edition — once paid is green, point env vars at the free repos and re-run for the public demo.
|
|
141
150
|
- **Don't skip the validation layers to save time.** They are the demo story. A run that green-builds without passing Layer 3 is a failed run.
|
|
142
|
-
- **Don't edit, commit, push, or run `git clean` / `rm` inside `$NATIVEAPPTEMPLATE_API`, `$NATIVEAPPTEMPLATE_IOS`, or `$NATIVEAPPTEMPLATE_ANDROID`.** Those are the developer's working copies of the substrate (paid
|
|
151
|
+
- **Don't edit, commit, push, or run `git clean` / `rm` inside `$NATIVEAPPTEMPLATE_API`, `$NATIVEAPPTEMPLATE_IOS`, or `$NATIVEAPPTEMPLATE_ANDROID`.** Those are the developer's working copies of the substrate (paid or free), shared with other projects on the same machine. Copy them into `./out/<slug>/` first; change nothing in place. If unsure whether a command is safe, ask.
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ Coherent across all three, in under an hour.
|
|
|
17
17
|
npx nativeapptemplate-agent "a walk-in clinic queue for small veterinary practices" --project-name="VetClinic"
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
> **Status: 0.2.
|
|
20
|
+
> **Status: 0.2.3 stable.** First built during [Built with Opus 4.7: a Claude Code Hackathon](https://cerebralvalley.ai/e/built-with-4-7-hackathon) (April 21–27, 2026); shipped to npm post-hackathon. Verified end-to-end on the three demo specs below from a fresh `/tmp/` cwd — the full 3-spec × 2-edition × 2-platform matrix is green at `NATIVEAPPTEMPLATE_VISUAL=2` (see the [matrix](#demo)). Stage 2 (scripted-CRUD walk-through via `mobile-mcp` against a live Rails server) and paid-edition parity validation landed post-launch. Active development continues — see the [roadmap](./ROADMAP.md) for what's next.
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
@@ -223,7 +223,10 @@ The same generator also ships as an MCP server — `npx -y -p nativeapptemplate-
|
|
|
223
223
|
- `NATIVEAPPTEMPLATE_BRIDGE=off` — skip writing to `~/.gradle/gradle.properties`. The agent normally mirrors `NATIVEAPPTEMPLATE_API_*` (HOST/PORT/SCHEME) into renamed-product variants (`<PRODUCT>_API_*`) at run time so the generated Android app picks them up via `gradle.properties` and the iOS sim launch picks them up via `SIMCTL_CHILD_*`. Set this to disable the file write (process.env injection still runs for child-spawn paths).
|
|
224
224
|
- `NATIVEAPPTEMPLATE_BRIDGE_DRY_RUN=1` — log what would be written to `~/.gradle/gradle.properties` instead of writing. Useful before granting the bridge write access to your user-global gradle.
|
|
225
225
|
- `NATIVEAPPTEMPLATE_AGENT_ANTHROPIC_KEY` — dedicated workspace key, see [Security](#security).
|
|
226
|
-
- `
|
|
226
|
+
- `NATIVEAPPTEMPLATE_ADB_SERIAL` — the `adb -s` target when more than one Android device/emulator is attached. Without it the agent prefers an `emulator-*` serial, then the first device. Run `adb devices` to list serials.
|
|
227
|
+
- `NATIVEAPPTEMPLATE_MOBILE_IOS_DEVICE` / `NATIVEAPPTEMPLATE_MOBILE_ANDROID_DEVICE` — pin the device `mobile-mcp` drives in Stage 2 (device id or exact name) when several are booted.
|
|
228
|
+
- `NATIVEAPPTEMPLATE_IOS_DESTINATION` — the `xcodebuild -destination` for build mode (default `platform=iOS Simulator,name=iPhone 17 Pro,OS=26.2`). Set it if you don't have that simulator, e.g. `platform=iOS Simulator,name=iPhone 16`.
|
|
229
|
+
- `NATIVEAPPTEMPLATE_API_SCHEME` — `http` or `https` for the generated apps' API URL (read by the env bridge alongside the substrate Rails `.env` HOST/PORT).
|
|
227
230
|
|
|
228
231
|
The agent resolves `adb` to a known-good binary in this priority order: `$ANDROID_HOME/platform-tools/adb`, `$ANDROID_SDK_ROOT/platform-tools/adb`, `~/Library/Android/sdk/platform-tools/adb` (Android Studio default), `/Applications/android-sdk-macosx/platform-tools/adb`, `/opt/homebrew/bin/adb`, `/usr/local/bin/adb`, then PATH. This avoids surprises like a stale `~/.apportable/SDK/bin/adb` (i386, won't exec on Apple Silicon) shadowing a working `adb` on PATH.
|
|
229
232
|
|
|
@@ -232,7 +235,7 @@ The agent resolves `adb` to a known-good binary in this priority order: `$ANDROI
|
|
|
232
235
|
The agent doesn't just generate code and exit — it validates the output.
|
|
233
236
|
|
|
234
237
|
1. **Structural.** `ripgrep` for leftover domain tokens; OpenAPI contract parity check between Rails, iOS networking, and Android repository layers. A silent rename inconsistency fails the run before any tests execute.
|
|
235
|
-
2. **Runtime.** Verify the generated Rails app boots (`bin/rails runner 'puts OK'`); type-check or build the iOS and Android apps. With `NATIVEAPPTEMPLATE_VISUAL=1`, escalate to a full build (`xcodebuild build` + `./gradlew assembleDebug`) and install on the booted sim/emulator. With `=2`, additionally boot the live Rails server and drive a scripted CRUD walk-through via [`mobile-next/mobile-mcp`](https://github.com/mobile-next/mobile-mcp).
|
|
238
|
+
2. **Runtime.** Verify the generated Rails app boots (`bin/rails runner 'puts OK'`); type-check or build the iOS and Android apps. With `NATIVEAPPTEMPLATE_VISUAL=1`, escalate to a full build (`xcodebuild build` + `./gradlew assembleDebug`) and install on the booted sim/emulator. With `=2`, additionally boot the live Rails server and drive a scripted CRUD walk-through via [`mobile-next/mobile-mcp`](https://github.com/mobile-next/mobile-mcp). A walk step that doesn't reach its expected screen fails the run.
|
|
236
239
|
3. **Semantic.** Opus 4.7 as judge — scores whether the generated code and rendered UI actually express the intended domain. Vision judges read simulator/emulator screenshots directly.
|
|
237
240
|
|
|
238
241
|
See [`docs/SPEC.md`](./docs/SPEC.md) for the full design.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/agents/reviewer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAeF,wBAAsB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/agents/reviewer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAeF,wBAAsB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAuE/E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAGrD"}
|
package/dist/agents/reviewer.js
CHANGED
|
@@ -41,7 +41,13 @@ export async function runReviewer(input) {
|
|
|
41
41
|
const summary = formatDiffSummary(diff);
|
|
42
42
|
for (const line of summary)
|
|
43
43
|
trace("reviewer", line);
|
|
44
|
-
|
|
44
|
+
// An extractor that finds nothing (e.g. a renamed networking dir it no
|
|
45
|
+
// longer recognizes) would otherwise yield an empty diff and a vacuous PASS.
|
|
46
|
+
const emptyClients = [
|
|
47
|
+
...(iosEndpoints.length === 0 ? ["ios:no-endpoints-extracted"] : []),
|
|
48
|
+
...(androidEndpoints.length === 0 ? ["android:no-endpoints-extracted"] : []),
|
|
49
|
+
];
|
|
50
|
+
const fatalCount = diff.iosOrphan.length + diff.androidOrphan.length + diff.iosOnly.length + diff.androidOnly.length + emptyClients.length;
|
|
45
51
|
const baseDiffs = [
|
|
46
52
|
`rails:openapi=${railsContract.openapiVersion}`,
|
|
47
53
|
`rails:title=${railsContract.title}`,
|
|
@@ -57,6 +63,7 @@ export async function runReviewer(input) {
|
|
|
57
63
|
`android-only=${diff.androidOnly.length}`,
|
|
58
64
|
];
|
|
59
65
|
const findings = [
|
|
66
|
+
...emptyClients,
|
|
60
67
|
...formatFindings("ios-orphan", diff.iosOrphan),
|
|
61
68
|
...formatFindings("android-orphan", diff.androidOrphan),
|
|
62
69
|
...formatFindings("ios-only", diff.iosOnly),
|
|
@@ -69,9 +76,16 @@ export async function runReviewer(input) {
|
|
|
69
76
|
trace("reviewer", `${domain.displayName}: contract parity PASS`);
|
|
70
77
|
return { contractParity: "pass", diffs: [...baseDiffs, ...findings] };
|
|
71
78
|
}
|
|
72
|
-
function deriveRole(domain) {
|
|
79
|
+
export function deriveRole(domain) {
|
|
73
80
|
const pair = domain.renamePlan.find((p) => p.from === "Shopkeeper");
|
|
74
|
-
return (pair?.to ?? "Shopkeeper")
|
|
81
|
+
return pascalToSnake(pair?.to ?? "Shopkeeper");
|
|
82
|
+
}
|
|
83
|
+
// Mirrors rename.rb's snake_case: the route segment for FrontDesk is front_desk.
|
|
84
|
+
function pascalToSnake(pascal) {
|
|
85
|
+
return pascal
|
|
86
|
+
.replace(/([a-z\d])([A-Z])/g, "$1_$2")
|
|
87
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2")
|
|
88
|
+
.toLowerCase();
|
|
75
89
|
}
|
|
76
90
|
function formatDiffSummary(diff) {
|
|
77
91
|
const lines = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/agents/reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,GAGd,MAAM,uBAAuB,CAAC;AAU/B,wEAAwE;AACxE,2EAA2E;AAC3E,4EAA4E;AAC5E,qBAAqB;AACrB,EAAE;AACF,oBAAoB;AACpB,2EAA2E;AAC3E,2DAA2D;AAC3D,sEAAsE;AACtE,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,sDAAsD;AACtD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAoB;IACpD,IAAI,MAAM,CAAC,UAAU,CAAC;QAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAEtD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1D,KAAK,CAAC,UAAU,EAAE,iCAAiC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,KAAK,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,WAAW,mDAAmD,CAAC,CAAC;QAC5F,OAAO;YACL,cAAc,EAAE,MAAM;YACtB,KAAK,EAAE,CAAC,6DAA6D,CAAC;SACvE,CAAC;IACJ,CAAC;IACD,KAAK,CACH,UAAU,EACV,UAAU,aAAa,CAAC,SAAS,CAAC,MAAM,eAAe,aAAa,CAAC,WAAW,qBAAqB,aAAa,CAAC,cAAc,YAAY,aAAa,CAAC,KAAK,GAAG,CACpK,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACnE,KAAK,CAAC,UAAU,EAAE,QAAQ,YAAY,CAAC,MAAM,oBAAoB,CAAC,CAAC;IACnE,KAAK,CAAC,UAAU,EAAE,YAAY,gBAAgB,CAAC,MAAM,qBAAqB,CAAC,CAAC;IAE5E,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9F,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,OAAO;QAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEpD,MAAM,UAAU,GACd,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/agents/reviewer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../../src/agents/workers/android.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../../src/agents/workers/android.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAc,YAAY,EAAE,MAAM,aAAa,CAAC;AAsBxE,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAwChF"}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mkdir, rm, stat } from "node:fs/promises";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import { scrubbedEnv } from "../../env.js";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import { trace } from "../../trace.js";
|
|
6
6
|
import { isStub } from "../../stub.js";
|
|
7
7
|
import { runRuby } from "../../ruby.js";
|
|
8
|
+
import { copySubstrate } from "./copy.js";
|
|
8
9
|
import { slugToPascal } from "../../slug.js";
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
const SKIP_RULES = {
|
|
11
|
+
anySegment: [
|
|
12
|
+
".git",
|
|
13
|
+
".claude",
|
|
14
|
+
"build",
|
|
15
|
+
".gradle",
|
|
16
|
+
".idea",
|
|
17
|
+
".kotlin",
|
|
18
|
+
"captures",
|
|
19
|
+
"node_modules",
|
|
20
|
+
],
|
|
21
|
+
};
|
|
19
22
|
export async function runAndroidWorker(domain) {
|
|
20
23
|
if (isStub("android")) {
|
|
21
24
|
return runStubAndroidWorker(domain);
|
|
@@ -27,7 +30,7 @@ export async function runAndroidWorker(domain) {
|
|
|
27
30
|
const outDir = resolve(process.cwd(), "out", domain.slug, "android");
|
|
28
31
|
trace("android", `copying substrate from ${substrate} to ${outDir}`);
|
|
29
32
|
await prepareFresh(outDir);
|
|
30
|
-
await
|
|
33
|
+
await copySubstrate(substrate, outDir, SKIP_RULES);
|
|
31
34
|
const productPairs = buildProductRenamePairs(domain.slug);
|
|
32
35
|
const renamePlan = [...productPairs, ...domain.renamePlan].filter((p) => p.from !== p.to);
|
|
33
36
|
const plan = renamePlan.map((p) => `${p.from}->${p.to}`).join(", ");
|
|
@@ -60,27 +63,6 @@ async function prepareFresh(dir) {
|
|
|
60
63
|
}
|
|
61
64
|
await mkdir(dir, { recursive: true });
|
|
62
65
|
}
|
|
63
|
-
async function copyFiltered(src, dest) {
|
|
64
|
-
await cp(src, dest, {
|
|
65
|
-
recursive: true,
|
|
66
|
-
force: true,
|
|
67
|
-
filter: async (source) => {
|
|
68
|
-
const rel = source.slice(src.length);
|
|
69
|
-
const segments = rel.split("/").filter(Boolean);
|
|
70
|
-
if (segments.some((seg) => SKIP_SEGMENTS.has(seg)))
|
|
71
|
-
return false;
|
|
72
|
-
try {
|
|
73
|
-
const s = await lstat(source);
|
|
74
|
-
if (s.isSocket() || s.isFIFO() || s.isBlockDevice() || s.isCharacterDevice())
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
return true;
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
66
|
async function initGit(dir) {
|
|
85
67
|
await new Promise((resolvePromise, rejectPromise) => {
|
|
86
68
|
const child = spawn("git", ["init", "-q", "-b", "main"], { cwd: dir, env: scrubbedEnv() });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"android.js","sourceRoot":"","sources":["../../../src/agents/workers/android.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"android.js","sourceRoot":"","sources":["../../../src/agents/workers/android.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/agents/workers/copy.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAE1B,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE9B,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBlG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { cp, lstat } from "node:fs/promises";
|
|
2
|
+
import { relative, resolve, sep } from "node:path";
|
|
3
|
+
export async function copySubstrate(src, dest, rules) {
|
|
4
|
+
const rootPaths = rules.rootPaths ?? [];
|
|
5
|
+
const anySegment = new Set(rules.anySegment ?? []);
|
|
6
|
+
const root = resolve(src);
|
|
7
|
+
await cp(root, dest, {
|
|
8
|
+
recursive: true,
|
|
9
|
+
force: true,
|
|
10
|
+
// Default cp rewrites relative symlinks as absolute paths into the
|
|
11
|
+
// substrate, so a later in-place rewrite of out/ would edit the substrate.
|
|
12
|
+
verbatimSymlinks: true,
|
|
13
|
+
filter: async (source) => {
|
|
14
|
+
const segments = relative(root, source).split(sep).filter(Boolean);
|
|
15
|
+
const rel = segments.join("/");
|
|
16
|
+
if (rootPaths.some((p) => rel === p || rel.startsWith(`${p}/`)))
|
|
17
|
+
return false;
|
|
18
|
+
if (segments.some((seg) => anySegment.has(seg)))
|
|
19
|
+
return false;
|
|
20
|
+
try {
|
|
21
|
+
const s = await lstat(source);
|
|
22
|
+
if (s.isSocket() || s.isFIFO() || s.isBlockDevice() || s.isCharacterDevice())
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../src/agents/workers/copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AASnD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY,EAAE,KAAoB;IACjF,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,mEAAmE;QACnE,2EAA2E;QAC3E,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE;YAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9E,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9D,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,iBAAiB,EAAE;oBAAE,OAAO,KAAK,CAAC;YAC7F,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../../src/agents/workers/ios.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../../src/agents/workers/ios.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAc,YAAY,EAAE,MAAM,aAAa,CAAC;AAcxE,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAwC5E"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mkdir, rm, stat } from "node:fs/promises";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import { scrubbedEnv } from "../../env.js";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import { trace } from "../../trace.js";
|
|
6
6
|
import { isStub } from "../../stub.js";
|
|
7
7
|
import { runRuby } from "../../ruby.js";
|
|
8
|
+
import { copySubstrate } from "./copy.js";
|
|
8
9
|
import { slugToPascal } from "../../slug.js";
|
|
9
|
-
const
|
|
10
|
-
|
|
10
|
+
const SKIP_RULES = {
|
|
11
|
+
rootPaths: [".git", ".claude", "DerivedData", ".build", "Pods", "Carthage"],
|
|
12
|
+
anySegment: ["xcuserdata"],
|
|
13
|
+
};
|
|
11
14
|
export async function runIosWorker(domain) {
|
|
12
15
|
if (isStub("ios")) {
|
|
13
16
|
return runStubIosWorker(domain);
|
|
@@ -19,7 +22,7 @@ export async function runIosWorker(domain) {
|
|
|
19
22
|
const outDir = resolve(process.cwd(), "out", domain.slug, "ios");
|
|
20
23
|
trace("ios", `copying substrate from ${substrate} to ${outDir}`);
|
|
21
24
|
await prepareFresh(outDir);
|
|
22
|
-
await
|
|
25
|
+
await copySubstrate(substrate, outDir, SKIP_RULES);
|
|
23
26
|
const productPairs = buildProductRenamePairs(domain.slug);
|
|
24
27
|
const renamePlan = [...productPairs, ...domain.renamePlan].filter((p) => p.from !== p.to);
|
|
25
28
|
const plan = renamePlan.map((p) => `${p.from}->${p.to}`).join(", ");
|
|
@@ -52,29 +55,6 @@ async function prepareFresh(dir) {
|
|
|
52
55
|
}
|
|
53
56
|
await mkdir(dir, { recursive: true });
|
|
54
57
|
}
|
|
55
|
-
async function copyFiltered(src, dest) {
|
|
56
|
-
await cp(src, dest, {
|
|
57
|
-
recursive: true,
|
|
58
|
-
force: true,
|
|
59
|
-
filter: async (source) => {
|
|
60
|
-
const rel = source.slice(src.length);
|
|
61
|
-
if (SKIP_RELATIVE_PATHS.some((p) => rel === p || rel.startsWith(`${p}/`)))
|
|
62
|
-
return false;
|
|
63
|
-
const segments = rel.split("/").filter(Boolean);
|
|
64
|
-
if (segments.some((seg) => SKIP_DIR_NAMES.has(seg)))
|
|
65
|
-
return false;
|
|
66
|
-
try {
|
|
67
|
-
const s = await lstat(source);
|
|
68
|
-
if (s.isSocket() || s.isFIFO() || s.isBlockDevice() || s.isCharacterDevice())
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
return true;
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
58
|
async function initGit(dir) {
|
|
79
59
|
await new Promise((resolvePromise, rejectPromise) => {
|
|
80
60
|
const child = spawn("git", ["init", "-q", "-b", "main"], { cwd: dir, env: scrubbedEnv() });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios.js","sourceRoot":"","sources":["../../../src/agents/workers/ios.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ios.js","sourceRoot":"","sources":["../../../src/agents/workers/ios.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAsB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAU7C,MAAM,UAAU,GAAkB;IAChC,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;IAC3E,UAAU,EAAE,CAAC,YAAY,CAAC;CAC3B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAkB;IACnD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEjE,KAAK,CAAC,KAAK,EAAE,0BAA0B,SAAS,OAAO,MAAM,EAAE,CAAC,CAAC;IACjE,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,UAAU,GAA0B,CAAC,GAAG,YAAY,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACjH,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,KAAK,CAAC,KAAK,EAAE,mCAAmC,IAAI,EAAE,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,WAAW,EACX,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAC7B,CAAC;IAEF,KAAK,CACH,KAAK,EACL,WAAW,WAAW,CAAC,aAAa,mBAAmB,WAAW,CAAC,aAAa,KAAK,WAAW,CAAC,aAAa,mBAAmB,WAAW,CAAC,aAAa,mBAAmB,CAC9K,CAAC;IAEF,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,KAAK,CAAC,KAAK,EAAE,aAAa,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC;IAE9C,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,SAAS,MAAM,CAAC,IAAI,MAAM;QAClC,YAAY,EAAE,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa;QACnE,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO;QACL,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,GAAG,MAAM,KAAK,EAAE;QACrD,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IACD,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC;AAGD,KAAK,UAAU,OAAO,CAAC,GAAW;IAChC,MAAM,IAAI,OAAO,CAAO,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC3F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC;gBAAE,cAAc,EAAE,CAAC;;gBAC5B,aAAa,CAAC,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAExF,KAAK,UAAU,gBAAgB,CAAC,MAAkB;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,iCAAiC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,2BAA2B,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAC7C,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,aAAa,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC;IAE9C,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,SAAS,MAAM,CAAC,IAAI,MAAM;QAClC,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KAClD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rails.d.ts","sourceRoot":"","sources":["../../../src/agents/workers/rails.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rails.d.ts","sourceRoot":"","sources":["../../../src/agents/workers/rails.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAc,YAAY,EAAE,MAAM,aAAa,CAAC;AAaxE,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAyC9E"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mkdir, rm, stat } from "node:fs/promises";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import { scrubbedEnv } from "../../env.js";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import { trace } from "../../trace.js";
|
|
6
6
|
import { isStub } from "../../stub.js";
|
|
7
7
|
import { runRuby } from "../../ruby.js";
|
|
8
|
+
import { copySubstrate } from "./copy.js";
|
|
8
9
|
import { slugToPascal, slugToSnake } from "../../slug.js";
|
|
9
|
-
const
|
|
10
|
+
const SKIP_RULES = {
|
|
11
|
+
rootPaths: [".git", ".claude", "node_modules", "tmp", "log", "vendor/bundle"],
|
|
12
|
+
};
|
|
10
13
|
export async function runRailsWorker(domain) {
|
|
11
14
|
if (isStub("rails")) {
|
|
12
15
|
return runStubRailsWorker(domain);
|
|
@@ -18,7 +21,7 @@ export async function runRailsWorker(domain) {
|
|
|
18
21
|
const outDir = resolve(process.cwd(), "out", domain.slug, "rails");
|
|
19
22
|
trace("rails", `copying substrate from ${substrate} to ${outDir}`);
|
|
20
23
|
await prepareFresh(outDir);
|
|
21
|
-
await
|
|
24
|
+
await copySubstrate(substrate, outDir, SKIP_RULES);
|
|
22
25
|
const productPairs = buildProductRenamePairs(domain.slug);
|
|
23
26
|
const renamePlan = [...productPairs, ...domain.renamePlan].filter((p) => p.from !== p.to);
|
|
24
27
|
const plan = renamePlan.map((p) => `${p.from}->${p.to}`).join(", ");
|
|
@@ -52,26 +55,6 @@ async function prepareFresh(dir) {
|
|
|
52
55
|
}
|
|
53
56
|
await mkdir(dir, { recursive: true });
|
|
54
57
|
}
|
|
55
|
-
async function copyFiltered(src, dest) {
|
|
56
|
-
await cp(src, dest, {
|
|
57
|
-
recursive: true,
|
|
58
|
-
force: true,
|
|
59
|
-
filter: async (source) => {
|
|
60
|
-
const rel = source.slice(src.length);
|
|
61
|
-
if (SKIP_RELATIVE_PATHS.some((p) => rel === p || rel.startsWith(`${p}/`)))
|
|
62
|
-
return false;
|
|
63
|
-
try {
|
|
64
|
-
const s = await lstat(source);
|
|
65
|
-
if (s.isSocket() || s.isFIFO() || s.isBlockDevice() || s.isCharacterDevice())
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
return true;
|
|
72
|
-
},
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
58
|
async function dropSlugDatabases(slug) {
|
|
76
59
|
const prefix = `${slugToSnake(slug)}_api`;
|
|
77
60
|
const names = await listDatabasesStartingWith(prefix);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rails.js","sourceRoot":"","sources":["../../../src/agents/workers/rails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"rails.js","sourceRoot":"","sources":["../../../src/agents/workers/rails.ts"],"names":[],"mappings":"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"}
|
package/dist/env-bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-bridge.d.ts","sourceRoot":"","sources":["../src/env-bridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAsCpD,MAAM,MAAM,YAAY,GAAG;IAGzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAE1D;AAKD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAyBtF;AAkBD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAQjF;AAMD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAKlE;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IAGtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAoBF,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"env-bridge.d.ts","sourceRoot":"","sources":["../src/env-bridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAsCpD,MAAM,MAAM,YAAY,GAAG;IAGzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAE1D;AAKD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAyBtF;AAkBD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAQjF;AAMD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAKlE;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IAGtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAoBF,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CA+BpF"}
|
package/dist/env-bridge.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { readFile, writeFile } from "node:fs/promises";
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
4
|
import { slugToPascal } from "./slug.js";
|
|
5
5
|
// Bridges substrate-named API config (NATIVEAPPTEMPLATE_API_*) to the
|
|
6
6
|
// renamed-product equivalents (<PRODUCT>_API_*) so the agent's auto-
|
|
@@ -147,6 +147,7 @@ export async function syncGradleProperties(bridge) {
|
|
|
147
147
|
if (dryRun) {
|
|
148
148
|
return { path, mode: "dry-run", removedStale, preview: next };
|
|
149
149
|
}
|
|
150
|
+
await mkdir(dirname(path), { recursive: true });
|
|
150
151
|
await writeFile(path, next);
|
|
151
152
|
return { path, mode: hasValues ? "wrote" : "noop", removedStale };
|
|
152
153
|
}
|
package/dist/env-bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-bridge.js","sourceRoot":"","sources":["../src/env-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"env-bridge.js","sourceRoot":"","sources":["../src/env-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAY,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAY,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAKrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQpD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CA0C7D;AAED,wBAAsB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEvD"}
|