multiclone 0.2.0 → 0.3.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/README.md +9 -8
- package/agents/section-builder.md +5 -3
- package/commands/multiclone.md +3 -3
- package/dist/adapters/cli.js +14 -0
- package/dist/adapters/cli.js.map +1 -1
- package/dist/contracts/tools/method.js +12 -1
- package/dist/contracts/tools/method.js.map +1 -1
- package/dist/contracts/tools/session.js +9 -8
- package/dist/contracts/tools/session.js.map +1 -1
- package/dist/doctor.js +9 -0
- package/dist/doctor.js.map +1 -1
- package/dist/project/assets.js +15 -13
- package/dist/project/assets.js.map +1 -1
- package/dist/project/convert/attrs.js +318 -0
- package/dist/project/convert/attrs.js.map +1 -0
- package/dist/project/convert/convert.js +304 -0
- package/dist/project/convert/convert.js.map +1 -0
- package/dist/project/convert/css.js +299 -0
- package/dist/project/convert/css.js.map +1 -0
- package/dist/project/convert/html.js +425 -0
- package/dist/project/convert/html.js.map +1 -0
- package/dist/project/convert/jsx.js +335 -0
- package/dist/project/convert/jsx.js.map +1 -0
- package/dist/project/convert/locate.js +180 -0
- package/dist/project/convert/locate.js.map +1 -0
- package/dist/project/convert/scripts.js +214 -0
- package/dist/project/convert/scripts.js.map +1 -0
- package/dist/project/convert/styles.js +228 -0
- package/dist/project/convert/styles.js.map +1 -0
- package/dist/project/convert/write.js +142 -0
- package/dist/project/convert/write.js.map +1 -0
- package/dist/project/fonts.js +131 -0
- package/dist/project/fonts.js.map +1 -0
- package/dist/project/libraries.js +28 -0
- package/dist/project/libraries.js.map +1 -0
- package/dist/project/method.js +72 -6
- package/dist/project/method.js.map +1 -1
- package/dist/project/scaffold.js +33 -6
- package/dist/project/scaffold.js.map +1 -1
- package/dist/session/proc.js +29 -1
- package/dist/session/proc.js.map +1 -1
- package/dist/session/session.js +47 -4
- package/dist/session/session.js.map +1 -1
- package/dist/version.js +1 -1
- package/install.sh +3 -2
- package/package.json +4 -2
- package/scripts/postinstall.mjs +21 -0
- package/skills/multiclone/SKILL.md +17 -5
- package/templates/react-vite/index.html +1 -1
- package/templates/react-vite/src/main.tsx +2 -2
- package/templates/react-vite/src/styles/index.css +0 -1
- package/dist/project/draft.js +0 -860
- package/dist/project/draft.js.map +0 -1
- package/templates/react-vite/src/styles/draft.css +0 -1
package/README.md
CHANGED
|
@@ -8,9 +8,10 @@ It runs on your own machine: your Chrome, your CPU and your Claude Code. Nothing
|
|
|
8
8
|
|
|
9
9
|
You need Node 22.12 or newer and Google Chrome (Chromium, Edge or Brave also work).
|
|
10
10
|
|
|
11
|
-
1. Install
|
|
12
|
-
2.
|
|
13
|
-
|
|
11
|
+
1. Install once: `npm i -g multiclone` (or download `install.sh` from this repo, read it, and run `sh install.sh`; it also checks Chrome). That's all the setup: it also installs the Claude Code skill, the `/multiclone` command and the section-builder agent for every folder, adds a block to Codex's and Gemini CLI's global instructions when they're installed, and puts the guide in `~/.multiclone`.
|
|
12
|
+
2. Open your agent in any folder and ask: "clone https://example.com" (or `/multiclone https://example.com` in Claude Code). Or run it yourself: `multiclone start https://example.com`.
|
|
13
|
+
|
|
14
|
+
Cursor only reads project rules, so for Cursor run `multiclone setup` once in the project folder. Add `--mcp` there if you also want the MCP server; the CLI works without it.
|
|
14
15
|
|
|
15
16
|
No global install? Put `npx` in front of every command.
|
|
16
17
|
|
|
@@ -18,11 +19,11 @@ No global install? Put `npx` in front of every command.
|
|
|
18
19
|
|
|
19
20
|
1. The agent asks one question: the landing page only, specific pages, or the whole site.
|
|
20
21
|
2. `multiclone start <url> --scope …` returns in seconds with a **progress link** (for example `http://127.0.0.1:4300/`). Open it: it shows each step live, then the clone itself.
|
|
21
|
-
3. In about 2–3 minutes the first draft is live: a quick capture (desktop and mobile at the same time), a React project with the
|
|
22
|
-
4. While the agent polishes the
|
|
22
|
+
3. In about 2–3 minutes the first draft is live: a quick capture (desktop and mobile at the same time), then the page converted into a React + Vite + TypeScript project. Each section becomes its own component with the original markup and class names, the site's real CSS is split into a shared file plus one file per section, media and fonts are local (missing fonts fall back to Google Fonts), and the site's own animation scripts run unchanged. It looks and moves like the original from the first render. The clone runs on localhost next to an offline copy of the original.
|
|
23
|
+
4. While the agent polishes the converted sections (never redrawing them), multiclone captures the other pages and a deep pass (scroll motion, hovers, clicks, the code that animates) in the background. `multiclone status` shows where it is.
|
|
23
24
|
5. The agent compares the clone with the original per section, motion track and hover, fixes the worst first, and finishes with a localhost link and a score.
|
|
24
25
|
|
|
25
|
-
Run `start` again after a crash or restart: finished captures are reused and
|
|
26
|
+
Run `start` again after a crash or restart: finished captures are reused and converted pages are never overwritten. Running it from inside the workspace reuses that workspace. `multiclone stop` ends the servers; the files stay.
|
|
26
27
|
|
|
27
28
|
## What's inside
|
|
28
29
|
|
|
@@ -50,10 +51,10 @@ Run `start` again after a crash or restart: finished captures are reused and dra
|
|
|
50
51
|
| `multiclone start <url> [--scope landing\|pages\|site] [--pages /a,/b] [--dir folder]` | Capture, draft and serve in the background |
|
|
51
52
|
| `multiclone status [dir] [--wait draft\|pages\|deep]` | Where the session is, with its links |
|
|
52
53
|
| `multiclone stop [dir]` | Stop the session's servers |
|
|
53
|
-
| `multiclone setup [dir] [--agents claude,cursor,agents] [--mcp]`
|
|
54
|
+
| `multiclone setup [dir] [--agents claude,cursor,agents] [--mcp] [--global]` | Teach your agent the method |
|
|
54
55
|
| `multiclone guide [topic]` | Print the method |
|
|
55
56
|
| `multiclone capture <url> [--depth quick\|full] [--viewports desktop,mobile\|auto] [--headed]` | Record and analyse the page |
|
|
56
|
-
| `multiclone draft <capture-dir> <project-dir> [--route /pricing]` |
|
|
57
|
+
| `multiclone draft <capture-dir> <project-dir> [--route /pricing]` | Convert a capture into section components |
|
|
57
58
|
| `multiclone analyze <capture-dir>` | Rebuild the derived files |
|
|
58
59
|
| `multiclone inspect <capture-dir> section [03-pricing]` | Page through a capture |
|
|
59
60
|
| `multiclone serve <capture-dir> [--port 4400] [--mode live\|snapshot]` | Offline mirror and mock API |
|
|
@@ -4,7 +4,9 @@ description: Rebuilds one section of a multiclone capture as a React component i
|
|
|
4
4
|
tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
You rebuild exactly one section of a captured website inside an existing React + Vite + TypeScript clone project. You get three things: the capture folder, the section id (for example `03-pricing`) and the project folder.
|
|
7
|
+
You improve or rebuild exactly one section of a captured website inside an existing React + Vite + TypeScript clone project. You get three things: the capture folder, the section id (for example `03-pricing`) and the project folder.
|
|
8
|
+
|
|
9
|
+
**If the section is already converted** (a component under `<project>/src/sections/<page>/` whose root has `data-mc-section="<id>"`), polish it in place and never delete or redraw it: it already uses the original markup, class names, CSS (`<Name>.css` plus `src/styles/original/<page>/base.css`) and the site's own scripts (`src/original/<page>.ts`). Fix only what differs from the crops, keep class names unless you also update their CSS and scripts, and port a script to React only when you can match its motion (then remove its entry from `src/original/<page>.ts`).
|
|
8
10
|
|
|
9
11
|
## Read first
|
|
10
12
|
|
|
@@ -18,8 +20,8 @@ Use the multiclone `inspect` tool (`facet: "section"`, `selector: "<id>"`) for a
|
|
|
18
20
|
|
|
19
21
|
## Build
|
|
20
22
|
|
|
21
|
-
-
|
|
22
|
-
- Root element: `<section {...mcSection('<id>')}
|
|
23
|
+
- For a section with no converted component: one component in `<project>/src/sections/<page>/<Name>/<Name>.tsx`, plus typed content in `src/content/` when the section has copy or lists. Copy text from the capture; never retype or invent it.
|
|
24
|
+
- Root element: `<section {...mcSection('<id>')}>` (converted sections already carry `data-mc-section`).
|
|
23
25
|
- Every element in `motion.json` gets `{...mcTrack(id)}`; every element in `interactions.json` gets `{...mcHover(id)}`.
|
|
24
26
|
- Match the captured values: sizes, spacing, colours, fonts, radii, shadows and the motion curves (start, end, easing). Prefer the existing tokens when a value matches one.
|
|
25
27
|
- Media paths come from `src/content/asset-map.json`.
|
package/commands/multiclone.md
CHANGED
|
@@ -7,9 +7,9 @@ Clone this website with the multiclone method: $ARGUMENTS
|
|
|
7
7
|
|
|
8
8
|
1. Ask the user one short question first: clone just the landing page, specific pages (which ones), or the whole site?
|
|
9
9
|
2. Run `multiclone start <url> --scope <answer>` (add `--pages /a,/b` for specific pages, `--dir <folder>` if a project folder was given). Give the user the progress link it prints right away.
|
|
10
|
-
3. Run `multiclone status --wait draft`. When the
|
|
11
|
-
4. Follow the `multiclone` skill (or `multiclone guide`)
|
|
10
|
+
3. Run `multiclone status --wait draft`. When the converted page is live, give the user the clone link.
|
|
11
|
+
4. Follow the `multiclone` skill (or `multiclone guide`): compare first, then polish the converted sections in place, then compare and fix. Never delete a converted section and redraw it; it already uses the site's real markup, CSS and scripts.
|
|
12
12
|
|
|
13
|
-
If `multiclone` isn't on the PATH, use `npx multiclone` instead.
|
|
13
|
+
If `multiclone` isn't on the PATH, use `npx -y multiclone` instead. The result must be the React + Vite project with one component per section; never hand over a downloaded copy of the original site as the clone. If multiclone can't run, say what failed and stop.
|
|
14
14
|
|
|
15
15
|
Keep progress updates short and in plain words. Finish with the localhost link, the final compare score, and an honest list of what is approximated.
|
package/dist/adapters/cli.js
CHANGED
|
@@ -94,6 +94,18 @@ async function runTool(tool, argv) {
|
|
|
94
94
|
if (binding.longRunning)
|
|
95
95
|
process.stderr.write('Running. Ctrl+C to stop.\n');
|
|
96
96
|
}
|
|
97
|
+
/** Installs the agent method on first run when the npm install hook was skipped. */
|
|
98
|
+
async function ensureGlobalSetup() {
|
|
99
|
+
if (process.env.MULTICLONE_NO_GLOBAL_SETUP === '1')
|
|
100
|
+
return;
|
|
101
|
+
const { globalSetupCurrent, setupGlobal } = await import('../project/method.js');
|
|
102
|
+
if (globalSetupCurrent())
|
|
103
|
+
return;
|
|
104
|
+
const result = await setupGlobal().catch(() => null);
|
|
105
|
+
if (result?.ok === true) {
|
|
106
|
+
process.stderr.write(`multiclone: installed the cloning method for ${result.value.agents.join(', ')}.\n`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
97
109
|
async function main() {
|
|
98
110
|
const [command, ...rest] = process.argv.slice(2);
|
|
99
111
|
if (command === '--version' || command === '-v')
|
|
@@ -112,6 +124,7 @@ async function main() {
|
|
|
112
124
|
}
|
|
113
125
|
if (command === 'mcp') {
|
|
114
126
|
setQuiet(true);
|
|
127
|
+
await ensureGlobalSetup();
|
|
115
128
|
const { runMcpServer } = await import('./mcp.js');
|
|
116
129
|
await runMcpServer();
|
|
117
130
|
return;
|
|
@@ -119,6 +132,7 @@ async function main() {
|
|
|
119
132
|
const tool = CATALOG.find((entry) => entry.cli?.command === command);
|
|
120
133
|
if (!tool)
|
|
121
134
|
fail(`unknown command "${command}"\n\n${help()}`);
|
|
135
|
+
await ensureGlobalSetup();
|
|
122
136
|
await runTool(tool, rest);
|
|
123
137
|
}
|
|
124
138
|
main().catch((error) => {
|
package/dist/adapters/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/adapters/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/adapters/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAkC,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAoB,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAiB,MAAM,cAAc,CAAC;AAEjE,MAAM,WAAW,GAAG;;mCAEe,CAAC;AAEpC,SAAS,SAAS,CAAC,KAAe;IAChC,MAAM,KAAK,GACT,KAAK,CAAC,IAAI,KAAK,SAAS;QACtB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YACrB,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YACjC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC3B,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC;IAC7B,MAAM,QAAQ,GACZ,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAC1D,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC;IACzD,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,OAAO,WAAW,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC,WAAW,GAAG,QAAQ,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,KAAK,CAAC,IAAiB;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACzB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;SAC7B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC3D,GAAG,CAAC,SAAS,CAAC;SACd,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,gBAAgB,OAAO,CAAC,OAAO,IAAI,WAAW,WAAW,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;AAC3F,CAAC;AAED,SAAS,IAAI;IACX,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrE,OAAO,cAAc,OAAO,iNAAiN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sGAAsG,WAAW,IAAI,CAAC;AACrX,CAAC;AAED,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,OAAO,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAiB,EAAE,IAAc;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACzB,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAA8C;QACzD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACzB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;KACtC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAClF,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3F,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/F,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI;YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAChG,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACpF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACnF,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CACxF,CAAC;IACF,IAAI,OAAO,CAAC,WAAW;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAC9E,CAAC;AAED,oFAAoF;AACpF,KAAK,UAAU,iBAAiB;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,GAAG;QAAE,OAAO;IAC3D,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACjF,IAAI,kBAAkB,EAAE;QAAE,OAAO;IACjC,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gDAAgD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IAClG,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5F,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,sEAAsE;QACtE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACjE,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,iBAAiB,EAAE,CAAC;QAC1B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,YAAY,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,oBAAoB,OAAO,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,iBAAiB,EAAE,CAAC;IAC1B,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { ok } from '../../domain/result.js';
|
|
3
|
-
import { AGENTS, MCP_ENTRY, readGuide, setupProject, TOPICS } from '../../project/method.js';
|
|
3
|
+
import { AGENTS, MCP_ENTRY, readGuide, setupGlobal, setupProject, TOPICS, } from '../../project/method.js';
|
|
4
4
|
import { defineTool } from '../types.js';
|
|
5
5
|
export const guideTool = defineTool({
|
|
6
6
|
name: 'guide',
|
|
@@ -28,11 +28,22 @@ export const setupTool = defineTool({
|
|
|
28
28
|
.default([...AGENTS])
|
|
29
29
|
.describe('Which agents to set up: claude, cursor, agents (default all).'),
|
|
30
30
|
mcp: z.boolean().default(false).describe('Also register the MCP server (optional).'),
|
|
31
|
+
global: z
|
|
32
|
+
.boolean()
|
|
33
|
+
.default(false)
|
|
34
|
+
.describe('Install for every folder on this machine instead (Claude Code, Codex, Gemini CLI, ~/.multiclone). Installing the package does this already.'),
|
|
31
35
|
}),
|
|
32
36
|
cli: { command: 'setup', positionals: ['dir'] },
|
|
33
37
|
readOnly: false,
|
|
34
38
|
openWorld: false,
|
|
35
39
|
run: async (input) => {
|
|
40
|
+
if (input.global) {
|
|
41
|
+
const global = await setupGlobal();
|
|
42
|
+
if (!global.ok)
|
|
43
|
+
return global;
|
|
44
|
+
const text = `Installed multiclone for every folder on this machine: ${global.value.agents.join(', ')} (${String(global.value.written.length)} files). Cursor reads project rules only: run \`multiclone setup\` in a folder to add one.`;
|
|
45
|
+
return ok({ data: global.value, text });
|
|
46
|
+
}
|
|
36
47
|
const result = await setupProject({ dir: input.dir, agents: input.agents, mcp: input.mcp });
|
|
37
48
|
if (!result.ok)
|
|
38
49
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method.js","sourceRoot":"","sources":["../../../src/contracts/tools/method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"method.js","sourceRoot":"","sources":["../../../src/contracts/tools/method.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { readdir } from 'node:fs/promises';
|
|
|
3
3
|
import { join, resolve } from 'node:path';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { ok, err, mcError } from '../../domain/result.js';
|
|
6
|
-
import {
|
|
7
|
-
import { sessionStatus, startSession, stopSession } from '../../session/session.js';
|
|
6
|
+
import { convertPage } from '../../project/convert/convert.js';
|
|
7
|
+
import { enclosingWorkspace, sessionStatus, startSession, stopSession, } from '../../session/session.js';
|
|
8
8
|
import { defineTool } from '../types.js';
|
|
9
9
|
/** Short, capped summary for agents; everything else is in .multiclone/session.json. */
|
|
10
10
|
export function summarize(state) {
|
|
@@ -143,8 +143,8 @@ export const stopTool = defineTool({
|
|
|
143
143
|
});
|
|
144
144
|
export const draftTool = defineTool({
|
|
145
145
|
name: 'draft',
|
|
146
|
-
title: '
|
|
147
|
-
description:
|
|
146
|
+
title: 'Convert a capture into React sections',
|
|
147
|
+
description: "Convert a captured page into the React project: the original markup becomes one .tsx component per section (original class names kept), the site's real CSS is split into a shared sheet plus one sheet per section, media and fonts point at local copies, and the site's own animation scripts run unchanged from public/original. The result looks and moves like the original from the first render; polish it section by section, never redraw it. `start` runs this for you.",
|
|
148
148
|
input: z.object({
|
|
149
149
|
capture: z.string().describe('Capture folder.'),
|
|
150
150
|
project: z.string().describe('Scaffolded project folder.'),
|
|
@@ -158,7 +158,7 @@ export const draftTool = defineTool({
|
|
|
158
158
|
readOnly: false,
|
|
159
159
|
openWorld: false,
|
|
160
160
|
run: async (input) => {
|
|
161
|
-
const result = await
|
|
161
|
+
const result = await convertPage({
|
|
162
162
|
capture: input.capture,
|
|
163
163
|
project: input.project,
|
|
164
164
|
route: input.route,
|
|
@@ -170,7 +170,7 @@ export const draftTool = defineTool({
|
|
|
170
170
|
return ok({
|
|
171
171
|
data: result,
|
|
172
172
|
text: [
|
|
173
|
-
`
|
|
173
|
+
`Converted ${result.route} → ${result.page} (${String(result.sections.length)} sections, ${result.source} HTML, ${String(result.scripts.kept)} original scripts, ${String(result.css.sectionRules)} CSS rules in section files)`,
|
|
174
174
|
...list,
|
|
175
175
|
...result.warnings.slice(0, 5).map((warning) => ` ! ${warning}`),
|
|
176
176
|
].join('\n'),
|
|
@@ -184,8 +184,9 @@ function noSession() {
|
|
|
184
184
|
async function findWorkspace(dir) {
|
|
185
185
|
if (dir !== undefined)
|
|
186
186
|
return resolve(dir);
|
|
187
|
-
|
|
188
|
-
|
|
187
|
+
const around = enclosingWorkspace('.');
|
|
188
|
+
if (around)
|
|
189
|
+
return around;
|
|
189
190
|
const candidates = (await readdir('.').catch(() => []))
|
|
190
191
|
.filter((name) => name.startsWith('multiclone-') && existsSync(join(name, '.multiclone', 'session.json')))
|
|
191
192
|
.sort();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/contracts/tools/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/contracts/tools/session.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { findChrome, launchBrowser } from './core/chrome.js';
|
|
2
|
+
import { globalSetupCurrent } from './project/method.js';
|
|
2
3
|
import { Page } from './core/page.js';
|
|
3
4
|
export async function doctor() {
|
|
4
5
|
const checks = [];
|
|
@@ -8,6 +9,14 @@ export async function doctor() {
|
|
|
8
9
|
ok: major > 22 || (major === 22 && minor >= 12),
|
|
9
10
|
detail: process.versions.node,
|
|
10
11
|
});
|
|
12
|
+
const method = globalSetupCurrent();
|
|
13
|
+
checks.push({
|
|
14
|
+
name: 'Agent method installed',
|
|
15
|
+
ok: method,
|
|
16
|
+
detail: method
|
|
17
|
+
? 'Claude Code skill, /multiclone command and ~/.multiclone guide'
|
|
18
|
+
: 'missing — run `multiclone setup --global`',
|
|
19
|
+
});
|
|
11
20
|
const chrome = findChrome();
|
|
12
21
|
checks.push({
|
|
13
22
|
name: 'Chrome / Chromium',
|
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAQtC,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,iBAAiB;QACvB,EAAE,EAAE,KAAK,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;KAC9B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,mBAAmB;QACzB,EAAE,EAAE,MAAM,KAAK,IAAI;QACnB,MAAM,EAAE,MAAM,IAAI,qDAAqD;KACxE,CAAC,CAAC;IACH,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC/B,yDAAyD,CAC1D,CAAC;YACF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,mBAAmB;gBACzB,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iDAAiD;aAChF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAQtC,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,iBAAiB;QACvB,EAAE,EAAE,KAAK,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;KAC9B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,wBAAwB;QAC9B,EAAE,EAAE,MAAM;QACV,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,gEAAgE;YAClE,CAAC,CAAC,2CAA2C;KAChD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,mBAAmB;QACzB,EAAE,EAAE,MAAM,KAAK,IAAI;QACnB,MAAM,EAAE,MAAM,IAAI,qDAAqD;KACxE,CAAC,CAAC;IACH,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC/B,yDAAyD,CAC1D,CAAC;YACF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,mBAAmB;gBACzB,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iDAAiD;aAChF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/project/assets.js
CHANGED
|
@@ -29,19 +29,7 @@ export async function exportAssets(captureDir, projectDir) {
|
|
|
29
29
|
continue;
|
|
30
30
|
if (!MEDIA.test(entry.mimeType) && !MEDIA_EXT.test(url.pathname))
|
|
31
31
|
continue;
|
|
32
|
-
const
|
|
33
|
-
.split('/')
|
|
34
|
-
.filter(Boolean)
|
|
35
|
-
.map((part) => safeDecode(part)
|
|
36
|
-
.replace(/[^a-zA-Z0-9._-]+/g, '_')
|
|
37
|
-
.slice(0, 80))
|
|
38
|
-
.join('/');
|
|
39
|
-
const ext = extname(safePath) ? '' : extname(entry.file);
|
|
40
|
-
const local = `/media/${url.hostname}/${safePath || 'index'}${ext}`;
|
|
41
|
-
const suffix = url.search
|
|
42
|
-
? `-${Buffer.from(url.search).toString('base64url').slice(0, 10)}`
|
|
43
|
-
: '';
|
|
44
|
-
const finalLocal = suffix ? local.replace(/(\.[a-z0-9]+)?$/i, `${suffix}$1`) : local;
|
|
32
|
+
const finalLocal = mediaPath(url, entry.file);
|
|
45
33
|
const target = join(project, 'public', finalLocal);
|
|
46
34
|
await ensureDir(join(target, '..'));
|
|
47
35
|
// A missing or unreadable capture file costs one asset, never the whole export.
|
|
@@ -66,4 +54,18 @@ function safeDecode(part) {
|
|
|
66
54
|
return part;
|
|
67
55
|
}
|
|
68
56
|
}
|
|
57
|
+
/** Where a captured file lives in the clone: `/media/<host>/<path>` (query kept as a suffix). */
|
|
58
|
+
export function mediaPath(url, file) {
|
|
59
|
+
const safePath = url.pathname
|
|
60
|
+
.split('/')
|
|
61
|
+
.filter(Boolean)
|
|
62
|
+
.map((part) => safeDecode(part)
|
|
63
|
+
.replace(/[^a-zA-Z0-9._-]+/g, '_')
|
|
64
|
+
.slice(0, 80))
|
|
65
|
+
.join('/');
|
|
66
|
+
const ext = extname(safePath) ? '' : extname(file);
|
|
67
|
+
const local = `/media/${url.hostname}/${safePath || 'index'}${ext}`;
|
|
68
|
+
const suffix = url.search ? `-${Buffer.from(url.search).toString('base64url').slice(0, 10)}` : '';
|
|
69
|
+
return suffix ? local.replace(/(\.[a-z0-9]+)?$/i, `${suffix}$1`) : local;
|
|
70
|
+
}
|
|
69
71
|
//# sourceMappingURL=assets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/project/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,KAAK,GAAG,6BAA6B,CAAC;AAC5C,MAAM,SAAS,GACb,uFAAuF,CAAC;AAQ1F;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAkB,EAAE,UAAkB;IACvE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAiB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,SAAS;QAC1B,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;YAAE,SAAS;QACpE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QAC3E,MAAM,
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/project/assets.ts"],"names":[],"mappings":"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"}
|