@iloom/cli 0.5.4 → 0.6.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 +116 -4
- package/dist/{ClaudeContextManager-PQ46VILL.js → ClaudeContextManager-6J2EB4QU.js} +5 -5
- package/dist/{ClaudeService-6OMO552H.js → ClaudeService-O2PB22GX.js} +4 -4
- package/dist/{LoomLauncher-ZHDTPKED.js → LoomLauncher-5LFM4LXB.js} +5 -5
- package/dist/ProjectCapabilityDetector-S5FLNCFI.js +11 -0
- package/dist/{PromptTemplateManager-5GNF7FCP.js → PromptTemplateManager-C3DK6XZL.js} +2 -2
- package/dist/README.md +116 -4
- package/dist/{SettingsManager-CNYBGXDT.js → SettingsManager-35F5RUJH.js} +2 -2
- package/dist/agents/iloom-framework-detector.md +366 -0
- package/dist/agents/iloom-issue-analyze-and-plan.md +0 -10
- package/dist/agents/iloom-issue-implementer.md +1 -1
- package/dist/agents/iloom-issue-planner.md +0 -10
- package/dist/build-FJVYP7EV.js +27 -0
- package/dist/build-FJVYP7EV.js.map +1 -0
- package/dist/{chunk-SHVB3EFE.js → chunk-64O2UIWO.js} +44 -19
- package/dist/chunk-64O2UIWO.js.map +1 -0
- package/dist/{chunk-FXJKNVZW.js → chunk-6U6VI4SZ.js} +3 -3
- package/dist/{chunk-QPS6TZUW.js → chunk-7WANFUIK.js} +2 -2
- package/dist/{chunk-LVLRMP7V.js → chunk-AXX3QIKK.js} +58 -14
- package/dist/chunk-AXX3QIKK.js.map +1 -0
- package/dist/chunk-BXCPJJYM.js +133 -0
- package/dist/chunk-BXCPJJYM.js.map +1 -0
- package/dist/{chunk-ESP2FF52.js → chunk-EK3XCAAS.js} +2 -2
- package/dist/{chunk-IDUICCZY.js → chunk-F6WVM437.js} +3 -1
- package/dist/chunk-F6WVM437.js.map +1 -0
- package/dist/{chunk-TKL7RBEF.js → chunk-GEXP5IOF.js} +3 -3
- package/dist/{chunk-J7GHNTYK.js → chunk-K7SEEHKO.js} +3 -3
- package/dist/{chunk-NRDY6XO3.js → chunk-PMVWQBWS.js} +73 -17
- package/dist/chunk-PMVWQBWS.js.map +1 -0
- package/dist/{chunk-NKRQNER7.js → chunk-Q7POFB5Q.js} +1 -55
- package/dist/chunk-Q7POFB5Q.js.map +1 -0
- package/dist/{chunk-N4ZJVATC.js → chunk-SN3Z6EZO.js} +11 -7
- package/dist/chunk-SN3Z6EZO.js.map +1 -0
- package/dist/chunk-TRQ76ISK.js +159 -0
- package/dist/chunk-TRQ76ISK.js.map +1 -0
- package/dist/{chunk-ZXWTOJXA.js → chunk-UB4TFAXJ.js} +38 -9
- package/dist/chunk-UB4TFAXJ.js.map +1 -0
- package/dist/{chunk-YPOG7WY4.js → chunk-UQIXZ3BA.js} +2 -2
- package/dist/{chunk-K5G5SFWY.js → chunk-W6WVRHJ6.js} +13 -1
- package/dist/chunk-W6WVRHJ6.js.map +1 -0
- package/dist/{chunk-E4F7KASE.js → chunk-WIJWIKAN.js} +3 -3
- package/dist/{chunk-EBISESAP.js → chunk-ZPSTA5PR.js} +16 -6
- package/dist/chunk-ZPSTA5PR.js.map +1 -0
- package/dist/{cleanup-H5QUWBWE.js → cleanup-OU2HFOOG.js} +11 -11
- package/dist/cli.js +107 -69
- package/dist/cli.js.map +1 -1
- package/dist/compile-ULNO5F7Q.js +57 -0
- package/dist/compile-ULNO5F7Q.js.map +1 -0
- package/dist/{contribute-VP73TPAL.js → contribute-T7ENST5N.js} +3 -3
- package/dist/{dev-server-H5FFXIVX.js → dev-server-4RCDJ5MU.js} +9 -9
- package/dist/{feedback-567ZH2O7.js → feedback-O4Q55SVS.js} +8 -8
- package/dist/{git-UHUNQZBA.js → git-FVMGBHC2.js} +3 -3
- package/dist/{ignite-VPP4PMF4.js → ignite-VHV65WEZ.js} +12 -8
- package/dist/ignite-VHV65WEZ.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/{init-4ZR2XXZA.js → init-HB34Q5FH.js} +8 -7
- package/dist/lint-5JMCWE4Y.js +27 -0
- package/dist/lint-5JMCWE4Y.js.map +1 -0
- package/dist/{open-6HBQHPUL.js → open-WHVUYGPY.js} +9 -9
- package/dist/prompts/init-prompt.txt +108 -0
- package/dist/prompts/issue-prompt.txt +12 -12
- package/dist/{rebase-SRBOVC4M.js → rebase-5EY3Q6XP.js} +5 -5
- package/dist/{recap-X7FTTKPP.js → recap-VOOUXOGP.js} +5 -5
- package/dist/{run-5FU76FFE.js → run-NCRK5NPR.js} +9 -9
- package/dist/schema/settings.schema.json +8 -0
- package/dist/{shell-UQJDI36V.js → shell-SBLXVOVJ.js} +5 -5
- package/dist/{summary-MOKN7RM2.js → summary-CVFAMDOJ.js} +6 -6
- package/dist/test-3KIVXI6J.js +27 -0
- package/dist/test-3KIVXI6J.js.map +1 -0
- package/dist/{test-git-GB3B6QNT.js → test-git-ZB6AGGRW.js} +3 -3
- package/dist/{test-prefix-YQNNTCY3.js → test-prefix-FBGXKMPA.js} +3 -3
- package/package.json +2 -1
- package/dist/ProjectCapabilityDetector-34LU7JJ4.js +0 -9
- package/dist/chunk-2ZPFJQ3B.js +0 -63
- package/dist/chunk-2ZPFJQ3B.js.map +0 -1
- package/dist/chunk-EBISESAP.js.map +0 -1
- package/dist/chunk-IDUICCZY.js.map +0 -1
- package/dist/chunk-K5G5SFWY.js.map +0 -1
- package/dist/chunk-LVLRMP7V.js.map +0 -1
- package/dist/chunk-N4ZJVATC.js.map +0 -1
- package/dist/chunk-NKRQNER7.js.map +0 -1
- package/dist/chunk-NRDY6XO3.js.map +0 -1
- package/dist/chunk-SHVB3EFE.js.map +0 -1
- package/dist/chunk-ZXWTOJXA.js.map +0 -1
- package/dist/ignite-VPP4PMF4.js.map +0 -1
- /package/dist/{ClaudeContextManager-PQ46VILL.js.map → ClaudeContextManager-6J2EB4QU.js.map} +0 -0
- /package/dist/{ClaudeService-6OMO552H.js.map → ClaudeService-O2PB22GX.js.map} +0 -0
- /package/dist/{LoomLauncher-ZHDTPKED.js.map → LoomLauncher-5LFM4LXB.js.map} +0 -0
- /package/dist/{ProjectCapabilityDetector-34LU7JJ4.js.map → ProjectCapabilityDetector-S5FLNCFI.js.map} +0 -0
- /package/dist/{PromptTemplateManager-5GNF7FCP.js.map → PromptTemplateManager-C3DK6XZL.js.map} +0 -0
- /package/dist/{SettingsManager-CNYBGXDT.js.map → SettingsManager-35F5RUJH.js.map} +0 -0
- /package/dist/{chunk-FXJKNVZW.js.map → chunk-6U6VI4SZ.js.map} +0 -0
- /package/dist/{chunk-QPS6TZUW.js.map → chunk-7WANFUIK.js.map} +0 -0
- /package/dist/{chunk-ESP2FF52.js.map → chunk-EK3XCAAS.js.map} +0 -0
- /package/dist/{chunk-TKL7RBEF.js.map → chunk-GEXP5IOF.js.map} +0 -0
- /package/dist/{chunk-J7GHNTYK.js.map → chunk-K7SEEHKO.js.map} +0 -0
- /package/dist/{chunk-YPOG7WY4.js.map → chunk-UQIXZ3BA.js.map} +0 -0
- /package/dist/{chunk-E4F7KASE.js.map → chunk-WIJWIKAN.js.map} +0 -0
- /package/dist/{cleanup-H5QUWBWE.js.map → cleanup-OU2HFOOG.js.map} +0 -0
- /package/dist/{contribute-VP73TPAL.js.map → contribute-T7ENST5N.js.map} +0 -0
- /package/dist/{dev-server-H5FFXIVX.js.map → dev-server-4RCDJ5MU.js.map} +0 -0
- /package/dist/{feedback-567ZH2O7.js.map → feedback-O4Q55SVS.js.map} +0 -0
- /package/dist/{git-UHUNQZBA.js.map → git-FVMGBHC2.js.map} +0 -0
- /package/dist/{init-4ZR2XXZA.js.map → init-HB34Q5FH.js.map} +0 -0
- /package/dist/{open-6HBQHPUL.js.map → open-WHVUYGPY.js.map} +0 -0
- /package/dist/{rebase-SRBOVC4M.js.map → rebase-5EY3Q6XP.js.map} +0 -0
- /package/dist/{recap-X7FTTKPP.js.map → recap-VOOUXOGP.js.map} +0 -0
- /package/dist/{run-5FU76FFE.js.map → run-NCRK5NPR.js.map} +0 -0
- /package/dist/{shell-UQJDI36V.js.map → shell-SBLXVOVJ.js.map} +0 -0
- /package/dist/{summary-MOKN7RM2.js.map → summary-CVFAMDOJ.js.map} +0 -0
- /package/dist/{test-git-GB3B6QNT.js.map → test-git-ZB6AGGRW.js.map} +0 -0
- /package/dist/{test-prefix-YQNNTCY3.js.map → test-prefix-FBGXKMPA.js.map} +0 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
InitCommand
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-UB4TFAXJ.js";
|
|
5
|
+
import "./chunk-Q7POFB5Q.js";
|
|
6
6
|
import "./chunk-F2PWIRV4.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-SN3Z6EZO.js";
|
|
8
|
+
import "./chunk-EK3XCAAS.js";
|
|
8
9
|
import "./chunk-FXDYIV3K.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-W6WVRHJ6.js";
|
|
11
|
+
import "./chunk-GEXP5IOF.js";
|
|
12
|
+
import "./chunk-F6WVM437.js";
|
|
12
13
|
import "./chunk-CFUWQHCJ.js";
|
|
13
14
|
import "./chunk-ZX3GTM7O.js";
|
|
14
15
|
import "./chunk-AEIMYF4P.js";
|
|
@@ -17,4 +18,4 @@ import "./chunk-VT4PDUYT.js";
|
|
|
17
18
|
export {
|
|
18
19
|
InitCommand
|
|
19
20
|
};
|
|
20
|
-
//# sourceMappingURL=init-
|
|
21
|
+
//# sourceMappingURL=init-HB34Q5FH.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
ScriptCommandBase
|
|
4
|
+
} from "./chunk-TRQ76ISK.js";
|
|
5
|
+
import "./chunk-AXX3QIKK.js";
|
|
6
|
+
import "./chunk-UQIXZ3BA.js";
|
|
7
|
+
import "./chunk-BXCPJJYM.js";
|
|
8
|
+
import "./chunk-EK3XCAAS.js";
|
|
9
|
+
import "./chunk-GEXP5IOF.js";
|
|
10
|
+
import "./chunk-F6WVM437.js";
|
|
11
|
+
import "./chunk-CFUWQHCJ.js";
|
|
12
|
+
import "./chunk-6MLEBAYZ.js";
|
|
13
|
+
import "./chunk-VT4PDUYT.js";
|
|
14
|
+
|
|
15
|
+
// src/commands/lint.ts
|
|
16
|
+
var LintCommand = class extends ScriptCommandBase {
|
|
17
|
+
getScriptName() {
|
|
18
|
+
return "lint";
|
|
19
|
+
}
|
|
20
|
+
getScriptDisplayName() {
|
|
21
|
+
return "Lint";
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export {
|
|
25
|
+
LintCommand
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=lint-5JMCWE4Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/lint.ts"],"sourcesContent":["import { ScriptCommandBase, ScriptCommandInput } from './script-command-base.js'\n\nexport type { ScriptCommandInput as LintCommandInput }\n\n/**\n * LintCommand - Run the lint script for a workspace\n * Uses package.iloom.json if available, otherwise falls back to package.json\n */\nexport class LintCommand extends ScriptCommandBase {\n\tgetScriptName(): string {\n\t\treturn 'lint'\n\t}\n\n\tgetScriptDisplayName(): string {\n\t\treturn 'Lint'\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAQO,IAAM,cAAN,cAA0B,kBAAkB;AAAA,EAClD,gBAAwB;AACvB,WAAO;AAAA,EACR;AAAA,EAEA,uBAA+B;AAC9B,WAAO;AAAA,EACR;AACD;","names":[]}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
DevServerManager
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-LVLRMP7V.js";
|
|
4
|
+
} from "./chunk-64O2UIWO.js";
|
|
6
5
|
import {
|
|
7
6
|
calculatePortForBranch
|
|
8
7
|
} from "./chunk-VU3QMIP2.js";
|
|
8
|
+
import "./chunk-AXX3QIKK.js";
|
|
9
9
|
import {
|
|
10
10
|
IdentifierParser
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UQIXZ3BA.js";
|
|
12
12
|
import {
|
|
13
13
|
ProjectCapabilityDetector
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-ZPSTA5PR.js";
|
|
15
|
+
import "./chunk-BXCPJJYM.js";
|
|
16
16
|
import {
|
|
17
17
|
GitWorktreeManager
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-EK3XCAAS.js";
|
|
19
19
|
import {
|
|
20
20
|
openBrowser
|
|
21
21
|
} from "./chunk-YETJNRQM.js";
|
|
@@ -24,10 +24,10 @@ import {
|
|
|
24
24
|
} from "./chunk-GYCR2LOU.js";
|
|
25
25
|
import {
|
|
26
26
|
extractIssueNumber
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-GEXP5IOF.js";
|
|
28
28
|
import {
|
|
29
29
|
SettingsManager
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-F6WVM437.js";
|
|
31
31
|
import "./chunk-CFUWQHCJ.js";
|
|
32
32
|
import "./chunk-6MLEBAYZ.js";
|
|
33
33
|
import {
|
|
@@ -288,4 +288,4 @@ Make sure the project is built (run 'il start' first)`
|
|
|
288
288
|
export {
|
|
289
289
|
OpenCommand
|
|
290
290
|
};
|
|
291
|
-
//# sourceMappingURL=open-
|
|
291
|
+
//# sourceMappingURL=open-WHVUYGPY.js.map
|
|
@@ -104,6 +104,14 @@ The following JSON Schema defines valid iloom settings:
|
|
|
104
104
|
},
|
|
105
105
|
"description": "List of branches that cannot be deleted (defaults to [mainBranch, \"main\", \"master\", \"develop\"])"
|
|
106
106
|
},
|
|
107
|
+
"copyGitIgnoredPatterns": {
|
|
108
|
+
"type": "array",
|
|
109
|
+
"items": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"minLength": 1
|
|
112
|
+
},
|
|
113
|
+
"description": "Glob patterns for gitignored files to copy to looms (e.g., [\"*.db\", \"data/*.sqlite\"]). Great for local dbs and large test data files that are too big to commit to git. Note: .env (dotenv-flow) files, iloom's and claude's local settings are automatically copied and do not need to be specified here."
|
|
114
|
+
},
|
|
107
115
|
"workflows": {
|
|
108
116
|
"type": "object",
|
|
109
117
|
"properties": {
|
|
@@ -684,6 +692,72 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
|
|
|
684
692
|
- Users can select "Other" on any question to provide custom input
|
|
685
693
|
- Process all answers at once when the user submits
|
|
686
694
|
|
|
695
|
+
{{#IF NO_PACKAGE_JSON}}
|
|
696
|
+
### Phase 1.5: Framework Detection (Non-Node.js Project) - DO NOT SKIP
|
|
697
|
+
|
|
698
|
+
iloom needs to detect the project's language and framework to configure build/test/dev scripts.
|
|
699
|
+
|
|
700
|
+
**Invoke the framework detector agent** using the `iloom-framework-detector` agent:
|
|
701
|
+
|
|
702
|
+
The agent will:
|
|
703
|
+
1. Scan for language markers (Cargo.toml, requirements.txt, Gemfile, go.mod, etc.)
|
|
704
|
+
2. Detect common frameworks
|
|
705
|
+
3. Generate appropriate scripts for build, test, and dev commands
|
|
706
|
+
4. Create `.iloom/package.iloom.json` with the detected configuration
|
|
707
|
+
5. Detect and set project capabilities (cli, web) based on the framework
|
|
708
|
+
|
|
709
|
+
**File Format:**
|
|
710
|
+
```json
|
|
711
|
+
{
|
|
712
|
+
"capabilities": ["cli"],
|
|
713
|
+
"scripts": {
|
|
714
|
+
"install": "your-install-command",
|
|
715
|
+
"build": "your-build-command",
|
|
716
|
+
"test": "your-test-command",
|
|
717
|
+
"dev": "your-dev-command",
|
|
718
|
+
"lint": "your-lint-command",
|
|
719
|
+
"typecheck": "your-typecheck-command"
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
**Supported Scripts:**
|
|
725
|
+
| Script | Purpose | When Used |
|
|
726
|
+
|--------|---------|-----------|
|
|
727
|
+
| `install` | Install dependencies | `il start` (loom creation), `il finish` (post-merge) |
|
|
728
|
+
| `build` | Compile/build project | `il build`, `il finish` (CLI projects, post-merge) |
|
|
729
|
+
| `test` | Run test suite | `il test`, `il finish` validation |
|
|
730
|
+
| `dev` | Start dev server | `il dev-server` |
|
|
731
|
+
| `lint` | Run linter | `il lint`, `il finish` validation |
|
|
732
|
+
| `typecheck` | Type checking | `il typecheck`, `il finish` validation |
|
|
733
|
+
| `compile` | Alternative to typecheck | `il compile`, `il finish` validation (preferred over typecheck if both exist) |
|
|
734
|
+
|
|
735
|
+
**Capabilities:**
|
|
736
|
+
- `"cli"` - Command-line interface/tool (enables CLI isolation features)
|
|
737
|
+
- `"web"` - Web application with dev server (enables port assignment)
|
|
738
|
+
|
|
739
|
+
**Note:** Scripts in `package.iloom.json` are raw shell commands, not npm script names. iloom will execute them directly.
|
|
740
|
+
|
|
741
|
+
**After framework detection, verify capabilities were set correctly:**
|
|
742
|
+
|
|
743
|
+
If the framework detector did not set capabilities, or if you need to ask the user:
|
|
744
|
+
- Question: "What type of project is this?"
|
|
745
|
+
- Options:
|
|
746
|
+
- "cli" - Command-line interface/tool
|
|
747
|
+
- "web" - Web application with dev server
|
|
748
|
+
- "both" - Both CLI and web capabilities
|
|
749
|
+
- "neither" - Library or other project type
|
|
750
|
+
- Update `.iloom/package.iloom.json` with the appropriate `capabilities` array.
|
|
751
|
+
|
|
752
|
+
**When to infer capabilities:**
|
|
753
|
+
- Flask/Django/FastAPI/Rails/Actix/Rocket detected -> include "web"
|
|
754
|
+
- CLI frameworks (click, fire, typer, clap) detected -> include "cli"
|
|
755
|
+
- `[[bin]]` in Cargo.toml -> include "cli"
|
|
756
|
+
- No clear indicators -> ask user explicitly
|
|
757
|
+
|
|
758
|
+
After the framework detector agent completes (and capabilities are set), proceed to Phase 2.
|
|
759
|
+
{{/IF NO_PACKAGE_JSON}}
|
|
760
|
+
|
|
687
761
|
### Phase 2: Tooling Configuration
|
|
688
762
|
|
|
689
763
|
This phase configures external tooling integrations. Use AskUserQuestion to gather these settings.
|
|
@@ -1229,6 +1303,7 @@ Need more advanced configuration? I can help you set up:
|
|
|
1229
1303
|
• Database Settings - Configure database branching for isolated development
|
|
1230
1304
|
• Workflow Behavior - Control permissions, IDE launching, dev servers, and terminal behavior
|
|
1231
1305
|
• Protected Branches - Prevent iloom from creating worktrees for certain branches
|
|
1306
|
+
• Custom Scripts - Override package.json scripts with custom commands
|
|
1232
1307
|
|
|
1233
1308
|
You can ask me questions like:
|
|
1234
1309
|
"Is it possible to have the analysis agent use a different model?"
|
|
@@ -1236,6 +1311,7 @@ You can ask me questions like:
|
|
|
1236
1311
|
"Can I disable the IDE from launching automatically?"
|
|
1237
1312
|
"How do I protect my main branch from worktree creation?"
|
|
1238
1313
|
"What models are available for the different agents?"
|
|
1314
|
+
"How do I use custom build/test commands instead of package.json scripts?"
|
|
1239
1315
|
|
|
1240
1316
|
Just ask any of these questions and I'll help you modify your settings.
|
|
1241
1317
|
|
|
@@ -1289,6 +1365,38 @@ If users ask about specific configurations, help them add these sections to thei
|
|
|
1289
1365
|
}
|
|
1290
1366
|
```
|
|
1291
1367
|
|
|
1368
|
+
6. **Custom Script Configuration (package.iloom.json):**
|
|
1369
|
+
|
|
1370
|
+
If users want to override or supplement npm scripts with custom commands, help them create `.iloom/package.iloom.json`:
|
|
1371
|
+
```json
|
|
1372
|
+
{
|
|
1373
|
+
"scripts": {
|
|
1374
|
+
"install": "your-custom-install-command",
|
|
1375
|
+
"build": "your-custom-build-command",
|
|
1376
|
+
"test": "your-custom-test-command",
|
|
1377
|
+
"dev": "your-custom-dev-command",
|
|
1378
|
+
"lint": "your-custom-lint-command",
|
|
1379
|
+
"typecheck": "your-custom-typecheck-command"
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
```
|
|
1383
|
+
|
|
1384
|
+
When `package.iloom.json` exists, iloom uses its scripts instead of `package.json`.
|
|
1385
|
+
|
|
1386
|
+
**Supported scripts:**
|
|
1387
|
+
- `install` - Run during loom creation and post-merge (e.g., `bundle install`, `poetry install`)
|
|
1388
|
+
- `build` - Compile/build the project
|
|
1389
|
+
- `test` - Run the test suite
|
|
1390
|
+
- `dev` - Start the development server
|
|
1391
|
+
- `lint` - Run the linter
|
|
1392
|
+
- `typecheck` or `compile` - Type checking (compile takes precedence if both exist)
|
|
1393
|
+
|
|
1394
|
+
**Common use cases:**
|
|
1395
|
+
- Non-Node.js projects (Ruby, Python, Rust, Go, etc.)
|
|
1396
|
+
- Using a different test runner than what's in package.json
|
|
1397
|
+
- Running additional commands before/after the standard npm scripts
|
|
1398
|
+
- Wrapping commands with environment variables or tools
|
|
1399
|
+
|
|
1292
1400
|
## Important Notes
|
|
1293
1401
|
|
|
1294
1402
|
- **Validate ALL inputs** against the schema before writing files
|
|
@@ -266,9 +266,9 @@ Perform ONE comprehensive scan to determine which agents need to run:
|
|
|
266
266
|
**STEP 1 - Enhancement Phase:**
|
|
267
267
|
|
|
268
268
|
Only execute if workflow plan determined NEEDS_ENHANCEMENT:
|
|
269
|
-
1. Execute: @agent-iloom-issue-enhancer ISSUE_NUMBER with the following instructions about assumptions:
|
|
269
|
+
1. Execute: @agent-iloom-issue-enhancer ISSUE_NUMBER {{#IF ONE_SHOT_MODE}}with the following instructions about assumptions:
|
|
270
270
|
- Before making assumptions, scan ALL issue comments for previously asked questions and their answers.
|
|
271
|
-
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during execution.
|
|
271
|
+
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during autonomous execution.{{/IF ONE_SHOT_MODE}}
|
|
272
272
|
2. Upon completion: Extract issue+comment link (including comment ID) from agent output and provide link to issue comment
|
|
273
273
|
{{#IF INTERACTIVE_MODE}}
|
|
274
274
|
2.5. Extract and validate assumptions (batched validation):
|
|
@@ -317,9 +317,9 @@ If workflow plan determined SKIP_ENHANCEMENT:
|
|
|
317
317
|
**STEP 1.5 - Complexity Evaluation Phase:**
|
|
318
318
|
|
|
319
319
|
Only execute if workflow plan determined NEEDS_COMPLEXITY_EVAL:
|
|
320
|
-
1. Execute: @agent-iloom-issue-complexity-evaluator ISSUE_NUMBER with the following instructions about assumptions:
|
|
320
|
+
1. Execute: @agent-iloom-issue-complexity-evaluator ISSUE_NUMBER {{#IF ONE_SHOT_MODE}}with the following instructions about assumptions:
|
|
321
321
|
- Before making assumptions, scan ALL issue comments for previously asked questions and their answers.
|
|
322
|
-
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during execution.
|
|
322
|
+
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during autonomous execution.{{/IF ONE_SHOT_MODE}}
|
|
323
323
|
2. Upon completion: Extract issue+comment link from agent output and provide link to issue comment (including comment ID)
|
|
324
324
|
{{#IF INTERACTIVE_MODE}}
|
|
325
325
|
2.5. Extract and validate assumptions (batched validation):
|
|
@@ -385,9 +385,9 @@ If workflow plan determined SKIP_COMPLEXITY_EVAL:
|
|
|
385
385
|
**STEP 2 - Analysis Phase (COMPLEX workflow only):**
|
|
386
386
|
|
|
387
387
|
Only execute if workflow plan determined NEEDS_ANALYSIS AND complexity is COMPLEX:
|
|
388
|
-
1. Execute: @agent-iloom-issue-analyzer ISSUE_NUMBER with the following instructions about assumptions:
|
|
388
|
+
1. Execute: @agent-iloom-issue-analyzer ISSUE_NUMBER {{#IF ONE_SHOT_MODE}}with the following instructions about assumptions:
|
|
389
389
|
- Before making assumptions, scan ALL issue comments for previously asked questions and their answers.
|
|
390
|
-
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during execution.
|
|
390
|
+
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during autonomous execution.{{/IF ONE_SHOT_MODE}}
|
|
391
391
|
2. Upon completion: Extract issue+comment link from agent output and provide link to issue comment (including comment ID)
|
|
392
392
|
- Use `recap.add_entry` to log significant technical findings (type: "insight" for dependencies/constraints, type: "risk" for problems identified)
|
|
393
393
|
{{#IF INTERACTIVE_MODE}}
|
|
@@ -464,9 +464,9 @@ After STEP 1.5 completes and complexity is confirmed, determine which workflow p
|
|
|
464
464
|
|
|
465
465
|
Execute combined analyze-and-plan agent:
|
|
466
466
|
1. Display: "Executing combined analyze-and-plan agent for SIMPLE task..."
|
|
467
|
-
2. Execute: @agent-iloom-issue-analyze-and-plan ISSUE_NUMBER with the following instructions about assumptions:
|
|
467
|
+
2. Execute: @agent-iloom-issue-analyze-and-plan ISSUE_NUMBER {{#IF ONE_SHOT_MODE}}with the following instructions about assumptions:
|
|
468
468
|
- Before making assumptions, scan ALL issue comments for previously asked questions and their answers.
|
|
469
|
-
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during execution.
|
|
469
|
+
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during autonomous execution.{{/IF ONE_SHOT_MODE}}
|
|
470
470
|
3. Upon completion: Extract issue+comment link from agent output and provide link to issue comment (including comment ID)
|
|
471
471
|
- Use `recap.add_entry` to log key technical discoveries (type: "insight") and design decisions (type: "decision")
|
|
472
472
|
{{#IF INTERACTIVE_MODE}}
|
|
@@ -505,9 +505,9 @@ Execute combined analyze-and-plan agent:
|
|
|
505
505
|
**IMPORTANT: Only execute this step if COMPLEX workflow is being followed (not SIMPLE)**
|
|
506
506
|
|
|
507
507
|
Only execute if workflow plan determined NEEDS_PLANNING AND complexity is COMPLEX:
|
|
508
|
-
1. Execute: @agent-iloom-issue-planner ISSUE_NUMBER with the following instructions about assumptions:
|
|
508
|
+
1. Execute: @agent-iloom-issue-planner ISSUE_NUMBER {{#IF ONE_SHOT_MODE}}with the following instructions about assumptions:
|
|
509
509
|
- Before making assumptions, scan ALL issue comments for previously asked questions and their answers.
|
|
510
|
-
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during execution.
|
|
510
|
+
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during autonomous execution.{{/IF ONE_SHOT_MODE}}
|
|
511
511
|
2. Upon completion: Extract issue+comment link from agent output and provide link to issue comment (including comment ID)
|
|
512
512
|
- Use `recap.add_entry` to log key architectural decisions (e.g., type: "decision", content: "Chose approach A over B due to X constraint")
|
|
513
513
|
{{#IF INTERACTIVE_MODE}}
|
|
@@ -552,9 +552,9 @@ Only execute if workflow plan determined NEEDS_IMPLEMENTATION:
|
|
|
552
552
|
- Look back at the planning phase output (STEP 3 for COMPLEX or STEP 2-SIMPLE for SIMPLE workflows)
|
|
553
553
|
- Extract the comment ID from the issue comment URL that was provided
|
|
554
554
|
- The comment ID is the numeric value after "#issuecomment-" in the URL (e.g., https://github.com/org/repo/issues/123#issuecomment-456789 has comment ID 456789)
|
|
555
|
-
2. Execute: @agent-iloom-issue-implementer ISSUE_NUMBER with the following instructions about assumptions:
|
|
555
|
+
2. Execute: @agent-iloom-issue-implementer ISSUE_NUMBER {{#IF ONE_SHOT_MODE}}with the following instructions about assumptions:
|
|
556
556
|
- Before making assumptions, scan ALL issue comments for previously asked questions and their answers.
|
|
557
|
-
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during execution.
|
|
557
|
+
- When creating question tables in your issue comments, fill in your own assumed answers to each question. This documents assumptions made during autonomous execution.{{/IF ONE_SHOT_MODE}}
|
|
558
558
|
Additional critical instructions:
|
|
559
559
|
- **CRITICAL**: The implementation plan in the issue comments contains exact file paths and line numbers. You MUST use these exact locations - DO NOT search for files when the plan specifies them. Extract file locations from the plan in Step 1.5 before implementing.
|
|
560
560
|
- The implementation plan is located in comment ID [COMMENT_ID] (if planning phase was executed). Read this comment first in Step 1.5 to extract file specifications.
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
MergeManager
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WIJWIKAN.js";
|
|
5
5
|
import {
|
|
6
6
|
GitWorktreeManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EK3XCAAS.js";
|
|
8
8
|
import {
|
|
9
9
|
getWorktreeRoot,
|
|
10
10
|
isValidGitRepo
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-GEXP5IOF.js";
|
|
12
12
|
import {
|
|
13
13
|
SettingsManager
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-F6WVM437.js";
|
|
15
15
|
import "./chunk-CFUWQHCJ.js";
|
|
16
16
|
import "./chunk-AEIMYF4P.js";
|
|
17
17
|
import "./chunk-6MLEBAYZ.js";
|
|
@@ -94,4 +94,4 @@ export {
|
|
|
94
94
|
RebaseCommand,
|
|
95
95
|
WorktreeValidationError
|
|
96
96
|
};
|
|
97
|
-
//# sourceMappingURL=rebase-
|
|
97
|
+
//# sourceMappingURL=rebase-5EY3Q6XP.js.map
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
} from "./chunk-NXMDEL3F.js";
|
|
5
5
|
import {
|
|
6
6
|
IdentifierParser
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-UQIXZ3BA.js";
|
|
8
8
|
import {
|
|
9
9
|
GitWorktreeManager
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-EK3XCAAS.js";
|
|
11
|
+
import "./chunk-GEXP5IOF.js";
|
|
12
|
+
import "./chunk-F6WVM437.js";
|
|
13
13
|
import "./chunk-CFUWQHCJ.js";
|
|
14
14
|
import "./chunk-6MLEBAYZ.js";
|
|
15
15
|
import "./chunk-VT4PDUYT.js";
|
|
@@ -107,4 +107,4 @@ var RecapCommand = class {
|
|
|
107
107
|
export {
|
|
108
108
|
RecapCommand
|
|
109
109
|
};
|
|
110
|
-
//# sourceMappingURL=recap-
|
|
110
|
+
//# sourceMappingURL=recap-VOOUXOGP.js.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
DevServerManager
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-LVLRMP7V.js";
|
|
4
|
+
} from "./chunk-64O2UIWO.js";
|
|
6
5
|
import {
|
|
7
6
|
calculatePortForBranch
|
|
8
7
|
} from "./chunk-VU3QMIP2.js";
|
|
8
|
+
import "./chunk-AXX3QIKK.js";
|
|
9
9
|
import {
|
|
10
10
|
IdentifierParser
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UQIXZ3BA.js";
|
|
12
12
|
import {
|
|
13
13
|
ProjectCapabilityDetector
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-ZPSTA5PR.js";
|
|
15
|
+
import "./chunk-BXCPJJYM.js";
|
|
16
16
|
import {
|
|
17
17
|
GitWorktreeManager
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-EK3XCAAS.js";
|
|
19
19
|
import {
|
|
20
20
|
openBrowser
|
|
21
21
|
} from "./chunk-YETJNRQM.js";
|
|
@@ -24,10 +24,10 @@ import {
|
|
|
24
24
|
} from "./chunk-GYCR2LOU.js";
|
|
25
25
|
import {
|
|
26
26
|
extractIssueNumber
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-GEXP5IOF.js";
|
|
28
28
|
import {
|
|
29
29
|
SettingsManager
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-F6WVM437.js";
|
|
31
31
|
import "./chunk-CFUWQHCJ.js";
|
|
32
32
|
import "./chunk-6MLEBAYZ.js";
|
|
33
33
|
import {
|
|
@@ -288,4 +288,4 @@ Make sure the project is built (run 'il start' first)`
|
|
|
288
288
|
export {
|
|
289
289
|
RunCommand
|
|
290
290
|
};
|
|
291
|
-
//# sourceMappingURL=run-
|
|
291
|
+
//# sourceMappingURL=run-NCRK5NPR.js.map
|
|
@@ -26,6 +26,14 @@
|
|
|
26
26
|
},
|
|
27
27
|
"description": "List of branches that cannot be deleted (defaults to [mainBranch, \"main\", \"master\", \"develop\"])"
|
|
28
28
|
},
|
|
29
|
+
"copyGitIgnoredPatterns": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"minLength": 1
|
|
34
|
+
},
|
|
35
|
+
"description": "Glob patterns for gitignored files to copy to looms (e.g., [\"*.db\", \"data/*.sqlite\"]). Great for local dbs and large test data files that are too big to commit to git. Note: .env (dotenv-flow) files, iloom's and claude's local settings are automatically copied and do not need to be specified here."
|
|
36
|
+
},
|
|
29
37
|
"workflows": {
|
|
30
38
|
"type": "object",
|
|
31
39
|
"properties": {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
IdentifierParser
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UQIXZ3BA.js";
|
|
5
5
|
import {
|
|
6
6
|
GitWorktreeManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EK3XCAAS.js";
|
|
8
8
|
import {
|
|
9
9
|
extractIssueNumber
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-GEXP5IOF.js";
|
|
11
11
|
import {
|
|
12
12
|
SettingsManager
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-F6WVM437.js";
|
|
14
14
|
import "./chunk-CFUWQHCJ.js";
|
|
15
15
|
import "./chunk-6MLEBAYZ.js";
|
|
16
16
|
import {
|
|
@@ -235,4 +235,4 @@ var ShellCommand = class {
|
|
|
235
235
|
export {
|
|
236
236
|
ShellCommand
|
|
237
237
|
};
|
|
238
|
-
//# sourceMappingURL=shell-
|
|
238
|
+
//# sourceMappingURL=shell-SBLXVOVJ.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
SessionSummaryService
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-K7SEEHKO.js";
|
|
5
5
|
import "./chunk-NXMDEL3F.js";
|
|
6
6
|
import "./chunk-7Q66W4OH.js";
|
|
7
7
|
import {
|
|
8
8
|
GitWorktreeManager
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-EK3XCAAS.js";
|
|
10
10
|
import "./chunk-FXDYIV3K.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-W6WVRHJ6.js";
|
|
12
12
|
import {
|
|
13
13
|
extractIssueNumber
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-GEXP5IOF.js";
|
|
15
|
+
import "./chunk-F6WVM437.js";
|
|
16
16
|
import {
|
|
17
17
|
MetadataManager
|
|
18
18
|
} from "./chunk-CFUWQHCJ.js";
|
|
@@ -248,4 +248,4 @@ Please provide an issue number, PR number, or branch name.`
|
|
|
248
248
|
export {
|
|
249
249
|
SummaryCommand
|
|
250
250
|
};
|
|
251
|
-
//# sourceMappingURL=summary-
|
|
251
|
+
//# sourceMappingURL=summary-CVFAMDOJ.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
ScriptCommandBase
|
|
4
|
+
} from "./chunk-TRQ76ISK.js";
|
|
5
|
+
import "./chunk-AXX3QIKK.js";
|
|
6
|
+
import "./chunk-UQIXZ3BA.js";
|
|
7
|
+
import "./chunk-BXCPJJYM.js";
|
|
8
|
+
import "./chunk-EK3XCAAS.js";
|
|
9
|
+
import "./chunk-GEXP5IOF.js";
|
|
10
|
+
import "./chunk-F6WVM437.js";
|
|
11
|
+
import "./chunk-CFUWQHCJ.js";
|
|
12
|
+
import "./chunk-6MLEBAYZ.js";
|
|
13
|
+
import "./chunk-VT4PDUYT.js";
|
|
14
|
+
|
|
15
|
+
// src/commands/test.ts
|
|
16
|
+
var TestCommand = class extends ScriptCommandBase {
|
|
17
|
+
getScriptName() {
|
|
18
|
+
return "test";
|
|
19
|
+
}
|
|
20
|
+
getScriptDisplayName() {
|
|
21
|
+
return "Test";
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export {
|
|
25
|
+
TestCommand
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=test-3KIVXI6J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/test.ts"],"sourcesContent":["import { ScriptCommandBase, ScriptCommandInput } from './script-command-base.js'\n\nexport type { ScriptCommandInput as TestCommandInput }\n\n/**\n * TestCommand - Run the test script for a workspace\n * Uses package.iloom.json if available, otherwise falls back to package.json\n */\nexport class TestCommand extends ScriptCommandBase {\n\tgetScriptName(): string {\n\t\treturn 'test'\n\t}\n\n\tgetScriptDisplayName(): string {\n\t\treturn 'Test'\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAQO,IAAM,cAAN,cAA0B,kBAAkB;AAAA,EAClD,gBAAwB;AACvB,WAAO;AAAA,EACR;AAAA,EAEA,uBAA+B;AAC9B,WAAO;AAAA,EACR;AACD;","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
findMainWorktreePath
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GEXP5IOF.js";
|
|
5
5
|
import {
|
|
6
6
|
SettingsManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-F6WVM437.js";
|
|
8
8
|
import "./chunk-CFUWQHCJ.js";
|
|
9
9
|
import "./chunk-6MLEBAYZ.js";
|
|
10
10
|
import {
|
|
@@ -51,4 +51,4 @@ var TestGitCommand = class {
|
|
|
51
51
|
export {
|
|
52
52
|
TestGitCommand
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=test-git-
|
|
54
|
+
//# sourceMappingURL=test-git-ZB6AGGRW.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
generateWorktreePath
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GEXP5IOF.js";
|
|
5
5
|
import {
|
|
6
6
|
SettingsManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-F6WVM437.js";
|
|
8
8
|
import "./chunk-CFUWQHCJ.js";
|
|
9
9
|
import "./chunk-6MLEBAYZ.js";
|
|
10
10
|
import {
|
|
@@ -67,4 +67,4 @@ var TestPrefixCommand = class {
|
|
|
67
67
|
export {
|
|
68
68
|
TestPrefixCommand
|
|
69
69
|
};
|
|
70
|
-
//# sourceMappingURL=test-prefix-
|
|
70
|
+
//# sourceMappingURL=test-prefix-FBGXKMPA.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iloom/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Control plane for maintaining alignment between you and Claude Code as you work across multiple issues using isolated environments, visible context, and multi-agent workflows to scale understanding, not just output",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -73,6 +73,7 @@
|
|
|
73
73
|
"deepmerge": "^4.3.1",
|
|
74
74
|
"dotenv-flow": "^4.1.0",
|
|
75
75
|
"execa": "^8.0.1",
|
|
76
|
+
"fast-glob": "^3.3.3",
|
|
76
77
|
"fs-extra": "^11.1.1",
|
|
77
78
|
"inquirer": "^9.2.12",
|
|
78
79
|
"jsonc-parser": "^3.3.1",
|
package/dist/chunk-2ZPFJQ3B.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
// src/utils/package-json.ts
|
|
4
|
-
import fs from "fs-extra";
|
|
5
|
-
import path from "path";
|
|
6
|
-
async function readPackageJson(dir) {
|
|
7
|
-
const pkgPath = path.join(dir, "package.json");
|
|
8
|
-
try {
|
|
9
|
-
const pkgJson = await fs.readJson(pkgPath);
|
|
10
|
-
return pkgJson;
|
|
11
|
-
} catch (error) {
|
|
12
|
-
if (error.code === "ENOENT") {
|
|
13
|
-
throw new Error(`package.json not found in ${dir}`);
|
|
14
|
-
}
|
|
15
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
16
|
-
throw new Error(`Invalid package.json in ${dir}: ${message}`);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function parseBinField(bin, packageName) {
|
|
20
|
-
if (!bin) {
|
|
21
|
-
return {};
|
|
22
|
-
}
|
|
23
|
-
if (typeof bin === "string") {
|
|
24
|
-
return { [packageName]: bin };
|
|
25
|
-
}
|
|
26
|
-
return bin;
|
|
27
|
-
}
|
|
28
|
-
function hasWebDependencies(pkgJson) {
|
|
29
|
-
const webIndicators = [
|
|
30
|
-
"next",
|
|
31
|
-
"vite",
|
|
32
|
-
"express",
|
|
33
|
-
"react-scripts",
|
|
34
|
-
"nuxt",
|
|
35
|
-
"svelte-kit",
|
|
36
|
-
"astro",
|
|
37
|
-
"remix",
|
|
38
|
-
"fastify",
|
|
39
|
-
"koa",
|
|
40
|
-
"hapi",
|
|
41
|
-
"@angular/core",
|
|
42
|
-
"gatsby",
|
|
43
|
-
"@11ty/eleventy",
|
|
44
|
-
"ember-cli"
|
|
45
|
-
];
|
|
46
|
-
const allDeps = {
|
|
47
|
-
...pkgJson.dependencies,
|
|
48
|
-
...pkgJson.devDependencies
|
|
49
|
-
};
|
|
50
|
-
return webIndicators.some((indicator) => indicator in allDeps);
|
|
51
|
-
}
|
|
52
|
-
function hasScript(pkgJson, scriptName) {
|
|
53
|
-
var _a;
|
|
54
|
-
return !!((_a = pkgJson.scripts) == null ? void 0 : _a[scriptName]);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export {
|
|
58
|
-
readPackageJson,
|
|
59
|
-
parseBinField,
|
|
60
|
-
hasWebDependencies,
|
|
61
|
-
hasScript
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=chunk-2ZPFJQ3B.js.map
|