swipium 1.5.0 → 2.0.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/CHANGELOG.md +171 -0
- package/README.md +173 -280
- package/THREAT_MODEL.md +223 -47
- package/dist/appMap/automationLink.js +30 -27
- package/dist/appMap/automationLink.js.map +1 -1
- package/dist/appMap/build.js +47 -21
- package/dist/appMap/build.js.map +1 -1
- package/dist/appMap/codeIndex.js +2 -2
- package/dist/appMap/codeIndex.js.map +1 -1
- package/dist/appMap/featureIndex.js +3 -3
- package/dist/appMap/featureIndex.js.map +1 -1
- package/dist/appMap/featureModel.js +2 -2
- package/dist/appMap/featureModel.js.map +1 -1
- package/dist/appMap/firstRunApply.js +2 -2
- package/dist/appMap/firstRunApply.js.map +1 -1
- package/dist/appMap/issues.js +10 -10
- package/dist/appMap/issues.js.map +1 -1
- package/dist/appMap/migrations.js +5 -5
- package/dist/appMap/migrations.js.map +1 -1
- package/dist/appMap/prelaunch.js +2 -2
- package/dist/appMap/prelaunch.js.map +1 -1
- package/dist/appMap/projectRegistry.js +77 -11
- package/dist/appMap/projectRegistry.js.map +1 -1
- package/dist/appMap/provenance.js +2 -2
- package/dist/appMap/provenance.js.map +1 -1
- package/dist/appMap/query.js +2 -2
- package/dist/appMap/query.js.map +1 -1
- package/dist/appMap/runtimeMerge.js +3 -3
- package/dist/appMap/runtimeMerge.js.map +1 -1
- package/dist/appMap/schema.js +1 -1
- package/dist/appMap/schema.js.map +1 -1
- package/dist/appMap/screenMatch.js +1 -1
- package/dist/appMap/screenMatch.js.map +1 -1
- package/dist/appMap/staticScan.js +17 -17
- package/dist/appMap/staticScan.js.map +1 -1
- package/dist/appMap/store.js +55 -7
- package/dist/appMap/store.js.map +1 -1
- package/dist/appMap/tsAstScan.js +3 -3
- package/dist/appMap/tsAstScan.js.map +1 -1
- package/dist/artifacts/bundletool.js +5 -5
- package/dist/artifacts/bundletool.js.map +1 -1
- package/dist/artifacts/resolve.js +10 -10
- package/dist/artifacts/resolve.js.map +1 -1
- package/dist/automation/capabilities.js +3 -3
- package/dist/automation/capabilities.js.map +1 -1
- package/dist/automation/gestures.js +1 -1
- package/dist/automation/gestures.js.map +1 -1
- package/dist/automation/plan.js +7 -7
- package/dist/automation/plan.js.map +1 -1
- package/dist/automation/report.js +3 -3
- package/dist/automation/report.js.map +1 -1
- package/dist/automation/selectors.js +14 -25
- package/dist/automation/selectors.js.map +1 -1
- package/dist/automation/types.js +1 -1
- package/dist/automation/types.js.map +1 -1
- package/dist/automation/waits.js +5 -5
- package/dist/automation/waits.js.map +1 -1
- package/dist/automation/webview.js +2 -2
- package/dist/automation/webview.js.map +1 -1
- package/dist/automationGen/appiumModel.js +13 -7
- package/dist/automationGen/appiumModel.js.map +1 -1
- package/dist/automationGen/ciEmitter.js +5 -5
- package/dist/automationGen/ciEmitter.js.map +1 -1
- package/dist/automationGen/identifiers.js +224 -0
- package/dist/automationGen/identifiers.js.map +1 -0
- package/dist/automationGen/jsEmitter.js +265 -106
- package/dist/automationGen/jsEmitter.js.map +1 -1
- package/dist/automationGen/packagePatch.js +2 -2
- package/dist/automationGen/packagePatch.js.map +1 -1
- package/dist/automationGen/platformResolve.js +36 -0
- package/dist/automationGen/platformResolve.js.map +1 -0
- package/dist/automationGen/projectProfile.js +71 -26
- package/dist/automationGen/projectProfile.js.map +1 -1
- package/dist/automationGen/pythonEmitter.js +276 -105
- package/dist/automationGen/pythonEmitter.js.map +1 -1
- package/dist/automationGen/readmeEmitter.js +7 -6
- package/dist/automationGen/readmeEmitter.js.map +1 -1
- package/dist/{tools/automationGenerate.js → automationGen/run.js} +72 -113
- package/dist/automationGen/run.js.map +1 -0
- package/dist/automationGen/suitePlan.js +6 -4
- package/dist/automationGen/suitePlan.js.map +1 -1
- package/dist/automationGen/validation.js +20 -8
- package/dist/automationGen/validation.js.map +1 -1
- package/dist/build/parseBuildLog.js +2 -2
- package/dist/build/parseBuildLog.js.map +1 -1
- package/dist/build/plan.js +7 -7
- package/dist/build/plan.js.map +1 -1
- package/dist/ci/preflight.js +13 -4
- package/dist/ci/preflight.js.map +1 -1
- package/dist/cli/gc.js +74 -0
- package/dist/cli/gc.js.map +1 -0
- package/dist/cli/init.js +217 -26
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.js +50 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/report.js +218 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/scan.js +35 -14
- package/dist/cli/scan.js.map +1 -1
- package/dist/cli/suite.js +6 -6
- package/dist/cli/suite.js.map +1 -1
- package/dist/cli/verify.js +7 -7
- package/dist/cli/verify.js.map +1 -1
- package/dist/consent/consent.js +162 -5
- package/dist/consent/consent.js.map +1 -1
- package/dist/context/detect.js +45 -14
- package/dist/context/detect.js.map +1 -1
- package/dist/context/findApps.js +6 -6
- package/dist/context/findApps.js.map +1 -1
- package/dist/context/projectRoot.js +174 -19
- package/dist/context/projectRoot.js.map +1 -1
- package/dist/context/scan.js +1 -1
- package/dist/context/scan.js.map +1 -1
- package/dist/core/capabilityGroups.js +90 -0
- package/dist/core/capabilityGroups.js.map +1 -0
- package/dist/core/target.js +3 -3
- package/dist/core/target.js.map +1 -1
- package/dist/core/targetPlan.js +65 -62
- package/dist/core/targetPlan.js.map +1 -1
- package/dist/drivers/DirectDriver.js +300 -36
- package/dist/drivers/DirectDriver.js.map +1 -1
- package/dist/drivers/SimctlDriver.js +120 -7
- package/dist/drivers/SimctlDriver.js.map +1 -1
- package/dist/drivers/WdaDriver.js +350 -50
- package/dist/drivers/WdaDriver.js.map +1 -1
- package/dist/explore/candidates.js +2 -2
- package/dist/explore/candidates.js.map +1 -1
- package/dist/explore/graph.js +5 -5
- package/dist/explore/graph.js.map +1 -1
- package/dist/explore/policy.js +5 -5
- package/dist/explore/policy.js.map +1 -1
- package/dist/explore/runner.js +301 -284
- package/dist/explore/runner.js.map +1 -1
- package/dist/explore/signatures.js +1 -1
- package/dist/featureTesting/executionBootstrap.js +29 -30
- package/dist/featureTesting/executionBootstrap.js.map +1 -1
- package/dist/featureTesting/featureMap.js +2 -2
- package/dist/featureTesting/featureMap.js.map +1 -1
- package/dist/featureTesting/featureScope.js +12 -12
- package/dist/featureTesting/featureScope.js.map +1 -1
- package/dist/featureTesting/mapFeatureScope.js +7 -7
- package/dist/featureTesting/mapFeatureScope.js.map +1 -1
- package/dist/featureTesting/objectiveModel.js +10 -10
- package/dist/featureTesting/objectiveModel.js.map +1 -1
- package/dist/featureTesting/resultMerge.js +6 -6
- package/dist/featureTesting/resultMerge.js.map +1 -1
- package/dist/featureTesting/sources.js +4 -4
- package/dist/featureTesting/sources.js.map +1 -1
- package/dist/featureTesting/suiteBridge.js +1 -1
- package/dist/featureTesting/suiteBridge.js.map +1 -1
- package/dist/featureTesting/synonyms.js +1 -1
- package/dist/featureTesting/synonyms.js.map +1 -1
- package/dist/featureTesting/testCaseFactory.js +11 -11
- package/dist/featureTesting/testCaseFactory.js.map +1 -1
- package/dist/featureTesting/testPlan.js +3 -3
- package/dist/featureTesting/testPlan.js.map +1 -1
- package/dist/firstRun/authStateMachine.js +1 -1
- package/dist/firstRun/authStateMachine.js.map +1 -1
- package/dist/firstRun/classifyScreen.js +5 -5
- package/dist/firstRun/classifyScreen.js.map +1 -1
- package/dist/firstRun/firstRunPlanner.js +11 -11
- package/dist/firstRun/firstRunPlanner.js.map +1 -1
- package/dist/firstRun/firstRunRunner.js +8 -8
- package/dist/firstRun/firstRunRunner.js.map +1 -1
- package/dist/firstRun/generatedDataPolicy.js +9 -9
- package/dist/firstRun/generatedDataPolicy.js.map +1 -1
- package/dist/firstRun/inputPlanner.js +5 -5
- package/dist/firstRun/inputPlanner.js.map +1 -1
- package/dist/firstRun/onboardingStateMachine.js +1 -1
- package/dist/firstRun/onboardingStateMachine.js.map +1 -1
- package/dist/firstRun/paywallPolicy.js +3 -3
- package/dist/firstRun/paywallPolicy.js.map +1 -1
- package/dist/firstRun/types.js +1 -1
- package/dist/firstRun/types.js.map +1 -1
- package/dist/fixtures/catalog.js +33 -3
- package/dist/fixtures/catalog.js.map +1 -1
- package/dist/fixtures/load.js +50 -0
- package/dist/fixtures/load.js.map +1 -0
- package/dist/flows/discover.js +2 -2
- package/dist/flows/discover.js.map +1 -1
- package/dist/flows/generate.js +20 -10
- package/dist/flows/generate.js.map +1 -1
- package/dist/flows/pack.js +3 -3
- package/dist/flows/pack.js.map +1 -1
- package/dist/flows/paths.js +57 -0
- package/dist/flows/paths.js.map +1 -0
- package/dist/flows/repair.js +111 -23
- package/dist/flows/repair.js.map +1 -1
- package/dist/flows/run.js +153 -57
- package/dist/flows/run.js.map +1 -1
- package/dist/flows/schema.js +50 -5
- package/dist/flows/schema.js.map +1 -1
- package/dist/flows/seedExec.js +4 -4
- package/dist/flows/seedExec.js.map +1 -1
- package/dist/flows/templates.js +5 -5
- package/dist/index.js +50 -8
- package/dist/index.js.map +1 -1
- package/dist/issues/classify.js +16 -16
- package/dist/issues/classify.js.map +1 -1
- package/dist/issues/fingerprint.js +24 -4
- package/dist/issues/fingerprint.js.map +1 -1
- package/dist/issues/index.js +94 -31
- package/dist/issues/index.js.map +1 -1
- package/dist/issues/metrics.js +4 -4
- package/dist/issues/metrics.js.map +1 -1
- package/dist/issues/recurrence.js +35 -8
- package/dist/issues/recurrence.js.map +1 -1
- package/dist/issues/report.js +4 -4
- package/dist/issues/report.js.map +1 -1
- package/dist/issues/reportBridge.js +4 -4
- package/dist/issues/reportBridge.js.map +1 -1
- package/dist/issues/schema.js +2 -2
- package/dist/issues/schema.js.map +1 -1
- package/dist/issues/sourceRevision.js +2 -2
- package/dist/issues/sourceRevision.js.map +1 -1
- package/dist/issues/store.js +110 -32
- package/dist/issues/store.js.map +1 -1
- package/dist/lib/abortScope.js +48 -0
- package/dist/lib/abortScope.js.map +1 -0
- package/dist/lib/android.js +75 -7
- package/dist/lib/android.js.map +1 -1
- package/dist/lib/coordSpace.js +1 -1
- package/dist/lib/coordSpace.js.map +1 -1
- package/dist/lib/device.js +32 -7
- package/dist/lib/device.js.map +1 -1
- package/dist/lib/gestures.js +141 -0
- package/dist/lib/gestures.js.map +1 -0
- package/dist/lib/gitignore.js +4 -3
- package/dist/lib/gitignore.js.map +1 -1
- package/dist/lib/image.js +1 -1
- package/dist/lib/image.js.map +1 -1
- package/dist/lib/lockfile.js +370 -31
- package/dist/lib/lockfile.js.map +1 -1
- package/dist/lib/needsInput.js +3 -3
- package/dist/lib/needsInput.js.map +1 -1
- package/dist/lib/png.js +2 -2
- package/dist/lib/png.js.map +1 -1
- package/dist/lib/redact.js +170 -9
- package/dist/lib/redact.js.map +1 -1
- package/dist/lib/result.js +79 -10
- package/dist/lib/result.js.map +1 -1
- package/dist/lib/schemaHash.js +3 -3
- package/dist/lib/schemaHash.js.map +1 -1
- package/dist/lib/sensitive.js +3 -2
- package/dist/lib/sensitive.js.map +1 -1
- package/dist/lib/simctl.js +3 -3
- package/dist/lib/simctl.js.map +1 -1
- package/dist/lib/spawn.js +52 -10
- package/dist/lib/spawn.js.map +1 -1
- package/dist/lib/toolAnnotations.js +114 -0
- package/dist/lib/toolAnnotations.js.map +1 -0
- package/dist/lib/wda.js +294 -15
- package/dist/lib/wda.js.map +1 -1
- package/dist/mobileAudit/checks.js +12 -12
- package/dist/mobileAudit/checks.js.map +1 -1
- package/dist/mobileAudit/evidence.js +4 -4
- package/dist/mobileAudit/evidence.js.map +1 -1
- package/dist/mobileAudit/profiles.js +1 -1
- package/dist/mobileAudit/profiles.js.map +1 -1
- package/dist/mobileAudit/results.js +3 -3
- package/dist/mobileAudit/results.js.map +1 -1
- package/dist/mobileAudit/runner.js +72 -18
- package/dist/mobileAudit/runner.js.map +1 -1
- package/dist/oracle/auth.js +1 -1
- package/dist/oracle/auth.js.map +1 -1
- package/dist/oracle/failures.js +219 -36
- package/dist/oracle/failures.js.map +1 -1
- package/dist/oracle/health.js +63 -17
- package/dist/oracle/health.js.map +1 -1
- package/dist/oracle/locator.js +13 -13
- package/dist/oracle/locator.js.map +1 -1
- package/dist/oracle/record.js +3 -3
- package/dist/oracle/record.js.map +1 -1
- package/dist/orchestration/envelope.js +2 -2
- package/dist/orchestration/envelope.js.map +1 -1
- package/dist/orchestration/goal.js +4 -4
- package/dist/orchestration/goal.js.map +1 -1
- package/dist/orchestration/testThis/execute.js +62 -21
- package/dist/orchestration/testThis/execute.js.map +1 -1
- package/dist/orchestration/testThis/pipeline.js +119 -30
- package/dist/orchestration/testThis/pipeline.js.map +1 -1
- package/dist/orchestration/testThis/plan.js +162 -73
- package/dist/orchestration/testThis/plan.js.map +1 -1
- package/dist/orchestration/testThis/sessionIntent.js +72 -0
- package/dist/orchestration/testThis/sessionIntent.js.map +1 -0
- package/dist/orchestration/testThis/terminal.js +34 -16
- package/dist/orchestration/testThis/terminal.js.map +1 -1
- package/dist/orchestration/testThis/types.js +1 -1
- package/dist/orchestration/testThis/types.js.map +1 -1
- package/dist/plan/plan.js +9 -9
- package/dist/plan/plan.js.map +1 -1
- package/dist/prompts/index.js +22 -22
- package/dist/prompts/index.js.map +1 -1
- package/dist/report/export.js +392 -37
- package/dist/report/export.js.map +1 -1
- package/dist/report/findingsDedupe.js +41 -0
- package/dist/report/findingsDedupe.js.map +1 -0
- package/dist/report/policy.js +7 -4
- package/dist/report/policy.js.map +1 -1
- package/dist/report/qaLevel.js +8 -8
- package/dist/report/qaLevel.js.map +1 -1
- package/dist/report/sarifSources.js +160 -0
- package/dist/report/sarifSources.js.map +1 -0
- package/dist/report/summary.js +2 -2
- package/dist/report/summary.js.map +1 -1
- package/dist/report/testCatalog.js +4 -4
- package/dist/report/testCatalog.js.map +1 -1
- package/dist/report/toolHealth.js +124 -0
- package/dist/report/toolHealth.js.map +1 -0
- package/dist/server.js +472 -45
- package/dist/server.js.map +1 -1
- package/dist/services/automationGenerate.js +8 -2
- package/dist/services/automationGenerate.js.map +1 -1
- package/dist/services/build.js +2 -2
- package/dist/services/build.js.map +1 -1
- package/dist/{tools → services}/flowGenerate.js +29 -13
- package/dist/services/flowGenerate.js.map +1 -0
- package/dist/services/preflight.js +4 -4
- package/dist/services/preflight.js.map +1 -1
- package/dist/services/prepareAndroid.js +46 -8
- package/dist/services/prepareAndroid.js.map +1 -1
- package/dist/services/prepareIos.js +24 -9
- package/dist/services/prepareIos.js.map +1 -1
- package/dist/services/report.js +100 -45
- package/dist/services/report.js.map +1 -1
- package/dist/services/smoke.js +32 -16
- package/dist/services/smoke.js.map +1 -1
- package/dist/services/suiteGenerate.js +28 -3
- package/dist/services/suiteGenerate.js.map +1 -1
- package/dist/services/testSuiteKnowledge.js +40 -27
- package/dist/services/testSuiteKnowledge.js.map +1 -1
- package/dist/session/attach.js +270 -6
- package/dist/session/attach.js.map +1 -1
- package/dist/session/processRegistry.js +317 -48
- package/dist/session/processRegistry.js.map +1 -1
- package/dist/session/progress.js +1 -1
- package/dist/session/retention.js +201 -0
- package/dist/session/retention.js.map +1 -0
- package/dist/session/store.js +275 -48
- package/dist/session/store.js.map +1 -1
- package/dist/snapshot/overlays.js +53 -8
- package/dist/snapshot/overlays.js.map +1 -1
- package/dist/snapshot/parse.js +28 -4
- package/dist/snapshot/parse.js.map +1 -1
- package/dist/snapshot/present.js +11 -5
- package/dist/snapshot/present.js.map +1 -1
- package/dist/snapshot/settle.js +39 -9
- package/dist/snapshot/settle.js.map +1 -1
- package/dist/state/consent.js +99 -0
- package/dist/state/consent.js.map +1 -0
- package/dist/state/profile.js +46 -2
- package/dist/state/profile.js.map +1 -1
- package/dist/suite/compile.js +9 -5
- package/dist/suite/compile.js.map +1 -1
- package/dist/suite/lint.js +4 -4
- package/dist/suite/lint.js.map +1 -1
- package/dist/suite/pom.js +50 -41
- package/dist/suite/pom.js.map +1 -1
- package/dist/suite/secretGuard.js +266 -0
- package/dist/suite/secretGuard.js.map +1 -0
- package/dist/suite/testcase.js +9 -7
- package/dist/suite/testcase.js.map +1 -1
- package/dist/testSuite/exporter.js +4 -4
- package/dist/testSuite/exporter.js.map +1 -1
- package/dist/testSuite/generator.js +13 -9
- package/dist/testSuite/generator.js.map +1 -1
- package/dist/testSuite/history.js +1 -1
- package/dist/testSuite/history.js.map +1 -1
- package/dist/testSuite/issueLinks.js +3 -3
- package/dist/testSuite/issueLinks.js.map +1 -1
- package/dist/testSuite/lint.js +4 -4
- package/dist/testSuite/lint.js.map +1 -1
- package/dist/testSuite/merge.js +5 -5
- package/dist/testSuite/merge.js.map +1 -1
- package/dist/testSuite/schema.js +5 -5
- package/dist/testSuite/schema.js.map +1 -1
- package/dist/testSuite/store.js +3 -3
- package/dist/testSuite/store.js.map +1 -1
- package/dist/testSuite/traceability.js +2 -2
- package/dist/testSuite/traceability.js.map +1 -1
- package/dist/tools/act.js +794 -164
- package/dist/tools/act.js.map +1 -1
- package/dist/tools/agent.js +451 -128
- package/dist/tools/agent.js.map +1 -1
- package/dist/tools/appControl.js +69 -19
- package/dist/tools/appControl.js.map +1 -1
- package/dist/tools/appMap.js +188 -130
- package/dist/tools/appMap.js.map +1 -1
- package/dist/tools/build.js +32 -42
- package/dist/tools/build.js.map +1 -1
- package/dist/tools/bundletool.js +21 -31
- package/dist/tools/bundletool.js.map +1 -1
- package/dist/tools/clearOverlay.js +55 -12
- package/dist/tools/clearOverlay.js.map +1 -1
- package/dist/tools/device.js +76 -24
- package/dist/tools/device.js.map +1 -1
- package/dist/tools/doctor.js +68 -28
- package/dist/tools/doctor.js.map +1 -1
- package/dist/tools/explore.js +41 -47
- package/dist/tools/explore.js.map +1 -1
- package/dist/tools/featureTesting.js +31 -48
- package/dist/tools/featureTesting.js.map +1 -1
- package/dist/tools/firstRun.js +34 -41
- package/dist/tools/firstRun.js.map +1 -1
- package/dist/tools/flow.js +183 -103
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/flowRepair.js +25 -13
- package/dist/tools/flowRepair.js.map +1 -1
- package/dist/tools/generate.js +52 -89
- package/dist/tools/generate.js.map +1 -1
- package/dist/tools/getArtifact.js +16 -5
- package/dist/tools/getArtifact.js.map +1 -1
- package/dist/tools/health.js +15 -12
- package/dist/tools/health.js.map +1 -1
- package/dist/tools/ios.js +45 -223
- package/dist/tools/ios.js.map +1 -1
- package/dist/tools/issues.js +251 -35
- package/dist/tools/issues.js.map +1 -1
- package/dist/tools/jobs.js +41 -16
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/metro.js +36 -35
- package/dist/tools/metro.js.map +1 -1
- package/dist/tools/mobileAudit.js +50 -45
- package/dist/tools/mobileAudit.js.map +1 -1
- package/dist/tools/network.js +31 -14
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/note.js +26 -26
- package/dist/tools/note.js.map +1 -1
- package/dist/tools/prepareIosTarget.js +10 -16
- package/dist/tools/prepareIosTarget.js.map +1 -1
- package/dist/tools/prepareTarget.js +117 -50
- package/dist/tools/prepareTarget.js.map +1 -1
- package/dist/tools/report.js +11 -22
- package/dist/tools/report.js.map +1 -1
- package/dist/tools/resolveArtifact.js +11 -15
- package/dist/tools/resolveArtifact.js.map +1 -1
- package/dist/tools/resolveTarget.js +78 -24
- package/dist/tools/resolveTarget.js.map +1 -1
- package/dist/tools/screenRecord.js +23 -21
- package/dist/tools/screenRecord.js.map +1 -1
- package/dist/tools/screenshot.js +23 -16
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/smoke.js +20 -16
- package/dist/tools/smoke.js.map +1 -1
- package/dist/tools/snapshot.js +155 -118
- package/dist/tools/snapshot.js.map +1 -1
- package/dist/tools/startSession.js +104 -116
- package/dist/tools/startSession.js.map +1 -1
- package/dist/tools/suite.js +72 -43
- package/dist/tools/suite.js.map +1 -1
- package/dist/tools/testSuite.js +30 -20
- package/dist/tools/testSuite.js.map +1 -1
- package/dist/tools/testThis.js +24 -28
- package/dist/tools/testThis.js.map +1 -1
- package/dist/tools/visual.js +686 -210
- package/dist/tools/visual.js.map +1 -1
- package/dist/tools/wait.js +9 -38
- package/dist/tools/wait.js.map +1 -1
- package/dist/tools/wda.js +187 -57
- package/dist/tools/wda.js.map +1 -1
- package/dist/version.js +31 -22
- package/dist/version.js.map +1 -1
- package/dist/visual/ocr.js +53 -6
- package/dist/visual/ocr.js.map +1 -1
- package/dist/visual/provider.js +80 -12
- package/dist/visual/provider.js.map +1 -1
- package/docs/README.md +24 -10
- package/docs/ci-reports.md +328 -0
- package/docs/concepts.md +227 -0
- package/docs/flows.md +153 -0
- package/docs/mcp-server.md +194 -128
- package/docs/physical-devices.md +84 -0
- package/docs/tools.md +812 -152
- package/package.json +3 -2
- package/dist/tools/assertVisual.js +0 -84
- package/dist/tools/assertVisual.js.map +0 -1
- package/dist/tools/automationGenerate.js.map +0 -1
- package/dist/tools/capabilities.js +0 -179
- package/dist/tools/capabilities.js.map +0 -1
- package/dist/tools/detectContext.js +0 -41
- package/dist/tools/detectContext.js.map +0 -1
- package/dist/tools/flowGenerate.js.map +0 -1
- package/dist/tools/history.js +0 -86
- package/dist/tools/history.js.map +0 -1
- package/dist/tools/locator.js +0 -85
- package/dist/tools/locator.js.map +0 -1
- package/dist/tools/permissions.js +0 -174
- package/dist/tools/permissions.js.map +0 -1
- package/dist/tools/plan.js +0 -52
- package/dist/tools/plan.js.map +0 -1
- package/dist/tools/screenInfo.js +0 -76
- package/dist/tools/screenInfo.js.map +0 -1
- package/dist/tools/seed.js +0 -133
- package/dist/tools/seed.js.map +0 -1
- package/dist/tools/state.js +0 -217
- package/dist/tools/state.js.map +0 -1
- package/dist/tools/visualText.js +0 -106
- package/dist/tools/visualText.js.map +0 -1
package/dist/build/plan.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Build-from-source planner
|
|
1
|
+
// Build-from-source planner: propose the EXACT commands that turn a source
|
|
2
2
|
// project into an installable artifact, per framework + platform, with prerequisites
|
|
3
3
|
// (dependency install, Expo prebuild, CocoaPods) and the artifact globs the build will produce.
|
|
4
4
|
//
|
|
@@ -47,14 +47,14 @@ function xcodebuildStep(root, variant) {
|
|
|
47
47
|
const { workspace, project, scheme, dir } = iosWorkspace(root);
|
|
48
48
|
const notes = [];
|
|
49
49
|
if (!scheme)
|
|
50
|
-
return { step: null, notes: ['Could not find an .xcworkspace/.xcodeproj
|
|
50
|
+
return { step: null, notes: ['Could not find an .xcworkspace/.xcodeproj. Pass the scheme/workspace explicitly.'] };
|
|
51
51
|
const config = variant === 'release' ? 'Release' : 'Debug';
|
|
52
52
|
const argv = ['xcodebuild', '-scheme', scheme, '-sdk', 'iphonesimulator', '-configuration', config, '-derivedDataPath', 'build', 'build'];
|
|
53
53
|
if (workspace)
|
|
54
54
|
argv.splice(1, 0, '-workspace', basename(workspace));
|
|
55
55
|
else if (project)
|
|
56
56
|
argv.splice(1, 0, '-project', basename(project));
|
|
57
|
-
notes.push(`Using scheme "${scheme}" (best-effort)
|
|
57
|
+
notes.push(`Using scheme "${scheme}" (best-effort). Override if your scheme differs.`);
|
|
58
58
|
return { step: { label: 'build iOS simulator app', command: argv.join(' '), argv, cwd: dir }, notes };
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
@@ -92,9 +92,9 @@ export async function buildPlan(opts) {
|
|
|
92
92
|
const gradleArg = variant === 'release' ? 'assembleRelease' : 'assembleDebug';
|
|
93
93
|
switch (framework) {
|
|
94
94
|
case 'expo': {
|
|
95
|
-
// No native android dir
|
|
95
|
+
// No native android dir: expo run:android prebuilds; otherwise it reuses it.
|
|
96
96
|
if (!hasFile(root, 'android'))
|
|
97
|
-
notes.push('No android/ directory
|
|
97
|
+
notes.push('No android/ directory, so expo run:android will prebuild it (EXPO_PREBUILD).');
|
|
98
98
|
notes.push('Expo Android local run compiles native code, installs the app, and starts Metro. First run can take several minutes; later JS/TS-only work should usually reuse the installed development build with Metro.');
|
|
99
99
|
const argv = ['npx', 'expo', 'run:android', '--variant', variant];
|
|
100
100
|
return base({
|
|
@@ -107,7 +107,7 @@ export async function buildPlan(opts) {
|
|
|
107
107
|
if (!hasFile(root, 'android/gradlew', 'gradlew')) {
|
|
108
108
|
return base({
|
|
109
109
|
failureCode: 'BUILD_COMMAND_UNAVAILABLE',
|
|
110
|
-
notes: ['No gradlew found
|
|
110
|
+
notes: ['No gradlew found. Run from the Android project or add the Gradle wrapper.'],
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
113
|
const cwd = existsSync(join(root, 'android')) ? join(root, 'android') : root;
|
|
@@ -136,7 +136,7 @@ export async function buildPlan(opts) {
|
|
|
136
136
|
switch (framework) {
|
|
137
137
|
case 'expo': {
|
|
138
138
|
if (!hasFile(root, 'ios'))
|
|
139
|
-
notes.push('No ios/ directory
|
|
139
|
+
notes.push('No ios/ directory, so expo run:ios will prebuild it (EXPO_PREBUILD).');
|
|
140
140
|
const argv = ['npx', 'expo', 'run:ios', '--no-bundler'];
|
|
141
141
|
return base({
|
|
142
142
|
build: { label: 'build + run iOS simulator (Expo)', command: argv.join(' '), argv, cwd: root },
|
package/dist/build/plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/build/plan.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/build/plan.ts"],"names":[],"mappings":"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"}
|
package/dist/ci/preflight.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ciMutationAllowed } from '../report/policy.js';
|
|
2
|
-
|
|
2
|
+
import { flowEnvAllowed, isMutatingFlowStep } from '../flows/schema.js';
|
|
3
3
|
const VAR_REF = /\$\{([^}]+)\}/g;
|
|
4
4
|
function variableBearingValues(step) {
|
|
5
5
|
switch (step.kind) {
|
|
@@ -28,13 +28,16 @@ export function ciMutatingSteps(flow) {
|
|
|
28
28
|
const all = [...flow.setup, ...flow.steps, ...flow.teardown];
|
|
29
29
|
const out = [];
|
|
30
30
|
all.forEach((step, i) => {
|
|
31
|
-
|
|
31
|
+
// Same rule as qa_flow_run consent / qa_smoke: includes an openUrl that interpolates ${VAR}.
|
|
32
|
+
if (!isMutatingFlowStep(step))
|
|
32
33
|
return;
|
|
33
34
|
out.push({
|
|
34
35
|
flow: flow.name,
|
|
35
36
|
step: i + 1,
|
|
36
37
|
kind: step.kind,
|
|
37
|
-
reason:
|
|
38
|
+
reason: step.kind === 'openUrl'
|
|
39
|
+
? 'openUrl interpolates a ${VAR} into a URL that leaves the device and requires .swipium/policy.json ciAllowMutations ("openUrl")'
|
|
40
|
+
: `${step.kind} changes device/app/test state and requires .swipium/policy.json ciAllowMutations`,
|
|
38
41
|
});
|
|
39
42
|
});
|
|
40
43
|
return out;
|
|
@@ -54,7 +57,9 @@ export function ciRequiredVariables(flow) {
|
|
|
54
57
|
step: i + 1,
|
|
55
58
|
kind: step.kind,
|
|
56
59
|
variable: match[1],
|
|
57
|
-
reason:
|
|
60
|
+
reason: flowEnvAllowed(match[1])
|
|
61
|
+
? `${step.kind} references \${${match[1]}}; set it in the CI environment before running Swipium.`
|
|
62
|
+
: `${step.kind} references \${${match[1]}}; flows read only SWIPIUM_* environment variables. Rename it (e.g. SWIPIUM_${match[1]}) or pass it as an explicit variable.`,
|
|
58
63
|
});
|
|
59
64
|
}
|
|
60
65
|
}
|
|
@@ -68,6 +73,10 @@ export function validateCiVariables(flows, env = process.env, variables = {}) {
|
|
|
68
73
|
const explicit = variables[v.variable];
|
|
69
74
|
if (explicit != null && explicit !== '')
|
|
70
75
|
return false;
|
|
76
|
+
// The flow runner reads the environment only for SWIPIUM_* names, so any other env var
|
|
77
|
+
// does not satisfy the requirement (it would still be missing at run time).
|
|
78
|
+
if (!flowEnvAllowed(v.variable))
|
|
79
|
+
return true;
|
|
71
80
|
return env[v.variable] == null || env[v.variable] === '';
|
|
72
81
|
});
|
|
73
82
|
return { ok: missing.length === 0, missing };
|
package/dist/ci/preflight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/ci/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAe,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/ci/preflight.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/gc.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// `swipium gc [--dry-run] [--days N] [--keep N]`: reclaim disk from old ~/.swipium/runs session dirs
|
|
2
|
+
// (same rule as the automatic startup prune in src/session/retention.ts) and compact
|
|
3
|
+
// ~/.swipium/projects.json (drop entries whose project root no longer exists, cap to 200).
|
|
4
|
+
//
|
|
5
|
+
// CLI path, not the MCP server, so writing to stdout is fine here.
|
|
6
|
+
import { pruneSessionRuns, retentionDaysFromEnv, retentionKeepFromEnv, DEFAULT_RETENTION_DAYS } from '../session/retention.js';
|
|
7
|
+
import { compactProjectRegistry } from '../appMap/projectRegistry.js';
|
|
8
|
+
export const GC_USAGE = `Usage: swipium gc [--dry-run] [--days N] [--keep N]
|
|
9
|
+
Delete ~/.swipium/runs session dirs older than N days (default: SWIPIUM_RETENTION_DAYS or 30) that
|
|
10
|
+
are not in ~/.swipium/registry.json, keeping the newest --keep (default: SWIPIUM_RETENTION_KEEP or 20)
|
|
11
|
+
per project regardless of age; prune ~/.swipium/projects.json entries whose root no longer exists.
|
|
12
|
+
--dry-run report what would be reclaimed, delete nothing
|
|
13
|
+
`;
|
|
14
|
+
export function parseGcArgs(argv, env = process.env) {
|
|
15
|
+
const out = { dryRun: false, days: retentionDaysFromEnv(env) ?? DEFAULT_RETENTION_DAYS, keep: retentionKeepFromEnv(env) };
|
|
16
|
+
for (let i = 0; i < argv.length; i++) {
|
|
17
|
+
const a = argv[i];
|
|
18
|
+
if (a === '--dry-run' || a === '-n')
|
|
19
|
+
out.dryRun = true;
|
|
20
|
+
else if (a === '--help' || a === '-h')
|
|
21
|
+
out.help = true;
|
|
22
|
+
else if (a === '--days' || a === '--keep' || a.startsWith('--days=') || a.startsWith('--keep=')) {
|
|
23
|
+
const [flag, inline] = a.split('=', 2);
|
|
24
|
+
const raw = inline ?? argv[++i];
|
|
25
|
+
const n = Number(raw);
|
|
26
|
+
if (raw == null || !Number.isInteger(n) || n < 0) {
|
|
27
|
+
out.error = `${flag} expects a non-negative integer (got ${raw ?? 'nothing'})`;
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
if (flag === '--days')
|
|
31
|
+
out.days = n;
|
|
32
|
+
else
|
|
33
|
+
out.keep = n;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
out.error = `unknown option ${a}`;
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
export function formatBytes(n) {
|
|
43
|
+
if (n < 1024)
|
|
44
|
+
return `${n} B`;
|
|
45
|
+
if (n < 1024 * 1024)
|
|
46
|
+
return `${(n / 1024).toFixed(1)} KB`;
|
|
47
|
+
if (n < 1024 * 1024 * 1024)
|
|
48
|
+
return `${(n / (1024 * 1024)).toFixed(1)} MB`;
|
|
49
|
+
return `${(n / (1024 * 1024 * 1024)).toFixed(2)} GB`;
|
|
50
|
+
}
|
|
51
|
+
/** Run gc; returns the process exit code. */
|
|
52
|
+
export async function runGc(argv, out = (s) => void process.stdout.write(s)) {
|
|
53
|
+
const args = parseGcArgs(argv);
|
|
54
|
+
if (args.help) {
|
|
55
|
+
out(GC_USAGE);
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
if (args.error) {
|
|
59
|
+
process.stderr.write(`swipium gc: ${args.error}\n\n${GC_USAGE}`);
|
|
60
|
+
return 2;
|
|
61
|
+
}
|
|
62
|
+
const r = await pruneSessionRuns({ days: args.days, keepPerProject: args.keep, dryRun: args.dryRun });
|
|
63
|
+
const projects = compactProjectRegistry({ dryRun: args.dryRun });
|
|
64
|
+
const verb = args.dryRun ? 'would delete' : 'deleted';
|
|
65
|
+
out(`swipium gc${args.dryRun ? ' (dry run)' : ''}: scanned ${r.scanned} session dir(s) under ${r.runsDir}\n` +
|
|
66
|
+
` ${verb} ${r.deleted.length} session dir(s) older than ${r.days} day(s) (not registered; newest ${r.keepPerProject} per project kept)\n` +
|
|
67
|
+
` ${args.dryRun ? 'reclaimable' : 'reclaimed'}: ${formatBytes(r.bytesReclaimed)}\n` +
|
|
68
|
+
` projects.json: ${projects.before} > ${projects.after} entr${projects.after === 1 ? 'y' : 'ies'}` +
|
|
69
|
+
`${projects.removed ? ` (${projects.removed} stale ${args.dryRun ? 'would be ' : ''}removed)` : ''}\n` +
|
|
70
|
+
(r.skipped ? ` prune skipped: ${r.skipped}\n` : '') +
|
|
71
|
+
(r.errors ? ` ${r.errors} entr${r.errors === 1 ? 'y' : 'ies'} could not be processed (see logs)\n` : ''));
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=gc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gc.js","sourceRoot":"","sources":["../../src/cli/gc.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/init.js
CHANGED
|
@@ -1,34 +1,171 @@
|
|
|
1
|
-
// `swipium init <client> [--apply] [--scope project|user|local]`
|
|
1
|
+
// `swipium init <client> [--apply] [--scope project|user|local] [--cwd <dir>]`
|
|
2
2
|
//
|
|
3
3
|
// Default = PREVIEW the exact registration (safe, no mutation). `--apply` executes it by
|
|
4
|
-
// DELEGATING to the client's own CLI where
|
|
5
|
-
// Codex's config.toml (
|
|
6
|
-
//
|
|
4
|
+
// DELEGATING to the client's own CLI where that is the documented path (claude/gemini
|
|
5
|
+
// `mcp add`), writing Codex's ~/.codex/config.toml (so the block carries cwd + timeouts, which
|
|
6
|
+
// `codex mcp add` cannot set), or merging a project file for Cursor (.cursor/mcp.json) and
|
|
7
|
+
// VS Code (.vscode/mcp.json). After a successful apply it runs `verify` (the server starts +
|
|
8
|
+
// tools inject).
|
|
7
9
|
//
|
|
8
|
-
//
|
|
10
|
+
// Portability: anything that lands in a TEAM-SHARED project file (`claude --scope project`,
|
|
11
|
+
// gemini project scope, .cursor/.vscode) uses `npx -y swipium`, never this machine's absolute
|
|
12
|
+
// node/script paths. Absolute paths are used only for machine-local registrations
|
|
13
|
+
// (claude local/user, gemini user, codex), and even then not when this process runs from the
|
|
14
|
+
// npx cache (that path is ephemeral).
|
|
15
|
+
//
|
|
16
|
+
// NOTE: this is the CLI path, not the MCP server, so writing to stdout is fine here.
|
|
9
17
|
import { spawnSync } from 'node:child_process';
|
|
10
|
-
import { existsSync, readFileSync, appendFileSync, mkdirSync } from 'node:fs';
|
|
18
|
+
import { existsSync, readFileSync, appendFileSync, mkdirSync, writeFileSync, statSync } from 'node:fs';
|
|
11
19
|
import { homedir } from 'node:os';
|
|
12
20
|
import { fileURLToPath } from 'node:url';
|
|
13
21
|
import { dirname, resolve, join } from 'node:path';
|
|
14
22
|
import { runVerify } from './verify.js';
|
|
15
23
|
import { initFlowTemplates } from '../flows/templates.js';
|
|
16
24
|
const SELF = resolve(dirname(fileURLToPath(import.meta.url)), '..', 'index.js'); // dist/index.js
|
|
25
|
+
export const PORTABLE_COMMAND = { command: 'npx', args: ['-y', 'swipium'] };
|
|
26
|
+
/** True when `self` lives in npm's npx cache (…/_npx/…). An absolute path to it would rot. */
|
|
27
|
+
export function isEphemeralInstall(self = SELF) {
|
|
28
|
+
return self.split(/[\\/]/).includes('_npx');
|
|
29
|
+
}
|
|
30
|
+
/** The command a client should run: portable `npx -y swipium`, or this machine's node + script. */
|
|
31
|
+
export function serverCommand(portable, node = process.execPath, self = SELF) {
|
|
32
|
+
if (portable || isEphemeralInstall(self))
|
|
33
|
+
return { command: PORTABLE_COMMAND.command, args: [...PORTABLE_COMMAND.args] };
|
|
34
|
+
return { command: node, args: [self] };
|
|
35
|
+
}
|
|
17
36
|
/** A delegated CLI registration succeeded only if it both ran and exited 0. */
|
|
18
37
|
export function applyOk(r) {
|
|
19
38
|
return !r.error && r.status === 0;
|
|
20
39
|
}
|
|
21
|
-
|
|
22
|
-
|
|
40
|
+
/** Gemini settings.json entry (user scope: machine-local command + the app repo as cwd). */
|
|
41
|
+
export function geminiBlock(node, cwd, self = SELF) {
|
|
42
|
+
const c = serverCommand(false, node, self);
|
|
43
|
+
return ` "swipium": { "command": ${JSON.stringify(c.command)}, "args": ${JSON.stringify(c.args)}, "cwd": ${JSON.stringify(cwd)}, "timeout": 600000 }`;
|
|
44
|
+
}
|
|
45
|
+
/** Codex keeps servers in ~/.codex/config.toml; its defaults (10 s startup, 60 s per tool) are too
|
|
46
|
+
* short for `npx` first runs and for device work (builds, boots, flows). */
|
|
47
|
+
export function codexBlock(node, cwd, self = SELF) {
|
|
48
|
+
const c = serverCommand(false, node, self);
|
|
49
|
+
return [
|
|
50
|
+
'[mcp_servers.swipium]',
|
|
51
|
+
`command = ${JSON.stringify(c.command)}`,
|
|
52
|
+
`args = [${c.args.map((a) => JSON.stringify(a)).join(', ')}]`,
|
|
53
|
+
`cwd = ${JSON.stringify(cwd)}`,
|
|
54
|
+
'startup_timeout_sec = 30',
|
|
55
|
+
'tool_timeout_sec = 600',
|
|
56
|
+
].join('\n');
|
|
57
|
+
}
|
|
58
|
+
/** `claude mcp add` argv. Project scope writes the team-shared .mcp.json, so the command is portable. */
|
|
59
|
+
export function claudeAddArgs(scope, node = process.execPath, self = SELF) {
|
|
60
|
+
const c = serverCommand(scope === 'project', node, self);
|
|
61
|
+
return ['mcp', 'add', 'swipium', ...(scope !== 'local' ? ['--scope', scope] : []), '--', c.command, ...c.args];
|
|
62
|
+
}
|
|
63
|
+
/** `gemini mcp add` argv. Gemini's default scope is project (.gemini/settings.json), so it's portable. */
|
|
64
|
+
export function geminiAddArgs(scope, node = process.execPath, self = SELF) {
|
|
65
|
+
const user = scope === 'user';
|
|
66
|
+
const c = serverCommand(!user, node, self);
|
|
67
|
+
// Gemini's parser would read `-y` as its own flag: server args that start with "-" go after `--`
|
|
68
|
+
// (documented form: `gemini mcp add python-server python server.py -- --server-arg v`).
|
|
69
|
+
const rest = c.args.some((x) => x.startsWith('-')) ? ['--', ...c.args] : c.args;
|
|
70
|
+
return ['mcp', 'add', '--scope', user ? 'user' : 'project', 'swipium', c.command, ...rest];
|
|
71
|
+
}
|
|
72
|
+
/** Cursor: .cursor/mcp.json (`mcpServers`). ${workspaceFolder} is interpolated by Cursor. */
|
|
73
|
+
export function cursorEntry() {
|
|
74
|
+
return {
|
|
75
|
+
type: 'stdio',
|
|
76
|
+
command: PORTABLE_COMMAND.command,
|
|
77
|
+
args: [...PORTABLE_COMMAND.args],
|
|
78
|
+
env: { SWIPIUM_PROJECT_ROOT: '${workspaceFolder}' },
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/** VS Code: .vscode/mcp.json uses a top-level `servers` object (not `mcpServers`). */
|
|
82
|
+
export function vscodeEntry() {
|
|
83
|
+
return {
|
|
84
|
+
type: 'stdio',
|
|
85
|
+
command: PORTABLE_COMMAND.command,
|
|
86
|
+
args: [...PORTABLE_COMMAND.args],
|
|
87
|
+
env: { SWIPIUM_PROJECT_ROOT: '${workspaceFolder}' },
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Merge `swipium` into an existing JSON config under `topKey` WITHOUT touching anything else.
|
|
92
|
+
* Refuses (never overwrites) when the file isn't plain JSON (e.g. JSONC comments) or `topKey`
|
|
93
|
+
* isn't an object; leaves an existing `swipium` entry as-is.
|
|
94
|
+
*/
|
|
95
|
+
export function mergeServerJson(existing, topKey, entry) {
|
|
96
|
+
let doc = {};
|
|
97
|
+
if (existing !== null && existing.trim()) {
|
|
98
|
+
try {
|
|
99
|
+
const parsed = JSON.parse(existing);
|
|
100
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
101
|
+
return { status: 'invalid', reason: 'top level is not a JSON object' };
|
|
102
|
+
doc = parsed;
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
return {
|
|
106
|
+
status: 'invalid',
|
|
107
|
+
reason: `not valid JSON (${e.message}); comments/trailing commas are not merged automatically`,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const cur = doc[topKey];
|
|
112
|
+
if (cur !== undefined && (typeof cur !== 'object' || cur === null || Array.isArray(cur))) {
|
|
113
|
+
return { status: 'invalid', reason: `"${topKey}" is not an object` };
|
|
114
|
+
}
|
|
115
|
+
const servers = { ...(cur ?? {}) };
|
|
116
|
+
if (Object.prototype.hasOwnProperty.call(servers, 'swipium'))
|
|
117
|
+
return { status: 'present' };
|
|
118
|
+
servers.swipium = entry;
|
|
119
|
+
return { status: 'added', json: `${JSON.stringify({ ...doc, [topKey]: servers }, null, 2)}\n` };
|
|
120
|
+
}
|
|
121
|
+
/** The app repo the server should run in: `--cwd <dir>` if given, else where init was invoked. */
|
|
122
|
+
export function resolveTargetCwd(args) {
|
|
123
|
+
const cwdIdx = args.indexOf('--cwd');
|
|
124
|
+
return resolve(cwdIdx >= 0 ? (args[cwdIdx + 1] ?? '') : process.cwd());
|
|
125
|
+
}
|
|
126
|
+
function isDir(p) {
|
|
127
|
+
try {
|
|
128
|
+
return statSync(p).isDirectory();
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
23
133
|
}
|
|
24
|
-
|
|
25
|
-
|
|
134
|
+
const CWD_NOTE = '(cwd should be your mobile app repo: run init from it, or pass --cwd <dir>)';
|
|
135
|
+
export const INIT_USAGE = 'Usage: swipium init <claude|codex|gemini|cursor|vscode> [--apply] [--scope local|user|project] [--cwd <dir>]\n' +
|
|
136
|
+
' swipium init flows [--root <dir>] [--force]\n' +
|
|
137
|
+
'Without --apply, prints the exact registration and changes nothing.\n';
|
|
138
|
+
/** Preview/apply a project-file registration (Cursor/VS Code). Returns false when refused. */
|
|
139
|
+
function projectFileInit(opts) {
|
|
140
|
+
const { label, file, topKey, entry, apply } = opts;
|
|
141
|
+
const snippet = JSON.stringify({ [topKey]: { swipium: entry } }, null, 2);
|
|
142
|
+
if (!apply) {
|
|
143
|
+
process.stdout.write(`Preview (run with --apply to merge into ${file}):\n${snippet}\n` +
|
|
144
|
+
`SWIPIUM_PROJECT_ROOT uses \${workspaceFolder}, which ${label} expands to the open folder.\n` +
|
|
145
|
+
(opts.extraPreview ?? ''));
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
const existing = existsSync(file) ? readFileSync(file, 'utf8') : null;
|
|
149
|
+
const merged = mergeServerJson(existing, topKey, entry);
|
|
150
|
+
if (merged.status === 'invalid') {
|
|
151
|
+
process.stdout.write(`Refusing to modify ${file}: ${merged.reason}.\nAdd this under "${topKey}" by hand:\n${snippet}\n`);
|
|
152
|
+
process.exitCode = 2;
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
if (merged.status === 'present') {
|
|
156
|
+
process.stdout.write(`Already present in ${file} (left unchanged).\n`);
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
160
|
+
writeFileSync(file, merged.json);
|
|
161
|
+
process.stdout.write(`${existing === null ? 'Created' : 'Merged into'} ${file}\n`);
|
|
162
|
+
return true;
|
|
26
163
|
}
|
|
27
164
|
export async function runInit(args) {
|
|
28
165
|
const client = (args[0] ?? '').toLowerCase();
|
|
29
166
|
const apply = args.includes('--apply');
|
|
30
167
|
const scopeIdx = args.indexOf('--scope');
|
|
31
|
-
const scope = scopeIdx >= 0 ? args[scopeIdx + 1] : 'local';
|
|
168
|
+
const scope = scopeIdx >= 0 ? (args[scopeIdx + 1] ?? 'local') : 'local';
|
|
32
169
|
const node = process.execPath;
|
|
33
170
|
if (client === 'flows') {
|
|
34
171
|
const rootIdx = args.indexOf('--root');
|
|
@@ -42,15 +179,33 @@ export async function runInit(args) {
|
|
|
42
179
|
process.stdout.write('\nNext: edit selectors/variables, then validate with qa_flow_check and run with qa_flow_run from an MCP session.\n');
|
|
43
180
|
return;
|
|
44
181
|
}
|
|
45
|
-
if (
|
|
46
|
-
process.stdout.write(
|
|
182
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
183
|
+
process.stdout.write(INIT_USAGE);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (!['claude', 'gemini', 'codex', 'cursor', 'vscode'].includes(client)) {
|
|
187
|
+
process.stdout.write(INIT_USAGE);
|
|
188
|
+
process.exitCode = 2;
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (!['local', 'user', 'project'].includes(scope)) {
|
|
192
|
+
process.stdout.write(`Unknown --scope "${scope}" (expected local, user, or project).\n${INIT_USAGE}`);
|
|
47
193
|
process.exitCode = 2;
|
|
48
194
|
return;
|
|
49
195
|
}
|
|
196
|
+
const cwd = resolveTargetCwd(args);
|
|
197
|
+
const refuseMissingCwd = () => {
|
|
198
|
+
if (isDir(cwd))
|
|
199
|
+
return false;
|
|
200
|
+
process.stdout.write(`Refusing to apply: cwd ${cwd} does not exist. Run init from your mobile app repo or pass --cwd <dir>.\n`);
|
|
201
|
+
process.exitCode = 2;
|
|
202
|
+
return true;
|
|
203
|
+
};
|
|
50
204
|
if (client === 'claude') {
|
|
51
|
-
const cmd =
|
|
205
|
+
const cmd = claudeAddArgs(scope, node);
|
|
206
|
+
const shared = scope === 'project' ? '\n(project scope writes .mcp.json for your team, so it uses the portable `npx -y swipium`.)' : '';
|
|
52
207
|
if (apply) {
|
|
53
|
-
const r = spawnSync('claude', cmd, { stdio: 'inherit' });
|
|
208
|
+
const r = spawnSync('claude', cmd, { stdio: 'inherit', cwd: isDir(cwd) ? cwd : undefined });
|
|
54
209
|
if (!applyOk(r)) {
|
|
55
210
|
process.stdout.write(`claude registration failed (status ${r.status ?? 'n/a'}). Run manually:\n claude ${cmd.join(' ')}\n`);
|
|
56
211
|
}
|
|
@@ -60,15 +215,18 @@ export async function runInit(args) {
|
|
|
60
215
|
}
|
|
61
216
|
}
|
|
62
217
|
else {
|
|
63
|
-
process.stdout.write(`Preview (run with --apply to execute):\n claude ${cmd.join(' ')}\n`);
|
|
218
|
+
process.stdout.write(`Preview (run with --apply to execute):\n claude ${cmd.join(' ')}${shared}\n`);
|
|
64
219
|
}
|
|
65
220
|
}
|
|
66
221
|
else if (client === 'gemini') {
|
|
67
|
-
const cmd =
|
|
222
|
+
const cmd = geminiAddArgs(scope, node);
|
|
223
|
+
const manual = scope === 'user'
|
|
224
|
+
? `add to ~/.gemini/settings.json under "mcpServers":\n${geminiBlock(node, cwd)}\n${CWD_NOTE}`
|
|
225
|
+
: `add to ${join(cwd, '.gemini', 'settings.json')} under "mcpServers":\n "swipium": { "command": "npx", "args": ["-y", "swipium"], "timeout": 600000 }`;
|
|
68
226
|
if (apply) {
|
|
69
|
-
const r = spawnSync('gemini', cmd, { stdio: 'inherit' });
|
|
227
|
+
const r = spawnSync('gemini', cmd, { stdio: 'inherit', cwd: isDir(cwd) ? cwd : undefined });
|
|
70
228
|
if (!applyOk(r)) {
|
|
71
|
-
process.stdout.write(`gemini \`mcp add\`
|
|
229
|
+
process.stdout.write(`gemini \`mcp add\` failed or unavailable. Instead, ${manual}\n`);
|
|
72
230
|
}
|
|
73
231
|
else {
|
|
74
232
|
process.stdout.write('\nRegistered. Verifying…\n');
|
|
@@ -76,28 +234,61 @@ export async function runInit(args) {
|
|
|
76
234
|
}
|
|
77
235
|
}
|
|
78
236
|
else {
|
|
79
|
-
process.stdout.write(`Preview (run with --apply):\n gemini ${cmd.join(' ')}\nor
|
|
237
|
+
process.stdout.write(`Preview (run with --apply):\n gemini ${cmd.join(' ')}\nor ${manual}\n`);
|
|
80
238
|
}
|
|
81
239
|
}
|
|
82
|
-
else {
|
|
83
|
-
//
|
|
240
|
+
else if (client === 'codex') {
|
|
241
|
+
// Written to config.toml directly (rather than `codex mcp add`) so the block carries cwd and
|
|
242
|
+
// longer startup/tool timeouts, which `codex mcp add` has no flags for.
|
|
84
243
|
const cfg = join(homedir(), '.codex', 'config.toml');
|
|
85
|
-
const block = codexBlock(node);
|
|
244
|
+
const block = codexBlock(node, cwd);
|
|
245
|
+
const c = serverCommand(false, node);
|
|
246
|
+
const alt = ` codex mcp add swipium --env SWIPIUM_PROJECT_ROOT=${cwd} -- ${[c.command, ...c.args].join(' ')}\n (then add startup_timeout_sec = 30 and tool_timeout_sec = 600 under [mcp_servers.swipium] in ${cfg})`;
|
|
247
|
+
const caveat = '⚠ Codex Desktop threads may not expose tools from custom stdio MCP servers (openai/codex#19425, open). If the tools are missing in the Desktop app, try the Codex CLI.\n';
|
|
86
248
|
if (apply) {
|
|
249
|
+
if (refuseMissingCwd())
|
|
250
|
+
return;
|
|
87
251
|
mkdirSync(dirname(cfg), { recursive: true });
|
|
88
252
|
const cur = existsSync(cfg) ? readFileSync(cfg, 'utf8') : '';
|
|
89
253
|
if (cur.includes('[mcp_servers.swipium]')) {
|
|
90
|
-
process.stdout.write(`Already present in ${cfg}\n`);
|
|
254
|
+
process.stdout.write(`Already present in ${cfg} (left unchanged). Expected block:\n${block}\n`);
|
|
91
255
|
}
|
|
92
256
|
else {
|
|
93
257
|
appendFileSync(cfg, `\n${block}\n`);
|
|
94
258
|
process.stdout.write(`Appended to ${cfg}\n`);
|
|
95
259
|
}
|
|
96
|
-
process.stdout.write(
|
|
260
|
+
process.stdout.write(caveat + 'Server-side self-check:\n');
|
|
97
261
|
await runVerify();
|
|
98
262
|
}
|
|
99
263
|
else {
|
|
100
|
-
process.stdout.write(`
|
|
264
|
+
process.stdout.write(`Preview (run with --apply to append to ${cfg}):\n${block}\n${CWD_NOTE}\nor register with the Codex CLI:\n${alt}\n${caveat}`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else if (client === 'cursor' || client === 'vscode') {
|
|
268
|
+
const isCursor = client === 'cursor';
|
|
269
|
+
if (scope === 'user') {
|
|
270
|
+
process.stdout.write(`Note: init ${client} only writes the project file (${isCursor ? '.cursor/mcp.json' : '.vscode/mcp.json'}); ` +
|
|
271
|
+
(isCursor
|
|
272
|
+
? 'for all projects, add the same entry to ~/.cursor/mcp.json.\n'
|
|
273
|
+
: 'for your user profile use `code --add-mcp` (shown below).\n'));
|
|
274
|
+
}
|
|
275
|
+
if (apply && refuseMissingCwd())
|
|
276
|
+
return;
|
|
277
|
+
const ok = projectFileInit({
|
|
278
|
+
label: isCursor ? 'Cursor' : 'VS Code',
|
|
279
|
+
file: join(cwd, isCursor ? '.cursor' : '.vscode', 'mcp.json'),
|
|
280
|
+
topKey: isCursor ? 'mcpServers' : 'servers',
|
|
281
|
+
entry: isCursor ? cursorEntry() : vscodeEntry(),
|
|
282
|
+
apply,
|
|
283
|
+
extraPreview: isCursor
|
|
284
|
+
? undefined
|
|
285
|
+
: `or add it to your VS Code user profile:\n code --add-mcp '${JSON.stringify({ name: 'swipium', command: 'npx', args: ['-y', 'swipium'] })}'\n`,
|
|
286
|
+
});
|
|
287
|
+
if (!ok)
|
|
288
|
+
return;
|
|
289
|
+
if (apply) {
|
|
290
|
+
process.stdout.write(`Reload ${isCursor ? 'Cursor' : 'VS Code'} (or its MCP server list) to start Swipium. Server-side self-check:\n`);
|
|
291
|
+
await runVerify();
|
|
101
292
|
}
|
|
102
293
|
}
|
|
103
294
|
process.stdout.write('\nSelf-check anytime: swipium verify\n');
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,yFAAyF;AACzF,4FAA4F;AAC5F,4FAA4F;AAC5F,wEAAwE;AACxE,EAAE;AACF,mFAAmF;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,gBAAgB;AAEjG,+EAA+E;AAC/E,MAAM,UAAU,OAAO,CAAC,CAA6C;IACnE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8CAA8C,CAAC;AAC3I,CAAC;AACD,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,oCAAoC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAC3H,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE9B,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,IAAI,IAAI,CAAC,CAAC;QAC3E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACrH,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oHAAoH,CACrH,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wIAAwI,CACzI,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1G,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,MAAM,IAAI,KAAK,8BAA8B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/H,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;gBACpF,MAAM,SAAS,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uFAAuF,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrI,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBACnD,MAAM,SAAS,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yCAAyC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,yCAAyC,WAAW,CAAC,IAAI,CAAC,IAAI,CACrH,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,gFAAgF;QAChF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;gBACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qJAAqJ,CACtJ,CAAC;YACF,MAAM,SAAS,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,KAAK,uFAAuF,CAAC,CAAC;QACxI,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AACjE,CAAC"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|